serverctl.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package serverctl
  2. import (
  3. "errors"
  4. "net"
  5. "os"
  6. "strings"
  7. "github.com/gravitl/netmaker/logger"
  8. "github.com/gravitl/netmaker/logic"
  9. "github.com/gravitl/netmaker/netclient/ncutils"
  10. )
  11. const NETMAKER_BINARY_NAME = "netmaker"
  12. // InitServerNetclient - intializes the server netclient
  13. func InitServerNetclient() error {
  14. netclientDir := ncutils.GetNetclientPath()
  15. _, err := os.Stat(netclientDir + "/config")
  16. if os.IsNotExist(err) {
  17. os.MkdirAll(netclientDir+"/config", 0744)
  18. } else if err != nil {
  19. logger.Log(1, "could not find or create", netclientDir)
  20. return err
  21. }
  22. return nil
  23. }
  24. // SyncServerNetwork - ensures a wg interface and node exists for server
  25. func SyncServerNetwork(network string) error {
  26. serverNetworkSettings, err := logic.GetNetwork(network)
  27. if err != nil {
  28. return err
  29. }
  30. localnets, err := net.Interfaces()
  31. if err != nil {
  32. return err
  33. }
  34. exists := false
  35. for _, localnet := range localnets {
  36. if serverNetworkSettings.DefaultInterface == localnet.Name {
  37. exists = true
  38. }
  39. }
  40. // add networks locally that exist in database
  41. if !exists {
  42. err := logic.ServerJoin(&serverNetworkSettings)
  43. if err != nil {
  44. if err == nil {
  45. err = errors.New("network add failed for " + serverNetworkSettings.NetID)
  46. }
  47. if !strings.Contains(err.Error(), "macaddress_unique") { // ignore macaddress unique error throws
  48. logger.Log(1, "error adding network", serverNetworkSettings.NetID, "during sync:", err.Error())
  49. }
  50. }
  51. }
  52. // remove networks locally that do not exist in database
  53. /*
  54. for _, localnet := range localnets {
  55. if strings.Contains(localnet.Name, "nm-") {
  56. var exists = ""
  57. if serverNetworkSettings.DefaultInterface == localnet.Name {
  58. exists = serverNetworkSettings.NetID
  59. }
  60. if exists == "" {
  61. err := logic.DeleteNodeByID(serverNode, true)
  62. if err != nil {
  63. if err == nil {
  64. err = errors.New("network delete failed for " + exists)
  65. }
  66. logger.Log(1, "error removing network", exists, "during sync", err.Error())
  67. }
  68. }
  69. }
  70. }
  71. */
  72. return nil
  73. }