-
Notifications
You must be signed in to change notification settings - Fork 22
/
Cargo.toml
122 lines (107 loc) · 4.02 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
118
119
120
121
122
[package]
name = "unftp"
version = "0.15.1"
authors = [
"Agoston Horvath <[email protected]>",
"Dávid Kosztka <[email protected]>",
"Hannes de Jager <[email protected]>",
"Koen Wilde <[email protected]>",
"Maarten Dirkse <[email protected]>",
"Steven Meunier <[email protected]>",
"Rob klein Gunnewiek <[email protected]>"
]
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.slog-google]
path = "crates/googlelog"
features = ["shipper"]
version = "0.1.0"
[dependencies]
async-trait = "0.1.83"
base64 = "0.22.1"
clap = { version = "3.2.25", features = ["derive", "env"] }
console-subscriber = { version = "0.3.0", optional = true }
flate2 = "1.0.35"
futures = "0.3.31"
http = "0.2.12"
hyper = { version = "0.14.31", features = ["server", "http1"] }
hyper-rustls = "0.23.2"
lazy_static = "1.5.0"
libunftp = "0.20.3"
opendal = { version = "0.47.3", optional = true }
prometheus = { version = "0.13.4", features = ["process"] }
serde = { version = "1.0.216", features = ["derive"] }
serde_json = "1.0.133"
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.3", features = ["derive"] }
strum_macros = "0.26.4"
thiserror = "1.0.69"
tokio = { version = "1.42.0", features = ["signal", "rt-multi-thread"] }
unftp-sbe-fs = "0.2.6"
unftp-sbe-gcs = { version = "0.2.7", optional = true }
unftp-sbe-opendal = { version = "0.0.1", optional = true }
unftp-auth-rest = { version = "0.2.7", optional = true }
unftp-auth-jsonfile = { version = "0.3.5", optional = true }
unftp-sbe-rooter = "0.2.1"
unftp-sbe-restrict = "0.1.2"
url = "2.5.4"
[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.1"
[build-dependencies]
built = { version = "0.7.5", features = ["cargo-lock", "git2", "chrono", "semver"] }
[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.
"""