[package]
name = "etchdns"
version = "0.1.4"
edition = "2024"
description = "A caching DNS proxy with advanced security features, WebAssembly hooks, and comprehensive protection mechanisms"
authors = ["Frank Denis"]
license = "MIT"
readme = "README.md"
repository = "https://github.com/jedisct1/etchdns"
homepage = "https://github.com/jedisct1/etchdns"
documentation = "https://github.com/jedisct1/etchdns"
keywords = ["dns", "caching", "proxy", "security", "webassembly"]
categories = ["network-programming", "caching", "web-programming"]
include = [
    "/src/**/*.rs",
    "/Cargo.toml",
    "/LICENSE",
    "/README.md",
    "/etchdns.toml",
    "/allowed_zones.txt",
    "/nx_zones.txt",
]

[lib]
name = "etchdns"
path = "src/lib.rs"

[[bin]]
name = "etchdns"
path = "src/main.rs"

[features]
default = []
hooks = ["extism"]

[dependencies]
bpf = "0.1.4"
tokio = { version = "1", features = ["full"] }
log = "0.4"
env_logger = "0.11"
clap = { version = "4.6", features = ["derive"] }
toml = "1.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
anyhow = "1.0"
thiserror = "2.0"
async-trait = "0.1"
slabigator = "0.9"
time-format = "1.2.2"
rand = "0.10"
byteorder = "1.5"
futures = "0.3.32"
hyper = { version = "1.10", features = ["server", "http1"] }
hyper-util = { version = "0.1", features = ["tokio", "server", "server-auto"] }
http-body-util = "0.1"
bytes = "1.11"
tower = "0.5"
tower-http = { version = "0.6", features = ["limit"] }
sieve-cache = "1.1.6"
base64 = "0.22"
form_urlencoded = "1.2"
extism = { version = "1.21.0", optional = true }
privdrop = "0.5.6"
httpdate = "1.0.3"

[dev-dependencies]
tempfile = "3.27.0"
tokio-test = "0.4.5"
