mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 01:15:41 +08:00
chore: code tidy and doc update
This commit is contained in:
parent
2ad3498abd
commit
fc3a21617e
18
README.md
18
README.md
@ -96,7 +96,7 @@ glider -verbose -listen :8443 -forward SCHEME://HOST:PORT
|
|||||||
#### Help
|
#### Help
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary> glider -help</summary>
|
<summary><code>glider -help</code></summary>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Usage: glider [-listen URL]... [-forward URL]... [OPTION]...
|
Usage: glider [-listen URL]... [-forward URL]... [OPTION]...
|
||||||
@ -220,7 +220,7 @@ Help:
|
|||||||
|
|
||||||
see README.md and glider.conf.example for more details.
|
see README.md and glider.conf.example for more details.
|
||||||
--
|
--
|
||||||
glider 0.16.0, https://github.com/nadoo/glider
|
glider 0.16.0, https://github.com/nadoo/glider (glider.proxy@gmail.com)
|
||||||
```
|
```
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
@ -228,7 +228,7 @@ glider 0.16.0, https://github.com/nadoo/glider
|
|||||||
#### Schemes
|
#### Schemes
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary> glider -scheme all</summary>
|
<summary><code>glider -scheme all</code></summary>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
KCP scheme:
|
KCP scheme:
|
||||||
@ -343,7 +343,7 @@ TLS and Websocket with a specified proxy protocol:
|
|||||||
#### Examples
|
#### Examples
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary> glider -example</summary>
|
<summary><code>glider -example</code></summary>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
Examples:
|
Examples:
|
||||||
@ -392,13 +392,13 @@ Examples:
|
|||||||
|
|
||||||
## Service
|
## Service
|
||||||
|
|
||||||
- dhcpd:
|
- dhcpd / dhcpd-failover:
|
||||||
- service=dhcpd,INTERFACE,START_IP,END_IP,LEASE_MINUTES[,MAC=IP,MAC=IP...]
|
- service=dhcpd,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,eth2,192.168.2.100,192.168.2.199,720,fc:23:34:9e:25:01=192.168.2.101
|
|
||||||
- service=dhcpd-failover,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...]
|
||||||
- note: only serve requests when there's no other dhcp server exists in lan
|
- service=dhcpd,eth1,192.168.1.100,192.168.1.199,720
|
||||||
- detect interval: 1min
|
- service=dhcpd-failover,eth2,192.168.2.100,192.168.2.199,720,fc:23:34:9e:25:01=192.168.2.101
|
||||||
|
- note: `dhcpd-failover` only serves requests when there's no other dhcp server exists in lan
|
||||||
|
- detect interval: 1min
|
||||||
|
|
||||||
## Linux Service
|
## Linux Service
|
||||||
|
|
||||||
|
@ -215,7 +215,7 @@ Help:
|
|||||||
|
|
||||||
see README.md and glider.conf.example for more details.
|
see README.md and glider.conf.example for more details.
|
||||||
--
|
--
|
||||||
glider %s, https://github.com/nadoo/glider
|
glider %s, https://github.com/nadoo/glider (glider.proxy@gmail.com)
|
||||||
`
|
`
|
||||||
|
|
||||||
var examples = `
|
var examples = `
|
||||||
|
@ -94,8 +94,7 @@ func (m *Message) AddAnswer(rr *RR) error {
|
|||||||
// Marshal marshals message struct to []byte.
|
// Marshal marshals message struct to []byte.
|
||||||
func (m *Message) Marshal() ([]byte, error) {
|
func (m *Message) Marshal() ([]byte, error) {
|
||||||
buf := &bytes.Buffer{}
|
buf := &bytes.Buffer{}
|
||||||
_, err := m.MarshalTo(buf)
|
if _, err := m.MarshalTo(buf); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return buf.Bytes(), nil
|
return buf.Bytes(), nil
|
||||||
@ -137,8 +136,7 @@ func UnmarshalMessage(b []byte) (*Message, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
m := &Message{unMarshaled: b}
|
m := &Message{unMarshaled: b}
|
||||||
err := UnmarshalHeader(b[:HeaderLen], &m.Header)
|
if err := UnmarshalHeader(b[:HeaderLen], &m.Header); err != nil {
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -285,14 +283,12 @@ func (q *Question) MarshalTo(w io.Writer) (n int, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = binary.Write(w, binary.BigEndian, q.QTYPE)
|
if err = binary.Write(w, binary.BigEndian, q.QTYPE); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n += 2
|
n += 2
|
||||||
|
|
||||||
err = binary.Write(w, binary.BigEndian, q.QCLASS)
|
if err = binary.Write(w, binary.BigEndian, q.QCLASS); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n += 2
|
n += 2
|
||||||
@ -375,20 +371,17 @@ func (rr *RR) MarshalTo(w io.Writer) (n int, err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err = binary.Write(w, binary.BigEndian, rr.TYPE)
|
if err = binary.Write(w, binary.BigEndian, rr.TYPE); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n += 2
|
n += 2
|
||||||
|
|
||||||
err = binary.Write(w, binary.BigEndian, rr.CLASS)
|
if err = binary.Write(w, binary.BigEndian, rr.CLASS); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n += 2
|
n += 2
|
||||||
|
|
||||||
err = binary.Write(w, binary.BigEndian, rr.TTL)
|
if err = binary.Write(w, binary.BigEndian, rr.TTL); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n += 4
|
n += 4
|
||||||
@ -399,8 +392,7 @@ func (rr *RR) MarshalTo(w io.Writer) (n int, err error) {
|
|||||||
}
|
}
|
||||||
n += 2
|
n += 2
|
||||||
|
|
||||||
_, err = w.Write(rr.RDATA)
|
if _, err = w.Write(rr.RDATA); err != nil {
|
||||||
if err != nil {
|
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
n += len(rr.RDATA)
|
n += len(rr.RDATA)
|
||||||
@ -493,8 +485,7 @@ func (m *Message) UnmarshalDomainTo(sb *strings.Builder, b []byte) (int, error)
|
|||||||
}
|
}
|
||||||
|
|
||||||
offset := binary.BigEndian.Uint16(b[idx : idx+2])
|
offset := binary.BigEndian.Uint16(b[idx : idx+2])
|
||||||
err := m.UnmarshalDomainPointTo(sb, int(offset&0x3FFF))
|
if err := m.UnmarshalDomainPointTo(sb, int(offset&0x3FFF)); err != nil {
|
||||||
if err != nil {
|
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
2
go.mod
2
go.mod
@ -12,7 +12,7 @@ require (
|
|||||||
github.com/nadoo/ipset v0.4.1-0.20220218075046-ca3cdce74266
|
github.com/nadoo/ipset v0.4.1-0.20220218075046-ca3cdce74266
|
||||||
github.com/xtaci/kcp-go/v5 v5.6.1
|
github.com/xtaci/kcp-go/v5 v5.6.1
|
||||||
golang.org/x/crypto v0.0.0-20220214200702-86341886e292
|
golang.org/x/crypto v0.0.0-20220214200702-86341886e292
|
||||||
golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7
|
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9
|
||||||
)
|
)
|
||||||
|
|
||||||
require (
|
require (
|
||||||
|
5
go.sum
5
go.sum
@ -49,6 +49,7 @@ github.com/jsimonetti/rtnetlink v0.0.0-20201009170750-9c6f07d100c1/go.mod h1:hqo
|
|||||||
github.com/jsimonetti/rtnetlink v0.0.0-20201110080708-d2c240429e6c/go.mod h1:huN4d1phzjhlOsNIjFsw2SVRbwIHj3fJDMEU2SDPTmg=
|
github.com/jsimonetti/rtnetlink v0.0.0-20201110080708-d2c240429e6c/go.mod h1:huN4d1phzjhlOsNIjFsw2SVRbwIHj3fJDMEU2SDPTmg=
|
||||||
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
|
||||||
github.com/klauspost/cpuid v1.2.4/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
github.com/klauspost/cpuid v1.2.4/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||||
|
github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s=
|
||||||
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
|
github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
github.com/klauspost/cpuid/v2 v2.0.6/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg=
|
||||||
github.com/klauspost/cpuid/v2 v2.0.11 h1:i2lw1Pm7Yi/4O6XCSyJWqEHI2MDw2FzUK6o/D21xn2A=
|
github.com/klauspost/cpuid/v2 v2.0.11 h1:i2lw1Pm7Yi/4O6XCSyJWqEHI2MDw2FzUK6o/D21xn2A=
|
||||||
@ -164,8 +165,8 @@ golang.org/x/sys v0.0.0-20201101102859-da207088b7d1/go.mod h1:h1NjWce9XRLGQEsW7w
|
|||||||
golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210525143221-35b2ab0089ea/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7 h1:BXxu8t6QN0G1uff4bzZzSkpsax8+ALqTGUtz08QrV00=
|
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9 h1:nhht2DYV/Sn3qOayu8lM+cU1ii9sTLUeBQwQQfUHtrs=
|
||||||
golang.org/x/sys v0.0.0-20220224120231-95c6836cb0e7/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
|
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 h1:JGgROgKl9N8DuW20oFS5gxc+lE67/N3FcwmBPMe7ArY=
|
||||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||||
|
@ -178,9 +178,9 @@ func CopyBuffer(dst io.Writer, src io.Reader) (written int64, err error) {
|
|||||||
// CopyUDP copys from src to dst at target with read timeout.
|
// CopyUDP copys from src to dst at target with read timeout.
|
||||||
// if step sets to non-zero value,
|
// if step sets to non-zero value,
|
||||||
// the read timeout will be increased from 0 to timeout by step in every read operation.
|
// the read timeout will be increased from 0 to timeout by step in every read operation.
|
||||||
func CopyUDP(dst net.PacketConn, target net.Addr, src net.PacketConn, timeout time.Duration, step time.Duration) error {
|
func CopyUDP(dst net.PacketConn, writeTo net.Addr, src net.PacketConn, timeout time.Duration, step time.Duration) error {
|
||||||
b := pool.GetBuffer(UDPBufSize)
|
buf := pool.GetBuffer(UDPBufSize)
|
||||||
defer pool.PutBuffer(b)
|
defer pool.PutBuffer(buf)
|
||||||
|
|
||||||
var t time.Duration
|
var t time.Duration
|
||||||
for {
|
for {
|
||||||
@ -189,12 +189,16 @@ func CopyUDP(dst net.PacketConn, target net.Addr, src net.PacketConn, timeout ti
|
|||||||
}
|
}
|
||||||
|
|
||||||
src.SetReadDeadline(time.Now().Add(t))
|
src.SetReadDeadline(time.Now().Add(t))
|
||||||
n, _, err := src.ReadFrom(b)
|
n, addr, err := src.ReadFrom(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err = dst.WriteTo(b[:n], target)
|
if writeTo != nil {
|
||||||
|
addr = writeTo
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = dst.WriteTo(buf[:n], addr)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package smux
|
package smux
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"errors"
|
|
||||||
"net"
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"sync"
|
"sync"
|
||||||
@ -66,7 +65,7 @@ func (s *SmuxClient) Dial(network, addr string) (net.Conn, error) {
|
|||||||
|
|
||||||
// DialUDP connects to the given address via the proxy.
|
// DialUDP connects to the given address via the proxy.
|
||||||
func (s *SmuxClient) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
|
func (s *SmuxClient) DialUDP(network, addr string) (net.PacketConn, net.Addr, error) {
|
||||||
return nil, nil, errors.New("smux client does not support udp now")
|
return nil, nil, proxy.ErrNotSupported
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *SmuxClient) initConn() error {
|
func (s *SmuxClient) initConn() error {
|
||||||
|
Loading…
Reference in New Issue
Block a user