add core and per-plugin documentation set

This commit is contained in:
2026-03-18 00:15:04 +01:00
parent aa9390ce5e
commit 6389ce6567
21 changed files with 172 additions and 0 deletions

View File

@@ -33,6 +33,10 @@ npm run dev
## Plugin Overview ## Plugin Overview
Core and plugin docs:
- Core: `docs/core-overview.md`
- Plugin index: `docs/plugins/README.md`
Auth Auth
- `rms.auth.smtp_relay`: email link challenge delivery through SMTP relay - `rms.auth.smtp_relay`: email link challenge delivery through SMTP relay
- `rms.auth.otp_email`: OTP challenge delivery through email - `rms.auth.otp_email`: OTP challenge delivery through email

29
docs/core-overview.md Normal file
View File

@@ -0,0 +1,29 @@
# Core Overview
Diese Datei beschreibt den Core von `ARCG-Remote-Station-Software` auf hoher Ebene.
## Zweck
- Generische Remote-Station-Software (station-unabhaengig)
- API (`server/`), Web-UI (`public/`), Plugin-Runtime (`plugins/`)
- Keine station-spezifischen Deploy-Details im Core
## Schichten
1. Core-Defaults im Software-Repo
2. Overlay/Deploy-Repo (stationsspezifisch)
3. Runtime-ENV auf dem Zielsystem (hoechste Prioritaet)
## Wichtige Core-Funktionen
- Passwortlose Auth (SMTP-Link, OTP, optional OAuth)
- Rollen/Policies, Owner-Locks, Reservierungen
- OpenWebRX-Integration (Session/Guard/Bandmap)
- Hardwaresteuerung ueber Plugins (TX/PTT/Router/Rotor/VSWR)
- Audit/Event-Stream fuer Live-UI
## Security Boundary
- Repo ist oeffentlich.
- Keine Live-Konfigurationen, Secrets, Tokens, private Hostnamen oder Betriebsinterna committen.
- Sensible Werte ausschliesslich in Runtime-ENV/Deploy-Ebene halten.

20
docs/plugins/README.md Normal file
View File

@@ -0,0 +1,20 @@
# Plugin Doku Index
- `rms-auth-otp-email.md`
- `rms-auth-oauth.md`
- `rms-auth-smtp-relay.md`
- `rms-microham.md`
- `rms-tx-audio-core.md`
- `rms-debug-remote.md`
- `rms-openwebrx-guard.md`
- `rms-openwebrx-bandmap.md`
- `rms-station-access-policy.md`
- `rms-help-basic.md`
- `rms-tx-control-native.md`
- `rms-tx-state-file.md`
- `rms-rfroute-shell.md`
- `rms-rotor-hamlib.md`
- `rms-vswr-native.md`
- `rms-vswr-report-reader.md`
- `rms-vswr-nanovna.md`
- `rms-station-shell.md`

View File

@@ -0,0 +1,6 @@
# rms.auth.oauth
- Zweck: OAuth/OIDC Authorization-Code Login.
- Auth-Methode: `oauth`.
- Wichtige Settings: `authorizeUrl`, `tokenUrl`, `userInfoUrl`, `clientId`, `clientSecret`, `scope`, `redirectUri`, `emailField`, `authStyle`.
- Verhalten: erstellt Authorize-URL (`start_oauth`) und validiert Callback (`finish_oauth`) inkl. E-Mail-Aufloesung.

View File

@@ -0,0 +1,6 @@
# rms.auth.otp_email
- Zweck: OTP-Challenge per E-Mail versenden.
- Auth-Methode: `otp-email`.
- Wichtige Settings/ENV: `SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`, `SMTP_USER`, `SMTP_PASS`, `SMTP_FROM`, `SMTP_REPLY_TO`, `allowInvalidCert`.
- Verhalten: versucht SMTP-Versand, faellt bei Bedarf auf Outbox-Queue zurueck.

View File

@@ -0,0 +1,6 @@
# rms.auth.smtp_relay
- Zweck: Passwortlosen Login-Link per SMTP-Relay versenden.
- Auth-Methode: `smtp-link`.
- Wichtige Settings/ENV: `SMTP_HOST`, `SMTP_PORT`, `SMTP_SECURE`, `SMTP_USER`, `SMTP_PASS`, `SMTP_FROM`, `SMTP_REPLY_TO`.
- Verhalten: Versand ueber SMTP, bei Fehlern Outbox-Fallback fuer resiliente Challenge-Zustellung.

View File

@@ -0,0 +1,6 @@
# rms.debug.remote
- Zweck: Remote-Debug Sammlung (OWRX/USB) fuer Admin-Triage.
- Capability: `admin.debug.remote`.
- Wichtige Settings: `enabled`, `remoteToken`, `collectLines`, `unitName`, `redactSensitive`.
- Verhalten: sammelt/liest/loescht Debug-Logs und Snapshots in `DATA_DIR/debug/*`, redaktiert sensible Werte.

View File

@@ -0,0 +1,7 @@
# rms.help.basic
- Zweck: Liefert statische Hilfeinhalte fuer die UI.
- Capability: `help.content.read`.
- Settings/ENV: keine.
- Aktion: `getContent`.
- Verhalten: gibt strukturierte Hilfeabschnitte (Nutzung, Troubleshooting, Sicherheit) aus.

View File

@@ -0,0 +1,7 @@
# rms.microham
- Zweck: PTT- und TX-Audio-Backend fuer microHAM.
- Capabilities: `microham.ptt`, `microham.audio`, `tx.audio.backend`.
- Wichtige ENV: `MICROHAM_DEVICE`, `MICROHAM_PTT_*`, `MICROHAM_AUDIO_*`.
- Aktionen: `pttDown`, `pttUp`, `pttStatus`, `audioConnect`, `audioDisconnect`, `audioWriteChunk`.
- Detailguide: `docs/hardware-microham-guide.md`.

View File

@@ -0,0 +1,7 @@
# rms.openwebrx.bandmap
- Zweck: Band-/Profilverwaltung fuer OpenWebRX.
- Capabilities: `openwebrx.band.read`, `openwebrx.band.set`.
- Wichtige ENV: `OPENWEBRX_BANDMAP_CSV_PATH`, `OPENWEBRX_CONFIG_PATH`, `OPENWEBRX_BAND_SET_CMD_TEMPLATE`, `OPENWEBRX_BAND_STATE_PATH`, `OPENWEBRX_BAND_TIMEOUT_MS`.
- Aktionen: `getBands`, `setBand`, `getState`.
- Verhalten: liest CSV, setzt Band ueber Template oder Config-Patch und speichert Zustand.

View File

@@ -0,0 +1,6 @@
# rms.openwebrx.guard
- Zweck: OpenWebRX Zugriffsschutz und Dienststeuerung.
- Capabilities: `openwebrx.access.issue`, `openwebrx.access.verify`, `openwebrx.service.control`.
- Wichtige ENV: `OPENWEBRX_PATH`, `OPENWEBRX_TICKET_TTL_SEC`, `OPENWEBRX_START_CMD`, `OPENWEBRX_STOP_CMD`, `OPENWEBRX_ENSURE_SDR_CMD`.
- Verhalten: owner-gebundene Tickets ausstellen/verifizieren/revoken; optional OpenWebRX Start/Stop orchestrieren.

View File

@@ -0,0 +1,7 @@
# rms.rfroute.shell
- Zweck: RF-Route/Umschaltung ueber Shell-Kommandos.
- Capabilities: `rfroute.set`, `rfroute.read`.
- Wichtige ENV: `RFROUTE_CMD_TX`, `RFROUTE_CMD_RX`, `RFROUTE_CMD_ON`, `RFROUTE_CMD_OFF`, `RFROUTE_CMD_DRAHT`, `RFROUTE_CMD_BEAM`, `RFROUTE_CMD_WRTC`, `RFROUTE_TIMEOUT_MS`.
- Aktion: `setRoute`.
- Detailguide: `docs/hardware-rfroute-guide.md`.

View File

@@ -0,0 +1,7 @@
# rms.rotor.hamlib
- Zweck: Rotorsteuerung ueber Hamlib/rotctl.
- Capabilities: `rotor.read`, `rotor.set`.
- Wichtige Settings/ENV: `defaultAzimuth`, `setTemplate`, `getCommand`, sowie `ROTOR_*` im nativen Server-Pfad.
- Aktionen: `getAzimuth`, `setAzimuth`.
- Detailguide: `docs/rotor-rot1prog-guide.md`.

View File

@@ -0,0 +1,6 @@
# rms.station.access.policy
- Zweck: Persistente und effektive Benutzerliste fuer OpenWebRX Access-Policy.
- Capabilities: `station.access.policy.read`, `admin.station.access.policy.write`.
- Wichtige ENV: `OPENWEBRX_ACCESS_POLICY_FILE`, `OPENWEBRX_PERSISTENT_USERS_FILE`.
- Aktionen: `addPersistentUser`, `removePersistentUser`, `syncOwner`, `clearOwner`, `readPolicy`.

View File

@@ -0,0 +1,7 @@
# rms.station.shell
- Zweck: Aktivierungs-/Deaktivierungs-Skripte fuer Stationshardware ausfuehren.
- Capabilities: `station.activate`, `station.deactivate`.
- Wichtige ENV: `SCRIPT_ACTIVATE`, `SCRIPT_DEACTIVATE`, `SCRIPT_ROOT`, `STATION_SCRIPT_TIMEOUT_MS`.
- Aktionen: `activate`, `deactivate`.
- Detailguide: `docs/hardware-station-shell-guide.md`.

View File

@@ -0,0 +1,6 @@
# rms.tx.audio.core
- Zweck: Abstraktionsschicht fuer TX-Audio.
- Capability: `tx.audio`.
- Wichtige Settings: `backendCapability` (Default `tx.audio.backend`).
- Verhalten: mappt Core-Audio-Aktionen auf Backend-Aktionen (`backendStart`, `backendWrite`, `backendStop`, `backendStatus`).

View File

@@ -0,0 +1,7 @@
# rms.tx.control.native
- Zweck: Native TX-Power Schaltung.
- Capabilities: `tx.control`, `tx.state.read`.
- Wichtige ENV: `TX_ENABLE_CMD`, `TX_DISABLE_CMD`, `TX_STATUS_CMD`, `TX_CONTROL_TIMEOUT_MS`, `TX_STATE_PATH`.
- Aktionen: `enableTx`, `disableTx`, `getTxState`.
- Detailguide: `docs/hardware-tx-control-guide.md`.

View File

@@ -0,0 +1,7 @@
# rms.tx.state.file
- Zweck: TX-Status aus JSON-Datei lesen.
- Capability: `tx.state.read`.
- Wichtige ENV: `TX_STATE_PATH`.
- Aktion: `getTxState`.
- Verhalten: liest `txActive/updatedAt/source`; liefert sicheren Fallback, wenn Datei fehlt/ungueltig ist.

View File

@@ -0,0 +1,7 @@
# rms.vswr.nanovna
- Zweck: Einfacher NanoVNA-VSWR Lauf ueber ein Kommando.
- Capabilities: `vswr.run`, `vswr.read`.
- Wichtige ENV: `VSWR_CHECK_CMD`, `VSWR_CHECK_TIMEOUT_MS`, `VSWR_METADATA_PATH`.
- Aktionen: `runCheck`, `readStatus`.
- Detailguide: `docs/hardware-vswr-nanovna-guide.md`.

View File

@@ -0,0 +1,7 @@
# rms.vswr.native
- Zweck: Native VSWR-Laufsteuerung und Report-Erzeugung.
- Capabilities: `vswr.run`, `vswr.report.read`.
- Wichtige ENV: `NANOVNA_COMMAND_TEMPLATE`, `VSWR_BANDS_JSON`, `VSWR_TIMEOUT_MS_PER_BAND`, `VSWR_REPORT_JSON_PATH`, `VSWR_OUTPUT_BASE_DIR`, `VSWR_IMAGES_BASE_URL`.
- Aktionen: `runCheck`, `getReport`.
- Detailguide: `docs/hardware-vswr-nanovna-guide.md`.

View File

@@ -0,0 +1,7 @@
# rms.vswr.report_reader
- Zweck: Liest vorhandene VSWR-Artefakte und normalisiert sie fuer die API/UI.
- Capability: `vswr.report.read`.
- Wichtige ENV: `VSWR_OVERVIEW_HTML_PATH`, `VSWR_METADATA_PATH`, `VSWR_IMAGES_DIR_PATH`, `VSWR_IMAGES_BASE_URL`, `SWR_OVERVIEW_URL`.
- Aktion: `getReport`.
- Verhalten: kombiniert Metadata/HTML/Image-Infos zu bandweisem Statusreport.