fixed all known bugs

This commit is contained in:
nadoo 2017-07-29 18:15:22 +08:00
parent f6941b98d8
commit 1ba0f38c9e
6 changed files with 25 additions and 16 deletions

View File

@ -43,15 +43,21 @@ sudo pacman -S glider
``` ```
## Run ## Run
command line:
```bash ```bash
glider -listen :8443 -verbose glider -listen :8443 -verbose
``` ```
with config file: config file:
```bash ```bash
glider -config CONFIGPATH glider -config CONFIGPATH
``` ```
command line with config file:
```bash
glider -config CONFIGPATH -listen :8080 -verbose
```
## Usage ## Usage
```bash ```bash
glider v0.2 usage: glider v0.2 usage:
@ -105,7 +111,7 @@ Examples:
-listen on :8443, serve as http/socks5 proxy on the same port. -listen on :8443, serve as http/socks5 proxy on the same port.
glider -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443 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 glider -listen socks5://:1080 -verbose
-listen on :1080 as a socks5 proxy server, in verbose mode. -listen on :1080 as a socks5 proxy server, in verbose mode.
@ -165,7 +171,7 @@ checkhost=www.apple.com:443
# check duration # check duration
checkduration=30 checkduration=30
``` ```
See [glider.conf.example](https://github.com/nadoo/glider/blob/master/glider.conf.example) See [glider.conf.example](glider.conf.example)
## Service ## Service
- systemd: [https://github.com/nadoo/glider/blob/master/systemd/](https://github.com/nadoo/glider/blob/master/systemd/) - systemd: [https://github.com/nadoo/glider/blob/master/systemd/](https://github.com/nadoo/glider/blob/master/systemd/)

10
main.go
View File

@ -12,7 +12,7 @@ import (
) )
// VERSION . // VERSION .
const VERSION = "0.2" const VERSION = "0.2.1"
var conf struct { var conf struct {
Verbose bool 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, " -listen on :8443, serve as http/socks5 proxy on the same port.\n")
fmt.Fprintf(os.Stderr, "\n") fmt.Fprintf(os.Stderr, "\n")
fmt.Fprintf(os.Stderr, " "+app+" -listen ss://AEAD_CHACHA20_POLY1305:pass@:8443\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, "\n")
fmt.Fprintf(os.Stderr, " "+app+" -listen socks5://:1080 -verbose\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") 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() go local.ListenAndServe()
} }
if len(forwarders) > 1 {
for _, forward := range forwarders {
go check(forward, conf.CheckHost, conf.CheckDuration)
}
}
sigCh := make(chan os.Signal, 1) sigCh := make(chan os.Signal, 1)
signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM) signal.Notify(sigCh, syscall.SIGINT, syscall.SIGTERM)
<-sigCh <-sigCh

View File

@ -1 +0,0 @@
package main

12
ss.go
View File

@ -9,8 +9,8 @@ import (
"github.com/shadowsocks/go-shadowsocks2/core" "github.com/shadowsocks/go-shadowsocks2/core"
) )
// Shadowsocks // ss
type shadowsocks struct { type ss struct {
Proxy Proxy
core.StreamConnCipher core.StreamConnCipher
} }
@ -22,7 +22,7 @@ func SSProxy(method, pass string, upProxy Proxy) (Proxy, error) {
log.Fatal(err) log.Fatal(err)
} }
s := &shadowsocks{ s := &ss{
Proxy: upProxy, Proxy: upProxy,
StreamConnCipher: ciph, StreamConnCipher: ciph,
} }
@ -31,7 +31,7 @@ func SSProxy(method, pass string, upProxy Proxy) (Proxy, error) {
} }
// ListenAndServe shadowsocks requests as a server. // ListenAndServe shadowsocks requests as a server.
func (s *shadowsocks) ListenAndServe() { func (s *ss) ListenAndServe() {
l, err := net.Listen("tcp", s.Addr()) l, err := net.Listen("tcp", s.Addr())
if err != nil { if err != nil {
logf("failed to listen on %s: %v", s.Addr(), err) 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() defer c.Close()
if c, ok := c.(*net.TCPConn); ok { 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. // 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) target := ParseAddr(addr)
if target == nil { if target == nil {
return nil, errors.New("Unable to parse address: " + addr) return nil, errors.New("Unable to parse address: " + addr)

View File

@ -20,9 +20,7 @@ func newStrategyProxy(addr string, forwarders []Proxy) Proxy {
return newProxy(addr, forwarders[0]) return newProxy(addr, forwarders[0])
} }
for _, forward := range forwarders {
go check(forward, conf.CheckHost, conf.CheckDuration)
}
return &strategyProxy{addr: addr, forwarders: forwarders} return &strategyProxy{addr: addr, forwarders: forwarders}
} }

View File

@ -24,4 +24,4 @@ enable and start service: glider@***server***
systemctl enable glider@server systemctl enable glider@server
systemctl start 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)