rootftp 0.1.3

A simple FTP server tool
rootftp-0.1.3 is not a library.
Visit the last successful build: rootftp-0.3.1

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