| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 | package serverctlimport (	"strings"	"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"	"golang.org/x/exp/slog")const (	// NETMAKER_BINARY_NAME - name of netmaker binary	NETMAKER_BINARY_NAME = "netmaker")func SetDefaults() error {	if err := setNodeDefaults(); err != nil {		return err	}	if err := setNetworkDefaults(); err != nil {		return err	}	if err := setUserDefaults(); err != nil {		return err	}	return nil}// setNodeDefaults - runs through each node and set defaultsfunc setNodeDefaults() error {	// upgraded systems will not have ACL's set, which is why we need this function	nodes, err := logic.GetAllNodes()	if err != nil {		return err	}	for i := range nodes {		logic.SetNodeDefaults(&nodes[i])		logic.UpdateNode(&nodes[i], &nodes[i])		currentNodeACL, err := nodeacls.FetchNodeACL(nodeacls.NetworkID(nodes[i].Network), nodeacls.NodeID(nodes[i].ID.String()))		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.String()), acls.Allowed); err != nil {				logger.Log(1, "could not create a default ACL for node", nodes[i].ID.String())			}		}	}	return nil}func setNetworkDefaults() error {	// upgraded systems will not have NetworkUsers's set, which is why we need this function	networks, err := logic.GetNetworks()	if err != nil && !database.IsEmptyRecord(err) {		return err	}	for _, network := range networks {		update := false		newNet := network		if strings.Contains(network.NetID, ".") {			newNet.NetID = strings.ReplaceAll(network.NetID, ".", "")			newNet.DefaultInterface = strings.ReplaceAll(network.DefaultInterface, ".", "")			update = true		}		if strings.ContainsAny(network.NetID, "ABCDEFGHIJKLMNOPQRSTUVWXYZ") {			newNet.NetID = strings.ToLower(network.NetID)			newNet.DefaultInterface = strings.ToLower(network.DefaultInterface)			update = true		}		if update {			newNet.SetDefaults()			if err := logic.SaveNetwork(&newNet); err != nil {				logger.Log(0, "error saving networks during initial update:", err.Error())			}			if err := logic.DeleteNetwork(network.NetID); err != nil {				logger.Log(0, "error deleting old network:", err.Error())			}		} else {			network.SetDefaults()			_, _, _, err = logic.UpdateNetwork(&network, &network)			if err != nil {				logger.Log(0, "could not set defaults on network", network.NetID)			}		}	}	return nil}func setUserDefaults() error {	users, err := logic.GetUsers()	if err != nil && !database.IsEmptyRecord(err) {		return err	}	for _, user := range users {		updateUser, err := logic.GetUser(user.UserName)		if err != nil {			slog.Error("could not get user", "user", updateUser.UserName, "error", err.Error())		}		logic.SetUserDefaults(updateUser)		err = logic.UpsertUser(*updateUser)		if err != nil {			slog.Error("could not update user", "user", updateUser.UserName, "error", err.Error())		}	}	return nil}
 |