-
Notifications
You must be signed in to change notification settings - Fork 20
/
Cargo.toml
117 lines (103 loc) · 3.91 KB
/
Cargo.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
[package]
name = "unftp"
version = "0.14.7"
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>"
]
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-sbe-opendal = { version = "0.0.1", optional = true }
opendal = { version = "0.47.1", 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", "opendal"]
all_extentions = ["pam_auth", "rest_auth", "jsonfile_auth", "cloud_storage", "opendal"]
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"]
opendal = ["dep:unftp-sbe-opendal", "dep:opendal"]
azblob = ["opendal/services-azblob"]
# 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", "azblob"]
# 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.
"""