[package]
name = "burrow"
version = "0.1.0"
edition = "2021"
description = "Burrow is an open source tool for burrowing through firewalls, built by teenagers at Hack Club."
license = "GPL-3.0-or-later"

[lib]
crate-type = ["lib", "staticlib"]

[dependencies]
anyhow = "1.0"
tokio = { version = "1.37", features = [
    "rt",
    "macros",
    "sync",
    "io-util",
    "net",
    "process",
    "rt-multi-thread",
    "signal",
    "time",
    "tracing",
    "fs",
] }
tun = { version = "0.1", path = "../tun", features = ["serde", "tokio"] }
clap = { version = "4.4", features = ["derive"] }
tracing = "0.1"
tracing-log = "0.1"
tracing-subscriber = { version = "0.3", features = ["std", "env-filter"] }
log = "0.4"
serde = { version = "1", features = ["derive"] }
serde_json = "1.0"
blake2 = "0.10"
chacha20poly1305 = "0.10"
rand = "0.8"
bytes = "1"
rand_core = "0.6"
aead = "0.5"
x25519-dalek = { version = "2.0", features = [
    "reusable_secrets",
    "static_secrets",
] }
ring = "0.17"
parking_lot = "0.12"
hmac = "0.12"
base64 = "0.21"
fehler = "1.0"
ip_network_table = "0.2"
ip_network = "0.4"
ipnetwork = { version = "0.21", features = ["serde"] }
async-channel = "2.1"
schemars = "0.8"
futures = "0.3.28"
once_cell = "1.19"
arti-client = "0.40.0"
hickory-proto = "0.25.2"
netstack-smoltcp = "0.2.1"
tokio-util = { version = "0.7.18", features = ["compat"] }
tor-rtcompat = "0.40.0"
console-subscriber = { version = "0.2.0", optional = true }
console = "0.15.8"
axum = "0.7.4"
argon2 = "0.5"
reqwest = { version = "0.12", default-features = false, features = [
    "json",
    "rustls-tls",
] }
rusqlite = { version = "0.38.0", features = ["blob"] }
dotenv = "0.15.0"
tonic = "0.12.0"
prost = "0.13.1"
prost-types = "0.13.1"
tokio-stream = "0.1"
async-stream = "0.2"
tower = { version = "0.4.13", features = ["util"] }
hyper-util = "0.1.6"
toml = "0.8.15"
rust-ini = "0.21.0"
subtle = "2.6"

[target.'cfg(target_os = "linux")'.dependencies]
caps = "0.5"
libc = "0.2"
libsystemd = "0.7"
nix = { version = "0.27", features = ["fs", "socket", "uio"] }
tracing-journald = "0.3"

[target.'cfg(target_vendor = "apple")'.dependencies]
nix = { version = "0.27" }
rusqlite = { version = "0.38.0", features = ["bundled", "blob"] }

[target.'cfg(target_os = "macos")'.dependencies]
tracing-oslog = { git = "https://github.com/Stormshield-robinc/tracing-oslog" }

[dev-dependencies]
insta = { version = "1.32", features = ["yaml"] }
tempfile = "3.13"

[package.metadata.generate-rpm]
assets = [
    { source = "target/release/burrow", dest = "/usr/bin/burrow", mode = "755" },
    { source = "systemd/burrow.service", dest = "/etc/systemd/system/burrow.service", mode = "644" },
    { source = "systemd/burrow.socket", dest = "/etc/systemd/system/burrow.socket", mode = "644" },
]
post_install_script = "../package/rpm/post_install"
pre_uninstall_script = "../package/rpm/pre_uninstall"

[features]
tokio-console = ["dep:console-subscriber"]
bundled = ["rusqlite/bundled"]


[build-dependencies]
tonic-build = "0.12.0"
