From 1ba0f38c9edeee6bc661034ceaf9a249de21851f Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Sat, 29 Jul 2017 18:15:22 +0800 Subject: [PATCH] fixed all known bugs --- README.md | 12 +++++++++--- main.go | 10 ++++++++-- rule.go | 1 - ss.go | 12 ++++++------ strategy.go | 4 +--- systemd/README.md | 2 +- 6 files changed, 25 insertions(+), 16 deletions(-) delete mode 100644 rule.go diff --git a/README.md b/README.md index 602595b..919b5b6 100644 --- a/README.md +++ b/README.md @@ -43,15 +43,21 @@ sudo pacman -S glider ``` ## Run +command line: ```bash glider -listen :8443 -verbose ``` -with config file: +config file: ```bash glider -config CONFIGPATH ``` +command line with config file: +```bash +glider -config CONFIGPATH -listen :8080 -verbose +``` + ## Usage ```bash glider v0.2 usage: @@ -105,7 +111,7 @@ Examples: -listen on :8443, serve as http/socks5 proxy on the same port. glider -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443 - -listen on 0.0.0.0:8443 as a shadowsocks server. + -listen on 0.0.0.0:8443 as a ss server. glider -listen socks5://:1080 -verbose -listen on :1080 as a socks5 proxy server, in verbose mode. @@ -165,7 +171,7 @@ checkhost=www.apple.com:443 # check duration checkduration=30 ``` -See [glider.conf.example](https://github.com/nadoo/glider/blob/master/glider.conf.example) +See [glider.conf.example](glider.conf.example) ## Service - systemd: [https://github.com/nadoo/glider/blob/master/systemd/](https://github.com/nadoo/glider/blob/master/systemd/) diff --git a/main.go b/main.go index 2d91cf9..0bc02b2 100644 --- a/main.go +++ b/main.go @@ -12,7 +12,7 @@ import ( ) // VERSION . -const VERSION = "0.2" +const VERSION = "0.2.1" var conf struct { Verbose bool @@ -79,7 +79,7 @@ func usage() { fmt.Fprintf(os.Stderr, " -listen on :8443, serve as http/socks5 proxy on the same port.\n") fmt.Fprintf(os.Stderr, "\n") fmt.Fprintf(os.Stderr, " "+app+" -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443\n") - fmt.Fprintf(os.Stderr, " -listen on 0.0.0.0:8443 as a shadowsocks server.\n") + fmt.Fprintf(os.Stderr, " -listen on 0.0.0.0:8443 as a ss server.\n") fmt.Fprintf(os.Stderr, "\n") fmt.Fprintf(os.Stderr, " "+app+" -listen socks5://:1080 -verbose\n") fmt.Fprintf(os.Stderr, " -listen on :1080 as a socks5 proxy server, in verbose mode.\n") @@ -161,6 +161,12 @@ func main() { go local.ListenAndServe() } + if len(forwarders) > 1 { + for _, forward := range forwarders { + go check(forward, conf.CheckHost, conf.CheckDuration) + } + } + sigCh := make(chan os.Signal, 1) signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) <-sigCh diff --git a/rule.go b/rule.go deleted file mode 100644 index 06ab7d0..0000000 --- a/rule.go +++ /dev/null @@ -1 +0,0 @@ -package main diff --git a/ss.go b/ss.go index 6d24c3b..ba1c92a 100644 --- a/ss.go +++ b/ss.go @@ -9,8 +9,8 @@ import ( "github.com/shadowsocks/go-shadowsocks2/core" ) -// Shadowsocks -type shadowsocks struct { +// ss +type ss struct { Proxy core.StreamConnCipher } @@ -22,7 +22,7 @@ func SSProxy(method, pass string, upProxy Proxy) (Proxy, error) { log.Fatal(err) } - s := &shadowsocks{ + s := &ss{ Proxy: upProxy, StreamConnCipher: ciph, } @@ -31,7 +31,7 @@ func SSProxy(method, pass string, upProxy Proxy) (Proxy, error) { } // ListenAndServe shadowsocks requests as a server. -func (s *shadowsocks) ListenAndServe() { +func (s *ss) ListenAndServe() { l, err := net.Listen("tcp", s.Addr()) if err != nil { logf("failed to listen on %s: %v", s.Addr(), err) @@ -50,7 +50,7 @@ func (s *shadowsocks) ListenAndServe() { } } -func (s *shadowsocks) Serve(c net.Conn) { +func (s *ss) Serve(c net.Conn) { defer c.Close() if c, ok := c.(*net.TCPConn); ok { @@ -85,7 +85,7 @@ func (s *shadowsocks) Serve(c net.Conn) { } // Dial connects to the address addr on the network net via the proxy. -func (s *shadowsocks) Dial(network, addr string) (net.Conn, error) { +func (s *ss) Dial(network, addr string) (net.Conn, error) { target := ParseAddr(addr) if target == nil { return nil, errors.New("Unable to parse address: " + addr) diff --git a/strategy.go b/strategy.go index 3716679..08c2f9b 100644 --- a/strategy.go +++ b/strategy.go @@ -20,9 +20,7 @@ func newStrategyProxy(addr string, forwarders []Proxy) Proxy { return newProxy(addr, forwarders[0]) } - for _, forward := range forwarders { - go check(forward, conf.CheckHost, conf.CheckDuration) - } + return &strategyProxy{addr: addr, forwarders: forwarders} } diff --git a/systemd/README.md b/systemd/README.md index e5b0931..21e87f8 100644 --- a/systemd/README.md +++ b/systemd/README.md @@ -24,4 +24,4 @@ enable and start service: glider@***server*** systemctl enable glider@server systemctl start glider@server ``` -See [glider@.service](https://github.com/nadoo/glider/blob/master/systemd/glider%40.service) +See [glider@.service](systemd/glider%40.service)