vane 0.8.13

A flow-based, two-phase reverse proxy with modular protocol layers and unified middleware.
[[bin]]
name = "vane"
path = "src/main.rs"

[build-dependencies.chrono]
features = ["serde"]
version = "0.4"

[dependencies.aes]
optional = true
version = "0.8"

[dependencies.ahash]
version = "0.8"

[dependencies.anyhow]
version = "1"

[dependencies.arc-swap]
version = "1"

[dependencies.async-trait]
version = "0.1"

[dependencies.axum]
features = ["macros"]
optional = true
version = "0.8"

[dependencies.base64]
optional = true
version = "0.22"

[dependencies.bytes]
version = "1"

[dependencies.chrono]
features = ["serde"]
version = "0.4"

[dependencies.dashmap]
version = "6"

[dependencies.dotenvy]
version = "0.15"

[dependencies.fancy-log]
version = "0.1"

[dependencies.fancy-regex]
optional = true
version = "0.17"

[dependencies.futures]
version = "0.3"

[dependencies.futures-util]
version = "0.3"

[dependencies.h3]
optional = true
version = "0.0.8"

[dependencies.h3-quinn]
optional = true
version = "0.0.10"

[dependencies.hex]
version = "0.4"

[dependencies.hickory-resolver]
optional = true
version = "0.25"

[dependencies.http]
version = "1"

[dependencies.http-body]
optional = true
version = "1"

[dependencies.http-body-util]
optional = true
version = "0.1"

[dependencies.httparse]
version = "1"

[dependencies.hyper]
features = ["full"]
optional = true
version = "1"

[dependencies.hyper-rustls]
default-features = false
features = ["http2", "native-tokio", "logging", "tls12"]
optional = true
version = "0.27"

[dependencies.hyper-util]
features = ["full"]
optional = true
version = "0.1"

[dependencies.infer]
optional = true
version = "0.19"

[dependencies.lazy-motd]
version = "1"

[dependencies.lazy_static]
version = "1"

[dependencies.mime_guess]
optional = true
version = "2"

[dependencies.notify]
version = "8"

[dependencies.once_cell]
version = "1"

[dependencies.oneshot]
version = "0.1"

[dependencies.percent-encoding]
version = "2"

[dependencies.quinn]
default-features = false
features = ["runtime-tokio"]
optional = true
version = "0.11"

[dependencies.quinn-proto]
version = "0.11"

[dependencies.rand]
version = "0.9"

[dependencies.rcgen]
optional = true
version = "0.14"

[dependencies.regex]
version = "1"

[dependencies.reqwest]
default-features = false
features = ["rustls-tls", "json"]
optional = true
version = "0.12"

[dependencies.ring]
version = "0.17"

[dependencies.rustls]
default-features = false
features = ["logging", "std", "tls12"]
optional = true
version = "0.23"

[dependencies.rustls-native-certs]
optional = true
version = "0.8"

[dependencies.rustls-pemfile]
optional = true
version = "2"

[dependencies.serde]
features = ["derive"]
version = "1"

[dependencies.serde_json]
version = "1"

[dependencies.serde_yaml]
version = "0.9"

[dependencies.shellexpand]
version = "3"

[dependencies.thiserror]
version = "2"

[dependencies.tls-parser]
optional = true
version = "0.12"

[dependencies.tokio]
features = ["full", "signal"]
version = "1"

[dependencies.tokio-rustls]
default-features = false
features = ["logging", "tls12"]
optional = true
version = "0.26"

[dependencies.tokio-util]
version = "0.7"

[dependencies.toml]
version = "0.9"

[dependencies.tower-service]
optional = true
version = "0.3"

[dependencies.uuid]
features = ["v4", "v7", "serde"]
version = "1"

[dependencies.validator]
features = ["derive"]
version = "0.20"

[dependencies.x509-parser]
optional = true
version = "0.18"

[dev-dependencies.axum]
features = ["macros"]
version = "0.8"

[dev-dependencies.dirs]
version = "6"

[dev-dependencies.serial_test]
version = "3"

[dev-dependencies.temp-env]
version = "0.3"

[dev-dependencies.tempfile]
version = "3"

[dev-dependencies.tower]
version = "0.5"

[features]
aws-lc-rs = ["rustls?/aws-lc-rs", "tokio-rustls?/aws-lc-rs", "hyper-rustls?/aws-lc-rs", "quinn?/aws-lc-rs"]
cgi = ["dep:base64"]
console = ["dep:axum"]
default = ["full", "aws-lc-rs"]
domain-target = ["dep:hickory-resolver"]
full = ["tcp", "udp", "tls", "quic", "httpx", "h2upstream", "h3upstream", "cgi", "static", "ratelimit", "domain-target", "console"]
h2upstream = ["dep:reqwest"]
h3upstream = ["quic", "dep:h3", "dep:h3-quinn"]
httpx = ["dep:hyper", "dep:hyper-util", "dep:http-body", "dep:http-body-util", "dep:tower-service", "dep:axum"]
quic = ["dep:quinn", "dep:aes"]
ratelimit = []
ring = ["rustls?/ring", "tokio-rustls?/ring", "hyper-rustls?/ring", "quinn?/ring"]
static = ["dep:infer", "dep:mime_guess"]
tcp = ["dep:fancy-regex"]
tls = ["dep:rustls", "dep:tokio-rustls", "dep:rcgen", "dep:hyper-rustls", "dep:tls-parser", "dep:x509-parser", "dep:rustls-pemfile", "dep:rustls-native-certs"]
udp = ["dep:fancy-regex"]

[lints.clippy]
await_holding_lock = "warn"
dbg_macro = "warn"
empty_enum = "warn"
enum_glob_use = "warn"
equatable_if_let = "warn"
exit = "warn"
filter_map_next = "warn"
fn_params_excessive_bools = "warn"
if_let_mutex = "warn"
implicit_clone = "warn"
imprecise_flops = "warn"
inefficient_to_string = "warn"
linkedlist = "warn"
lossy_float_literal = "warn"
macro_use_imports = "warn"
manual_let_else = "warn"
match_same_arms = "warn"
match_wildcard_for_single_variants = "warn"
mem_forget = "warn"
missing_debug_implementations = "warn"
missing_docs = "warn"
must_use_candidate = "warn"
needless_borrow = "warn"
needless_continue = "warn"
needless_pass_by_ref_mut = "warn"
needless_pass_by_value = "warn"
option_option = "warn"
redundant_clone = "warn"
ref_option = "warn"
rest_pat_in_fully_bound_structs = "warn"
return_self_not_must_use = "warn"
single_match_else = "warn"
str_to_string = "warn"
suboptimal_flops = "warn"
todo = "warn"
trivially_copy_pass_by_ref = "warn"
type_complexity = "allow"
uninlined_format_args = "warn"
unnested_or_patterns = "warn"
unreachable_pub = "warn"
unused_self = "warn"
use_self = "warn"
verbose_file_reads = "warn"

[lints.clippy.rust_2018_idioms]
level = "warn"
priority = -1

[lints.rust]
unsafe_code = "forbid"

[package]
autobenches = false
autobins = false
autoexamples = false
autolib = false
autotests = false
build = "build.rs"
categories = ["network-programming", "web-programming", "asynchronous"]
description = "A flow-based, two-phase reverse proxy with modular protocol layers and unified middleware."
edition = "2024"
homepage = "https://vaneproxy.com"
keywords = ["network", "server", "web", "vane", "proxy"]
license = "MIT"
name = "vane"
readme = "README.md"
repository = "https://github.com/canmi21/vane.git"
rust-version = "1.92"
version = "0.8.13"

[package.metadata.docs.rs]
all-features = true

[profile.minimum]
codegen-units = 1
inherits = "release"
lto = true
opt-level = "z"
panic = "abort"
strip = true

[profile.release]
codegen-units = 1
lto = true
opt-level = "z"