fixed issue with delete

This commit is contained in:
0xdcarns 2022-02-08 11:01:44 -05:00
parent 39cea2da6c
commit 456272d549
5 changed files with 19 additions and 39 deletions

View file

@ -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

View file

@ -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 {

View file

@ -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{

View file

@ -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
}

View file

@ -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 {