Commit Graph
502 Commits
Author SHA1 Message Date
cfal ff7f5b78c9 fix(websocket): reconcile early data with protocol hardening 2026-10-31 11:05:23 +00:00
cfal 7000b088a3 test(anytls): pin a peer that supports large authentication padding 2026-10-31 11:00:01 +00:00
cfal 7f590b28e4 refactor(shadowtls): unify record reads and pin yield behavior 2026-10-31 10:59:52 +00:00
cfal 7cd8fc192b test(xudp): cover DATA preflight and frame size boundaries 2026-10-31 10:59:52 +00:00
cfal f559a7c3d6 test(tuic): verify session lifecycle and simplify collector fixtures 2026-10-31 10:59:52 +00:00
cfal 4ab134ecd4 test(tls): cover verified UDP hop identity and SNI 2026-10-31 10:59:51 +00:00
cfal d658f031b9 test(proxy): strengthen failure replies and cleanup deadlines 2026-10-31 10:59:51 +00:00
cfal aff6f533cb test(anytls): verify padding boundaries and session responses 2026-10-31 10:59:51 +00:00
cfal 4d24961590 test(shadowsocks): consolidate message capacity assertions 2026-10-31 10:59:51 +00:00
cfal b6eb59276c refactor(xudp): centralize metadata validation and clarify framing 2026-10-31 10:59:51 +00:00
cfal 9b977f62b7 refactor(proxy): simplify authentication and failure replies 2026-10-31 10:59:50 +00:00
cfal 9c6d34ef0d refactor(tls): consolidate handshake setup and require hop context 2026-10-31 10:59:50 +00:00
cfal 2427886b2d refactor(anytls): simplify padding writes and verify write boundaries 2026-10-31 10:59:43 +00:00
cfal 5a1e22e19a refactor(tuic): simplify pre-auth and UDP session plumbing 2026-10-31 10:59:43 +00:00
cfal 00922f2a10 test(socks): require explicit rejection when sniffing is disabled 2026-10-31 10:59:42 +00:00
cfal f8cb22c85a test(resources): confine current-limit QUIC wrapper to tests 2026-10-31 10:59:42 +00:00
cfal 6ca6df0707 fix(tuic): preserve delayed authentication across stream reordering 2026-10-31 10:59:42 +00:00
cfal 7297d69a08 fix(tuic): bound pre-auth buffering without starving authentication 2026-10-31 10:59:42 +00:00
cfal f15a00802b test(tuic): exercise sing-box QUIC stream-mode UDP routing 2026-10-31 10:59:42 +00:00
cfal 1a352ba349 test(socks): assert terminal negative replies before connection closure 2026-10-31 10:59:41 +00:00
cfal 55f97a5601 test(xudp): expect oversized datagrams to be dropped without starting a session 2026-10-31 10:59:41 +00:00
cfal 998d842463 test(tls): verify factory identities and wire SNI through nested TLS 2026-10-31 10:59:41 +00:00
cfal ad9769d7c0 fix(websocket): format IPv6 hop authorities through the client factory 2026-10-31 10:59:41 +00:00
cfal 947704eafe fix(vision): select opaque XUDP mode before processing preread data 2026-10-31 10:59:41 +00:00
cfal 033650cab4 fix(socks): advertise IPv4 addresses on dual-stack UDP listeners 2026-10-31 10:59:40 +00:00
cfal 277bf0e056 fix(xudp): drop oversized datagrams without poisoning the route 2026-10-31 10:59:40 +00:00
cfal b581622319 test: place framing regressions after production items 2026-10-31 10:59:40 +00:00
cfal 5367be302d test(tuic): cover pre-auth pressure and permit release on teardown 2026-10-31 10:59:40 +00:00
cfal 758bfbb7c4 test(anytls): verify large padding schemes with current sing-box peers 2026-10-31 10:59:40 +00:00
cfal 2c8472f3c0 fix(vless): carry Vision UDP through opaque MUX and XUDP framing 2026-10-31 10:59:39 +00:00
cfal 79ffae11f3 fix(hysteria2): route each UDP packet and preserve relay reply sources 2026-10-31 10:59:39 +00:00
cfal 57430133dd refactor(xudp): share bounded whole-frame decoding with client adapters 2026-10-31 10:59:39 +00:00
cfal f3f2b9eb7e fix(tuic): retain pre-auth streams and route each UDP destination 2026-10-31 10:59:39 +00:00
cfal 06d5192c87 fix(vision): split oversized padding frames and bound accepted writes 2026-10-31 10:59:39 +00:00
cfal ef0e7612b8 fix(handshake): preserve hop identity and validate WebSocket upgrades 2026-10-31 10:59:38 +00:00
cfal 798fdda201 fix(socks): advertise the control connection's local UDP endpoint 2026-10-31 10:59:04 +00:00
cfal 212d50cabb fix(proxy): flush terminal failures and validate SOCKS hostname lengths 2026-10-31 10:59:04 +00:00
cfal 4b49092e48 fix(anytls): share validated padding updates and bound wire records 2026-10-31 10:59:03 +00:00
cfal c710dfbcd5 fix(vmess): emit UDP padding without advancing state on rejection 2026-10-31 10:59:03 +00:00
cfal 0094b1b5ff fix(streams): reject oversized messages and consume empty ShadowTLS records 2026-10-31 10:59:03 +00:00
cfal e35e1fe790 refactor(stream): preserve local endpoints through protocol wrappers 2026-10-31 10:59:02 +00:00
cfal e256448109 fix(tun): reject fragmented IPv4 UDP packets 2026-10-31 10:58:55 +00:00
cfal 96f45f0a01 fix(xudp): isolate and bound metadata decoding 2026-10-31 10:58:54 +00:00
cfal 6888329d14 Add WebSocket early-data support (#250)
Support WebSocket early data for compatibility with sing-box, Xray, and Mihomo. Add opt-in client sending through path or header carriers, automatic server reception of up to 2048 bytes from Sec-WebSocket-Protocol, strict handshake validation, and fixes for buffered data and stream metadata, with configuration documentation and interoperability coverage.
2026-10-31 18:39:17 +08:00
cfal e0282cf72c Add native Hysteria2 and TUIC clients (#249)
Adds native Hysteria2 and TUIC v5 outbound clients so proxy routes can use either protocol directly for TCP and UDP. Includes pooled QUIC connections with bounded resource use, cancellation-safe TUIC commands, Hysteria2 Salamander obfuscation and port hopping, hardened HTTP/3 authentication, TLS verification, configuration examples, and interoperability coverage in CI.
2026-10-31 16:56:16 +08:00
cfal 1fac4c231c Add Xray-compatible Sudoku TCP masking (#246)
Adds an outermost sudoku_mask wrapper so TCP clients and servers can interoperate with Xray FinalMask, including configurable layouts and padding, stacked masks, and XHTTP carriers. Preserves explicit flush ownership and prevents Vision or raw TCP splice from bypassing the mask, with configuration validation and documentation for supported placements and limits. Native UDP/QUIC masking is not included.
2026-10-30 22:58:56 +08:00
cfal 829625ad2c Simplify TLS read/write ownership (#245)
* Make TLS protocol handoff flushes explicit

* Keep TLS reads independent of writes
2026-10-30 16:19:52 +08:00
cfal 7460f5d046 Add managed Linux desktop TUN capture (#241)
Add managed Linux TUN and REDIRECT capture with independent DNS interception, protected bootstrap and outbound sockets, best-effort systemd-resolved integration, and retained-ingress reload and recovery. Include configuration documentation, service integration, and kernel coverage.
2026-10-30 15:07:46 +08:00
cfal 09f09bf611 Fix lost TLS writer wakeups (#244)
* Fix split-task readiness during TLS read-driven flushes

Preserve original reader and writer registrations behind a shared readiness dispatcher. Keep internal receive, drain and flush helpers non-registering, and wake parked writers on read-driven progress or fatal receive errors without adding write-side self-wakes.

Cover ordinary TLS, REALITY, raw handoff, vectored writes, control-operation readiness, reader cancellation and terminal errors. Extract the fix and later TLS test cleanups from 5f475063 and f83bc0f1 without the Sudoku-only test cases.

* Simplify TLS readiness regression tests
2026-10-30 11:55:41 +08:00
cfal 4fcbd7c776 Fix resolver refresh after DNS transport failures (#242)
Preserve Hickory transport error kinds during hostname lookups so the existing resolver refresh and retry policy handles timeouts and unavailable connections. Reuse the shared error conversion and cover transport recovery, cached success, and NXDOMAIN responses without unnecessary refresh.
2026-10-29 15:20:08 +08:00