serverctl.go 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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/latest/netclient")
  13. if err != nil {
  14. fmt.Println("could not download netclient")
  15. return err
  16. }
  17. defer resp.Body.Close()
  18. // Create the file
  19. out, err := os.Create("/etc/netclient/netclient")
  20. if err != nil {
  21. fmt.Println("could not create /etc/netclient")
  22. return err
  23. }
  24. defer out.Close()
  25. // Write the body to file
  26. _, err = io.Copy(out, resp.Body)
  27. return err
  28. }
  29. func RemoveNetwork(network string) (bool, error) {
  30. _, err := os.Stat("/etc/netclient/netclient")
  31. if err != nil {
  32. fmt.Println("could not find /etc/netclient")
  33. return false, err
  34. }
  35. cmdoutput, err := exec.Command("/etc/netclient/netclient","-c","remove","-n",network).Output()
  36. if err != nil {
  37. fmt.Println(string(cmdoutput))
  38. return false, err
  39. }
  40. fmt.Println("Server removed from network " + network)
  41. return true, err
  42. }
  43. func AddNetwork(network string) (bool, error) {
  44. _, err := os.Stat("/etc/netclient")
  45. if os.IsNotExist(err) {
  46. os.Mkdir("/etc/netclient", 744)
  47. } else if err != nil {
  48. fmt.Println("could not find or create /etc/netclient")
  49. return false, err
  50. }
  51. token, err := functions.CreateServerToken(network)
  52. if err != nil {
  53. fmt.Println("could not create server token for " + network)
  54. return false, err
  55. }
  56. _, err = os.Stat("/etc/netclient/netclient")
  57. if os.IsNotExist(err) {
  58. err = DownloadNetclient()
  59. fmt.Println("could not download netclient")
  60. if err != nil {
  61. return false, err
  62. }
  63. }
  64. err = os.Chmod("/etc/netclient/netclient", 0755)
  65. if err != nil {
  66. fmt.Println("could not change netclient directory permissions")
  67. return false, err
  68. }
  69. cmdoutput, err := exec.Command("/etc/netclient/netclient","-c","install","-t",token,"-name","netmaker").Output()
  70. if err != nil {
  71. fmt.Println(string(cmdoutput))
  72. return false, err
  73. }
  74. fmt.Println(string(cmdoutput))
  75. fmt.Println("Server added to network " + network)
  76. return true, err
  77. }