setup: add and remove peer on setup as runtime test
This commit is contained in:
parent
defd32b3c8
commit
4a1039e5b1
@ -3,6 +3,7 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"net"
|
||||
"net/http"
|
||||
"net/netip"
|
||||
"os"
|
||||
@ -244,7 +245,7 @@ func setup() error {
|
||||
slog.Error(fmt.Sprintf("main.IPPool: %s", err))
|
||||
os.Exit(1)
|
||||
}
|
||||
slog.Info(fmt.Sprintf("Init ip pool %s", VPNIPCIDR))
|
||||
slog.Debug(fmt.Sprintf("Init ip pool %s", VPNIPCIDR))
|
||||
|
||||
testVip, err := ipPool.Allocate()
|
||||
if err != nil {
|
||||
@ -252,13 +253,13 @@ func setup() error {
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
slog.Info(fmt.Sprintf("main.testVip: IP Pool Test IP: %s", testVip.String()))
|
||||
slog.Debug(fmt.Sprintf("main.testVip: IP Pool Test IP: %s", testVip.String()))
|
||||
err = ipPool.Free(testVip)
|
||||
if err != nil {
|
||||
slog.Error("main.testVip: Could not free test Vip from IPPool!", err)
|
||||
os.Exit(1)
|
||||
}
|
||||
slog.Info("main.testVip: Test IP Freed")
|
||||
slog.Debug("main.testVip: Test IP Freed")
|
||||
|
||||
IPPool = ipPool
|
||||
|
||||
@ -273,6 +274,59 @@ func setup() error {
|
||||
os.Exit(0)
|
||||
}()
|
||||
|
||||
err = testWgPeerAdd(wgLink)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func testWgPeerAdd(wgLink *hvpnnode3.WGLink) error {
|
||||
privateKey, err := wgtypes.GeneratePrivateKey()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
publicKey := privateKey.PublicKey()
|
||||
|
||||
ip, err := IPPool.Allocate()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
peerConfig := wgtypes.PeerConfig{
|
||||
PublicKey: publicKey,
|
||||
AllowedIPs: []net.IPNet{
|
||||
{
|
||||
IP: ip,
|
||||
Mask: net.IPv4Mask(255, 255, 255, 255),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
wgConfig := wgtypes.Config{
|
||||
Peers: []wgtypes.PeerConfig{peerConfig},
|
||||
}
|
||||
|
||||
err = wgLink.ConfigureDevice(wgLink.Name, wgConfig)
|
||||
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
slog.Debug(fmt.Sprintf("Added test peer %v", peerConfig.PublicKey))
|
||||
|
||||
wgConfig.ReplacePeers = true
|
||||
wgConfig.Peers = []wgtypes.PeerConfig{}
|
||||
|
||||
err = wgLink.ConfigureDevice(wgLink.Name, wgConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
slog.Debug("Removed test peer")
|
||||
IPPool.Free(ip)
|
||||
slog.Debug("Freed test peer ip")
|
||||
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user