ext_acls.go 993 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package logic
  2. import "github.com/gravitl/netmaker/models"
  3. // DenyClientNode - add a denied node to an ext client's list
  4. func DenyClientNode(ec *models.ExtClient, clientOrNodeID string) (ok bool) {
  5. if ec == nil || len(clientOrNodeID) == 0 {
  6. return
  7. }
  8. if ec.ACLs == nil {
  9. ec.ACLs = map[string]struct{}{}
  10. }
  11. ok = true
  12. ec.ACLs[clientOrNodeID] = struct{}{}
  13. return
  14. }
  15. // IsClientNodeAllowed - checks if given ext client and node are allowed to communicate
  16. func IsClientNodeAllowed(ec *models.ExtClient, clientOrNodeID string) bool {
  17. if ec == nil || len(clientOrNodeID) == 0 {
  18. return false
  19. }
  20. if ec.ACLs == nil {
  21. return true
  22. }
  23. _, ok := ec.ACLs[clientOrNodeID]
  24. return ok
  25. }
  26. // RemoveDeniedNodeFromClient - removes a node id from set of denied nodes
  27. func RemoveDeniedNodeFromClient(ec *models.ExtClient, clientOrNodeID string) bool {
  28. if ec.ACLs == nil {
  29. return true
  30. }
  31. _, ok := ec.ACLs[clientOrNodeID]
  32. if !ok {
  33. return false
  34. }
  35. delete(ec.ACLs, clientOrNodeID)
  36. return true
  37. }