From 699b440c0fca151cdd853e93cff36945cbea0ab9 Mon Sep 17 00:00:00 2001 From: Jonathan Rubenstein Date: Fri, 7 Oct 2022 12:22:16 +0300 Subject: [PATCH] Change socks5 lib from armon/go-socks5 to wzshiming/socks5 This does not appear to affect wireproxy yet, but opens the door for better support --- go.mod | 2 +- go.sum | 4 ++-- routine.go | 15 +++++++-------- 3 files changed, 10 insertions(+), 11 deletions(-) diff --git a/go.mod b/go.mod index 729fa48..d6fd812 100644 --- a/go.mod +++ b/go.mod @@ -5,8 +5,8 @@ go 1.18 require ( github.com/MakeNowJust/heredoc/v2 v2.0.1 github.com/akamensky/argparse v1.3.1 - github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 github.com/go-ini/ini v1.66.4 + github.com/wzshiming/socks5 v0.4.1 golang.zx2c4.com/wireguard v0.0.0-20220829161405-d1d08426b27b suah.dev/protect v1.2.0 ) diff --git a/go.sum b/go.sum index 00380f0..4e9434c 100644 --- a/go.sum +++ b/go.sum @@ -2,8 +2,6 @@ github.com/MakeNowJust/heredoc/v2 v2.0.1 h1:rlCHh70XXXv7toz95ajQWOWQnN4WNLt0TdpZ github.com/MakeNowJust/heredoc/v2 v2.0.1/go.mod h1:6/2Abh5s+hc3g9nbWLe9ObDIOhaRrqsyY9MWy+4JdRM= github.com/akamensky/argparse v1.3.1 h1:kP6+OyvR0fuBH6UhbE6yh/nskrDEIQgEA1SUXDPjx4g= github.com/akamensky/argparse v1.3.1/go.mod h1:S5kwC7IuDcEr5VeXtGPRVZ5o/FdhcMlQz4IZQuw64xA= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= -github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -18,6 +16,8 @@ github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSS github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/wzshiming/socks5 v0.4.1 h1:MZt9cIHSl3vsLufZDR3aZO3hbpCrylWk5XKAuUrgzbQ= +github.com/wzshiming/socks5 v0.4.1/go.mod h1:BvCAqlzocQN5xwLjBZDBbvWlrx8sCYSSbHEOf2wZgT0= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd h1:XcWmESyNjXJMLahc3mqVQJcgSTDxFxhETVlfk9uGc38= golang.org/x/crypto v0.0.0-20220315160706-3147a52a75dd/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/net v0.0.0-20220225172249-27dd8689420f h1:oA4XRj0qtSt8Yo1Zms0CUlsT3KG69V2UGQWPBxujDmc= diff --git a/routine.go b/routine.go index 16296d6..e22ef14 100644 --- a/routine.go +++ b/routine.go @@ -11,7 +11,7 @@ import ( "os" "strconv" - "github.com/armon/go-socks5" + "github.com/wzshiming/socks5" "golang.zx2c4.com/wireguard/tun/netstack" "net/netip" @@ -121,15 +121,14 @@ func (d VirtualTun) resolveToAddrPort(endpoint *addressPort) (*netip.AddrPort, e // SpawnRoutine spawns a socks5 server. func (config *Socks5Config) SpawnRoutine(vt *VirtualTun) { - conf := &socks5.Config{Dial: vt.tnet.DialContext, Resolver: vt} + var socksAuth socks5.Authentication if username := config.Username; username != "" { - validator := CredentialValidator{username: username} - validator.password = config.Password - conf.Credentials = validator + socksAuth = socks5.UserAuth(config.Username, config.Password) } - server, err := socks5.New(conf) - if err != nil { - log.Fatal(err) + server := socks5.Server{ + Authentication: socksAuth, + ProxyDial: vt.tnet.DialContext, + Logger: errorLogger, } if err := server.ListenAndServe("tcp", config.BindAddress); err != nil {