mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 16:57:51 +08:00
set relayed nodes UDP to off and update them
This commit is contained in:
@@ -8,6 +8,7 @@ import (
|
|||||||
"github.com/gravitl/netmaker/logger"
|
"github.com/gravitl/netmaker/logger"
|
||||||
"github.com/gravitl/netmaker/logic"
|
"github.com/gravitl/netmaker/logic"
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
|
"github.com/gravitl/netmaker/mq"
|
||||||
)
|
)
|
||||||
|
|
||||||
func createRelay(w http.ResponseWriter, r *http.Request) {
|
func createRelay(w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -27,6 +28,13 @@ func createRelay(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
logger.Log(1, r.Header.Get("user"), "created relay on node", relay.NodeID, "on network", relay.NetID)
|
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)
|
w.WriteHeader(http.StatusOK)
|
||||||
json.NewEncoder(w).Encode(node)
|
json.NewEncoder(w).Encode(node)
|
||||||
runUpdates(&node, true)
|
runUpdates(&node, true)
|
||||||
|
@@ -12,6 +12,7 @@ import (
|
|||||||
"github.com/gravitl/netmaker/database"
|
"github.com/gravitl/netmaker/database"
|
||||||
"github.com/gravitl/netmaker/logger"
|
"github.com/gravitl/netmaker/logger"
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
|
"github.com/gravitl/netmaker/netclient/ncutils"
|
||||||
"github.com/gravitl/netmaker/servercfg"
|
"github.com/gravitl/netmaker/servercfg"
|
||||||
"github.com/gravitl/netmaker/validation"
|
"github.com/gravitl/netmaker/validation"
|
||||||
"golang.org/x/crypto/bcrypt"
|
"golang.org/x/crypto/bcrypt"
|
||||||
@@ -429,6 +430,21 @@ func GetNodeByMacAddress(network string, macaddress string) (models.Node, error)
|
|||||||
return node, nil
|
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
|
// GetDeletedNodeByMacAddress - get a deleted node
|
||||||
func GetDeletedNodeByMacAddress(network string, macaddress string) (models.Node, error) {
|
func GetDeletedNodeByMacAddress(network string, macaddress string) (models.Node, error) {
|
||||||
|
|
||||||
|
@@ -51,6 +51,10 @@ func SetRelayedNodes(yesOrno string, networkName string, addrs []string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
network, err := GetNetworkSettings(networkName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
for _, value := range collections {
|
for _, value := range collections {
|
||||||
|
|
||||||
@@ -63,6 +67,11 @@ func SetRelayedNodes(yesOrno string, networkName string, addrs []string) error {
|
|||||||
for _, addr := range addrs {
|
for _, addr := range addrs {
|
||||||
if addr == node.Address || addr == node.Address6 {
|
if addr == node.Address || addr == node.Address6 {
|
||||||
node.IsRelayed = yesOrno
|
node.IsRelayed = yesOrno
|
||||||
|
if yesOrno == "yes" {
|
||||||
|
node.UDPHolePunch = "no"
|
||||||
|
} else {
|
||||||
|
node.UDPHolePunch = network.DefaultUDPHolePunch
|
||||||
|
}
|
||||||
data, err := json.Marshal(&node)
|
data, err := json.Marshal(&node)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
Reference in New Issue
Block a user