serverctl.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package serverctl
  2. import (
  3. "fmt"
  4. "io/ioutil"
  5. "log"
  6. "os"
  7. "os/exec"
  8. )
  9. func fileExists(f string) bool {
  10. info, err := os.Stat(f)
  11. if os.IsNotExist(err) {
  12. return false
  13. }
  14. notisdir := !info.IsDir()
  15. return notisdir
  16. }
  17. func installScript() error {
  18. installScript := `#!/bin/sh
  19. set -e
  20. [ -z "$SERVER_URL" ] && echo "Need to set SERVER_URL" && exit 1;
  21. [ -z "$NET_NAME" ] && echo "Need to set NET_NAME" && exit 1;
  22. [ -z "$KEY" ] && KEY=nokey;
  23. wget -O netclient https://github.com/gravitl/netmaker/releases/download/develop/netclient
  24. chmod +x netclient
  25. sudo ./netclient -c install -s $SERVER_URL -g $NET_NAME -k $KEY
  26. rm -f netclient
  27. `
  28. installbytes := []byte(installScript)
  29. err := ioutil.WriteFile("/etc/netclient/netclient-install.sh", installbytes, 0755)
  30. if err != nil {
  31. log.Println(err)
  32. return err
  33. }
  34. return err
  35. }
  36. func NetworkAdd(network string) error {
  37. _, err := os.Stat("/etc/netclient")
  38. if os.IsNotExist(err) {
  39. os.Mkdir("/etc/netclient", 744)
  40. } else if err != nil {
  41. fmt.Println("couldnt find or create /etc/netclient")
  42. return err
  43. }
  44. if !fileExists("/etc/netclient/netclient-install.sh") {
  45. err = installScript()
  46. if err != nil {
  47. log.Println(err)
  48. return err
  49. }
  50. }
  51. cmdoutput, err := exec.Command("/bin/sh", "/etc/netclient/netclient-install.sh").Output()
  52. if err != nil {
  53. fmt.Printf("Error installing netclient: %s", err)
  54. }
  55. fmt.Println(cmdoutput)
  56. return err
  57. }