Add a JSON-RPC stats endpoint for websites

Plain HTTP + JSON-RPC 2.0 (axum, already in the tree) so a site backend
can pull stats without gRPC stubs. Methods: stats.get (counters + gauges)
and stats.channel { channel } (lines + top talkers). Optional [jsonrpc]
config, off unless set.

Security: bearer-token authenticated with a constant-time compare, refuses
to start with an empty token, read-only (only stats.* methods — no way to
mutate state), method-allowlisted, a 64 KiB body limit, and meant to bind
to localhost beside the backend.
This commit is contained in:
Jean Chevronnet 2026-07-13 20:21:41 +00:00
parent 04f927d3db
commit 07eb9939d7
No known key found for this signature in database
6 changed files with 219 additions and 0 deletions

View file

@ -33,6 +33,7 @@ tracing-subscriber = { version = "0.3", features = ["env-filter"] }
tokio-rustls = "0.26.4"
rustls-pemfile = "2.2.0"
tonic = { version = "0.12", features = ["tls"] }
axum = "0.7"
prost = "0.13"
tokio-stream = "0.1"