| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | package logicimport "github.com/gravitl/netmaker/models"// functions defined here, handle client ACLs, should be set on eevar (	// DenyClientNodeAccess - function to handle adding a node to an ext client's denied node set	DenyClientNodeAccess = func(ec *models.ExtClient, clientOrNodeID string) bool { return true }	// IsClientNodeAllowed - function to check if an ext client's denied node set contains a node ID	IsClientNodeAllowed = func(ec *models.ExtClient, clientOrNodeID string) bool { return true }	// AllowClientNodeAccess - function to handle removing a node ID from ext client's denied nodes, thus allowing it	AllowClientNodeAccess = func(ec *models.ExtClient, clientOrNodeID string) bool { return true })// SetClientDefaultACLs - set's a client's default ACLs based on network and nodes in networkfunc SetClientDefaultACLs(ec *models.ExtClient) error {	if !isEE {		return nil	}	networkNodes, err := GetNetworkNodes(ec.Network)	if err != nil {		return err	}	network, err := GetNetwork(ec.Network)	if err != nil {		return err	}	for i := range networkNodes {		currNode := networkNodes[i]		if network.DefaultACL == "no" || currNode.DefaultACL == "no" {			DenyClientNodeAccess(ec, currNode.ID.String())		}	}	return nil}// SetClientACLs - overwrites an ext client's ACLfunc SetClientACLs(ec *models.ExtClient, newACLs map[string]struct{}) {	if ec == nil || newACLs == nil || !isEE {		return	}	ec.ACLs = newACLs}// IsClientNodeAllowedByID - checks if a given ext client ID + nodeID are allowedfunc IsClientNodeAllowedByID(clientID, networkName, clientOrNodeID string) bool {	client, err := GetExtClient(clientID, networkName)	if err != nil {		return false	}	return IsClientNodeAllowed(&client, clientOrNodeID)}
 |