| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 | 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], false)		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 {		if network.SetDefaults() {			logic.SaveNetwork(&network)		}	}	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}
 |