1234567891011121314151617181920212223242526272829303132333435 |
- package proacls
- import (
- "github.com/gravitl/netmaker/logic/acls"
- "github.com/gravitl/netmaker/logic/acls/nodeacls"
- "github.com/gravitl/netmaker/models"
- )
- // AdjustNodeAcls - adjusts ACLs based on a node's default value
- func AdjustNodeAcls(node *models.Node, networkNodes []models.Node) error {
- networkID := nodeacls.NetworkID(node.Network)
- nodeID := nodeacls.NodeID(node.ID.String())
- currentACLs, err := nodeacls.FetchAllACLs(networkID)
- if err != nil {
- return err
- }
- for i := range networkNodes {
- currentNodeID := nodeacls.NodeID(networkNodes[i].ID.String())
- if currentNodeID == nodeID {
- continue
- }
- // 2 cases
- // both allow - allow
- // either 1 denies - deny
- if node.DoesACLDeny() || networkNodes[i].DoesACLDeny() {
- currentACLs.ChangeAccess(acls.AclID(nodeID), acls.AclID(currentNodeID), acls.NotAllowed)
- } else if node.DoesACLAllow() || networkNodes[i].DoesACLAllow() {
- currentACLs.ChangeAccess(acls.AclID(nodeID), acls.AclID(currentNodeID), acls.Allowed)
- }
- }
- _, err = currentACLs.Save(acls.ContainerID(node.Network))
- return err
- }
|