mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-19 23:26:19 +08:00
updated logic for join/leave network
This commit is contained in:
@@ -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
|
||||
|
@@ -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())
|
||||
}
|
||||
|
@@ -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())
|
||||
}
|
||||
|
@@ -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)
|
||||
|
@@ -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
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user