summaryrefslogtreecommitdiff
path: root/pkg/wgconf/wgconf.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/wgconf/wgconf.go')
-rw-r--r--pkg/wgconf/wgconf.go25
1 files changed, 20 insertions, 5 deletions
diff --git a/pkg/wgconf/wgconf.go b/pkg/wgconf/wgconf.go
index 36434ba..5eac20d 100644
--- a/pkg/wgconf/wgconf.go
+++ b/pkg/wgconf/wgconf.go
@@ -1,3 +1,11 @@
+// Package wgconf provides functionality for parsing WireGuard .conf files.
+//
+// Parsing Logic:
+// wgconf implements a robust parser for WireGuard configuration files, supporting:
+// - Case-insensitive section ([Interface], [Peer]) and key names.
+// - Inline and block comments starting with # or ;.
+// - Multi-value fields (e.g., AllowedIPs) separated by commas.
+// - Flexible whitespace handling around keys and values.
package wgconf
import (
@@ -9,16 +17,23 @@ import (
// Config represents a parsed WireGuard configuration file.
type Config struct {
+ // PrivateKey is the local interface's private key.
PrivateKey string
- Address string
- DNS string
- Peers []Peer
+ // Address is the local interface's IP address.
+ Address string
+ // DNS is the DNS server to be used when the tunnel is active.
+ DNS string
+ // Peers is the list of remote peers defined in the configuration.
+ Peers []Peer
}
// Peer represents a WireGuard peer.
type Peer struct {
- PublicKey string
- Endpoint string
+ // PublicKey is the remote peer's public key.
+ PublicKey string
+ // Endpoint is the public IP and port of the remote peer.
+ Endpoint string
+ // AllowedIPs is the list of IP addresses/networks allowed for this peer.
AllowedIPs []string
}