Files
zftpd/docs/dependencies.md
T

1.6 KiB

External dependencies

zftpd keeps protocol implementations outside the project when a mature, maintained library already exists. Console builds use the ports shipped by the PS5 PacBrew ecosystem rather than local compatibility shims.

PS5 zhttp transfer stack

Component Purpose Source
libcurl 8.18.0 HTTP, HTTPS, FTP and FTPS transfers ps5-payload-dev/pacbrew-repo (ps5-payload-curl)
OpenSSL TLS used by libcurl PacBrew dependency of ps5-payload-curl
zlib / zstd / libpsl libcurl transfer dependencies PacBrew
libnfs 5.0.3 Userspace NFS client ps5-payload-dev/pacbrew-repo (ps5-payload-libnfs)
Mozilla CA bundle HTTPS trust store generated by the PacBrew curl package and embedded at build time

The release workflow pins PacBrew v0.40.2 and verifies the published ps5-payload-dev.tar.gz SHA-256 before using it. The SDK bundle is not committed to this repository.

Transfer architecture

src/transfer/ owns network-to-file transfers. The HTTP API only validates requests and destination paths, then delegates to the transfer manager. Backends are selected by URL scheme:

  • http://, https://, ftp://, ftps:// -> libcurl
  • nfs:// -> libnfs

Downloads are written to <name>.zftpd.part, support resume where the remote protocol permits it, and are atomically renamed to the final filename only after the transfer and fsync() succeed.

NFS URLs use libnfs syntax, for example:

nfs://192.168.1.20/export/games/game.pkg

The NAS must expose an NFS share reachable from the console. No kernel NFS mount, FUSE layer or firmware-specific mount patch is required.