MCPcopy
hub / github.com/Place1/wg-access-server / sync

Method sync

internal/devices/devices.go:94–122  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

92}
93
94func (d *DeviceManager) sync() error {
95 devices, err := d.ListAllDevices()
96 if err != nil {
97 return errors.Wrap(err, "failed to list devices")
98 }
99
100 peers, err := d.wg.ListPeers()
101 if err != nil {
102 return errors.Wrap(err, "failed to list peers")
103 }
104
105 // Remove any peers for devices that are no longer in storage
106 for _, peer := range peers {
107 if !deviceListContains(devices, peer.PublicKey.String()) {
108 if err := d.wg.RemovePeer(peer.PublicKey.String()); err != nil {
109 logrus.Error(errors.Wrapf(err, "failed to remove peer during sync: %s", peer.PublicKey.String()))
110 }
111 }
112 }
113
114 // Add peers for all devices in storage
115 for _, device := range devices {
116 if err := d.wg.AddPeer(device.PublicKey, device.Address); err != nil {
117 logrus.Warn(errors.Wrapf(err, "failed to add device during sync: %s", device.Name))
118 }
119 }
120
121 return nil
122}
123
124func (d *DeviceManager) ListAllDevices() ([]*storage.Device, error) {
125 return d.storage.List("")

Callers 1

StartSyncMethod · 0.95

Calls 3

ListAllDevicesMethod · 0.95
deviceListContainsFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected