|
@@ -49,7 +49,7 @@ func GetPeersForProxy(node *models.Node, onlyPeers bool) (proxy_models.ProxyMana
|
|
|
if err != nil {
|
|
|
logger.Log(0, "error retrieving host for relay node", relayNode.HostID.String(), err.Error())
|
|
|
}
|
|
|
- relayEndpoint, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, host.LocalListenPort))
|
|
|
+ relayEndpoint, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, host.ListenPort))
|
|
|
if err != nil {
|
|
|
logger.Log(1, "failed to resolve relay node endpoint: ", err.Error())
|
|
|
}
|
|
@@ -78,7 +78,7 @@ func GetPeersForProxy(node *models.Node, onlyPeers bool) (proxy_models.ProxyMana
|
|
|
if err != nil {
|
|
|
logger.Log(0, "error retrieving host for relayNode", relayedNode.ID.String(), err.Error())
|
|
|
}
|
|
|
- relayedEndpoint, udpErr := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayedHost.EndpointIP, host.LocalListenPort))
|
|
|
+ relayedEndpoint, udpErr := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayedHost.EndpointIP, host.ListenPort))
|
|
|
if udpErr == nil {
|
|
|
relayPeersMap[host.PublicKey.String()] = proxy_models.RelayedConf{
|
|
|
RelayedPeerEndpoint: relayedEndpoint,
|
|
@@ -106,7 +106,7 @@ func GetPeersForProxy(node *models.Node, onlyPeers bool) (proxy_models.ProxyMana
|
|
|
continue
|
|
|
}
|
|
|
proxyStatus := host.ProxyEnabled
|
|
|
- listenPort := host.LocalListenPort
|
|
|
+ listenPort := host.ListenPort
|
|
|
if proxyStatus {
|
|
|
listenPort = host.ProxyListenPort
|
|
|
if listenPort == 0 {
|
|
@@ -149,7 +149,7 @@ func GetPeersForProxy(node *models.Node, onlyPeers bool) (proxy_models.ProxyMana
|
|
|
logger.Log(0, "error retrieving host for relayNode", relayNode.ID.String(), err.Error())
|
|
|
continue
|
|
|
}
|
|
|
- relayTo, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, relayHost.LocalListenPort))
|
|
|
+ relayTo, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, relayHost.ListenPort))
|
|
|
if err == nil {
|
|
|
peerConfMap[host.PublicKey.String()] = proxy_models.PeerConf{
|
|
|
|
|
@@ -200,16 +200,7 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
|
|
if host.IsRelayed {
|
|
|
relayHost, err := GetHost(host.RelayedBy)
|
|
|
if err == nil {
|
|
|
- listenPort := relayHost.LocalListenPort
|
|
|
- if relayHost.ProxyEnabled {
|
|
|
- listenPort = relayHost.ProxyListenPort
|
|
|
- if listenPort == 0 {
|
|
|
- listenPort = proxy_models.NmProxyPort
|
|
|
- }
|
|
|
- } else if listenPort == 0 {
|
|
|
- listenPort = relayHost.ListenPort
|
|
|
- }
|
|
|
- relayEndpoint, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, listenPort))
|
|
|
+ relayEndpoint, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, getPeerListenPort(relayHost)))
|
|
|
if err != nil {
|
|
|
logger.Log(1, "failed to resolve relay node endpoint: ", err.Error())
|
|
|
}
|
|
@@ -226,16 +217,7 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
|
|
for _, relayedHost := range relayedHosts {
|
|
|
payload, err := GetPeerUpdateForHost(&relayedHost)
|
|
|
if err == nil {
|
|
|
- listenPort := relayedHost.LocalListenPort
|
|
|
- if relayedHost.ProxyEnabled {
|
|
|
- listenPort = relayedHost.ProxyListenPort
|
|
|
- if listenPort == 0 {
|
|
|
- listenPort = proxy_models.NmProxyPort
|
|
|
- }
|
|
|
- } else if listenPort == 0 {
|
|
|
- listenPort = relayedHost.ListenPort
|
|
|
- }
|
|
|
- relayedEndpoint, udpErr := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayedHost.EndpointIP, listenPort))
|
|
|
+ relayedEndpoint, udpErr := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayedHost.EndpointIP, getPeerListenPort(&relayedHost)))
|
|
|
if udpErr == nil {
|
|
|
relayPeersMap[relayedHost.PublicKey.String()] = proxy_models.RelayedConf{
|
|
|
RelayedPeerEndpoint: relayedEndpoint,
|
|
@@ -270,39 +252,20 @@ func GetProxyUpdateForHost(host *models.Host) (proxy_models.ProxyManagerPayload,
|
|
|
if err != nil {
|
|
|
continue
|
|
|
}
|
|
|
- proxyStatus := peerHost.ProxyEnabled
|
|
|
- listenPort := peerHost.LocalListenPort
|
|
|
- if proxyStatus {
|
|
|
- listenPort = peerHost.ProxyListenPort
|
|
|
- if listenPort == 0 {
|
|
|
- listenPort = proxy_models.NmProxyPort
|
|
|
- }
|
|
|
- } else if listenPort == 0 {
|
|
|
- listenPort = peerHost.ListenPort
|
|
|
- }
|
|
|
+
|
|
|
var currPeerConf proxy_models.PeerConf
|
|
|
var found bool
|
|
|
if currPeerConf, found = peerConfMap[peerHost.PublicKey.String()]; !found {
|
|
|
currPeerConf = proxy_models.PeerConf{
|
|
|
- Proxy: proxyStatus,
|
|
|
- PublicListenPort: int32(listenPort),
|
|
|
+ Proxy: peerHost.ProxyEnabled,
|
|
|
+ PublicListenPort: int32(getPeerListenPort(peerHost)),
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
if peerHost.IsRelayed && peerHost.RelayedBy != host.ID.String() {
|
|
|
relayHost, err := GetHost(peerHost.RelayedBy)
|
|
|
if err == nil {
|
|
|
- listenPort := peerHost.LocalListenPort
|
|
|
- if proxyStatus {
|
|
|
- listenPort = peerHost.ProxyListenPort
|
|
|
- if listenPort == 0 {
|
|
|
- listenPort = proxy_models.NmProxyPort
|
|
|
- }
|
|
|
- } else if listenPort == 0 {
|
|
|
- listenPort = peerHost.ListenPort
|
|
|
- }
|
|
|
- relayTo, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, listenPort))
|
|
|
+ relayTo, err := net.ResolveUDPAddr("udp", fmt.Sprintf("%s:%d", relayHost.EndpointIP, getPeerListenPort(peerHost)))
|
|
|
if err == nil {
|
|
|
currPeerConf.IsRelayed = true
|
|
|
currPeerConf.RelayedTo = relayTo
|
|
@@ -401,16 +364,9 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|
|
}
|
|
|
peerConfig.Endpoint = &net.UDPAddr{
|
|
|
IP: peerHost.EndpointIP,
|
|
|
- Port: peerHost.ListenPort,
|
|
|
+ Port: getPeerListenPort(peerHost),
|
|
|
}
|
|
|
- if peerHost.ProxyEnabled {
|
|
|
- if peerHost.ProxyListenPort == 0 {
|
|
|
- peerConfig.Endpoint.Port = proxy_models.NmProxyPort
|
|
|
- } else {
|
|
|
- peerConfig.Endpoint.Port = peerHost.ProxyListenPort
|
|
|
- }
|
|
|
|
|
|
- }
|
|
|
if uselocal {
|
|
|
peerConfig.Endpoint.IP = peer.LocalAddress.IP
|
|
|
}
|
|
@@ -423,9 +379,6 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- if peer.IsRelay {
|
|
|
- allowedips = append(allowedips, getRelayAllowedIPs(&node, &peer)...)
|
|
|
- }
|
|
|
if peer.IsEgressGateway {
|
|
|
allowedips = append(allowedips, getEgressIPs(&node, &peer)...)
|
|
|
}
|
|
@@ -477,6 +430,18 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
|
|
|
return hostPeerUpdate, nil
|
|
|
}
|
|
|
|
|
|
+func getPeerListenPort(host *models.Host) int {
|
|
|
+ peerPort := host.ListenPort
|
|
|
+ if host.ProxyEnabled {
|
|
|
+ if host.PublicListenPort != 0 {
|
|
|
+ peerPort = host.PublicListenPort
|
|
|
+ } else if host.ProxyListenPort != 0 {
|
|
|
+ peerPort = host.ProxyListenPort
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return peerPort
|
|
|
+}
|
|
|
+
|
|
|
// GetPeerUpdate - gets a wireguard peer config for each peer of a node
|
|
|
func GetPeerUpdate(node *models.Node, host *models.Host) (models.PeerUpdate, error) {
|
|
|
log.Println("peer update for node ", node.ID)
|
|
@@ -535,7 +500,7 @@ func GetPeerUpdate(node *models.Node, host *models.Host) (models.PeerUpdate, err
|
|
|
Port: peerHost.ListenPort,
|
|
|
}
|
|
|
if peerHost.ProxyEnabled {
|
|
|
- peerConfig.Endpoint.Port = peerHost.ProxyListenPort
|
|
|
+ peerConfig.Endpoint.Port = getPeerListenPort(peerHost)
|
|
|
}
|
|
|
if uselocal {
|
|
|
peerConfig.Endpoint.IP = peer.LocalAddress.IP
|
|
@@ -667,8 +632,8 @@ func GetPeerUpdateLegacy(node *models.Node) (models.PeerUpdate, error) {
|
|
|
// set_local
|
|
|
if node.LocalAddress.String() != peer.LocalAddress.String() && peer.LocalAddress.IP != nil {
|
|
|
peerHost.EndpointIP = peer.LocalAddress.IP
|
|
|
- if peerHost.LocalListenPort != 0 {
|
|
|
- peerHost.ListenPort = peerHost.LocalListenPort
|
|
|
+ if peerHost.ListenPort != 0 {
|
|
|
+ peerHost.ListenPort = getPeerListenPort(peerHost)
|
|
|
}
|
|
|
} else {
|
|
|
continue
|
|
@@ -700,8 +665,8 @@ func GetPeerUpdateLegacy(node *models.Node) (models.PeerUpdate, error) {
|
|
|
// if udp hole punching is on, but udp hole punching did not set it, use the LocalListenPort instead
|
|
|
// or, if port is for some reason zero use the LocalListenPort
|
|
|
// but only do this if LocalListenPort is not zero
|
|
|
- if ((!setUDPPort) || peerHost.ListenPort == 0) && peerHost.LocalListenPort != 0 {
|
|
|
- peerHost.ListenPort = peerHost.LocalListenPort
|
|
|
+ if ((!setUDPPort) || peerHost.ListenPort == 0) && peerHost.ListenPort != 0 {
|
|
|
+ peerHost.ListenPort = getPeerListenPort(peerHost)
|
|
|
}
|
|
|
|
|
|
endpoint := peerHost.EndpointIP.String() + ":" + strconv.FormatInt(int64(peerHost.ListenPort), 10)
|
|
@@ -1068,8 +1033,8 @@ func GetPeerUpdateForRelayedNode(node *models.Node, udppeers map[string]string)
|
|
|
// if udp hole punching is on, but udp hole punching did not set it, use the LocalListenPort instead
|
|
|
// or, if port is for some reason zero use the LocalListenPort
|
|
|
// but only do this if LocalListenPort is not zero
|
|
|
- if ((!setUDPPort) || relayHost.ListenPort == 0) && relayHost.LocalListenPort != 0 {
|
|
|
- listenPort = relayHost.LocalListenPort
|
|
|
+ if ((!setUDPPort) || relayHost.ListenPort == 0) && relayHost.ListenPort != 0 {
|
|
|
+ listenPort = relayHost.ListenPort
|
|
|
}
|
|
|
|
|
|
endpoint := relayHost.EndpointIP.String() + ":" + strconv.FormatInt(int64(listenPort), 10)
|