Alexey
5f77f83b48
ME Adaptive Floor Upper-Limit
2026-03-07 17:27:56 +03:00
Alexey
258191ab87
Routed DC + Strict ME Writers
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-07 13:40:57 +03:00
Alexey
27e6dec018
ME Strict Writers
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-07 13:32:02 +03:00
Alexey
93f58524d1
No busy-poll in ME
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-07 03:25:26 +03:00
Alexey
0ff2e95e49
Event-driven Drafts
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-07 03:22:01 +03:00
Alexey
ce9698d39b
ME Adaptive Floor Planner
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-07 02:50:11 +03:00
Alexey
02fe89f7d0
DC Endpoints on default
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-06 20:00:32 +03:00
Alexey
24df865503
Session by Target-DC-ID
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-06 19:59:23 +03:00
Alexey
e9f8c79498
ME Pool w/ Strict-Index
2026-03-06 19:58:57 +03:00
Alexey
487e95a66e
Update mod.rs
2026-03-06 18:52:39 +03:00
Alexey
c465c200c4
ME Pool Runtime API
2026-03-06 18:52:31 +03:00
Alexey
d7716ad875
Upstream API Policy Snapshot
2026-03-06 18:52:17 +03:00
Alexey
f32c34f126
ME NoWait Routing + Upstream Connbudget + PROXY Header t/o + allocation cuts
2026-03-06 03:58:08 +03:00
Alexey
9b84fc7a5b
Secret Atomic Snapshot + KDF Fingerprint on RwLock
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-05 23:18:26 +03:00
Alexey
d683faf922
HybridAsyncPersistent - new ME Route NoWriter Mode
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-05 22:31:01 +03:00
Alexey
a80be78345
DC writer floor is below required only in runtime
2026-03-05 16:32:31 +03:00
Alexey
3260746785
Init + Uptime timers
2026-03-05 15:48:09 +03:00
Alexey
8066ea2163
ME Pool Init fixes
2026-03-05 15:31:36 +03:00
Alexey
09bdafa718
Performance improvements
2026-03-05 14:39:32 +03:00
Alexey
de2047adf2
API UpstreamManager
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-04 11:41:41 +03:00
Alexey
7ea6387278
API ME Pool Status
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-04 02:45:32 +03:00
Alexey
4c2bc2f41f
Pool Status hooks in ME Registry
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-04 01:42:24 +03:00
Alexey
068cf825b9
API Pool Status
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-04 01:40:58 +03:00
Alexey
a6132bac38
Idle tolerance + Adaptive floor by default + RPC Proxy Req
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 23:16:25 +03:00
Alexey
bd0dcfff15
Upstream Error classifier
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 20:49:09 +03:00
Alexey
225fc3e4ea
ME Adaptive Floor Drafts
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 03:37:00 +03:00
Alexey
4a0d88ad43
Update health.rs
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 03:35:57 +03:00
Alexey
58ff0c7971
Update pool.rs
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 03:35:47 +03:00
Alexey
71261522bd
Update pool.rs
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 03:04:07 +03:00
Alexey
762deac511
ME Healthcheck fixes
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-03 03:03:44 +03:00
Alexey
a6d22e8a57
ME Pool Shadow Writers
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-02 21:04:06 +03:00
Alexey
9477103f89
Update pool.rs
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-02 20:45:43 +03:00
Alexey
e589891706
ME Dual-Trio Pool Drafts
2026-03-02 20:41:51 +03:00
Alexey
74ad9037de
Dead-code deletion: has_proxy_tag
2026-03-02 00:54:02 +03:00
Alexey
49f4a7bb22
ME Hardswap Generation stability
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-02 00:39:18 +03:00
Alexey
6f1980dfd7
ME Pool improvements
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-02 00:17:58 +03:00
sintanial
bc432f06e2
Add per-user ad_tag with global fallback and hot-reload
...
- Per-user ad_tag in [access.user_ad_tags], global fallback in general.ad_tag
- User tag overrides global; if no user tag, general.ad_tag is used
- Both general.ad_tag and user_ad_tags support hot-reload (no restart)
2026-03-01 16:28:55 +03:00
Alexey
47b12f9489
UpstreamManager Health-check for ME Pool over SOCKS
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-01 04:02:32 +03:00
Alexey
44cdfd4b23
ME Pool improvements
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-03-01 03:36:00 +03:00
Alexey
9afaa28add
UpstreamManager: Backoff Retries
2026-02-28 14:21:09 +03:00
Alexey
6c12af2b94
ME Connectivity: socks-url
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-28 13:38:30 +03:00
Alexey
8b39a4ef6d
Statistics on ME + Dynamic backpressure + KDF with SOCKS
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-28 13:18:31 +03:00
Alexey
fa2423dadf
ME/DC Method Detection fixes
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-28 03:21:22 +03:00
Alexey
6b8aa7270e
Bind_addresses prio over interfaces
2026-02-28 01:54:29 +03:00
Alexey
3d9660f83e
Upstreams for ME + Egress-data from UM + ME-over-SOCKS + Bind-aware STUN
2026-02-28 01:20:17 +03:00
Alexey
ac064fe773
STUN switch + Ad-tag fixes + DNS-overrides
2026-02-27 15:59:27 +03:00
Alexey
144f81c473
ME Dead Writer w/o dead-lock on timeout
2026-02-26 19:37:17 +03:00
Alexey
4eebb4feb2
ME Pool Refactoring
2026-02-26 19:01:24 +03:00
Alexey
1f255d0aa4
ME Probe + STUN Legacy
2026-02-26 18:41:11 +03:00
Alexey
9d2ff25bf5
Unified STUN + ME Primary parallelized
...
- Unified STUN server source-of-truth
- parallelize per-DC primary ME init for multi-endpoint DCs
2026-02-26 18:18:24 +03:00
Alexey
7782336264
ME Probe parallelized
2026-02-26 17:56:22 +03:00
ivulit
da684b11fe
feat: add mask_proxy_protocol option for PROXY protocol to mask_host
...
Adds mask_proxy_protocol config option (0 = off, 1 = v1 text, 2 = v2 binary)
that sends a PROXY protocol header when connecting to mask_host. This lets
the backend see the real client IP address.
Particularly useful when the masking site (nginx/HAProxy) runs on the same
host as telemt and listens on a local port — without this, the backend loses
the original client IP entirely.
PROXY protocol header is also sent during TLS emulation fetches so that
backends with proxy_protocol required don't reject the connection.
2026-02-26 13:36:33 +03:00
Alexey
c6c3d71b08
ME Pool Flap-Detect in statistics
2026-02-25 01:26:01 +03:00
Alexey
7538967d3c
ME Hardswap being softer
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-24 23:36:33 +03:00
Alexey
4a95f6d195
ME Pool Health + Rotation
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-24 22:59:59 +03:00
Alexey
d2f08fb707
ME Soft Reinit tuning
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-24 18:19:39 +03:00
Vladislav Yaroslavlev
09f56dede2
fix: resolve clippy warnings
...
Reduce clippy warnings from54 to16 by fixing mechanical issues:
- collapsible_if: collapse nested if-let chains with let-chains
- clone_on_copy: remove unnecessary .clone() on Copy types
- manual_clamp: replace .max().min() with .clamp()
- unnecessary_cast: remove redundant type casts
- collapsible_else_if: flatten else-if chains
- contains_vs_iter_any: replace .iter().any() with .contains()
- unnecessary_closure: replace .or_else(|| x) with .or(x)
- useless_conversion: remove redundant .into() calls
- is_none_or: replace .map_or(true, ...) with .is_none_or(...)
- while_let_loop: convert loop with if-let-break to while-let
Remaining16 warnings are design-level issues (too_many_arguments,
await_holding_lock, type_complexity, new_ret_no_self) that require
architectural changes to fix.
2026-02-24 05:57:53 +03:00
Vladislav Yaroslavlev
68c3abee6c
fix: eliminate all compiler warnings
...
- Remove unused imports across multiple modules
- Add #![allow(dead_code)] for public API items preserved for future use
- Add #![allow(deprecated)] for rand::Rng::gen_range usage
- Add #![allow(unused_assignments)] in main.rs
- Add #![allow(unreachable_code)] in network/stun.rs
- Prefix unused variables with underscore (_ip_tracker, _prefer_ipv6)
- Fix unused_must_use warning in tls_front/cache.rs
This ensures clean compilation without warnings while preserving
public API items that may be used in the future.
2026-02-24 03:40:59 +03:00
Alexey
0e2d42624f
ME Pool Hardswap
2026-02-24 00:04:12 +03:00
Alexey
fc2ac3d10f
ME Pool Reinit polishing
2026-02-23 16:09:09 +03:00
Alexey
d8dcbbb61e
ME Pool Updater + Soft-staged Reinit w/o Reconcile
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-23 16:04:19 +03:00
Alexey
eaba926fe5
ME Buffer reuse + Bytes Len over Full + Seq-no over Wrap-add
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-23 03:52:37 +03:00
Alexey
ecad96374a
ME Pool tuning
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-23 03:41:51 +03:00
Alexey
4895217828
Bounded backpressure + Semaphore Globalgate +
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-23 03:32:06 +03:00
Alexey
c4c91863f0
Middle-End tuning
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-23 03:20:13 +03:00
Alexey
6ff29e43d3
Middle-End protocol hardening
...
- Secure framing / hot-path fix: enforced a single length + padding contract across the framing layer. Replaced legacy runtime `len % 4` recovery with strict validation to eliminate undefined behavior paths.
- ME RPC aligned with C reference contract: handshake now includes `flags + sender_pid + peer_pid`. Added negotiated CRC mode (CRC32 / CRC32C) and applied the negotiated mode consistently in read/write paths.
- Sequence fail-fast semantics: immediate connection termination on first sequence mismatch with dedicated counter increment.
- Keepalive reworked to RPC ping/pong: removed raw CBC keepalive frames. Introduced stale ping tracker with proper timeout accounting.
- Route/backpressure observability improvements: increased per-connection route queue to 4096. Added `RouteResult` with explicit failure reasons (NoConn, ChannelClosed, QueueFull) and per-reason counters.
- Direct-DC secure mode-gate relaxation: removed TLS/secure conflict in Direct-DC handshake path.
2026-02-23 02:28:00 +03:00
Alexey
07ca94ce57
Reuseport Checker
2026-02-23 00:55:47 +03:00
Alexey
197f9867e0
Flush-response experiments
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-22 23:53:10 +03:00
Alexey
2dcbdbe302
Merge pull request #194 from telemt/flow
...
ME Frame too large Fixes
2026-02-21 05:04:42 +03:00
Alexey
83fc9d6db3
Middle-End Fixes
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-21 03:36:13 +03:00
Vladislav Yaroslavlev
100cb92ad1
feat: add hostname support for SOCKS4/SOCKS5 upstream proxies
...
Previously, SOCKS proxy addresses only accepted IP:port format.
Now both IP:port and hostname:port formats are supported.
Changes:
- Try parsing as SocketAddr first (IP:port) for backward compatibility
- Fall back to tokio::net::TcpStream::connect() for hostname resolution
- Log warning if interface binding is specified with hostname (not supported)
Example usage:
[[upstreams]]
type = "socks5"
address = "proxy.example.com:1080"
username = "user"
password = "pass"
2026-02-20 21:42:15 +03:00
Alexey
781947a08a
TlsFrontCache + X509 Parser + GREASE Tolerance
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-20 16:56:33 +03:00
Alexey
487aa8fbce
TLS-F: Fetcher V2
2026-02-20 13:36:54 +03:00
Alexey
32a9405002
TLS-F: fixes
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-20 13:14:33 +03:00
Alexey
5e98b35fb7
Drafting Fake-TLS V2
2026-02-20 12:48:51 +03:00
Alexey
2926b9f5c8
ME Concurrency
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-19 16:02:50 +03:00
Alexey
820ed8d346
ME Keepalives
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-19 15:49:35 +03:00
Alexey
e340b716b2
Drafting ME Healthcheck
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-19 15:39:30 +03:00
Alexey
4be4670668
ME Pool V2 - Agressive Healthcheck and Pool Rebuild
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-19 14:25:39 +03:00
Alexey
35ae455e2b
ME Pool V2
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-19 13:35:56 +03:00
unuunn
c7464d53e1
feat: implement selective routing for "scope_*" users
...
- Users with "scope_{name}" prefix are routed to upstreams where {name}
is present in the "scopes" property (comma-separated).
- Strict separation: Scoped upstreams are excluded from general routing, and vice versa.
- Constraint: SOCKS upstreams and DIRECT(`use_middle_proxy =
false`) mode only.
Example:
User "scope_hello" matches an upstream with `scopes = "world,hello"`
2026-02-18 23:29:08 +03:00
Alexey
d905de2dad
Nonce in Log only in DEBUG
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-18 20:02:43 +03:00
Alexey
c7bd1c98e7
Autofallback on ME-Init
2026-02-18 19:50:16 +03:00
Alexey
d3302d77d2
Blackmagics...
2026-02-18 19:49:19 +03:00
Alexey
df4494c37a
New reroute algo + flush() optimized + new IPV6 Parser
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-18 19:08:27 +03:00
Alexey
67bae1cf2a
[network] in upstream
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-18 06:02:24 +03:00
Alexey
eb9ac7fae4
ME Fixes
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-18 06:01:52 +03:00
Alexey
c03db683a5
Improved perf for ME
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-17 04:16:16 +03:00
Alexey
168fd59187
Fixed critical ME Problems
2026-02-17 03:40:39 +03:00
Alexey
e4f90cd7c1
ME Ping in log
2026-02-16 12:10:59 +03:00
Andrey Akifev
dddf9f30dc
Fix HOL
2026-02-16 12:49:16 +07:00
Alexey
debdbfd73c
Ping for [dc_overrides]
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-15 23:46:49 +03:00
Alexey
904c17c1b3
DC=203 by default + IP Autodetect by STUN
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-15 23:30:21 +03:00
Alexey
da108b2d8c
Middle Proxy läuft wie auf Schienen...
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-15 14:02:00 +03:00
Alexey
94a7058cc6
Middle Proxy Minimal
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-15 13:14:50 +03:00
Alexey
f2455c9cb1
Middle-End Drafts
...
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
2026-02-15 12:30:40 +03:00
Alexey
0663e71c52
Revert "Unix socket listener + reverse proxy improvements"
2026-02-15 10:09:03 +03:00
Жора Змейкин
572e07a7fd
Unix socket listener + reverse proxy improvements
2026-02-14 23:29:39 +03:00
Alexey
bcdbf033b2
Delete middle_proxy.rs
2026-02-14 22:15:41 +03:00
Alexey
7f8cde8317
NAT + STUN Probes...
2026-02-14 12:44:20 +03:00