set relayed nodes UDP to off and update them

This commit is contained in:
afeiszli
2022-02-04 11:54:50 -05:00
parent cf6bb710f7
commit 83c4f99192
3 changed files with 33 additions and 0 deletions

View File

@@ -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)

View File

@@ -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) {

View File

@@ -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