package zones import ( "os" "git.jpi.io/amery/jpictl/pkg/wireguard" ) type Ring struct { Ring int } func (*Ring) ExportConfig(_ int) (*wireguard.Config, error) { return nil, nil } func (*Zone) GetRing(_ int) (*Ring, error) { return &Ring{}, nil } // SyncWireguardConfig updates all wgN.conf files for the specified // ring func (z *Zone) SyncWireguardConfig(ring int) error { err := z.PruneWireguardConfig(ring) if err != nil { return err } r, err := z.GetRing(ring) if err != nil { return err } z.ForEachMachine(func(p *Machine) bool { if _, ok := p.getRingInfo(ring); ok { err = p.writeWireguardRing(r) } return err != nil }) return err } // PruneWireguardConfig removes wgN.conf files of machines with // the corresponding ring disabled. func (z *Zone) PruneWireguardConfig(ring int) error { var err error z.ForEachMachine(func(p *Machine) bool { _, ok := p.getRingInfo(ring) if !ok { err = p.RemoveWireguardConfig(ring) } return err != nil }) return err } // WriteWireguardKeys rewrites all wgN.{key,pub} files on this zone func (z *Zone) WriteWireguardKeys(ring int) error { var err error z.ForEachMachine(func(p *Machine) bool { err = p.WriteWireguardKeys(ring) if os.IsNotExist(err) { // ignore err = nil } return err != nil }) return err } // PruneWireguardConfig removes wgN.conf files of machines with // the corresponding ring disabled on all zones func (m *Zones) PruneWireguardConfig(ring int) error { var err error m.ForEachZone(func(z *Zone) bool { err = z.PruneWireguardConfig(ring) return err != nil }) return err } // WriteWireguardKeys rewrites all wgN.{key,pub} files func (m *Zones) WriteWireguardKeys(ring int) error { var err error m.ForEachZone(func(z *Zone) bool { err = z.WriteWireguardKeys(ring) return err != nil }) return err } // SyncWireguardConfig updates all wgN.conf files for the specified // ring func (m *Zones) SyncWireguardConfig(ring int) error { err := m.PruneWireguardConfig(ring) if err != nil { return err } }