A minimalist, mostly RFC 959 compliant, asyncio FTP server #13016
DavesCodeMusings
started this conversation in
Show and tell
Replies: 1 comment 11 replies
-
Nice work! If you can get it working with FileZilla we'd have a useful GUI tool for file management on local devices. |
Beta Was this translation helpful? Give feedback.
11 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
FTPdLite
I've been working on an async FTP server and I thought I'd share. It's mostly for my own education, but it could be useful for some folks.
What is it?
A minimalist, mostly RFC 959 compliant, asyncio FTP server for MicroPython-based microcontrollers.
How do I get it?
You can use mpremote mip install github:DavesCodeMusings/ftpdlite
Or you can visit the project site at https://github.com/DavesCodeMusings/ftpdlite/
For the love of God, man... why?
FTP is one of the earliest internet protocols. It's a security nightmare, but it's a pretty straightforward way to get files from point A to point B. And MicroPython asyncio is something I've been interested in learning more about. So, why not?
What else is there?
It's probably got bugs I don't know about, but for the case of a single user uploading and downloading files, it works. Tested clients include: FileZilla (with simultaneous connections set to 1), curl, wget, and tnftp. (Windoze ftp.exe works too, but not behind a firewall.)
Using asyncio means it does handle multiple sessions, but only one session per client IP address. So still limited in some ways.
There are some extra features built into the SITE command. Together with the tnftp client's extra commands, it makes for a rather sublime remote file management experience. The sample session below demonstrates some of the functionality.
Sample Session
Edited 19 Nov 2023 to say FileZilla is now working. And multiple user accounts possible. Woohoo!
Beta Was this translation helpful? Give feedback.
All reactions