serverctl.go 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package serverctl
  2. import (
  3. "strings"
  4. "github.com/gravitl/netmaker/database"
  5. "github.com/gravitl/netmaker/logger"
  6. "github.com/gravitl/netmaker/logic"
  7. "github.com/gravitl/netmaker/logic/acls"
  8. "github.com/gravitl/netmaker/logic/acls/nodeacls"
  9. "golang.org/x/exp/slog"
  10. )
  11. const (
  12. // NETMAKER_BINARY_NAME - name of netmaker binary
  13. NETMAKER_BINARY_NAME = "netmaker"
  14. )
  15. func SetDefaults() error {
  16. if err := setNodeDefaults(); err != nil {
  17. return err
  18. }
  19. if err := setNetworkDefaults(); err != nil {
  20. return err
  21. }
  22. if err := setUserDefaults(); err != nil {
  23. return err
  24. }
  25. return nil
  26. }
  27. // setNodeDefaults - runs through each node and set defaults
  28. func setNodeDefaults() error {
  29. // upgraded systems will not have ACL's set, which is why we need this function
  30. nodes, err := logic.GetAllNodes()
  31. if err != nil {
  32. return err
  33. }
  34. for i := range nodes {
  35. logic.SetNodeDefaults(&nodes[i], false)
  36. logic.UpdateNode(&nodes[i], &nodes[i])
  37. currentNodeACL, err := nodeacls.FetchNodeACL(nodeacls.NetworkID(nodes[i].Network), nodeacls.NodeID(nodes[i].ID.String()))
  38. if (err != nil && (database.IsEmptyRecord(err) || strings.Contains(err.Error(), "no node ACL present"))) || currentNodeACL == nil {
  39. if _, err = nodeacls.CreateNodeACL(nodeacls.NetworkID(nodes[i].Network), nodeacls.NodeID(nodes[i].ID.String()), acls.Allowed); err != nil {
  40. logger.Log(1, "could not create a default ACL for node", nodes[i].ID.String())
  41. }
  42. }
  43. }
  44. return nil
  45. }
  46. func setNetworkDefaults() error {
  47. // upgraded systems will not have NetworkUsers's set, which is why we need this function
  48. networks, err := logic.GetNetworks()
  49. if err != nil && !database.IsEmptyRecord(err) {
  50. return err
  51. }
  52. for _, network := range networks {
  53. if network.SetDefaults() {
  54. logic.SaveNetwork(&network)
  55. }
  56. }
  57. return nil
  58. }
  59. func setUserDefaults() error {
  60. users, err := logic.GetUsers()
  61. if err != nil && !database.IsEmptyRecord(err) {
  62. return err
  63. }
  64. for _, user := range users {
  65. updateUser, err := logic.GetUser(user.UserName)
  66. if err != nil {
  67. slog.Error("could not get user", "user", updateUser.UserName, "error", err.Error())
  68. }
  69. logic.SetUserDefaults(updateUser)
  70. err = logic.UpsertUser(*updateUser)
  71. if err != nil {
  72. slog.Error("could not update user", "user", updateUser.UserName, "error", err.Error())
  73. }
  74. }
  75. return nil
  76. }