From 83c4f99192f6ff1a166ee25e130db5f28087330d Mon Sep 17 00:00:00 2001 From: afeiszli Date: Fri, 4 Feb 2022 11:54:50 -0500 Subject: [PATCH] set relayed nodes UDP to off and update them --- controllers/relay.go | 8 ++++++++ logic/nodes.go | 16 ++++++++++++++++ logic/relay.go | 9 +++++++++ 3 files changed, 33 insertions(+) diff --git a/controllers/relay.go b/controllers/relay.go index 21c2fb4c..87232a7c 100644 --- a/controllers/relay.go +++ b/controllers/relay.go @@ -8,6 +8,7 @@ import ( "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/logic" "github.com/gravitl/netmaker/models" + "github.com/gravitl/netmaker/mq" ) func createRelay(w http.ResponseWriter, r *http.Request) { @@ -27,6 +28,13 @@ func createRelay(w http.ResponseWriter, r *http.Request) { return } logger.Log(1, r.Header.Get("user"), "created relay on node", relay.NodeID, "on network", relay.NetID) + relayedNodes, err := logic.GetNodesByAddress(relay.NetID, relay.RelayAddrs) + for _, node := range relayedNodes { + err = mq.NodeUpdate(&node) + if err != nil { + logger.Log(1, "error sending update to relayed node ", node.Address, "on network", relay.NetID, ": ", err.Error()) + } + } w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(node) runUpdates(&node, true) diff --git a/logic/nodes.go b/logic/nodes.go index c0c1bb40..723f0ec3 100644 --- a/logic/nodes.go +++ b/logic/nodes.go @@ -12,6 +12,7 @@ import ( "github.com/gravitl/netmaker/database" "github.com/gravitl/netmaker/logger" "github.com/gravitl/netmaker/models" + "github.com/gravitl/netmaker/netclient/ncutils" "github.com/gravitl/netmaker/servercfg" "github.com/gravitl/netmaker/validation" "golang.org/x/crypto/bcrypt" @@ -429,6 +430,21 @@ func GetNodeByMacAddress(network string, macaddress string) (models.Node, error) return node, nil } +// GetNodesByAddress - gets a node by mac address +func GetNodesByAddress(network string, addresses []string) ([]models.Node, error) { + var nodes []models.Node + allnodes, err := GetAllNodes() + if err != nil { + return []models.Node{}, err + } + for _, node := range allnodes { + if node.Network == network && ncutils.StringSliceContains(addresses, node.Address) { + nodes = append(nodes, node) + } + } + return nodes, nil +} + // GetDeletedNodeByMacAddress - get a deleted node func GetDeletedNodeByMacAddress(network string, macaddress string) (models.Node, error) { diff --git a/logic/relay.go b/logic/relay.go index 9beadbdf..41f015e5 100644 --- a/logic/relay.go +++ b/logic/relay.go @@ -51,6 +51,10 @@ func SetRelayedNodes(yesOrno string, networkName string, addrs []string) error { if err != nil { return err } + network, err := GetNetworkSettings(networkName) + if err != nil { + return err + } for _, value := range collections { @@ -63,6 +67,11 @@ func SetRelayedNodes(yesOrno string, networkName string, addrs []string) error { for _, addr := range addrs { if addr == node.Address || addr == node.Address6 { node.IsRelayed = yesOrno + if yesOrno == "yes" { + node.UDPHolePunch = "no" + } else { + node.UDPHolePunch = network.DefaultUDPHolePunch + } data, err := json.Marshal(&node) if err != nil { return err