| Crates.io | rootftp |
| lib.rs | rootftp |
| version | 0.2.0 |
| created_at | 2025-05-24 22:19:11.903662+00 |
| updated_at | 2025-06-14 00:49:04.620646+00 |
| description | A simple FTP server tool that allows you to play with files. Multiple users can share their files with each other. You can also build custom plugins see examples for more info. |
| homepage | |
| repository | https://github.com/rajeev-k47/rootftp |
| max_upload_size | |
| id | 1687823 |
| size | 3,631,281 |
Rust-based FTP server with with custom configurable, sharing directories across private networks. Built on the top of libunftp.
RootFTP provides a space where you can play with files- upload them, transform them, or run actions on them automatically. With plugin support, you can add custom features like code execution, compression, and more. Interact with other users without internet. Also provides you a custom cloud storage which is basically offline but online π.
cargo install rootftp
Additional systemd servicegit clone https://github.com/rajeev-k47/rootftp.git
cd rootftp
chmod +x ./scripts/install.sh
./scripts/install.sh
rootftp start
Add the -d flag to launch the server in the background as a daemon process.
Β Β If installed via script
sudo systemctl start rootftp
sudo systemctl enable rootftp
Usage: rootftp <COMMAND>
Commands:
start Start the RootFTP service
stop Stop the RootFTP service
setdir Set the FTP root directory
status Show the status of the RootFTP service
loadplugin Load a local plugin (.so file)
fetch Fetch available plugins from the plugin library
install Install a plugin by name from the plugin library
list List all installed plugins
help Print this message or the help of the given subcommand(s)
By default (unless you override with setdir), rootftp chooses your home directory:
$HOME/ftproot/ftpd/
Under <root_dir>/ftpd/, each authenticated user automatically gets:
<root_dir>/ftpd/<username>/
βββ home/
βββ inbox/
βββ outbox/
βββ private/
- home/ β Radom dir.
- private/ β Random dir.
- outbox/ β where you place files to send to other users
- inbox/ β (See βOutbox Featureβ below.)
For sharing files among users (user to user):
<your_root>/outbox/share.<user_to_send>/ (e.g /outbox/share.xyz)
/inbox/sender/xyz.txt
RootFTP has a plugin system that supports pluggable .so plugins. These plugins are dynamically loaded and automatically invoked when files are added to specific directories.
<root>/ftpd/<username>/<plugin_name>/input/
<root>/ftpd/<username>/<plugin_name>/output/<filename>.txt
custom_plugin (or anything else) cargo package.Cargo.toml file. cargo add rootftp
or
[dependencies]
rootftp = 0.1.4 //replace it with latest version
[lib]
crate-type = ["cdylib"]
cargo build --release
//You can find release .so file in /target/release directory.
rootftp loadplugin /path_to_.so_file
RootFTP provides a plugin library which contains free plugins. You can fetch any plugin and install it in your server.
To fetch plugins from library use:
rootftp fetch
To get the list of available plugins use:
rootftp list
Install a plugin from library:
rootftp install <plugin-name> //(Case sensitive with .so extension)
To submit your own plugin in plugin library create a pull request.π