Compare commits

..

3 Commits

Author SHA1 Message Date
amery d04a0ceb46 WIP
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-26 16:55:13 +00:00
amery fa3758bb31 zones: WireguardConfigWriter() [WIP]
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-26 16:54:49 +00:00
amery 236af793b9 zones: SyncWireguardConfig() as Prune+Write
Signed-off-by: Alejandro Mery <amery@jpi.io>
2023-08-26 16:48:40 +00:00
+31 -5
View File
@@ -13,7 +13,9 @@ var (
type machineRinger interface {
MachineIterator
SyncWireguardConfig(ring int) error
PruneWireguardConfig(ring int) error
WriteWireguardConfig(ring int) error
}
// SyncWireguardConfig updates all wgN.conf files for the specified
@@ -35,6 +37,17 @@ func (z *Zone) PruneWireguardConfig(ring int) error {
return pruneWireguardConfig(z, ring)
}
func (z *Zone) WriteWireguardConfig(ring int) error {
switch ring {
case 0:
return writeWireguardConfig(z.zones, z.zones, ring)
case 1:
return writeWireguardConfig(z.zones, z, ring)
default:
return fs.ErrInvalid
}
}
// WriteWireguardKeys rewrites all wgN.{key,pub} files on this zone
func (z *Zone) WriteWireguardKeys(ring int) error {
return writeWireguardKeys(z, ring)
@@ -64,17 +77,28 @@ func (m *Zones) PruneWireguardConfig(ring int) error {
return pruneWireguardConfig(m, ring)
}
func (m *Zones) WriteWireguardConfig(ring int) error {
switch ring {
case 0:
return writeWireguardConfig(m, m, ring)
case 1:
var err error
m.ForEachZone(func(z *Zone) bool {
err = writeWireguardConfig(m, z, ring)
return err != nil
})
return err
default:
return fs.ErrInvalid
}
}
// WriteWireguardKeys rewrites all wgN.{key,pub} files
func (m *Zones) WriteWireguardKeys(ring int) error {
return writeWireguardKeys(m, ring)
}
func syncWireguardConfig(z ZoneIterator, m machineRinger, ring int) error {
err := m.PruneWireguardConfig(ring)
if err != nil {
return err
}
r, err := NewRing(z, m, ring)
if err != nil {
return err
@@ -83,6 +107,8 @@ func syncWireguardConfig(z ZoneIterator, m machineRinger, ring int) error {
m.ForEachMachine(func(p *Machine) bool {
if _, ok := p.getRingInfo(ring); ok {
err = p.writeWireguardRingConfig(r)
} else {
err = p.RemoveWireguardConfig(ring)
}
return err != nil
})