From ead925d9b58442bba230909426a7febd5c742eb4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sandra=20Theresa=20Ke=C3=9Fler?= Date: Fri, 15 May 2026 13:08:04 +0200 Subject: [PATCH] docs(ws-bridged): example-yaml entspricht jetzt dem Parser-Schema MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die alte ws-bridged.yaml.example hatte verschachtelte Top-Level-Keys (participant.domain_id, websocket.bind, routes, observability.metrics_bind) die der echte YAML-Parser in daemon/config.rs nicht versteht — er erwartet flache Keys (listen, domain) plus topics:/auth:/tls:/metrics:/acl:. Da der Parser unbekannte Top-Level-Keys stillschweigend ignoriert (load_from_str-Match: "_ => {}"), fällt die Fehlkonfig nicht durch Validation-Errors auf. Bridge bootet mit Defaults (127.0.0.1:8080, domain=0, topics=0, auth-mode=none). Fix: example umgeschrieben gegen Spec §3 + Parser. Plus Erklär-Comments für auth-mode, ACL (bei non-none-Auth Pflicht), und Hinweis auf das silent-ignore-Verhalten. Signed-off-by: Sandra Theresa Keßler --- .../linux/configs/ws-bridged.yaml.example | 69 +++++++++++-------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/packaging/linux/configs/ws-bridged.yaml.example b/packaging/linux/configs/ws-bridged.yaml.example index 16e13252..234f72a8 100644 --- a/packaging/linux/configs/ws-bridged.yaml.example +++ b/packaging/linux/configs/ws-bridged.yaml.example @@ -1,35 +1,48 @@ # /etc/zerodds/ws-bridged.yaml.example # Default configuration for zerodds-ws-bridged. -# Spec: zerodds-ws-bridge-1.0 §4 (config schema), §11 (deployment). +# Spec: zerodds-ws-bridge-1.0 §3 (config schema), §11 (deployment). +# +# Parser-Source-of-Truth: crates/websocket-bridge/src/daemon/config.rs::load_from_str. +# Unbekannte top-level Keys werden stillschweigend ignoriert — Tippfehler +# fallen also nicht durch Validation-Errors auf. -participant: - domain_id: 0 - qos_profile: builtin/reliable_keep_last_10 +listen: "0.0.0.0:8080" +domain: 0 +log_level: info -websocket: - bind: "0.0.0.0:8080" - tls: - enabled: false - cert: /etc/zerodds/certs/ws-bridged.crt - key: /etc/zerodds/certs/ws-bridged.key - origin_allowlist: - - "https://zerodds.local" - max_message_bytes: 1048576 # 1 MiB DoS-Cap - ping_interval_secs: 30 - pong_timeout_secs: 10 +tls: + enabled: false + cert_file: "/etc/zerodds/certs/ws-bridged.crt" + key_file: "/etc/zerodds/certs/ws-bridged.key" + # client_ca_file: "/etc/zerodds/certs/clients-ca.pem" # für mTLS -routes: - # DDS-Topic <-> WS-URL Mapping. Cross-Ref: zerodds-ws-bridge-1.0 §5. - - dds_topic: "ChatMessage" - type: "demo::Chat::Message" - ws_path: "/chat" - direction: "bidirectional" +# Auth-Modi: none | bearer | jwt | mtls | sasl (Spec §7.2). +# `bearer` ist single-subject — alle Connections mit korrektem Token +# laufen als `bearer_subject`. Für Multi-User → `jwt`. +auth: + mode: "none" + # bearer_token: "${WS_BRIDGE_TOKEN}" # ENV-Substitution wird vor Parse expandiert + # bearer_subject: "service-account" -logging: - level: info - format: json - destination: journal # journal | file:/var/log/zerodds/ws-bridged.log +# Topic-ACL (Spec §7.3). Bei auth_mode != none Pflicht für alle Topics, +# sonst werden Connections mit "acl reject" abgelehnt. +# acl: +# Chat::Message: +# read: "service-account, alice" # CSV-Liste der erlaubten Subjects +# write: "service-account" -observability: - metrics_bind: "127.0.0.1:9091" - otlp_endpoint: "" # leer = OTLP disabled, sonst http://otel:4318 +metrics: + enabled: false + address: "127.0.0.1:9091" # /metrics + /catalog + /healthz + +topics: + # DDS-Topic ↔ WS-URL Mapping. Cross-Ref: zerodds-ws-bridge-1.0 §5. + - name: "Chat::Message" + type: "Chat::Message" # Default = name wenn nicht gesetzt + direction: "bidir" # in | out | bidir + ws_path: "/chat" # Default = /topics/ + qos: + reliability: "reliable" + durability: "volatile" + history: + depth: 10