[package]
edition = "2024"
name = "libunftp"
version = "0.22.0"
authors = [
"Agoston Horvath <ahorvath@bol.com>",
"Dávid Kosztka <dkosztka@bol.com>",
"Hannes de Jager <hdejager@bol.com>",
"Koen Wilde <koen@chillheid.nl>",
"Maarten Dirkse <mdirkse@bol.com>",
"Steven Meunier <smeunier@bol.com>",
"Rob klein Gunnewiek <rkleingunnewiek@bol.com>",
]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Extensible, async, cloud orientated FTP(S) server library."
documentation = "https://docs.rs/libunftp/"
readme = "README.md"
keywords = [
"ftp",
"ftps",
]
categories = ["network-programming"]
license = "Apache-2.0"
repository = "https://github.com/bolcom/libunftp"
[features]
all = [
"aws_lc_rs",
"prometheus",
"proxy_protocol",
]
aws_lc_rs = [
"rustls/aws_lc_rs",
"rustls/logging",
"rustls/std",
"rustls/tls12",
]
default = [
"aws_lc_rs",
"prometheus",
"proxy_protocol",
]
experimental = []
prometheus = ["dep:prometheus"]
proxy_protocol = ["dep:proxy-protocol"]
ring = [
"rustls/ring",
"rustls/logging",
"rustls/std",
"rustls/tls12",
]
[lib]
name = "libunftp"
path = "src/lib.rs"
[[test]]
name = "appe"
path = "tests/appe.rs"
[[test]]
name = "common"
path = "tests/common.rs"
[[test]]
name = "pass_security"
path = "tests/pass_security.rs"
[[test]]
name = "rename"
path = "tests/rename.rs"
[dependencies.async-trait]
version = "0.1.88"
[dependencies.bitflags]
version = "2.10.0"
[dependencies.bytes]
version = "1.11.1"
[dependencies.chrono]
version = "0.4.43"
features = [
"clock",
"std",
]
default-features = false
[dependencies.dashmap]
version = "6.1.0"
[dependencies.derive_more]
version = "2.1.1"
features = ["display"]
[dependencies.futures-util]
version = "0.3.31"
features = [
"alloc",
"sink",
]
default-features = false
[dependencies.getrandom]
version = "0.3.4"
[dependencies.lazy_static]
version = "1.5.0"
[dependencies.libc]
version = "0.2"
[dependencies.md-5]
version = "0.10.6"
[dependencies.moka]
version = "0.12.13"
features = ["sync"]
default-features = false
[dependencies.nix]
version = "0.30.1"
features = ["fs"]
default-features = false
[dependencies.prometheus]
version = "0.14.0"
optional = true
default-features = false
[dependencies.proxy-protocol]
version = "0.5.0"
optional = true
[dependencies.rustls]
version = "0.23.36"
default-features = false
[dependencies.slog]
version = "2.8.2"
features = [
"max_level_trace",
"release_max_level_info",
]
[dependencies.slog-stdlog]
version = "4.1.1"
[dependencies.thiserror]
version = "2.0.18"
[dependencies.tokio]
version = "1.49.0"
features = [
"macros",
"rt",
"net",
"process",
"sync",
"io-util",
"time",
]
[dependencies.tokio-rustls]
version = "0.26.4"
default-features = false
[dependencies.tokio-util]
version = "0.7.18"
features = ["codec"]
[dependencies.tracing]
version = "0.1.44"
default-features = false
[dependencies.tracing-attributes]
version = "0.1.31"
[dependencies.uuid]
version = "1.20.0"
features = ["v4"]
[dependencies.x509-parser]
version = "0.18.1"
[dev-dependencies.pretty_assertions]
version = "1.4.1"
[dev-dependencies.tokio]
version = "1.49.0"
features = [
"macros",
"rt-multi-thread",
]
[lints.clippy]
all = "deny"
[lints.rust]
missing_docs = "deny"
unsafe_code = "deny"