Bladeren bron

firewalls peer update fix

Abhishek Kondur 2 jaren geleden
bovenliggende
commit
e5c5b13739
2 gewijzigde bestanden met toevoegingen van 38 en 1 verwijderingen
  1. 37 1
      logic/peers.go
  2. 1 0
      models/mqtt.go

+ 37 - 1
logic/peers.go

@@ -201,6 +201,17 @@ func GetPeerUpdateForHost(ctx context.Context, network string, hostToSend *model
 					nodeacls.AreNodesAllowed(nodeacls.NetworkID(node.Network), nodeacls.NodeID(node.ID.String()), nodeacls.NodeID(peer.ID.String())) &&
 					(deletedNode == nil || (deletedNode != nil && peer.ID.String() != deletedNode.ID.String())) {
 					peerConfig.AllowedIPs = allowedips // only append allowed IPs if valid connection
+				} else {
+					nodePeerMap[peerHost.PublicKey.String()] = models.PeerRouteInfo{
+						PeerAddr: net.IPNet{
+							IP:   net.ParseIP(peer.PrimaryAddress()),
+							Mask: getCIDRMaskFromAddr(peer.PrimaryAddress()),
+						},
+						PeerKey: peerHost.PublicKey.String(),
+						Allow:   true,
+						ID:      peerHost.ID.String(),
+						Remove:  true,
+					}
 				}
 
 				if node.IsIngressGateway || node.IsEgressGateway {
@@ -283,6 +294,7 @@ func GetPeerUpdateForHost(ctx context.Context, network string, hostToSend *model
 					hostPeerUpdate.NodePeers = append(hostPeerUpdate.NodePeers, nodePeer)
 				}
 			}
+
 			if node.IsIngressGateway {
 				getIngressNodeAllowedIPs(network, &node, &hostPeerUpdate, nodePeerMap)
 			}
@@ -394,6 +406,17 @@ func GetPeerUpdateOfSingleHost(
 				nodeacls.AreNodesAllowed(nodeacls.NetworkID(node.Network), nodeacls.NodeID(node.ID.String()), nodeacls.NodeID(peer.ID.String())) &&
 				(deletedNode == nil || (deletedNode != nil && peer.ID.String() != deletedNode.ID.String())) {
 				peerConfig.AllowedIPs = allowedips // only append allowed IPs if valid connection
+			} else {
+				nodePeerMap[updatedHost.PublicKey.String()] = models.PeerRouteInfo{
+					PeerAddr: net.IPNet{
+						IP:   net.ParseIP(peer.PrimaryAddress()),
+						Mask: getCIDRMaskFromAddr(peer.PrimaryAddress()),
+					},
+					PeerKey: updatedHost.PublicKey.String(),
+					Allow:   true,
+					ID:      updatedHost.ID.String(),
+					Remove:  true,
+				}
 			}
 
 			if node.IsIngressGateway || node.IsEgressGateway {
@@ -477,6 +500,18 @@ func GetPeerUpdateOfSingleHost(
 				hostPeerUpdate.NodePeers = append(hostPeerUpdate.NodePeers, nodePeer)
 			}
 		}
+		if deletedNode != nil {
+			nodePeerMap[updatedHost.PublicKey.String()] = models.PeerRouteInfo{
+				PeerAddr: net.IPNet{
+					IP:   net.ParseIP(deletedNode.PrimaryAddress()),
+					Mask: getCIDRMaskFromAddr(deletedNode.PrimaryAddress()),
+				},
+				PeerKey: updatedHost.PublicKey.String(),
+				Allow:   true,
+				ID:      deletedNode.ID.String(),
+				Remove:  true,
+			}
+		}
 		if node.IsIngressGateway {
 			getIngressNodeAllowedIPs(network, &node, &hostPeerUpdate, nodePeerMap)
 		}
@@ -500,8 +535,9 @@ func GetPeerUpdateOfSingleHost(
 		if len(peer.AllowedIPs) == 0 ||
 			(deleteHost && peer.PublicKey.String() == updatedHost.PublicKey.String()) {
 			peer.Remove = true
+			hostPeerUpdate.Peers[i] = peer
 		}
-		hostPeerUpdate.Peers[i] = peer
+
 	}
 
 	for i := range hostPeerUpdate.NodePeers {

+ 1 - 0
models/mqtt.go

@@ -43,6 +43,7 @@ type PeerRouteInfo struct {
 	PeerKey  string    `json:"peer_key" yaml:"peer_key"`
 	Allow    bool      `json:"allow" yaml:"allow"`
 	ID       string    `json:"id,omitempty" yaml:"id,omitempty"`
+	Remove   bool      `json:"remove" yaml:"remove"`
 }
 
 // ExtClientInfo - struct for ext. client and it's peers