serverctl.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package serverctl
  2. import (
  3. "fmt"
  4. "github.com/gravitl/netmaker/functions"
  5. "io"
  6. "net/http"
  7. "os"
  8. "os/exec"
  9. )
  10. func DownloadNetclient() error {
  11. // Get the data
  12. resp, err := http.Get("https://github.com/gravitl/netmaker/releases/download/develop/netclient")
  13. if err != nil {
  14. return err
  15. }
  16. defer resp.Body.Close()
  17. // Create the file
  18. out, err := os.Create("/etc/netclient/netclient")
  19. if err != nil {
  20. return err
  21. }
  22. defer out.Close()
  23. // Write the body to file
  24. _, err = io.Copy(out, resp.Body)
  25. return err
  26. }
  27. func RemoveNetwork(network string) (bool, error) {
  28. _, err := os.Stat("/etc/netclient/netclient")
  29. if err != nil {
  30. return false, err
  31. }
  32. cmdoutput, err := exec.Command("/etc/netclient/netclient","-c","remove","-n",network).Output()
  33. if err != nil {
  34. fmt.Println(string(cmdoutput))
  35. return false, err
  36. }
  37. fmt.Println("Server removed from network " + network)
  38. return true, err
  39. }
  40. func AddNetwork(network string) (bool, error) {
  41. _, err := os.Stat("/etc/netclient")
  42. if os.IsNotExist(err) {
  43. os.Mkdir("/etc/netclient", 744)
  44. } else if err != nil {
  45. fmt.Println("couldnt find or create /etc/netclient")
  46. return false, err
  47. }
  48. token, err := functions.CreateServerToken(network)
  49. if err != nil {
  50. return false, err
  51. }
  52. _, err = os.Stat("/etc/netclient/netclient")
  53. if os.IsNotExist(err) {
  54. err = DownloadNetclient()
  55. if err != nil {
  56. return false, err
  57. }
  58. }
  59. err = os.Chmod("/etc/netclient/netclient", 0755)
  60. if err != nil {
  61. return false, err
  62. }
  63. cmdoutput, err := exec.Command("/etc/netclient/netclient","-c","install","-t",token,"-name","netmaker").Output()
  64. if err != nil {
  65. fmt.Println(string(cmdoutput))
  66. return false, err
  67. }
  68. fmt.Println("Server added to network " + network)
  69. return true, err
  70. }