implement new map builder full rebuilder for other parts

This commit is contained in:
crn4
2025-09-05 12:30:13 +02:00
parent 0ae2241573
commit ca85aa9b8f
18 changed files with 247 additions and 26 deletions
+27
View File
@@ -404,6 +404,9 @@ func (am *DefaultAccountManager) UpdateAccountSettings(ctx context.Context, acco
}
if updateAccountPeers || extraSettingsChanged || groupChangesAffectPeers {
if err := am.RecalculateNetworkMapCache(ctx, accountID); err != nil {
return nil, err
}
go am.UpdateAccountPeers(ctx, accountID)
}
@@ -1486,6 +1489,21 @@ func (am *DefaultAccountManager) SyncUserJWTGroups(ctx context.Context, userAuth
}
if removedGroupAffectsPeers || newGroupsAffectsPeers {
if am.expNewNetworkMap {
account, err := am.Store.GetAccount(ctx, userAuth.AccountId)
if err != nil {
return err
}
validatedPeers, err := am.integratedPeerValidator.GetValidatedPeers(ctx, account.Id, maps.Values(account.Groups), maps.Values(account.Peers), account.Settings.Extra)
if err != nil {
return err
}
am.recalculateNetworkMapCache(account, validatedPeers)
}
log.WithContext(ctx).Tracef("user %s: JWT group membership changed, updating account peers", userAuth.UserId)
am.BufferUpdateAccountPeers(ctx, userAuth.AccountId)
}
@@ -2136,6 +2154,15 @@ func (am *DefaultAccountManager) UpdatePeerIP(ctx context.Context, accountID, us
}
if updateNetworkMap {
account, err := am.Store.GetAccountByPeerID(ctx, peerID)
if err != nil {
return err
}
peer, err := am.Store.GetPeerByID(ctx, store.LockingStrengthNone, accountID, peerID)
if err != nil {
return err
}
am.updatePeerInNetworkMapCache(account, peer)
am.BufferUpdateAccountPeers(ctx, accountID)
}
return nil