From 4823566125f1d45ab75a825d86e7ba961e0f1988 Mon Sep 17 00:00:00 2001 From: 0xdcarns Date: Mon, 31 Jan 2022 10:46:34 -0500 Subject: [PATCH] debug again --- controllers/node.go | 3 +- controllers/node_grpc.go | 3 +- logic/nodes.go | 106 +++++++++++++++++----------------- netclient/functions/daemon.go | 23 ++++++-- 4 files changed, 75 insertions(+), 60 deletions(-) diff --git a/controllers/node.go b/controllers/node.go index 6c06aa99..712bcb8a 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -12,6 +12,7 @@ import ( "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/mq" + "github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/servercfg" "golang.org/x/crypto/bcrypt" ) @@ -586,7 +587,7 @@ func updateNode(w http.ResponseWriter, r *http.Request) { newNode.PostUp = node.PostUp } - var shouldPeersUpdate = logic.IfaceDelta(&node, &newNode) + var shouldPeersUpdate = ncutils.IfaceDelta(&node, &newNode) err = logic.UpdateNode(&node, &newNode) if err != nil { diff --git a/controllers/node_grpc.go b/controllers/node_grpc.go index 0ecf1d53..f9c498db 100644 --- a/controllers/node_grpc.go +++ b/controllers/node_grpc.go @@ -11,6 +11,7 @@ import ( "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" "github.com/gravitl/netmaker/mq" + "github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/servercfg" ) @@ -129,7 +130,7 @@ func (s *NodeServiceServer) UpdateNode(ctx context.Context, req *nodepb.Object) newnode.PostDown = node.PostDown newnode.PostUp = node.PostUp } - var shouldPeersUpdate = logic.IfaceDelta(&node, &newnode) + var shouldPeersUpdate = ncutils.IfaceDelta(&node, &newnode) getServerAddrs(&node) err = logic.UpdateNode(&node, &newnode) if err != nil { diff --git a/logic/nodes.go b/logic/nodes.go index dc6a7772..71cf53cd 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -255,65 +255,65 @@ func CreateNode(node *models.Node) error { } // IfaceDelta - is there interface changes -func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool { - SetNodeDefaults(newNode) - // single comparison statements - if currentNode.IsServer != "yes" { - return false - } +// func IfaceDelta(currentNode *models.Node, newNode *models.Node) bool { +// SetNodeDefaults(newNode) +// // single comparison statements +// if currentNode.IsServer != "yes" { +// return false +// } - if newNode.Endpoint != currentNode.Endpoint || - newNode.LocalAddress != currentNode.LocalAddress || - newNode.PublicKey != currentNode.PublicKey || - newNode.Address != currentNode.Address || - newNode.IsEgressGateway != currentNode.IsEgressGateway || - newNode.IsIngressGateway != currentNode.IsIngressGateway || - newNode.IsRelay != currentNode.IsRelay || - newNode.UDPHolePunch != currentNode.UDPHolePunch || - newNode.IsPending != currentNode.IsPending || - newNode.PersistentKeepalive != currentNode.PersistentKeepalive || - len(newNode.ExcludedAddrs) != len(currentNode.ExcludedAddrs) || - len(newNode.AllowedIPs) != len(currentNode.AllowedIPs) { - return true - } +// if newNode.Endpoint != currentNode.Endpoint || +// newNode.LocalAddress != currentNode.LocalAddress || +// newNode.PublicKey != currentNode.PublicKey || +// newNode.Address != currentNode.Address || +// newNode.IsEgressGateway != currentNode.IsEgressGateway || +// newNode.IsIngressGateway != currentNode.IsIngressGateway || +// newNode.IsRelay != currentNode.IsRelay || +// newNode.UDPHolePunch != currentNode.UDPHolePunch || +// newNode.IsPending != currentNode.IsPending || +// newNode.PersistentKeepalive != currentNode.PersistentKeepalive || +// len(newNode.ExcludedAddrs) != len(currentNode.ExcludedAddrs) || +// len(newNode.AllowedIPs) != len(currentNode.AllowedIPs) { +// return true +// } - // multi-comparison statements - if newNode.IsDualStack == "yes" { - if newNode.Address6 != currentNode.Address6 { - return true - } - } +// // multi-comparison statements +// if newNode.IsDualStack == "yes" { +// if newNode.Address6 != currentNode.Address6 { +// return true +// } +// } - if newNode.IsEgressGateway == "yes" { - if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) { - return true - } - for _, address := range newNode.EgressGatewayRanges { - if !StringSliceContains(currentNode.EgressGatewayRanges, address) { - return true - } - } - } +// if newNode.IsEgressGateway == "yes" { +// if len(currentNode.EgressGatewayRanges) != len(newNode.EgressGatewayRanges) { +// return true +// } +// for _, address := range newNode.EgressGatewayRanges { +// if !StringSliceContains(currentNode.EgressGatewayRanges, address) { +// return true +// } +// } +// } - if newNode.IsRelay == "yes" { - if len(currentNode.RelayAddrs) != len(newNode.RelayAddrs) { - return true - } - for _, address := range newNode.RelayAddrs { - if !StringSliceContains(currentNode.RelayAddrs, address) { - return true - } - } - } +// if newNode.IsRelay == "yes" { +// if len(currentNode.RelayAddrs) != len(newNode.RelayAddrs) { +// return true +// } +// for _, address := range newNode.RelayAddrs { +// if !StringSliceContains(currentNode.RelayAddrs, address) { +// return true +// } +// } +// } - for _, address := range newNode.AllowedIPs { - if !StringSliceContains(currentNode.AllowedIPs, address) { - return true - } - } +// for _, address := range newNode.AllowedIPs { +// if !StringSliceContains(currentNode.AllowedIPs, address) { +// return true +// } +// } - return false -} +// return false +// } // GetAllNodes - returns all nodes in the DB func GetAllNodes() ([]models.Node, error) { diff --git a/netclient/functions/daemon.go b/netclient/functions/daemon.go index 27a19aad..ea3e7ecc 100644 --- a/netclient/functions/daemon.go +++ b/netclient/functions/daemon.go @@ -181,6 +181,9 @@ func NodeUpdate(client mqtt.Client, msg mqtt.Message) { newNode.PullChanges = "no" //ensure that OS never changes newNode.OS = runtime.GOOS + // check if interface needs to delta + ifaceDelta := ncutils.IfaceDelta(&cfg.Node, &newNode) + cfg.Node = newNode switch newNode.Action { case models.NODE_DELETE: @@ -214,12 +217,22 @@ func NodeUpdate(client mqtt.Client, msg mqtt.Message) { ncutils.Log("error updating wireguard config " + err.Error()) return } - ncutils.Log("applyWGQuickConf to " + file) - err = wireguard.ApplyWGQuickConf(file) - if err != nil { - ncutils.Log("error restarting wg after node update " + err.Error()) - return + if ifaceDelta { + ncutils.Log("applying WG conf to " + file) + err = wireguard.ApplyWGQuickConf(file) + if err != nil { + ncutils.Log("error restarting wg after node update " + err.Error()) + return + } + } else { + ncutils.Log("syncing conf to " + file) + err = wireguard.SyncWGQuickConf(cfg.Node.Interface, file) + if err != nil { + ncutils.Log("error syncing wg after peer update " + err.Error()) + return + } } + //deal with DNS if newNode.DNSOn == "yes" { ncutils.Log("setting up DNS")