mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 09:25:41 +08:00
socks5: support protocol chain with unix socket(#291)
This commit is contained in:
parent
cf1a4e3817
commit
720f12aa0a
@ -66,6 +66,19 @@ archives:
|
|||||||
- config/**/*
|
- config/**/*
|
||||||
- systemd/*
|
- systemd/*
|
||||||
|
|
||||||
|
# https://goreleaser.com/customization/snapshots/
|
||||||
|
snapshot:
|
||||||
|
name_template: '{{ incpatch .Version }}-dev'
|
||||||
|
|
||||||
|
# https://goreleaser.com/customization/checksum/
|
||||||
|
checksum:
|
||||||
|
name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"
|
||||||
|
|
||||||
|
# https://goreleaser.com/customization/release/
|
||||||
|
release:
|
||||||
|
prerelease: true
|
||||||
|
draft: true
|
||||||
|
|
||||||
# https://goreleaser.com/customization/nfpm/
|
# https://goreleaser.com/customization/nfpm/
|
||||||
nfpms:
|
nfpms:
|
||||||
-
|
-
|
||||||
@ -104,16 +117,3 @@ nfpms:
|
|||||||
triggers:
|
triggers:
|
||||||
interest_noawait:
|
interest_noawait:
|
||||||
- /lib/systemd/systemd
|
- /lib/systemd/systemd
|
||||||
|
|
||||||
# https://goreleaser.com/customization/snapshots/
|
|
||||||
snapshot:
|
|
||||||
name_template: '{{ incpatch .Version }}-dev'
|
|
||||||
|
|
||||||
# https://goreleaser.com/customization/checksum/
|
|
||||||
checksum:
|
|
||||||
name_template: "{{ .ProjectName }}_{{ .Version }}_checksums.txt"
|
|
||||||
|
|
||||||
# https://goreleaser.com/customization/release/
|
|
||||||
release:
|
|
||||||
prerelease: true
|
|
||||||
draft: true
|
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
|
|
||||||
forward=http://forwarder4:8080
|
forward=http://forwarder1:8080
|
||||||
|
|
||||||
# first connect forwarder1 then forwarder2 then internet
|
# first connect forwarder1 then forwarder2 then internet
|
||||||
forward=http://forwarder5:8080,socks6://forwarder3:1080
|
forward=http://forwarder1:8080,socks5://forwarder2:1080
|
||||||
|
|
||||||
|
|
||||||
# Round Robin mode: rr
|
# Round Robin mode: rr
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
|
|
||||||
|
|
||||||
forward=http://forwarder4:8080
|
forward=http://forwarder1:8080
|
||||||
|
|
||||||
# first connect forwarder1 then forwarder2 then internet
|
# first connect forwarder1 then forwarder2 then internet
|
||||||
forward=http://forwarder5:8080,socks5://forwarder3:1080
|
forward=http://forwarder1:8080,socks5://forwarder2:1080
|
||||||
|
|
||||||
|
|
||||||
# Round Robin mode: rr
|
# Round Robin mode: rr
|
||||||
|
@ -271,6 +271,9 @@ func (s *Socks5) handshake(c net.Conn) (socks.Addr, error) {
|
|||||||
_, err = c.Write([]byte{5, 0, 0, 1, 0, 0, 0, 0, 0, 0}) // SOCKS v5, reply succeeded
|
_, err = c.Write([]byte{5, 0, 0, 1, 0, 0, 0, 0, 0, 0}) // SOCKS v5, reply succeeded
|
||||||
case socks.CmdUDPAssociate:
|
case socks.CmdUDPAssociate:
|
||||||
listenAddr := socks.ParseAddr(c.LocalAddr().String())
|
listenAddr := socks.ParseAddr(c.LocalAddr().String())
|
||||||
|
if listenAddr == nil { // maybe it's unix socket
|
||||||
|
listenAddr = socks.ParseAddr("127.0.0.1:0")
|
||||||
|
}
|
||||||
_, err = c.Write(append([]byte{5, 0, 0}, listenAddr...)) // SOCKS v5, reply succeeded
|
_, err = c.Write(append([]byte{5, 0, 0}, listenAddr...)) // SOCKS v5, reply succeeded
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, socks.Errors[7]
|
return nil, socks.Errors[7]
|
||||||
|
@ -27,7 +27,7 @@ func (s *Unix) Addr() string {
|
|||||||
// 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.
|
||||||
// NOTE: must be the first dialer in a chain
|
// NOTE: must be the first dialer in a chain
|
||||||
func (s *Unix) Dial(network, addr string) (net.Conn, error) {
|
func (s *Unix) Dial(network, addr string) (net.Conn, error) {
|
||||||
return net.Dial("unix", s.addr)
|
return s.dialer.Dial("unix", s.addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
// DialUDP connects to the given address via the proxy.
|
// DialUDP connects to the given address via the proxy.
|
||||||
|
@ -52,7 +52,7 @@ func (s *Unix) ListenAndServeTCP() {
|
|||||||
}
|
}
|
||||||
defer l.Close()
|
defer l.Close()
|
||||||
|
|
||||||
log.F("[unix] listening on %s", s.addr)
|
log.F("[unix] Listen on %s", s.addr)
|
||||||
|
|
||||||
for {
|
for {
|
||||||
c, err := l.Accept()
|
c, err := l.Accept()
|
||||||
@ -108,7 +108,7 @@ func (s *Unix) ListenAndServeUDP() {
|
|||||||
s.ServePacket(c)
|
s.ServePacket(c)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ServePacket implementes proxy.PacketServer
|
// ServePacket implementes proxy.PacketServer.
|
||||||
func (s *Unix) ServePacket(pc net.PacketConn) {
|
func (s *Unix) ServePacket(pc net.PacketConn) {
|
||||||
if server, ok := s.server.(proxy.PacketServer); ok {
|
if server, ok := s.server.(proxy.PacketServer); ok {
|
||||||
server.ServePacket(pc)
|
server.ServePacket(pc)
|
||||||
@ -123,6 +123,8 @@ func (s *Unix) ServePacket(pc net.PacketConn) {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
log.F("!!! unix ServePacker read from: %s", srcAddr)
|
||||||
|
|
||||||
var session *Session
|
var session *Session
|
||||||
sessionKey := srcAddr.String()
|
sessionKey := srcAddr.String()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user