{"id":22908532,"url":"https://github.com/itotaljustice/ftpsrv","last_synced_at":"2025-10-08T05:10:37.898Z","repository":{"id":265063380,"uuid":"894197064","full_name":"ITotalJustice/ftpsrv","owner":"ITotalJustice","description":"small and fast ftp server","archived":false,"fork":false,"pushed_at":"2025-06-07T22:39:30.000Z","size":315,"stargazers_count":33,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-01T02:49:15.613Z","etag":null,"topics":["3ds-homebrew","ftp","ftp-server","nds-homebrew","switch-homebrew","wii-homebrew"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ITotalJustice.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"ITotalJustice","patreon":"totaljustice","open_collective":null,"ko_fi":"totaljustice","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2024-11-25T23:35:25.000Z","updated_at":"2025-06-13T04:40:30.000Z","dependencies_parsed_at":"2024-12-13T23:22:54.859Z","dependency_job_id":"5f1198b9-ff36-4ece-a156-5d355bec99af","html_url":"https://github.com/ITotalJustice/ftpsrv","commit_stats":null,"previous_names":["itotaljustice/ftpsrv"],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/ITotalJustice/ftpsrv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITotalJustice%2Fftpsrv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITotalJustice%2Fftpsrv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITotalJustice%2Fftpsrv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITotalJustice%2Fftpsrv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ITotalJustice","download_url":"https://codeload.github.com/ITotalJustice/ftpsrv/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ITotalJustice%2Fftpsrv/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263083591,"owners_count":23411163,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["3ds-homebrew","ftp","ftp-server","nds-homebrew","switch-homebrew","wii-homebrew"],"created_at":"2024-12-14T03:29:33.156Z","updated_at":"2025-10-08T05:10:32.845Z","avatar_url":"https://github.com/ITotalJustice.png","language":"C","funding_links":["https://github.com/sponsors/ITotalJustice","https://patreon.com/totaljustice","https://ko-fi.com/totaljustice"],"categories":[],"sub_categories":[],"readme":"# ftpsrv\n\nsmall, fast, single threaded ftp implementation in C.\n\nit uses no dynamic memory allocation, has very low memory footprint (the size of everything can be configured at build time) and uses poll() (or select() if poll isn't available) to allow for a responsive single threaded server with very low overhead.\n\n## platforms\n\ni have ported ftpsrv to a few platforms that i regularly use, such as:\n\n- nintendo switch, both as an application and sys-module.\n- nintendo wii.\n- nintendo 3ds.\n- nintendo ds.\n\n## Nx custom commands\n\na few useful custom commands was added to the switch port, to see a full list, check the wiki at https://github.com/ITotalJustice/ftpsrv/wiki/Nx-%E2%80%90-Custom-Commands.\n\n## config\n\nthe config is located in /config/ftpsrv/config.ini.\nAll releases come with `/config/ftpsrv/config.ini.template`, as to not overwrite existing configs on each update.\n\nThe Nintendo Switch port requires a user and password to be set, or, set `anon=1`. This is due to security concerns when paired with ldn-mitm as a user could modify your sd card if no user/pass is set.\n\n## building\n\nyou need to install devkitpro along with cmake.\n\n### switch\n\n```sh\ncmake --preset switch\ncmake --build --preset switch\n```\n\n### wii\n\n```sh\ncmake --preset wii\ncmake --build --preset wii\n```\n\n### 3ds\n\n```sh\ncmake --preset 3ds\ncmake --build --preset 3ds\n```\n\n### nds\n\n```sh\npacman -S dswifi\ncmake --preset nds\ncmake --build --preset nds\n```\n\nNOTE: as of 25/11/24, dswifi doesn't work with WPS. I have fixed this, but devkitpro is very hostile towards developers and blocks them from submitting patches, so i can't submit a fix. The nds build in releases is compiled with the fix, so WPS will work.\n\n## LIST kde-dolphin bug workaround\n\nLIST command on a file will not send pathname back in the listing due to kdolphin breaking (for some reason).\n\nThis bug can be observed when viewing a dir with .jpg/.png inside. It will issue a CWD with the filename to check if its a dir or not. When that fails, it will issue LIST with the filename, which i return info about the file, including the name (exactly as it's passed in). This will cause kde to stop doing anything with the file...\n\nIf you dont return the filename, or, return an error code with LIST then kde will send a SIZE and RETR and function normally.\n\n## credit\n\n- https://users.cs.jmu.edu/buchhofp/forensics/formats/pkzip.html\n- everyone that helped test, bug report, suggest features ect.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitotaljustice%2Fftpsrv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fitotaljustice%2Fftpsrv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fitotaljustice%2Fftpsrv/lists"}