mirror of
				https://github.com/nadoo/glider.git
				synced 2025-11-04 07:42:38 +08:00 
			
		
		
		
	chore: document works and code optimizations
This commit is contained in:
		
							parent
							
								
									142865535e
								
							
						
					
					
						commit
						2db84bb7aa
					
				
							
								
								
									
										21
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								README.md
									
									
									
									
									
								
							@ -286,20 +286,17 @@ Examples:
 | 
				
			|||||||
  ./glider -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443 -verbose
 | 
					  ./glider -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443 -verbose
 | 
				
			||||||
    -listen on 0.0.0.0:8443 as a ss server.
 | 
					    -listen on 0.0.0.0:8443 as a ss server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ./glider -listen socks5://user1:pass1@:1080 -verbose
 | 
					 | 
				
			||||||
    -listen on :1080 as a socks5 proxy server, enable authentication.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ./glider -listen tls://:443?cert=crtFilePath&key=keyFilePath,http:// -verbose
 | 
					  ./glider -listen tls://:443?cert=crtFilePath&key=keyFilePath,http:// -verbose
 | 
				
			||||||
    -listen on :443 as a https(http over tls) proxy server.
 | 
					    -listen on :443 as a https(http over tls) proxy server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ./glider -listen http://:8080 -forward socks5://127.0.0.1:1080
 | 
					  ./glider -listen http://:8080 -forward socks5://127.0.0.1:1080
 | 
				
			||||||
    -listen on :8080 as a http proxy server, forward all requests via socks5 server.
 | 
					    -listen on :8080 as a http proxy server, forward all requests via socks5 server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ./glider -listen redir://:1081 -forward ss://method:pass@1.1.1.1:8443
 | 
					  ./glider -listen socks5://:1080 -forward "tls://abc.com:443,vmess://security:uuid@?alterID=10"
 | 
				
			||||||
    -listen on :1081 as a transparent redirect server, forward all requests via remote ss server.
 | 
					    -listen on :1080 as a socks5 server, forward all requests via remote tls+vmess server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ./glider -listen redir://:1081 -forward "tls://abc.com:443,vmess://security:uuid@?alterID=10"
 | 
					  ./glider -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr
 | 
				
			||||||
    -listen on :1081 as a transparent redirect server, forward all requests via remote tls+vmess server.
 | 
					    -listen on :1080 as socks5 server, forward requests via server1 and server2 in round robin mode.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ./glider -listen tcp://:80 -forward tcp://2.2.2.2:80
 | 
					  ./glider -listen tcp://:80 -forward tcp://2.2.2.2:80
 | 
				
			||||||
    -tcp tunnel: listen on :80 and forward all requests to 2.2.2.2:80.
 | 
					    -tcp tunnel: listen on :80 and forward all requests to 2.2.2.2:80.
 | 
				
			||||||
@ -310,14 +307,8 @@ Examples:
 | 
				
			|||||||
  ./glider -listen socks5://:1080 -listen http://:8080 -forward ss://method:pass@1.1.1.1:8443
 | 
					  ./glider -listen socks5://:1080 -listen http://:8080 -forward ss://method:pass@1.1.1.1:8443
 | 
				
			||||||
    -listen on :1080 as socks5 server, :8080 as http proxy server, forward all requests via remote ss server.
 | 
					    -listen on :1080 as socks5 server, :8080 as http proxy server, forward all requests via remote ss server.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  ./glider -listen redir://:1081 -dns=:53 -dnsserver=8.8.8.8:53 -forward ss://method:pass@server:port
 | 
					  ./glider -verbose -listen -dns=:53 -dnsserver=8.8.8.8:53 -forward ss://method:pass@server:port -dnsrecord=www.example.com/1.2.3.4
 | 
				
			||||||
    -listen on :1081 as transparent redirect server, :53 as dns server, forward via ss server.
 | 
					    -listen on :53 as dns server, forward to 8.8.8.8:53 via ss server.
 | 
				
			||||||
 | 
					 | 
				
			||||||
  ./glider -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr
 | 
					 | 
				
			||||||
    -listen on :1080 as socks5 server, forward requests via server1 and server2 in round robin mode.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  ./glider -verbose -dns=:53 -dnsserver=8.8.8.8:53 -dnsrecord=www.example.com/1.2.3.4
 | 
					 | 
				
			||||||
    -listen on :53 as dns server, forward dns requests to 8.8.8.8:53, return 1.2.3.4 when resolving www.example.com.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
Services:
 | 
					Services:
 | 
				
			||||||
  dhcpd: service=dhcpd,INTERFACE,START_IP,END_IP
 | 
					  dhcpd: service=dhcpd,INTERFACE,START_IP,END_IP
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										22
									
								
								config.go
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								config.go
									
									
									
									
									
								
							@ -294,20 +294,17 @@ func usage() {
 | 
				
			|||||||
	fmt.Fprintf(w, "  "+app+" -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443 -verbose\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443 -verbose\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on 0.0.0.0:8443 as a ss server.\n")
 | 
						fmt.Fprintf(w, "    -listen on 0.0.0.0:8443 as a ss server.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen socks5://user1:pass1@:1080 -verbose\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :1080 as a socks5 proxy server, enable authentication.\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen tls://:443?cert=crtFilePath&key=keyFilePath,http:// -verbose\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen tls://:443?cert=crtFilePath&key=keyFilePath,http:// -verbose\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :443 as a https(http over tls) proxy server.\n")
 | 
						fmt.Fprintf(w, "    -listen on :443 as a https(http over tls) proxy server.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen http://:8080 -forward socks5://127.0.0.1:1080\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen http://:8080 -forward socks5://127.0.0.1:1080\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :8080 as a http proxy server, forward all requests via socks5 server.\n")
 | 
						fmt.Fprintf(w, "    -listen on :8080 as a http proxy server, forward all requests via socks5 server.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen redir://:1081 -forward ss://method:pass@1.1.1.1:8443\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen socks5://:1080 -forward \"tls://abc.com:443,vmess://security:uuid@?alterID=10\"\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :1081 as a transparent redirect server, forward all requests via remote ss server.\n")
 | 
						fmt.Fprintf(w, "    -listen on :1080 as a socks5 server, forward all requests via remote tls+vmess server.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen redir://:1081 -forward \"tls://abc.com:443,vmess://security:uuid@?alterID=10\"\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :1081 as a transparent redirect server, forward all requests via remote tls+vmess server.\n")
 | 
						fmt.Fprintf(w, "    -listen on :1080 as socks5 server, forward requests via server1 and server2 in round robin mode.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen tcp://:80 -forward tcp://2.2.2.2:80\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen tcp://:80 -forward tcp://2.2.2.2:80\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -tcp tunnel: listen on :80 and forward all requests to 2.2.2.2:80.\n")
 | 
						fmt.Fprintf(w, "    -tcp tunnel: listen on :80 and forward all requests to 2.2.2.2:80.\n")
 | 
				
			||||||
@ -318,16 +315,9 @@ func usage() {
 | 
				
			|||||||
	fmt.Fprintf(w, "  "+app+" -listen socks5://:1080 -listen http://:8080 -forward ss://method:pass@1.1.1.1:8443\n")
 | 
						fmt.Fprintf(w, "  "+app+" -listen socks5://:1080 -listen http://:8080 -forward ss://method:pass@1.1.1.1:8443\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :1080 as socks5 server, :8080 as http proxy server, forward all requests via remote ss server.\n")
 | 
						fmt.Fprintf(w, "    -listen on :1080 as socks5 server, :8080 as http proxy server, forward all requests via remote ss server.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen redir://:1081 -dns=:53 -dnsserver=8.8.8.8:53 -forward ss://method:pass@server:port\n")
 | 
						fmt.Fprintf(w, "  "+app+" -verbose -listen -dns=:53 -dnsserver=8.8.8.8:53 -forward ss://method:pass@server:port -dnsrecord=www.example.com/1.2.3.4\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :1081 as transparent redirect server, :53 as dns server, forward via ss server.\n")
 | 
						fmt.Fprintf(w, "    -listen on :53 as dns server, forward to 8.8.8.8:53 via ss server.\n")
 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
						fmt.Fprintf(w, "\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :1080 as socks5 server, forward requests via server1 and server2 in round robin mode.\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "  "+app+" -verbose -dns=:53 -dnsserver=8.8.8.8:53 -dnsrecord=www.example.com/1.2.3.4\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "    -listen on :53 as dns server, forward dns requests to 8.8.8.8:53, return 1.2.3.4 when resolving www.example.com.\n")
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "\n")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	fmt.Fprintf(w, "Services:\n")
 | 
						fmt.Fprintf(w, "Services:\n")
 | 
				
			||||||
	fmt.Fprintf(w, "  dhcpd: service=dhcpd,INTERFACE,START_IP,END_IP\n")
 | 
						fmt.Fprintf(w, "  dhcpd: service=dhcpd,INTERFACE,START_IP,END_IP\n")
 | 
				
			||||||
	fmt.Fprintf(w, "    e.g.,service=dhcpd,eth1,192.168.50.100,192.168.50.199\n")
 | 
						fmt.Fprintf(w, "    e.g.,service=dhcpd,eth1,192.168.50.100,192.168.50.199\n")
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										6
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								go.mod
									
									
									
									
									
								
							@ -15,8 +15,10 @@ require (
 | 
				
			|||||||
	github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
 | 
						github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
 | 
				
			||||||
	github.com/xtaci/kcp-go/v5 v5.6.1
 | 
						github.com/xtaci/kcp-go/v5 v5.6.1
 | 
				
			||||||
	golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392
 | 
						golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392
 | 
				
			||||||
	golang.org/x/sys v0.0.0-20201130171929-760e229fe7c5 // indirect
 | 
						golang.org/x/mod v0.4.0 // indirect
 | 
				
			||||||
	golang.org/x/tools v0.0.0-20201201064407-fd09bd90d85c // indirect
 | 
						golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7 // indirect
 | 
				
			||||||
 | 
						golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 // indirect
 | 
				
			||||||
 | 
						golang.org/x/tools v0.0.0-20201202100533-7534955ac86b // indirect
 | 
				
			||||||
	gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
 | 
						gopkg.in/check.v1 v1.0.0-20200902074654-038fdea0a05b // indirect
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								go.sum
									
									
									
									
									
								
							@ -92,6 +92,8 @@ golang.org/x/crypto v0.0.0-20201124201722-c8d3bf9c5392/go.mod h1:jdWPYTVW3xRLrWP
 | 
				
			|||||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
 | 
					golang.org/x/mod v0.3.0 h1:RM4zey1++hCTbCVQfnWeKs9/IEsaBLA8vTkd0WVtmH4=
 | 
				
			||||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
					golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.4.0 h1:8pl+sMODzuvGJkmj2W4kZihvVb5mKm8pB/X44PIQHv8=
 | 
				
			||||||
 | 
					golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
					golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
					golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
golang.org/x/net v0.0.0-20190419010253-1f3472d942ba/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
					golang.org/x/net v0.0.0-20190419010253-1f3472d942ba/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 | 
				
			||||||
@ -107,6 +109,8 @@ golang.org/x/net v0.0.0-20201010224723-4f7140c49acb/go.mod h1:sp8m0HH+o8qH0wwXwY
 | 
				
			|||||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
 | 
					golang.org/x/net v0.0.0-20201110031124-69a78807bb2b h1:uwuIcX0g4Yl1NC5XAz37xsr2lTtcqevgzYNVt49waME=
 | 
				
			||||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
					golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7 h1:3uJsdck53FDIpWwLeAXlia9p4C8j0BO2xZrqzKpL0D8=
 | 
				
			||||||
 | 
					golang.org/x/net v0.0.0-20201201195509-5d6afe98e0b7/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
					golang.org/x/sync v0.0.0-20200625203802-6e8e738ad208/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 | 
				
			||||||
@ -128,8 +132,8 @@ golang.org/x/sys v0.0.0-20201009025420-dfb3f7c4e634/go.mod h1:h1NjWce9XRLGQEsW7w
 | 
				
			|||||||
golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd h1:5CtCZbICpIOFdgO940moixOPjc0178IU44m4EjOO5IY=
 | 
					golang.org/x/sys v0.0.0-20201112073958-5cba982894dd h1:5CtCZbICpIOFdgO940moixOPjc0178IU44m4EjOO5IY=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20201112073958-5cba982894dd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20201130171929-760e229fe7c5 h1:dMDtAap8F/+vsyXblqK90iTzYJjNix5MsXDicSYol6w=
 | 
					golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3 h1:kzM6+9dur93BcC2kVlYl34cHU+TYZLanmpSJHVMmL64=
 | 
				
			||||||
golang.org/x/sys v0.0.0-20201130171929-760e229fe7c5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
					golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 | 
				
			||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM=
 | 
					golang.org/x/term v0.0.0-20201117132131-f5c789dd3221 h1:/ZHdbVpdR/jk3g30/d4yUL0JU9kksj8+F/bnQUVLGDM=
 | 
				
			||||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 | 
					golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
 | 
				
			||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
					golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 | 
				
			||||||
@ -141,8 +145,8 @@ golang.org/x/tools v0.0.0-20200425043458-8463f397d07c/go.mod h1:EkVYQZoAsY45+roY
 | 
				
			|||||||
golang.org/x/tools v0.0.0-20200808161706-5bf02b21f123/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 | 
					golang.org/x/tools v0.0.0-20200808161706-5bf02b21f123/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20201105001634-bc3cf281b174 h1:0rx0F4EjJNbxTuzWe0KjKcIzs+3VEb/Mrs/d1ciNz1c=
 | 
					golang.org/x/tools v0.0.0-20201105001634-bc3cf281b174 h1:0rx0F4EjJNbxTuzWe0KjKcIzs+3VEb/Mrs/d1ciNz1c=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20201105001634-bc3cf281b174/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20201105001634-bc3cf281b174/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20201201064407-fd09bd90d85c h1:D/mVYXCk6gUcyr7WuGlAk/ShHqgARUXc2VQxo27Hmws=
 | 
					golang.org/x/tools v0.0.0-20201202100533-7534955ac86b h1:nOM4+lFhnC6uxSrRnxjZ4Azu1bF9DQz5rAsb3LUErhc=
 | 
				
			||||||
golang.org/x/tools v0.0.0-20201201064407-fd09bd90d85c/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
					golang.org/x/tools v0.0.0-20201202100533-7534955ac86b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
					golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
					golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
					golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 | 
				
			||||||
 | 
				
			|||||||
@ -77,5 +77,5 @@ func (s *HTTP) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *HTTP) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) {
 | 
					func (s *HTTP) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) {
 | 
				
			||||||
	return nil, nil, errors.New("http client does not support udp")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -241,7 +241,7 @@ func (s *KCP) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *KCP) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
					func (s *KCP) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
				
			||||||
	return nil, nil, errors.New("kcp client does not support udp now")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *KCP) setParams(c *kcp.UDPSession) {
 | 
					func (s *KCP) setParams(c *kcp.UDPSession) {
 | 
				
			||||||
 | 
				
			|||||||
@ -107,5 +107,5 @@ func (s *Obfs) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *Obfs) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
					func (s *Obfs) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
				
			||||||
	return nil, nil, errors.New("obfs client does not support udp now")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -86,7 +86,7 @@ func (s *SOCKS4) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *SOCKS4) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) {
 | 
					func (s *SOCKS4) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) {
 | 
				
			||||||
	return nil, nil, errors.New("[socks4] DialUDP are not supported by Socks4")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func (s *SOCKS4) lookupIP(host string) (ip net.IP, err error) {
 | 
					func (s *SOCKS4) lookupIP(host string) (ip net.IP, err error) {
 | 
				
			||||||
 | 
				
			|||||||
@ -124,7 +124,7 @@ func (s *Socks5) ListenAndServeUDP() {
 | 
				
			|||||||
				continue
 | 
									continue
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			lpc, _, nextHop, err := s.proxy.DialUDP("udp", c.tgtAddr.String())
 | 
								lpc, dialer, nextHop, err := s.proxy.DialUDP("udp", c.tgtAddr.String())
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				log.F("[socks5u] remote dial error: %v", err)
 | 
									log.F("[socks5u] remote dial error: %v", err)
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
@ -139,7 +139,7 @@ func (s *Socks5) ListenAndServeUDP() {
 | 
				
			|||||||
				nm.Delete(raddr.String())
 | 
									nm.Delete(raddr.String())
 | 
				
			||||||
			}()
 | 
								}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			log.F("[socks5u] %s <-> %s via %s", raddr, c.tgtAddr, nextHop)
 | 
								log.F("[socks5u] %s <-> %s via %s", raddr, c.tgtAddr, dialer.Addr())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			pc = v.(*PktConn)
 | 
								pc = v.(*PktConn)
 | 
				
			||||||
 | 
				
			|||||||
@ -108,7 +108,7 @@ func (s *SS) ListenAndServeUDP() {
 | 
				
			|||||||
		var pc *PktConn
 | 
							var pc *PktConn
 | 
				
			||||||
		v, ok := nm.Load(raddr.String())
 | 
							v, ok := nm.Load(raddr.String())
 | 
				
			||||||
		if !ok && v == nil {
 | 
							if !ok && v == nil {
 | 
				
			||||||
			lpc, _, nextHop, err := s.proxy.DialUDP("udp", c.tgtAddr.String())
 | 
								lpc, dialer, nextHop, err := s.proxy.DialUDP("udp", c.tgtAddr.String())
 | 
				
			||||||
			if err != nil {
 | 
								if err != nil {
 | 
				
			||||||
				log.F("[ssu] remote dial error: %v", err)
 | 
									log.F("[ssu] remote dial error: %v", err)
 | 
				
			||||||
				continue
 | 
									continue
 | 
				
			||||||
@ -123,7 +123,7 @@ func (s *SS) ListenAndServeUDP() {
 | 
				
			|||||||
				nm.Delete(raddr.String())
 | 
									nm.Delete(raddr.String())
 | 
				
			||||||
			}()
 | 
								}()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			log.F("[ssu] %s <-> %s via %s", raddr, c.tgtAddr, nextHop)
 | 
								log.F("[ssu] %s <-> %s via %s", raddr, c.tgtAddr, dialer.Addr())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		} else {
 | 
							} else {
 | 
				
			||||||
			pc = v.(*PktConn)
 | 
								pc = v.(*PktConn)
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
package ssh
 | 
					package ssh
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"io/ioutil"
 | 
						"io/ioutil"
 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
@ -101,7 +100,7 @@ func (s *SSH) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *SSH) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) {
 | 
					func (s *SSH) DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) {
 | 
				
			||||||
	return nil, nil, errors.New("ssh client does not support udp")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func privateKeyAuth(file string) (ssh.AuthMethod, error) {
 | 
					func privateKeyAuth(file string) (ssh.AuthMethod, error) {
 | 
				
			||||||
 | 
				
			|||||||
@ -153,5 +153,5 @@ func (s *SSR) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *SSR) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
					func (s *SSR) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
				
			||||||
	return nil, nil, errors.New("[ssr] udp not supported now")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -190,5 +190,5 @@ func (s *TLS) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *TLS) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
					func (s *TLS) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
				
			||||||
	return nil, nil, errors.New("tls client does not support udp now")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -103,7 +103,9 @@ func (s *UDP) ListenAndServe() {
 | 
				
			|||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if dialer != nil {
 | 
				
			||||||
			log.F("[udp] %s <-> %s", lraddr, dialer.Addr())
 | 
								log.F("[udp] %s <-> %s", lraddr, dialer.Addr())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -143,7 +143,9 @@ func (s *Unix) ListenAndServeUDP() {
 | 
				
			|||||||
			continue
 | 
								continue
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if dialer != nil {
 | 
				
			||||||
			log.F("[unix] %s <-> %s", s.addru, dialer.Addr())
 | 
								log.F("[unix] %s <-> %s", s.addru, dialer.Addr())
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -1,7 +1,6 @@
 | 
				
			|||||||
package vmess
 | 
					package vmess
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import (
 | 
					import (
 | 
				
			||||||
	"errors"
 | 
					 | 
				
			||||||
	"net"
 | 
						"net"
 | 
				
			||||||
	"net/url"
 | 
						"net/url"
 | 
				
			||||||
	"strconv"
 | 
						"strconv"
 | 
				
			||||||
@ -98,5 +97,5 @@ func (s *VMess) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *VMess) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
					func (s *VMess) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
				
			||||||
	return nil, nil, errors.New("vmess client does not support udp now")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -39,7 +39,7 @@ func (s *WS) Dial(network, addr string) (net.Conn, error) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
// DialUDP connects to the given address via the proxy.
 | 
					// DialUDP connects to the given address via the proxy.
 | 
				
			||||||
func (s *WS) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
					func (s *WS) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
 | 
				
			||||||
	return nil, nil, errors.New("[ws] ws client does not support udp now")
 | 
						return nil, nil, proxy.ErrNotSupported
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// ClientConn is a connection to ws server.
 | 
					// ClientConn is a connection to ws server.
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user