mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 00:43:58 +08:00
refactoring for ee
This commit is contained in:
@@ -8,7 +8,6 @@ import (
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/functions"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
"github.com/gravitl/netmaker/logic"
|
||||
"github.com/gravitl/netmaker/logic/pro"
|
||||
@@ -30,8 +29,8 @@ func nodeHandlers(r *mux.Router) {
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/deleterelay", authorize(false, true, "user", http.HandlerFunc(deleteRelay))).Methods("DELETE")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/creategateway", authorize(false, true, "user", http.HandlerFunc(createEgressGateway))).Methods("POST")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/deletegateway", authorize(false, true, "user", http.HandlerFunc(deleteEgressGateway))).Methods("DELETE")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/createingress", securityCheck(false, http.HandlerFunc(createIngressGateway))).Methods("POST")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/deleteingress", securityCheck(false, http.HandlerFunc(deleteIngressGateway))).Methods("DELETE")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/createingress", logic.SecurityCheck(false, http.HandlerFunc(createIngressGateway))).Methods("POST")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/deleteingress", logic.SecurityCheck(false, http.HandlerFunc(deleteIngressGateway))).Methods("DELETE")
|
||||
r.HandleFunc("/api/nodes/{network}/{nodeid}/approve", authorize(false, true, "user", http.HandlerFunc(uncordonNode))).Methods("POST")
|
||||
r.HandleFunc("/api/nodes/{network}", nodeauth(checkFreeTierLimits(node_l, http.HandlerFunc(createNode)))).Methods("POST")
|
||||
r.HandleFunc("/api/nodes/adm/{network}/lastmodified", authorize(false, true, "network", http.HandlerFunc(getLastModified))).Methods("GET")
|
||||
@@ -66,19 +65,19 @@ func authenticate(response http.ResponseWriter, request *http.Request) {
|
||||
errorResponse.Message = decoderErr.Error()
|
||||
logger.Log(0, request.Header.Get("user"), "error decoding request body: ",
|
||||
decoderErr.Error())
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
} else {
|
||||
errorResponse.Code = http.StatusBadRequest
|
||||
if authRequest.ID == "" {
|
||||
errorResponse.Message = "W1R3: ID can't be empty"
|
||||
logger.Log(0, request.Header.Get("user"), errorResponse.Message)
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
} else if authRequest.Password == "" {
|
||||
errorResponse.Message = "W1R3: Password can't be empty"
|
||||
logger.Log(0, request.Header.Get("user"), errorResponse.Message)
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
} else {
|
||||
var err error
|
||||
@@ -89,7 +88,7 @@ func authenticate(response http.ResponseWriter, request *http.Request) {
|
||||
errorResponse.Message = err.Error()
|
||||
logger.Log(0, request.Header.Get("user"),
|
||||
fmt.Sprintf("failed to get node info [%s]: %v", authRequest.ID, err))
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -99,7 +98,7 @@ func authenticate(response http.ResponseWriter, request *http.Request) {
|
||||
errorResponse.Message = err.Error()
|
||||
logger.Log(0, request.Header.Get("user"),
|
||||
"error validating user password: ", err.Error())
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
} else {
|
||||
tokenString, err := logic.CreateJWT(authRequest.ID, authRequest.MacAddress, result.Network)
|
||||
@@ -109,7 +108,7 @@ func authenticate(response http.ResponseWriter, request *http.Request) {
|
||||
errorResponse.Message = "Could not create Token"
|
||||
logger.Log(0, request.Header.Get("user"),
|
||||
fmt.Sprintf("%s: %v", errorResponse.Message, err))
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -128,7 +127,7 @@ func authenticate(response http.ResponseWriter, request *http.Request) {
|
||||
errorResponse.Message = err.Error()
|
||||
logger.Log(0, request.Header.Get("user"),
|
||||
"error marshalling resp: ", err.Error())
|
||||
returnErrorResponse(response, request, errorResponse)
|
||||
logic.ReturnErrorResponse(response, request, errorResponse)
|
||||
return
|
||||
}
|
||||
response.WriteHeader(http.StatusOK)
|
||||
@@ -149,7 +148,7 @@ func nodeauth(next http.Handler) http.HandlerFunc {
|
||||
errorResponse := models.ErrorResponse{
|
||||
Code: http.StatusUnauthorized, Message: "W1R3: You are unauthorized to access this endpoint.",
|
||||
}
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
} else {
|
||||
token = tokenSplit[1]
|
||||
@@ -161,7 +160,7 @@ func nodeauth(next http.Handler) http.HandlerFunc {
|
||||
errorResponse := models.ErrorResponse{
|
||||
Code: http.StatusNotFound, Message: "no networks",
|
||||
}
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
for _, network := range networks {
|
||||
@@ -177,7 +176,7 @@ func nodeauth(next http.Handler) http.HandlerFunc {
|
||||
errorResponse := models.ErrorResponse{
|
||||
Code: http.StatusUnauthorized, Message: "You are unauthorized to access this endpoint.",
|
||||
}
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
next.ServeHTTP(w, r)
|
||||
@@ -194,16 +193,16 @@ func nodeauth(next http.Handler) http.HandlerFunc {
|
||||
func authorize(nodesAllowed, networkCheck bool, authNetwork string, next http.Handler) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var errorResponse = models.ErrorResponse{
|
||||
Code: http.StatusUnauthorized, Message: unauthorized_msg,
|
||||
Code: http.StatusUnauthorized, Message: logic.Unauthorized_Msg,
|
||||
}
|
||||
|
||||
var params = mux.Vars(r)
|
||||
|
||||
networkexists, _ := functions.NetworkExists(params["network"])
|
||||
networkexists, _ := logic.NetworkExists(params["network"])
|
||||
//check that the request is for a valid network
|
||||
//if (networkCheck && !networkexists) || err != nil {
|
||||
if networkCheck && !networkexists {
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
} else {
|
||||
w.Header().Set("Content-Type", "application/json")
|
||||
@@ -220,7 +219,7 @@ func authorize(nodesAllowed, networkCheck bool, authNetwork string, next http.Ha
|
||||
if len(tokenSplit) > 1 {
|
||||
authToken = tokenSplit[1]
|
||||
} else {
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
//check if node instead of user
|
||||
@@ -236,7 +235,7 @@ func authorize(nodesAllowed, networkCheck bool, authNetwork string, next http.Ha
|
||||
var nodeID = ""
|
||||
username, networks, isadmin, errN := logic.VerifyUserToken(authToken)
|
||||
if errN != nil {
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -269,7 +268,7 @@ func authorize(nodesAllowed, networkCheck bool, authNetwork string, next http.Ha
|
||||
} else {
|
||||
node, err := logic.GetNodeByID(nodeID)
|
||||
if err != nil {
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
isAuthorized = (node.Network == params["network"])
|
||||
@@ -287,7 +286,7 @@ func authorize(nodesAllowed, networkCheck bool, authNetwork string, next http.Ha
|
||||
}
|
||||
}
|
||||
if !isAuthorized {
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
} else {
|
||||
//If authorized, this function passes along it's request and output to the appropriate route function.
|
||||
@@ -324,7 +323,7 @@ func getNetworkNodes(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching nodes on network %s: %v", networkName, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -358,7 +357,7 @@ func getAllNodes(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil && r.Header.Get("ismasterkey") != "yes" {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
"error fetching user info: ", err.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
var nodes []models.Node
|
||||
@@ -366,7 +365,7 @@ func getAllNodes(w http.ResponseWriter, r *http.Request) {
|
||||
nodes, err = logic.GetAllNodes()
|
||||
if err != nil {
|
||||
logger.Log(0, "error fetching all nodes info: ", err.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
} else {
|
||||
@@ -374,7 +373,7 @@ func getAllNodes(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
"error fetching nodes: ", err.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -418,7 +417,7 @@ func getNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching node [ %s ] info: %v", nodeid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -426,7 +425,7 @@ func getNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil && !database.IsEmptyRecord(err) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching wg peers config for node [ %s ]: %v", nodeid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -470,7 +469,7 @@ func getLastModified(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching network [%s] info: %v", networkName, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
logger.Log(2, r.Header.Get("user"), "called last modified")
|
||||
@@ -498,12 +497,12 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
Code: http.StatusInternalServerError, Message: "W1R3: It's not you it's me.",
|
||||
}
|
||||
networkName := params["network"]
|
||||
networkexists, err := functions.NetworkExists(networkName)
|
||||
networkexists, err := logic.NetworkExists(networkName)
|
||||
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to fetch network [%s] info: %v", networkName, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
} else if !networkexists {
|
||||
errorResponse = models.ErrorResponse{
|
||||
@@ -511,7 +510,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("network [%s] does not exist", networkName))
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
|
||||
@@ -521,7 +520,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
err = json.NewDecoder(r.Body).Decode(&node)
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"), "error decoding request body: ", err.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "badrequest"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -531,14 +530,14 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to get network [%s] info: %v", node.Network, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
node.NetworkSettings, err = logic.GetNetworkSettings(node.Network)
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to get network [%s] settings: %v", node.Network, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
keyName, validKey := logic.IsKeyValid(networkName, node.AccessKey)
|
||||
@@ -554,7 +553,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to create node on network [%s]: %s",
|
||||
node.Network, errorResponse.Message))
|
||||
returnErrorResponse(w, r, errorResponse)
|
||||
logic.ReturnErrorResponse(w, r, errorResponse)
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -569,17 +568,17 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
key, keyErr := logic.RetrievePublicTrafficKey()
|
||||
if keyErr != nil {
|
||||
logger.Log(0, "error retrieving key: ", keyErr.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if key == nil {
|
||||
logger.Log(0, "error: server traffic key is nil")
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if node.TrafficKeys.Mine == nil {
|
||||
logger.Log(0, "error: node traffic key is nil")
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
node.TrafficKeys = models.TrafficKeys{
|
||||
@@ -592,7 +591,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to create node on network [%s]: %s",
|
||||
node.Network, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -609,7 +608,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
if !updatedUserNode { // user was found but not updated, so delete node
|
||||
logger.Log(0, "failed to add node to user", keyName)
|
||||
logic.DeleteNodeByID(&node, true)
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -618,7 +617,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil && !database.IsEmptyRecord(err) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching wg peers config for node [ %s ]: %v", node.ID, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -656,7 +655,7 @@ func uncordonNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to uncordon node [%s]: %v", node.Name, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
logger.Log(1, r.Header.Get("user"), "uncordoned node", node.Name)
|
||||
@@ -686,7 +685,7 @@ func createEgressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
err := json.NewDecoder(r.Body).Decode(&gateway)
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"), "error decoding request body: ", err.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "badrequest"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
||||
return
|
||||
}
|
||||
gateway.NetID = params["network"]
|
||||
@@ -696,7 +695,7 @@ func createEgressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to create egress gateway on node [%s] on network [%s]: %v",
|
||||
gateway.NodeID, gateway.NetID, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -728,7 +727,7 @@ func deleteEgressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to delete egress gateway on node [%s] on network [%s]: %v",
|
||||
nodeid, netid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -762,7 +761,7 @@ func createIngressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to create ingress gateway on node [%s] on network [%s]: %v",
|
||||
nodeid, netid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -794,7 +793,7 @@ func deleteIngressGateway(w http.ResponseWriter, r *http.Request) {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to delete ingress gateway on node [%s] on network [%s]: %v",
|
||||
nodeid, netid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -828,7 +827,7 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching node [ %s ] info: %v", nodeid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
@@ -837,7 +836,7 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
||||
err = json.NewDecoder(r.Body).Decode(&newNode)
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"), "error decoding request body: ", err.Error())
|
||||
returnErrorResponse(w, r, formatError(err, "badrequest"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
||||
return
|
||||
}
|
||||
relayupdate := false
|
||||
@@ -885,7 +884,7 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to update node info [ %s ] info: %v", nodeid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
if relayupdate {
|
||||
@@ -932,20 +931,20 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
||||
if err != nil {
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("error fetching node [ %s ] info: %v", nodeid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "badrequest"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
||||
return
|
||||
}
|
||||
if isServer(&node) {
|
||||
err := fmt.Errorf("cannot delete server node")
|
||||
logger.Log(0, r.Header.Get("user"),
|
||||
fmt.Sprintf("failed to delete node [ %s ]: %v", nodeid, err))
|
||||
returnErrorResponse(w, r, formatError(err, "badrequest"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
|
||||
return
|
||||
}
|
||||
if r.Header.Get("ismaster") != "yes" {
|
||||
username := r.Header.Get("user")
|
||||
if username != "" && !doesUserOwnNode(username, params["network"], nodeid) {
|
||||
returnErrorResponse(w, r, formatError(fmt.Errorf("user not permitted"), "badrequest"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(fmt.Errorf("user not permitted"), "badrequest"))
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -954,11 +953,11 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
||||
|
||||
err = logic.DeleteNodeByID(&node, false)
|
||||
if err != nil {
|
||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
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"])
|
||||
runUpdates(&node, false)
|
||||
|
Reference in New Issue
Block a user