allow.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package acl
  2. import (
  3. "fmt"
  4. "log"
  5. "github.com/gravitl/netmaker/cli/functions"
  6. "github.com/gravitl/netmaker/logic/acls"
  7. "github.com/spf13/cobra"
  8. )
  9. var aclAllowCmd = &cobra.Command{
  10. Use: "allow [NETWORK NAME] [NODE_1_ID] [NODE_2_ID]",
  11. Args: cobra.ExactArgs(3),
  12. Short: "Allow access from one node to another",
  13. Long: `Allow access from one node to another`,
  14. Run: func(cmd *cobra.Command, args []string) {
  15. network := args[0]
  16. fromNodeID := args[1]
  17. toNodeID := args[2]
  18. if fromNodeID == toNodeID {
  19. log.Fatal("Cannot allow access from a node to itself")
  20. }
  21. // get current acls
  22. res := functions.GetACL(network)
  23. if res == nil {
  24. log.Fatalf("Could not load network ACLs")
  25. }
  26. payload := *res
  27. if _, ok := payload[acls.AclID(fromNodeID)]; !ok {
  28. log.Fatalf("Node %s does not exist", fromNodeID)
  29. }
  30. if _, ok := payload[acls.AclID(toNodeID)]; !ok {
  31. log.Fatalf("Node %s does not exist", toNodeID)
  32. }
  33. // update acls
  34. payload[acls.AclID(fromNodeID)][acls.AclID(toNodeID)] = acls.Allowed
  35. payload[acls.AclID(toNodeID)][acls.AclID(fromNodeID)] = acls.Allowed
  36. functions.UpdateACL(network, &payload)
  37. fmt.Println("Success")
  38. },
  39. }
  40. func init() {
  41. rootCmd.AddCommand(aclAllowCmd)
  42. }