mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-06 17:29:15 +08:00
fix acl mutex lock
This commit is contained in:
@@ -15,8 +15,10 @@ func AreNodesAllowed(networkID NetworkID, node1, node2 NodeID) bool {
|
|||||||
}
|
}
|
||||||
var allowed bool
|
var allowed bool
|
||||||
acls.AclMutex.RLock()
|
acls.AclMutex.RLock()
|
||||||
allowed = currentNetworkACL[acls.AclID(node1)].IsAllowed(acls.AclID(node2)) && currentNetworkACL[acls.AclID(node2)].IsAllowed(acls.AclID(node1))
|
currNetworkACLNode1 := currentNetworkACL[acls.AclID(node1)]
|
||||||
|
currNetworkACLNode2 := currentNetworkACL[acls.AclID(node2)]
|
||||||
acls.AclMutex.RUnlock()
|
acls.AclMutex.RUnlock()
|
||||||
|
allowed = currNetworkACLNode1.IsAllowed(acls.AclID(node2)) && currNetworkACLNode2.IsAllowed(acls.AclID(node1))
|
||||||
return allowed
|
return allowed
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -386,7 +386,6 @@ func DissasociateNodeFromHost(n *models.Node, h *models.Host) error {
|
|||||||
if len(h.ID.String()) == 0 || h.ID == uuid.Nil {
|
if len(h.ID.String()) == 0 || h.ID == uuid.Nil {
|
||||||
return ErrInvalidHostID
|
return ErrInvalidHostID
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.1")
|
|
||||||
if n.HostID != h.ID { // check if node actually belongs to host
|
if n.HostID != h.ID { // check if node actually belongs to host
|
||||||
return fmt.Errorf("node is not associated with host")
|
return fmt.Errorf("node is not associated with host")
|
||||||
}
|
}
|
||||||
@@ -400,7 +399,6 @@ func DissasociateNodeFromHost(n *models.Node, h *models.Host) error {
|
|||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.2")
|
|
||||||
if index < 0 {
|
if index < 0 {
|
||||||
if len(h.Nodes) == 0 {
|
if len(h.Nodes) == 0 {
|
||||||
return fmt.Errorf("node %s, not found in host, %s", n.ID.String(), h.ID.String())
|
return fmt.Errorf("node %s, not found in host, %s", n.ID.String(), h.ID.String())
|
||||||
@@ -408,27 +406,18 @@ func DissasociateNodeFromHost(n *models.Node, h *models.Host) error {
|
|||||||
} else {
|
} else {
|
||||||
h.Nodes = RemoveStringSlice(h.Nodes, index)
|
h.Nodes = RemoveStringSlice(h.Nodes, index)
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.3")
|
|
||||||
go func() {
|
go func() {
|
||||||
if servercfg.IsPro {
|
if servercfg.IsPro {
|
||||||
//logger.Log(0, "Hereeeee-----> 4.7.3.1")
|
|
||||||
if clients, err := GetNetworkExtClients(n.Network); err != nil {
|
if clients, err := GetNetworkExtClients(n.Network); err != nil {
|
||||||
//logger.Log(0, "Hereeeee-----> 4.7.3.2")
|
|
||||||
for i := range clients {
|
for i := range clients {
|
||||||
AllowClientNodeAccess(&clients[i], n.ID.String())
|
AllowClientNodeAccess(&clients[i], n.ID.String())
|
||||||
//logger.Log(0, "Hereeeee-----> 4.7.3.3")
|
|
||||||
}
|
}
|
||||||
//logger.Log(0, "Hereeeee-----> 4.7.3.4")
|
|
||||||
}
|
}
|
||||||
//logger.Log(0, "Hereeeee-----> 4.7.3.5")
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4")
|
|
||||||
if err := DeleteNodeByID(n); err != nil {
|
if err := DeleteNodeByID(n); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.5")
|
|
||||||
return UpsertHost(h)
|
return UpsertHost(h)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -287,32 +287,26 @@ func GetNodeByHostRef(hostid, network string) (node models.Node, err error) {
|
|||||||
func DeleteNodeByID(node *models.Node) error {
|
func DeleteNodeByID(node *models.Node) error {
|
||||||
var err error
|
var err error
|
||||||
var key = node.ID.String()
|
var key = node.ID.String()
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4.1")
|
|
||||||
if err = database.DeleteRecord(database.NODES_TABLE_NAME, key); err != nil {
|
if err = database.DeleteRecord(database.NODES_TABLE_NAME, key); err != nil {
|
||||||
if !database.IsEmptyRecord(err) {
|
if !database.IsEmptyRecord(err) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4.2")
|
|
||||||
if servercfg.CacheEnabled() {
|
if servercfg.CacheEnabled() {
|
||||||
deleteNodeFromCache(node.ID.String())
|
deleteNodeFromCache(node.ID.String())
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4.3")
|
|
||||||
if servercfg.IsDNSMode() {
|
if servercfg.IsDNSMode() {
|
||||||
SetDNS()
|
SetDNS()
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4.4")
|
|
||||||
_, err = nodeacls.RemoveNodeACL(nodeacls.NetworkID(node.Network), nodeacls.NodeID(node.ID.String()))
|
_, err = nodeacls.RemoveNodeACL(nodeacls.NetworkID(node.Network), nodeacls.NodeID(node.ID.String()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// ignoring for now, could hit a nil pointer if delete called twice
|
// ignoring for now, could hit a nil pointer if delete called twice
|
||||||
logger.Log(2, "attempted to remove node ACL for node", node.ID.String())
|
logger.Log(2, "attempted to remove node ACL for node", node.ID.String())
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4.5")
|
|
||||||
// removeZombie <- node.ID
|
// removeZombie <- node.ID
|
||||||
if err = DeleteMetrics(node.ID.String()); err != nil {
|
if err = DeleteMetrics(node.ID.String()); err != nil {
|
||||||
logger.Log(1, "unable to remove metrics from DB for node", node.ID.String(), err.Error())
|
logger.Log(1, "unable to remove metrics from DB for node", node.ID.String(), err.Error())
|
||||||
}
|
}
|
||||||
logger.Log(0, "Hereeeee-----> 4.7.4.6")
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user