|
@@ -0,0 +1,75 @@
|
|
|
+package serverctl
|
|
|
+
|
|
|
+import (
|
|
|
+ "fmt"
|
|
|
+ "io/ioutil"
|
|
|
+ "log"
|
|
|
+ "os"
|
|
|
+ "os/exec"
|
|
|
+)
|
|
|
+
|
|
|
+
|
|
|
+func fileExists(f string) bool {
|
|
|
+ info, err := os.Stat(f)
|
|
|
+ if os.IsNotExist(err) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ notisdir := !info.IsDir()
|
|
|
+ return notisdir
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func installScript() error {
|
|
|
+
|
|
|
+
|
|
|
+ installScript := `#!/bin/sh
|
|
|
+set -e
|
|
|
+
|
|
|
+[ -z "$SERVER_URL" ] && echo "Need to set SERVER_URL" && exit 1;
|
|
|
+[ -z "$NET_NAME" ] && echo "Need to set NET_NAME" && exit 1;
|
|
|
+[ -z "$KEY" ] && KEY=nokey;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+wget -O netclient https://github.com/gravitl/netmaker/releases/download/develop/netclient
|
|
|
+chmod +x netclient
|
|
|
+sudo ./netclient -c install -s $SERVER_URL -g $NET_NAME -k $KEY
|
|
|
+rm -f netclient
|
|
|
+`
|
|
|
+
|
|
|
+ installbytes := []byte(installScript)
|
|
|
+
|
|
|
+ err := ioutil.WriteFile("/etc/netclient/netclient-install.sh", installbytes, 0755)
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+func NetworkAdd(network string) error {
|
|
|
+ _, err := os.Stat("/etc/netclient")
|
|
|
+ if os.IsNotExist(err) {
|
|
|
+ os.Mkdir("/etc/netclient", 744)
|
|
|
+ } else if err != nil {
|
|
|
+ fmt.Println("couldnt find or create /etc/netclient")
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ if !fileExists("/etc/netclient/netclient-install.sh") {
|
|
|
+ err = installScript()
|
|
|
+ if err != nil {
|
|
|
+ log.Println(err)
|
|
|
+ return err
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ cmdoutput, err := exec.Command("/bin/sh", "/etc/netclient/netclient-install.sh").Output()
|
|
|
+ if err != nil {
|
|
|
+ fmt.Printf("Error installing netclient: %s", err)
|
|
|
+ }
|
|
|
+ fmt.Println(cmdoutput)
|
|
|
+ return err
|
|
|
+}
|
|
|
+
|
|
|
+
|