Commit Graph
32 Commits
Author SHA1 Message Date
cfal 0fbf00f227 docs: explain QUIC socket buffer tuning
Document per-socket scope, Linux kernel ceilings, best-effort warnings, and reload effects. Distinguish the default increase from newly covered QUIC paths and note shared SOCKS5 UDP warnings.
2026-10-28 14:35:46 +00:00
cfal 2401917d0e Add ordered health-checked fallback groups (#232)
Add opt-in fallback groups that route new flows through the first healthy eligible path and fail closed when no path remains, without overriding manual selections or replaying traffic. Reuse the shared probe engine with bounded generation-owned scheduling, resolver-aware path identity and reload cleanup, and reject transport combinations that cannot reliably attribute health to a concrete path.
2026-10-26 19:26:28 +08:00
cfal 8f52f98103 Support SS2022 client identity key chains (#233)
Support server-key:user-key and longer identity chains for Shadowsocks 2022 AES clients, allowing connections to multi-user servers and identity relays. Add the required identity headers, configuration validation, and usage documentation while preserving existing single-key and legacy configurations. This is client-only support; native SS2022 UDP and server-side multi-user support remain out of scope.
2026-10-26 18:39:44 +08:00
cfal f94fa61e36 Make native DNS cache freshness explicit (#227)
Add a system-only native_cache_secs option for configurable OS/NSS application memoization while preserving the existing 60-second implicit default and uncached explicit system behavior. Disable completed-cache reads and writes for zero windows, reject invalid DNS options, and document freshness and lookup-sharing semantics.
2026-10-26 14:56:33 +07:00
cfal b821c56f86 Add opt-in connection notes (#226)
Expose bounded setup, routing, and DNS notes in existing `/connections` responses so dashboards can explain active connections without a separate debug API or retained history. Add the default-off `connection_notes` controller setting and bounded per-connection storage while preserving existing connection metadata and forwarding behavior.
2026-10-26 14:56:33 +07:00
cfal 51fbd24ceb Improve strict configuration diagnostics (#225)
Make configuration failures easier to locate without weakening validation: add configuration-entry and rule context, preserve native YAML error locations, and identify input files in validation errors. Reject previously ignored unknown fields in named PEM entries and TCP settings, clarify diagnostic limits and upgrade requirements, and add coverage for strict parsing, representative configurations, and offline validation behavior.
2026-10-26 14:56:33 +07:00
cfal 5fdbe696c5 Make reload rollback safe and release TCP setup state (#219)
* Release setup-only routing owners before TCP relay

* Restore failed reloads and retain unchanged TCP listener sockets

* Simplify reload activation and listener lifecycle code

* Reject duplicate fixed TCP addresses during direct startup

* Preserve inherited TUN descriptors across rejected reloads

* Defer overlapping TCP listeners until retirement

* Document reload rollback and listener retention

* Exercise retained TCP sockets in lifecycle retention regression
2026-10-25 07:50:31 -04:00
cfal b0b30617a2 Add automatic URL-test upstream groups (#221)
Add URL-scoped health and delay-based upstream selection so new connections can use healthy, transport-compatible proxies without requiring a controller listener. This introduces strict client_group.type configuration in place of strategy, bounded automatic probes with lazy activity tracking and reload fencing, controller reporting, and configuration documentation. It also preserves local failure attribution through outbound HTTP/2 adapters so local resource limits do not incorrectly penalize proxy health.
2026-10-24 23:52:28 -04:00
cfal f6abcd8245 Add ACME certificates and live TLS/QUIC rotation (#217)
Add shared file and ACME certificate sources for automatic issuance, renewal, and live TLS/QUIC rotation without interrupting existing connections. Support HTTP-01 and TLS-ALPN-01, durable retry and account state, and CLI/FFI lifecycle handoffs. Extend live rotation to existing file-backed identities and document stricter certificate validation requirements.
2026-10-24 06:17:31 -04:00
cfal 38db23f27d Log Clash controller startup and allow wildcard CORS (#214)
Make Clash controller endpoints visible at startup and allow dashboards from any origin when explicitly configured with `cors_origins: ["*"]`. Startup messages include TCP addresses or Unix socket paths, while wildcard CORS preserves authentication and preflight restrictions; controller configuration changes still require a restart.
2026-10-23 21:29:52 -04:00
cfal fbcc5f9d46 Add Clash API and runtime proxy selectors (#213)
Expose runtime proxy selection and connection visibility without restarting Shoes. This adds an opt-in authenticated Clash-compatible TCP/Unix API, persistent selector choices, traffic and connection statistics, delay probes, live logs, and per-flow cancellation, with reload-aware integration across proxy protocols, DNS, and TUN.
2026-10-23 17:50:36 -04:00
cfal 5fc319a13d Add indexed routing predicates and local rule sources (#201)
Compile routing rules into shared indexes while preserving ordered policy evaluation and DNS decisions. Add typed predicates and bounded local SRS, sing-box JSON, Mihomo YAML/text/MRS, and GeoSite/GeoIP DAT sources through named rule groups or inline masks, with format detection, source caching, pre-activation compilation, and source-aware reloads. Include configuration examples, regression coverage, benchmark tooling, and dependency notices.
2026-10-20 22:11:01 -04:00
cfal 76df520c34 Add route-only HTTP Host sniffing (#198)
Extend opt-in TCP sniffing to use cleartext HTTP/1.0 and HTTP/1.1 Host headers alongside TLS SNI for hostname-based routing. Preserve original destinations, byte replay, sniff limits, Fake DNS precedence, and one route per connection. Add strict parsing, transport and lifecycle coverage, documentation, and an authenticated example with local-address safeguards.
2026-10-20 02:01:12 -04:00
cfal f485914a93 Add opt-in Fake DNS and TLS SNI routing (#195)
Add opt-in Fake DNS and TLS SNI routing for clients that connect by IP. Restore synthetic destinations across TCP, UDP, and TUN while preserving reply identities; prefer sniffed SNI for hostname rules without rewriting connection targets. Add persistent fake-IP mappings, stable WireGuard server identities through optional names or public keys, upstream-address guards, deadline-aware DNS fallback, configuration documentation, and examples.
2026-10-19 10:54:40 -04:00
cfal c17693c001 Unify WireGuard client and server configuration (#191)
Make WireGuard use the same inline client and server protocol syntax as other proxies, replacing named endpoints before release. Add automatic sharing of equivalent clients, encrypted peer chains, explicit server routing policy, and validation that rejects conflicting settings while keeping unused clients inactive. Update examples, configuration documentation, and lifecycle and interoperability coverage.
2026-10-18 15:00:43 -04:00
cfal 2be0409531 Add userspace WireGuard endpoints (#186)
Add named userspace WireGuard endpoints so Shoes can route inbound and outbound traffic through WireGuard without a kernel interface. Includes TCP/UDP forwarding, proxy-chain transports, reload lifecycle management, configuration validation, documentation, and dependency notices for release artifacts.
2026-10-17 15:23:44 -04:00
cfal 001495285a Add HTTP/2 CONNECT proxy support (#184)
Add standard HTTP/2 CONNECT to HTTP and mixed listeners and opt-in HTTP proxy clients, allowing concurrent TCP tunnels to share a connection while preserving legacy HTTP/1 and NaiveProxy behavior. Keep the H2 transport independent of NaiveProxy, preserve route isolation and per-stream authentication, require matching TLS ALPN for explicit H2 clients, and handle flow control, cancellation, and graceful shutdown. Include configuration documentation, an example, compatibility regressions, and interoperability coverage for sing-box, Mihomo, and the native Caddy-based Naive server.
2026-10-16 17:54:08 -04:00
cfal a5f7d1eb1a Add post-quantum REALITY support (#178)
Prefer X25519MLKEM768 with X25519 fallback for modern REALITY compatibility, and add optional pinned ML-DSA-65 authentication with configuration fields and key generation. Harden handshake validation and preserve transparent forwarding for incompatible targets or clients, with migration documentation and pinned Xray interoperability coverage.
2026-10-15 09:55:11 -04:00
cfal eb47459fc1 Support native hybrid TLS key-exchange allowlists (#177)
Add ordered native rustls key-exchange allowlists for TLS and QUIC. Hybrid-only configurations require TLS 1.3 without classical fallback or early data; omitted settings preserve existing defaults. Reject incompatible or ignored security settings, document configuration, and cover transport and Xray/sing-box interoperability.
2026-10-10 20:33:30 +08:00
cfal 1b9aaa795e Harden protocol handling and server lifecycle (#169)
Prevent malformed traffic and replayed authentication from corrupting proxy sessions, preserve buffered handshake data and protocol compatibility, and report connection failures accurately. Validate replacement configurations before retiring listeners, handle process signals reliably, and make QUIC socket setup and synchronous FFI lifecycle calls safer across platforms.
2026-10-09 11:58:06 +08:00
cfal 7a5a8ee3bd support multiple bind addresses in server configs 2026-08-10 01:57:38 +07:00
cfal 92408f822f update docs and examples 2026-01-20 02:10:35 +04:00
cfal 4eafedc5ee 0.2.5 update 2026-01-09 01:17:08 +04:00
cfal b2b7121622 0.2.1 update 2025-12-04 06:02:43 +04:00
cfal ced60d27e3 0.2.0 update 2025-11-26 22:59:30 +04:00
cfal 9e16b71f48 switch to named pem (#69)
* examples/named_certificates.yaml: update for named pems

* config: update for named pems

* thread_util.rs: allow re-setting

* CONFIG.md: updated for named pem

* main.rs: update for new validation flow

* Cargo.toml: add tempfile for tests

* inline format args for cargo clippy
2025-07-31 08:57:56 +04:00
cfal 297da58f1b CONFIG.md: fix named cert examples 2025-06-23 20:55:35 +09:00
cfal cfe5a8bf84 support named certs and keys (#66)
* support named certs and keys

* CONFIG.md: update

* .gitignore: only ignore root yamls

* examples: add more examples
2025-06-23 14:06:59 +04:00
cfal 52a6660907 CONFIG.md: update, mention ShadowTLS v3 2025-03-10 01:03:56 +04:00
cfal 4c3957a43c CONFIG.md: update for new fields and proxy types 2025-03-06 22:20:27 +04:00
cfal 7ff95f530e CONFIG.md: update 2024-12-13 02:33:44 +07:00
cfal ab178b9fcb CONFIG.md: add initial config doc 2024-12-10 09:20:41 +07:00