mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 17:35:40 +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