[package] name = "product-os-proxy" version = "0.0.13" # version - The version of the package. authors = ["Jeremy de Oliveira-Kumar "] # authors - The authors of the package. edition = "2021" # edition - The Rust edition. 2021 rust-version = "1.69" # rust-version - The minimal supported Rust version. min 1.69 description = "Product OS : Proxy builds on the work of hudsucker, taking it to the next level with a man-in-the-middle proxy server that can tunnel traffic through a VPN utilising Product OS : VPN." # description - A description of the package. # documentation = "" # documentation - URL of the package documentation. readme = "readme.md" # readme - Path to the package’s README file. Use https://www.makeareadme.com/ # homepage = "" # homepage - URL of the package homepage. # repository = "" # repository - URL of the package source repository. license = "AGPL-3.0-only" # license - The package license. # license-file = "license.txt" # license-file - Path to the text of the license. Use https://choosealicense.com/ keywords = ["product-os"] # keywords - Keywords for the package. categories = [] # categories - Categories of the package. https://crates.io/category_slugs # workspace = "" # workspace - Path to the workspace for the package. build = false # build - Path to the package build script. default "build.rs" or specify # links = "" # links - Name of the native library the package links with. exclude = [] # exclude - Files to exclude when publishing. include = [] # include - Files to include when publishing. # publish = [] # publish - Can be used to prevent publishing the package. false to prevent publish, list of registries otherwise # default-run = "" # default-run - The default binary to run by cargo run. autobins = true # autobins - Disables binary auto discovery. autoexamples = true # autoexamples - Disables example auto discovery. autotests = true # autotests - Disables test auto discovery. autobenches = true # autobenches - Disables bench auto discovery. resolver = "2" # resolver - Sets the dependency resolver to use. Use 2 with 2021, 1 prior # Based on hudsucker [dependencies] async-compression = { version = "0.4.8", features = ["tokio", "brotli", "gzip", "zlib", "zstd"], optional = true } async-trait = "0.1.7" thiserror = { version = "1.0.61", features = [], default-features = true, optional = false } bstr = "1.0.0" bytes = "1.0.0" futures = "0.3.11" hyper = { version = "1.3.1", features = ["client", "http1", "server"] } hyper-rustls = { version = "0.27.1", default-features = false, features = ["http1", "logging", "tls12", "webpki-tokio", "webpki-roots", "ring"], optional = true } hyper-tls = { version = "0.6.0", features = [], default-features = true, optional = true } hyper-util = { version = "0.1.3", features = [], default-features = true, optional = false } hyper-tungstenite = "0.13.0" moka = { version = "0.12.7", features = ["future"], optional = true } openssl = { version = "0.10.25", features = [], optional = true } rand = { version = "0.8.0", optional = true } rcgen = { version = "0.13.1", features = ["x509-parser"], optional = true } time = { version = "0.3.1", optional = true } tokio = { version = "1.6.1", features = ["rt"] } tokio-rustls = "0.26.0" tokio-graceful = "0.1.6" tokio-tungstenite = { version = "0.21.0" } tokio-util = { version = "0.7.0", features = ["io"], optional = true } parking_lot = { version = "0.12.1", features = ["send_guard"], default-features = false } tracing = { version = "0.1.29", features = ["log"] } serde = { version = "1.0.132", features = ["derive"] } # Support for serialize/deserialize objects serde_json = { version = "1.0.73", features = [], default-features = false, optional = false } # JSON data representation csv = { version = "1.2.2", features = [], default-features = true, optional = false } arti-client = { version = "0.17.0", features = [], default-features = false, optional = true } arti-hyper = { version = "0.17.0", features = [], default-features = false, optional = true } tor-rtcompat = { version = "0.17.0", features = [], default-features = false, optional = true } tls-api = { version = "0.9.0", features = [], default-features = false, optional = true } tls-api-openssl = { version = "0.9.0", features = [], default-features = false, optional = true } tls-api-rustls = { version = "0.9.0", features = [], default-features = false, optional = true } tls-api-native-tls = { version = "0.9.0", features = [], default-features = false, optional = true } tls-api-security-framework = { version = "0.9.0", features = [], default-features = false, optional = true } # Support for Tor http tls pin-project = { version = "1.0.12", features = [], default-features = false, optional = true } educe = { version = "0.4.19", features = [], default-features = false, optional = true } tor-error = { version = "0.3.4", features = [], default-features = false, optional = true } anyhow = { version = "1.0.66", features = [], default-features = false, optional = true } rustls = { version = "0.20.7", features = [], default-features = false, optional = true } product-os-http = { version = ">= 0.0.1", features = [], default-features = true, optional = false } product-os-http-body = { version = ">= 0.0.1", features = ["incoming", "box_body"], default-features = true, optional = false } product-os-request = { version = ">= 0.0.1", features = [], default-features = true, optional = false } product-os-configuration = { version = ">= 0.0.1", features = [], default-features = true, optional = false } product-os-capabilities = { version = ">= 0.0.1", features = [], default-features = true, optional = false } product-os-vpn = { version = ">= 0.0.1", features = [], default-features = true, optional = true } product-os-utilities = { version = ">= 0.0.1", features = ["networking"], default-features = true, optional = false } product-os-security = { version = ">= 0.0.1", features = ["certificates"], default-features = true, optional = false } product-os-server = { version = ">= 0.0.1", features = ["middleware"], default-features = true, optional = false } [dev-dependencies] [patch.crates-io] product-os-http = { path = "../product-os-http", features = [], default-features = true, optional = false } product-os-http-body = { path = "../product-os-http-body", features = [], default-features = true, optional = false } product-os-request = { path = "../product-os-request", features = [], default-features = true, optional = false } product-os-configuration = { path = "../product-os-configuration", features = [], default-features = true, optional = false } product-os-capabilities = { path = "../product-os-capabilities", features = [], default-features = true, optional = false } product-os-vpn = { path = "../product-os-vpn", features = [], default-features = true, optional = true } product-os-utilities = { path = "../product-os-utilities", features = ["networking"], default-features = true, optional = false } product-os-security = { path = "../product-os-security", features = ["certificates"], default-features = true, optional = false } product-os-server = { path = "../product-os-server", features = ["middleware"], default-features = true, optional = false } [features] decoder = ["dep:async-compression", "dep:tokio-util", "tokio/io-util"] default = ["decoder", "rcgen-ca", "rustls-client"] # full = ["decoder", "http2", "native-tls-client", "openssl-ca", "rcgen-ca", "rustls-client"] http2 = ["hyper/http2", "hyper-rustls?/http2"] native-tls-client = ["dep:hyper-tls", "tokio-tungstenite/native-tls"] openssl-ca = ["openssl", "dep:moka"] rcgen-ca = ["dep:rcgen", "dep:moka", "dep:time", "dep:rand"] rustls-client = ["dep:hyper-rustls", "tokio-tungstenite/rustls-tls-webpki-roots"] tor = ["arti-client", "arti-hyper", "tor-rtcompat", "tor-rtcompat/rustls", "tor-rtcompat/tokio", "tls-api", "tls-api-rustls", "tls-api-native-tls", "tls-api-openssl", "tls-api-security-framework", "pin-project", "educe", "tor-error", "anyhow", "rustls"] vpn = ["product-os-vpn"] vendored-openssl = ["openssl/vendored"] [workspace]