Skip to content

Commit 8e2682d

Browse files
committed
Bump v1.0.4 — update README with engine v3.3.32, SNI policy, metrics dashboard
Changelog: engine upgrade, sni-policy setting, metrics command, reset-traffic command, Alpine fixes (#37, #38, #40). Updated CLI reference and version badge.
1 parent deb2d5e commit 8e2682d

2 files changed

Lines changed: 29 additions & 3 deletions

File tree

README.md

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
One script. Full control. Zero hassle.
66
</p>
77
<p align="center">
8-
<img src="https://img.shields.io/badge/version-1.0.3-brightgreen" alt="Version"/>
8+
<img src="https://img.shields.io/badge/version-1.0.4-brightgreen" alt="Version"/>
99
<img src="https://img.shields.io/badge/license-MIT-blue" alt="License"/>
1010
<img src="https://img.shields.io/badge/engine-Rust_(telemt_3.x)-orange" alt="Engine"/>
1111
<img src="https://img.shields.io/badge/platform-Linux-lightgrey" alt="Platform"/>
@@ -109,7 +109,7 @@ Fine-grained limits enforced at the engine level:
109109

110110
> **Tip: Use `conns` for device limits, not `ips`.** Each Telegram app opens exactly 1 connection (multiplexed internally), so `conns 3` = max 3 devices. IP limits are less reliable because mobile users roam between cell towers (briefly showing 2 IPs for 1 device), and multiple devices behind the same WiFi share 1 IP. Use `ips` as a secondary anti-sharing measure.
111111
>
112-
> **Traffic and quotas are lifetime (cumulative)**, not monthly. They don't auto-reset. To reset a user's traffic, rotate their secret.
112+
> **Traffic and quotas are lifetime (cumulative)**, not monthly. They don't auto-reset. Use `mtproxymax secret reset-traffic <label>` to manually reset counters, or rotate the secret.
113113
114114
```bash
115115
mtproxymax secret setlimits alice 100 5 10G 2026-12-31
@@ -411,6 +411,7 @@ mtproxymax secret link [label] # Show proxy link
411411
mtproxymax secret qr [label] # Show QR code
412412
mtproxymax secret setlimit <label> <type> <value> # Set individual limit
413413
mtproxymax secret setlimits <label> <conns> <ips> <quota> [expires] # Set all limits
414+
mtproxymax secret reset-traffic <label|all> # Reset traffic counters
414415
```
415416

416417
</details>
@@ -439,6 +440,7 @@ mtproxymax upstream list # List upstreams
439440
mtproxymax upstream add <name> <type> <host:port> [user] [pass] [weight]
440441
mtproxymax upstream remove <name> # Remove upstream
441442
mtproxymax upstream test <name> # Test connectivity
443+
mtproxymax sni-policy [mask|drop] # Unknown SNI action (mask=permissive, drop=strict)
442444
```
443445

444446
</details>
@@ -448,6 +450,8 @@ mtproxymax upstream test <name> # Test connectivity
448450

449451
```bash
450452
mtproxymax traffic # Per-user traffic breakdown
453+
mtproxymax metrics # Engine metrics dashboard
454+
mtproxymax metrics live [seconds] # Auto-refresh metrics (default: 5s)
451455
mtproxymax logs # Stream live logs
452456
mtproxymax health # Run diagnostics
453457
```
@@ -506,6 +510,28 @@ mtproxymax telegram remove # Remove bot completely
506510

507511
## 📋 Changelog
508512

513+
### v1.0.4 — Engine v3.3.32, SNI Policy & Metrics Dashboard
514+
515+
**Engine Upgrade (v3.3.31 → v3.3.32):**
516+
517+
- **Bounded Hybrid Routing Loop** — Hard timeout on ME no-writer recovery, prevents infinite-spin edge case
518+
- **ArcSwap Snapshots** — Lock-free concurrent reads on writer pools, endpoints, and family state for less contention
519+
- **Parallel Health Checks** — Reduced latency during writer recovery
520+
- **Refined Quarantine** — Draining writers no longer needlessly quarantine healthy endpoints
521+
- **New Backpressure Model** — Tiered base/high watermark for better overload handling
522+
523+
**New Features:**
524+
525+
- **Unknown SNI Policy** — Configurable `mask` (permissive, default) or `drop` (strict) for TLS connections with non-matching SNI. TUI: Security & Routing > Unknown SNI Policy. CLI: `mtproxymax sni-policy [mask|drop]` ([#40](https://github.com/SamNet-dev/MTProxyMax/issues/40))
526+
- **Engine Metrics Dashboard**`mtproxymax metrics` shows connections, upstream routing, per-user stats, and ME pool status. `mtproxymax metrics live` for auto-refresh
527+
- **Reset Traffic Counters**`mtproxymax secret reset-traffic <label|all>` to manually reset per-user cumulative traffic
528+
529+
**Bug Fixes:**
530+
531+
- **Fix broken pipe on Alpine** — Replaced process-substitution FIFOs with here-strings to avoid SIGPIPE race ([#37](https://github.com/SamNet-dev/MTProxyMax/issues/37))
532+
- **Fix double-input on Alpine** — Drain leftover escape-sequence bytes from multi-byte key presses in TUI menus ([#38](https://github.com/SamNet-dev/MTProxyMax/issues/38))
533+
- **Fix SNI rejection after engine upgrade**`unknown_sni_action` default changed to `drop` in telemt v3.3.31+, now explicitly set to `mask` for backward compatibility ([#40](https://github.com/SamNet-dev/MTProxyMax/issues/40))
534+
509535
### v1.0.3 — Notes, Quota Enforcement, Multi-Port & More
510536

511537
- **Secret Notes** — Attach descriptions to secrets (`secret note <label> <text>`, TUI option [8])

mtproxymax.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ set -eo pipefail
1111
export LC_NUMERIC=C
1212

1313
# ── Section 1: Initialization ────────────────────────────────
14-
VERSION="1.0.3"
14+
VERSION="1.0.4"
1515
SCRIPT_NAME="mtproxymax"
1616
INSTALL_DIR="/opt/mtproxymax"
1717
CONFIG_DIR="${INSTALL_DIR}/mtproxy"

0 commit comments

Comments
 (0)