4793e8dfba
Single Go binary that manages a WireGuard server based on pivpn's defaults: - config.json as the single source of truth, reconciled to the kernel via netlink, wgctrl and its own nftables table (NAT, forward, input) - web interface (dashboard, peers, peer detail, add peer, server, settings) and a JSON API for the future iOS app, with session and API-token auth - client private keys are never stored; configs and QR codes shown once - per-peer traffic statistics in stats.json, logs in GHOSTWIRE.jsonl - HTTPS via Let's Encrypt, self-signed, certificate files or off - self-managing: install, update (restores the old binary on failure), uninstall and passwd subcommands; systemd unit generated by the binary Tested end to end on Ubuntu 26.04 (kernel 7.0) at dev.redetzke.aero. Claude-Session: https://claude.ai/code/session_01RAnLbyQZ5ZTA7KqwXP98nw
26 lines
803 B
Modula-2
26 lines
803 B
Modula-2
module ghostwire
|
|
|
|
go 1.27.1
|
|
|
|
require (
|
|
github.com/google/nftables v0.3.0
|
|
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
|
|
github.com/vishvananda/netlink v1.3.1
|
|
golang.org/x/crypto v0.57.0
|
|
golang.org/x/sys v0.48.0
|
|
golang.org/x/term v0.46.0
|
|
golang.zx2c4.com/wireguard/wgctrl v0.0.0-20241231184526-a9ab2273dd10
|
|
)
|
|
|
|
require (
|
|
github.com/google/go-cmp v0.6.0 // indirect
|
|
github.com/mdlayher/genetlink v1.3.2 // indirect
|
|
github.com/mdlayher/netlink v1.7.3-0.20250113171957-fbb4dce95f42 // indirect
|
|
github.com/mdlayher/socket v0.5.1 // indirect
|
|
github.com/vishvananda/netns v0.0.5 // indirect
|
|
golang.org/x/net v0.58.0 // indirect
|
|
golang.org/x/sync v0.23.0 // indirect
|
|
golang.org/x/text v0.42.0 // indirect
|
|
golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect
|
|
)
|