Firetrap helps you create modern, safe and extensible FTP servers in Rust.
Because of its plugable authentication and storage backends (e.g. local filesystem, Google Buckets) it's more flexible than traditional FTP servers and a perfect match for the cloud.
Due to personal reasons, I'm no longer working on this project. Firetrap has since been forked by my previous employer who is continuing development on unFTP. This repository now serves only as an archive.
You'll need Rust 1.31 or higher to build firetrap. There are no runtime dependencies besides the OS and libc.
If you've got Rust and cargo installed, create your project with
cargo new my_project
Then add firetrap to your project's dependencies in Cargo.toml
:
[dependencies]
firetrap = "0.1"
Now you're ready to write your server!
Add the following to src/main.rs
:
extern crate firetrap;
fn main() {
let server = firetrap::Server::with_root(std::env::temp_dir());
server.listen("127.0.0.1:2121");
}
You can now run your server with cargo run
and connect to localhost:2121
with your favourite FTP client :)
For more examples checkout out the examples directory.
For more information checkout the API Documentation.
First of all, thank you for your interest in contributing to firetrap! Please feel free to create a github issue if you encounter any problems, want to submit a feature request, or just feel like it :)
Run make help
in the root of this repository to see the available make commands.
You're free to use, modify and distribute this software under the terms of the MIT or Apache-2.0 license, whichever has your preference.