Document current product capabilities (multi-server CRUD, per-server access control, confirmed gaps)

This commit is contained in:
sysops
2026-07-11 23:53:43 +02:00
parent 3fe3dc8eeb
commit 31f504e61b
+512
View File
@@ -830,3 +830,515 @@ Keine Commits in dieser Session.
- scripts/install.sh | 5 +++--
---
## 2026-07-10 18:31 18:34 (3m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- 94f0e69 Remove stray tool-generated tmp file accidentally committed
- 867dc77 Replace from-scratch rewrite with real ngoduykhanh/wireguard-ui fork
### Geänderte Dateien
- .claude/settings.local.json.tmp.2113725.efbfaa50a5c4 | 10 ----------
---
## 2026-07-10 18:35 18:38 (2m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- e5c0a58 Adapt installers to upstream wireguard-ui build (Go+embed, yarn assets)
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-10 18:48 18:48 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-10 19:03 19:03 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-10 19:04 19:05 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-10 19:06 19:07 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-11 22:08 22:08 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-11 22:16 22:16 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-11 22:17 22:17 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-11 22:18 22:18 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 +++++++++++++++++++++++++--------------
- scripts/install.sh | 70 ++++++++++++++++++++++++++++++++++------------------------------------
- scripts/proxmox-install.sh | 10 ++++++----
- systemd/wireguard-ui-multi.service | 21 +++++++++++++++++++++
- update.sh | 19 ++++++++++++++++---
---
## 2026-07-11 22:26 22:26 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- README.md | 55 ++++++++++++++++++++++++++++++++++++++++-
- bootstrap.sh | 39 ++++++++++++++++++-----------
- scripts/install.sh | 70 +++++++++++++++++++++++++---------------------------
- scripts/proxmox-install.sh | 10 +++++---
- systemd/wireguard-ui-multi.service | 21 ++++++++++++++++
- update.sh | 19 +++++++++++---
---
## 2026-07-11 22:28 22:41 (12m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- a946c05 Add read-only multi-server API (step 2) + dedupe serverID validation
- 7eca2d0 Add server-registry store methods with record-ID validation (step 1)
- 40d7862 Add multi-server data model + legacy DB migration (step 0)
### Geänderte Dateien
- handler/routes.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- store/jsondb/jsondb.go | 37 +++++++++++++++++++++++--------------
---
## 2026-07-11 22:41 22:41 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- store/jsondb/jsondb.go | 37 +++++++++++++++++++++++--------------
---
## 2026-07-11 23:07 23:08 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- store/jsondb/jsondb.go | 37 +++++++++++++++++++++++--------------
---
## 2026-07-11 23:13 23:13 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- store/jsondb/jsondb.go | 37 +++++++++++++++++++++++--------------
---
## 2026-07-11 23:13 23:15 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- store/jsondb/jsondb.go | 37 +++++++++++++++++++++++--------------
---
## 2026-07-11 23:16 23:16 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- store/jsondb/jsondb.go | 37 +++++++++++++++++++++++--------------
---
## 2026-07-11 23:18 23:21 (2m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- 5b72a7c Add per-server access control (User.ServerIDs)
### Geänderte Dateien
- handler/routes.go | 20 ++++++++++++++++++++
- handler/session.go | 29 +++++++++++++++++++++++++++++
- main.go | 2 +-
- model/user.go | 4 ++++
- store/jsondb/jsondb.go | 21 +++++++++++++++++++++
---
## 2026-07-11 23:21 23:24 (2m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- 3842c7a Add server creation UI + user-server access assignment (step 3)
### Geänderte Dateien
- handler/routes.go | 107 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- router/router.go | 6 ++++
- templates/base.html | 8 ++++++
- templates/servers.html | 233 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
- templates/users_settings.html | 41 ++++++++++++++++++++++++++-
---
## 2026-07-11 23:24 23:24 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- c7df129 Escape server name before HTML interpolation in servers.html
### Geänderte Dateien
- templates/servers.html | 6 +++++-
---
## 2026-07-11 23:25 23:26 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- templates/servers.html | 6 +++++-
---
## 2026-07-11 23:30 23:31 (1m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- bb72a0a Rewrite README to be fork-only, drop all Docker/upstream content
### Geänderte Dateien
- README.md | 322 +++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------------------------------------------------------------------------------
---
## 2026-07-11 23:35 23:36 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- e353462 Remove Docker files (Dockerfile, docker-compose.yaml, examples/docker-compose)
### Geänderte Dateien
- Dockerfile | 77 -----------------------------------------------------------------------------
- docker-compose.yaml | 27 ---------------------------
- examples/docker-compose/README.md | 30 ------------------------------
- examples/docker-compose/boringtun.yml | 43 -------------------------------------------
- examples/docker-compose/linuxserver.yml | 42 ------------------------------------------
- examples/docker-compose/system.yml | 27 ---------------------------
---
## 2026-07-11 23:36 23:44 (7m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- Dockerfile | 77 -----------------------------------------------------------------------------
- docker-compose.yaml | 27 ---------------------------
- examples/docker-compose/README.md | 30 ------------------------------
- examples/docker-compose/boringtun.yml | 43 -------------------------------------------
- examples/docker-compose/linuxserver.yml | 42 ------------------------------------------
- examples/docker-compose/system.yml | 27 ---------------------------
---
## 2026-07-11 23:45 23:51 (6m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
- 3fe3dc8 Add per-server settings editor (step 5)
- 74389a9 Scope client management and config-apply per server (step 4)
### Geänderte Dateien
- handler/routes.go | 39 +++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- templates/servers.html | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---
## 2026-07-11 23:52 23:52 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 39 +++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- templates/servers.html | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---
## 2026-07-11 Status: What Works Today
Diese Session hat keinen Code geändert, sondern den aktuellen Stand des
Multi-Server-Umbaus gegen das committete `HEAD` verifiziert (`handler/routes.go`,
`main.go`, `model/server.go`, `model/setting.go`, `model/user.go`,
`store/jsondb/jsondb.go`, `templates/*.html`). Ziel: eine ehrliche
Bestandsaufnahme, keine Ankündigung geplanter Features.
### Datenmodell (verifiziert)
- `model/server.go`: `Server{ID, Name, KeyPair *ServerKeypair, Interface *ServerInterface}`.
- `model/setting.go`: `GlobalSetting` (app-weit: DNS, MTU, PersistentKeepalive,
FirewallMark, Table, EndpointAddress, ConfigFilePath — Legacy-Struktur) und
`ServerSetting` (pro Server: EndpointAddress, FirewallMark, Table,
ConfigFilePath). Der Kommentar über `ServerSetting` im Quelltext sagt
"not yet wired into store/handler layers" — das ist **veraltet**: die Methoden
`GetServerSettings`/`SaveServerSettings` in `store/jsondb/jsondb.go` (Zeile
~674690) sind sehr wohl verdrahtet und werden von
`handler.GetServerSettings`/`handler.SaveServerSettingsHandler` sowie von
`buildEffectiveSettings()` (`handler/routes.go:50`) genutzt.
- `model/client.go`: `Client` trägt `ServerID`.
- `model/user.go`: `User.ServerIDs []string` — leer/nil heißt "kein Zugriff",
Admins sind davon ausgenommen.
### Migration von Single-Server-Installationen
- Beim ersten Start nach dem Upgrade migriert `store/jsondb/jsondb.go`
automatisch: die bestehende Legacy-Server-Konfiguration wird unter der
synthetischen ID `util.DefaultServerID` (= `"wg0"`) in `db/servers/wg0.json`,
`db/server_settings/wg0.json` angelegt (Konstante `legacyDefaultServerID`,
`store/jsondb/jsondb.go:22-24`). Bestehende Clients bekommen `ServerID = "wg0"`
rückwirkend zugewiesen, bestehende User bekommen `ServerIDs` entsprechend
befüllt. Die alte Legacy-Collection bleibt erhalten (wird nicht gelöscht).
Der Interface-Name des migrierten Default-Servers wird aus dem Dateinamen von
`ConfigFilePath` abgeleitet, falls gesetzt.
### Routen — Legacy (bare, operieren immer auf `wg0`)
Registriert in `main.go` (Zeilen ~211275), unverändert nutzbar:
- `GET /` Client-Liste (Dashboard des Default-Servers)
- `GET/POST /login`, `GET /logout`, `GET /profile`
- `GET /users-settings`, `POST /update-user`, `POST /create-user`,
`POST /remove-user`, `GET /get-users`, `GET /api/user/:username`
- `POST /new-client`, `POST /update-client`, `POST /email-client`,
`POST /send-telegram-client`, `POST /client/set-status`,
`POST /remove-client`, `GET /download`
- `GET /wg-server`, `POST /wg-server/interfaces`, `POST /wg-server/keypair`
— einzige Stelle, an der Interface-Adressen/Port und das Schlüsselpaar
eines Servers editierbar sind (siehe Lücke unten)
- `GET/POST /global-settings`
- `GET /status`, `GET /test-hash`, `GET /about`, `GET /_health`, `GET /favicon`
- `GET /api/clients`, `GET /api/client/:id`, `GET /api/machine-ips`,
`GET /api/subnet-ranges`, `GET /api/suggest-client-ips`,
`POST /api/apply-wg-config`
- `GET /wake_on_lan_hosts`, `POST /wake_on_lan_host`
### Routen — neu, `/servers/...` Namespace
- `GET /servers-settings` Admin-Übersichtsseite (`servers.html`), nur Admin
- `GET /servers` Serverliste; für Nicht-Admins gefiltert auf
`User.ServerIDs` (`handler.ListServers`, `handler/routes.go:530`)
- `POST /servers` neuen Server anlegen (nur Admin), validiert die ID gegen
`util.ValidateRecordID` (nur Buchstaben/Ziffern/`-`/`_`)
- `GET /servers/:id/clients` Client-Verwaltungsseite pro Server
(`server_clients.html`)
- `GET /servers/:id/api/clients`, `GET /servers/:id/api/client/:cid`
- `POST /servers/:id/new-client`, `POST /servers/:id/update-client`,
`POST /servers/:id/client/set-status`, `POST /servers/:id/remove-client`
- `GET /servers/:id/download`
- `POST /servers/:id/api/apply-wg-config` schreibt die Config-Datei dieses
Servers, siehe Bugfix unten
- `GET /servers/:id/settings`, `POST /servers/:id/settings` (POST nur Admin)
Alle `/servers/:id/...`-Routen außer der reinen Admin-Erstellung laufen durch
`handler.RequireServerAccess(db)` (`handler/session.go:53`): Admins und
`DisableLogin` passieren immer, sonst wird geprüft, ob `serverID` in
`User.ServerIDs` enthalten ist.
### Bugfix bestätigt: Peer-Leak zwischen Servern behoben
`handler.ApplyServerConfig` (`handler/routes.go:1504`) filtert Clients jetzt
korrekt nach `Client.ServerID == serverID`, bevor sie als Peers in die Config
geschrieben werden (Zeilen 15281539). Für die Legacy-Route (`serverID ==
"wg0"`) wird weiterhin `db.GetServer()` (Legacy-Collection) statt
`db.GetServerByID` gelesen, um mit gerade über `/wg-server` vorgenommenen
Änderungen konsistent zu bleiben.
### Bestätigte Lücken (nicht gebaut, keine Ankündigung, sondern Fakt)
- **Keine UI zum Bearbeiten von Interface/KeyPair für Nicht-Default-Server.**
`store.UpdateServerInterface` und `store.UpdateServerKeyPair`
(`store/jsondb/jsondb.go:561`, `:577`) existieren, werden aber im gesamten
Code nur mit `util.DefaultServerID` aufgerufen (`handler/routes.go:1211`,
`:1242`, innerhalb von `WireGuardServerInterfaces`/`WireGuardServerKeyPair`,
den Handlern hinter `/wg-server/...`). Für über `/servers` neu angelegte
Server gibt es keine Route, die Adressen/Port oder das Schlüsselpaar danach
ändert.
- **Kein wg-quick/systemd-Exec.** Es gibt keinen `exec.Command`-Aufruf von
`wg-quick` oder `systemctl` irgendwo im Repo (verifiziert per Grep über
`internal/`, `handler/`, `util/`). Die Anwendung schreibt ausschließlich
`.conf`-Dateien; das Hoch-/Runterfahren der Interfaces bleibt Aufgabe des
Betreibers (z. B. manuell oder per eigenem systemd-Unit/Hook).
- **Keine Security-Härtung über das bereits vorhandene Session-/CSRF-Maß
hinaus.** Themen wie Cookie-Flags (Secure/SameSite), CSP-Header oder
Rate-Limiting wurden in Planungsgesprächen erwähnt, sind aber im
aktuellen Code nicht umgesetzt.
- Die alte Legacy-Collection (Pre-Migrations-Daten) wird beim Auto-Migrate
nicht gelöscht — kein Rollback-Mechanismus, aber auch kein Cleanup.
### Fazit
Multi-Server-CRUD (Anlage, Auflistung, gefilterte Sicht), pro-Server
Client-Verwaltung (Anlegen/Bearbeiten/Löschen/Status/Download), pro-Server
Zugriffskontrolle über `User.ServerIDs`, und die automatische Migration einer
bestehenden Single-Server-Installation sind lauffähig und durch Code bestätigt.
Was fehlt, um "produktiv nutzbar" im Sinne des ursprünglichen Lastenhefts zu
sein: Interface/Keypair-Verwaltung für neu angelegte Server, tatsächliches
Hoch-/Runterfahren der wg-Interfaces, und die in CLAUDE.md geplante
Security-/Firewall-Integration (nftables-Hooks, Audit-Log) — davon ist nichts
im aktuellen Code vorhanden.
---
## 2026-07-11 23:53 23:53 (0m)
**Beschreibung:** Claude Code Session
**Projekt:** wireguard-ui-multi
### Commits
Keine Commits in dieser Session.
### Geänderte Dateien
- handler/routes.go | 39 +++++++++++++++++++++++++++++++++++++++
- main.go | 2 ++
- templates/servers.html | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
---