@push.rocks/smartproxy 27.7.0 → 27.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/changelog.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2026-04-14 - 27.7.2 - fix(docs)
|
|
4
|
+
clarify metrics documentation for domain normalization and saturating gauges
|
|
5
|
+
|
|
6
|
+
- Document that per-IP domain keys are normalized to lowercase and have trailing dots stripped before counting.
|
|
7
|
+
- Clarify that the saturating close pattern also applies to connection and UDP active gauges.
|
|
8
|
+
|
|
9
|
+
## 2026-04-14 - 27.7.1 - fix(rustproxy-http,rustproxy-metrics)
|
|
10
|
+
fix domain-scoped request host detection and harden connection metrics cleanup
|
|
11
|
+
|
|
12
|
+
- use a shared request host extractor that falls back to URI authority so domain-scoped IP allow lists work for HTTP/2 and HTTP/3 requests without a Host header
|
|
13
|
+
- add request filter and host extraction tests covering domain-scoped ACL behavior
|
|
14
|
+
- prevent connection counters from underflowing during close handling and clean up per-IP metrics entries more safely
|
|
15
|
+
- normalize tracked domain keys in metrics to reduce duplicate entries caused by case or trailing-dot variations
|
|
16
|
+
|
|
3
17
|
## 2026-04-13 - 27.7.0 - feat(smart-proxy)
|
|
4
18
|
add typed Rust config serialization and regex header contract coverage
|
|
5
19
|
|
|
Binary file
|
|
Binary file
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartproxy',
|
|
6
|
-
version: '27.7.
|
|
6
|
+
version: '27.7.2',
|
|
7
7
|
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
|
8
8
|
};
|
|
9
9
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLHFQQUFxUDtDQUNuUSxDQUFBIn0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@push.rocks/smartproxy",
|
|
3
|
-
"version": "27.7.
|
|
3
|
+
"version": "27.7.2",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.",
|
|
6
6
|
"main": "dist_ts/index.js",
|
package/readme.metrics.md
CHANGED
|
@@ -78,7 +78,7 @@ Entries are pruned via `retain_routes()` when routes are removed.
|
|
|
78
78
|
|
|
79
79
|
All seven maps for an IP are evicted when its active connection count drops to 0. Safety-net pruning in `sample_all()` catches entries orphaned by races. Snapshots cap at 100 IPs, sorted by active connections descending.
|
|
80
80
|
|
|
81
|
-
**Domain request tracking:** Records which domains each frontend IP has requested. Populated from HTTP Host headers (for HTTP/1.1, HTTP/2, HTTP/3 requests) and from SNI (for TLS passthrough connections). Capped at 256 domains per IP (`MAX_DOMAINS_PER_IP`) to prevent subdomain-spray abuse. Inner DashMap uses 2 shards to minimise base memory per IP (~200 bytes). Common case (IP + domain both known) is two DashMap reads + one atomic increment with zero allocation.
|
|
81
|
+
**Domain request tracking:** Records which domains each frontend IP has requested. Populated from HTTP Host headers (for HTTP/1.1, HTTP/2, HTTP/3 requests) and from SNI (for TLS passthrough connections). Domain keys are normalized to lowercase with any trailing dot stripped so the same hostname does not fragment across multiple counters. Capped at 256 domains per IP (`MAX_DOMAINS_PER_IP`) to prevent subdomain-spray abuse. Inner DashMap uses 2 shards to minimise base memory per IP (~200 bytes). Common case (IP + domain both known) is two DashMap reads + one atomic increment with zero allocation.
|
|
82
82
|
|
|
83
83
|
### Per-Backend Metrics (keyed by "host:port")
|
|
84
84
|
|
|
@@ -110,7 +110,7 @@ Tracked via `ProtocolGuard` RAII guards and `FrontendProtocolTracker`. Five prot
|
|
|
110
110
|
| ws | `ProtocolGuard::frontend("ws")` on WebSocket upgrade |
|
|
111
111
|
| other | Fallback (TCP passthrough without HTTP) |
|
|
112
112
|
|
|
113
|
-
Uses `fetch_update` for saturating decrements to prevent underflow races.
|
|
113
|
+
Uses `fetch_update` for saturating decrements to prevent underflow races. The same saturating-close pattern is also used for connection and UDP active gauges.
|
|
114
114
|
|
|
115
115
|
### Backend Protocol Distribution
|
|
116
116
|
|
package/ts/00_commitinfo_data.ts
CHANGED
|
@@ -3,6 +3,6 @@
|
|
|
3
3
|
*/
|
|
4
4
|
export const commitinfo = {
|
|
5
5
|
name: '@push.rocks/smartproxy',
|
|
6
|
-
version: '27.7.
|
|
6
|
+
version: '27.7.2',
|
|
7
7
|
description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
|
|
8
8
|
}
|