- conntrack/event.go: TrafficEvent type - conntrack/filter.go: WG subnet filter, IsExternal, ProtoName - conntrack/subscriber.go: netlink conntrack DESTROY subscriber - writer/log.go: JSON line writer with mutex - resolver/peers.go: WG IP → peer name from conf files + endpoint index - resolver/services.go: IP:port → service name from services.json - config/config.go: reads wgctl.json, sensible defaults - cmd/root.go: CLI flags - main.go: wires everything together - DESTROY events only: full byte/packet counts per connection - filters to WireGuard subnet, marks external traffic
33 lines
No EOL
601 B
Go
33 lines
No EOL
601 B
Go
package cmd
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
)
|
|
|
|
// Flags holds CLI flags
|
|
type Flags struct {
|
|
WGDir string
|
|
Subnet string
|
|
LogFile string
|
|
Version bool
|
|
}
|
|
|
|
const Version = "0.1.0"
|
|
|
|
func Parse() *Flags {
|
|
f := &Flags{}
|
|
flag.StringVar(&f.WGDir, "wg-dir", "/etc/wireguard", "WireGuard base directory")
|
|
flag.StringVar(&f.Subnet, "subnet", "", "WireGuard subnet override")
|
|
flag.StringVar(&f.LogFile, "log-file", "", "Accept events log file override")
|
|
flag.BoolVar(&f.Version, "version", false, "Print version and exit")
|
|
flag.Parse()
|
|
|
|
if f.Version {
|
|
fmt.Println(Version)
|
|
os.Exit(0)
|
|
}
|
|
|
|
return f
|
|
} |