Documentation Features

Features

RFC-959 Complient

xFTPd is complient with the original FTP Specifications (RFC-959)

RFC-2389 Complient

xFTPd support the RFC-2389 wich describes the use of the FEAT (FEATURES) command to support additional capabilities.

PRET support

The PRET command has been introduced in the FTP dialogs by the author of DrFTPd for the purpose of distributed file transfers. It has since been implemented in most of the popular FTP clients and is fully supported by xFTPd.

Distributed File Server

xFTPd's main goal is to be able to operate in a distributed manner. The FTP server includes a central connection point that is connected to multiple file-servers on wich actual files are stored. This allows system administrators to limit the number of access points to files on their servers and is also a convenience for users that does not need to keep track of multiple FTP addresses.

Small-sized binaries

xFTPd is written in C, and care has been taken not to include any unnecessary libraries or portion of code. To this date, the file server (fsd.exe), the proxy (proxy.exe) and the central FTP server (xFTPd.exe) are all sizing up to under 1 Mb.

Low system resources usage

xFTPd does not need any particular configuration, it can run on minimal system configuration. It does not need a dedicated server, and multiple instances can be run on the same server with no performance decrease.

Scripting capability provided by Lua

xFTPd's central FTP server is entirely driven by Lua to control the user's interaction with the file system, the file servers, the configuration, the IRC client, and also to extend its capabilities without going through the process of compiling the sources for every modification. Lua also reduce the server's down-time by allowing the system administrator to add, remove, modify and reload any Lua script in real time without shutting down the FTP access to users.

Local File System

Because of its unconventional distributed capabilities, xFTPd stores a complete map of all files that are available to the end user on every of its file-servers. This allows the central FTP server to operate normally even when file-servers are shut down or connection is lost. It also allows better performances as all needed information on a file is stored locally and is accessible to the Lua scripts.

Built-in IRC Client

xFTPd's built-in IRC client allows the end-user to interact with the central FTP server by IRC. The client is also fully controllable from Lua scripts.

Built-in Mirroring Capability

Because xFTPd's capability to interconnect multiple file-servers to one central point, it is very easy to transfer any file from one file-server to another with very little effort and almost no interaction from the end-user. This capability is called "mirroring" and come built-in in xFTPd. It is also fully controllable from the Lua scripts.

Multi-Sourced files

xFTPd has the capability of serving one unique file from multiple file-servers. Combined with the mirroring capabilities, it allow the system administrator to make one popular file available from multiple file servers without the end-users actually seeing multiple files in their FTP clients.

Built-in proxy support

xFTPd's built-in proxy is a "Keep It Simple-Stupid" implementation of a proxy server. It allows the system administrator to setup one or multiple proxies between the central FTP server and the file servers that allow the users to connect to some file-servers that usually does not allow direct connection to them. It is very useful with file servers that does not accept "passive" FTP data transfers.

SFV Support and Transfer Checksums

xFTPd has the built-in capability of reporting the transfer-checksums to the central FTP server upon completion of a transfer. It also support the SFV file format and automatically parses them to allow the end user to control the validity of their files. Both SFV Support and Transfer Checksums capabilities are controllable by Lua scripts.

Data encryption, secure communications and data compression

xFTPd has a build-in negotiation protocol that take place when a file- server connects to the FTP server and before any other dialog for a secure communication. It allows the central FTP server and its file-servers to encrypt thier entire communications so file names and other sensitive data will not be intercepted. The dialog with the file-servers may also be compressed to limit any unnecessary time overhead when the FTP server and the file-servers communicate.

Built-in SSL Connection Support

As of version 0.4, xFTPd support FTP-SSL for encrypted dialogs between clients and the ftp server.