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

  • 41 Supported FTP commands (see commands directory) and growing
  • Ability to implement own storage back-ends
  • Ability to implement own authentication back-ends
  • 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.

Additional resources

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

Powered by Doctave