diff --git a/controllers/common.go b/controllers/common.go index 88175297..af597553 100644 --- a/controllers/common.go +++ b/controllers/common.go @@ -14,6 +14,7 @@ import ( "golang.org/x/crypto/bcrypt" ) + func GetPeersList(networkName string, excludeRelayed bool, relayedNodeAddr string) ([]models.Node, error) { var peers []models.Node var relayNode models.Node @@ -31,6 +32,16 @@ func GetPeersList(networkName string, excludeRelayed bool, relayedNodeAddr strin } else { 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) } } @@ -103,6 +114,7 @@ func setPeerInfo(node models.Node) models.Node { peer.LocalAddress = node.LocalAddress peer.ListenPort = node.ListenPort peer.AllowedIPs = node.AllowedIPs + peer.UDPHolePunch = node.UDPHolePunch peer.Address = node.Address peer.Address6 = node.Address6 peer.EgressGatewayRanges = node.EgressGatewayRanges diff --git a/netclient/wireguard/common.go b/netclient/wireguard/common.go index 3cf74ff9..0daaad5d 100644 --- a/netclient/wireguard/common.go +++ b/netclient/wireguard/common.go @@ -259,7 +259,7 @@ func SetWGConfig(network string, peerupdate bool) error { } servercfg := cfg.Server nodecfg := cfg.Node - + peers, hasGateway, gateways, err := server.GetPeers(nodecfg.MacAddress, nodecfg.Network, servercfg.GRPCAddress, nodecfg.IsDualStack == "yes", nodecfg.IsIngressGateway == "yes") if err != nil { return err