mirror of
https://github.com/gravitl/netmaker.git
synced 2024-09-20 15:26:04 +08:00
edited auth for deleted nodes
This commit is contained in:
parent
b3309d829f
commit
c799df59ce
|
@ -82,7 +82,19 @@ func grpcAuthorize(ctx context.Context) error {
|
|||
}
|
||||
emptynode := models.Node{}
|
||||
node, err := functions.GetNodeByMacAddress(network, mac)
|
||||
if err != nil || node.MacAddress == emptynode.MacAddress {
|
||||
if !database.IsEmptyRecord(err) {
|
||||
if node, err = functions.GetDeletedNodeByMacAddress(network, mac); err != nil {
|
||||
if !database.IsEmptyRecord(err) {
|
||||
return status.Errorf(codes.Unauthenticated, "Node does not exist.")
|
||||
}
|
||||
} else {
|
||||
node.SetID()
|
||||
if functions.RemoveDeletedNode(node.ID) {
|
||||
return nil
|
||||
}
|
||||
return status.Errorf(codes.Unauthenticated, "Node does not exist.")
|
||||
}
|
||||
} else if err != nil || node.MacAddress == emptynode.MacAddress {
|
||||
return status.Errorf(codes.Unauthenticated, "Node does not exist.")
|
||||
}
|
||||
|
||||
|
|
|
@ -264,7 +264,7 @@ func NetworkNodesUpdateAction(networkName string, action string) error {
|
|||
node.SetID()
|
||||
database.Insert(node.ID, string(data), database.NODES_TABLE_NAME)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -546,6 +546,31 @@ func GetNodeByMacAddress(network string, macaddress string) (models.Node, error)
|
|||
return node, nil
|
||||
}
|
||||
|
||||
func GetDeletedNodeByMacAddress(network string, macaddress string) (models.Node, error) {
|
||||
|
||||
var node models.Node
|
||||
|
||||
key, err := GetRecordKey(macaddress, network)
|
||||
if err != nil {
|
||||
return node, err
|
||||
}
|
||||
|
||||
record, err := database.FetchRecord(database.DELETED_NODES_TABLE_NAME, key)
|
||||
if err != nil {
|
||||
return models.Node{}, err
|
||||
}
|
||||
|
||||
if err = json.Unmarshal([]byte(record), &node); err != nil {
|
||||
return models.Node{}, err
|
||||
}
|
||||
|
||||
return node, nil
|
||||
}
|
||||
|
||||
func RemoveDeletedNode(nodeid string) bool {
|
||||
return database.DeleteRecord(database.DELETED_NODES_TABLE_NAME, nodeid) == nil
|
||||
}
|
||||
|
||||
func DeleteAllIntClients() error {
|
||||
err := database.DeleteAllRecords(database.INT_CLIENTS_TABLE_NAME)
|
||||
if err != nil {
|
||||
|
|
2
go.mod
2
go.mod
|
@ -7,7 +7,7 @@ require (
|
|||
github.com/davecgh/go-spew v1.1.1
|
||||
github.com/go-playground/validator/v10 v10.5.0
|
||||
github.com/go-sql-driver/mysql v1.6.0 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.0.0 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.0.0
|
||||
github.com/golang/protobuf v1.5.2
|
||||
github.com/gorilla/handlers v1.5.1
|
||||
github.com/gorilla/mux v1.8.0
|
||||
|
|
|
@ -89,7 +89,7 @@ func setDNS(node *models.Node, servercfg config.ServerConfig, nodecfg *models.No
|
|||
}
|
||||
|
||||
func checkNodeActions(node *models.Node, network string, servercfg config.ServerConfig, localNode *models.Node) string {
|
||||
if (node.Action == models.NODE_UPDATE_KEY || localNode.Action == models.NODE_UPDATE_KEY) &&
|
||||
if (node.Action == models.NODE_UPDATE_KEY || localNode.Action == models.NODE_UPDATE_KEY) &&
|
||||
node.IsStatic != "yes" {
|
||||
err := wireguard.SetWGKeyConfig(network, servercfg.GRPCAddress)
|
||||
if err != nil {
|
||||
|
|
|
@ -278,6 +278,7 @@ func LeaveNetwork(network string) error {
|
|||
if err != nil {
|
||||
log.Printf("Failed to authenticate: %v", err)
|
||||
} else {
|
||||
node.SetID()
|
||||
var header metadata.MD
|
||||
_, err = wcclient.DeleteNode(
|
||||
ctx,
|
||||
|
|
Loading…
Reference in a new issue