mirror of
https://github.com/nadoo/glider.git
synced 2025-02-23 01:15: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/**/*
|
||||
- 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/
|
||||
nfpms:
|
||||
-
|
||||
@ -104,16 +117,3 @@ nfpms:
|
||||
triggers:
|
||||
interest_noawait:
|
||||
- /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
|
||||
forward=http://forwarder5:8080,socks6://forwarder3:1080
|
||||
forward=http://forwarder1:8080,socks5://forwarder2:1080
|
||||
|
||||
|
||||
# Round Robin mode: rr
|
||||
|
@ -1,9 +1,9 @@
|
||||
|
||||
|
||||
forward=http://forwarder4:8080
|
||||
forward=http://forwarder1:8080
|
||||
|
||||
# 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
|
||||
|
@ -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
|
||||
case socks.CmdUDPAssociate:
|
||||
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
|
||||
if err != nil {
|
||||
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.
|
||||
// NOTE: must be the first dialer in a chain
|
||||
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.
|
||||
|
@ -52,7 +52,7 @@ func (s *Unix) ListenAndServeTCP() {
|
||||
}
|
||||
defer l.Close()
|
||||
|
||||
log.F("[unix] listening on %s", s.addr)
|
||||
log.F("[unix] Listen on %s", s.addr)
|
||||
|
||||
for {
|
||||
c, err := l.Accept()
|
||||
@ -108,7 +108,7 @@ func (s *Unix) ListenAndServeUDP() {
|
||||
s.ServePacket(c)
|
||||
}
|
||||
|
||||
// ServePacket implementes proxy.PacketServer
|
||||
// ServePacket implementes proxy.PacketServer.
|
||||
func (s *Unix) ServePacket(pc net.PacketConn) {
|
||||
if server, ok := s.server.(proxy.PacketServer); ok {
|
||||
server.ServePacket(pc)
|
||||
@ -123,6 +123,8 @@ func (s *Unix) ServePacket(pc net.PacketConn) {
|
||||
continue
|
||||
}
|
||||
|
||||
log.F("!!! unix ServePacker read from: %s", srcAddr)
|
||||
|
||||
var session *Session
|
||||
sessionKey := srcAddr.String()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user