|
@@ -684,8 +684,8 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
|
w.WriteHeader(http.StatusOK)
|
|
w.WriteHeader(http.StatusOK)
|
|
json.NewEncoder(w).Encode(apiNode)
|
|
json.NewEncoder(w).Encode(apiNode)
|
|
runUpdates(newNode, ifaceDelta)
|
|
runUpdates(newNode, ifaceDelta)
|
|
- go func(aclUpdate bool, newNode *models.Node) {
|
|
|
|
- if aclUpdate {
|
|
|
|
|
|
+ go func(aclUpdate, relayupdate bool, newNode *models.Node) {
|
|
|
|
+ if aclUpdate || relayupdate {
|
|
if err := mq.PublishPeerUpdate(); err != nil {
|
|
if err := mq.PublishPeerUpdate(); err != nil {
|
|
logger.Log(0, "error during node ACL update for node", newNode.ID.String())
|
|
logger.Log(0, "error during node ACL update for node", newNode.ID.String())
|
|
}
|
|
}
|
|
@@ -693,7 +693,7 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
|
if err := mq.PublishReplaceDNS(¤tNode, newNode, host); err != nil {
|
|
if err := mq.PublishReplaceDNS(¤tNode, newNode, host); err != nil {
|
|
logger.Log(1, "failed to publish dns update", err.Error())
|
|
logger.Log(1, "failed to publish dns update", err.Error())
|
|
}
|
|
}
|
|
- }(aclUpdate, newNode)
|
|
|
|
|
|
+ }(aclUpdate, relayupdate, newNode)
|
|
}
|
|
}
|
|
|
|
|
|
// swagger:route DELETE /api/nodes/{network}/{nodeid} nodes deleteNode
|
|
// swagger:route DELETE /api/nodes/{network}/{nodeid} nodes deleteNode
|
|
@@ -737,6 +737,22 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("failed to delete node"), "internal"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("failed to delete node"), "internal"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
|
|
+ if node.IsRelayed {
|
|
|
|
+ // cleanup node from relayednodes on relay node
|
|
|
|
+ relayNode, err := logic.GetNodeByID(node.RelayedBy)
|
|
|
|
+ if err == nil {
|
|
|
|
+ relayedNodes := []string{}
|
|
|
|
+ for _, relayedNodeID := range relayNode.RelayedNodes {
|
|
|
|
+ if relayedNodeID == node.ID.String() {
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ relayedNodes = append(relayedNodes, relayedNodeID)
|
|
|
|
+ }
|
|
|
|
+ relayNode.RelayedNodes = relayedNodes
|
|
|
|
+ logic.UpsertNode(&relayNode)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
logic.ReturnSuccessResponse(w, r, nodeid+" deleted.")
|
|
logic.ReturnSuccessResponse(w, r, nodeid+" deleted.")
|
|
logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
|
|
logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
|
|
if !fromNode { // notify node change
|
|
if !fromNode { // notify node change
|