Files
proxy/Cargo.toml

108 lines
2.7 KiB
TOML
Raw Normal View History

[package]
name = "sunbeam-proxy"
version = "0.1.0"
edition = "2021"
[lib]
name = "sunbeam_proxy"
path = "src/lib.rs"
[dependencies]
# Pingora with rustls backend (pure Rust TLS, no BoringSSL C build)
pingora = { version = "0.8", features = ["rustls"] }
pingora-proxy = { version = "0.8", features = ["rustls"] }
pingora-core = { version = "0.8", features = ["rustls"] }
pingora-http = "0.8"
pingora-cache = { version = "0.8", features = ["rustls"] }
# HTTP header constants
http = "1"
# Config
serde = { version = "1", features = ["derive"] }
toml = "0.8"
# Async
tokio = { version = "1", features = ["full"] }
futures = "0.3"
async-trait = "0.1"
pin-project-lite = "0.2"
# Structured logging + OTEL
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }
tracing-opentelemetry = "0.28"
opentelemetry = { version = "0.27", features = ["trace"] }
opentelemetry_sdk = { version = "0.27", features = ["rt-tokio"] }
opentelemetry-otlp = { version = "0.27", features = ["http-proto", "reqwest-client"] }
serde_json = "1"
anyhow = "1"
# CLI + serialization
clap = { version = "4", features = ["derive"] }
bincode = "1"
rustc-hash = "2"
# Lock-free Arc swapping for hot-reload (scanner model)
arc-swap = "1"
# Reverse DNS for bot IP verification
dns-lookup = "2"
# Prometheus metrics
prometheus = "0.13"
# Request IDs
uuid = { version = "1", features = ["v4"] }
# Static file serving and body rewriting
bytes = "1"
regex = "1"
# Auth subrequests
reqwest = { version = "0.12", features = ["rustls-tls", "blocking"], default-features = false }
# Rustls crypto provider — must be installed before any TLS init
rustls = { version = "0.23", features = ["aws-lc-rs"] }
# K8s watcher for cert/config hot-reload
kube = { version = "3", features = ["runtime", "client"] }
k8s-openapi = { version = "0.27", features = ["v1_35"] }
libc = "0.2"
# Cluster gossip (iroh QUIC + HyParView/PlumTree)
iroh = "0.96"
iroh-gossip = { version = "0.96", features = ["net"] }
blake3 = "1"
hex = "0.4"
rand = "0.9"
tempfile = "3"
# Dataset ingestion (CIC-IDS2017 CSV parsing)
csv = "1"
# burn-rs ML framework (training only, behind `training` feature)
burn = { version = "0.20", features = ["wgpu", "autodiff", "train"], optional = true }
[features]
training = ["burn"]
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
proptest = "1"
tempfile = "3"
[[bench]]
name = "scanner_bench"
harness = false
[[bench]]
name = "ddos_bench"
harness = false
[profile.release]
opt-level = 3
lto = true
codegen-units = 1
strip = true