Expand description
libunftp is an extensible, async, cloud orientated FTP(S) server library.
Because of its plug-able authentication (e.g. PAM, JSON File, Generic REST) and storage backends (e.g. local filesystem, Google Cloud Storage) it’s more flexible than traditional FTP servers and a perfect match for the cloud.
It runs on top of the Tokio asynchronous run-time and tries to make use of Async IO as much as possible.
§Quick Start
Add the libunftp and tokio crates to your project’s dependencies in Cargo.toml. Then also choose a storage back-end implementation to add. Here we choose the file system back-end:
[dependencies]
libunftp = "0.21.0"
unftp-sbe-fs = "0.2.0"
tokio = { version = "1", features = ["full"] }
Now you’re ready to develop your server! Add the following to src/main.rs:
use unftp_sbe_fs::ServerExt;
#[tokio::main]
pub async fn main() {
let ftp_home = std::env::temp_dir();
let server = libunftp::Server::with_fs(ftp_home)
.greeting("Welcome to my FTP server")
.passive_ports(50000..=65535)
.build()
.unwrap();
server.listen("127.0.0.1:2121").await;
}
You can now run your server with cargo run and connect to localhost:2121 with your favourite FTP client e.g.:
lftp -p 2121 localhost
Modules§
- auth
- Contains the
Authenticator
andUserDetail
traits that are used to extend libunftp’s authentication and user detail storage capabilities. - notification
- Allows users to listen to events emitted by libunftp.
- options
- Contains code pertaining to the setup options that can be given to the
ServerBuilder
- storage
- Contains the
StorageBackend
trait that can be implemented to create virtual file systems for libunftp.
Structs§
- Server
- An instance of an FTP(S) server. It aggregates an
Authenticator
implementation that will be used for authentication, and aStorageBackend
implementation that will be used as the virtual file system. - Server
Builder - Used to create
Server
s. - Server
Error - Error returned by the
Server.listen
method