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

Method StartSync

internal/devices/devices.go:27–60  ·  view source on GitHub ↗
(disableMetadataCollection bool)

Source from the content-addressed store, hash-verified

25}
26
27func (d *DeviceManager) StartSync(disableMetadataCollection bool) error {
28 // Start listening to the device add/remove events
29 d.storage.OnAdd(func(device *storage.Device) {
30 logrus.Debugf("storage event: device added: %s/%s", device.Owner, device.Name)
31 if err := d.wg.AddPeer(device.PublicKey, device.Address); err != nil {
32 logrus.Error(errors.Wrap(err, "failed to add wireguard peer"))
33 }
34 })
35
36 d.storage.OnDelete(func(device *storage.Device) {
37 logrus.Debugf("storage event: device removed: %s/%s", device.Owner, device.Name)
38 if err := d.wg.RemovePeer(device.PublicKey); err != nil {
39 logrus.Error(errors.Wrap(err, "failed to remove wireguard peer"))
40 }
41 })
42
43 d.storage.OnReconnect(func() {
44 if err := d.sync(); err != nil {
45 logrus.Error(errors.Wrap(err, "device sync after storage backend reconnect event failed"))
46 }
47 })
48
49 // Do an initial sync of existing devices
50 if err := d.sync(); err != nil {
51 return errors.Wrap(err, "initial device sync from storage failed")
52 }
53
54 // start the metrics loop
55 if !disableMetadataCollection {
56 go metadataLoop(d)
57 }
58
59 return nil
60}
61
62func (d *DeviceManager) AddDevice(identity *authsession.Identity, name string, publicKey string) (*storage.Device, error) {
63 if name == "" {

Callers 1

RunMethod · 0.80

Calls 5

syncMethod · 0.95
metadataLoopFunction · 0.85
OnAddMethod · 0.65
OnDeleteMethod · 0.65
OnReconnectMethod · 0.65

Tested by

no test coverage detected