Why Write an FTP Server in 2019? (ZitaFTP Server's Story)
Last week I published a teaser announcing that I was releasing ZitaFTP Server soon, but I guess an obvious question would be: why? It might surprise you that I wasn't actually thinking of an FTP server when I started.
I was just sick of the lack of good ways to transfer files between my Amiga and other computers. Sure we've had Samba for decades, but it's always been a nightmare to set up and as time goes on and the protocol gets updated and our Samba port gets left behind it just got worse and worse.
Yes, we've got SMBFS. I've had a little more success with that. However, I've still found it fiddly, and I don't like putting passwords and plain text in scripts.
And yes, we have a few FTP servers (for AmigaOS), but they're all without security without encryption, and I don't like the idea of sending passwords in plain text. It just sounds like a bad idea.
You might have noticed a pattern here: I like having a little bit of security in there, so that if someone steals my machine or manage to hack into the network, then they don't immediately have access to everything.
So, that's why I eventually decided let's write my own FTP server.
Why FTP instead of file sharing using CIFS? Well, it's the fastest way to get decent file sharing. All I want to do is be able to transfer files from one machine to another. The CIFS standard is huge, there are dialects, and quirks of different implementations. By contrast, FTP is pretty straightforward. Plus, FTP is a common way to transfer files outside of a local area network as well.
So, I started writing... well I wrote a quick test program first just to see how quickly could I get a really really basic FTP server running, or the beginnings of one. Then, after that I decided let's do it properly. By properly, I mean be able to handle more than one connection at a time, and all that kind of good stuff.
I still have some work to do before it's ready for release. Even a pre-release has got to be good. So I better get to work. I will talk to you later.
Want to be notified when ZitaFTP Server is released? Click here to sign up to our mailing list.
Peter 15/08/2019 6:46am (4 years ago)
That version string remark for the Windows binary is really funny, and of course you're right about an official means of catching reboots and shutdowns, equally. Since Olaf is closely associated with AmigaOS development, perhaps he could be persuaded looking into further exploring this topic. Meanwhile, and straight off the bet, I do recall that a few pieces of software use shutdown.library for classic systems - including Shapeshifter and hm, an IRC client - Grapevine, possibly.
Best of luck with the final stretch of the development!
Hans de Ruiter 14/08/2019 11:19pm (4 years ago)
I'm getting better at spotting legitimate comments between the spam.
Yes, the $VERS string is in there (even in the future Windows version ;-) ). Thanks for the hint about the shutdown.library. AmigaOS 4.x does have functionality to catch a reset, but I'm not sure about shutdown. Anyway, I've added that to the list of possible future features.
I usually switch off by holding down the power button, and often reset using the reset button. It would be useful if the OS got an official standard for handling shutdown that works on all machines.
Peter 14/08/2019 1:52pm (4 years ago)
Thanks for the feedback - it sounds like a project that really adheres to the AmigaOS User Interface Styleguide, and that you have.most things covered already! (did I requested a properly formatted $VER-string, by the way? =)
Regarding ARexx, I may have to withdraw that request - most, if not all, of the functionality that involves FTP server "interactivity" should be able to sort out using a standard Shell script and perhaps a Cron service.
By the way, please look up Olaf Barthel's shutdown.library on Aminet if you'd like the server to free it's resources and close any client connections nicely if the host hardware reboots or shuts down.
Hans de Ruiter 13/08/2019 9:14am (4 years ago)
Thanks for the suggestions.
You'll be pleased to know that CTRL-C already triggers a shutdown. Locale support is also on my wishlist. Regarding the ARexx port, what kind of functionality do you think that should provide?
Peter 13/08/2019 7:15am (4 years ago)