From e8ea40c25eb13c6e58026298b02c49408183d1d1 Mon Sep 17 00:00:00 2001 From: zonyitoo Date: Tue, 12 Sep 2023 01:00:50 +0800 Subject: [PATCH] fix(ssurl): enable rustls only for x86, x86_64, aarch64 targets ref #1287 Rustls (deps by reqwest) doesn't support all platforms, like MIPS. --- Cargo.lock | 33 +++++++++++++++++++++++++-- Cargo.toml | 30 ++++++++++++++++++------ Cross.toml | 20 ++++++++++++---- crates/shadowsocks-service/Cargo.toml | 18 ++++++++++++++- 4 files changed, 86 insertions(+), 15 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f48ef087..b6d47714 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1086,6 +1086,19 @@ dependencies = [ "tokio-rustls", ] +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + [[package]] name = "iana-time-zone" version = "0.1.57" @@ -1568,6 +1581,15 @@ version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +[[package]] +name = "openssl-src" +version = "300.1.3+3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd2c101a165fff9935e34def4669595ab1c7847943c42be86e21503e482be107" +dependencies = [ + "cc", +] + [[package]] name = "openssl-sys" version = "0.9.93" @@ -1576,6 +1598,7 @@ checksum = "db4d56a4c0478783083cfafcc42493dd4a981d41669da64b4572a2a089b51b1d" dependencies = [ "cc", "libc", + "openssl-src", "pkg-config", "vcpkg", ] @@ -1927,10 +1950,12 @@ dependencies = [ "http-body", "hyper", "hyper-rustls", + "hyper-tls", "ipnet", "js-sys", "log", "mime", + "native-tls", "once_cell", "percent-encoding", "pin-project-lite", @@ -1941,6 +1966,7 @@ dependencies = [ "serde_json", "serde_urlencoded", "tokio", + "tokio-native-tls", "tokio-rustls", "tower-service", "url", @@ -2363,7 +2389,7 @@ dependencies = [ [[package]] name = "shadowsocks-rust" -version = "1.16.1" +version = "1.16.2" dependencies = [ "base64", "build-time", @@ -2400,7 +2426,7 @@ dependencies = [ [[package]] name = "shadowsocks-service" -version = "1.16.1" +version = "1.16.2" dependencies = [ "arc-swap", "async-trait", @@ -2867,6 +2893,7 @@ dependencies = [ "http", "idna", "ipnet", + "native-tls", "once_cell", "rand", "rustls", @@ -2877,6 +2904,7 @@ dependencies = [ "thiserror", "tinyvec", "tokio", + "tokio-native-tls", "tokio-rustls", "tracing", "url", @@ -2902,6 +2930,7 @@ dependencies = [ "smallvec", "thiserror", "tokio", + "tokio-native-tls", "tokio-rustls", "tracing", "trust-dns-proto", diff --git a/Cargo.toml b/Cargo.toml index 3c859990..6cb9fd24 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-rust" -version = "1.16.1" +version = "1.16.2" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -72,13 +72,17 @@ server = ["shadowsocks-service/server"] # Enable manager server manager = ["shadowsocks-service/manager"] # Enable utility -utility = ["qrcode"] +utility = ["qrcode", "reqwest"] # Enable service service = ["local", "server", "manager"] # Enables trust-dns for replacing tokio's builtin DNS resolver trust-dns = ["shadowsocks-service/trust-dns"] dns-over-tls = ["shadowsocks-service/dns-over-tls"] +dns-over-native-tls = ["shadowsocks-service/dns-over-native-tls"] +dns-over-native-tls-vendored = [ + "shadowsocks-service/dns-over-native-tls-vendored", +] dns-over-https = ["shadowsocks-service/dns-over-https"] # Enable logging output @@ -95,6 +99,10 @@ local-http-native-tls = [ "local-http", "shadowsocks-service/local-http-native-tls", ] +local-http-native-tls-vendored = [ + "local-http", + "shadowsocks-service/local-http-native-tls-vendored", +] local-http-rustls = ["local-http", "shadowsocks-service/local-http-rustls"] # Enable REDIR protocol for sslocal # (transparent proxy) @@ -164,11 +172,6 @@ tokio = { version = "1", features = ["rt", "signal"] } num_cpus = "1.15" ipnet = { version = "2.7", optional = true } -reqwest = { version = "0.11", features = [ - "blocking", - "rustls-tls", - "rustls-tls-native-roots", -], default-features = false } mimalloc = { version = "0.1", default-features = false, optional = true } tcmalloc = { version = "0.3", optional = true } @@ -181,6 +184,19 @@ shadowsocks-service = { version = "1.16.1", path = "./crates/shadowsocks-service [target.'cfg(unix)'.dependencies] daemonize = "0.5" +[target.'cfg(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64"))'.dependencies] +reqwest = { version = "0.11", features = [ + "blocking", + "rustls-tls", + "rustls-tls-native-roots", +], default-features = false, optional = true } + +[target.'cfg(not(any(target_arch = "x86", target_arch = "x86_64", target_arch = "aarch64")))'.dependencies] +reqwest = { version = "0.11", features = [ + "blocking", + "native-tls-vendored", +], optional = true } + [dev-dependencies] byteorder = "1.3" env_logger = "0.10" diff --git a/Cross.toml b/Cross.toml index 379380ff..a64c8182 100644 --- a/Cross.toml +++ b/Cross.toml @@ -1,8 +1,18 @@ [build.env] passthrough = ["RUSTFLAGS"] -#[target.mips-unknown-linux-musl] -#image = "rustembedded/cross:mips-unknown-linux-musl-0.2.1" -# -#[target.mipsel-unknown-linux-musl] -#image = "rustembedded/cross:mipsel-unknown-linux-musl-0.2.1" +[target.mips-unknown-linux-musl] +# image = "rustembedded/cross:mips-unknown-linux-musl-0.2.1" +# pre-build = [ +# "dpkg --add-architecture $CROSS_DEB_ARCH", +# "apt-get update", +# "apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH", +# ] + +[target.mipsel-unknown-linux-musl] +# image = "rustembedded/cross:mipsel-unknown-linux-musl-0.2.1" +# pre-build = [ +# "dpkg --add-architecture $CROSS_DEB_ARCH", +# "apt-get update", +# "apt-get install --assume-yes libssl-dev:$CROSS_DEB_ARCH", +# ] diff --git a/crates/shadowsocks-service/Cargo.toml b/crates/shadowsocks-service/Cargo.toml index 31b51a0b..881b70e3 100644 --- a/crates/shadowsocks-service/Cargo.toml +++ b/crates/shadowsocks-service/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "shadowsocks-service" -version = "1.16.1" +version = "1.16.2" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" @@ -39,6 +39,17 @@ dns-over-tls = [ "trust-dns-resolver/dns-over-tls", "trust-dns-resolver/dns-over-rustls", ] +dns-over-native-tls = [ + "trust-dns", + "trust-dns-resolver/dns-over-tls", + "trust-dns-resolver/dns-over-native-tls", +] +dns-over-native-tls-vendored = [ + "trust-dns", + "trust-dns-resolver/dns-over-tls", + "trust-dns-resolver/dns-over-native-tls", + "native-tls/vendored", +] dns-over-https = [ "trust-dns", "trust-dns-resolver/dns-over-https", @@ -55,6 +66,11 @@ local-flow-stat = ["local"] # Enable HTTP protocol for sslocal local-http = ["local", "hyper", "tower"] local-http-native-tls = ["local-http", "tokio-native-tls", "native-tls"] +local-http-native-tls-vendored = [ + "local-http-native-tls", + "tokio-native-tls/vendored", + "native-tls/vendored", +] local-http-rustls = [ "local-http", "tokio-rustls",