[package] name = "rathole" version = "0.5.0" edition = "2021" authors = ["Yujia Qiao "] description = "A reverse proxy for NAT traversal" license = "Apache-2.0" repository = "https://github.com/rapiz1/rathole" readme = "README.md" build = "build.rs" include = ["src/**/*", "LICENSE", "README.md", "build.rs"] [features] default = ["server", "client", "tls", "noise", "websocket", "hot-reload"] # Run as a server server = [] # Run as a client client = [] # TLS support tls = ["tokio-native-tls"] # Noise support noise = ["snowstorm", "base64"] # Websocket support websocket = ["tokio-tungstenite", "tokio-util", "futures-core", "futures-sink", "tls"] # Configuration hot-reload support hot-reload = ["notify"] # Default feature releasing embedded devices # Cross-compiling with tls is hard. So we don't :( embedded = ["server", "client", "hot-reload", "noise"] # Feature to enable tokio-console. Disabled by default. # Don't enable it unless for debugging purposes. console = ["console-subscriber", "tokio/tracing"] # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [profile.dev] panic = "abort" [profile.release] panic = "abort" lto = true codegen-units = 1 strip = true [profile.bench] debug = 1 [profile.minimal] inherits = "release" opt-level = "z" lto = true codegen-units = 1 [dependencies] tokio = { version = "1", features = ["full"] } bytes = { version = "1", features = ["serde"] } clap = { version = "3.0", features = ["derive"] } toml = "0.5" serde = { version = "1.0", features = ["derive"] } anyhow = "1.0" sha2 = "0.10" bincode = "1" lazy_static = "1.4" hex = "0.4" rand = "0.8" backoff = { version = "0.4", features = ["tokio"] } tracing = "0.1" tracing-subscriber = { version="0.3", features=["env-filter"] } socket2 = { version = "0.4", features = ["all"] } fdlimit = "0.2" tokio-native-tls = { version = "0.3", optional = true } async-trait = "0.1" snowstorm = { version = "0.4", optional = true, features = ["stream"], default-features = false } base64 = { version = "0.13", optional = true } notify = { version = "5.0.0-pre.13", optional = true } console-subscriber = { version = "0.1", optional = true, features = ["parking_lot"] } atty = "0.2" async-http-proxy = { version = "1.2", features = ["runtime-tokio", "basic-auth"] } async-socks5 = "0.5" url = { version = "2.2", features = ["serde"] } tokio-tungstenite = { version="0.20.1", optional = true} tokio-util = { version="0.7.9", optional = true, features = ["io"] } futures-core = { version="0.3.28", optional = true } futures-sink = { version="0.3.28", optional = true } [build-dependencies] vergen = { version = "7.4.2", default-features = false, features = ["build", "git", "cargo"] } anyhow = "1.0"