fftpd - a select based FTP daemon

(Note: This is posted here for the sake of historic curiosity only. Go look at gatling if you need a scalable ftp server)

Update! Now with IPv6 support and it seems to actually work now!

Download fftpd.tar.bz2 from this site! Please note that the project is still in its infancy. I didn't even give fftpd a version number yet. Caveat emptor!

Rationale: The world needs an ftp daemon that will not fork. Fact: a Linux based dual Pentium II 400 machine with 256 Megs of RAM has a load of ~100 with ~300 users. The machine becomes completely unresponsive. Can't have that.

Update: I implemented file upload now. If run as non-root, it will bind to port 2121 and restrict access to the current directory. Uploads will be restricted to world writable directories. mkdir, rename and all the other good stuff is still unimplemented.

There is one feature, though, that this deamon has: **-globbing. You can say "ls **/zsh*" and get the equivalent of a locate, built-in. The downside is that the whole directory tree is kept in a data structure in memory, so fftpd will not notice external changes to the file system. My plan is to integrate some administrative command that you can use (something like "site update /pub/shells/zsh") to tell fftpd to rescan part of the directory tree, but that is not implemented yet, too. This design also implies that fftpd will have to scan the whole directory tree on startup, which is not a good idea for large FTP servers. A persistent cache file should be implemented for this.

Beware:

See also

  1. betaftpd (freshmeat appindex), also a non-forking ftp server.
  2. ncftpd (freshmeat appindex), a commercial non-forking ftp server.
  3. dkftpbench (freshmeat appindex), a non-forking ftp benchmarking client. Dan told me that he is going to hold an ftp server performance shootout in March 2001, so keep your eyes open! ;)