Go to file
Frogomeli 9f86715a49 Improve the support of command 227
The use of Rclone fail when tries to connect using FTP protocol.
Rclone can't connect to the server ftp on Switch because of bad formatting of 227 command.

> Rclone is a command line program to manage files on cloud storage.
Source: https://rclone.org/

Rclone use this go library:
* https://github.com/jlaffaye/ftp

The lib check the connection information between the parenthesis but there aren't in the string formatted by this software
Source: https://github.com/jlaffaye/ftp/blob/master/ftp.go#L391

Also there is other source of origin of this fix:
* https://tools.ietf.org/html/rfc959 (the RFC of FTP Protocol)
* https://github.com/proftpd/proftpd/blob/master/modules/mod_core.c#L3873 (proftpd a server FTP implementation)
2020-07-09 21:29:14 +02:00
.github/ISSUE_TEMPLATE Update issue templates 2020-04-24 18:09:19 -05:00
3ds/gfx Documentation and minor refactors 2020-04-28 10:25:54 -05:00
include Add emulation of /dev/zero for network testing 2020-05-24 21:21:19 -05:00
meta LTO -O3 for release build 2020-04-28 10:26:45 -05:00
nds Add NDS icon 2020-05-18 20:58:18 -05:00
source Improve the support of command 227 2020-07-09 21:29:14 +02:00
switch/gfx Switch status icons 2020-04-28 10:25:54 -05:00
.clang-format Add configuration 2020-04-28 10:26:47 -05:00
.gitignore NDS support 2020-04-28 10:25:54 -05:00
ftpd-classic-qr.png NDS support 2020-04-28 10:25:54 -05:00
ftpd-qr.png NDS support 2020-04-28 10:25:54 -05:00
LICENSE v3.0.0-rc1 2020-04-28 10:25:54 -05:00
Makefile LTO -O3 for release build 2020-04-28 10:26:45 -05:00
Makefile.3ds Add licenses 2020-05-18 20:58:11 -05:00
Makefile.linux Add configuration 2020-04-28 10:26:47 -05:00
Makefile.nds Minor Makefile updates 2020-05-18 20:58:18 -05:00
Makefile.switch Minor Makefile updates 2020-05-18 20:58:18 -05:00
README.md Move links to master 2020-05-27 09:02:08 -05:00

ftpd

FTP Server for 3DS/Switch/Linux.

Features

  • Appears to work well with a variety of clients.

  • Supports multiple simultaneous clients. The 3DS itself only appears to support enough sockets to perform 4-5 simultaneous data transfers, so it will help if you limit your FTP client to this many parallel requests.

  • Cutting-edge graphics.

  • Exit on NDS/3DS with START button

  • Exit on Switch with PLUS button

  • Toggle backlight on NDS/3DS with SELECT button

  • Toggle backlight on Switch with MINUS button

  • Emulation of a /dev/zero (/devZero) device for network performance testing

    • Example retrieve curl ftp://192.168.1.115:5000/devZero -o /dev/zero
    • Example send curl -T /dev/zero ftp://192.168.1.115:5000/devZero

Dear ImGui

ftpd uses Dear ImGui as its graphical backend.

Standard Dear ImGui controller inputs are supported.

  • A
    • Activate/Open/Toggle
    • Tweak value with D-Pad (+ L/R to tweak slower/faster)
  • B
    • Cancel/Close/Exit
  • X
    • Edit text / on-screen keyboard
  • Y
    • Tap: Toggle menu
    • Hold + L/R: Focus windows
  • Left Stick
    • Scroll
    • Move window (when holding Y)
  • D-Pad
    • Move
    • Tweak values (when activated with A)
    • Resize window (when holding Y)

Latest Builds

NDS: https://mtheall.com/~mtheall/ftpd.nds

CIA: https://mtheall.com/~mtheall/ftpd.cia

3DSX: https://mtheall.com/~mtheall/ftpd.3dsx

NRO: https://mtheall.com/~mtheall/ftpd.nro

CIA QR Code

ftpd.cia

Classic Builds

Classic builds use a console instead of Dear ImGui.

CIA: https://mtheall.com/~mtheall/ftpd-classic.cia

3DSX: https://mtheall.com/~mtheall/ftpd-classic.3dsx

NRO: https://mtheall.com/~mtheall/ftpd-classic.nro

CIA QR Code

ftpd-classic.cia

Build and install

You must set up the development environment.

NDS

The following pacman packages are required to build nds/ftpd.nds:

devkitARM
dswifi
libfat-nds
libnds

They are available as part of the nds-dev meta-package.

3DSX

The following pacman packages are required to build 3ds/ftpd.3dsx:

3dstools
devkitARM
libctru

They are available as part of the 3ds-dev meta-package.

Build 3ds/ftpd.3dsx:

make 3dsx

NRO

The following pacman packages are required to build switch/ftpd.nro:

devkitA64
libnx
switch-tools

They are available as part of the switch-dev meta-package.

Build switch/ftpd.nro:

make nro

Supported Commands

  • ABOR
  • ALLO (no-op)
  • APPE
  • CDUP
  • CWD
  • DELE
  • FEAT
  • HELP
  • LIST
  • MDTM
  • MKD
  • MLSD
  • MLST
  • MODE (no-op)
  • NLST
  • NOOP
  • OPTS
  • PASS (no-op)
  • PASV
  • PORT
  • PWD
  • QUIT
  • REST
  • RETR
  • RMD
  • RNFR
  • RNTO
  • SITE
  • SIZE
  • STAT
  • STOR
  • STRU (no-op)
  • SYST
  • TYPE (no-op)
  • USER (no-op)
  • XCUP
  • XCWD
  • XMKD
  • XPWD
  • XRMD

Planned Commands

  • STOU

SITE commands

  • Show help: SITE HELP
  • Set username: SITE USER
  • Set password: SITE PASS
  • Set port: SITE PORT
  • Set getMTime*: SITE MTIME [0|1]
  • Save config: SITE SAVE

*getMTime only on 3DS. Enabling will give timestamps at the expense of slow listings.