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://-> libcurlnfs://-> 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.