Files
RustProxy/docs/V0.23.2_AUDIT.md
T
2026-10-03 00:27:09 +01:00

28 lines
2.5 KiB
Markdown

# RustProxy 0.23.2 specification audit
## Scope
0.23.2 is a patch release on top of 0.23.1. It extends the Cache/Transformation live charts with an operator-selectable bounded history window and fixes local CLI access when the administration listener uses HTTPS. No proxy-path, SQLite schema or administration API payload change is introduced.
## Cache / Transformation chart history
- Both live charts remain default-collapsed and full-width when expanded.
- Existing cumulative counters are still converted to per-second rates with the existing 3-second refresh.
- Each workspace offers 60, 120, 300 and 600 retained samples, corresponding to roughly 3, 6, 15 and 30 minutes.
- The selected limit is stored in browser local storage separately for Cache and Transformation.
- Reducing the limit trims the in-memory arrays immediately; increasing it grows only with future samples. The maximum remains bounded at 600 samples per series.
- Scope/session resets still clear the corresponding chart history.
## Local CLI / live-log HTTPS
- The root cause of the 0.23.0/0.23.1 `rust-proxy --livelogs` reconnect loop is the CLI's previous hard-coded `http://{admin}/api/live-logs` URI. A TLS-enabled administration socket intentionally returns HTTP 308 on plaintext requests, and the CLI treated that expected redirect as a stream failure.
- The CLI now probes the loopback `/healthz` endpoint before creating authenticated API requests. HTTP success selects `http`; the administration listener's 308 with an HTTPS `Location` selects `https`.
- The probe carries no CLI session cookie. After scheme selection, the live SSE stream and retained-history API use the same selected transport.
- HTTPS certificate verification is pinned to leaf certificates read from the private `<data-dir>/certs` directory. This supports the app-managed self-signed default certificate without disabling TLS verification globally or relying on public DNS/SAN routing to reach the loopback listener.
- The same local client is used by `config get/reload/apply` and `tls reload/deploy`, eliminating the same hard-coded-HTTP failure mode there.
- The local administration address remains required to be loopback.
## Verification status
Rust-independent source, JavaScript/JSON, shell, Go-agent and release-smoke checks are run in the packaging workspace. `cargo`, `rustc` and `rustfmt` are unavailable here, so compiler/type tests, a live TLS handshake against the built binary and sustained browser/live-log runtime acceptance remain release-host gates.