[package]
edition = "2021"
name = "synapse-waf"
version = "0.9.1"
authors = ["Nicholas Crew Ferguson"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High-performance WAF and reverse proxy with embedded intelligence — built on Cloudflare Pingora"
homepage = "https://atlascrew.dev/horizon.html"
documentation = "https://horizon.atlascrew.dev"
readme = "README.md"
keywords = [
"security",
"WAF",
"firewall",
"edge-computing",
"api-security",
]
categories = ["security"]
license = "AGPL-3.0-only"
repository = "https://github.com/atlas-crew/horizon-security-platform"
[badges.maintenance]
status = "actively-developed"
[features]
heavy-tests = []
[lib]
name = "synapse_pingora"
path = "src/lib.rs"
[[bin]]
name = "generate-schema"
path = "src/bin/generate-schema.rs"
[[bin]]
name = "synapse-waf"
path = "src/main.rs"
[[bin]]
name = "tunnel_load_test"
path = "src/bin/tunnel_load_test.rs"
[[test]]
name = "bench_proof"
path = "tests/bench_proof.rs"
[[test]]
name = "config_validation_tests"
path = "tests/config_validation_tests.rs"
[[test]]
name = "correlation_integration_tests"
path = "tests/correlation_integration_tests.rs"
[[test]]
name = "crawler_tests"
path = "tests/crawler_tests.rs"
[[test]]
name = "credential_stuffing_tests"
path = "tests/credential_stuffing_tests.rs"
[[test]]
name = "dlp_parallel_tests"
path = "tests/dlp_parallel_tests.rs"
[[test]]
name = "filter_chain_integration"
path = "tests/filter_chain_integration.rs"
[[test]]
name = "filter_chain_tests"
path = "tests/filter_chain_tests.rs"
[[test]]
name = "fingerprint_tests"
path = "tests/fingerprint_tests.rs"
[[test]]
name = "horizon_chaos_tests"
path = "tests/horizon_chaos_tests.rs"
[[test]]
name = "horizon_client_tests"
path = "tests/horizon_client_tests.rs"
[[test]]
name = "horizon_integration_tests"
path = "tests/horizon_integration_tests.rs"
[[test]]
name = "profiler"
path = "tests/profiler.rs"
[[test]]
name = "profiler_integration_test"
path = "tests/profiler_integration_test.rs"
[[test]]
name = "protocol_compat_tests"
path = "tests/protocol_compat_tests.rs"
[[test]]
name = "reload_integration_tests"
path = "tests/reload_integration_tests.rs"
[[test]]
name = "shadow_mirror_e2e_tests"
path = "tests/shadow_mirror_e2e_tests.rs"
[[test]]
name = "tunnel_client_integration"
path = "tests/tunnel_client_integration.rs"
[[test]]
name = "tunnel_integration_tests"
path = "tests/tunnel_integration_tests.rs"
[[test]]
name = "waf_integration_tests"
path = "tests/waf_integration_tests.rs"
[[bench]]
name = "actor_session_bench"
path = "benches/actor_session_bench.rs"
harness = false
[[bench]]
name = "bot_detection_bench"
path = "benches/bot_detection_bench.rs"
harness = false
[[bench]]
name = "captcha_bench"
path = "benches/captcha_bench.rs"
harness = false
[[bench]]
name = "contention"
path = "benches/contention.rs"
harness = false
[[bench]]
name = "correlation"
path = "benches/correlation.rs"
harness = false
[[bench]]
name = "detection"
path = "benches/detection.rs"
harness = false
[[bench]]
name = "escalation_bench"
path = "benches/escalation_bench.rs"
harness = false
[[bench]]
name = "goblins"
path = "benches/goblins.rs"
harness = false
[[bench]]
name = "header_profiler_bench"
path = "benches/header_profiler_bench.rs"
harness = false
[[bench]]
name = "hot_path_bench"
path = "benches/hot_path_bench.rs"
harness = false
[[bench]]
name = "pipeline"
path = "benches/pipeline.rs"
harness = false
[[bench]]
name = "profiler_bench"
path = "benches/profiler_bench.rs"
harness = false
[[bench]]
name = "proxy_overhead_bench"
path = "benches/proxy_overhead_bench.rs"
harness = false
[[bench]]
name = "reload_bench"
path = "benches/reload_bench.rs"
harness = false
[[bench]]
name = "response_scan_bench"
path = "benches/response_scan_bench.rs"
harness = false
[[bench]]
name = "risk_scoring"
path = "benches/risk_scoring.rs"
harness = false
[[bench]]
name = "schema_bench"
path = "benches/schema_bench.rs"
harness = false
[[bench]]
name = "subsystems"
path = "benches/subsystems.rs"
harness = false
[[bench]]
name = "sustained_bench"
path = "benches/sustained_bench.rs"
harness = false
[dependencies.ahash]
version = "0.8"
[dependencies.aho-corasick]
version = "1.1"
[dependencies.arc-swap]
version = "1.6"
[dependencies.async-trait]
version = "0.1"
[dependencies.axum]
version = "0.7"
features = ["ws"]
[dependencies.base64]
version = "0.22"
[dependencies.bytes]
version = "1"
[dependencies.chrono]
version = "0.4"
features = ["serde"]
[dependencies.clap]
version = "4"
features = ["derive"]
[dependencies.crossbeam-channel]
version = "0.5"
[dependencies.crossterm]
version = "0.27"
features = ["event-stream"]
[dependencies.dashmap]
version = "6.1"
[dependencies.env_logger]
version = "0.11"
[dependencies.fastrand]
version = "2.0"
[dependencies.futures]
version = "0.3"
[dependencies.futures-util]
version = "0.3"
[dependencies.getrandom]
version = "0.2"
[dependencies.governor]
version = "0.6"
[dependencies.hex]
version = "0.4"
[dependencies.hmac]
version = "0.12"
[dependencies.html-escape]
version = "0.2"
[dependencies.http]
version = "1"
[dependencies.humantime-serde]
version = "1.1"
[dependencies.idna]
version = "1.0"
[dependencies.instant]
version = "0.1"
[dependencies.ipnet]
version = "2.9"
[dependencies.lazy_static]
version = "1"
[dependencies.libc]
version = "0.2"
[dependencies.log]
version = "0.4"
[dependencies.moka]
version = "0.12"
features = ["sync"]
[dependencies.once_cell]
version = "1"
[dependencies.openssl]
version = "0.10"
[dependencies.parking_lot]
version = "0.12"
[dependencies.percent-encoding]
version = "2.3"
[dependencies.pingora]
version = "0.6"
features = ["openssl"]
[dependencies.pingora-core]
version = "0.6"
features = ["openssl"]
[dependencies.pingora-http]
version = "0.6"
[dependencies.pingora-limits]
version = "0.6"
[dependencies.pingora-openssl]
version = "0.6"
[dependencies.pingora-proxy]
version = "0.6"
[dependencies.portable-pty]
version = "0.8"
[dependencies.ratatui]
version = "0.26"
[dependencies.regex]
version = "1"
[dependencies.reqwest]
version = "0.11"
features = ["json"]
[dependencies.rustls]
version = "0.22"
[dependencies.rustls-pemfile]
version = "1"
[dependencies.schemars]
version = "0.8"
features = ["derive"]
[dependencies.serde]
version = "1"
features = ["derive"]
[dependencies.serde_json]
version = "1"
[dependencies.serde_yaml]
version = "0.9"
[dependencies.sha2]
version = "0.10"
[dependencies.subtle]
version = "2.5"
[dependencies.sysinfo]
version = "0.32"
[dependencies.thiserror]
version = "1"
[dependencies.tokio]
version = "1"
features = ["full"]
[dependencies.tokio-tungstenite]
version = "0.21"
features = ["rustls-tls-webpki-roots"]
[dependencies.tower]
version = "0.5"
features = ["util"]
[dependencies.tower-http]
version = "0.5"
features = ["cors"]
[dependencies.tracing]
version = "0.1"
[dependencies.trust-dns-resolver]
version = "0.23"
[dependencies.unicase]
version = "2.7"
[dependencies.urlencoding]
version = "2.1.3"
[dependencies.uuid]
version = "1.0"
features = ["v4"]
[dependencies.webpki-roots]
version = "0.26"
[dependencies.zeroize]
version = "1.7"
[dev-dependencies.criterion]
version = "0.5"
features = ["html_reports"]
[dev-dependencies.http-body-util]
version = "0.1"
[dev-dependencies.serial_test]
version = "3"
[dev-dependencies.tempfile]
version = "3"
[profile.bench]
opt-level = 3
lto = "thin"
codegen-units = 1
[profile.dev]
[profile.release]
opt-level = 3
lto = "thin"
codegen-units = 1
panic = "abort"