From a67911df6758c110d5da5700ef9a4419bfe3ca3c Mon Sep 17 00:00:00 2001 From: Samuel Lorch Date: Sat, 6 May 2023 21:13:44 +0200 Subject: [PATCH] Add Wireguard Config --- internal/definitions/config/config.go | 2 ++ internal/definitions/vpn/interface.go | 9 +++++++++ internal/definitions/vpn/peer.go | 10 ++++++++++ internal/definitions/vpn/vpn.go | 5 +++++ internal/definitions/vpn/wireguard.go | 6 ++++++ 5 files changed, 32 insertions(+) create mode 100644 internal/definitions/vpn/interface.go create mode 100644 internal/definitions/vpn/peer.go create mode 100644 internal/definitions/vpn/vpn.go create mode 100644 internal/definitions/vpn/wireguard.go diff --git a/internal/definitions/config/config.go b/internal/definitions/config/config.go index 232aa32..489d2c8 100644 --- a/internal/definitions/config/config.go +++ b/internal/definitions/config/config.go @@ -10,6 +10,7 @@ import ( "nfsense.net/nfsense/internal/definitions/network" "nfsense.net/nfsense/internal/definitions/object" "nfsense.net/nfsense/internal/definitions/service" + "nfsense.net/nfsense/internal/definitions/vpn" ) type Config struct { @@ -18,6 +19,7 @@ type Config struct { Object object.Object `json:"object" validate:"required,dive"` Network network.Network `json:"network" validate:"required,dive"` Service service.Service `json:"service" validate:"required,dive"` + VPN vpn.VPN `json:"vpn" validate:"required,dive"` } // Clone TODO find a better way to deep copy diff --git a/internal/definitions/vpn/interface.go b/internal/definitions/vpn/interface.go new file mode 100644 index 0000000..8963aaa --- /dev/null +++ b/internal/definitions/vpn/interface.go @@ -0,0 +1,9 @@ +package vpn + +type WireguardInterface struct { + PublicKey string `json:"public_key"` + PrivateKey string `json:"private_key"` + ListenPort uint64 `json:"listen_port"` + Peers []string `json:"peers"` + Comment string `json:"comment,omitempty"` +} diff --git a/internal/definitions/vpn/peer.go b/internal/definitions/vpn/peer.go new file mode 100644 index 0000000..d043932 --- /dev/null +++ b/internal/definitions/vpn/peer.go @@ -0,0 +1,10 @@ +package vpn + +type WireguardPeer struct { + PublicKey string `json:"public_key"` + PresharedKey *string `json:"preshared_key,omitempty"` + AllowedIPs []string `json:"allowed_ips"` + Endpoint *string `json:"endpoint,omitempty"` + PersistentKeepalive *uint64 `json:"persistent_keepalive,omitempty"` + Comment string `json:"comment,omitempty"` +} diff --git a/internal/definitions/vpn/vpn.go b/internal/definitions/vpn/vpn.go new file mode 100644 index 0000000..f5e6d2f --- /dev/null +++ b/internal/definitions/vpn/vpn.go @@ -0,0 +1,5 @@ +package vpn + +type VPN struct { + Wireguard Wireguard `json:"wireguard" validate:"required,dive"` +} diff --git a/internal/definitions/vpn/wireguard.go b/internal/definitions/vpn/wireguard.go new file mode 100644 index 0000000..54e94c4 --- /dev/null +++ b/internal/definitions/vpn/wireguard.go @@ -0,0 +1,6 @@ +package vpn + +type Wireguard struct { + Interfaces map[string]WireguardInterface `json:"interfaces" validate:"required,dive"` + Peers map[string]WireguardPeer `json:"peers" validate:"required,dive"` +}