Telnet and ZModem

As part of the Ridiculous Gopher Project, in which I make a blog and gallery using the gopher protocol, I wanted to make a way for readers to comment on the gopher-protocol blog. The gopher protocol does support telnet, so I thought I might write a minimal program that allowed one to comment via telnet.

This morphed into making a minimal BBS which I will call Pupper BBS. Pupper BBS is a tiny BBS with just enough functionality to let users read and write messages and to upload and download files. This is what BBS’s used to do.

The message-reading and message-writing functionality came together pretty quickly by using MySQL and ncurses++’s forms and menus. But the upload and download drew me down a rabbit hole. The BBS upload and download protocol is call ZModem. All modern day ZModem code
seems to descend from the venerable rzsz program by C Forsberg of Omen Technology. I spent a week converting lrzsz into a library I call libzmodem.

But to actually test out my BBS’s upload and download, I will need a telnet client program that can send and receive by ZModem. This seems like it was pretty common, but, everything seems to be a little bit broken. There are various projects call ztelnet and zssh, none of which compile on my Linux box.

I did finally happen upon this article on TechTinkering that explains how to use C-Kermit to do telnet with zmodem.

So, no maybe I can start debugging Pupper BBS’s upload and download, which are quite broken, apparently.

Leave a Reply

Your email address will not be published. Required fields are marked *