[package] name = "unftp" version = "0.14.7" authors = [ "Agoston Horvath ", "Dávid Kosztka ", "Hannes de Jager ", "Koen Wilde ", "Maarten Dirkse ", "Steven Meunier ", "Rob klein Gunnewiek " ] edition = "2021" description = "When you need to FTP, but don't want to. An async, cloud orientated FTP(S) server built on libunftp" repository = "https://github.com/bolcom/unFTP" homepage = "https://github.com/bolcom/unFTP" license = "Apache-2.0" readme = "README.md" keywords = ["ftp", "ftps", "server", "gcs"] categories = ["network-programming"] documentation = "https://github.com/bolcom/unFTP" [workspace] [dependencies.slog-redis] path = "crates/redislog" version = "0.1.2" [dependencies] async-trait = "0.1.80" base64 = "0.22.1" clap = { version = "3.2.25", features = ["derive", "env"] } console-subscriber = { version = "0.3.0", optional = true } flate2 = "1.0.30" futures = "0.3.30" http = "0.2.12" hyper = { version = "0.14.29", features = ["server", "http1"] } hyper-rustls = "0.23.2" lazy_static = "1.4.0" libunftp = "0.20.1" prometheus = { version = "0.13.4", features = ["process"] } serde = { version = "1.0.203", features = ["derive"] } serde_json = "1.0.117" slog = { version = "2.7.0", features = ["max_level_trace", "release_max_level_info"] } slog-async = "2.8.0" slog-term = "2.9.1" strum = { version = "0.26.2", features = ["derive"] } strum_macros = "0.26.2" thiserror = "1.0.61" tokio = { version = "1.38.0", features = ["signal", "rt-multi-thread"] } unftp-sbe-fs = "0.2.5" unftp-sbe-gcs = { version = "0.2.6", optional = true } unftp-auth-rest = { version = "0.2.6", optional = true } unftp-auth-jsonfile = { version = "0.3.4", optional = true } unftp-sbe-rooter = "0.2.1" unftp-sbe-restrict = "0.1.2" url = "2.5.2" [target.'cfg(unix)'.dependencies] unftp-auth-pam = { version = "0.2.5", optional = true } [features] default = ["rest_auth", "cloud_storage", "jsonfile_auth"] all_extentions = ["pam_auth", "rest_auth", "jsonfile_auth", "cloud_storage"] cloud_storage = ["unftp-sbe-gcs"] jsonfile_auth = ["unftp-auth-jsonfile"] pam_auth = ["unftp-auth-pam"] rest_auth = ["unftp-auth-rest"] tokio_console = ["console-subscriber", "tokio/tracing"] # With this we link dynamically to libc and pam gnu = ["all_extentions"] # All features able to link statically musl = ["rest_auth", "cloud_storage", "jsonfile_auth"] # Features used in our docker builds docker = ["musl"] [dev-dependencies] pretty_assertions = "1.4.0" [build-dependencies] built = { version = "0.5.2", features = ["git2", "chrono"] } [profile.release] debug = false lto = "fat" codegen-units = 1 [package.metadata.arch] arch = ["x86_64"] [package.metadata.deb] features = ["all_extentions"] section = "net" assets = [ ["target/x86_64-unknown-linux-gnu/release/unftp", "usr/bin/", "755"], ["LICENSE", "usr/share/doc/unftp/", "644"], ["README.md", "usr/share/doc/unftp/README", "644"], ] extended-description = """\ unFTP (unftp) is a FTP(S) server written in Rust and built on top of libunftp and the Tokio asynchronous run-time. It is unlike your normal FTP server in that it provides: - Configurable Authentication (e.g. Anonymous, PAM or a JSON file). - Configurable storage back-ends (e.g. GCS or filesystem) - An HTTP server with health endpoints for use for example in Kubernetes for readiness and liveness probes. - Integration with Prometheus for monitoring. - A proxy protocol mode for use behind proxies like HA Proxy and Nginx. With unFTP, you can present RFC compliant FTP(S) to the outside world while freeing yourself to use modern APIs and techniques on the inside of your perimeter. """