From c5881a6db3d38a3f83eb8842cf2c0b9969276e5b Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Wed, 29 Apr 2020 18:45:58 +0800 Subject: [PATCH] general: update due to the previous interface change --- README.md | 40 +++++++++++++++++++++------------------- go.mod | 2 +- go.sum | 4 ++-- proxy/http/server.go | 10 +++++----- proxy/proxy.go | 2 +- proxy/socks5/socks5.go | 6 +++--- proxy/tcptun/tcptun.go | 6 +++--- rule/rule.go | 2 -- strategy/strategy.go | 2 -- 9 files changed, 36 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index 0ee1f5c..33fd7f9 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,9 @@ glider -h click to see details ```bash -glider 0.10.0 usage: +./glider 0.10.0 usage: + -checkdisabledonly + check disabled fowarders only -checkinterval int proxy check interval(seconds) (default 30) -checktimeout int @@ -250,62 +252,62 @@ Forwarder option scheme: FORWARD_URL#OPTIONS vmess://[security:]uuid@host:port?alterID=num#priority=200&interface=192.168.1.99 vmess://[security:]uuid@host:port?alterID=num#priority=200&interface=eth0 -Config file format(see `glider.conf.example` as an example): +Config file format(see `./glider.conf.example` as an example): # COMMENT LINE KEY=VALUE KEY=VALUE # KEY equals to command line flag name: listen forward strategy... Examples: - glider -config glider.conf + ./glider -config glider.conf -run glider with specified config file. - glider -listen :8443 -verbose + ./glider -listen :8443 -verbose -listen on :8443, serve as http/socks5 proxy on the same port, in verbose mode. - 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. - glider -listen socks5://user1:pass1@:1080 -verbose + ./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. - 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. - glider -listen redir://:1081 -forward ss://method:pass@1.1.1.1:8443 + ./glider -listen redir://:1081 -forward ss://method:pass@1.1.1.1:8443 -listen on :1081 as a transparent redirect server, forward all requests via remote ss server. - glider -listen redir://:1081 -forward "ssr://method:pass@1.1.1.1:8444?protocol=a&protocol_param=b&obfs=c&obfs_param=d" + ./glider -listen redir://:1081 -forward "ssr://method:pass@1.1.1.1:8444?protocol=a&protocol_param=b&obfs=c&obfs_param=d" -listen on :1081 as a transparent redirect server, forward all requests via remote ssr server. - glider -listen redir://:1081 -forward "tls://1.1.1.1:443,vmess://security:uuid@?alterID=10" + ./glider -listen redir://:1081 -forward "tls://1.1.1.1:443,vmess://security:uuid@?alterID=10" -listen on :1081 as a transparent redirect server, forward all requests via remote tls+vmess server. - glider -listen redir://:1081 -forward "ws://1.1.1.1:80,vmess://security:uuid@?alterID=10" + ./glider -listen redir://:1081 -forward "ws://1.1.1.1:80,vmess://security:uuid@?alterID=10" -listen on :1081 as a transparent redirect server, forward all requests via remote ws+vmess server. - glider -listen tcptun://:80=2.2.2.2:80 -forward ss://method:pass@1.1.1.1:8443 + ./glider -listen tcptun://:80=2.2.2.2:80 -forward ss://method:pass@1.1.1.1:8443 -listen on :80 and forward all requests to 2.2.2.2:80 via remote ss server. - glider -listen udptun://:53=8.8.8.8:53 -forward ss://method:pass@1.1.1.1:8443 + ./glider -listen udptun://:53=8.8.8.8:53 -forward ss://method:pass@1.1.1.1:8443 -listen on :53 and forward all udp requests to 8.8.8.8:53 via remote ss server. - glider -listen uottun://:53=8.8.8.8:53 -forward ss://method:pass@1.1.1.1:8443 + ./glider -listen uottun://:53=8.8.8.8:53 -forward ss://method:pass@1.1.1.1:8443 -listen on :53 and forward all udp requests via udp over tcp tunnel. - 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. - glider -listen redir://:1081 -dns=:53 -dnsserver=8.8.8.8:53 -forward ss://method:pass@server1:port1,ss://method:pass@server2:port2 + ./glider -listen redir://:1081 -dns=:53 -dnsserver=8.8.8.8:53 -forward ss://method:pass@server1:port1,ss://method:pass@server2:port2 -listen on :1081 as transparent redirect server, :53 as dns server, use forward chain: server1 -> server2. - glider -listen socks5://:1080 -forward ss://method:pass@server1:port1 -forward ss://method:pass@server2:port2 -strategy rr + ./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 + ./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. ``` diff --git a/go.mod b/go.mod index 7b5a353..ae39f75 100644 --- a/go.mod +++ b/go.mod @@ -13,7 +13,7 @@ require ( github.com/xtaci/kcp-go/v5 v5.5.12 golang.org/x/crypto v0.0.0-20200427165652-729f1e841bcc golang.org/x/net v0.0.0-20200425230154-ff2c4b7c35a0 // indirect - golang.org/x/sys v0.0.0-20200427175716-29b57079015a // indirect + golang.org/x/sys v0.0.0-20200428200454-593003d681fa // indirect ) // Replace dependency modules with local developing copy diff --git a/go.sum b/go.sum index 93dbfbd..a8c83ea 100644 --- a/go.sum +++ b/go.sum @@ -75,8 +75,8 @@ golang.org/x/sys v0.0.0-20191010194322-b09406accb47/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191020212454-3e7259c5e7c2/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200427175716-29b57079015a h1:08u6b1caTT9MQY4wSbmsd4Ulm6DmgNYnbImBuZjGJow= -golang.org/x/sys v0.0.0-20200427175716-29b57079015a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200428200454-593003d681fa h1:yMbJOvnfYkO1dSAviTu/ZguZWLBTXx4xE3LYrxUCCiA= +golang.org/x/sys v0.0.0-20200428200454-593003d681fa/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/proxy/http/server.go b/proxy/http/server.go index 21e922d..efb1441 100644 --- a/proxy/http/server.go +++ b/proxy/http/server.go @@ -90,17 +90,17 @@ func (s *HTTP) servRequest(req *request, c *conn.Conn) { } func (s *HTTP) servHTTPS(r *request, c net.Conn) { - rc, p, err := s.proxy.Dial("tcp", r.uri) + rc, dialer, err := s.proxy.Dial("tcp", r.uri) if err != nil { c.Write([]byte(r.proto + " 502 ERROR\r\n\r\n")) - log.F("[http] %s <-> %s [c] via %s, error in dial: %v", c.RemoteAddr(), r.uri, p, err) + log.F("[http] %s <-> %s [c] via %s, error in dial: %v", c.RemoteAddr(), r.uri, dialer.Addr(), err) return } defer rc.Close() c.Write([]byte("HTTP/1.1 200 Connection established\r\n\r\n")) - log.F("[http] %s <-> %s [c] via %s", c.RemoteAddr(), r.uri, p) + log.F("[http] %s <-> %s [c] via %s", c.RemoteAddr(), r.uri, dialer.Addr()) _, _, err = conn.Relay(c, rc) if err != nil { @@ -112,10 +112,10 @@ func (s *HTTP) servHTTPS(r *request, c net.Conn) { } func (s *HTTP) servHTTP(req *request, c *conn.Conn) { - rc, p, err := s.proxy.Dial("tcp", req.target) + rc, dialer, err := s.proxy.Dial("tcp", req.target) if err != nil { fmt.Fprintf(c, "%s 502 ERROR\r\n\r\n", req.proto) - log.F("[http] %s <-> %s via %s, error in dial: %v", c.RemoteAddr(), req.target, p, err) + log.F("[http] %s <-> %s via %s, error in dial: %v", c.RemoteAddr(), req.target, dialer.Addr(), err) return } defer rc.Close() diff --git a/proxy/proxy.go b/proxy/proxy.go index 7736631..e643348 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -10,7 +10,7 @@ type Proxy interface { // DialUDP connects to the given address via the proxy. DialUDP(network, addr string) (pc net.PacketConn, writeTo net.Addr, err error) - // Get the dialer by dstAddr + // Get the dialer by dstAddr. NextDialer(dstAddr string) Dialer // Record records result while using the dialer from proxy. diff --git a/proxy/socks5/socks5.go b/proxy/socks5/socks5.go index 398d10a..dbc0641 100644 --- a/proxy/socks5/socks5.go +++ b/proxy/socks5/socks5.go @@ -132,14 +132,14 @@ func (s *Socks5) Serve(c net.Conn) { return } - rc, p, err := s.proxy.Dial("tcp", tgt.String()) + rc, dialer, err := s.proxy.Dial("tcp", tgt.String()) if err != nil { - log.F("[socks5] %s <-> %s via %s, error in dial: %v", c.RemoteAddr(), tgt, p, err) + log.F("[socks5] %s <-> %s via %s, error in dial: %v", c.RemoteAddr(), tgt, dialer.Addr(), err) return } defer rc.Close() - log.F("[socks5] %s <-> %s via %s", c.RemoteAddr(), tgt, p) + log.F("[socks5] %s <-> %s via %s", c.RemoteAddr(), tgt, dialer.Addr()) _, _, err = conn.Relay(c, rc) if err != nil { diff --git a/proxy/tcptun/tcptun.go b/proxy/tcptun/tcptun.go index 7da066b..413fb4a 100644 --- a/proxy/tcptun/tcptun.go +++ b/proxy/tcptun/tcptun.go @@ -80,14 +80,14 @@ func (s *TCPTun) Serve(c net.Conn) { c.SetKeepAlive(true) } - rc, p, err := s.proxy.Dial("tcp", s.raddr) + rc, dialer, err := s.proxy.Dial("tcp", s.raddr) if err != nil { - log.F("[tcptun] %s <-> %s via %s, error in dial: %v", c.RemoteAddr(), s.addr, p, err) + log.F("[tcptun] %s <-> %s via %s, error in dial: %v", c.RemoteAddr(), s.addr, dialer.Addr(), err) return } defer rc.Close() - log.F("[tcptun] %s <-> %s via %s", c.RemoteAddr(), s.raddr, p) + log.F("[tcptun] %s <-> %s via %s", c.RemoteAddr(), s.raddr, dialer.Addr()) _, _, err = conn.Relay(c, rc) if err != nil { diff --git a/rule/rule.go b/rule/rule.go index 7130555..c5f011e 100644 --- a/rule/rule.go +++ b/rule/rule.go @@ -10,8 +10,6 @@ import ( "github.com/nadoo/glider/strategy" ) -var _ proxy.Proxy = &Proxy{} - // Proxy struct type Proxy struct { proxy *strategy.Proxy diff --git a/strategy/strategy.go b/strategy/strategy.go index 8526030..b51a7e1 100644 --- a/strategy/strategy.go +++ b/strategy/strategy.go @@ -15,8 +15,6 @@ import ( "github.com/nadoo/glider/proxy" ) -var _ proxy.Proxy = &Proxy{} - // Config is strategy config struct. type Config struct { Strategy string