Commit Graph
3362 Commits
Author SHA1 Message Date
renovate[bot] ef8e698bd4 chore(deps): update rust crate tun to v0.8.13 2026-06-20 03:32:25 +00:00
renovate[bot] 7c7fd774f2 chore(deps): update rust crate tun to v0.8.12 2026-06-19 04:45:07 +00:00
renovate[bot] 7d8a317f7e chore(deps): update rust crate bytes to v1.12.0 2026-06-18 20:00:25 +00:00
renovate[bot] bac73f504b chore(deps): update rust crate webpki-roots to v1.0.8 2026-06-17 14:08:18 +00:00
renovate[bot] 7fa8bd92e7 chore(deps): update rust crate brotli to v8.0.4 2026-06-14 21:47:49 +00:00
renovate[bot] ffc3c89ca3 chore(deps): update rust crate etherparse to v0.20.2 2026-06-14 18:14:06 +00:00
renovate[bot] 2ae5b6630a chore(deps): update rust crate time to v0.3.49 (#2141)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-14 05:45:53 +00:00
renovate[bot] 1f53ae7ade chore(deps): update alpine docker tag to v3.24 2026-06-09 22:44:45 +00:00
renovate[bot] 54ab30e3d4 chore(deps): update rust crate regex to v1.12.4 2026-06-09 15:42:05 +00:00
renovate[bot] 66a20e1212 chore(deps): update rust crate tun to v0.8.11 2026-06-09 02:47:15 +00:00
renovate[bot] a517d8da86 chore(deps): update rust crate http to v1.4.2 2026-06-08 15:38:58 +00:00
renovate[bot] 3139a89a6a chore(deps): update rust crate log to v0.4.32 (#2140)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-07 18:14:34 +00:00
renovate[bot] 8a57e09d3d chore(deps): update rust crate log to v0.4.31 2026-06-02 14:58:40 +00:00
renovate[bot] ee7924fe60 chore(deps): update rust crate rustls-native-certs to v0.8.4 2026-06-01 20:44:47 +00:00
renovate[bot] a6fd8a4213 chore(deps): update rust crate rpassword to v7.5.4 2026-05-31 08:49:22 +00:00
renovate[bot] 9d88c8da27 chore(deps): update rust crate hyper to v1.10.1 2026-05-29 19:02:13 +00:00
renovate[bot] 33bb377cef chore(deps): update rust docker tag to v1.96.0 2026-05-29 00:12:42 +00:00
renovate[bot] f2062fd14f chore(deps): update rust crate socket2 to v0.6.4 2026-05-28 18:14:01 +00:00
renovate[bot] 5dfeecb4a2 chore(deps): update rust crate tun to v0.8.10 2026-05-28 09:59:52 +00:00
renovate[bot] 3e9494ddf0 chore(deps): update rust crate brotli to v8.0.3 2026-05-28 05:57:39 +00:00
renovate[bot] b883a1e969 chore(deps): update rust crate hyper to v1.10.0 2026-05-27 18:36:15 +00:00
renovate[bot] bfa73218c3 chore(deps): update rust crate aes to v0.9.1 2026-05-27 16:13:44 +00:00
renovate[bot] 46a56c8405 chore(deps): update rust crate http to v1.4.1 2026-05-25 21:07:50 +00:00
renovate[bot] e030a86efb chore(deps): update rust crate reqwest to v0.13.4 2026-05-25 17:34:25 +00:00
renovate[bot] 2685784494 chore(deps): update rust crate log to v0.4.30 2026-05-25 09:52:38 +00:00
renovate[bot] 4b666c134c chore(deps): update rust crate rpassword to v7.5.3 2026-05-22 21:49:55 +00:00
renovate[bot] c6e6480fa2 chore(deps): update rust crate mimalloc to v0.1.52 2026-05-22 15:48:49 +00:00
renovate[bot] 7e712abd6e chore(deps): update rust crate serde_json to v1.0.150 2026-05-21 21:09:47 +00:00
renovate[bot] c506d37d83 chore(deps): update rust crate mimalloc to v0.1.51 2026-05-20 18:26:58 +00:00
renovate[bot] e5257f7e01 fix(deps): update rust crate spin to 0.12 (#2136)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-05-20 18:26:39 +00:00
renovate[bot] 26619f00c1 chore(deps): update rust crate pin-project to v1.1.13 2026-05-13 20:52:02 +00:00
renovate[bot] 343f90ff9b chore(deps): update rust crate tun to v0.8.9 2026-05-13 05:39:16 +00:00
renovate[bot] 0698790844 chore(deps): update rust crate nix to v0.31.3 2026-05-11 11:32:52 +00:00
Andy Ye aa4946260b Document redir iptables setup 2026-05-11 19:31:55 +08:00
renovate[bot] c4d8d18527 chore(deps): update rust crate windows-service to v0.8.1 2026-05-08 17:05:01 +00:00
renovate[bot] 72a922915d chore(deps): update rust crate tokio to v1.52.3 2026-05-08 14:34:54 +00:00
renovate[bot] a78795d193 chore(deps): update rust crate tun to v0.8.8 2026-05-08 06:36:40 +00:00
renovate[bot] 2d5dc4001d chore(deps): update rust crate rpassword to v7.5.2 2026-05-06 15:38:21 +08:00
renovate[bot] 37d8e23361 chore(deps): update rust crate tokio to v1.52.2 2026-05-06 15:38:03 +08:00
dependabot[bot] caf7efac9e chore(deps): bump openssl in the cargo group across 1 directory
Bumps the cargo group with 1 update in the / directory: [openssl](https://github.com/rust-openssl/rust-openssl).


Updates `openssl` from 0.10.75 to 0.10.79
- [Release notes](https://github.com/rust-openssl/rust-openssl/releases)
- [Commits](https://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.75...openssl-v0.10.79)

---
updated-dependencies:
- dependency-name: openssl
  dependency-version: 0.10.78
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-06 15:37:51 +08:00
ty 9f6ec2597d fix: RUSTSEC-2026-0119 2026-05-06 15:37:15 +08:00
ty b2fc8a7447 fix: RUSTSEC-2026-0119 2026-05-06 14:32:32 +08:00
renovate[bot] 89a19d0035 chore(deps): update rust crate hickory-resolver to v0.26.1 2026-05-06 14:31:29 +08:00
renovate[bot] a7f21a4326 chore(deps): update rust crate pin-project to v1.1.12 2026-05-06 14:30:41 +08:00
renovate[bot]andzonyitoo d817982cd1 fix(deps): update rust crate hickory-resolver to 0.26 (#2114)
* fix(deps): update rust crate hickory-resolver to 0.26

* fix: compat hickory-resolver 0.26

* fix: remove unused import

* fix: removed unnecessary deref

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: zonyitoo <zonyitoo@gmail.com>
2026-05-05 17:14:39 +08:00
Linus Färnstrand 9fca88bc93 Replace ring with aws-lc-rs across the dependency tree
Switches the cryptographic backend so that ring is no longer pulled
into shadowsocks-rust on any supported target.

* shadowsocks-crypto: use the new aws-lc-rs backend in place of
  the ring feature
* tokio-rustls: select the aws_lc_rs provider instead of ring.
* hickory-resolver: use tls-aws-lc-rs, https-aws-lc-rs and
  h3-aws-lc-rs in place of the *-ring variants.

The only remaining ring path in the dependency tree is via quinn-proto on
wasm32-unknown-unknown, which aws-lc-rs cannot target and which
shadowsocks does not support.
2026-05-05 17:13:29 +08:00
renovate[bot]andzonyitoo 75d44c7956 fix(deps): update rust crate aes to 0.9 (#2107)
* fix(deps): update rust crate aes to 0.9

* feat: compat cipher 0.5

* fix: replaced deprecated from_slice

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: zonyitoo <zonyitoo@gmail.com>
2026-05-01 22:41:59 +08:00
ty fc8cd59981 feat(service): outbound UDP relay through SOCKS5-only chains
Phase 2 of the outbound proxy refactor. The new
OutboundProxyDatagram type implements DatagramSocket / DatagramSend /
DatagramReceive on top of a freshly-bound local UDP socket plus one
SOCKS5 UDP ASSOCIATE per chain hop. Each datagram on the wire carries
N nested UdpAssociateHeader frames (one per hop), the inner-most one
addressing the ss-server's UDP external endpoint.

Per-hop control connections are built by reusing the existing TCP
chain builder (connect_chain_for_udp_associate) so all of the
shadowsocks DNS resolver / ConnectOpts behaviour still applies.

Integration:

* OutboundProxyClient::associate_udp + supports_udp().
* OutboundProxyClient::supports_udp() returns true iff every hop is
  SOCKS5; HTTP/HTTPS hops cannot transport UDP and downgrade the
  whole chain to 'unsupported'.
* local::net::udp::association::create_proxied_socket dispatches
  based on supports_udp(): when true the per-association socket is
  ProxySocket<OutboundProxyDatagram> wrapping the chained datagram;
  otherwise we keep the previous direct ProxySocket<ShadowUdpSocket>.
* When the chain is configured but unable to relay UDP, sslocal /
  ssserver emit a single startup WARN ('UDP traffic will bypass the
  chain') instead of failing — runtime traffic transparently falls
  back to a direct connection to the ss-server.

OutboundProxyStream gains try_into_tcp() so SOCKS5-only chains can
recover the bare TcpStream as keep-alive control connections —
Sync-friendly storage required because the HTTP CONNECT variant
internally holds a hyper::upgrade::Upgraded which is !Sync.
2026-05-01 22:23:51 +08:00
ty 250ae60446 refactor(service)!: rework outbound proxy chain into a unified client
Replace the previous parallel outbound proxy implementations
(net::outbound_proxy + local::net::tcp::outbound_proxy) with a single
self-contained module at net::outbound, exposing OutboundProxyClient,
OutboundProxyStream, Socks5Auth, HttpProxyAuth and a TcpDialer trait.

Highlights:

* OutboundProxyStream is now a closed-set enum (Bypassed / Https / Http)
  with statically-dispatched poll_* — no more Box<dyn ProxyStream>. The
  HTTPS variant boxes its inner OutboundProxyStream solely to break the
  recursive type instantiation required by the TLS libraries; this is
  not dynamic dispatch.
* HTTP CONNECT client is rebuilt on top of hyper::client::conn::http1
  + hyper::upgrade. The hand-rolled status-line parser (which could
  drop bytes that arrived in the same read() as the header terminator,
  did not handle 100-Continue, etc.) is gone.
* Auth parameters are now strongly typed:
    Socks5Auth::{None, UsernamePassword{..}}
    HttpProxyAuth::{None, Basic{..}}
  Both enums are #[non_exhaustive] for forward compatibility.
* AutoProxyClientStream's ProxiedViaChain variant is folded back into a
  single Proxied(ProxyClientStream<MonProxyStream<OutboundTransport>>)
  variant, with OutboundTransport = Direct(TcpStream) | Chained(...).
* ServiceContext (both server and local) now caches an
  Arc<OutboundProxyClient> built once at set_outbound_proxies time
  instead of re-parsing the chain on every connection.
* The standalone Socks5TcpClient / Socks5UdpClient implementations
  previously duplicated across net::socks5_client and
  local::socks::client::socks5 are unified into the latter location;
  net::outbound::socks5 only keeps the chain-friendly Socks5Negotiator.
* When UDP is enabled but the configured chain contains a non-SOCKS5
  hop, sslocal/ssserver emits a single startup warning. Phase 2 will
  add UDP relay support for SOCKS5-only chains.

BREAKING CHANGE: the following items have moved or been removed:

* crate::net::outbound_proxy — removed; use crate::net::OutboundProxyClient
* crate::net::http_connect::HttpConnectClient — moved to
  crate::net::HttpConnectClient (only available with the local-http feature)
* crate::net::Socks5TcpClient (the chain-mixing wrapper) — split: the
  pure SOCKS5 client is now crate::local::socks::client::socks5::Socks5TcpClient;
  the in-band negotiator is crate::net::Socks5Negotiator
* crate::local::net::tcp::outbound_proxy — removed
* ServiceContext::outbound_proxies() — replaced by outbound_client()
  returning Option<&Arc<OutboundProxyClient>>
2026-05-01 22:23:51 +08:00
renovate[bot] e2ecfaeee3 chore(deps): update rust crate smoltcp to v0.13.1 2026-04-30 23:51:11 +00:00