serverctl.go 2.5 KB

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