From 75fc15ac4c0d5b00fb95f3dd00785380463010b9 Mon Sep 17 00:00:00 2001 From: 0xdcarns Date: Wed, 28 Sep 2022 13:05:41 -0400 Subject: [PATCH] commented out logic --- ee/initialize.go | 26 +++++++++++++------------- ee/logic/failover.go | 5 ++++- logic/gateway.go | 14 +++++++------- logic/peers.go | 15 ++++++++------- models/metrics.go | 2 +- mq/handlers.go | 14 ++++++++------ 6 files changed, 41 insertions(+), 35 deletions(-) diff --git a/ee/initialize.go b/ee/initialize.go index 6511223e..ca9b09c8 100644 --- a/ee/initialize.go +++ b/ee/initialize.go @@ -30,8 +30,8 @@ func InitEE() { AddLicenseHooks() }) logic.EnterpriseFailoverFunc = eelogic.SetFailover - logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover - resetFailover() + // logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover + // resetFailover() } func setControllerLimits() { @@ -42,17 +42,17 @@ func setControllerLimits() { servercfg.Is_EE = true } -func resetFailover() { - nets, err := logic.GetNetworks() - if err == nil { - for _, net := range nets { - err = logic.EnterpriseResetFailoverFunc.(func(string) error)(net.NetID) - if err != nil { - logger.Log(0, "failed to reset failover on network", net.NetID, ":", err.Error()) - } - } - } -} +// func resetFailover() { +// nets, err := logic.GetNetworks() +// if err == nil { +// for _, net := range nets { +// err = logic.EnterpriseResetFailoverFunc.(func(string) error)(net.NetID) +// if err != nil { +// logger.Log(0, "failed to reset failover on network", net.NetID, ":", err.Error()) +// } +// } +// } +// } func retrieveEELogo() string { return ` diff --git a/ee/logic/failover.go b/ee/logic/failover.go index 14780650..8b0de150 100644 --- a/ee/logic/failover.go +++ b/ee/logic/failover.go @@ -81,6 +81,9 @@ func setFailoverNode(failoverNode, node *models.Node) error { if err != nil { return err } + if nodeToUpdate.FailoverNode == failoverNode.ID { + return nil + } return logic.UpdateNode(&nodeToUpdate, node) } @@ -89,6 +92,6 @@ func WipeFailover(nodeid string) error { if err != nil { return err } - metrics.NeedsFailover = make(map[string]string) + metrics.FailoverPeers = make(map[string]string) return logic.UpdateMetrics(nodeid, metrics) } diff --git a/logic/gateway.go b/logic/gateway.go index 9ea4a178..d5ef8877 100644 --- a/logic/gateway.go +++ b/logic/gateway.go @@ -224,9 +224,9 @@ func CreateIngressGateway(netid string, nodeid string, failover bool) (models.No node.PostUp = postUpCmd node.PostDown = postDownCmd node.UDPHolePunch = "no" - if failover { - node.Failover = "yes" - } + // if failover && servercfg.Is_EE { + // node.Failover = "yes" + // } data, err := json.Marshal(&node) if err != nil { return models.Node{}, err @@ -275,10 +275,10 @@ func DeleteIngressGateway(networkName string, nodeid string) (models.Node, error } } - err = EnterpriseResetFailoverFunc.(func(string) error)(node.Network) - if err != nil { - logger.Log(0, "failed to reset failover on network", node.Network, ":", err.Error()) - } + // err = EnterpriseResetFailoverFunc.(func(string) error)(node.Network) + // if err != nil { + // logger.Log(0, "failed to reset failover on network", node.Network, ":", err.Error()) + // } data, err := json.Marshal(&node) if err != nil { diff --git a/logic/peers.go b/logic/peers.go index 2cc6f584..7025c2e3 100644 --- a/logic/peers.go +++ b/logic/peers.go @@ -37,8 +37,8 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) { if servercfg.Is_EE { metrics, _ = GetMetrics(node.ID) } - if metrics.NeedsFailover == nil { - metrics.NeedsFailover = make(map[string]string) + if metrics.FailoverPeers == nil { + metrics.FailoverPeers = make(map[string]string) } // udppeers = the peers parsed from the local interface // gives us correct port to reach @@ -92,8 +92,8 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) { if isP2S && peer.IsHub != "yes" { continue } - if metrics.NeedsFailover[peer.ID] != "" { - continue + if len(metrics.FailoverPeers[peer.ID]) > 0 { + logger.Log(0, "peer", peer.Name, peer.PrimaryAddress(), "was found to be in failover peers list for node", node.Name, node.PrimaryAddress()) } pubkey, err := wgtypes.ParseKey(peer.PublicKey) if err != nil { @@ -271,16 +271,17 @@ func GetAllowedIPs(node, peer *models.Node, metrics *models.Metrics) []net.IPNet allowedips = append(allowedips, extPeer.AllowedIPs...) } // if node is a failover node, add allowed ips from nodes it is handling - if peer.Failover == "yes" && metrics.NeedsFailover != nil { + if peer.Failover == "yes" && metrics.FailoverPeers != nil { // travers through nodes that need handling - for k, v := range metrics.NeedsFailover { + for k, v := range metrics.FailoverPeers { // if FailoverNode is me for this node, add allowedips if v == peer.ID { // get original node so we can traverse the allowed ips nodeToFailover, err := GetNodeByID(k) if err == nil { // get all allowedips and append - allowedips = append(allowedips, getNodeAllowedIPs(&nodeToFailover, peer)...) + // allowedips = append(allowedips, getNodeAllowedIPs(&nodeToFailover, peer)...) + logger.Log(0, "failing over node", nodeToFailover.Name, nodeToFailover.PrimaryAddress()) } } } diff --git a/models/metrics.go b/models/metrics.go index c06a409b..ab641377 100644 --- a/models/metrics.go +++ b/models/metrics.go @@ -9,7 +9,7 @@ type Metrics struct { NodeName string `json:"node_name" bson:"node_name" yaml:"node_name"` IsServer string `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"` Connectivity map[string]Metric `json:"connectivity" bson:"connectivity" yaml:"connectivity"` - NeedsFailover map[string]string `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"` + FailoverPeers map[string]string `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"` } // Metric - holds a metric for data between nodes diff --git a/mq/handlers.go b/mq/handlers.go index 99c08139..31998ff4 100644 --- a/mq/handlers.go +++ b/mq/handlers.go @@ -209,16 +209,16 @@ func updateNodePeers(currentNode *models.Node) { } func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) { - if newMetrics.NeedsFailover == nil { - newMetrics.NeedsFailover = make(map[string]string) + if newMetrics.FailoverPeers == nil { + newMetrics.FailoverPeers = make(map[string]string) } oldMetrics, err := logic.GetMetrics(currentNode.ID) if err != nil { logger.Log(1, "error finding old metrics for node", currentNode.ID, currentNode.Name) return } - if oldMetrics.NeedsFailover == nil { - oldMetrics.NeedsFailover = make(map[string]string) + if oldMetrics.FailoverPeers == nil { + oldMetrics.FailoverPeers = make(map[string]string) } var attachedClients []models.ExtClient @@ -259,8 +259,10 @@ func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) { return } for _, node := range nodes { - if !newMetrics.Connectivity[node.ID].Connected && node.Connected == "yes" { - newMetrics.NeedsFailover[node.ID] = node.FailoverNode + if !newMetrics.Connectivity[node.ID].Connected && + len(newMetrics.Connectivity[node.ID].NodeName) > 0 && + node.Connected == "yes" { + newMetrics.FailoverPeers[node.ID] = node.FailoverNode } }