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  }