awg-ctrl: commands for the secret path, connection log, metrics, hub, check
The new features were only reachable from the web panel. awg-ctrl now has: - panel [path new|off|<path>] — the panel address; a new random, own or no secret path (cli.env, panel restarted, VPN untouched); - log [<search>] [-n N] and log seen — the connection log of this server and who was online when, with sen:// device and master key names from ui.db when the panel is on the same machine; - metrics [token|revoke] — the metrics-only token for an external Prometheus, printed once with a ready prometheus.yml fragment that carries the path; - hub [legacy on|off|auto] — nodes with and without the pre-upgrade signature and the HUB_LEGACY mode; - check — what this server gives away: shared pre-randomization VPN values or no own I1, no secret path, plain-HTTP panel and subscription, the generic "sen"/"awg-node" certificate names, an open hub — each with the fix. The interactive menu gets items 10–13: panel address and path, connection log, who was online, and the check. Columns are padded by runes, not bytes, so Cyrillic names line up. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013bNGYiDst62wH3ZGTRPFLJ
This commit is contained in:
+12
-2
@@ -638,10 +638,10 @@ func (c *CLI) confirmYes(q string) bool {
|
||||
|
||||
// ── Точка входа ─────────────────────────────────────────────────────────────
|
||||
|
||||
const usage = "Usage: cli <start|stop|restart|status|credentials [user|pass]|join <awgjoin://…> [--no-panel]|unjoin|rehome <хост[:порт]>|peers [drop <область>]|monitor <install|status|remove>|migrate <export [файл]|import <файл>|cancel>|update|reinstall|uninstall>"
|
||||
const usage = "Usage: cli <start|stop|restart|status|credentials [user|pass]|join <awgjoin://…> [--no-panel]|unjoin|rehome <хост[:порт]>|peers [drop <область>]|monitor <install|status|remove>|migrate <export [файл]|import <файл>|cancel>|update|reinstall|uninstall|panel [path new|off|<путь>]|log [seen] [поиск] [-n N]|metrics [token|revoke]|hub [legacy on|off|auto]|check>"
|
||||
|
||||
// Commands — команды оператора; main передаёт сюда всё, что не роль сервиса.
|
||||
var Commands = []string{"start", "stop", "restart", "status", "credentials", "join", "unjoin", "rehome", "peers", "monitor", "migrate", "update", "reinstall", "uninstall"}
|
||||
var Commands = []string{"start", "stop", "restart", "status", "credentials", "join", "unjoin", "rehome", "peers", "monitor", "migrate", "update", "reinstall", "uninstall", "panel", "log", "metrics", "hub", "check"}
|
||||
|
||||
// Main выполняет команду CLI (args — без имени бинарника). Пусто — интерактивное меню.
|
||||
func Main(args []string) {
|
||||
@@ -686,6 +686,16 @@ func Main(args []string) {
|
||||
c.peersCmd(sub, hasSub, a2, hasA2)
|
||||
case "monitor":
|
||||
c.monitorCmd(sub)
|
||||
case "panel":
|
||||
c.panelCmd(args[1:])
|
||||
case "log":
|
||||
c.logCmd(args[1:])
|
||||
case "metrics":
|
||||
c.metricsCmd(args[1:])
|
||||
case "hub":
|
||||
c.hubCmd(args[1:])
|
||||
case "check":
|
||||
c.checkCmd()
|
||||
case "update", "reinstall", "uninstall":
|
||||
// Из командной строки — без своего вопроса: установщик сам спросит, что нужно.
|
||||
c.runInstaller(args[0], false)
|
||||
|
||||
Reference in New Issue
Block a user