Browse Source

cluster: allow empty wgN.conf files as markers to enable the ring

Signed-off-by: Alejandro Mery <amery@jpi.io>
pull/31/head
Alejandro Mery 1 year ago
parent
commit
543824a54a
  1. 24
      pkg/cluster/machine_rings.go
  2. 10
      pkg/wireguard/config.go

24
pkg/cluster/machine_rings.go

@ -118,21 +118,31 @@ func (m *Machine) tryApplyWireguardConfig(ring int) error {
} }
} }
func (m *Machine) applyWireguardConfig(ring int, wg *wireguard.Config) error { func (m *Machine) applyWireguardConfigNode(ring int, wg *wireguard.Config) error {
addr := wg.GetAddress() addr := wg.GetAddress()
zoneID, nodeID, ok := Rings[ring].Decode(addr) if !core.IsZero(addr) {
if !ok { zoneID, nodeID, ok := Rings[ring].Decode(addr)
return fmt.Errorf("%s: invalid address", addr) if !ok {
} return fmt.Errorf("%s: invalid address", addr)
}
if err := m.applyZoneNodeID(zoneID, nodeID); err != nil { if err := m.applyZoneNodeID(zoneID, nodeID); err != nil {
return core.Wrap(err, "%s: invalid address", addr) return core.Wrap(err, "%s: invalid address", addr)
}
} }
if err := m.applyWireguardInterfaceConfig(ring, wg.Interface); err != nil { if err := m.applyWireguardInterfaceConfig(ring, wg.Interface); err != nil {
return core.Wrap(err, "interface") return core.Wrap(err, "interface")
} }
return nil
}
func (m *Machine) applyWireguardConfig(ring int, wg *wireguard.Config) error {
if err := m.applyWireguardConfigNode(ring, wg); err != nil {
return err
}
for _, peer := range wg.Peer { for _, peer := range wg.Peer {
err := m.applyWireguardPeerConfig(ring, peer) err := m.applyWireguardPeerConfig(ring, peer)
switch { switch {

10
pkg/wireguard/config.go

@ -175,10 +175,12 @@ func (p interfaceConfig) Export() (InterfaceConfig, error) {
ListenPort: p.ListenPort, ListenPort: p.ListenPort,
} }
out.PrivateKey, err = PrivateKeyFromBase64(p.PrivateKey) if p.PrivateKey != "" {
if err != nil { out.PrivateKey, err = PrivateKeyFromBase64(p.PrivateKey)
err = core.Wrap(err, "PrivateKey") if err != nil {
return InterfaceConfig{}, err err = core.Wrap(err, "PrivateKey")
return InterfaceConfig{}, err
}
} }
return out, nil return out, nil

Loading…
Cancel
Save