[package]
name = "rtrtr"
version = "0.3.0-rc1"
edition = "2021"
rust-version = "1.70"
authors = ["NLnet Labs <rpki-team@nlnetlabs.nl>"]
description = "A versatile tool for managing route filters"
repository = "https://github.com/NLnetLabs/rtrtr"
keywords = ["rpki", "routing-security", "bgp"]
license = "BSD-3-Clause"
readme = "README.md"

[dependencies]
arbitrary       = { version = "1", optional = true, features = ["derive"] }
arc-swap        = "1.0"
bytes           = "1"
chrono          = "0.4.31"
clap            = { version = "~4.4", features = [ "cargo", "derive" ] }
crossbeam-utils = "0.8.4"
daemonbase      = "0.1.1"
futures-util    = "0.3"
http-body-util  = "0.1"
hyper           = { version = "1.3.1", features = [ "server" ] }
hyper-util      = { version = "0.1", features = [ "server", "server-auto", "tokio" ] }
log             = "0.4"
pin-project-lite = "0.2.4"
rand            = "0.8.3"
reqwest         = { version = "0.12.4", default-features = false, features = ["blocking", "rustls-tls"] }
rpki            = { version = "0.18.2", features = ["crypto", "rtr", "slurm"] }
rustls-pemfile  = "2.1.2"
serde           = { version = "1.0", features = ["derive"] }
serde_json      = "1.0"
slab            = "0.4.2"
tokio           = { version = "1.6", features = ["fs", "io-util", "macros", "net", "rt", "rt-multi-thread", "sync", "time"]}
tokio-rustls    = { version = "0.25.0", default-features = false, features = [ "ring", "logging", "tls12" ] }
toml            = "0.8.12"
url             = { version = "2.2", features = ["serde"] }
webpki-roots    = "0.26.1"

[target.'cfg(unix)'.dependencies]
nix             = { version = "0.27.1", features = ["fs", "mman", "net", "process", "socket", "user"] }

[features]
default = [ "socks" ]
arbitrary = [ "dep:arbitrary", "chrono/arbitrary", "rpki/arbitrary" ]
socks = [ "reqwest/socks" ]


[dev-dependencies]
stderrlog       = "0.6"
rand_pcg        = "0.3"

[profile.release]
panic = "abort"

[package.metadata.deb]
name = "rtrtr"
maintainer = "The NLnet Labs RPKI Team <rpki@nlnetlabs.nl>"
license-file = ["LICENSE", "0"]
extended-description = """\
RTRTR is an RPKI data proxy, designed to collect Validated ROA Payloads \
from one or more sources in multiple formats and dispatch it onwards. It \
provides the means to implement multiple distribution architectures for RPKI \
such as centralised RPKI validators that dispatch data to local caching RTR \
servers. """
depends = "$auto, passwd"
section = "net"
priority = "optional"
assets = [
    ["target/release/rtrtr", "usr/bin/", "755"],
    ["README.md", "usr/share/doc/rtrtr/", "644"],
    ["doc/rtrtr.1", "usr/share/man/man1/rtrtr.1", "644"],
    ["etc/rtrtr.conf.system-service", "etc/rtrtr.conf", "644"],
    ["pkg/common/service.preset", "/lib/systemd/system-preset/50-rtrtr.preset", "644"],
]
maintainer-scripts = "pkg/debian"
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
copyright = "Copyright (c) 2021, NLnet Labs. All rights reserved."
conf-files = ["/etc/rtrtr.conf"]
systemd-units = { unit-name = "rtrtr", unit-scripts = "pkg/common", enable = false }

[package.metadata.deb.variants.minimal]

# Cross compilation variants:
# Note: we have to specifiy dependencies manually because we don't run cargo-deb
# on the target platform and so it cannot determine the dependencies correctly
# for us.
[package.metadata.deb.variants.minimal-cross]
depends = "adduser, passwd"

[package.metadata.generate-rpm]
# "BSD" alone is the 3-clause license. Inheriting "license" from above causes rpmlint to
# complain with "invalid-license".
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
license = "BSD"
assets = [
    { source = "target/release/rtrtr", dest = "/usr/bin/rtrtr", mode = "755" },
    { source = "target/rpm/rtrtr.service", dest = "/lib/systemd/system/rtrtr.service", mode = "644" },
    { source = "README.md", dest = "/usr/share/doc/rtrtr/README.md", mode = "644", doc = true },
    { source = "doc/rtrtr.1", dest = "/usr/share/man/man1/rtrtr.1", mode = "644", doc = true },
    { source = "etc/rtrtr.conf.system-service", dest = "/etc/rtrtr.conf", mode = "644", config = true },
    { source = "pkg/common/service.preset", dest = "/lib/systemd/system-preset/50-rtrtr.preset", mode = "644" },
]
# These get set using cargo-generate-rpm --set-metadata at package build time.
#post_install_script = ...
#pre_uninstall_script = ...
#post_uninstall_script = ...

# ensure that the useradd tool is present by depending on its package
[package.metadata.generate-rpm.requires]
shadow-utils = "*"
