Browse Source

updated logic for join/leave network

Matthew R. Kasun 3 years ago
parent
commit
30629ae6bc

+ 19 - 0
netclient/daemon/common.go

@@ -50,6 +50,25 @@ func Restart() error {
 	return nil
 }
 
+// Start - starts system daemon
+func Start() error {
+	os := runtime.GOOS
+	var err error
+	switch os {
+	case "windows":
+		RestartWindowsDaemon()
+	case "darwin":
+		RestartLaunchD()
+	case "linux":
+		RestartSystemD()
+	case "freebsd":
+		FreebsdDaemon("restart")
+	default:
+		err = errors.New("this os is not yet supported for daemon mode. Run join cmd with flag '--daemon off'")
+	}
+	return err
+}
+
 // Stop - stops a system daemon
 func Stop() error {
 	os := runtime.GOOS

+ 1 - 0
netclient/daemon/freebsd.go

@@ -108,6 +108,7 @@ func FreebsdDaemon(command string) {
 
 // CleanupFreebsd - removes config files and netclient binary
 func CleanupFreebsd() {
+	RemoveFreebsdDaemon()
 	if err := os.RemoveAll(ncutils.GetNetclientPath()); err != nil {
 		logger.Log(1, "Removing netclient configs: ", err.Error())
 	}

+ 1 - 0
netclient/daemon/systemd.go

@@ -83,6 +83,7 @@ func RestartSystemD() {
 
 // CleanupLinux - cleans up neclient configs
 func CleanupLinux() {
+	RemoveSystemDServices()
 	if err := os.RemoveAll(ncutils.GetNetclientPath()); err != nil {
 		logger.Log(1, "Removing netclient configs: ", err.Error())
 	}

+ 1 - 22
netclient/functions/common.go

@@ -139,6 +139,7 @@ func Uninstall() error {
 		}
 	}
 	err = nil
+
 	// clean up OS specific stuff
 	if ncutils.IsWindows() {
 		daemon.CleanupWindows()
@@ -213,31 +214,9 @@ func LeaveNetwork(network string) error {
 		logger.Log(1, "removed ", node.Network, " network locally")
 	}
 
-	currentNets, err := ncutils.GetSystemNetworks()
-	if err != nil || len(currentNets) <= 1 {
-		daemon.Stop() // stop system daemon if last network
-		return RemoveLocalInstance(cfg, network)
-	}
 	return daemon.Restart()
 }
 
-// RemoveLocalInstance - remove all netclient files locally for a network
-func RemoveLocalInstance(cfg *config.ClientConfig, networkName string) error {
-
-	if cfg.Daemon != "off" {
-		if ncutils.IsWindows() {
-			// TODO: Remove job?
-		} else if ncutils.IsMac() {
-			//TODO: Delete mac daemon
-		} else if ncutils.IsFreeBSD() {
-			daemon.RemoveFreebsdDaemon()
-		} else {
-			daemon.RemoveSystemDServices()
-		}
-	}
-	return nil
-}
-
 // DeleteInterface - delete an interface of a network
 func DeleteInterface(ifacename string, postdown string) error {
 	return wireguard.RemoveConf(ifacename, true)

+ 6 - 1
netclient/functions/join.go

@@ -212,7 +212,12 @@ func JoinNetwork(cfg *config.ClientConfig, privateKey string) error {
 		}
 	}
 
-	daemon.Restart()
+	if err := daemon.Restart(); err != nil {
+		log.Println("daemon restart failed ", err)
+		if err := daemon.Start(); err != nil {
+			return err
+		}
+	}
 	return nil
 }