135 lines
4.7 KiB
TOML
135 lines
4.7 KiB
TOML
[package]
|
|
name = "rpxy-lib"
|
|
description = "Library of `rpxy`: a simple and ultrafast http reverse proxy"
|
|
version.workspace = true
|
|
authors.workspace = true
|
|
homepage.workspace = true
|
|
repository.workspace = true
|
|
license.workspace = true
|
|
readme.workspace = true
|
|
edition.workspace = true
|
|
publish.workspace = true
|
|
|
|
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
|
|
|
[features]
|
|
#default = ["rustls-backend", "rustls-backend-aws-lc-rs"]
|
|
|
|
http3-quinn = ["socket2", "quinn", "h3", "h3-quinn", "rpxy-certs/http3"]
|
|
http3-s2n = [
|
|
"s2n-quic",
|
|
"s2n-quic-core",
|
|
"s2n-quic-rustls",
|
|
"s2n-quic-h3",
|
|
"rpxy-certs/http3",
|
|
"h3",
|
|
]
|
|
cache = ["http-cache-semantics", "lru", "sha2", "base64"]
|
|
sticky-cookie = ["base64", "sha2", "chrono"]
|
|
native-tls-backend = ["hyper-tls"]
|
|
rustls-backend = ["hyper-rustls"]
|
|
rustls-backend-aws-lc-rs = ["hyper-rustls/aws-lc-rs"]
|
|
rustls-backend-boring = ["hyper-rustls/aws-lc-rs", "boring-rustls-provider"]
|
|
rustls-backend-openssl = ["hyper-rustls/aws-lc-rs", "rustls-openssl"]
|
|
rustls-backend-ring = ["hyper-rustls/ring"]
|
|
rustls-backend-symcrypt = ["hyper-rustls/aws-lc-rs", "rustls-symcrypt"]
|
|
rustls-backend-wolfcrypt = ["hyper-rustls/aws-lc-rs", "rustls-wolfcrypt-provider"]
|
|
webpki-roots = ["rustls-backend", "hyper-rustls/webpki-tokio"]
|
|
acme = ["dep:rpxy-acme"]
|
|
post-quantum = [
|
|
"rustls-post-quantum",
|
|
"rpxy-acme/post-quantum",
|
|
"rpxy-certs/post-quantum",
|
|
"s2n-quic-rustls/post-quantum",
|
|
]
|
|
|
|
[dependencies]
|
|
rand = "0.9.2"
|
|
ahash = "0.8.12"
|
|
bytes = "1.10.1"
|
|
derive_builder = "0.20.2"
|
|
futures = { version = "0.3.31", features = ["alloc", "async-await"] }
|
|
tokio = { version = "1.47.1", default-features = false, features = [
|
|
"net",
|
|
"rt-multi-thread",
|
|
"time",
|
|
"sync",
|
|
"macros",
|
|
"fs",
|
|
] }
|
|
tokio-util = { version = "0.7.16", default-features = false }
|
|
pin-project-lite = "0.2.16"
|
|
async-trait = "0.1.89"
|
|
|
|
# Error handling
|
|
anyhow = "1.0.100"
|
|
thiserror = "2.0.17"
|
|
|
|
# http for both server and client
|
|
http = "1.3.1"
|
|
http-body-util = "0.1.3"
|
|
hyper = { version = "1.7.0", default-features = false }
|
|
hyper-util = { version = "0.1.17", features = ["full"] }
|
|
futures-util = { version = "0.3.31", default-features = false }
|
|
futures-channel = { version = "0.3.31", default-features = false }
|
|
|
|
# http client for upstream
|
|
hyper-tls = { version = "0.6.0", features = [
|
|
"alpn",
|
|
"vendored",
|
|
], optional = true }
|
|
hyper-rustls = { version = "0.27.7", default-features = false, features = [
|
|
"http1",
|
|
"http2",
|
|
"rustls-platform-verifier",
|
|
], optional = true }
|
|
|
|
# tls and cert management for server
|
|
rpxy-certs = { path = "../rpxy-certs/", default-features = false }
|
|
hot_reload = "0.2.0"
|
|
rustls = { version = "0.23.32", default-features = false }
|
|
boring-rustls-provider = { git = "https://github.com/janrueth/boring-rustls-provider.git", rev = "490340afa77e2c08fc45853124f99d49f4f9f8a0", optional = true }
|
|
rustls-openssl = { version = "0.3.0", default-features = false, features = ["tls12"], optional = true }
|
|
rustls-post-quantum = { version = "0.2.4", optional = true }
|
|
rustls-symcrypt = { version = "0.2.1", optional = true, features = ["chacha", "x25519"] }
|
|
rustls-wolfcrypt-provider = { git = "https://github.com/wolfSSL/rustls-wolfcrypt-provider.git", rev = "dfcdbfdba3a988494503886151f732ee0bd56c7d", optional = true }
|
|
tokio-rustls = { version = "0.26.4", features = ["early-data"] }
|
|
|
|
# acme
|
|
rpxy-acme = { path = "../rpxy-acme/", default-features = false, optional = true }
|
|
|
|
# logging
|
|
tracing = { version = "0.1.41" }
|
|
|
|
# http/3
|
|
quinn = { version = "0.11.9", optional = true }
|
|
h3 = { version = "0.0.8", features = ["tracing"], optional = true }
|
|
h3-quinn = { version = "0.0.10", optional = true }
|
|
s2n-quic = { path = "../submodules/s2n-quic/quic/s2n-quic/", default-features = false, features = [
|
|
"provider-tls-rustls",
|
|
], optional = true }
|
|
s2n-quic-core = { path = "../submodules/s2n-quic/quic/s2n-quic-core", default-features = false, optional = true }
|
|
s2n-quic-rustls = { path = "../submodules/s2n-quic/quic/s2n-quic-rustls", optional = true }
|
|
s2n-quic-h3 = { path = "../submodules/s2n-quic/quic/s2n-quic-h3/", features = [
|
|
"tracing",
|
|
], optional = true }
|
|
##########
|
|
# for UDP socket wit SO_REUSEADDR when h3 with quinn
|
|
socket2 = { version = "0.6.0", features = ["all"], optional = true }
|
|
|
|
# cache
|
|
http-cache-semantics = { path = "../submodules/rusty-http-cache-semantics", default-features = false, optional = true }
|
|
lru = { version = "0.16.1", optional = true }
|
|
sha2 = { version = "0.10.9", default-features = false, optional = true }
|
|
|
|
# cookie handling for sticky cookie
|
|
chrono = { version = "0.4.42", default-features = false, features = [
|
|
"unstable-locales",
|
|
"alloc",
|
|
"clock",
|
|
], optional = true }
|
|
base64 = { version = "0.22.1", optional = true }
|
|
|
|
|
|
[dev-dependencies]
|
|
tokio-test = "0.4.4"
|