Crate Version API Docs Follow on Telegram

libunftp - The FTPS library

libunftp is a Rust crate that you can use to build your own FTPS server with. You can extend it with your own storage back-ends or authentication back-ends.

It runs on top of the Tokio asynchronous run-time and tries to make use of Async IO as much as possible.

Feature highlights

  • 42 Supported FTP commands (see commands directory) and growing
  • Ability to implement own storage back-ends
  • Ability to implement own authentication back-ends
  • Ability to implement own SITE commands
  • Explicit FTPS (TLS)
  • Mutual TLS (Client certificates)
  • TLS session resumption
  • Prometheus integration (enabled by default, can be disabled)
  • Structured Logging
  • Proxy Protocol support (enabled by default, can be disabled)
  • Automatic session timeouts
  • Per user IP allow lists
  • Configurable cryptographic providers (ring or aws-lc-rs)

Known Storage back-ends

CrateDescription
unftp-sbe-fatfsProvides read-only access to FAT filesystem images
unftp-sbe-fsStores files on the local filesystem
unftp-sbe-gcsStores files in Google Cloud Storage
unftp-sbe-isoProvides FTP access to ISO 9660 files
unftp-sbe-opendalProvides access to various storage services through Apache OpenDAL (supports S3, Azure Blob Storage, and more)
unftp-sbe-restrictWraps another storage back-end in order to restrict the FTP operations a user can do i.e. provide authorization
unftp-sbe-rooterWraps another storage back-end in order to root a user to a specific home directory
unftp-sbe-webdavA WebDAV storage back-end providing translation between FTP & WebDAV

See the full list of storage back-ends on crates.io or the Contribution Guide and API Documentation if you want to create your own.

Known Authentication back-ends

CrateDescription
unftp-auth-jsonfileAuthenticates against JSON text
unftp-auth-pamAuthenticates via PAM
unftp-auth-restConsumes an HTTP API to authenticate

See the full list of authentication back-ends on crates.io or the Contribution Guide and API Documentation if you want to create your own.

Known SITE command extensions

CrateDescription
unftp-site-hashAdds a SITE HASH command, supporting SHA-256, SHA-1, MD5 and CRC32 file hashing

See the full list of SITE command extensions on crates.io or the Contribution Guide and ServerBuilder::site_command if you want to create your own.

Additional resources

See the github page or the API Documentation for more details.

Powered by Doctave