Browse Source

adding default acl function

afeiszli 3 years ago
parent
commit
8306c213a7
2 changed files with 36 additions and 0 deletions
  1. 6 0
      main.go
  2. 30 0
      serverctl/serverctl.go

+ 6 - 0
main.go

@@ -85,6 +85,12 @@ func initialize() { // Client Mode Prereq Check
 			logger.FatalLog("could not inintialize comms network")
 		}
 	}
+
+	err = serverctl.SetDefaultACLS()
+	if err != nil {
+		logger.FatalLog("error setting default acls: ", err.Error())
+	}
+
 	// initialize iptables to ensure gateways work correctly and mq is forwarded if containerized
 	if servercfg.ManageIPTables() != "off" {
 		if err = serverctl.InitIPTables(); err != nil {

+ 30 - 0
serverctl/serverctl.go

@@ -10,6 +10,8 @@ import (
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/logic"
+	"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"
@@ -144,3 +146,31 @@ func SyncServerNetwork(network string) error {
 	*/
 	return nil
 }
+
+// SetDefaultACLS - runs through each network to see if ACL's are set. If not, goes through each node in network and adds the default ACL
+func SetDefaultACLS() error {
+	// upgraded systems will not have ACL's set, which is why we need this function
+	var err error
+	networks, err := logic.GetNetworks()
+	if err != nil {
+		return err
+	}
+	for i, _ := range networks {
+		_, err := nodeacls.FetchAllACLs(nodeacls.NetworkID(networks[i].NetID))
+		if err != nil {
+			if database.IsEmptyRecord(err) {
+				nodes, err := logic.GetNetworkNodes(networks[i].NetID)
+				if err != nil {
+					return err
+				}
+				for j, _ := range nodes {
+					_, err = nodeacls.CreateNodeACL(nodeacls.NetworkID(networks[i].NetID), nodeacls.NodeID(nodes[j].ID), acls.Allowed)
+					if err != nil {
+						return err
+					}
+				}
+			}
+		}
+	}
+	return err
+}