Signed-off-by: Alejandro Mery <amery@jpi.io>
This commit is contained in:
2023-08-24 21:48:00 +00:00
parent 568fd71d89
commit a454938bd7
4 changed files with 151 additions and 17 deletions
+89
View File
@@ -3,6 +3,7 @@ package zones
import (
"bytes"
"fmt"
"io/fs"
"os"
"darvaza.org/core"
@@ -195,3 +196,91 @@ func (m *Machine) applyZoneNodeID(zoneID, nodeID int) error {
return nil
}
func (*Machine) syncRingConfig(_ int) error {
// _, err := m.getRingNodes(ring)
return nil
}
func (m *Machine) createRingInfo(ring int, enabled bool) (*RingInfo, error) {
keys, err := wireguard.NewKeyPair()
if err != nil {
return nil, err
}
ri := &RingInfo{
Ring: ring,
Enabled: enabled,
Keys: keys,
}
err = m.applyRingInfo(ring, ri)
if err != nil {
return nil, err
}
return ri, nil
}
func (m *Machine) writeRingInfo(ri *RingInfo) error {
var err error
if m == nil || ri == nil {
return fs.ErrInvalid
}
err = m.writeRingInfoPrivate(ri.Ring, ri.Keys.PrivateKey)
if err != nil {
return err
}
err = m.writeRingInfoPublic(ri.Ring, ri.Keys.PublicKey)
if err != nil {
return err
}
if !ri.Enabled {
return m.deleteRingInfoConf(ri.Ring)
}
return m.writeRingInfoConf(ri.Ring, ri.Keys.PrivateKey)
}
func (m *Machine) writeRingInfoPrivate(ring int, _ wireguard.PrivateKey) error {
f, err := m.CreateTruncFile("wg%v.key", ring)
if err != nil {
return err
}
defer f.Close()
return nil
}
func (m *Machine) writeRingInfoPublic(ring int, _ wireguard.PublicKey) error {
f, err := m.CreateTruncFile("wg%v.pub", ring)
if err != nil {
return err
}
defer f.Close()
return nil
}
func (m *Machine) writeRingInfoConf(ring int, _ wireguard.PrivateKey) error {
f, err := m.CreateTruncFile("wg%v.conf", ring)
if err != nil {
return err
}
defer f.Close()
return nil
}
func (m *Machine) deleteRingInfoConf(ring int) error {
err := m.RemoveFile("wg%v.conf", ring)
switch err {
case os.ErrNotExist:
return nil
default:
return err
}
}