From 175bb944716b421f132dc5bec6734458abd1e06c Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Thu, 22 Sep 2022 15:22:21 -0400 Subject: [PATCH] additional checks for disconnected nodes --- logic/peers.go | 4 ++ netclient/functions/daemon.go | 12 +++--- netclient/functions/mqpublish.go | 66 ++++++++++++++++---------------- 3 files changed, 45 insertions(+), 37 deletions(-) diff --git a/logic/peers.go b/logic/peers.go index 45c7d4b8..edfaff92 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -61,6 +61,10 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) { if node.NetworkSettings.IsPointToSite == "yes" && node.IsHub == "no" && peer.IsHub == "no" { continue } + if node.Connected != "yes" { + //skip unconnected nodes + continue + } // if the node is not a server, set the endpoint var setEndpoint = !(node.IsServer == "yes") diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index 2e68b1c0..528ce2f8 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -94,11 +94,13 @@ func startGoRoutines(wg *sync.WaitGroup) context.CancelFunc { cfg := config.ClientConfig{} cfg.Network = network cfg.ReadConfig() - if err := wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, ncutils.GetNetclientPathSpecific()+cfg.Node.Interface+".conf"); err != nil { - logger.Log(0, "failed to start ", cfg.Node.Interface, "wg interface", err.Error()) - } - if cfg.PublicIPService != "" { - global_settings.PublicIPServices[network] = cfg.PublicIPService + if cfg.Node.Connected == "yes" { + if err := wireguard.ApplyConf(&cfg.Node, cfg.Node.Interface, ncutils.GetNetclientPathSpecific()+cfg.Node.Interface+".conf"); err != nil { + logger.Log(0, "failed to start ", cfg.Node.Interface, "wg interface", err.Error()) + } + if cfg.PublicIPService != "" { + global_settings.PublicIPServices[network] = cfg.PublicIPService + } } server := cfg.Server.Server diff --git a/netclient/functions/mqpublish.go b/netclient/functions/mqpublish.go index 8341a4fb..932d49c1 100644 --- a/netclient/functions/mqpublish.go +++ b/netclient/functions/mqpublish.go @@ -69,41 +69,43 @@ func checkin(currentRun int) { // defaults to iptables for now, may need another default for non-Linux OSes nodeCfg.Node.FirewallInUse = models.FIREWALL_IPTABLES } - if nodeCfg.Node.IsStatic != "yes" { - extIP, err := ncutils.GetPublicIP(nodeCfg.Server.API) - if err != nil { - logger.Log(1, "error encountered checking public ip addresses: ", err.Error()) - } - if nodeCfg.Node.Endpoint != extIP && extIP != "" { - logger.Log(1, "network:", nodeCfg.Node.Network, "endpoint has changed from ", nodeCfg.Node.Endpoint, " to ", extIP) - nodeCfg.Node.Endpoint = extIP - if err := PublishNodeUpdate(&nodeCfg); err != nil { - logger.Log(0, "network:", nodeCfg.Node.Network, "could not publish endpoint change") + if nodeCfg.Node.Connected == "yes" { + if nodeCfg.Node.IsStatic != "yes" { + extIP, err := ncutils.GetPublicIP(nodeCfg.Server.API) + if err != nil { + logger.Log(1, "error encountered checking public ip addresses: ", err.Error()) } - } - intIP, err := getPrivateAddr() - if err != nil { - logger.Log(1, "network:", nodeCfg.Node.Network, "error encountered checking private ip addresses: ", err.Error()) - } - if nodeCfg.Node.LocalAddress != intIP && intIP != "" { - logger.Log(1, "network:", nodeCfg.Node.Network, "local Address has changed from ", nodeCfg.Node.LocalAddress, " to ", intIP) - nodeCfg.Node.LocalAddress = intIP - if err := PublishNodeUpdate(&nodeCfg); err != nil { - logger.Log(0, "Network: ", nodeCfg.Node.Network, " could not publish local address change") + if nodeCfg.Node.Endpoint != extIP && extIP != "" { + logger.Log(1, "network:", nodeCfg.Node.Network, "endpoint has changed from ", nodeCfg.Node.Endpoint, " to ", extIP) + nodeCfg.Node.Endpoint = extIP + if err := PublishNodeUpdate(&nodeCfg); err != nil { + logger.Log(0, "network:", nodeCfg.Node.Network, "could not publish endpoint change") + } } - } - _ = UpdateLocalListenPort(&nodeCfg) + intIP, err := getPrivateAddr() + if err != nil { + logger.Log(1, "network:", nodeCfg.Node.Network, "error encountered checking private ip addresses: ", err.Error()) + } + if nodeCfg.Node.LocalAddress != intIP && intIP != "" { + logger.Log(1, "network:", nodeCfg.Node.Network, "local Address has changed from ", nodeCfg.Node.LocalAddress, " to ", intIP) + nodeCfg.Node.LocalAddress = intIP + if err := PublishNodeUpdate(&nodeCfg); err != nil { + logger.Log(0, "Network: ", nodeCfg.Node.Network, " could not publish local address change") + } + } + _ = UpdateLocalListenPort(&nodeCfg) - } else if nodeCfg.Node.IsLocal == "yes" && nodeCfg.Node.LocalRange != "" { - localIP, err := ncutils.GetLocalIP(nodeCfg.Node.LocalRange) - if err != nil { - logger.Log(1, "network:", nodeCfg.Node.Network, "error encountered checking local ip addresses: ", err.Error()) - } - if nodeCfg.Node.Endpoint != localIP && localIP != "" { - logger.Log(1, "network:", nodeCfg.Node.Network, "endpoint has changed from "+nodeCfg.Node.Endpoint+" to ", localIP) - nodeCfg.Node.Endpoint = localIP - if err := PublishNodeUpdate(&nodeCfg); err != nil { - logger.Log(0, "network:", nodeCfg.Node.Network, "could not publish localip change") + } else if nodeCfg.Node.IsLocal == "yes" && nodeCfg.Node.LocalRange != "" { + localIP, err := ncutils.GetLocalIP(nodeCfg.Node.LocalRange) + if err != nil { + logger.Log(1, "network:", nodeCfg.Node.Network, "error encountered checking local ip addresses: ", err.Error()) + } + if nodeCfg.Node.Endpoint != localIP && localIP != "" { + logger.Log(1, "network:", nodeCfg.Node.Network, "endpoint has changed from "+nodeCfg.Node.Endpoint+" to ", localIP) + nodeCfg.Node.Endpoint = localIP + if err := PublishNodeUpdate(&nodeCfg); err != nil { + logger.Log(0, "network:", nodeCfg.Node.Network, "could not publish localip change") + } } } }