You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The libunftp library drives [unFTP](https://github.com/bolcom/unFTP). It's an extensible, async, cloud orientated FTP(S)
17
16
server implementation in [Rust](https://rust-lang.org) brought to you by the [bol.com techlab](https://techlab.bol.com).
@@ -25,27 +24,31 @@ possible.
25
24
26
25
Feature highlights:
27
26
28
-
*39 Supported FTP commands (see [commands directory](./src/server/controlchan/commands)) and growing
27
+
*41 Supported FTP commands (see [commands directory](./src/server/controlchan/commands)) and growing
29
28
* Ability to implement own storage back-ends
30
29
* Ability to implement own authentication back-ends
31
30
* Explicit FTPS (TLS)
32
31
* Mutual TLS (Client certificates)
33
32
* TLS session resumption
34
-
* Prometheus integration
33
+
* Prometheus integration (enabled by default, can be disabled)
35
34
* Structured Logging
36
-
*[Proxy Protocol](https://www.haproxy.com/blog/haproxy/proxy-protocol/) support
35
+
*[Proxy Protocol](https://www.haproxy.com/blog/haproxy/proxy-protocol/) support (enabled by default, can be disabled)
37
36
* Automatic session timeouts
38
37
* Per user IP allow lists
39
38
* Configurable cryptographic providers (ring or aws-lc-rs)
40
39
41
40
Known storage back-ends:
42
41
42
+
*[unftp-sbe-fatfs](https://crates.io/crates/unftp-sbe-fatfs) - Provides read-only access to FAT filesystem images
43
43
*[unftp-sbe-fs](https://crates.io/crates/unftp-sbe-fs) - Stores files on the local filesystem
44
44
*[unftp-sbe-gcs](https://crates.io/crates/unftp-sbe-gcs) - Stores files in Google Cloud Storage
45
+
*[unftp-sbe-iso](https://crates.io/crates/unftp-sbe-iso) - Provides FTP access to ISO 9660 files
46
+
*[unftp-sbe-opendal](https://crates.io/crates/unftp-sbe-opendal) - Provides access to various storage services through Apache OpenDAL (supports S3, Azure Blob Storage, and more)
47
+
*[unftp-sbe-restrict](https://crates.io/crates/unftp-sbe-restrict) - Wraps another storage back-end in order to restrict
48
+
the FTP operations a user can do i.e. provide authorization.
45
49
*[unftp-sbe-rooter](https://crates.io/crates/unftp-sbe-rooter) - Wraps another storage back-end in order to root a user
46
50
to a specific home directory.
47
-
*[unftp-sbe-restrict](https://crates.io/crates/unftp-sbe-rooter) - Wraps another storage back-end in order to restrict
48
-
the FTP operations a user can do i.e. provide authorization.
51
+
*[unftp-sbe-webdav](https://crates.io/crates/unftp-sbe-webdav) - A WebDAV storage back-end providing translation between FTP & WebDAV
49
52
50
53
Known authentication back-ends:
51
54
@@ -65,16 +68,38 @@ To use a specific provider, enable the corresponding feature in your `Cargo.toml
65
68
66
69
```toml
67
70
[dependencies]
68
-
libunftp = { version = "0.21.0", features = ["ring"] } # Use ring
71
+
libunftp = { version = "0.21.1", features = ["ring"] } # Use ring
69
72
# or
70
-
libunftp = { version = "0.21.0", features = ["aws_lc_rs"] } # Use aws-lc-rs (default)
73
+
libunftp = { version = "0.21.1", features = ["aws_lc_rs"] } # Use aws-lc-rs (default)
71
74
```
72
75
73
76
The default provider is `aws-lc-rs` for backward compatibility. Choose the provider that best fits your needs:
74
77
75
78
-[`ring`](https://crates.io/crates/ring): More widely used, good for general-purpose applications
76
79
-[`aws-lc-rs`](https://crates.io/crates/aws-lc-rs): Optimized for AWS environments, good for cloud deployments
77
80
81
+
## Optional Features
82
+
83
+
The following feature flags are included in the default features but can be disabled to reduce dependencies:
84
+
85
+
-`prometheus`: Enables Prometheus metrics integration. When enabled, you can collect metrics about FTP operations, sessions, and transfers using the `.metrics()` method on the server builder. **Enabled by default.**
86
+
87
+
-`proxy_protocol`: Enables [Proxy Protocol](https://www.haproxy.com/blog/haproxy/proxy-protocol/) support. This allows the server to receive client connection information (IP address and port) when behind a proxy or load balancer. **Enabled by default.**
88
+
89
+
To disable these features and reduce dependencies, use `default-features = false` and explicitly enable only what you need:
90
+
91
+
```toml
92
+
[dependencies]
93
+
libunftp = { version = "0.21.1", default-features = false, features = ["aws_lc_rs"] }
94
+
```
95
+
96
+
Or enable all features explicitly:
97
+
98
+
```toml
99
+
[dependencies]
100
+
libunftp = { version = "0.21.1", features = ["all"] }
101
+
```
102
+
78
103
## Prerequisites
79
104
80
105
You'll need [Rust](https://rust-lang.org) 1.85.0 or higher to build libunftp.
@@ -93,7 +118,7 @@ add. Here we choose the [file system back-end](https://crates.io/crates/unftp-sb
0 commit comments