Bladeren bron

putting acl check before server pull

afeiszli 3 jaren geleden
bovenliggende
commit
fdfbde118e
2 gewijzigde bestanden met toevoegingen van 12 en 23 verwijderingen
  1. 5 6
      main.go
  2. 7 17
      serverctl/serverctl.go

+ 5 - 6
main.go

@@ -66,6 +66,11 @@ func initialize() { // Client Mode Prereq Check
 		logger.Log(0, "no OAuth provider found or not configured, continuing without OAuth")
 	}
 
+	err = serverctl.SetDefaultACLS()
+	if err != nil {
+		logger.FatalLog("error setting default acls: ", err.Error())
+	}
+
 	if servercfg.IsClientMode() != "off" {
 		output, err := ncutils.RunCmd("id -u", true)
 		if err != nil {
@@ -85,12 +90,6 @@ 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 {

+ 7 - 17
serverctl/serverctl.go

@@ -150,27 +150,17 @@ func SyncServerNetwork(network string) error {
 // 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()
+	nodes, err := logic.GetAllNodes()
 	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
-					}
-				}
+	for i := range nodes {
+		currentNodeACL, err := nodeacls.FetchNodeACL(nodeacls.NetworkID(nodes[i].Network), nodeacls.NodeID(nodes[i].ID))
+		if (err != nil && (database.IsEmptyRecord(err) || strings.Contains(err.Error(), "no node ACL present"))) || currentNodeACL == nil {
+			if _, err = nodeacls.CreateNodeACL(nodeacls.NetworkID(nodes[i].Network), nodeacls.NodeID(nodes[i].ID), acls.Allowed); err != nil {
+				logger.Log(1, "could not create a default ACL for node", nodes[i].ID)
 			}
 		}
 	}
-	return err
+	return nil
 }