Add Wireguard Config

This commit is contained in:
Samuel Lorch 2023-05-06 21:13:44 +02:00
parent 5bf336ff91
commit a67911df67
5 changed files with 32 additions and 0 deletions

View file

@ -10,6 +10,7 @@ import (
"nfsense.net/nfsense/internal/definitions/network" "nfsense.net/nfsense/internal/definitions/network"
"nfsense.net/nfsense/internal/definitions/object" "nfsense.net/nfsense/internal/definitions/object"
"nfsense.net/nfsense/internal/definitions/service" "nfsense.net/nfsense/internal/definitions/service"
"nfsense.net/nfsense/internal/definitions/vpn"
) )
type Config struct { type Config struct {
@ -18,6 +19,7 @@ type Config struct {
Object object.Object `json:"object" validate:"required,dive"` Object object.Object `json:"object" validate:"required,dive"`
Network network.Network `json:"network" validate:"required,dive"` Network network.Network `json:"network" validate:"required,dive"`
Service service.Service `json:"service" 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 // Clone TODO find a better way to deep copy

View file

@ -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"`
}

View file

@ -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"`
}

View file

@ -0,0 +1,5 @@
package vpn
type VPN struct {
Wireguard Wireguard `json:"wireguard" validate:"required,dive"`
}

View file

@ -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"`
}