edited auth for deleted nodes

This commit is contained in:
worker-9 2021-08-09 22:31:01 -04:00
parent b3309d829f
commit c799df59ce
5 changed files with 42 additions and 4 deletions

View file

@ -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.")
}

View file

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

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

View file

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

View file

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