github.com/xtls/xray-core@v1.8.3/common/singbridge/destination.go (about) 1 package singbridge 2 3 import ( 4 M "github.com/sagernet/sing/common/metadata" 5 N "github.com/sagernet/sing/common/network" 6 "github.com/xtls/xray-core/common/net" 7 ) 8 9 func ToNetwork(network string) net.Network { 10 switch N.NetworkName(network) { 11 case N.NetworkTCP: 12 return net.Network_TCP 13 case N.NetworkUDP: 14 return net.Network_UDP 15 default: 16 return net.Network_Unknown 17 } 18 } 19 20 func ToDestination(socksaddr M.Socksaddr, network net.Network) net.Destination { 21 if socksaddr.IsFqdn() { 22 return net.Destination{ 23 Network: network, 24 Address: net.DomainAddress(socksaddr.Fqdn), 25 Port: net.Port(socksaddr.Port), 26 } 27 } else { 28 return net.Destination{ 29 Network: network, 30 Address: net.IPAddress(socksaddr.Addr.AsSlice()), 31 Port: net.Port(socksaddr.Port), 32 } 33 } 34 } 35 36 func ToSocksaddr(destination net.Destination) M.Socksaddr { 37 var addr M.Socksaddr 38 switch destination.Address.Family() { 39 case net.AddressFamilyDomain: 40 addr.Fqdn = destination.Address.Domain() 41 default: 42 addr.Addr = M.AddrFromIP(destination.Address.IP()) 43 } 44 addr.Port = uint16(destination.Port) 45 return addr 46 }