From 374037556978355acf570110037e5ccdcdb62c8b Mon Sep 17 00:00:00 2001 From: nadoo <287492+nadoo@users.noreply.github.com> Date: Mon, 14 Mar 2022 13:06:26 +0800 Subject: [PATCH] chore: doc updates --- README.md | 52 ++++++++++++++++++++++++++++++++++-------- go.mod | 2 +- go.sum | 4 ++-- proxy/http/http.go | 7 ++++++ proxy/proxy.go | 16 +++++++------ proxy/socks4/socks4.go | 7 ++++++ proxy/socks5/socks5.go | 2 +- 7 files changed, 69 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 72015d1..4ab8963 100644 --- a/README.md +++ b/README.md @@ -231,6 +231,10 @@ glider 0.16.0, https://github.com/nadoo/glider (glider.proxy@gmail.com) glider -scheme all ```bash +Http scheme: + http://[user:pass@]host:port + +-- KCP scheme: kcp://CRYPT:KEY@host:port[?dataShards=NUM&parityShards=NUM&mode=MODE] @@ -240,10 +244,6 @@ Available crypt types for KCP: Available modes for KCP: fast, fast2, fast3, normal, default: fast --- -Socks5 scheme: - socks://[user:pass@]host:port - -- Simple-Obfs scheme: simple-obfs://host:port[?type=TYPE&host=HOST&uri=URI&ua=UA] @@ -255,6 +255,14 @@ Available types for simple-obfs: Smux scheme: smux://host:port +-- +Socks4 scheme: + socks4://host:port + +-- +Socks5 scheme: + socks5://[user:pass@]host:port + -- SS scheme: ss://method:pass@host:port @@ -265,7 +273,7 @@ SS scheme: Stream Ciphers: AES-128-CFB AES-128-CTR AES-192-CFB AES-192-CTR AES-256-CFB AES-256-CTR CHACHA20-IETF XCHACHA20 CHACHA20 RC4-MD5 Alias: - chacha20-ietf-poly1305 = AEAD_CHACHA20_POLY1305, xchacha20-ietf-poly1305 = AEAD_XCHACHA20_POLY1305 + chacha20-ietf-poly1305 = AEAD_CHACHA20_POLY1305, xchacha20-ietf-poly1305 = AEAD_XCHACHA20_POLY1305 Plain: NONE -- @@ -305,6 +313,10 @@ Trojan server scheme: trojan://pass@host:port?cert=PATH&key=PATH[&fallback=127.0.0.1] trojanc://pass@host:port[?fallback=127.0.0.1] (cleartext, without TLS) +-- +Unix domain socket scheme: + unix://path + -- VLESS scheme: vless://uuid@host:port[?fallback=127.0.0.1:80] @@ -392,11 +404,10 @@ Examples: ## Service -- dhcpd / dhcpd-failover: +- dhcpd / dhcpd-failover: - service=dhcpd,INTERFACE,START_IP,END_IP,LEASE_MINUTES[,MAC=IP,MAC=IP...] - - service=dhcpd-failover,INTERFACE,START_IP,END_IP,LEASE_MINUTES[,MAC=IP,MAC=IP...] - - service=dhcpd,eth1,192.168.1.100,192.168.1.199,720 - - service=dhcpd-failover,eth2,192.168.2.100,192.168.2.199,720,fc:23:34:9e:25:01=192.168.2.101 + - service=dhcpd,eth1,192.168.1.100,192.168.1.199,720,fc:23:34:9e:25:01=192.168.1.101 + - service=dhcpd-failover,eth2,192.168.2.100,192.168.2.199,720 - note: `dhcpd-failover` only serves requests when there's no other dhcp server exists in lan - detect interval: 1min @@ -404,6 +415,27 @@ Examples: - systemd: [https://github.com/nadoo/glider/blob/master/systemd/](https://github.com/nadoo/glider/blob/master/systemd/) +-
docker: click to see details + + - run glider + ``` + docker run -d --name glider --net host --restart=always -v /etc/glider:/etc/glider nadoo/glider:latest -config=/etc/glider/glider.conf + ``` + - run watchtower(if you need auto update for glider) + ``` + docker run -d --name watchtower --restart=always \ + -v /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower \ + --interval 21600 --cleanup true glider + ``` + - open udp ports(if you need nat fullcone) + ``` + iptables -A INPUT -p udp -m udp --dport 1024:65535 -j ACCEPT + ``` + +
+ + ## Customize Build
You can customize and build glider if you want a smaller binary (click to see details) @@ -425,7 +457,7 @@ Examples: go build -v -ldflags "-s -w" ``` -
+ ## Proxy & Protocol Chains
In glider, you can easily chain several proxy servers or protocols together (click to see details) diff --git a/go.mod b/go.mod index 9a7f805..d669180 100644 --- a/go.mod +++ b/go.mod @@ -9,7 +9,7 @@ require ( github.com/dgryski/go-rc2 v0.0.0-20150621095337-8a9021637152 github.com/insomniacslk/dhcp v0.0.0-20220119180841-3c283ff8b7dd github.com/nadoo/conflag v0.3.1 - github.com/nadoo/ipset v0.4.1-0.20220218075046-ca3cdce74266 + github.com/nadoo/ipset v0.5.0 github.com/xtaci/kcp-go/v5 v5.6.1 golang.org/x/crypto v0.0.0-20220313003712-b769efc7c000 golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5 diff --git a/go.sum b/go.sum index 6e704e3..22645cc 100644 --- a/go.sum +++ b/go.sum @@ -74,8 +74,8 @@ github.com/mdlayher/socket v0.2.1/go.mod h1:QLlNPkFR88mRUNQIzRBMfXxwKal8H7u1h3bL github.com/mmcloughlin/avo v0.0.0-20200803215136-443f81d77104/go.mod h1:wqKykBG2QzQDJEzvRkcS8x6MiSJkF52hXZsXcjaB3ls= github.com/nadoo/conflag v0.3.1 h1:4pHkLIz8PUsfg6ajNYRRSY3bt6m2LPsu6KOzn5uIXQw= github.com/nadoo/conflag v0.3.1/go.mod h1:dzFfDUpXdr2uS2oV+udpy5N2vfNOu/bFzjhX1WI52co= -github.com/nadoo/ipset v0.4.1-0.20220218075046-ca3cdce74266 h1:lv9VKGAyAQAyS3lQoznfWoXYJD2C8/PITORX5r7f5rk= -github.com/nadoo/ipset v0.4.1-0.20220218075046-ca3cdce74266/go.mod h1:rYF5DQLRGGoQ8ZSWeK+6eX5amAuPqwFkWjhQlEITGJQ= +github.com/nadoo/ipset v0.5.0 h1:5GJUAuZ7ITQQQGne5J96AmFjRtI8Avlbk6CabzYWVUc= +github.com/nadoo/ipset v0.5.0/go.mod h1:rYF5DQLRGGoQ8ZSWeK+6eX5amAuPqwFkWjhQlEITGJQ= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= diff --git a/proxy/http/http.go b/proxy/http/http.go index 6d15886..aad08fe 100644 --- a/proxy/http/http.go +++ b/proxy/http/http.go @@ -112,3 +112,10 @@ func extractUserPass(auth string) (username, password string, ok bool) { return s[:idx], s[idx+1:], true } + +func init() { + proxy.AddUsage("http", ` +Http scheme: + http://[user:pass@]host:port +`) +} diff --git a/proxy/proxy.go b/proxy/proxy.go index bbc3e97..7780128 100644 --- a/proxy/proxy.go +++ b/proxy/proxy.go @@ -20,19 +20,21 @@ type Proxy interface { Record(dialer Dialer, success bool) } -var usages = make(map[string]string) +var ( + msg strings.Builder + usages = make(map[string]string) +) // AddUsage adds help message for the named proxy. -func AddUsage(name, usage string) { usages[name] = usage } +func AddUsage(name, usage string) { + usages[name] = usage + msg.WriteString(usage) + msg.WriteString("\n--") +} // Usage returns help message of the named proxy. func Usage(name string) string { if name == "all" { - var msg strings.Builder - for _, usage := range usages { - msg.WriteString(usage) - msg.WriteString("\n--") - } return msg.String() } diff --git a/proxy/socks4/socks4.go b/proxy/socks4/socks4.go index c2c745c..b6e56b1 100644 --- a/proxy/socks4/socks4.go +++ b/proxy/socks4/socks4.go @@ -189,3 +189,10 @@ func (s *SOCKS4) connect(conn net.Conn, target string) error { return err } + +func init() { + proxy.AddUsage("socks4", ` +Socks4 scheme: + socks4://host:port +`) +} diff --git a/proxy/socks5/socks5.go b/proxy/socks5/socks5.go index dffb204..02cd353 100644 --- a/proxy/socks5/socks5.go +++ b/proxy/socks5/socks5.go @@ -55,6 +55,6 @@ func NewSocks5(s string, d proxy.Dialer, p proxy.Proxy) (*Socks5, error) { func init() { proxy.AddUsage("socks5", ` Socks5 scheme: - socks://[user:pass@]host:port + socks5://[user:pass@]host:port `) }