From 456272d549b905fafafa8448ec294d348ae0c6c0 Mon Sep 17 00:00:00 2001 From: 0xdcarns Date: Tue, 8 Feb 2022 11:01:44 -0500 Subject: [PATCH] fixed issue with delete --- controllers/auth_grpc.go | 14 ++++++++++++++ controllers/node.go | 8 +++----- controllers/node_grpc.go | 1 + logic/gateway.go | 2 +- logic/util.go | 33 --------------------------------- 5 files changed, 19 insertions(+), 39 deletions(-) diff --git a/controllers/auth_grpc.go b/controllers/auth_grpc.go index 5cd21514..72720771 100644 --- a/controllers/auth_grpc.go +++ b/controllers/auth_grpc.go @@ -131,15 +131,29 @@ func (s *NodeServiceServer) Login(ctx context.Context, req *nodepb.Object) (*nod if err != nil { return nil, err } + var found = false for _, value := range collection { if err = json.Unmarshal([]byte(value), &result); err != nil { continue // finish going through nodes } if result.ID == nodeID && result.Network == network { + found = true break } } + if !found { + deletedNode, err := database.FetchRecord(database.DELETED_NODES_TABLE_NAME, nodeID) + if err != nil { + err = errors.New("node not found") + return nil, err + } + if err = json.Unmarshal([]byte(deletedNode), &result); err != nil { + err = errors.New("node data corrupted") + return nil, err + } + } + //compare password from request to stored password in database //might be able to have a common hash (certificates?) and compare those so that a password isn't passed in in plain text... //TODO: Consider a way of hashing the password client side before sending, or using certificates diff --git a/controllers/node.go b/controllers/node.go index 29916eed..90d73f99 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -5,6 +5,7 @@ import ( "fmt" "net/http" "strings" + "time" "github.com/gorilla/mux" "github.com/gravitl/netmaker/database" @@ -610,14 +611,11 @@ func deleteNode(w http.ResponseWriter, r *http.Request) { returnErrorResponse(w, r, formatError(err, "internal")) return } + returnSuccessResponse(w, r, nodeid+" deleted.") - if err != nil { - returnErrorResponse(w, r, formatError(err, "internal")) - return - } + time.Sleep(time.Second << 1) logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"]) runUpdates(&node, false) - returnSuccessResponse(w, r, nodeid+" deleted.") } func runUpdates(node *models.Node, nodeUpdate bool) error { diff --git a/controllers/node_grpc.go b/controllers/node_grpc.go index 23f6405f..0ecd5881 100644 --- a/controllers/node_grpc.go +++ b/controllers/node_grpc.go @@ -216,6 +216,7 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object) if err != nil { return nil, err } + runServerPeerUpdate(&node, false) return &nodepb.Object{ diff --git a/logic/gateway.go b/logic/gateway.go index 6bb25bad..9a43b23f 100644 --- a/logic/gateway.go +++ b/logic/gateway.go @@ -72,7 +72,7 @@ func ValidateEgressGateway(gateway models.EgressGatewayRequest) error { } empty = gateway.Interface == "" if empty { - err = errors.New("Interface cannot be empty") + err = errors.New("interface cannot be empty") } return err } diff --git a/logic/util.go b/logic/util.go index 71d2ce14..2177a4a5 100644 --- a/logic/util.go +++ b/logic/util.go @@ -64,39 +64,6 @@ func IsAddressInCIDR(address, cidr string) bool { return currentCIDR.Contains(ip) } -// DeleteNodeByMacAddress - deletes a node from database or moves into delete nodes table -func DeleteNodeByMacAddress(node *models.Node, exterminate bool) error { - var err error - var key = node.ID - if !exterminate { - args := strings.Split(key, "###") - node, err := GetNodeByMacAddress(args[0], args[1]) - if err != nil { - return err - } - node.Action = models.NODE_DELETE - nodedata, err := json.Marshal(&node) - if err != nil { - return err - } - err = database.Insert(key, string(nodedata), database.DELETED_NODES_TABLE_NAME) - if err != nil { - return err - } - } else { - if err := database.DeleteRecord(database.DELETED_NODES_TABLE_NAME, key); err != nil { - logger.Log(2, err.Error()) - } - } - if err = database.DeleteRecord(database.NODES_TABLE_NAME, key); err != nil { - return err - } - if servercfg.IsDNSMode() { - SetDNS() - } - return removeLocalServer(node) -} - // SetNetworkNodesLastModified - sets the network nodes last modified func SetNetworkNodesLastModified(networkName string) error {