Add iroh v0.96, iroh-gossip v0.96, blake3, hex, and rand v0.9 to Cargo.toml. Define ClusterConfig, DiscoveryConfig, BandwidthClusterConfig, and ModelsConfig in config.rs with serde defaults for gossip port (11204), broadcast interval (1s), meter window (30s), and peer discovery methods (k8s/bootstrap). Signed-off-by: Sienna Meridian Satterwhite <sienna@sunbeam.pt>
95 lines
2.4 KiB
TOML
95 lines
2.4 KiB
TOML
[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"
|
|
|
|
# DDoS detection (KNN classifier)
|
|
clap = { version = "4", features = ["derive"] }
|
|
fnntw = "0.4"
|
|
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"
|
|
|
|
[dev-dependencies]
|
|
criterion = { version = "0.5", features = ["html_reports"] }
|
|
proptest = "1"
|
|
tempfile = "3"
|
|
|
|
[[bench]]
|
|
name = "scanner_bench"
|
|
harness = false
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = true
|
|
codegen-units = 1
|
|
strip = true
|