package main import ( "fmt" "io" "os" ) const usage = `vpnportal — VPN-Konfig-Portal für OPNsense Aufruf: vpnportal serve [--config PFAD] Portal starten (Default) vpnportal check [--config PFAD] [--test-auth BENUTZER] vpnportal version Optionen: --config PFAD Pfad zur Konfigurationsdatei (Default: /etc/vpnportal/config.yaml) ` func main() { os.Exit(run(os.Args[1:], os.Stdout, os.Stderr)) } // commandFor waehlt das Unterkommando. Fehlt es oder beginnt das erste // Argument mit '-', gilt serve als Vorgabe. func commandFor(args []string) (cmd string, rest []string) { if len(args) > 0 && len(args[0]) > 0 && args[0][0] != '-' { return args[0], args[1:] } return "serve", args } func run(args []string, stdout, stderr io.Writer) int { cmd, rest := commandFor(args) switch cmd { case "version": fmt.Fprintln(stdout, versionString()) return 0 case "serve": return runServe(rest, stdout, stderr) case "check": return runCheck(rest, stdout, stderr) case "help", "-h", "--help": fmt.Fprint(stdout, usage) return 0 default: fmt.Fprintf(stderr, "Unbekanntes Kommando: %s\n\n%s", cmd, usage) return 2 } }