Alejandro Mery
1 year ago
3 changed files with 76 additions and 61 deletions
@ -0,0 +1,76 @@
|
||||
package zones |
||||
|
||||
import ( |
||||
"io/fs" |
||||
"os" |
||||
) |
||||
|
||||
var ( |
||||
_ WireguardKeysWriter = (*Zones)(nil) |
||||
_ WireguardKeysWriter = (*Zone)(nil) |
||||
_ WireguardKeysWriter = (*Machine)(nil) |
||||
) |
||||
|
||||
// A WireguardKeysWriter writes the Wireguard Keys for all machines
|
||||
// under its scope for the specified ring
|
||||
type WireguardKeysWriter interface { |
||||
WriteWireguardKeys(ring int) error |
||||
} |
||||
|
||||
// WriteWireguardKeys rewrites all wgN.{key,pub} files
|
||||
func (m *Zones) WriteWireguardKeys(ring int) error { |
||||
return writeWireguardKeys(m, ring) |
||||
} |
||||
|
||||
// WriteWireguardKeys rewrites all wgN.{key,pub} files on this zone
|
||||
func (z *Zone) WriteWireguardKeys(ring int) error { |
||||
return writeWireguardKeys(z, ring) |
||||
} |
||||
|
||||
func writeWireguardKeys(m MachineIterator, ring int) error { |
||||
var err error |
||||
|
||||
m.ForEachMachine(func(p *Machine) bool { |
||||
err = p.WriteWireguardKeys(ring) |
||||
if os.IsNotExist(err) { |
||||
// ignore
|
||||
err = nil |
||||
} |
||||
|
||||
return err != nil |
||||
}) |
||||
|
||||
return err |
||||
} |
||||
|
||||
// WriteWireguardKeys writes the wgN.key/wgN.pub files
|
||||
func (m *Machine) WriteWireguardKeys(ring int) error { |
||||
var err error |
||||
var key, pub string |
||||
var ri *RingInfo |
||||
|
||||
ri, _ = m.getRingInfo(ring) |
||||
if ri != nil { |
||||
key = ri.Keys.PrivateKey.String() |
||||
pub = ri.Keys.PublicKey.String() |
||||
} |
||||
|
||||
switch { |
||||
case key == "": |
||||
return fs.ErrNotExist |
||||
case pub == "": |
||||
pub = ri.Keys.PrivateKey.Public().String() |
||||
} |
||||
|
||||
err = m.WriteStringFile(key+"\n", "wg%v.key", ring) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
err = m.WriteStringFile(pub+"\n", "wg%v.pub", ring) |
||||
if err != nil { |
||||
return err |
||||
} |
||||
|
||||
return nil |
||||
} |
Loading…
Reference in new issue