Browse Source

edited where server sets peers to account for ACLs

0xdcarns 3 years ago
parent
commit
7eac05528a
2 changed files with 12 additions and 2 deletions
  1. 12 1
      logic/server.go
  2. 0 1
      netclient/functions/mqhandlers.go

+ 12 - 1
logic/server.go

@@ -11,6 +11,8 @@ import (
 	"time"
 
 	"github.com/gravitl/netmaker/logger"
+	"github.com/gravitl/netmaker/logic/acls"
+	"github.com/gravitl/netmaker/logic/acls/nodeacls"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/netclient/ncutils"
 	"github.com/gravitl/netmaker/servercfg"
@@ -208,6 +210,11 @@ func GetServerPeers(serverNode *models.Node) ([]wgtypes.PeerConfig, bool, []stri
 		return nil, hasGateway, gateways, err
 	}
 
+	currentNetworkACL, err := nodeacls.FetchAllACLs(nodeacls.NetworkID(serverNode.Network))
+	if err != nil {
+		logger.Log(1, "could not fetch current ACL list, proceeding with all peers")
+	}
+
 	for _, node := range nodes {
 		pubkey, err := wgtypes.ParseKey(node.PublicKey)
 		if err != nil {
@@ -290,7 +297,11 @@ func GetServerPeers(serverNode *models.Node) ([]wgtypes.PeerConfig, bool, []stri
 			ReplaceAllowedIPs:           true,
 			AllowedIPs:                  allowedips,
 		}
-		peers = append(peers, peer)
+		if currentNetworkACL != nil && currentNetworkACL.IsAllowed(acls.AclID(serverNode.ID), acls.AclID(node.ID)) {
+			peers = append(peers, peer)
+		} else { // if ACLs were not found
+			peers = append(peers, peer)
+		}
 	}
 	if serverNode.IsIngressGateway == "yes" {
 		extPeers, err := GetServerExtPeers(serverNode)

+ 0 - 1
netclient/functions/mqhandlers.go

@@ -206,7 +206,6 @@ func UpdatePeers(client mqtt.Client, msg mqtt.Message) {
 			ncutils.Log("error updating /etc/hosts " + err.Error())
 			return
 		}
-		ncutils.Log("DNS updating /etc/hosts")
 	} else {
 		if err := removeHostDNS(ncutils.IsWindows()); err != nil {
 			ncutils.Log("error removing netmaker profile from /etc/hosts " + err.Error())