diff --git a/netclient/functions/local.go b/netclient/functions/local.go index 4c6fe8c6..b5ee2636 100644 --- a/netclient/functions/local.go +++ b/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 { diff --git a/netclient/main.go b/netclient/main.go index b6be3432..dbfe8ea7 100644 --- a/netclient/main.go +++ b/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|")