Browse Source

install command

Matthew R. Kasun 3 years ago
parent
commit
0410e1d4fb

+ 9 - 0
netclient/cli_options/cmds.go

@@ -95,6 +95,15 @@ func GetCommands(cliFlags []cli.Flag) []*cli.Command {
 				return err
 				return err
 			},
 			},
 		},
 		},
+		{
+			Name:  "install",
+			Usage: "install binary and daemon",
+			Flags: cliFlags,
+			Action: func(c *cli.Context) error {
+				parseVerbosity(c)
+				return command.Install()
+			},
+		},
 	}
 	}
 }
 }
 
 

+ 5 - 0
netclient/command/commands.go

@@ -137,3 +137,8 @@ func Daemon() error {
 	err := functions.Daemon()
 	err := functions.Daemon()
 	return err
 	return err
 }
 }
+
+// Install - installs binary and daemon
+func Install() error {
+	return functions.Install()
+}

+ 1 - 3
netclient/daemon/common.go

@@ -4,12 +4,10 @@ import (
 	"errors"
 	"errors"
 	"runtime"
 	"runtime"
 	"time"
 	"time"
-
-	"github.com/gravitl/netmaker/netclient/config"
 )
 )
 
 
 // InstallDaemon - Calls the correct function to install the netclient as a daemon service on the given operating system.
 // InstallDaemon - Calls the correct function to install the netclient as a daemon service on the given operating system.
-func InstallDaemon(cfg *config.ClientConfig) error {
+func InstallDaemon() error {
 	os := runtime.GOOS
 	os := runtime.GOOS
 	var err error
 	var err error
 
 

+ 7 - 7
netclient/daemon/freebsd.go

@@ -23,13 +23,13 @@ func SetupFreebsdDaemon() error {
 		return err
 		return err
 	}
 	}
 	//install binary
 	//install binary
-	//should check if the existing binary is the corect version -- for now only copy if file doesn't exist
-	if !ncutils.FileExists(EXEC_DIR + "netclient") {
-		err = ncutils.Copy(binarypath, EXEC_DIR+"netclient")
-		if err != nil {
-			log.Println(err)
-			return err
-		}
+	if ncutils.FileExists(EXEC_DIR + "netclient") {
+		logger.Log(0, "updating netclient binary in ", EXEC_DIR)
+	}
+	err = ncutils.Copy(binarypath, EXEC_DIR+"netclient")
+	if err != nil {
+		log.Println(err)
+		return err
 	}
 	}
 
 
 	rcFile := `#!/bin/sh
 	rcFile := `#!/bin/sh

+ 7 - 6
netclient/daemon/macos.go

@@ -20,12 +20,13 @@ func SetupMacDaemon() error {
 		return err
 		return err
 	}
 	}
 
 
-	if !ncutils.FileExists(MAC_EXEC_DIR + "netclient") {
-		err = ncutils.Copy(binarypath, MAC_EXEC_DIR+"netclient")
-		if err != nil {
-			log.Println(err)
-			return err
-		}
+	if ncutils.FileExists(MAC_EXEC_DIR + "netclient") {
+		logger.Log(0, "updating netclient binary in", MAC_EXEC_DIR)
+	}
+	err = ncutils.Copy(binarypath, MAC_EXEC_DIR+"netclient")
+	if err != nil {
+		log.Println(err)
+		return err
 	}
 	}
 
 
 	_, errN := os.Stat("~/Library/LaunchAgents")
 	_, errN := os.Stat("~/Library/LaunchAgents")

+ 7 - 7
netclient/daemon/systemd.go

@@ -33,13 +33,13 @@ func SetupSystemDDaemon() error {
 		return err
 		return err
 	}
 	}
 	//install binary
 	//install binary
-	//should check if the existing binary is the corect version -- for now only copy if file doesn't exist
-	if !ncutils.FileExists(EXEC_DIR + "netclient") {
-		err = ncutils.Copy(binarypath, EXEC_DIR+"netclient")
-		if err != nil {
-			log.Println(err)
-			return err
-		}
+	if ncutils.FileExists(EXEC_DIR + "netclient") {
+		logger.Log(0, "updating netclient binary in", EXEC_DIR)
+	}
+	err = ncutils.Copy(binarypath, EXEC_DIR+"netclient")
+	if err != nil {
+		log.Println(err)
+		return err
 	}
 	}
 
 
 	systemservice := `[Unit]
 	systemservice := `[Unit]

+ 12 - 11
netclient/daemon/windows.go

@@ -14,20 +14,21 @@ import (
 // SetupWindowsDaemon - sets up the Windows daemon service
 // SetupWindowsDaemon - sets up the Windows daemon service
 func SetupWindowsDaemon() error {
 func SetupWindowsDaemon() error {
 
 
-	if !ncutils.FileExists(ncutils.GetNetclientPathSpecific() + "winsw.xml") {
-		if err := writeServiceConfig(); err != nil {
-			return err
-		}
+	if ncutils.FileExists(ncutils.GetNetclientPathSpecific() + "winsw.xml") {
+		logger.Log(0, "updating netclient service")
+	}
+	if err := writeServiceConfig(); err != nil {
+		return err
 	}
 	}
 
 
-	if !ncutils.FileExists(ncutils.GetNetclientPathSpecific() + "winsw.exe") {
-		logger.Log(0, "performing first time daemon setup")
-		err := ncutils.GetEmbedded()
-		if err != nil {
-			return err
-		}
-		logger.Log(0, "finished daemon setup")
+	if ncutils.FileExists(ncutils.GetNetclientPathSpecific() + "winsw.exe") {
+		logger.Log(0, "updating netclient binary")
+	}
+	err := ncutils.GetEmbedded()
+	if err != nil {
+		return err
 	}
 	}
+	logger.Log(0, "finished daemon setup")
 	//get exact formatted commands
 	//get exact formatted commands
 	RunWinSWCMD("install")
 	RunWinSWCMD("install")
 	time.Sleep(time.Millisecond)
 	time.Sleep(time.Millisecond)

+ 16 - 0
netclient/functions/install.go

@@ -0,0 +1,16 @@
+package functions
+
+import (
+	"github.com/gravitl/netmaker/logger"
+	"github.com/gravitl/netmaker/netclient/daemon"
+)
+
+//Install - installs binary/daemon
+func Install() error {
+	daemon.Stop()
+	if err := daemon.InstallDaemon(); err != nil {
+		logger.Log(0, "error installing daemon", err.Error())
+		return err
+	}
+	return daemon.Restart()
+}

+ 2 - 2
netclient/functions/join.go

@@ -166,7 +166,7 @@ func JoinNetwork(cfg *config.ClientConfig, privateKey string) error {
 		logger.Log(0, "Node is marked as PENDING.")
 		logger.Log(0, "Node is marked as PENDING.")
 		logger.Log(0, "Awaiting approval from Admin before configuring WireGuard.")
 		logger.Log(0, "Awaiting approval from Admin before configuring WireGuard.")
 		if cfg.Daemon != "off" {
 		if cfg.Daemon != "off" {
-			return daemon.InstallDaemon(cfg)
+			return daemon.InstallDaemon()
 		}
 		}
 	}
 	}
 	logger.Log(1, "node created on remote server...updating configs")
 	logger.Log(1, "node created on remote server...updating configs")
@@ -200,7 +200,7 @@ func JoinNetwork(cfg *config.ClientConfig, privateKey string) error {
 	}
 	}
 
 
 	if cfg.Daemon == "install" || ncutils.IsFreeBSD() {
 	if cfg.Daemon == "install" || ncutils.IsFreeBSD() {
-		err = daemon.InstallDaemon(cfg)
+		err = daemon.InstallDaemon()
 		if err != nil {
 		if err != nil {
 			return err
 			return err
 		}
 		}