Forráskód Böngészése

fix extclient comms with users

abhishek9686 3 hónapja
szülő
commit
2d906826e5
1 módosított fájl, 28 hozzáadás és 4 törlés
  1. 28 4
      pro/logic/acls.go

+ 28 - 4
pro/logic/acls.go

@@ -928,8 +928,18 @@ func getEgressUserRulesForNode(targetnode *models.Node,
 	acls := listUserPolicies(models.NetworkID(targetnode.Network))
 	var targetNodeTags = make(map[models.TagID]struct{})
 	targetNodeTags["*"] = struct{}{}
-	for _, rangeI := range targetnode.EgressDetails.EgressGatewayRanges {
-		targetNodeTags[models.TagID(rangeI)] = struct{}{}
+	egs, _ := (&schema.Egress{Network: targetnode.Network}).ListByNetwork(db.WithContext(context.TODO()))
+	if len(egs) == 0 {
+		return rules
+	}
+	for _, egI := range egs {
+		if !egI.Status {
+			continue
+		}
+		if _, ok := egI.Nodes[targetnode.ID.String()]; ok {
+			targetNodeTags[models.TagID(egI.Range)] = struct{}{}
+			targetNodeTags[models.TagID(egI.ID)] = struct{}{}
+		}
 	}
 	for _, acl := range acls {
 		if !acl.Enabled {
@@ -1481,9 +1491,7 @@ func GetEgressRulesForNode(targetnode models.Node) (rules map[string]models.AclR
 			continue
 		}
 		if _, ok := egI.Nodes[targetnode.ID.String()]; ok {
-
 			targetNodeTags[models.TagID(egI.Range)] = struct{}{}
-
 			targetNodeTags[models.TagID(egI.ID)] = struct{}{}
 		}
 	}
@@ -1545,6 +1553,10 @@ func GetEgressRulesForNode(targetnode models.Node) (rules map[string]models.AclR
 							if err == nil {
 								nodes = append(nodes, node)
 							}
+							extclient, err := logic.GetExtClient(dst, targetnode.Network)
+							if err == nil {
+								nodes = append(nodes, extclient.ConvertToStaticNode())
+							}
 						}
 
 						for _, node := range nodes {
@@ -1579,6 +1591,10 @@ func GetEgressRulesForNode(targetnode models.Node) (rules map[string]models.AclR
 							if err == nil {
 								nodes = append(nodes, node)
 							}
+							extclient, err := logic.GetExtClient(src, targetnode.Network)
+							if err == nil {
+								nodes = append(nodes, extclient.ConvertToStaticNode())
+							}
 						}
 						for _, node := range nodes {
 							if node.ID == targetnode.ID {
@@ -1609,6 +1625,10 @@ func GetEgressRulesForNode(targetnode models.Node) (rules map[string]models.AclR
 						if err == nil {
 							nodes = append(nodes, node)
 						}
+						extclient, err := logic.GetExtClient(srcID, targetnode.Network)
+						if err == nil {
+							nodes = append(nodes, extclient.ConvertToStaticNode())
+						}
 					}
 					for dstID := range dstTags {
 						if dstID == targetnode.ID.String() {
@@ -1618,6 +1638,10 @@ func GetEgressRulesForNode(targetnode models.Node) (rules map[string]models.AclR
 						if err == nil {
 							nodes = append(nodes, node)
 						}
+						extclient, err := logic.GetExtClient(dstID, targetnode.Network)
+						if err == nil {
+							nodes = append(nodes, extclient.ConvertToStaticNode())
+						}
 					}
 					for _, node := range nodes {
 						if node.ID == targetnode.ID {