Răsfoiți Sursa

fixed issue with delete

0xdcarns 3 ani în urmă
părinte
comite
456272d549
5 a modificat fișierele cu 19 adăugiri și 39 ștergeri
  1. 14 0
      controllers/auth_grpc.go
  2. 3 5
      controllers/node.go
  3. 1 0
      controllers/node_grpc.go
  4. 1 1
      logic/gateway.go
  5. 0 33
      logic/util.go

+ 14 - 0
controllers/auth_grpc.go

@@ -131,15 +131,29 @@ func (s *NodeServiceServer) Login(ctx context.Context, req *nodepb.Object) (*nod
 		if err != nil {
 		if err != nil {
 			return nil, err
 			return nil, err
 		}
 		}
+		var found = false
 		for _, value := range collection {
 		for _, value := range collection {
 			if err = json.Unmarshal([]byte(value), &result); err != nil {
 			if err = json.Unmarshal([]byte(value), &result); err != nil {
 				continue // finish going through nodes
 				continue // finish going through nodes
 			}
 			}
 			if result.ID == nodeID && result.Network == network {
 			if result.ID == nodeID && result.Network == network {
+				found = true
 				break
 				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
 		//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...
 		//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
 		//TODO: Consider a way of hashing the password client side before sending, or using certificates

+ 3 - 5
controllers/node.go

@@ -5,6 +5,7 @@ import (
 	"fmt"
 	"fmt"
 	"net/http"
 	"net/http"
 	"strings"
 	"strings"
+	"time"
 
 
 	"github.com/gorilla/mux"
 	"github.com/gorilla/mux"
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/database"
@@ -610,14 +611,11 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 		returnErrorResponse(w, r, formatError(err, "internal"))
 		returnErrorResponse(w, r, formatError(err, "internal"))
 		return
 		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"])
 	logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
 	runUpdates(&node, false)
 	runUpdates(&node, false)
-	returnSuccessResponse(w, r, nodeid+" deleted.")
 }
 }
 
 
 func runUpdates(node *models.Node, nodeUpdate bool) error {
 func runUpdates(node *models.Node, nodeUpdate bool) error {

+ 1 - 0
controllers/node_grpc.go

@@ -216,6 +216,7 @@ func (s *NodeServiceServer) DeleteNode(ctx context.Context, req *nodepb.Object)
 	if err != nil {
 	if err != nil {
 		return nil, err
 		return nil, err
 	}
 	}
+
 	runServerPeerUpdate(&node, false)
 	runServerPeerUpdate(&node, false)
 
 
 	return &nodepb.Object{
 	return &nodepb.Object{

+ 1 - 1
logic/gateway.go

@@ -72,7 +72,7 @@ func ValidateEgressGateway(gateway models.EgressGatewayRequest) error {
 	}
 	}
 	empty = gateway.Interface == ""
 	empty = gateway.Interface == ""
 	if empty {
 	if empty {
-		err = errors.New("Interface cannot be empty")
+		err = errors.New("interface cannot be empty")
 	}
 	}
 	return err
 	return err
 }
 }

+ 0 - 33
logic/util.go

@@ -64,39 +64,6 @@ func IsAddressInCIDR(address, cidr string) bool {
 	return currentCIDR.Contains(ip)
 	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
 // SetNetworkNodesLastModified - sets the network nodes last modified
 func SetNetworkNodesLastModified(networkName string) error {
 func SetNetworkNodesLastModified(networkName string) error {