/ftpdlite

A minimalist FTP server in MicroPython

Primary LanguagePythonBSD 2-Clause "Simplified" LicenseBSD-2-Clause

FTPdLite

File systems in flight... FTPdLite!

FTPdLite is a work in progress. See Caveats below to adjust your expectations.

Build ftpdlite

What is it?

FTPdLite is an FTP server written in MicroPython using asyncio. The goal is to provide easy access to files on a microcontroller's flash file system without dragging out a USB cable. Or you can actually use it as a small, home FTP server.

Why should I care?

You shouldn't really. FTP is an I.T. security professional's worst nightmare. This project is really only of use in a lab environment. But, it's kind of neat to see the inner workings of one of the internet's earliest protocols.

How can I use it?

First, read up on how insecure FTP is. Then, if you still want to do it...

Refer to the QUICKSTART guide for installation details.

Supported Clients

FTPdLite works best with these clients:

  • The tnftp package on Linux provides an outstanding FTP experience.
  • Gnome VFS FTP client has been reported to work as well.
  • FileZilla (with simultaneous connections set to 1) is the go-to choice for Windows.
  • Windows ftp.exe works, but has a limited command set and its lack of PASV mode presents a problem for firewalls.
  • For non-interactive transfers, wget works well, as does curl.

Caveats

FTPdLite is a total alpha-quality product at the moment.

  • It is multi-user capable, but it's limited to one login session per client IP address.
  • GUI clients (FileZilla, et al.) must have simultaneous connections limited to 1.
  • MicroPython lacks the glob() function, so no wildcard filenames or mget.
  • Listing (ls) only works for directories, not individual files.