fix missing peer from relay

This commit is contained in:
Matthew R Kasun 2022-06-14 19:39:59 +00:00
parent 0983951b99
commit 27253d504b

View file

@ -42,10 +42,6 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
//skip if not permitted by acl
continue
}
if peer.IsRelayed == "yes" {
//skip -- willl be added to relay
continue
}
pubkey, err := wgtypes.ParseKey(peer.PublicKey)
if err != nil {
return models.PeerUpdate{}, err
@ -241,6 +237,10 @@ func GetAllowedIPs(node, peer *models.Node) []net.IPNet {
relayedPeer, err := findNode(ip)
if err != nil {
logger.Log(0, "failed to find node for ip ", ip, err.Error())
continue
}
if relayedPeer == nil {
continue
}
if relayedPeer.ID == node.ID {
//skip self
@ -329,6 +329,10 @@ func GetPeerUpdateForRelayedNode(node *models.Node) (models.PeerUpdate, error) {
logger.Log(0, "failed to find node for ip", ip.IP.String(), err.Error())
continue
}
if target == nil {
logger.Log(0, "failed to find node for ip", ip.IP.String())
continue
}
if !nodeacls.AreNodesAllowed(nodeacls.NetworkID(node.Network), nodeacls.NodeID(node.ID), nodeacls.NodeID(target.ID)) {
logger.Log(0, "deleting node from relayednode per acl", node.Name, target.Name)
allowedips = append(allowedips[:i], allowedips[i+1:]...)