Browse Source

Merge pull request #675 from gravitl/bugfix_v0.10.0_client_tweaks1

on delete, removes files and ends daemon if required, ifacedelta on k…
dcarns 3 years ago
parent
commit
4815c4da13
1 changed files with 13 additions and 4 deletions
  1. 13 4
      netclient/functions/daemon.go

+ 13 - 4
netclient/functions/daemon.go

@@ -249,22 +249,31 @@ func NodeUpdate(client mqtt.Client, msg mqtt.Message) {
 		cfg.Node = newNode
 		cfg.Node = newNode
 		switch newNode.Action {
 		switch newNode.Action {
 		case models.NODE_DELETE:
 		case models.NODE_DELETE:
-			if err := RemoveLocalInstance(&cfg, cfg.Network); err != nil {
-				ncutils.PrintLog("error deleting local instance: "+err.Error(), 1)
-				return
-			}
 			if token := client.Unsubscribe(fmt.Sprintf("update/%s/%s", newNode.Network, newNode.ID), fmt.Sprintf("peers/%s/%s", newNode.Network, newNode.ID)); token.Wait() && token.Error() != nil {
 			if token := client.Unsubscribe(fmt.Sprintf("update/%s/%s", newNode.Network, newNode.ID), fmt.Sprintf("peers/%s/%s", newNode.Network, newNode.ID)); token.Wait() && token.Error() != nil {
 				ncutils.PrintLog("error unsubscribing during node deletion", 1)
 				ncutils.PrintLog("error unsubscribing during node deletion", 1)
 			}
 			}
+			if err := WipeLocal(cfg.Network); err != nil {
+				ncutils.PrintLog("error deleting local instance: "+err.Error(), 1)
+				ncutils.PrintLog("Please perform manual clean up", 1)
+			}
+			currNets, err := ncutils.GetSystemNetworks()
+			if err == nil && len(currNets) == 0 {
+				if err = RemoveLocalInstance(&cfg, cfg.Network); err != nil {
+					ncutils.PrintLog("Please perform manual clean up", 1)
+				}
+				os.Exit(0)
+			}
 			return
 			return
 		case models.NODE_UPDATE_KEY:
 		case models.NODE_UPDATE_KEY:
 			if err := UpdateKeys(&cfg, client); err != nil {
 			if err := UpdateKeys(&cfg, client); err != nil {
 				ncutils.PrintLog("err updating wireguard keys: "+err.Error(), 1)
 				ncutils.PrintLog("err updating wireguard keys: "+err.Error(), 1)
 			}
 			}
+			ifaceDelta = true
 		case models.NODE_NOOP:
 		case models.NODE_NOOP:
 		default:
 		default:
 		}
 		}
 		//Save new config
 		//Save new config
+		cfg.Node.Action = models.NODE_NOOP
 		if err := config.Write(&cfg, cfg.Network); err != nil {
 		if err := config.Write(&cfg, cfg.Network); err != nil {
 			ncutils.PrintLog("error updating node configuration: "+err.Error(), 1)
 			ncutils.PrintLog("error updating node configuration: "+err.Error(), 1)
 		}
 		}