shadowsocks-rust 1.13.3

shadowsocks is a fast tunnel proxy that helps you bypass firewalls.
Documentation
[package]
name = "shadowsocks-rust"
version = "1.13.3"
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-rust"
keywords = ["shadowsocks", "proxy", "socks", "socks5", "firewall"]
license = "MIT"
edition = "2021"

[badges]
maintenance = { status = "passively-maintained" }

[[bin]]
name = "sslocal"
path = "bin/sslocal.rs"
required-features = ["local"]

[[bin]]
name = "ssserver"
path = "bin/ssserver.rs"
required-features = ["server"]

[[bin]]
name = "ssurl"
path = "bin/ssurl.rs"
required-features = ["utility"]

[[bin]]
name = "ssmanager"
path = "bin/ssmanager.rs"
required-features = ["manager"]

[[bin]]
name = "ssservice"
path = "bin/ssservice.rs"
required-features = ["service"]

[workspace]
members = [
    "crates/shadowsocks",
    "crates/shadowsocks-service",
    "crates/shadowsocks-tools",
]

[profile.release]
lto = "fat"
codegen-units = 1
incremental = false
panic = "abort"
#strip = true

[features]
default = [
    "logging",
    "trust-dns",
    "local",
    "server",
    "manager",
    "utility",
    "service",
    "local-http",
    "local-tunnel",
    "local-socks4",
    "multi-threaded",
]

# Enable local server
local = ["shadowsocks-service/local"]
# Enable remote server
server = ["shadowsocks-service/server"]
# Enable manager server
manager = ["shadowsocks-service/manager"]
# Enable utility
utility = []
# 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-https = ["shadowsocks-service/dns-over-https"]

# Enable logging output
logging = ["log4rs"]

# Enable DNS-relay
local-dns = ["local", "shadowsocks-service/local-dns"]
# Enable client flow statistic report
# Currently is only used in Android
local-flow-stat = ["local", "shadowsocks-service/local-flow-stat"]
# Enable HTTP protocol for sslocal
local-http = ["local", "shadowsocks-service/local-http"]
local-http-native-tls = ["local-http", "shadowsocks-service/local-http-native-tls"]
local-http-rustls = ["local-http", "shadowsocks-service/local-http-rustls"]
# Enable REDIR protocol for sslocal
# (transparent proxy)
local-redir = ["local", "shadowsocks-service/local-redir"]
# Enable tunnel protocol for sslocal
local-tunnel = ["local", "shadowsocks-service/local-tunnel"]
# Enable socks4 protocol for sslocal
local-socks4 = ["local", "shadowsocks-service/local-socks4"]
# Enable Tun interface protocol for sslocal
local-tun = ["local", "shadowsocks-service/local-tun", "ipnet"]

# Enable jemalloc for binaries
jemalloc = ["jemallocator"]
# Enable bundled tcmalloc
tcmalloc-vendored = ["tcmalloc/bundled"]

# Enable snmalloc for binaries
snmalloc = ["snmalloc-rs"]

# Enable tokio's multi-threaded runtime
multi-threaded = ["tokio/rt-multi-thread"]

# 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-service/stream-cipher"]

# Enable extra AEAD ciphers
# WARN: These non-standard AEAD ciphers are not officially supported by shadowsocks community
aead-cipher-extra = ["shadowsocks-service/aead-cipher-extra"]

# Enable detection against replay attack
security-replay-attack-detect = ["shadowsocks-service/security-replay-attack-detect"]
replay-attack-detect = ["security-replay-attack-detect"] # Backward compatibility. DO NOT USE.
# Enable IV printable prefix
security-iv-printable-prefix = ["shadowsocks-service/security-iv-printable-prefix"]

# Enable ARMv8 related optimizations
armv8 = ["shadowsocks-service/armv8"]
# Enable NEON releated optimizations
neon = ["shadowsocks-service/neon"]

[dependencies]
log = "0.4"
log4rs = { version = "1.0", optional = true }
serde = { version = "1.0", features = ["derive"] }
json5 = "0.4"
thiserror = "1.0"

clap = { version = "3", features = ["wrap_help", "suggestions"] }
cfg-if = "1"
qrcode = { version = "0.12", default-features = false }
exitcode = "1"
build-time = "0.1"
directories = "4.0"
xdg = "2.4"
rpassword = "5.0.1"

futures = "0.3"
tokio = { version = "1", features = ["rt", "signal"] }

ipnet = { version = "2.3", optional = true }

mimalloc = { version = "0.1", default-features = false, optional = true }
tcmalloc = { version = "0.3", optional = true }
jemallocator = { version = "0.3", optional = true }
snmalloc-rs = { version = "0.2", optional = true }
rpmalloc = { version = "0.2", optional = true }

shadowsocks-service = { version = "1.13.3", path = "./crates/shadowsocks-service" }

[target.'cfg(unix)'.dependencies]
daemonize = "0.4"

[dev-dependencies]
byteorder = "1.3"
env_logger = "0.9"
byte_string = "1.0"
tokio = { version = "1", features = ["net", "time", "macros", "io-util"]}