| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 | package nodeaclsimport (	"encoding/json"	"fmt"	"github.com/gravitl/netmaker/logic/acls")// AreNodesAllowed - checks if nodes are allowed to communicate in their network ACLfunc AreNodesAllowed(networkID NetworkID, node1, node2 NodeID) bool {	var currentNetworkACL, err = FetchAllACLs(networkID)	if err != nil {		return false	}	return currentNetworkACL[acls.AclID(node1)].IsAllowed(acls.AclID(node2)) && currentNetworkACL[acls.AclID(node2)].IsAllowed(acls.AclID(node1))}// FetchNodeACL - fetches a specific node's ACL in a given networkfunc FetchNodeACL(networkID NetworkID, nodeID NodeID) (acls.ACL, error) {	var currentNetworkACL, err = FetchAllACLs(networkID)	if err != nil {		return nil, err	}	if currentNetworkACL[acls.AclID(nodeID)] == nil {		return nil, fmt.Errorf("no node ACL present for node %s", nodeID)	}	return currentNetworkACL[acls.AclID(nodeID)], nil}// FetchNodeACLJson - fetches a node's acl in given network except returns the json stringfunc FetchNodeACLJson(networkID NetworkID, nodeID NodeID) (acls.ACLJson, error) {	currentNodeACL, err := FetchNodeACL(networkID, nodeID)	if err != nil {		return "", err	}	jsonData, err := json.Marshal(¤tNodeACL)	if err != nil {		return "", err	}	return acls.ACLJson(jsonData), nil}// FetchAllACLs - fetchs all nodefunc FetchAllACLs(networkID NetworkID) (acls.ACLContainer, error) {	var err error	var currentNetworkACL acls.ACLContainer	currentNetworkACL, err = currentNetworkACL.Get(acls.ContainerID(networkID))	if err != nil {		return nil, err	}	return currentNetworkACL, nil}
 |