[package] name = "shadowsocks" version = "1.21.0" authors = ["Shadowsocks Contributors"] description = "shadowsocks is a fast tunnel proxy that helps you bypass firewalls." repository = "https://github.com/shadowsocks/shadowsocks-rust" readme = "README.md" documentation = "https://docs.rs/shadowsocks-core" keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"] license = "MIT" edition = "2021" rust-version = "1.74" [badges] maintenance = { status = "passively-maintained" } [features] default = ["hickory-dns"] # Uses Hickory-DNS instead of tokio's builtin DNS resolver hickory-dns = ["hickory-resolver", "arc-swap", "notify"] # Hickory-DNS was renamed from Trust-DNS, keep compatibility. trust-dns = ["hickory-dns"] # Enable Stream Cipher Protocol # WARN: Stream Cipher Protocol is proved to be insecure # https://github.com/shadowsocks/shadowsocks-rust/issues/373 # Users should always avoid using these ciphers in practice stream-cipher = ["shadowsocks-crypto/v1-stream"] # Enable extra AEAD ciphers # WARN: These non-standard AEAD ciphers are not officially supported by shadowsocks community aead-cipher-extra = ["shadowsocks-crypto/v1-aead-extra"] # Enable AEAD 2022 aead-cipher-2022 = [ "shadowsocks-crypto/v2", "rand/small_rng", "aes", "lru_time_cache", ] # Enable AEAD 2022 with extra ciphers aead-cipher-2022-extra = ["aead-cipher-2022", "shadowsocks-crypto/v2-extra"] # Enable detection against replay attack security-replay-attack-detect = ["bloomfilter"] [dependencies] log = "0.4" libc = "0.2.141" bytes = "1.7" cfg-if = "1" byte_string = "1.0" base64 = "0.22" url = "2.5" once_cell = "1.17" spin = { version = "0.9", features = ["std"] } pin-project = "1.1" bloomfilter = { version = "1.0.8", optional = true } thiserror = "1.0" rand = { version = "0.8", optional = true } lru_time_cache = { version = "0.11", optional = true } serde = { version = "1.0", features = ["derive"] } serde_urlencoded = "0.7" serde_json = "1.0" percent-encoding = "2.1" futures = "0.3" async-trait = "0.1" socket2 = { version = "0.5", features = ["all"] } tokio = { version = "1.9.0", features = [ "io-util", "macros", "net", "parking_lot", "process", "rt", "sync", "time", ] } hickory-resolver = { version = "0.24", optional = true } arc-swap = { version = "1.7", optional = true } notify = { version = "6.0", optional = true } aes = { version = "0.8", optional = true } blake3 = "1.5" [target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dependencies] shadowsocks-crypto = { version = "0.5.4", features = ["ring"] } [target.'cfg(not(any(target_arch = "x86_64", target_arch = "aarch64")))'.dependencies] shadowsocks-crypto = { version = "0.5.4", features = [] } [target.'cfg(any(windows, target_os = "linux", target_os = "android", target_os = "freebsd", target_os = "macos", target_os = "ios", target_os = "watchos", target_os = "tvos"))'.dependencies] tokio-tfo = "0.3" [target.'cfg(windows)'.dependencies] windows-sys = { version = "0.59", features = [ "Win32_Foundation", "Win32_NetworkManagement_IpHelper", "Win32_NetworkManagement_Ndis", "Win32_Networking_WinSock", "Win32_System_IO", ] } [target.'cfg(unix)'.dependencies] sendfd = { version = "0.4", features = ["tokio"] } [dev-dependencies] env_logger = "0.11"