|
@@ -345,7 +345,7 @@ func getNode(w http.ResponseWriter, r *http.Request) {
|
|
var params = mux.Vars(r)
|
|
var params = mux.Vars(r)
|
|
nodeid := params["nodeid"]
|
|
nodeid := params["nodeid"]
|
|
|
|
|
|
- node, err := validateParams(nodeid, params["network"])
|
|
|
|
|
|
+ node, err := logic.ValidateParams(nodeid, params["network"])
|
|
if err != nil {
|
|
if err != nil {
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
@@ -402,9 +402,9 @@ func getNode(w http.ResponseWriter, r *http.Request) {
|
|
func createEgressGateway(w http.ResponseWriter, r *http.Request) {
|
|
func createEgressGateway(w http.ResponseWriter, r *http.Request) {
|
|
var gateway models.EgressGatewayRequest
|
|
var gateway models.EgressGatewayRequest
|
|
var params = mux.Vars(r)
|
|
var params = mux.Vars(r)
|
|
- node, err := validateParams(params["nodeid"], params["network"])
|
|
|
|
|
|
+ node, err := logic.ValidateParams(params["nodeid"], params["network"])
|
|
if err != nil {
|
|
if err != nil {
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "bad request"))
|
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
@@ -453,9 +453,9 @@ func deleteEgressGateway(w http.ResponseWriter, r *http.Request) {
|
|
var params = mux.Vars(r)
|
|
var params = mux.Vars(r)
|
|
nodeid := params["nodeid"]
|
|
nodeid := params["nodeid"]
|
|
netid := params["network"]
|
|
netid := params["network"]
|
|
- node, err := validateParams(nodeid, netid)
|
|
|
|
|
|
+ node, err := logic.ValidateParams(nodeid, netid)
|
|
if err != nil {
|
|
if err != nil {
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "bad request"))
|
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
node, err = logic.DeleteEgressGateway(netid, nodeid)
|
|
node, err = logic.DeleteEgressGateway(netid, nodeid)
|
|
@@ -497,9 +497,9 @@ func createIngressGateway(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Set("Content-Type", "application/json")
|
|
w.Header().Set("Content-Type", "application/json")
|
|
nodeid := params["nodeid"]
|
|
nodeid := params["nodeid"]
|
|
netid := params["network"]
|
|
netid := params["network"]
|
|
- node, err := validateParams(nodeid, netid)
|
|
|
|
|
|
+ node, err := logic.ValidateParams(nodeid, netid)
|
|
if err != nil {
|
|
if err != nil {
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "bad request"))
|
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
var request models.IngressRequest
|
|
var request models.IngressRequest
|
|
@@ -540,9 +540,9 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) {
|
|
var params = mux.Vars(r)
|
|
var params = mux.Vars(r)
|
|
nodeid := params["nodeid"]
|
|
nodeid := params["nodeid"]
|
|
netid := params["network"]
|
|
netid := params["network"]
|
|
- node, err := validateParams(nodeid, netid)
|
|
|
|
|
|
+ node, err := logic.ValidateParams(nodeid, netid)
|
|
if err != nil {
|
|
if err != nil {
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "bad request"))
|
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
node, removedClients, err := logic.DeleteIngressGateway(nodeid)
|
|
node, removedClients, err := logic.DeleteIngressGateway(nodeid)
|
|
@@ -618,9 +618,9 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
//start here
|
|
//start here
|
|
nodeid := params["nodeid"]
|
|
nodeid := params["nodeid"]
|
|
- currentNode, err := validateParams(nodeid, params["network"])
|
|
|
|
|
|
+ currentNode, err := logic.ValidateParams(nodeid, params["network"])
|
|
if err != nil {
|
|
if err != nil {
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "bad request"))
|
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
var newData models.ApiNode
|
|
var newData models.ApiNode
|
|
@@ -636,6 +636,14 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
|
return
|
|
return
|
|
}
|
|
}
|
|
newNode := newData.ConvertToServerNode(¤tNode)
|
|
newNode := newData.ConvertToServerNode(¤tNode)
|
|
|
|
+ if newNode.IsInternetGateway != currentNode.IsInternetGateway {
|
|
|
|
+ if newNode.IsInternetGateway {
|
|
|
|
+ logic.SetInternetGw(newNode, models.InetNodeReq{})
|
|
|
|
+ } else {
|
|
|
|
+ logic.UnsetInternetGw(newNode)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
relayUpdate := logic.RelayUpdates(¤tNode, newNode)
|
|
relayUpdate := logic.RelayUpdates(¤tNode, newNode)
|
|
_, err = logic.GetHost(newNode.HostID.String())
|
|
_, err = logic.GetHost(newNode.HostID.String())
|
|
if err != nil {
|
|
if err != nil {
|
|
@@ -695,9 +703,9 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
|
// get params
|
|
// get params
|
|
var params = mux.Vars(r)
|
|
var params = mux.Vars(r)
|
|
var nodeid = params["nodeid"]
|
|
var nodeid = params["nodeid"]
|
|
- node, err := validateParams(nodeid, params["network"])
|
|
|
|
|
|
+ node, err := logic.ValidateParams(nodeid, params["network"])
|
|
if err != nil {
|
|
if err != nil {
|
|
- logic.ReturnErrorResponse(w, r, logic.FormatError(err, "bad request"))
|
|
|
|
|
|
+ logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
|
return
|
|
return
|
|
}
|
|
}
|
|
forceDelete := r.URL.Query().Get("force") == "true"
|
|
forceDelete := r.URL.Query().Get("force") == "true"
|
|
@@ -716,16 +724,3 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
|
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"])
|
|
go mq.PublishMqUpdatesForDeletedNode(node, !fromNode, gwClients)
|
|
go mq.PublishMqUpdatesForDeletedNode(node, !fromNode, gwClients)
|
|
}
|
|
}
|
|
-
|
|
|
|
-func validateParams(nodeid, netid string) (models.Node, error) {
|
|
|
|
- node, err := logic.GetNodeByID(nodeid)
|
|
|
|
- if err != nil {
|
|
|
|
- slog.Error("error fetching node", "node", nodeid, "error", err.Error())
|
|
|
|
- return node, fmt.Errorf("error fetching node during parameter validation: %v", err)
|
|
|
|
- }
|
|
|
|
- if node.Network != netid {
|
|
|
|
- slog.Error("network url param does not match node id", "url nodeid", netid, "node", node.Network)
|
|
|
|
- return node, fmt.Errorf("network url param does not match node network")
|
|
|
|
- }
|
|
|
|
- return node, nil
|
|
|
|
-}
|
|
|