• v1.6.0 e19c68c3a2

    zftpd v1.6.0 Stable

    dean 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 GMT

    zFTPd 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.part files or directories until completion.
    • Added transfer progress and status reporting through the HTTP API.
    • Fixed process termination caused by SIGPIPE when 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 CHMOD handling for files and directories. Resolves #9.
    • Fixed LIST -a handling 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/notify for 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.db repair 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.pkg installations.
    • 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 CHMOD and 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

    Release Downloads

    New Contributors

    Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.5.0...v1.6.0

    Downloads
  • v1.5.0 1ec37c6ee7

    zftpd v1.5.0 Stable

    dean 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 GMT

    ChatGPT Image 14 giu 2026, 19_24_35

    zftpd 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/donations

    Highlights

    • 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 -Werror
    

    Native epoll event loop

    Linux now uses a dedicated epoll backend:

    • epoll_create1
    • epoll_ctl
    • epoll_wait
    • EPOLLRDHUP support 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=2 and 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_call before 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 SIGILL crashes
    • 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:

    • type
    • size
    • modify
    • unix.mode

    FEAT now 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 libarchive support 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 PORT commands 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

    sendfile is 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 EAGAIN retry loop for PS5 sendfile() backpressure
    • Larger TCP send buffers on PS4/PS5
    • Optimized file chunk sizes to reduce syscall overhead
    • HTTP upload buffer increased to 256 KB
    • TCP_NODELAY enabled on HTTP connections

    FTP STOR improvements

    • Added double-buffered writer pipeline
    • Overlaps network recv() and disk write()
    • Added mutex-guarded O_CREAT on 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 Conflict for 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 miniz for 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 .elf and .bin assets uploaded directly
    macOS .app bundle packaged as .tar.gz
    Linux Standard .tar.gz package with BUILD_INFO.txt

    Additional 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 zhttp variant 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=2 compatibility
    • Clean builds across strict warning sets
    • Removed external sJson-main.zip dependency
    • Improved portability and diagnostics across platforms

    Download stats

    Release Downloads

    Full Changelog

    https://github.com/SeregonWar/zftpd/compare/v1.4.0...v1.5.0

    Downloads
  • v1.4.0 8f089a8620

    v1.4.0 Stable

    dean 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 GMT

    v1.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, retrying sendfile, 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 using fstatfs() to disable sendfile and 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/dirsize endpoint 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_init now 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_SESSIONS bitmasks.

    📂 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_RCVBUF capping; 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_cancel with 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, or Xh Ym based 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_filter module 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), and kernel_clear_pte_nx() using ps5-payload-sdk primitives (KERNEL_ADDRESS_TEXT_BASE, kernel_copyout, kernel_mprotect).
    • PFS inode lock serialization: Serialized O_CREAT opens on PS4/PS5 with a mutex to avoid inode-allocation lock contention (preventing >20s delays).
    • Extended TCP buffers: Increased FTP_TCP_RCVBUF to 4 MB on PS4 to match PS5 and handle PFS write latency.

    🐛 Bug Fixes

    • sendfile EINTR handling: Treated EINTR as 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 EINTR semantics 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/rmdir in DELETE API to detect silent failures.
    • Upload stats display: Enhanced drop zone overlay with real-time upload stats and a close button.
    • POSIX_FADV_DONTNEED disabled on PS4: Prevented unsupported fadvise calls from disrupting operations.

    📦 Build & Tooling Updates

    • Unified platform defines: Introduced PLATFORM_PS4 / PLATFORM_PS5 alongside PS4 / PS5 in config headers.
    • HTTP confinement tests: Created test_http_confinement.c suite for validating path traversal and symlink protections.
    • Makefile improvements: Updated test target to include LIB_OBJECTS; raised HTTP sendfile chunk size to 1 MB.

    Release Downloads

    Full Diff: 38 files changed, ~40,000 insertions, ~15,000 deletions.

    Full Changelog: View on GitHub

    Downloads
  • v1.3.0 054dcd0c6c

    v1.3.0 Stable

    dean 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, CLNT and MLSD commands.
    • 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 .gitignore for 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

    image

    Release Downloads

    Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.2.2...v1.3.0

    Downloads
  • v1.2.2 1374100ea0

    zftpd v1.2.2 Stable

    dean 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/read loops.
    • Implemented a graceful data-socket close sequence to avoid connection resets (RSTs).
    • Added fsync flushes and richer failure reporting for RETR, STOR, and APPE commands.
    • 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_NOCACHE and posix_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.h and .c for safer, more configurable socket behavior and telemetry.

    ⚙️ Build & Maintenance

    • Fixed minor Makefile issues 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.

    Release Downloads

    Full Changelog: https://github.com/seregonwar/zftpd/compare/v1.2.1...v1.2.2

    Downloads
  • v1.2.1 8f16364f69

    zftpd v1.2.1 Stable

    dean 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 sendfile fast path fallback.
    • Increased maximum sessions to support heavier workloads.

    Build & Tooling

    • Target selection now case-insensitive (TARGET=PS5/PS4 normalized).
    • make test now produces stripped .bin artifacts (PS4/PS5) alongside ELF.
    • Build fixes and safety tweaks around pal alloc/scratch integration.

    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!

    Release Downloads

    Full Changelog:
    https://github.com/seregonwar/zftpd/compare/v1.2.0...v1.2.1

    Downloads
  • v1.2.0 45dae80f33

    zftpd v1.2.0 Stable

    dean 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.h and src/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.c
      • tests/test_path_security.c
    • Makefile updates:

      • LIB_OBJECTS target (build without main).
      • 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

    • PORT restricted 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_t Extensions

    Added:

    • 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.

    • sendfile used only when rate limiting is disabled.

    • STOR/APPE:

      • Switched to ftp_buffer_acquire() / ftp_buffer_release().
      • Use pal_file_write_all() for robust writes.

    PAL Additions

    New abstractions:

    • pal_socket_set_timeouts
    • pal_send_all
    • pal_file_write_all

    Control replies now use pal_send_all.

    Additional helpers in ftp_session.c:

    • wait_fd_ready
    • monotonic_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:

      • STRIP support.
      • .bin output for PS4/PS5.
      • Updated deploy targets.
      • PS5 links libSceNotification.
    • README rewritten and streamlined.

    Supported Platforms

    • OrbisOS (PS4)
    • ProsperoOS (PS5)
    • macOS
    • Linux (Debian)

    Release Downloads

    Full Changelog:
    https://github.com/seregonwar/zftpd/compare/v1.1.0...v1.2.0

    Downloads
  • v1.1 0e04e455f6

    dean 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 0cb53f7c22

    v1.0 Stable

    dean 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