connection.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package functions
  2. import (
  3. "fmt"
  4. "github.com/gravitl/netmaker/netclient/config"
  5. "github.com/gravitl/netmaker/netclient/daemon"
  6. "github.com/gravitl/netmaker/netclient/ncutils"
  7. "github.com/gravitl/netmaker/netclient/wireguard"
  8. )
  9. // Connect - will attempt to connect a node on given network
  10. func Connect(network string) error {
  11. cfg, err := config.ReadConfig(network)
  12. if err != nil {
  13. return err
  14. }
  15. if cfg.Node.Connected == "yes" {
  16. return fmt.Errorf("node already connected")
  17. }
  18. cfg.Node.Connected = "yes"
  19. filePath := ncutils.GetNetclientPathSpecific() + cfg.Node.Interface + ".conf"
  20. if err = wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, filePath); err != nil {
  21. return err
  22. }
  23. if err := setupMQTTSingleton(cfg); err != nil {
  24. return err
  25. }
  26. if err := PublishNodeUpdate(cfg); err != nil {
  27. return err
  28. }
  29. daemon.Restart()
  30. return nil
  31. }
  32. // Disconnect - attempts to disconnect a node on given network
  33. func Disconnect(network string) error {
  34. cfg, err := config.ReadConfig(network)
  35. if err != nil {
  36. return err
  37. }
  38. if cfg.Node.Connected == "no" {
  39. return fmt.Errorf("node already disconnected")
  40. }
  41. cfg.Node.Connected = "no"
  42. filePath := ncutils.GetNetclientPathSpecific() + cfg.Node.Interface + ".conf"
  43. if err = wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, filePath); err != nil {
  44. return err
  45. }
  46. if err := setupMQTTSingleton(cfg); err != nil {
  47. return err
  48. }
  49. if err := PublishNodeUpdate(cfg); err != nil {
  50. return err
  51. }
  52. daemon.Restart()
  53. return nil
  54. }