|
|
@ -11,25 +11,24 @@ import ( |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
// GetWireguardKeys reads a wgN.key/wgN.pub files
|
|
|
|
// GetWireguardKeys reads a wgN.key/wgN.pub files
|
|
|
|
func (m *Machine) GetWireguardKeys(ring int) (*wireguard.KeyPair, error) { |
|
|
|
func (m *Machine) GetWireguardKeys(ring int) (wireguard.KeyPair, error) { |
|
|
|
var ( |
|
|
|
var ( |
|
|
|
data []byte |
|
|
|
data []byte |
|
|
|
err error |
|
|
|
err error |
|
|
|
key wireguard.PrivateKey |
|
|
|
out wireguard.KeyPair |
|
|
|
pub wireguard.PublicKey |
|
|
|
|
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|
data, err = m.ReadFile("wg%v.key", ring) |
|
|
|
data, err = m.ReadFile("wg%v.key", ring) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
// failed to read
|
|
|
|
// failed to read
|
|
|
|
return nil, err |
|
|
|
return out, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
key, err = wireguard.PrivateKeyFromBase64(string(data)) |
|
|
|
out.PrivateKey, err = wireguard.PrivateKeyFromBase64(string(data)) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
// bad key
|
|
|
|
// bad key
|
|
|
|
err = core.Wrapf(err, "wg%v.key", ring) |
|
|
|
err = core.Wrapf(err, "wg%v.key", ring) |
|
|
|
return nil, err |
|
|
|
return out, err |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
data, err = m.ReadFile("wg%v.pub", ring) |
|
|
|
data, err = m.ReadFile("wg%v.pub", ring) |
|
|
@ -38,27 +37,19 @@ func (m *Machine) GetWireguardKeys(ring int) (*wireguard.KeyPair, error) { |
|
|
|
// no wgN.pub is fine
|
|
|
|
// no wgN.pub is fine
|
|
|
|
case err != nil: |
|
|
|
case err != nil: |
|
|
|
// failed to read
|
|
|
|
// failed to read
|
|
|
|
return nil, err |
|
|
|
return out, err |
|
|
|
default: |
|
|
|
default: |
|
|
|
// good read
|
|
|
|
// good read
|
|
|
|
pub, err = wireguard.PublicKeyFromBase64(string(data)) |
|
|
|
out.PublicKey, err = wireguard.PublicKeyFromBase64(string(data)) |
|
|
|
if err != nil { |
|
|
|
if err != nil { |
|
|
|
// bad key
|
|
|
|
// bad key
|
|
|
|
err = core.Wrapf(err, "wg%v.pub", ring) |
|
|
|
err = core.Wrapf(err, "wg%v.pub", ring) |
|
|
|
return nil, err |
|
|
|
return out, err |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
kp := &wireguard.KeyPair{ |
|
|
|
err = out.Validate() |
|
|
|
PrivateKey: key, |
|
|
|
return out, err |
|
|
|
PublicKey: pub, |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if err = kp.Validate(); err != nil { |
|
|
|
|
|
|
|
return nil, err |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return kp, nil |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
func (m *Machine) tryReadWireguardKeys(ring int) error { |
|
|
|
func (m *Machine) tryReadWireguardKeys(ring int) error { |
|
|
@ -157,7 +148,7 @@ func (m *Machine) applyWireguardInterfaceConfig(ring int, data wireguard.Interfa |
|
|
|
ri := &RingInfo{ |
|
|
|
ri := &RingInfo{ |
|
|
|
Ring: ring, |
|
|
|
Ring: ring, |
|
|
|
Enabled: true, |
|
|
|
Enabled: true, |
|
|
|
Keys: &wireguard.KeyPair{ |
|
|
|
Keys: wireguard.KeyPair{ |
|
|
|
PrivateKey: data.PrivateKey, |
|
|
|
PrivateKey: data.PrivateKey, |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
@ -177,7 +168,7 @@ func (m *Machine) applyWireguardPeerConfig(ring int, pc wireguard.PeerConfig) er |
|
|
|
ri := &RingInfo{ |
|
|
|
ri := &RingInfo{ |
|
|
|
Ring: ring, |
|
|
|
Ring: ring, |
|
|
|
Enabled: true, |
|
|
|
Enabled: true, |
|
|
|
Keys: &wireguard.KeyPair{ |
|
|
|
Keys: wireguard.KeyPair{ |
|
|
|
PublicKey: pc.PublicKey, |
|
|
|
PublicKey: pc.PublicKey, |
|
|
|
}, |
|
|
|
}, |
|
|
|
} |
|
|
|
} |
|
|
|