12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- package singbridge
- import (
- M "github.com/sagernet/sing/common/metadata"
- N "github.com/sagernet/sing/common/network"
- "github.com/xtls/xray-core/common/net"
- )
- func ToNetwork(network string) net.Network {
- switch N.NetworkName(network) {
- case N.NetworkTCP:
- return net.Network_TCP
- case N.NetworkUDP:
- return net.Network_UDP
- default:
- return net.Network_Unknown
- }
- }
- func ToDestination(socksaddr M.Socksaddr, network net.Network) net.Destination {
- // IsFqdn() implicitly checks if the domain name is valid
- if socksaddr.IsFqdn() {
- return net.Destination{
- Network: network,
- Address: net.DomainAddress(socksaddr.Fqdn),
- Port: net.Port(socksaddr.Port),
- }
- }
- // IsIP() implicitly checks if the IP address is valid
- if socksaddr.IsIP() {
- return net.Destination{
- Network: network,
- Address: net.IPAddress(socksaddr.Addr.AsSlice()),
- Port: net.Port(socksaddr.Port),
- }
- }
- return net.Destination{}
- }
- func ToSocksaddr(destination net.Destination) M.Socksaddr {
- var addr M.Socksaddr
- switch destination.Address.Family() {
- case net.AddressFamilyDomain:
- addr.Fqdn = destination.Address.Domain()
- default:
- addr.Addr = M.AddrFromIP(destination.Address.IP())
- }
- addr.Port = uint16(destination.Port)
- return addr
- }
|