fixed hub logic

This commit is contained in:
afeiszli
2022-02-21 11:08:45 -05:00
parent f21dad5184
commit 33df27a721
2 changed files with 10 additions and 5 deletions

View File

@@ -30,7 +30,7 @@ func GetHubPeer(networkName string) []models.Node {
} }
// GetNodePeers - fetches peers for a given node // GetNodePeers - fetches peers for a given node
func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error) { func GetNodePeers(networkName string, excludeRelayed bool, isP2S bool) ([]models.Node, error) {
var peers []models.Node var peers []models.Node
var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName) var networkNodes, egressNetworkNodes, err = getNetworkEgressAndNodes(networkName)
if err != nil { if err != nil {
@@ -76,7 +76,9 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error
} }
} }
} }
peers = append(peers, peer) if !isP2S || peer.IsHub == "yes" {
peers = append(peers, peer)
}
} }
} }
@@ -87,20 +89,22 @@ func GetNodePeers(networkName string, excludeRelayed bool) ([]models.Node, error
func GetPeersList(refnode *models.Node) ([]models.Node, error) { func GetPeersList(refnode *models.Node) ([]models.Node, error) {
var peers []models.Node var peers []models.Node
var err error var err error
var isP2S bool
var networkName = refnode.Network var networkName = refnode.Network
var excludeRelayed = refnode.IsRelay != "yes" var excludeRelayed = refnode.IsRelay != "yes"
var relayedNodeAddr string var relayedNodeAddr string
if refnode.IsRelayed == "yes" { if refnode.IsRelayed == "yes" {
relayedNodeAddr = refnode.Address relayedNodeAddr = refnode.Address
} }
network, err := GetNetwork(networkName) network, err := GetNetwork(networkName)
if err != nil { if err != nil {
return peers, err return peers, err
} else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" { } else if network.IsPointToSite == "yes" && refnode.IsHub != "yes" {
return GetHubPeer(networkName), nil isP2S = true
} }
if relayedNodeAddr == "" { if relayedNodeAddr == "" {
peers, err = GetNodePeers(networkName, excludeRelayed) peers, err = GetNodePeers(networkName, excludeRelayed, isP2S)
} else { } else {
var relayNode models.Node var relayNode models.Node
relayNode, err = GetNodeRelay(networkName, relayedNodeAddr) relayNode, err = GetNodeRelay(networkName, relayedNodeAddr)
@@ -120,7 +124,7 @@ func GetPeersList(refnode *models.Node) ([]models.Node, error) {
} else { } else {
peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...) peerNode.AllowedIPs = append(peerNode.AllowedIPs, peerNode.RelayAddrs...)
} }
nodepeers, err := GetNodePeers(networkName, false) nodepeers, err := GetNodePeers(networkName, false, isP2S)
if err == nil && peerNode.UDPHolePunch == "yes" { if err == nil && peerNode.UDPHolePunch == "yes" {
for _, nodepeer := range nodepeers { for _, nodepeer := range nodepeers {
if nodepeer.Address == peerNode.Address { if nodepeer.Address == peerNode.Address {

View File

@@ -187,6 +187,7 @@ func setPeerInfo(node *models.Node) models.Node {
peer.UDPHolePunch = node.UDPHolePunch peer.UDPHolePunch = node.UDPHolePunch
peer.Address = node.Address peer.Address = node.Address
peer.Address6 = node.Address6 peer.Address6 = node.Address6
peer.IsHub = node.IsHub
peer.EgressGatewayRanges = node.EgressGatewayRanges peer.EgressGatewayRanges = node.EgressGatewayRanges
peer.IsEgressGateway = node.IsEgressGateway peer.IsEgressGateway = node.IsEgressGateway
peer.IngressGatewayRange = node.IngressGatewayRange peer.IngressGatewayRange = node.IngressGatewayRange