|  | @@ -2,6 +2,7 @@ package socks
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  import (
 |  |  import (
 | 
											
												
													
														|  |  	"bytes"
 |  |  	"bytes"
 | 
											
												
													
														|  | 
 |  | +	"fmt"
 | 
											
												
													
														|  |  	"io/ioutil"
 |  |  	"io/ioutil"
 | 
											
												
													
														|  |  	"net"
 |  |  	"net"
 | 
											
												
													
														|  |  	"testing"
 |  |  	"testing"
 | 
											
										
											
												
													
														|  | @@ -9,6 +10,7 @@ import (
 | 
											
												
													
														|  |  	"golang.org/x/net/proxy"
 |  |  	"golang.org/x/net/proxy"
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	"github.com/v2ray/v2ray-core/app/point"
 |  |  	"github.com/v2ray/v2ray-core/app/point"
 | 
											
												
													
														|  | 
 |  | +	v2nettesting "github.com/v2ray/v2ray-core/common/net/testing"
 | 
											
												
													
														|  |  	"github.com/v2ray/v2ray-core/proxy/common/connhandler"
 |  |  	"github.com/v2ray/v2ray-core/proxy/common/connhandler"
 | 
											
												
													
														|  |  	"github.com/v2ray/v2ray-core/proxy/socks/config/json"
 |  |  	"github.com/v2ray/v2ray-core/proxy/socks/config/json"
 | 
											
												
													
														|  |  	proxymocks "github.com/v2ray/v2ray-core/proxy/testing/mocks"
 |  |  	proxymocks "github.com/v2ray/v2ray-core/proxy/testing/mocks"
 | 
											
										
											
												
													
														|  | @@ -18,7 +20,7 @@ import (
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func TestSocksTcpConnect(t *testing.T) {
 |  |  func TestSocksTcpConnect(t *testing.T) {
 | 
											
												
													
														|  |  	assert := unit.Assert(t)
 |  |  	assert := unit.Assert(t)
 | 
											
												
													
														|  | -	port := uint16(12385)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	port := v2nettesting.PickPort()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	connInput := []byte("The data to be returned to socks server.")
 |  |  	connInput := []byte("The data to be returned to socks server.")
 | 
											
												
													
														|  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 |  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 | 
											
										
											
												
													
														|  | @@ -49,7 +51,7 @@ func TestSocksTcpConnect(t *testing.T) {
 | 
											
												
													
														|  |  	err = point.Start()
 |  |  	err = point.Start()
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	socks5Client, err := proxy.SOCKS5("tcp", "127.0.0.1:12385", nil, proxy.Direct)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	socks5Client, err := proxy.SOCKS5("tcp", fmt.Sprintf("127.0.0.1:%d", port), nil, proxy.Direct)
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	targetServer := "google.com:80"
 |  |  	targetServer := "google.com:80"
 | 
											
										
											
												
													
														|  | @@ -73,7 +75,7 @@ func TestSocksTcpConnect(t *testing.T) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func TestSocksTcpConnectWithUserPass(t *testing.T) {
 |  |  func TestSocksTcpConnectWithUserPass(t *testing.T) {
 | 
											
												
													
														|  |  	assert := unit.Assert(t)
 |  |  	assert := unit.Assert(t)
 | 
											
												
													
														|  | -	port := uint16(12386)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	port := v2nettesting.PickPort()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	connInput := []byte("The data to be returned to socks server.")
 |  |  	connInput := []byte("The data to be returned to socks server.")
 | 
											
												
													
														|  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 |  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 | 
											
										
											
												
													
														|  | @@ -110,7 +112,7 @@ func TestSocksTcpConnectWithUserPass(t *testing.T) {
 | 
											
												
													
														|  |  	err = point.Start()
 |  |  	err = point.Start()
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	socks5Client, err := proxy.SOCKS5("tcp", "127.0.0.1:12386", &proxy.Auth{"userx", "passy"}, proxy.Direct)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	socks5Client, err := proxy.SOCKS5("tcp", fmt.Sprintf("127.0.0.1:%d", port), &proxy.Auth{"userx", "passy"}, proxy.Direct)
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	targetServer := "1.2.3.4:443"
 |  |  	targetServer := "1.2.3.4:443"
 | 
											
										
											
												
													
														|  | @@ -134,7 +136,7 @@ func TestSocksTcpConnectWithUserPass(t *testing.T) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func TestSocksTcpConnectWithWrongUserPass(t *testing.T) {
 |  |  func TestSocksTcpConnectWithWrongUserPass(t *testing.T) {
 | 
											
												
													
														|  |  	assert := unit.Assert(t)
 |  |  	assert := unit.Assert(t)
 | 
											
												
													
														|  | -	port := uint16(12389)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	port := v2nettesting.PickPort()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	connInput := []byte("The data to be returned to socks server.")
 |  |  	connInput := []byte("The data to be returned to socks server.")
 | 
											
												
													
														|  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 |  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 | 
											
										
											
												
													
														|  | @@ -171,7 +173,7 @@ func TestSocksTcpConnectWithWrongUserPass(t *testing.T) {
 | 
											
												
													
														|  |  	err = point.Start()
 |  |  	err = point.Start()
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	socks5Client, err := proxy.SOCKS5("tcp", "127.0.0.1:12389", &proxy.Auth{"userx", "passz"}, proxy.Direct)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	socks5Client, err := proxy.SOCKS5("tcp", fmt.Sprintf("127.0.0.1:%d", port), &proxy.Auth{"userx", "passz"}, proxy.Direct)
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	targetServer := "1.2.3.4:443"
 |  |  	targetServer := "1.2.3.4:443"
 | 
											
										
											
												
													
														|  | @@ -181,7 +183,7 @@ func TestSocksTcpConnectWithWrongUserPass(t *testing.T) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func TestSocksTcpConnectWithWrongAuthMethod(t *testing.T) {
 |  |  func TestSocksTcpConnectWithWrongAuthMethod(t *testing.T) {
 | 
											
												
													
														|  |  	assert := unit.Assert(t)
 |  |  	assert := unit.Assert(t)
 | 
											
												
													
														|  | -	port := uint16(38405)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	port := v2nettesting.PickPort()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	connInput := []byte("The data to be returned to socks server.")
 |  |  	connInput := []byte("The data to be returned to socks server.")
 | 
											
												
													
														|  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 |  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 | 
											
										
											
												
													
														|  | @@ -218,7 +220,7 @@ func TestSocksTcpConnectWithWrongAuthMethod(t *testing.T) {
 | 
											
												
													
														|  |  	err = point.Start()
 |  |  	err = point.Start()
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -	socks5Client, err := proxy.SOCKS5("tcp", "127.0.0.1:38405", nil, proxy.Direct)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	socks5Client, err := proxy.SOCKS5("tcp", fmt.Sprintf("127.0.0.1:%d", port), nil, proxy.Direct)
 | 
											
												
													
														|  |  	assert.Error(err).IsNil()
 |  |  	assert.Error(err).IsNil()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	targetServer := "1.2.3.4:443"
 |  |  	targetServer := "1.2.3.4:443"
 | 
											
										
											
												
													
														|  | @@ -228,7 +230,7 @@ func TestSocksTcpConnectWithWrongAuthMethod(t *testing.T) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  func TestSocksUdpSend(t *testing.T) {
 |  |  func TestSocksUdpSend(t *testing.T) {
 | 
											
												
													
														|  |  	assert := unit.Assert(t)
 |  |  	assert := unit.Assert(t)
 | 
											
												
													
														|  | -	port := uint16(12372)
 |  | 
 | 
											
												
													
														|  | 
 |  | +	port := v2nettesting.PickPort()
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  	connInput := []byte("The data to be returned to socks server.")
 |  |  	connInput := []byte("The data to be returned to socks server.")
 | 
											
												
													
														|  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 |  |  	connOutput := bytes.NewBuffer(make([]byte, 0, 1024))
 |