[package]
edition = "2021"
rust-version = "1.85"
name = "sentinel-proxy"
version = "0.4.3"
authors = ["Sentinel Contributors"]
build = "build.rs"
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A security-first reverse proxy built on Pingora with sleepable ops at the edge"
homepage = "https://github.com/raskell-io/sentinel"
readme = "README.md"
keywords = [
"proxy",
"reverse-proxy",
"http",
"security",
"pingora",
]
categories = [
"network-programming",
"web-programming::http-server",
]
license = "MIT OR Apache-2.0"
repository = "https://github.com/raskell-io/sentinel"
[features]
default = []
distributed-rate-limit = [
"redis",
"async-memcached",
]
distributed-rate-limit-memcached = ["async-memcached"]
distributed-rate-limit-redis = ["redis"]
kubernetes = []
opentelemetry = [
"dep:opentelemetry",
"dep:opentelemetry_sdk",
"dep:opentelemetry-otlp",
"dep:opentelemetry-semantic-conventions",
]
tiktoken = ["tiktoken-rs"]
[lib]
name = "sentinel_proxy"
path = "src/lib.rs"
[[bin]]
name = "sentinel"
path = "src/main.rs"
[[test]]
name = "acme_dns01_test"
path = "tests/acme_dns01_test.rs"
[[test]]
name = "distributed_rate_limit_test"
path = "tests/distributed_rate_limit_test.rs"
[[test]]
name = "integration"
path = "tests/integration.rs"
[[test]]
name = "mtls_upstream_integration_test"
path = "tests/mtls_upstream_integration_test.rs"
[[test]]
name = "service_types_test"
path = "tests/service_types_test.rs"
[[test]]
name = "tls_mtls_test"
path = "tests/tls_mtls_test.rs"
[[test]]
name = "tls_sni_test"
path = "tests/tls_sni_test.rs"
[[test]]
name = "websocket_test"
path = "tests/websocket_test.rs"
[dependencies.anyhow]
version = "1.0"
[dependencies.arc-swap]
version = "1.7"
[dependencies.async-memcached]
version = "0.5"
optional = true
[dependencies.async-trait]
version = "0.1"
[dependencies.base64]
version = "0.22"
[dependencies.brotli]
version = "8.0"
[dependencies.bytes]
version = "1.9"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4.5"
features = [
"derive",
"env",
]
[dependencies.dashmap]
version = "6.1"
[dependencies.flate2]
version = "1.1"
[dependencies.futures]
version = "0.3"
[dependencies.hex]
version = "0.4"
[dependencies.hickory-resolver]
version = "0.25"
[dependencies.hmac]
version = "0.12"
[dependencies.html-escape]
version = "0.2"
[dependencies.http]
version = "1.2"
[dependencies.http-body-util]
version = "0.1"
[dependencies.httpdate]
version = "1.0"
[dependencies.instant-acme]
version = "0.7"
[dependencies.ip2location]
version = "0.6"
[dependencies.jsonschema]
version = "0.18"
[dependencies.libc]
version = "0.2"
[dependencies.maxminddb]
version = "0.27"
[dependencies.mime_guess]
version = "2.0"
[dependencies.murmur3]
version = "0.5"
[dependencies.nix]
version = "0.31"
features = ["signal"]
[dependencies.notify]
version = "8.2"
[dependencies.num_cpus]
version = "1.16"
[dependencies.once_cell]
version = "1.20"
[dependencies.opentelemetry]
version = "0.31"
optional = true
[dependencies.opentelemetry-otlp]
version = "0.31"
features = ["tonic"]
optional = true
[dependencies.opentelemetry-semantic-conventions]
version = "0.31"
optional = true
[dependencies.opentelemetry_sdk]
version = "0.31"
features = ["rt-tokio"]
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.pingora]
version = "0.6"
features = [
"proxy",
"lb",
"rustls",
]
[dependencies.pingora-cache]
version = "0.6"
[dependencies.pingora-core]
version = "0.6"
features = ["rustls"]
[dependencies.pingora-http]
version = "0.6"
[dependencies.pingora-limits]
version = "0.6"
[dependencies.pingora-load-balancing]
version = "0.6"
[dependencies.pingora-memory-cache]
version = "0.6"
[dependencies.pingora-proxy]
version = "0.6"
[dependencies.pingora-timeout]
version = "0.6"
[dependencies.prometheus]
version = "0.14"
[dependencies.rand]
version = "0.9"
[dependencies.rcgen]
version = "0.14"
[dependencies.redis]
version = "0.27"
features = [
"tokio-comp",
"connection-manager",
]
optional = true
[dependencies.regex]
version = "1.10"
[dependencies.reqwest]
version = "0.12"
features = [
"rustls-tls",
"json",
]
default-features = false
[dependencies.rustls]
version = "0.23"
features = ["aws-lc-rs"]
[dependencies.rustls-pemfile]
version = "2.2"
[dependencies.sentinel-agent-protocol]
version = "0.4.3"
[dependencies.sentinel-common]
version = "0.4.3"
[dependencies.sentinel-config]
version = "0.4.3"
features = ["validation"]
[dependencies.serde]
version = "1.0"
features = ["derive"]
[dependencies.serde_json]
version = "1.0"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sha2]
version = "0.10"
[dependencies.signal-hook]
version = "0.4"
[dependencies.tar]
version = "0.4"
[dependencies.tempfile]
version = "3.12"
[dependencies.thiserror]
version = "2.0"
[dependencies.tiktoken-rs]
version = "0.6"
optional = true
[dependencies.tikv-jemallocator]
version = "0.6"
[dependencies.tokio]
version = "1.49"
features = [
"rt-multi-thread",
"net",
"io-util",
"time",
"sync",
"signal",
"fs",
"macros",
]
[dependencies.tokio-util]
version = "0.7"
features = ["codec"]
[dependencies.toml]
version = "0.9"
[dependencies.tonic]
version = "0.14"
features = [
"transport",
"tls-ring",
"tls-native-roots",
]
[dependencies.tonic-health]
version = "0.14"
[dependencies.tracing]
version = "0.1"
[dependencies.tracing-subscriber]
version = "0.3"
features = [
"env-filter",
"json",
]
[dependencies.url]
version = "2.5"
[dependencies.urlencoding]
version = "2.1"
[dependencies.uuid]
version = "1.20"
features = [
"v4",
"serde",
]
[dependencies.webpki-roots]
version = "1.0"
[dependencies.x509-parser]
version = "0.18"
[dependencies.xxhash-rust]
version = "0.8"
features = ["xxh3"]
[dev-dependencies.criterion]
version = "0.6"
[dev-dependencies.futures-util]
version = "0.3"
[dev-dependencies.insta]
version = "1.46"
[dev-dependencies.proptest]
version = "1.6"
[dev-dependencies.rcgen]
version = "0.14"
[dev-dependencies.reqwest]
version = "0.12"
features = ["rustls-tls"]
default-features = false
[dev-dependencies.tempfile]
version = "3.12"
[dev-dependencies.tokio-rustls]
version = "0.26"
[dev-dependencies.tokio-tungstenite]
version = "0.28"
[dev-dependencies.wiremock]
version = "0.6"