mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-24 11:16:38 +00:00
refactor
This commit is contained in:
@@ -4,9 +4,9 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
|
|
||||||
nbdns "github.com/netbirdio/netbird/dns"
|
nbdns "github.com/netbirdio/netbird/dns"
|
||||||
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
|
||||||
resourceTypes "github.com/netbirdio/netbird/management/server/networks/resources/types"
|
resourceTypes "github.com/netbirdio/netbird/management/server/networks/resources/types"
|
||||||
routerTypes "github.com/netbirdio/netbird/management/server/networks/routers/types"
|
routerTypes "github.com/netbirdio/netbird/management/server/networks/routers/types"
|
||||||
|
nbpeer "github.com/netbirdio/netbird/management/server/peer"
|
||||||
"github.com/netbirdio/netbird/route"
|
"github.com/netbirdio/netbird/route"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -48,49 +48,54 @@ func (a *Account) GetPeerNetworkMapComponents(
|
|||||||
}
|
}
|
||||||
|
|
||||||
components.AccountSettings = &AccountSettingsInfo{
|
components.AccountSettings = &AccountSettingsInfo{
|
||||||
PeerLoginExpirationEnabled: a.Settings.PeerLoginExpirationEnabled,
|
PeerLoginExpirationEnabled: a.Settings.PeerLoginExpirationEnabled,
|
||||||
PeerLoginExpiration: a.Settings.PeerLoginExpiration,
|
PeerLoginExpiration: a.Settings.PeerLoginExpiration,
|
||||||
PeerInactivityExpirationEnabled: a.Settings.PeerInactivityExpirationEnabled,
|
PeerInactivityExpirationEnabled: a.Settings.PeerInactivityExpirationEnabled,
|
||||||
PeerInactivityExpiration: a.Settings.PeerInactivityExpiration,
|
PeerInactivityExpiration: a.Settings.PeerInactivityExpiration,
|
||||||
}
|
}
|
||||||
|
|
||||||
components.DNSSettings = &a.DNSSettings
|
components.DNSSettings = &a.DNSSettings
|
||||||
|
|
||||||
relevantPeerIDsMap, relevantGroupIDs := a.findRelevantPeersAndGroups(ctx, peerID, validatedPeersMap)
|
relevantPeers, relevantGroups, relevantPolicies, relevantRoutes := a.getPeersGroupsPoliciesRoutes(ctx, peerID, validatedPeersMap)
|
||||||
|
|
||||||
_, _, networkResourcesSourcePeers := a.GetNetworkResourcesRoutesToSync(ctx, peerID, resourcePolicies, routers)
|
_, _, networkResourcesSourcePeers := a.GetNetworkResourcesRoutesToSync(ctx, peerID, resourcePolicies, routers)
|
||||||
for sourcePeerID := range networkResourcesSourcePeers {
|
for sourcePeerID := range networkResourcesSourcePeers {
|
||||||
relevantPeerIDsMap[sourcePeerID] = struct{}{}
|
relevantPeers[sourcePeerID] = a.GetPeer(sourcePeerID)
|
||||||
}
|
}
|
||||||
|
|
||||||
for pid := range relevantPeerIDsMap {
|
// for pid := range relevantPeerIDsMap {
|
||||||
if p := a.Peers[pid]; p != nil {
|
// if p := a.Peers[pid]; p != nil {
|
||||||
components.Peers[pid] = p
|
// components.Peers[pid] = p
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
for gid := range relevantGroupIDs {
|
// for gid := range relevantGroupIDs {
|
||||||
if g := a.Groups[gid]; g != nil {
|
// if g := a.Groups[gid]; g != nil {
|
||||||
components.Groups[gid] = g
|
// components.Groups[gid] = g
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
for _, policy := range a.Policies {
|
components.Peers = relevantPeers
|
||||||
if a.isPolicyRelevantForPeer(ctx, policy, peerID, relevantGroupIDs) {
|
components.Groups = relevantGroups
|
||||||
components.Policies = append(components.Policies, policy)
|
components.Policies = relevantPolicies
|
||||||
}
|
components.Routes = relevantRoutes
|
||||||
}
|
|
||||||
|
|
||||||
for _, r := range a.Routes {
|
// for _, policy := range a.Policies {
|
||||||
if a.isRouteRelevantForPeer(ctx, r, peerID, relevantGroupIDs) {
|
// if a.isPolicyRelevantForPeer(ctx, policy, peerID, relevantGroupIDs) {
|
||||||
components.Routes = append(components.Routes, r)
|
// components.Policies = append(components.Policies, policy)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
|
// for _, r := range a.Routes {
|
||||||
|
// if a.isRouteRelevantForPeer(ctx, r, peerID, relevantGroupIDs) {
|
||||||
|
// components.Routes = append(components.Routes, r)
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
for _, nsGroup := range a.NameServerGroups {
|
for _, nsGroup := range a.NameServerGroups {
|
||||||
if nsGroup.Enabled {
|
if nsGroup.Enabled {
|
||||||
for _, gID := range nsGroup.Groups {
|
for _, gID := range nsGroup.Groups {
|
||||||
if _, found := relevantGroupIDs[gID]; found {
|
if _, found := relevantGroups[gID]; found {
|
||||||
components.NameServerGroups = append(components.NameServerGroups, nsGroup.Copy())
|
components.NameServerGroups = append(components.NameServerGroups, nsGroup.Copy())
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@@ -221,20 +226,22 @@ func (a *Account) GetPeerNetworkMapComponents(
|
|||||||
return components
|
return components
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Account) findRelevantPeersAndGroups(
|
func (a *Account) getPeersGroupsPoliciesRoutes(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
peerID string,
|
peerID string,
|
||||||
validatedPeersMap map[string]struct{},
|
validatedPeersMap map[string]struct{},
|
||||||
) (map[string]struct{}, map[string]struct{}) {
|
) (map[string]*nbpeer.Peer, map[string]*Group, []*Policy, []*route.Route) {
|
||||||
relevantPeerIDs := make(map[string]struct{}, len(a.Peers)/4)
|
relevantPeerIDs := make(map[string]*nbpeer.Peer, len(a.Peers)/4)
|
||||||
relevantGroupIDs := make(map[string]struct{}, len(a.Groups)/4)
|
relevantGroupIDs := make(map[string]*Group, len(a.Groups)/4)
|
||||||
|
relevantPolicies := make([]*Policy, 0, len(a.Policies))
|
||||||
|
relevantRoutes := make([]*route.Route, 0, len(a.Routes))
|
||||||
|
|
||||||
relevantPeerIDs[peerID] = struct{}{}
|
relevantPeerIDs[peerID] = a.GetPeer(peerID)
|
||||||
|
|
||||||
for groupID, group := range a.Groups {
|
for groupID, group := range a.Groups {
|
||||||
for _, pid := range group.Peers {
|
for _, pid := range group.Peers {
|
||||||
if pid == peerID {
|
if pid == peerID {
|
||||||
relevantGroupIDs[groupID] = struct{}{}
|
relevantGroupIDs[groupID] = a.GetGroup(groupID)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -245,6 +252,7 @@ func (a *Account) findRelevantPeersAndGroups(
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
|
policyRelevant := false
|
||||||
for _, rule := range policy.Rules {
|
for _, rule := range policy.Rules {
|
||||||
if !rule.Enabled {
|
if !rule.Enabled {
|
||||||
continue
|
continue
|
||||||
@@ -272,23 +280,28 @@ func (a *Account) findRelevantPeersAndGroups(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if peerInSources {
|
if peerInSources {
|
||||||
|
policyRelevant = true
|
||||||
for _, pid := range destinationPeers {
|
for _, pid := range destinationPeers {
|
||||||
relevantPeerIDs[pid] = struct{}{}
|
relevantPeerIDs[pid] = a.GetPeer(pid)
|
||||||
}
|
}
|
||||||
for _, dstGroupID := range rule.Destinations {
|
for _, dstGroupID := range rule.Destinations {
|
||||||
relevantGroupIDs[dstGroupID] = struct{}{}
|
relevantGroupIDs[dstGroupID] = a.GetGroup(dstGroupID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if peerInDestinations {
|
if peerInDestinations {
|
||||||
|
policyRelevant = true
|
||||||
for _, pid := range sourcePeers {
|
for _, pid := range sourcePeers {
|
||||||
relevantPeerIDs[pid] = struct{}{}
|
relevantPeerIDs[pid] = a.GetPeer(pid)
|
||||||
}
|
}
|
||||||
for _, srcGroupID := range rule.Sources {
|
for _, srcGroupID := range rule.Sources {
|
||||||
relevantGroupIDs[srcGroupID] = struct{}{}
|
relevantGroupIDs[srcGroupID] = a.GetGroup(srcGroupID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if policyRelevant {
|
||||||
|
relevantPolicies = append(relevantPolicies, policy)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, r := range a.Routes {
|
for _, r := range a.Routes {
|
||||||
@@ -318,25 +331,27 @@ func (a *Account) findRelevantPeersAndGroups(
|
|||||||
|
|
||||||
if isRelevant {
|
if isRelevant {
|
||||||
for _, groupID := range r.Groups {
|
for _, groupID := range r.Groups {
|
||||||
relevantGroupIDs[groupID] = struct{}{}
|
relevantGroupIDs[groupID] = a.GetGroup(groupID)
|
||||||
}
|
}
|
||||||
for _, groupID := range r.PeerGroups {
|
for _, groupID := range r.PeerGroups {
|
||||||
relevantGroupIDs[groupID] = struct{}{}
|
relevantGroupIDs[groupID] = a.GetGroup(groupID)
|
||||||
}
|
}
|
||||||
for _, groupID := range r.AccessControlGroups {
|
for _, groupID := range r.AccessControlGroups {
|
||||||
relevantGroupIDs[groupID] = struct{}{}
|
relevantGroupIDs[groupID] = a.GetGroup(groupID)
|
||||||
}
|
}
|
||||||
|
|
||||||
if r.Peer != "" {
|
if r.Peer != "" {
|
||||||
relevantPeerIDs[r.Peer] = struct{}{}
|
relevantPeerIDs[r.Peer] = a.GetPeer(r.Peer)
|
||||||
}
|
}
|
||||||
if r.PeerID != "" {
|
if r.PeerID != "" {
|
||||||
relevantPeerIDs[r.PeerID] = struct{}{}
|
relevantPeerIDs[r.PeerID] = a.GetPeer(r.PeerID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
relevantRoutes = append(relevantRoutes, r)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return relevantPeerIDs, relevantGroupIDs
|
return relevantPeerIDs, relevantGroupIDs, relevantPolicies, relevantRoutes
|
||||||
}
|
}
|
||||||
|
|
||||||
func (a *Account) getPeersFromGroups(ctx context.Context, groups []string, peerID string, sourcePostureChecksIDs []string, validatedPeersMap map[string]struct{}) ([]string, bool) {
|
func (a *Account) getPeersFromGroups(ctx context.Context, groups []string, peerID string, sourcePostureChecksIDs []string, validatedPeersMap map[string]struct{}) ([]string, bool) {
|
||||||
@@ -425,4 +440,3 @@ func (a *Account) isRouteRelevantForPeer(ctx context.Context, r *route.Route, pe
|
|||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user