mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-08 14:15:25 +08:00
fix extclient comms to gws
This commit is contained in:
parent
e22519c07e
commit
984db44c78
4 changed files with 51 additions and 20 deletions
|
@ -915,7 +915,7 @@ func IsNodeAllowedToCommunicateV1(node, peer models.Node, checkDefaultPolicy boo
|
|||
|
||||
for tagID := range nodeTags {
|
||||
|
||||
if _, ok := dstMap[tagID.String()]; ok {
|
||||
if _, ok := dstMap[tagID.String()]; ok || dstAll {
|
||||
if srcAll {
|
||||
allowed = true
|
||||
break
|
||||
|
@ -931,7 +931,7 @@ func IsNodeAllowedToCommunicateV1(node, peer models.Node, checkDefaultPolicy boo
|
|||
allowedPolicies = append(allowedPolicies, policy)
|
||||
break
|
||||
}
|
||||
if _, ok := srcMap[tagID.String()]; ok {
|
||||
if _, ok := srcMap[tagID.String()]; ok || srcAll {
|
||||
if dstAll {
|
||||
allowed = true
|
||||
break
|
||||
|
@ -953,7 +953,7 @@ func IsNodeAllowedToCommunicateV1(node, peer models.Node, checkDefaultPolicy boo
|
|||
}
|
||||
}
|
||||
for tagID := range peerTags {
|
||||
if _, ok := dstMap[tagID.String()]; ok {
|
||||
if _, ok := dstMap[tagID.String()]; ok || dstAll {
|
||||
if srcAll {
|
||||
allowed = true
|
||||
break
|
||||
|
@ -1051,7 +1051,7 @@ func IsNodeAllowedToCommunicate(node, peer models.Node, checkDefaultPolicy bool)
|
|||
}
|
||||
for tagID := range nodeTags {
|
||||
allowed := false
|
||||
if _, ok := dstMap[tagID.String()]; policy.AllowedDirection == models.TrafficDirectionBi && ok {
|
||||
if _, ok := dstMap[tagID.String()]; policy.AllowedDirection == models.TrafficDirectionBi && ok || dstAll {
|
||||
if srcAll {
|
||||
allowed = true
|
||||
allowedPolicies = append(allowedPolicies, policy)
|
||||
|
@ -1068,7 +1068,7 @@ func IsNodeAllowedToCommunicate(node, peer models.Node, checkDefaultPolicy bool)
|
|||
allowedPolicies = append(allowedPolicies, policy)
|
||||
break
|
||||
}
|
||||
if _, ok := srcMap[tagID.String()]; ok {
|
||||
if _, ok := srcMap[tagID.String()]; ok || srcAll {
|
||||
if dstAll {
|
||||
allowed = true
|
||||
allowedPolicies = append(allowedPolicies, policy)
|
||||
|
@ -1088,7 +1088,7 @@ func IsNodeAllowedToCommunicate(node, peer models.Node, checkDefaultPolicy bool)
|
|||
}
|
||||
for tagID := range peerTags {
|
||||
allowed := false
|
||||
if _, ok := dstMap[tagID.String()]; ok {
|
||||
if _, ok := dstMap[tagID.String()]; ok || dstAll {
|
||||
if srcAll {
|
||||
allowed = true
|
||||
allowedPolicies = append(allowedPolicies, policy)
|
||||
|
@ -1096,7 +1096,7 @@ func IsNodeAllowedToCommunicate(node, peer models.Node, checkDefaultPolicy bool)
|
|||
}
|
||||
for tagID := range nodeTags {
|
||||
|
||||
if _, ok := srcMap[tagID.String()]; ok {
|
||||
if _, ok := srcMap[tagID.String()]; ok || srcAll {
|
||||
allowed = true
|
||||
break
|
||||
}
|
||||
|
@ -1107,7 +1107,7 @@ func IsNodeAllowedToCommunicate(node, peer models.Node, checkDefaultPolicy bool)
|
|||
break
|
||||
}
|
||||
|
||||
if _, ok := srcMap[tagID.String()]; policy.AllowedDirection == models.TrafficDirectionBi && ok {
|
||||
if _, ok := srcMap[tagID.String()]; policy.AllowedDirection == models.TrafficDirectionBi && ok || srcAll {
|
||||
if dstAll {
|
||||
allowed = true
|
||||
allowedPolicies = append(allowedPolicies, policy)
|
||||
|
@ -1346,6 +1346,8 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
|
|||
}
|
||||
srcTags := convAclTagToValueMap(acl.Src)
|
||||
dstTags := convAclTagToValueMap(acl.Dst)
|
||||
_, srcAll := srcTags["*"]
|
||||
_, dstAll := dstTags["*"]
|
||||
aclRule := models.AclRule{
|
||||
ID: acl.ID,
|
||||
AllowedProtocol: acl.Proto,
|
||||
|
@ -1358,16 +1360,16 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
|
|||
var existsInSrcTag bool
|
||||
var existsInDstTag bool
|
||||
|
||||
if _, ok := srcTags[nodeTag.String()]; ok {
|
||||
if _, ok := srcTags[nodeTag.String()]; ok || srcAll {
|
||||
existsInSrcTag = true
|
||||
}
|
||||
if _, ok := srcTags[targetnode.ID.String()]; ok {
|
||||
if _, ok := srcTags[targetnode.ID.String()]; ok || srcAll {
|
||||
existsInSrcTag = true
|
||||
}
|
||||
if _, ok := dstTags[nodeTag.String()]; ok {
|
||||
if _, ok := dstTags[nodeTag.String()]; ok || dstAll {
|
||||
existsInDstTag = true
|
||||
}
|
||||
if _, ok := dstTags[targetnode.ID.String()]; ok {
|
||||
if _, ok := dstTags[targetnode.ID.String()]; ok || dstAll {
|
||||
existsInDstTag = true
|
||||
}
|
||||
|
||||
|
@ -1390,6 +1392,9 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
|
|||
if node.ID == targetnode.ID {
|
||||
continue
|
||||
}
|
||||
if node.IsStatic && node.StaticNode.IngressGatewayID == targetnode.ID.String() {
|
||||
continue
|
||||
}
|
||||
if node.Address.IP != nil {
|
||||
aclRule.IPList = append(aclRule.IPList, node.AddressIPNet4())
|
||||
}
|
||||
|
@ -1423,6 +1428,9 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
|
|||
if node.ID == targetnode.ID {
|
||||
continue
|
||||
}
|
||||
if node.IsStatic && node.StaticNode.IngressGatewayID == targetnode.ID.String() {
|
||||
continue
|
||||
}
|
||||
if node.Address.IP != nil {
|
||||
aclRule.IPList = append(aclRule.IPList, node.AddressIPNet4())
|
||||
}
|
||||
|
@ -1462,6 +1470,9 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
|
|||
if node.ID == targetnode.ID {
|
||||
continue
|
||||
}
|
||||
if node.IsStatic && node.StaticNode.IngressGatewayID == targetnode.ID.String() {
|
||||
continue
|
||||
}
|
||||
if node.Address.IP != nil {
|
||||
aclRule.IPList = append(aclRule.IPList, node.AddressIPNet4())
|
||||
}
|
||||
|
@ -1490,6 +1501,9 @@ func GetAclRulesForNode(targetnodeI *models.Node) (rules map[string]models.AclRu
|
|||
if node.ID == targetnode.ID {
|
||||
continue
|
||||
}
|
||||
if node.IsStatic && node.StaticNode.IngressGatewayID == targetnode.ID.String() {
|
||||
continue
|
||||
}
|
||||
if node.Address.IP != nil {
|
||||
aclRule.IPList = append(aclRule.IPList, node.AddressIPNet4())
|
||||
}
|
||||
|
|
|
@ -458,6 +458,7 @@ func GetStaticNodeIps(node models.Node) (ips []net.IP) {
|
|||
func getFwRulesForNodeAndPeerOnGw(node, peer models.Node, allowedPolicies []models.Acl) (rules []models.FwRule) {
|
||||
|
||||
for _, policy := range allowedPolicies {
|
||||
// if static peer dst rule not for ingress node -> skip
|
||||
rules = append(rules, models.FwRule{
|
||||
SrcIP: net.IPNet{
|
||||
IP: node.Address.IP,
|
||||
|
@ -677,13 +678,19 @@ func GetFwRulesOnIngressGateway(node models.Node) (rules []models.FwRule) {
|
|||
if !nodeI.IsStatic || nodeI.IsUserNode {
|
||||
continue
|
||||
}
|
||||
if nodeI.StaticNode.IngressGatewayID != node.ID.String() {
|
||||
continue
|
||||
}
|
||||
// if nodeI.StaticNode.IngressGatewayID != node.ID.String() {
|
||||
// continue
|
||||
// }
|
||||
for _, peer := range nodes {
|
||||
if peer.StaticNode.ClientID == nodeI.StaticNode.ClientID || peer.IsUserNode {
|
||||
continue
|
||||
}
|
||||
// if nodeI.StaticNode.IngressGatewayID != node.ID.String() && !peer.IsGw {
|
||||
// continue
|
||||
// }
|
||||
// if peer.IsStatic && peer.StaticNode.IngressGatewayID !=node.ID.String(){
|
||||
|
||||
// }
|
||||
if ok, allowedPolicies := IsNodeAllowedToCommunicateV1(nodeI.StaticNode.ConvertToStaticNode(), peer, true); ok {
|
||||
rules = append(rules, getFwRulesForNodeAndPeerOnGw(nodeI.StaticNode.ConvertToStaticNode(), peer, allowedPolicies)...)
|
||||
}
|
||||
|
|
|
@ -836,12 +836,12 @@ func GetTagMapWithNodesByNetwork(netID models.NetworkID, withStaticNodes bool) (
|
|||
tagNodesMap = make(map[models.TagID][]models.Node)
|
||||
nodes, _ := GetNetworkNodes(netID.String())
|
||||
for _, nodeI := range nodes {
|
||||
if nodeI.Tags == nil {
|
||||
continue
|
||||
}
|
||||
tagNodesMap[models.TagID(nodeI.ID.String())] = []models.Node{
|
||||
nodeI,
|
||||
}
|
||||
if nodeI.Tags == nil {
|
||||
continue
|
||||
}
|
||||
for nodeTagID := range nodeI.Tags {
|
||||
tagNodesMap[nodeTagID] = append(tagNodesMap[nodeTagID], nodeI)
|
||||
}
|
||||
|
@ -860,7 +860,7 @@ func AddTagMapWithStaticNodes(netID models.NetworkID,
|
|||
return tagNodesMap
|
||||
}
|
||||
for _, extclient := range extclients {
|
||||
if extclient.Tags == nil || extclient.RemoteAccessClientID != "" {
|
||||
if extclient.RemoteAccessClientID != "" {
|
||||
continue
|
||||
}
|
||||
tagNodesMap[models.TagID(extclient.ClientID)] = []models.Node{
|
||||
|
@ -869,6 +869,10 @@ func AddTagMapWithStaticNodes(netID models.NetworkID,
|
|||
StaticNode: extclient,
|
||||
},
|
||||
}
|
||||
if extclient.Tags == nil {
|
||||
continue
|
||||
}
|
||||
|
||||
for tagID := range extclient.Tags {
|
||||
tagNodesMap[tagID] = append(tagNodesMap[tagID], models.Node{
|
||||
IsStatic: true,
|
||||
|
@ -891,6 +895,12 @@ func AddTagMapWithStaticNodesWithUsers(netID models.NetworkID,
|
|||
return tagNodesMap
|
||||
}
|
||||
for _, extclient := range extclients {
|
||||
tagNodesMap[models.TagID(extclient.ClientID)] = []models.Node{
|
||||
{
|
||||
IsStatic: true,
|
||||
StaticNode: extclient,
|
||||
},
|
||||
}
|
||||
if extclient.Tags == nil {
|
||||
continue
|
||||
}
|
||||
|
|
|
@ -253,7 +253,7 @@ save_config() { (
|
|||
fi
|
||||
# copy entries from the previous config
|
||||
local toCopy=("SERVER_HOST" "SERVER_HOST6" "MASTER_KEY" "MQ_USERNAME" "MQ_PASSWORD" "LICENSE_KEY" "NETMAKER_TENANT_ID"
|
||||
"INSTALL_TYPE" "NODE_ID" "DNS_MODE" "NETCLIENT_AUTO_UPDATE" "API_PORT"
|
||||
"INSTALL_TYPE" "NODE_ID" "DNS_MODE" "NETCLIENT_AUTO_UPDATE" "API_PORT" "MANAGE_DNS" "DEFAULT_DOMAIN"
|
||||
"CORS_ALLOWED_ORIGIN" "DISPLAY_KEYS" "DATABASE" "SERVER_BROKER_ENDPOINT" "VERBOSITY"
|
||||
"DEBUG_MODE" "REST_BACKEND" "DISABLE_REMOTE_IP_CHECK" "TELEMETRY" "ALLOWED_EMAIL_DOMAINS" "AUTH_PROVIDER" "CLIENT_ID" "CLIENT_SECRET"
|
||||
"FRONTEND_URL" "AZURE_TENANT" "OIDC_ISSUER" "EXPORTER_API_PORT" "JWT_VALIDITY_DURATION" "RAC_AUTO_DISABLE" "CACHING_ENABLED" "ENDPOINT_DETECTION"
|
||||
|
|
Loading…
Add table
Reference in a new issue