rootftp 0.1.4

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.
Documentation

rootftp

Rust-based FTP server with with custom configurable, sharing directories across private networks. Built on the top of libunftp.

Crates.io Rust Version CI Termux Tested

Installation

  • Install via Crates.io
 cargo install rootftp
  • Build from source (Recommanded) Additional systemd service
git clone https://github.com/rajeev-k47/rootftp.git
cd rootftp
chmod +x ./scripts/install.sh
./scripts/install.sh

Usage

  • To start the server
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

  • To stop the server
rootftp stop
  • To set a custom root directory:
rootftp setdir /custom/dir # (e.g. /home/user/Documents)
  • To check current status/config:
rootftp status

Directory Layout

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.)

Outbox

For sharing files among users (user to user):

  • Create a folder with this convention
  <your_root>/outbox/share.<user_to_send>/ (e.g /outbox/share.xyz)
  • Put files to share in this folder
  • inotify watches outbox/ and shares respective file.
  • Reciever will found these files in his inbox/ directory
   /inbox/sender/xyz.txt