Browse Source

adding udp port parsing for relay node

afeiszli 3 years ago
parent
commit
802934e993
2 changed files with 13 additions and 1 deletions
  1. 12 0
      controllers/common.go
  2. 1 1
      netclient/wireguard/common.go

+ 12 - 0
controllers/common.go

@@ -14,6 +14,7 @@ import (
 	"golang.org/x/crypto/bcrypt"
 	"golang.org/x/crypto/bcrypt"
 )
 )
 
 
+
 func GetPeersList(networkName string, excludeRelayed bool, relayedNodeAddr string) ([]models.Node, error) {
 func GetPeersList(networkName string, excludeRelayed bool, relayedNodeAddr string) ([]models.Node, error) {
 	var peers []models.Node
 	var peers []models.Node
 	var relayNode models.Node
 	var relayNode models.Node
@@ -31,6 +32,16 @@ func GetPeersList(networkName string, excludeRelayed bool, relayedNodeAddr strin
 			} else {
 			} else {
 				relayNode.AllowedIPs = append(relayNode.AllowedIPs, relayNode.RelayAddrs...)
 				relayNode.AllowedIPs = append(relayNode.AllowedIPs, relayNode.RelayAddrs...)
 			}
 			}
+			nodepeers, err := GetNodePeers(networkName, false)
+			if err == nil && relayNode.UDPHolePunch == "yes" {
+				for _, nodepeer := range nodepeers {
+					if nodepeer.Address == relayNode.Address {
+						relayNode.Endpoint = nodepeer.Endpoint
+						relayNode.ListenPort = nodepeer.ListenPort
+					}
+				}
+			}
+
 			peers = append(peers, relayNode)
 			peers = append(peers, relayNode)
 		}
 		}
 	}
 	}
@@ -103,6 +114,7 @@ func setPeerInfo(node models.Node) models.Node {
 	peer.LocalAddress = node.LocalAddress
 	peer.LocalAddress = node.LocalAddress
 	peer.ListenPort = node.ListenPort
 	peer.ListenPort = node.ListenPort
 	peer.AllowedIPs = node.AllowedIPs
 	peer.AllowedIPs = node.AllowedIPs
+	peer.UDPHolePunch = node.UDPHolePunch
 	peer.Address = node.Address
 	peer.Address = node.Address
 	peer.Address6 = node.Address6
 	peer.Address6 = node.Address6
 	peer.EgressGatewayRanges = node.EgressGatewayRanges
 	peer.EgressGatewayRanges = node.EgressGatewayRanges

+ 1 - 1
netclient/wireguard/common.go

@@ -259,7 +259,7 @@ func SetWGConfig(network string, peerupdate bool) error {
 	}
 	}
 	servercfg := cfg.Server
 	servercfg := cfg.Server
 	nodecfg := cfg.Node
 	nodecfg := cfg.Node
-
+	
 	peers, hasGateway, gateways, err := server.GetPeers(nodecfg.MacAddress, nodecfg.Network, servercfg.GRPCAddress, nodecfg.IsDualStack == "yes", nodecfg.IsIngressGateway == "yes")
 	peers, hasGateway, gateways, err := server.GetPeers(nodecfg.MacAddress, nodecfg.Network, servercfg.GRPCAddress, nodecfg.IsDualStack == "yes", nodecfg.IsIngressGateway == "yes")
 	if err != nil {
 	if err != nil {
 		return err
 		return err