hjr3 / libunftp

Safe, fast and extensible FTP server library in Rust and the core of unFTP: https://github.com/bolcom/unFTP

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

libunftp

Crate Version API Docs Build Status Crate License

When you need to FTP, but don't want to.

logo

The libunftp library drives unFTP. It's an extensible, async, cloud orientated FTP(S) server implementation in Rust brought to you by the bol.com techlab.

Because of its plug-able authentication (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.

Prerequisites

You'll need Rust 1.41 or higher to build libunftp.

Getting started

If you've got Rust and cargo installed, create your project with

cargo new myftp

Then add the libunftp and tokio crates to your project's dependencies in Cargo.toml:

[dependencies]
libunftp = "0.14.0"
tokio = { version = "0.3", features = ["full"] }

Now you're ready to develop your server! Add the following to src/main.rs:

#[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);
    
    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

For more help refer to:

Contributing

Thank you for your interest in contributing to libunftp!

Please feel free to create a github issue if you encounter any problems.

Want to submit a feature request? Then head over to our contribution guide (CONTRIBUTING.md).

License

You're free to use, modify and distribute this software under the terms of the Apache License v2.0.

About

Safe, fast and extensible FTP server library in Rust and the core of unFTP: https://github.com/bolcom/unFTP

License:Apache License 2.0


Languages

Language:Rust 99.5%Language:Makefile 0.4%Language:Shell 0.1%