-
zftpd v1.6.0 Stable
released this
2026-09-30 13:52:32 -05:00 | 6 commits to main since this release📅 Originally published on GitHub: Wed, 30 Sep 2026 19:14:18 GMT
🏷️ Git tag created: Wed, 30 Sep 2026 18:52:32 GMTzFTPd 1.6.0 is a major update to the project, introducing a new transfer architecture, expanded PS4/PS5 platform support, a redesigned ZHTTP interface, game management functionality, and a substantial internal refactor.
Compared to v1.5.0, this release includes 40 commits and changes across more than 200 files.
Transfer subsystem
- Replaced the previous custom download stack with a unified transfer manager.
- Added HTTP and HTTPS downloads through libcurl.
- Added FTP and FTPS remote downloads.
- Added
nfs://remote download support on supported PS5 builds. - Added BitTorrent and magnet transfer support.
- Added concurrent transfer scheduling and queue management.
- Added persistent transfer state and interrupted-download resume support.
- Downloads now use
.zftpd.partfiles or directories until completion. - Added transfer progress and status reporting through the HTTP API.
- Fixed process termination caused by
SIGPIPEwhen aborting a remote download.
FTP server
- Split FTP commands into dedicated control, listing, filesystem, transfer, extension, and data-connection modules.
- Added FTP instance management.
- Refactored transfer parameter handling.
- Improved FTP path and filesystem handling.
- Improved server-side copy and move operations.
- Added a deeper parallel-read pipeline for server-side copies.
- Fixed
CHMODhandling for files and directories. Resolves #9. - Fixed
LIST -ahandling for curlftpfs compatibility by @aydencharles in https://github.com/seregonwar/zftpd/pull/8
ZHTTP and Web UI
- Redesigned the browser interface.
- Reorganized the frontend into dedicated modules for files, transfers, games, jobs, system controls, and settings.
- Split the HTTP server into listener, response streaming, upload, JSON, and routing components.
- Split HTTP API handlers by subsystem.
- Added common HTTP API primitives and unified route matching.
- Added
/api/notifyfor custom PS4/PS5 system notifications. Resolves #10. - Added streaming ZIP generation for multiple files and directories.
- Added archive extraction through the HTTP API.
- Added optional decrypted downloads for protected SELF files.
- Added additional system and platform control endpoints.
Game management
- Added game catalog support.
- Added game launch support.
- Added package installation support.
- Added
app.dbrepair functionality. - Added decrypted game dumping with progress reporting and cancellation.
- Added PS5 title detection through
appmeta/param.json. - Fixed title detection for single-package
app.pkginstallations. - Package installation support can now be excluded entirely at build time.
Archive subsystem
- Added a streaming ZIP writer.
- Added common archive path handling.
- Reworked the built-in ZIP extraction implementation.
- Added HTTP archive creation and extraction APIs.
- Archives can be streamed directly to the client without first creating the complete archive on console storage.
File I/O
- Introduced a shared file I/O layer used by FTP and HTTP.
- Split filesystem operations into dedicated directory, copy, tree, and sendfile implementations.
- Improved server-side copy behavior.
- Added cross-device move fallback.
- Reduced duplication between protocol-specific filesystem handlers.
PS4 and PS5 platform support
- Centralized PS5 firmware-specific kernel offsets.
- Extended the PS5 firmware table through firmware 13.60.
- Added platform abstractions for disc operations, volume handling, DNS filtering, and instance control.
- Replaced the PS4 native HTTP/TLS download path with the libcurl-based transfer backend.
- Added PacBrew PS4 portlib integration for HTTPS downloads. Resolves #12.
- Added embedded CA bundle support while retaining TLS certificate verification.
- Added PS4 PIE payload support.
- Improved PS4 and PS5 dependency handling.
- Added conditional PS5 install-helper compilation.
Rest Mode and reliability
- Added Rest Mode listener recovery.
- Added daemon instance tracking to detect stale connections after resume.
- Improved listener recovery after console network state changes.
- Fixed
CHMODand copy regressions. - Hardened PID parsing and HTTP API validation.
- Improved failure handling across transfer and filesystem operations.
Internal architecture
- Reorganized the source tree by subsystem.
- Split the previous monolithic FTP command implementation into dedicated modules.
- Split the HTTP API into archive, filesystem, process, system, transfer, dump, and game components.
- Modularized game catalog, metadata, installation, launch, and administration code.
- Consolidated platform-specific functionality under dedicated platform modules.
- Removed obsolete HTTP, curl, TLS, and file I/O implementations superseded by the new architecture.
Build and CI
- Reworked the Makefile and build configuration.
- Improved optional feature handling for ZHTTP, package installation, curl, NFS, and torrent support.
- Fixed non-web builds.
- Fixed build issues with newer Clang versions.
- Updated the GitHub Actions release workflow.
- Added PS4 dependency setup and build integration to CI.
Documentation
- Expanded API documentation.
- Added architecture documentation.
- Added dependency documentation.
- Added game dumping documentation.
- Added package installation documentation.
- Added Rest Mode documentation.
- Added structured bug report, console crash, and feature request templates.
- Added a pull request template.
Resolved issues
- #9 — Unable to change file or directory permissions to 777
- #10 — HTTP endpoint for custom PS4/PS5 system notifications
- #12 — PS4 ZHTTP HTTPS downloads through PacBrew libcurl
Download stats
New Contributors
- @aydencharles made their first contribution in https://github.com/seregonwar/zftpd/pull/8
Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.5.0...v1.6.0
Downloads
-
zftpd v1.5.0 Stable
released this
2026-06-14 11:59:31 -05:00 | 46 commits to main since this release📅 Originally published on GitHub: Sun, 14 Jun 2026 17:25:58 GMT
🏷️ Git tag created: Sun, 14 Jun 2026 16:59:31 GMTzftpd v1.5.0 is a major release focused on a completely redesigned Web UI, production-ready Linux support, improved PS4/PS5 integration, faster transfers, safer FTP/HTTP behavior, and cleaner cross-platform release packaging.
Since v1.4.0: 81 files changed · 175,164 insertions · 33,041 deletions
Support the project❤️
If you enjoy using zftpd and want to support its development, consider making a donation.
Your support helps keep the project active, improve compatibility, and fund future development.
link: https://seregonwar.com/donationsHighlights
- Fully redesigned embedded Web UI
- New port 2120 as the default
- Production-ready Linux support with native epoll
- Updated PS4/PS5 kernel and system integration
- PS5 firmware 13.xx support
- New games management features
- Built-in ZIP extraction and optional archive support
- Faster transfers with zero-copy sendfile, larger buffers, and improved retry handling
- Safer FTP behavior, including PORT bounce-attack prevention
- Cleaner platform-specific CI/CD release assets
Web UI: Complete Redesign
The embedded web file explorer has been rebuilt from the ground up with a modern, responsive interface.
What changed
- New dark responsive layout with CSS variables
- Mobile-first breakpoints, hamburger menu, and touch-friendly interactions
- Breadcrumb navigation and improved directory listings
- File icons, metadata, sorting, and inline preview
- Multi-select file operations: copy, move, rename, delete
- Recursive directory operations with progress indicators
- Context menus for common actions
- Collapsible transfer tray for live FTP transfer monitoring
- Settings panel with server configuration and validation
Download manager
The Web UI now includes a full download manager:
- Add/remove downloads
- Queue management
- Progress bar with speed and ETA
- Pause/resume individual downloads
- Background processing with persistent state
Linux Support: Production Ready
zftpd now builds and runs cleanly on Linux with GCC and zero warnings under:
-Wall -Wextra -WerrorNative epoll event loop
Linux now uses a dedicated epoll backend:
epoll_create1epoll_ctlepoll_waitEPOLLRDHUPsupport for proper EOF parity with kqueue
HTTP, FTP data connections, and async I/O now use epoll on Linux. kqueue remains available on BSD, macOS, PS4, and PS5.
Hardened Linux build
The codebase is now clean with
_FORTIFY_SOURCE=2and hardened glibc checks.Fixed warning classes include:
-Wformat-truncation-Wunused-result-Wsign-conversion-Wstrict-overflow-Wstringop-truncation-Wformat-Wunused-variable-Wstring-compare
PS4 / PS5 Kernel & System Improvements
This release includes major reliability improvements for console-specific networking and system integration.
Safer net filter hooks
- Added external sysent hook detection
- Detects
sysent[SYS_CONNECT].sy_callbefore patching - Safely aborts hook installation when an external hook is detected
- Prevents conflicts with other homebrew or system-level hooks
Kernel and firmware updates
- Fixed JMP patch offsets that could cause
SIGILLcrashes - Added sleep-safety checks for syscall hooks
- Updated PS5 kernel offsets across multiple firmware revisions
- Added PS5 firmware support up to 13.xx
- Improved pager address detection and symbol resolution
- Improved PS5 IP binding by listening on
0.0.0.0
Console defaults
- FTP default port changed to 2120 on PS4/PS5 to avoid conflicts with system services
- Hook blob pipeline automated for PS5 payload injection workflows
New Features
Games management
The Web UI now includes full lifecycle management for installed PS4/PS5 titles:
- View installed games
- Display title ID, name, version, size, and install path
- Launch games directly from the Web UI
- Repair installed application visibility
- Browse games in a PS4 XMB-styled grid view
- Improved launch and fan-control error handling
MLST / MLSD improvements
FTP directory listings now have stronger RFC 3659 support.
Supported facts include:
typesizemodifyunix.mode
FEATnow advertises MLST fact types, and new helpers improve MLST/MLSD formatting and path conversion.Archive extraction
Archive support has been expanded:
- Built-in ZIP extraction via vendored
miniz - No external dependency required for ZIP files
- Optional
libarchivesupport for.7z,.rar,.tar, and.gz - exFAT/fpkg and PS4 PKG unpacking with metadata extraction
URL downloads
Added a background URL download manager with:
- Start/status/pause/cancel endpoints
- Progress tracking
- URL scheme validation
- Filename sanitization
Resilient server behavior
The server can now recover from fatal
accept()errors by recreating and rebinding the listener socket.This helps zftpd survive temporary network failures without requiring a manual restart.
Safer FTP PORT handling
FTP
PORTcommands now validate the provided IP address against the control connection remote IP, preventing RFC 2577 bounce attacks.
Performance
This release includes several transfer and I/O improvements.
Zero-copy transfers
sendfileis now used across supported filesystems and platforms:- Linux:
sendfile64 - macOS:
sendfile - FreeBSD / PS4 / PS5:
sendfile
This enables kernel-to-NIC transfer paths and avoids unnecessary userspace copying.
Faster HTTP and FTP I/O
- Page-cache-friendly mmap pipeline for file serving
- Bounded
EAGAINretry loop for PS5sendfile()backpressure - Larger TCP send buffers on PS4/PS5
- Optimized file chunk sizes to reduce syscall overhead
- HTTP upload buffer increased to 256 KB
TCP_NODELAYenabled on HTTP connections
FTP STOR improvements
- Added double-buffered writer pipeline
- Overlaps network
recv()and diskwrite() - Added mutex-guarded
O_CREATon PS4/PS5 to reduce PFS journal contention - Added page-cache eviction with
posix_fadvise(POSIX_FADV_DONTNEED)where supported
Fixes
- Fixed corrupted ZIP extraction on large archives
- Improved bounded path diagnostics
- Reworked HTTP directory listings with streaming JSON and chunked transfer encoding
- Removed the previous 512 KB in-memory directory listing limit
- Added support for very large directories without out-of-memory failures
- Added post-delete verification before reporting successful deletion
- Added explicit recursive directory delete behavior with
?recursive=1 - Return
409 Conflictfor non-empty directories without recursive delete enabled - Added directory size scan budget: 200 ms timeout and 10,000 entry limit
- Fixed PAL curl source termination
- Vendored
minizfor ZIP extraction - Fixed README contributor acknowledgement formatting
Testing
New and improved tests include:
-
test_mlst_ascii.c- MLST reply formatting
- ASCII STOR behavior
- RFC 3659 fact output
- Special-character filename handling
-
test_http_confinement.c- HTTP API path traversal prevention
- Endpoint confinement validation
CI/CD and Release Packaging
Release packaging is now platform-aware.
Platform Release format PS4 / PS5 .elfand.binassets uploaded directlymacOS .appbundle packaged as.tar.gzLinux Standard .tar.gzpackage withBUILD_INFO.txtAdditional CI/CD changes:
- Console SDKs are now built in CI for release artifacts
- PS4/PS5 assets are no longer wrapped in
.tar.gz - Asset names now include the release version
- Removed Linux
zhttpvariant from the release matrix
Example asset name:
zftpd-ps5-v1.5.0.elf
Code Quality
This release also includes a large cleanup pass across the codebase:
- Safer bounded path formatting
- Explicit NUL termination after
strncpy _FORTIFY_SOURCE=2compatibility- Clean builds across strict warning sets
- Removed external
sJson-main.zipdependency - Improved portability and diagnostics across platforms
Download stats
Full Changelog
Downloads
-
v1.4.0 Stable
released this
2026-03-11 10:48:09 -05:00 | 90 commits to main since this release📅 Originally published on GitHub: Wed, 11 Mar 2026 15:59:25 GMT
🏷️ Git tag created: Wed, 11 Mar 2026 15:48:09 GMTv1.4.0 Release Notes
A major update emphasizing performance enhancements, security fortifications, improved reliability, and a completely redesigned web dashboard featuring real-time transfer management.
⚡ Performance Improvements
- Zero-copy HTTP file downloads: Leveraged
sendfile(2)for HTTP responses, eliminating userspace buffer copies and boosting download throughput. - Sendfile burst/cooldown retry: Addressed PS4/PS5 exFAT page cache stalls (~28 MB bursts) by implementing a 1 MB
read()cooldown after stalls, retryingsendfile, and falling back to buffered I/O only on immediate retry failure. - Filesystem-aware sendfile safety: Automatically detect unsafe filesystems (
exfatfs,msdosfs,nullfs,pfsmnt) on PS4/PS5 usingfstatfs()to disablesendfileand avoid kernel panics. - TCP auto-tuning: Enabled OS-level TCP buffer auto-tuning and optimized chunk sizes for FTP and HTTP downloads.
- HTTP upload streaming: Introduced dedicated upload buffers and socket tuning for consistent write throughput.
- Optimized cross-device copies: Performed direct large writes with extended sequential read-ahead hints on PS4/PS5 during file copies.
- Lazy directory size calculation: Added
GET /api/dirsizeendpoint for on-demand computation with a 32-level depth limit; UI fetches sizes asynchronously post-rendering. - Peak server-side speeds: Achieved maximum peaks of up to 470 MB/s in server-side operations.
- Gigabit-saturating uploads: Uploads via zhttp can fully saturate gigabit connections, reaching speeds of 113 MB/s.
🔒 Security Enhancements
- HTTP/FTP path confinement: Implemented
http_api_set_root,http_validate_and_confine, and canonical safe-path validation across all API endpoints (list, download, stats, create, upload) to block path traversal and symlink attacks. - CSRF hardening:
http_csrf_initnow fails if entropy is unavailable; enforced CSRF validation on state-changing operations; disabled uploads on CSRF init failure. - FTP PORT IP validation: Rejected PORT commands with mismatched IP addresses (configurable via
FTP_PORT_ALLOW_FOREIGN_IP). - Atomic connection counters: Switched HTTP connection counters and in-use flags to atomic types for thread safety.
- Buffer pool safety: Added static asserts and bounds checks to prevent undefined behavior with large
FTP_MAX_SESSIONSbitmasks.
📂 FTP Protocol Updates
- CPFR / CPTO / COPY commands: Added full server-side file copy support with async
pthread-based background copying, progress tracking, and automatic cross-device fallback. - Cross-device move (RNTO): Provided transparent EXDEV fallback with recursive cross-device moves for directories, including safe rollback (removes destination only if created in the current operation).
- STOR zero-window fix: Fixed ~800 KB upload stalls on PS4/PS5 due to
SO_RCVBUFcapping; enforced single-buffer mode with conditional buffer increases. - Graceful shutdown: Ensured proper session pool cleanup and TCP buffer reset upon server stop.
- Better error messages: Delivered detailed, human-readable 550 replies for rename/copy errors, enabling clients like FileZilla and WinSCP to display actionable feedback.
🌐 Web Dashboard Redesign
- Transfer management cards: Displayed real-time progress with speed, elapsed time, percentage, progress bar, and destination path (
→ /path). - Pause / Resume: Enabled server-side copy pausing/resuming via
POST /api/copy_pause; copy thread uses 100 ms sleep-wait granularity during pauses, with cancellation support. - Cancel: Allowed immediate cancellation of active copies via
POST /api/copy_cancelwith instant UI updates. - Error diagnostics: Showed specific human-readable error reasons, mapping OS errnos (e.g., ENOSPC → "Disk full", EROFS → "Read-only filesystem").
- Smart time formatting: Formatted elapsed time dynamically as
Xs,Xm Ys, orXh Ymbased on duration. - Send To modal: Introduced a folder browser overlay for server-side copies, always starting at root
/for comprehensive navigation. - Recursive directory deletion: Supported deleting non-empty folders with confirmation via
POST /api/delete?recursive=1. - Context menu: Added right-click menu with actions like Download, Send To, Rename, Delete for files/folders; background menu includes New File, New Folder, Upload, Refresh.
- Separate upload inputs: Provided distinct buttons for file and folder uploads.
- Theme system: Offered multiple color themes with a native dropdown for touch devices.
- Stats monitor: Included a modal overlay for disk usage, CPU temperature, RAM, process list, and network charts.
🛠 PS5 Platform Support
- Kernel network filter: Developed
ps5_net_filtermodule with syscall-level network hook installation using kernel R/W primitives. - Kernel helpers: Added
kernel_get_base(),kernel_get_phys_addr()(via x86-64 4-level page table walk), andkernel_clear_pte_nx()using ps5-payload-sdk primitives (KERNEL_ADDRESS_TEXT_BASE,kernel_copyout,kernel_mprotect). - PFS inode lock serialization: Serialized
O_CREATopens on PS4/PS5 with a mutex to avoid inode-allocation lock contention (preventing >20s delays). - Extended TCP buffers: Increased
FTP_TCP_RCVBUFto 4 MB on PS4 to match PS5 and handle PFS write latency.
🐛 Bug Fixes
- sendfile EINTR handling: Treated
EINTRas partial sends to prevent retransmitting already sent bytes. - Temp filename overflow: Resolved buffer overflow in temporary filename generation; now places temp names in the destination directory.
- fd leak on interrupted close: Adjusted for differing
EINTRsemantics between FreeBSD/PS consoles and Linux to avoid leaked file descriptors. - Passive mode bind/select: Corrected socket binding and
select()issues in passive mode on PS4/PS5. - Post-delete verification: Verified path removal after
unlink/rmdirin DELETE API to detect silent failures. - Upload stats display: Enhanced drop zone overlay with real-time upload stats and a close button.
POSIX_FADV_DONTNEEDdisabled on PS4: Prevented unsupportedfadvisecalls from disrupting operations.
📦 Build & Tooling Updates
- Unified platform defines: Introduced
PLATFORM_PS4/PLATFORM_PS5alongsidePS4/PS5in config headers. - HTTP confinement tests: Created
test_http_confinement.csuite for validating path traversal and symlink protections. - Makefile improvements: Updated test target to include
LIB_OBJECTS; raised HTTP sendfile chunk size to 1 MB.
Full Diff: 38 files changed, ~40,000 insertions, ~15,000 deletions.
Full Changelog: View on GitHub
Downloads
- Zero-copy HTTP file downloads: Leveraged
-
v1.3.0 Stable
released this
2026-02-28 13:31:52 -06:00 | 115 commits to main since this release📅 Originally published on GitHub: Sat, 28 Feb 2026 21:41:01 GMT
🏷️ Git tag created: Sat, 28 Feb 2026 19:31:52 GMT🚀zftpd | zhttp v1.3.0
Version 1.3.0 introduces the brand-new optional ZHTTP web file explorer — a full browser-based file manager integrated directly into zftpd. This release also expands FTP command support, adds a complete Foreign Function Interface (FFI) subsystem, improves concurrency handling, and delivers a massive documentation overhaul.
Core Changes
🌐 ZHTTP Web File Explorer (Major New Feature)
- Introduced optional ZHTTP integrated HTTP server for browser-based file listing, navigation and management (enabled at compile time with
ENABLE_ZHTTPD=1). - Added real-time HTTP statistics reporting.
- Changed default HTTP port from 8080 to 8888 to prevent conflicts with common services.
📡 FTP Protocol Enhancements
- Added full support for
EPSV,OPTS,SITE,CLNTandMLSDcommands. - Improved command parsing and response consistency across the board.
🔌 FFI (Foreign Function Interface) Subsystem
- Implemented complete FFI layer with support for external languages (C, Rust, Zig, etc.).
- Added dedicated Makefile, usage guide and updated
.gitignorefor FFI development.
🛠️ Stability & Concurrency Fixes
- Treat concurrent
MKD(Make Directory) as success instead of error in multi-client scenarios. - Various file I/O robustness improvements.
📖 Documentation Overhaul
- Complete rewrite and expansion of README.md with performance notes, setup instructions, full list of supported FTP commands, acknowledgements, credits and clearer explanations.
- Updated logo path, fixed image tag formatting and improved overall readability.
⚙️ Build & Maintenance
- Enhanced build system to support the new FFI subsystem.
- Minor cleanup of internal files and configurations.
Photo
Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.2.2...v1.3.0
Downloads
- Introduced optional ZHTTP integrated HTTP server for browser-based file listing, navigation and management (enabled at compile time with
-
zftpd v1.2.2 Stable
released this
2026-02-21 17:17:57 -06:00 | 130 commits to main since this release📅 Originally published on GitHub: Sat, 21 Feb 2026 23:36:55 GMT
🏷️ Git tag created: Sat, 21 Feb 2026 23:17:57 GMT🚀 zftpd v1.2.2
Version 1.2.2 brings significant improvements to data transfer robustness and overall network performance. This release heavily focuses on optimizing file I/O and socket behavior—particularly for PS4 and PS5 platforms—ensuring higher stability, safer connections, and more consistent transfer speeds.
Core Changes
📡 Network & Transfer Optimizations
- Replaced the old per-session token-bucket rate limiter with socket corking around
sendfile/readloops. - Implemented a graceful data-socket close sequence to avoid connection resets (RSTs).
- Added
fsyncflushes and richer failure reporting forRETR,STOR, andAPPEcommands. - Hardened HTTP CSRF token formatting to prevent buffer overruns.
🎮 Platform-Specific (PS4 / PS5 / Consoles)
- Increased default buffer and stream sizes for better throughput.
- Added data-specific I/O timeouts and linger settings for PS4, PS5, and other platforms.
- Disabled transfer rate limiting on PS5 to maximize speeds.
- Made file I/O significantly more robust on consoles using
F_NOCACHEandposix_fadvise.
🛠️ PAL (Platform Abstraction Layer) Updates
- Introduced new PAL networking primitives (e.g.,
pal_socket_configure_data, cork/uncork, timeouts, and drain helpers). - Updated
pal_network.hand.cfor safer, more configurable socket behavior and telemetry.
⚙️ Build & Maintenance
- Fixed minor
Makefileissues to ensure build directories are properly created. - Added internal API docs and tweaked build configurations &
.gitignore.
🙌 Acknowledgements
I would like to thank all the testers who helped me achieve such high stability and consistent speed. Without them, zftpd would not have achieved these results in such a short time.
Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.2.1...v1.2.2
Downloads
- Replaced the old per-session token-bucket rate limiter with socket corking around
-
zftpd v1.2.1 Stable
released this
2026-02-19 17:25:09 -06:00 | 131 commits to main since this release📅 Originally published on GitHub: Fri, 20 Feb 2026 18:45:52 GMT
🏷️ Git tag created: Thu, 19 Feb 2026 23:25:09 GMT🚀 zftpd v1.2.1
This release adds optional ChaCha20 encryption, improves transfer robustness (resume, rate limiting, atomic copy), tightens build/test flows, and refreshes documentation.
Core Changes
Crypto & Security
- Added
AUTH XCRYPT(ChaCha20 PSK) support in control/data paths. - Documented crypto usage and safeguards.
Transfers & I/O
- Added resume support for uploads (
REST+STOR) and improved rate limiting. - Introduced atomic file copy helper and refined
sendfilefast path fallback. - Increased maximum sessions to support heavier workloads.
Build & Tooling
- Target selection now case-insensitive (
TARGET=PS5/PS4normalized). make testnow produces stripped.binartifacts (PS4/PS5) alongside ELF.- Build fixes and safety tweaks around
pal alloc/scratchintegration.
Documentation
- Expanded README with supported FTP commands, ZHTTP overview, and platform notes.
- Added internal API guide for module authors (PAL, I/O, networking, logging, crypto) with code snippets.
Acknowledgements
I would like to thank all the testers who helped me achieve such high stability and consistent speed. Without them, zftpd would not have achieved these results in such a short time. Special thanks go to M///Class!
Full Changelog:
https://github.com/seregonwar/zftpd/compare/v1.2.0...v1.2.1Downloads
- Added
-
zftpd v1.2.0 Stable
released this
2026-02-16 04:31:54 -06:00 | 140 commits to main since this release📅 Originally published on GitHub: Mon, 16 Feb 2026 11:00:49 GMT
🏷️ Git tag created: Mon, 16 Feb 2026 10:31:54 GMT🚀 zftpd v1.2.0
This release introduces structural improvements in logging, security, session handling, PS4/PS5 runtime behavior, and build tooling. It also formalizes test coverage and refines I/O robustness.
Core Changes
🔎 Logging Subsystem
- Added
ftp_log.handsrc/ftp_log.c. - Session-level and command-level logging.
- Line-based logging utilities.
- Integrated logging hooks into RETR/STOR/APPE flows.
🧪 Unit Tests
-
Added:
tests/test_security.ctests/test_path_security.c
-
Makefile updates:
LIB_OBJECTStarget (build withoutmain).- Multi-test build/run support.
- Automatic test skipping on unsupported targets.
Security & Path Handling
Path Normalization & Root Enforcement (
ftp_path.c)- Hardened path component parsing.
- Strict
realpath()resolution. - Explicit validation against
session->root_path. - Prevents directory traversal and symlink escape outside session root.
PORT / PASV Handling
-
PORTrestricted to same client IP. -
PASV:
- Correct reuse/closure of previous passive socket.
- Bind to
INADDR_ANY. - Improved local IP detection for PASV response.
-
Improved lifecycle validation and socket management.
Session Layer Changes
ftp_session_tExtensionsAdded:
root_path- Control RX buffer
- Authentication flags
- Rate-limiter fields
Initialization updates:
realpath(root)resolved during session init.- Socket timeouts applied at initialization.
- Rate limiting integrated into the data receive path.
Rate Limiting
-
Transfer accounting based on actual bytes received.
-
Compile-time configuration knobs in
include/ftp_config.h:- Control timeout
- Data timeout
- Transfer rate limit
- Burst size
FTP_SOCKET_TELEMETRY
Data Path & I/O
RETR / STOR / APPE
-
Aggregated byte accounting.
-
Unified data send path via
ftp_session_send_data. -
sendfileused only when rate limiting is disabled. -
STOR/APPE:
- Switched to
ftp_buffer_acquire()/ftp_buffer_release(). - Use
pal_file_write_all()for robust writes.
- Switched to
PAL Additions
New abstractions:
pal_socket_set_timeoutspal_send_allpal_file_write_all
Control replies now use
pal_send_all.Additional helpers in
ftp_session.c:wait_fd_readymonotonic_ns
PS4 / PS5 Improvements
Runtime & Startup
- Safer PID lookup.
- Termination of existing instances before bind.
- Port fallback initialization (
server_init_with_fallback). - Improved notification handling.
- Reorganized includes and improved CLI parsing for POSIX builds.
Buffers & TCP
- Increased default buffer sizes for PS4/PS5.
- Increased TCP buffer sizes.
- Improved throughput behavior under console constraints.
Build System
-
Version bump to v1.2.0.
-
Standardized MIT license headers across sources.
-
Makefile:
STRIPsupport..binoutput for PS4/PS5.- Updated deploy targets.
- PS5 links
libSceNotification.
-
README rewritten and streamlined.
Supported Platforms
- OrbisOS (PS4)
- ProsperoOS (PS5)
- macOS
- Linux (Debian)
Full Changelog:
https://github.com/seregonwar/zftpd/compare/v1.1.0...v1.2.0Downloads
- Added
-
Release v1.1.0 Stable
released this
2026-02-14 05:24:10 -06:00 | 144 commits to main since this release📅 Originally published on GitHub: Sat, 14 Feb 2026 11:30:28 GMT
🏷️ Git tag created: Sat, 14 Feb 2026 11:24:10 GMT🚀 zftpd v1.1.0 – Stability Improvements (Console Stack Fix)
This release focuses on stability improvements for console environments, addressing a stack overflow condition identified in the thread execution path.
🛠 Fixes & Improvements
-
Resolved thread stack overflow on PS4/PS5
- Identified a stack overflow condition (fault address near RSP, guard page hit).
- Increased default thread stack size to 512KB on console platforms.
- Stack size remains 64KB on non-console platforms.
-
Explicit pthread stack configuration
-
Thread stack size is now explicitly set using
pthread_attr_setstacksize(). -
Applied to:
- Accept thread
- Session thread
-
This significantly improves stability under heavy session load and deep call stacks on Orbis/Prospero environments.
✅ Supported & Tested Platforms
- OrbisOS (PlayStation 4): Native execution with full Sandbox Escape (root / access).
- macOS: Fully functional.
- Linux (Debian): Fully functional.
🚧 Roadmap / What's Next
- ProsperoOS (PlayStation 5): Still looking for testers. If you can run the payload and provide logs, that would be extremely helpful.
- Extended Linux Support: Broader distro compatibility testing.
- Windows Support: Planned native compatibility.
- Future Bindings: BD-J, Lua, and additional execution surfaces under evaluation.
Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.0...v1.1
Downloads
-
-
v1.0 Stable
released this
2026-02-13 15:06:09 -06:00 | 148 commits to main since this release📅 Originally published on GitHub: Fri, 13 Feb 2026 21:23:00 GMT
🏷️ Git tag created: Fri, 13 Feb 2026 21:06:09 GMT🚀 zftpd v1.0.0 - Initial Release
The core engine of zftpd is now officially stable and fully functional. Engineered in pure C with a focus on zero-copy performance and minimal memory footprint.
✅ Supported & Tested Platforms
- OrbisOS (PlayStation 4): Native execution with full Sandbox Escape (root
/access). - macOS: Fully functional.
- Linux (Debian): Fully functional.
🚧 Roadmap / What's Next
- ProsperoOS (PlayStation 5): I don't own a PS5 at the moment, so I would be grateful to anyone who could try out the payload and give me logs and feedback on it!
- Extended OS Support: Compatibility testing for broader Linux distributions.
- New OS Support: I plan to make the project compatible with Windows as well.
- Future Bindings: Planned support for execution via BD-J, Lua and other attack surfaces.
Full Changelog: https://github.com/seregonwar/zftpd/commits/v1.0
Downloads
- OrbisOS (PlayStation 4): Native execution with full Sandbox Escape (root
mirror of
https://github.com/seregonwar/zftpd.git
synced 2026-10-19 01:59:57 -05:00