toSocksAddr supports IPv6

This commit is contained in:
koaiwu 2022-10-28 11:40:05 +08:00 committed by ginuerzh
parent 847ee05fd4
commit b7beb1729e

View File

@ -10,6 +10,7 @@ import (
"net" "net"
"net/url" "net/url"
"strconv" "strconv"
"strings"
"sync" "sync"
"time" "time"
@ -1630,17 +1631,21 @@ func (h *socks5Handler) muxBindOn(conn net.Conn, addr string) {
} }
} }
// TODO: support ipv6 and domain // TODO: support domain
func toSocksAddr(addr net.Addr) *gosocks5.Addr { func toSocksAddr(addr net.Addr) *gosocks5.Addr {
host := "0.0.0.0" host := "0.0.0.0"
port := 0 port := 0
addrType := gosocks5.AddrIPv4
if addr != nil { if addr != nil {
h, p, _ := net.SplitHostPort(addr.String()) h, p, _ := net.SplitHostPort(addr.String())
host = h host = h
port, _ = strconv.Atoi(p) port, _ = strconv.Atoi(p)
if strings.Count(host, ":") > 0 {
addrType = gosocks5.AddrIPv6
}
} }
return &gosocks5.Addr{ return &gosocks5.Addr{
Type: gosocks5.AddrIPv4, Type: addrType,
Host: host, Host: host,
Port: uint16(port), Port: uint16(port),
} }