From 87258c7a9ecf0821d40b8feae5a8b872462a6436 Mon Sep 17 00:00:00 2001 From: Alejandro Mery Date: Wed, 23 Aug 2023 14:31:44 +0000 Subject: [PATCH] zones: writeRingInfo [WIP] Signed-off-by: Alejandro Mery --- pkg/zones/machine_rings.go | 71 +++++++++++++++++++++++++++++++++++++- 1 file changed, 70 insertions(+), 1 deletion(-) diff --git a/pkg/zones/machine_rings.go b/pkg/zones/machine_rings.go index 84e8a2b..bebd025 100644 --- a/pkg/zones/machine_rings.go +++ b/pkg/zones/machine_rings.go @@ -3,6 +3,7 @@ package zones import ( "bytes" "fmt" + "io/fs" "os" "darvaza.org/core" @@ -147,5 +148,73 @@ func (m *Machine) createRingInfo(ring int, enabled bool) error { Keys: keys, } - return m.applyRingInfo(ring, ri) + err = m.applyRingInfo(ring, ri) + if err != nil { + return err + } + + return m.writeRingInfo(ri) +} + +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 + } }