Browse Source

Fixed path issue for install. Added sudo check for binary

afeiszli 4 years ago
parent
commit
b790730825
2 changed files with 31 additions and 3 deletions
  1. 11 3
      netclient/functions/local.go
  2. 20 0
      netclient/main.go

+ 11 - 3
netclient/functions/local.go

@@ -4,6 +4,7 @@ import (
         //"github.com/davecgh/go-spew/spew"
         "fmt"
         "io/ioutil"
+	"path/filepath"
         "io"
         "log"
         "os"
@@ -11,16 +12,23 @@ import (
 )
 
 func ConfigureSystemD() error {
-
+	/*
 	path, err := os.Getwd()
 	if err != nil {
 		log.Println(err)
 		return err
 	}
+	*/
+	//binarypath := path  + "/netclient"
+	dir, err := filepath.Abs(filepath.Dir(os.Args[0]))
+	if err != nil {
+            return err
+	}
+	binarypath := dir  + "/netclient"
 
-	binarypath := path  + "/netclient"
+	fmt.Println("Installing Binary from Path: " + binarypath)
 
-        _, err = os.Stat("/etc/netclient")
+	_, err = os.Stat("/etc/netclient")
         if os.IsNotExist(err) {
                 os.Mkdir("/etc/netclient", 744)
         } else if err != nil {

+ 20 - 0
netclient/main.go

@@ -7,6 +7,8 @@ import (
         nodepb "github.com/gravitl/netmaker/grpc"
 	"flag"
 	"os"
+        "os/exec"
+        "strconv"
 	"log"
 )
 
@@ -41,6 +43,24 @@ func main() {
         flag.Parse()
 
 
+
+         getID := exec.Command("id", "-u")
+         out, err := getID.Output()
+
+         if err != nil {
+                 log.Fatal(err)
+         }
+         id, err := strconv.Atoi(string(out[:len(out)-1]))
+
+         if err != nil {
+                 log.Fatal(err)
+         }
+
+         if id != 0 {
+                 log.Fatal("This program must be run with elevated privileges (sudo). This program installs a SystemD service and configures WireGuard and networking rules. Please re-run with sudo/root.")
+         }
+
+
         switch *command {
 		case "required":
                         fmt.Println("command flag 'c' is required. Pick one of |install|checkin|update|remove|")