Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/mtheall/ftpd

FTP Server for 3DS/Switch
https://github.com/mtheall/ftpd

Last synced: about 1 month ago
JSON representation

FTP Server for 3DS/Switch

Awesome Lists containing this project

README

        

# 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](#dear-imgui).

- 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](https://github.com/ocornut/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](https://github.com/mtheall/ftpd/raw/master/ftpd-qr.png)

## 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](https://github.com/mtheall/ftpd/raw/master/ftpd-classic-qr.png)

## Build and install

You must set up the [development environment](https://devkitpro.org/wiki/Getting_Started).

### 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
switch-libzstd

The first three are available as part of the `switch-dev` meta-package. Additionally, ImageMagick is required for converting assets.

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.