mirror of
https://github.com/NLnetLabs/krill.git
synced 2026-08-17 21:25:53 +02:00
316 lines
12 KiB
TOML
316 lines
12 KiB
TOML
[package]
|
|
# Note: some of these values are also used when building Debian packages below.
|
|
name = "krill"
|
|
version = "0.15.1-dev"
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
authors = ["NLnet Labs <rpki-team@nlnetlabs.nl>"]
|
|
description = "Resource Public Key Infrastructure (RPKI) daemon"
|
|
homepage = "https://www.nlnetlabs.nl/projects/routing/krill/"
|
|
repository = "https://github.com/NLnetLabs/krill"
|
|
keywords = ["rpki", "routing-security", "bgp"]
|
|
readme = "README.md"
|
|
license = "MPL-2.0"
|
|
exclude = [
|
|
"test-resources/*",
|
|
"tests/*",
|
|
".github/*",
|
|
"docker/*",
|
|
"pkg/*",
|
|
"Dockerfile",
|
|
]
|
|
|
|
[dependencies]
|
|
arc-swap = "1.7.1"
|
|
base64 = "0.22.1"
|
|
bytes = "1"
|
|
chrono = { version = "0.4.39", features = ["serde"] }
|
|
clap = { version = "4.5.37", features = ["cargo", "derive", "env", "wrap_help"]}
|
|
fd-lock = "4.0.4"
|
|
fern = { version = "0.7.1", features = ["syslog-7"] }
|
|
futures-util = "0.3"
|
|
hex = "0.4"
|
|
http-body-util = "0.1"
|
|
hyper = { version = "1.6.0", features = ["server"] }
|
|
hyper-util = { version = "0.1", features = [ "server" ] }
|
|
intervaltree = "0.2.7"
|
|
lazy_static = "1.5"
|
|
libflate = "2.1.0"
|
|
log = "0.4"
|
|
openssl = { version = "0.10", features = ["v110"] }
|
|
percent-encoding = "2.3.1"
|
|
pin-project-lite = "0.2.16"
|
|
rand = "0.9"
|
|
reqwest = { version = "0.12.15", features = ["json"] }
|
|
rpki = { version = "0.18.6", features = ["ca", "compat", "rrdp"] }
|
|
rustls-pemfile = "2.2.0"
|
|
serde = { version = "1.0", features = ["derive", "rc"] }
|
|
serde_json = "1.0"
|
|
tempfile = "3.19.1"
|
|
tokio = { version = "1", features = [ "macros", "rt", "rt-multi-thread", "signal", "time" ] }
|
|
tokio-rustls = { version = "0.26", default-features = false, features = [ "ring", "logging", "tls12" ] }
|
|
toml = "0.9.5"
|
|
url = { version = "2.5.4", features = ["serde"] }
|
|
uuid = { version = "1.16", features = ["serde", "v4"] }
|
|
|
|
# Dependencies used by the "hsm" feature
|
|
backoff = { version = "0.4.0", optional = true }
|
|
cryptoki = { version = "0.10", optional = true }
|
|
kmip = { version = "0.4.3", package = "kmip-protocol", features = [ "tls-with-openssl" ], optional = true }
|
|
r2d2 = { version = "0.8.10", optional = true }
|
|
secrecy = { version = "0.8", features = ["serde"], optional = true }
|
|
|
|
# Dependencies used by the "multi-user" feature
|
|
basic-cookies = { version = "0.1", optional = true }
|
|
openidconnect = { version = "4.0.0", optional = true, default-features = false }
|
|
regex = { version = "1.11.1", optional = true, default-features = false, features = [ "std" ] }
|
|
rpassword = { version = "7.4.0", optional = true }
|
|
scrypt = { version = "0.11", optional = true, default-features = false }
|
|
unicode-normalization = { version = "0.1", optional = true }
|
|
urlparse = { version = "0.7", optional = true }
|
|
|
|
# Disable compiler optimizations for the pkcs11 crate because otherwise with a release build the
|
|
# `pReserved = ptr::null_mut()` assignment done by `CK_C_INITIALIZE_ARGS::default()` appears to be optimized out. This
|
|
# causes SoftHSMv2 to fail with error CKR_ARGUMENTS_BAD and to log to syslog "SoftHSM.cpp(436): pReserved must be set to
|
|
# NULL_PTR". Disabling optimizations for the pkcs11 crate "solves" this problem.
|
|
# [profile.release.package.pkcs11]
|
|
# opt-level = 0
|
|
|
|
[target.'cfg(unix)'.dependencies]
|
|
syslog = "7.0.0"
|
|
|
|
[features]
|
|
default = ["multi-user", "hsm"]
|
|
hsm = ["backoff", "kmip", "cryptoki", "r2d2", "secrecy"]
|
|
multi-user = [
|
|
"basic-cookies",
|
|
"regex",
|
|
"openidconnect",
|
|
"rpassword",
|
|
"scrypt",
|
|
"unicode-normalization",
|
|
"urlparse",
|
|
]
|
|
|
|
# Preview features - not ready for production use
|
|
rta = []
|
|
|
|
# Internal features - not for external use
|
|
hsm-tests-kmip = ["hsm"]
|
|
hsm-tests-pkcs11 = ["hsm"]
|
|
|
|
[dev-dependencies]
|
|
tar = "0.4"
|
|
regex = "1.11.1"
|
|
stderrlog = "0.6"
|
|
tempfile = "3.19.1"
|
|
urlparse = "0.7"
|
|
|
|
# Make sure that Krill crashes on panics, rather than losing threads and
|
|
# limping on in a bad state.
|
|
[profile.release]
|
|
panic = "abort"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# START DEBIAN PACKAGING
|
|
#
|
|
# Configurations for the cargo-deb cargo plugin which builds Debian packages in
|
|
# target/debian/ when invoked with: cargo deb. Tested with cargo-deb v1.23.1.
|
|
# Use `--variant` to select which section below to use. Variant sections inherit
|
|
# and override the settings in the base [package.metadata.deb] section. The
|
|
# configs vary because of differing degrees of OpenSSL and systemd support
|
|
# across operating systems.
|
|
#
|
|
# Note that as the postinst script uses the adduser command we declare a
|
|
# dependency on the adduser package to keep the lintian tool happy.
|
|
# Note: krill.conf is deliberately NOT specified as a "conf-file" because it is
|
|
# generated.
|
|
#
|
|
# The GitHub Actions pkg.yml workflow definition file uses these configurations
|
|
# to build and test Ubuntu/Debian packages for Krill.
|
|
#
|
|
# See:
|
|
# - https://github.com/mmstick/cargo-deb
|
|
# - https://lintian.debian.org/tags/systemd-service-file-outside-lib.html
|
|
# - https://www.debian.org/doc/debian-policy/ch-files.html#behavior
|
|
# - .github/workflows/pkg.yml
|
|
[package.metadata.deb]
|
|
name = "krill"
|
|
priority = "optional"
|
|
section = "net"
|
|
extended-description-file = "pkg/debian/description.txt"
|
|
license-file = ["LICENSE", "0"]
|
|
depends = "$auto, passwd, libssl1.1"
|
|
maintainer-scripts = "pkg/debian/"
|
|
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
|
|
copyright = "Copyright (c) 2019, NLnet Labs. All rights reserved."
|
|
assets = [
|
|
[
|
|
"target/release/krill",
|
|
"/usr/bin/krill",
|
|
"755",
|
|
],
|
|
[
|
|
"target/release/krillc",
|
|
"/usr/bin/krillc",
|
|
"755",
|
|
],
|
|
[
|
|
"defaults/krill.conf",
|
|
"/usr/share/doc/krill/krill.conf",
|
|
"644",
|
|
],
|
|
[
|
|
"doc/krill.1",
|
|
"/usr/share/man/man1/krill.1",
|
|
"644",
|
|
],
|
|
[
|
|
"doc/krillc.1",
|
|
"/usr/share/man/man1/krillc.1",
|
|
"644",
|
|
],
|
|
[
|
|
"pkg/common/krill.service.preset",
|
|
"/usr/lib/systemd/system-preset/50-krill.preset",
|
|
"644",
|
|
],
|
|
]
|
|
systemd-units = { unit-name = "krill", unit-scripts = "pkg/common", enable = false }
|
|
|
|
# Packaging configuration for the `krillup` binary rather than Krill itself. As
|
|
# we want the built binary to match that built for Krill we want the same
|
|
# dynamic or static OpenSSL linking too. Rather than inherit from
|
|
# [package.metadata.deb] and override fields to build a different package (which
|
|
# cargo deb variants weren't intended for), instead we use the same approach
|
|
# that we are forced to use for `cargo generate-rpm` (see below) where the the
|
|
# `pkg` GitHub Actions workflow renames the `package.metadata.deb` section out
|
|
# of the way and renames this section to `package.metadata.deb` to use it as the
|
|
# base configuration instead.
|
|
[package.metadata.deb_alt_base_krillup]
|
|
name = "krillup"
|
|
priority = "optional"
|
|
section = "net"
|
|
extended-description-file = "pkg/debian/description-krillup.txt"
|
|
license-file = ["LICENSE", "0"]
|
|
depends = "$auto, passwd, libssl1.1"
|
|
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
|
|
copyright = "Copyright (c) 2019, NLnet Labs. All rights reserved."
|
|
assets = [
|
|
[
|
|
"target/release/krillup",
|
|
"/usr/bin/krillup",
|
|
"755",
|
|
],
|
|
[
|
|
"doc/krillup.1",
|
|
"/usr/share/man/man1/krillup.1",
|
|
"644",
|
|
],
|
|
]
|
|
|
|
[package.metadata.deb_alt_base_krillta]
|
|
name = "krillta"
|
|
priority = "optional"
|
|
section = "net"
|
|
extended-description-file = "pkg/debian/description-krillta.txt"
|
|
license-file = ["LICENSE", "0"]
|
|
depends = "$auto, passwd, libssl1.1"
|
|
changelog = "target/debian/changelog" # this will be generated by the pkg workflow
|
|
copyright = "Copyright (c) 2023, NLnet Labs. All rights reserved."
|
|
assets = [
|
|
[
|
|
"target/release/krillta",
|
|
"/usr/bin/krillta",
|
|
"755",
|
|
],
|
|
[
|
|
"doc/krillta.1",
|
|
"/usr/share/man/man1/krillta.1",
|
|
"644",
|
|
],
|
|
]
|
|
|
|
# Variant of the Debian packaging configuration that:
|
|
# a) statically links with OpenSSL when building a Debian package because the
|
|
# newest OpenSSL available on Ubuntu 16.04 at the time of writing is 1.0.2g
|
|
# (see: https://packages.ubuntu.com/xenial/openssl) while Krill requires
|
|
# OpenSSL >= 1.1.0.
|
|
# b) uses a simpler systemd service unit file because Ubuntu 16.04 doesn't
|
|
# support newer features supported by Ubuntu 18.04 and 20.04.
|
|
[package.metadata.deb.variants.ubuntu-jammy]
|
|
depends = "$auto, passwd, libssl3"
|
|
|
|
[package.metadata.deb.variants.debian-bookworm]
|
|
depends = "$auto, passwd, libssl3"
|
|
|
|
[package.metadata.deb.variants.debian-trixie]
|
|
depends = "$auto, passwd, libssl3, adduser"
|
|
|
|
[package.metadata.deb.variants.ubuntu-noble]
|
|
depends = "$auto, passwd, libssl3"
|
|
|
|
# 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.debian-bullseye-armv7-unknown-linux-gnueabihf]
|
|
depends = "adduser, passwd, libc6 (>= 2.28), libssl1.1"
|
|
|
|
# END DEBIAN PACKAGING
|
|
# ------------------------------------------------------------------------------
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# START RPM PACKAGING
|
|
#
|
|
# Configurations for the cargo-generate-rpm cargo plugin which builds RPM
|
|
# packages in target/generate-rpm/ when invoked with: cargo generate-rpm
|
|
#
|
|
[package.metadata.generate-rpm]
|
|
name = "krill"
|
|
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
|
|
license = "MPLv2.0"
|
|
assets = [
|
|
{ source = "target/release/krill", dest = "/usr/bin/krill", mode = "755" },
|
|
{ source = "target/release/krillc", dest = "/usr/bin/krillc", mode = "755" },
|
|
{ source = "target/rpm/krill.service", dest = "/lib/systemd/system/krill.service", mode = "644" },
|
|
{ source = "defaults/krill.conf", dest = "/usr/share/doc/krill/krill.conf", mode = "644", doc = true },
|
|
{ source = "doc/krill.1", dest = "/usr/share/man/man1/krill.1", mode = "644", doc = true },
|
|
{ source = "doc/krillc.1", dest = "/usr/share/man/man1/krillc.1", mode = "644", doc = true },
|
|
{ source = "pkg/common/krill.service.preset", dest = "/lib/systemd/system-preset/50-krill.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 = "*"
|
|
|
|
# A variant of the RPM packaging configuration that package the `krillup` binary
|
|
# instead of Krill itself. The `cargo generate-rpm` command doesn't itself know
|
|
# how to use this alternate configuration, instead the `pkg` GitHub Actions
|
|
# workflow renames the `package.metadata.generate-rpm` section out of the way
|
|
# and renames this section to `package.metadata.generate-rpm` to use it instead.
|
|
[package.metadata.generate-rpm-alt-base-krillup]
|
|
name = "krillup"
|
|
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
|
|
license = "MPLv2.0"
|
|
assets = [
|
|
{ source = "target/release/krillup", dest = "/usr/bin/krillup", mode = "755" },
|
|
{ source = "doc/krillup.1", dest = "/usr/share/man/man1/krillup.1", mode = "644", doc = true },
|
|
]
|
|
|
|
[package.metadata.generate-rpm-alt-base-krillta]
|
|
name = "krillta"
|
|
# See: https://fedoraproject.org/wiki/Licensing:Main?rd=Licensing
|
|
license = "MPLv2.0"
|
|
assets = [
|
|
{ source = "target/release/krillta", dest = "/usr/bin/krillta", mode = "755" },
|
|
{ source = "doc/krillta.1", dest = "/usr/share/man/man1/krillta.1", mode = "644", doc = true },
|
|
]
|
|
|
|
# END RPM PACKAGING
|
|
# ------------------------------------------------------------------------------
|