[package]
name = "iroh-dns-server"
version = "0.98.0"
edition = "2024"
description = "A pkarr relay and DNS server"
license = "MIT OR Apache-2.0"
authors = ["Frando <franz@n0.computer>", "n0 team"]
repository = "https://github.com/n0-computer/iroh"
keywords = ["networking", "pkarr", "dns", "dns-server", "iroh"]
readme = "README.md"

[dependencies]
async-trait = "0.1.77"
axum = { version = "0.8", features = ["macros"] }
axum-server = { version = "0.8", features = ["tls-rustls-no-provider"] }
base64-url = "3.0"
bytes = "1.11"
clap = { version = "4.5.1", features = ["derive"] }
derive_more = { version = "2.0.1", features = [
    "debug",
    "display",
    "into",
    "from",
] }
dirs-next = "2.0.0"
governor = "0.10"
hickory-server = { version = "0.25.1", features = ["https-ring"] }
http = "1.0.0"
humantime = "2.2.0"
humantime-serde = "1.1.1"
iroh-base = { version = "0.98", path = "../iroh-base", features = ["key"] }
iroh-metrics = { version = "0.38", features = ["service"] }
iroh-dns = { version = "0.98", path = "../iroh-dns" }
lru = "0.16.3"
mainline = "6"
n0-future = "0.3"
rcgen = "0.14"
redb = "3.1.0"
regex = "1.10.3"
rustls = { version = "0.23.33", default-features = false }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
struct_iterable = "0.1.1"
n0-error = "0.1.3"
strum = { version = "0.28", features = ["derive"] }
tokio = { version = "1", features = ["full"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["logging"] }
tokio-rustls-acme = { version = "0.9", features = ["axum"] }
tokio-stream = "0.1.14"
tokio-util = "0.7"
toml = "1.0.6"
tower-http = { version = "0.6.1", features = ["cors", "trace"] }
tower_governor = { version = "0.8", default-features = false, features = ["axum"] }
tracing = "0.1"
tracing-subscriber = "0.3.18"
ttl_cache = "0.5.1"
url = "2.5.3"

[dev-dependencies]
criterion = "0.7.0"
data-encoding = "2.3.3"
hickory-resolver = { version = "0.25.0", features = ["tls-ring", "https-ring"] }
iroh = { path = "../iroh" }
n0-tracing-test = "0.3"
rand = "0.10"
simple-dns = "0.9"
rand_chacha = "0.10"
reqwest = { version = "0.13", default-features = false, features = [
    "rustls-no-provider", "http2", "json"
] }
serde_json = "1.0.145"
tempfile = "3.23.0"

[features]
default = ["ring"]
ring = ["rustls/ring", "tokio-rustls/ring"]

[[bench]]
name = "write"
harness = false

[[example]]
name = "publish"
required-features = ["ring"]

[build-dependencies]
vergen-gitcl = "1.0.8"

[package.metadata.docs.rs]
all-features = true
