updated logic for join/leave network

This commit is contained in:
Matthew R. Kasun
2022-07-14 13:48:11 -04:00
parent aa9be268f3
commit df0e882a7e
5 changed files with 28 additions and 23 deletions

View File

@@ -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

View File

@@ -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())
}

View File

@@ -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())
}

View File

@@ -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)

View File

@@ -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
}