v0.28.0
This commit is contained in:
1 parent
c24bc4279b
commit
3b3f0db377
84 files changed
+2686
-392
No files matched your search
@@ -1,9 +1,9 @@
|
||||
# RustProxy 0.27.3
|
||||
# RustProxy 0.28.0
|
||||
|
||||
Independent Rust reverse proxy and static Web Server with a dashboard, SQLite configuration,
|
||||
streaming HTTP/TLS/WebSocket forwarding, raw TCP/UDP stream hosts, IP-bound vhosts and backend pools.
|
||||
|
||||
**0.27.3 release source.**
|
||||
**0.28.0 release source.**
|
||||
|
||||
## Layer-4 streams
|
||||
|
||||
@@ -11,18 +11,18 @@ Raw TCP/UDP forwarding has its own **Streams** page in the primary navigation, a
|
||||
|
||||
Named HTTP/HTTPS listener bind addresses use the same chip-style editor as vhost hostnames, including multi-address listeners.
|
||||
|
||||
## What changed in 0.27.3
|
||||
## What changed in 0.28.0
|
||||
|
||||
- Treat body-less `HEAD` requests consistently on HTTP/2 and HTTP/3 cache paths. HTTP/3 `HEAD` now gets the same bounded empty-body probe as `GET`, preventing false `request_body` bypasses.
|
||||
- Reduce COLD-cache RAM usage without changing the on-disk cache format: response headers and validators are loaded only on an actual COLD read, SHA-256 digests are stored as 32-byte values in the in-memory index, and the duplicate cache key is removed from each COLD entry.
|
||||
- Reduce rate-limit/IP memory retention by storing each vhost name once, reclaiming expired client buckets during traffic and periodic maintenance, and shrinking sparse hash tables before the existing allocator trim runs.
|
||||
- Exclude the rebuildable managed Certbot environments `acme-python` and `acme_python` from application backups.
|
||||
- Keep response compression streaming with no full-body aggregation. Compression uses the fastest codec level and keeps only per-active-response encoder state, so it is not a long-lived cache-like RAM owner.
|
||||
- Make the DEB/RPM and OPNsense package repositories the documented official installation paths; Debian source builds remain available as an optional path.
|
||||
- Separate application-coupled scripts (`scripts/`) from developer/operator helpers (`tools/`) and external platform integrations (`integrations/`) without changing runtime behavior.
|
||||
- Keep SQLite schema 8, the COLD on-disk format and the saved configuration format unchanged.
|
||||
- Add an authenticated **Download now** action for GeoIP and move managed sources to direct per-file URLs. CSV mode uses separate IPv4/IPv6 files; MMDB mode accepts one native MaxMind DB for both families. Publisher SHA-256 URLs are optional per file, while size/format validation, staging, atomic publication and hot reload remain mandatory. Country ACLs, country rate limits, access-log country capture, Prometheus status and administration status use the new database without restarting proxy traffic.
|
||||
- Make active listener state easier to scan in Settings: each active HTTP/HTTPS bind is rendered as a separate endpoint card with explicit active protocol badges (`H1`, `H2`, `H2C`, `H3/UDP`) derived from the running listener configuration.
|
||||
- Add a configurable cache response `Via` value, enabled by default as `Via: RustProxy` and disableable from Cache settings. Existing upstream `Via` values are preserved and RustProxy appends its own value.
|
||||
- Stop full cache purges for request-bypass edits and response-only cache diagnostic/Via header changes. Settings that can change stored representations or compatibility still rotate the cache revision and invalidate incompatible objects.
|
||||
- Fix the vhost Security request/response header-rule layout so the Delete control is separated from the first Operation selector.
|
||||
- Report the completed ACME Python/Certbot runtime check through the normal INFO log instead of printing a speculative `checking/preparing` line in the startup banner.
|
||||
- Retain the 0.27.3 maintenance fixes for restore ownership, production/development data directories, automatic GeoIP updates, explicit listener override semantics, strict WebSocket 101 framing, fail-soft release checks and scaled sidebar layout.
|
||||
- Keep SQLite schema 8 and COLD on-disk format 3 unchanged; the new `cache.via_header` field is defaulted for older saved configurations.
|
||||
|
||||
0.27.3 retains the 0.27.2 managed-ACME repair and earlier administration/proxy behavior. Historical details are in [CHANGELOG.md](CHANGELOG.md).
|
||||
0.28.0 retains the 0.27.3 HTTP/3 cache and maintenance work plus earlier administration/proxy behavior. Historical details are in [CHANGELOG.md](CHANGELOG.md).
|
||||
|
||||
### Historical 0.26.7 release notes
|
||||
|
||||
@@ -90,7 +90,7 @@ Named HTTP/HTTPS listener bind addresses use the same chip-style editor as vhost
|
||||
- Replace backend sort text (`A-Z` / `Z-A`) with direction arrows (`↑` / `↓`).
|
||||
- Keep SQLite schema 8 and the saved proxy configuration format unchanged; upgrading from 0.26.1 requires no data migration.
|
||||
|
||||
The detailed 0.25.5 implementation audit remains available as historical baseline evidence. Current 0.27.3 verification status is maintained in [docs/TEST_REPORT.md](docs/TEST_REPORT.md).
|
||||
The detailed 0.25.5 implementation audit remains available as historical baseline evidence. Current 0.28.0 verification status is maintained in [docs/TEST_REPORT.md](docs/TEST_REPORT.md).
|
||||
|
||||
## Documentation
|
||||
|
||||
@@ -131,8 +131,9 @@ The preferred installation/update path is the project-maintained package reposit
|
||||
- **DEB/RPM packages:** `https://rustproxy.linuxiarz.pl/`
|
||||
- **OPNsense plugin:** `https://rustproxy-opn.linuxiarz.pl/`
|
||||
|
||||
Use the repository instructions appropriate for the target operating system. Building on Debian is
|
||||
kept as an optional source/development path rather than the primary installation method.
|
||||
Use the repository instructions appropriate for the target operating system. Package/service installs do not need a packaging-time GeoIP download: the proxy starts an enabled-by-default background updater after its listeners bind, performs the first verified refresh immediately, and then checks again every 24 hours unless changed in **Settings -> GeoIP updates**. Building on Debian is kept as an optional source/development path rather than the primary installation method.
|
||||
|
||||
The production CLI default data directory is `/var/lib/rustproxy`. `dev.sh` explicitly overrides it to the repository-local `./data` directory for development commands.
|
||||
|
||||
### Optional: Debian 13+ one-line source install/update
|
||||
|
||||
@@ -180,7 +181,7 @@ CARGO_BUILD_JOBS=1 CARGO_PROFILE_RELEASE_LTO=false \
|
||||
|
||||
Package-build metadata remains outside this source tree and is maintained with the official package repositories above.
|
||||
|
||||
The 0.27.3 source archive preserves the resolved `Cargo.lock` supplied with the source tree and
|
||||
The 0.28.0 source archive preserves the resolved `Cargo.lock` supplied with the source tree and
|
||||
updates only this package's own version entry. This packaging environment has no Cargo, so the
|
||||
dependency graph was not re-resolved here. On the compiler-enabled deployment host, run the
|
||||
locked check/test/release gates below and retain the verified lockfile. `dev.sh` can generate a
|
||||
@@ -436,7 +437,7 @@ python3 tools/checks/release_smoke.py
|
||||
# Runs those checks first, then the Rust suite when Cargo is available:
|
||||
bash dev.sh test
|
||||
# Source-only package, with no Git checkout required:
|
||||
python3 make_zip.py /tmp/RustProxy-0.27.3.zip
|
||||
python3 make_zip.py /tmp/RustProxy-0.28.0.zip
|
||||
```
|
||||
|
||||
## New management and test-origin guide
|
||||
|
||||
Reference in new issue
Block a user