MCPcopy Create free account
hub / github.com/PasarGuard/node / syncUsersFull

Method syncUsersFull

backend/wireguard/user_full_sync.go:9–55  ·  view source on GitHub ↗
(users []*common.User)

Source from the content-addressed store, hash-verified

7)
8
9func (wg *WireGuard) syncUsersFull(users []*common.User) error {
10 normalizedUsers := normalizeUsers(users)
11 existingByKey := wg.buildExistingPeersByKeySnapshot()
12
13 desiredPeers, err := wg.collectDesiredPeers(normalizedUsers)
14 if err != nil {
15 return err
16 }
17
18 diff, err := wg.buildSyncDiff(existingByKey, desiredPeers)
19 if err != nil {
20 return err
21 }
22
23 if !diff.Changed {
24 return nil
25 }
26
27 psk, _ := wg.config.GetPreSharedKey()
28 peerConfigs, appliedKeys := buildTargetPeerConfigs(diff.TargetPeers, psk)
29
30 wg.mu.RLock()
31 if err := wg.ensureRunningWithManagerLocked(); err != nil {
32 wg.mu.RUnlock()
33 return err
34 }
35 manager := wg.manager
36 wg.mu.RUnlock()
37
38 if err := manager.ApplyPeersReplaceAll(peerConfigs); err != nil {
39 return fmt.Errorf("failed to apply full peer snapshot: %w", err)
40 }
41
42 var validTargetPeers []*PeerInfo
43 for key, peer := range diff.TargetPeers {
44 if _, ok := appliedKeys[key]; ok {
45 validTargetPeers = append(validTargetPeers, peer)
46 }
47 }
48
49 removedKeys := wg.peerStore.ReplaceAll(validTargetPeers)
50 for _, key := range removedKeys {
51 wg.statsTracker.RemoveStats(key)
52 }
53
54 return nil
55}
56
57func (wg *WireGuard) buildExistingPeersByKeySnapshot() map[string]*PeerInfo {
58 existingPeers := wg.peerStore.GetAll()

Callers 1

SyncUsersMethod · 0.95

Calls 10

collectDesiredPeersMethod · 0.95
buildSyncDiffMethod · 0.95
normalizeUsersFunction · 0.85
buildTargetPeerConfigsFunction · 0.85
GetPreSharedKeyMethod · 0.80
ApplyPeersReplaceAllMethod · 0.80
ReplaceAllMethod · 0.80
RemoveStatsMethod · 0.80

Tested by

no test coverage detected