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

2.5 KiB

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.