mirror of
https://github.com/whyvl/wireproxy.git
synced 2025-04-29 19:01:42 +02:00
feat: migration to github.com/things-go/go-socks5
- preallocate config slices - not used interfaces in consumer - do not allocate new variables in loops
This commit is contained in:
parent
bc9c2c8473
commit
229ad7a95d
6 changed files with 74 additions and 71 deletions
36
routine.go
36
routine.go
|
@ -11,10 +11,12 @@ import (
|
|||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/armon/go-socks5"
|
||||
"github.com/things-go/go-socks5"
|
||||
"github.com/things-go/go-socks5/bufferpool"
|
||||
|
||||
"net/netip"
|
||||
|
||||
"golang.zx2c4.com/wireguard/tun/netstack"
|
||||
"net/netip"
|
||||
)
|
||||
|
||||
// errorLogger is the logger to print error message
|
||||
|
@ -47,9 +49,8 @@ type addressPort struct {
|
|||
func (d VirtualTun) LookupAddr(ctx context.Context, name string) ([]string, error) {
|
||||
if d.SystemDNS {
|
||||
return net.DefaultResolver.LookupHost(ctx, name)
|
||||
} else {
|
||||
return d.Tnet.LookupContextHost(ctx, name)
|
||||
}
|
||||
return d.Tnet.LookupContextHost(ctx, name)
|
||||
}
|
||||
|
||||
// ResolveAddrWithContext resolves a hostname and returns an AddrPort.
|
||||
|
@ -121,17 +122,24 @@ 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 authMethods []socks5.Authenticator
|
||||
if username := config.Username; username != "" {
|
||||
validator := CredentialValidator{username: username}
|
||||
validator.password = config.Password
|
||||
conf.Credentials = validator
|
||||
authMethods = append(authMethods, socks5.UserPassAuthenticator{
|
||||
Credentials: socks5.StaticCredentials{username: config.Password},
|
||||
})
|
||||
} else {
|
||||
authMethods = append(authMethods, socks5.NoAuthAuthenticator{})
|
||||
}
|
||||
server, err := socks5.New(conf)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
|
||||
options := []socks5.Option{
|
||||
socks5.WithDial(vt.Tnet.DialContext),
|
||||
socks5.WithResolver(vt),
|
||||
socks5.WithAuthMethods(authMethods),
|
||||
socks5.WithBufferPool(bufferpool.NewPool(256 * 1024)),
|
||||
}
|
||||
|
||||
server := socks5.NewServer(options...)
|
||||
|
||||
if err := server.ListenAndServe("tcp", config.BindAddress); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
@ -229,8 +237,9 @@ func (conf *TCPClientTunnelConfig) SpawnRoutine(vt *VirtualTun) {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var conn net.Conn
|
||||
for {
|
||||
conn, err := server.Accept()
|
||||
conn, err = server.Accept()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
@ -281,8 +290,9 @@ func (conf *TCPServerTunnelConfig) SpawnRoutine(vt *VirtualTun) {
|
|||
log.Fatal(err)
|
||||
}
|
||||
|
||||
var conn net.Conn
|
||||
for {
|
||||
conn, err := server.Accept()
|
||||
conn, err = server.Accept()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue