mirror of
				https://github.com/nadoo/glider.git
				synced 2025-11-04 07:42:38 +08:00 
			
		
		
		
	fixed all known bugs
This commit is contained in:
		
							parent
							
								
									f6941b98d8
								
							
						
					
					
						commit
						1ba0f38c9e
					
				
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							@ -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
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								main.go
									
									
									
									
									
								
							@ -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
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								ss.go
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								ss.go
									
									
									
									
									
								
							@ -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)
 | 
				
			||||||
 | 
				
			|||||||
@ -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}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -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)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user