Teaching an old IRC dog some new tricks

I don’t know why, but I’ve always liked the ancient Microsoft Comic Chat IRC client.  Even though it has well deserved a really poor reputation for not strictly adhering to any standard, and being very ‘noisy’ and … poorly behaved.  But I find it works pretty well.  Or at least it did.


Somewhere in the mists of time a lot of IRC servers slightly changed how they work, and lots of ancient IRC clients were left broken.  I’d fixed IRC II on Xenix, but without source, fixing Comic Chat was out of the question.

But naturally the real solution was a proxy.  And here is richardg867’s proxy.py.  And it offers three great features, namely it’ll fix the way Comic Chat joins a channel, and how users are displayed so everyone isn’t a channel op.  The best part is that it also includes the ability to connect to servers via SSL, meaning you can encrypt your connection to the IRC network

It’s a tiny Python server, and the Linux Subsystem for Windows can happily run it with zero modifications.

python proxy.py -p 6667 chat.freenode.net +6697

Running it like this will listen on port 6667 aka the default IRC port, and then connect to chat.freenode.net using SSL on port 6697.  And it works great!

Comic Chat Connected!

One thing to keep in mind is that initially the client is set to BOLD for some reason.  Just as you have to tell it to not spam channels with Comic Chat info, hitting control+b will end the bold and now you can message the NickServ, and unless someone hits up your info nobody will be the wiser.

It’s vital to NOT send Comic Chat specific information

People get really annoyed at the whole OMG it’s a Microsoft IRC client from 1996-1998 but yeah established protocols only slightly drift, with a little bit of help you too can keep using ancient software in a dangerous and scary modern world!


13 thoughts on “Teaching an old IRC dog some new tricks

  1. Comic Chat is legitimately a good client. MS put a lot of care and detail into it.

    For style points; implement IRCX in this client when possible. Unfortunately, while IRCX specifies UTF-8 support, Comic Chat always uses the legacy system encoding.

    • Not necessarily. My experience with code page 932 (Shift-JIS) showed that it used ISO-2022-JP (the usual Japanese legacy encoding for IRC) in Comic Chat, actually.

  2. Hey, I wrote that proxy, thanks for the shout-out.

    The op fix is for networks which implement additional ranks such as half-op and founder, which Comic Chat can’t handle (maybe founder with IRCX’s . prefix but not the more widespread ~). There’s also another fix for servers which violate the RFC by sending lines over 512 bytes long including the CRLF (at least one ircd is known to send up to 514), which breaks the client.

    This was originally written for a Comic-Chat-as-a-service project I was working on, which didn’t go very far.

    • Hey, very cool job on this! It’s dead simple and very effective! I was originally pushing it through stunnel until I actually looked at the code to figure out what was going on to see that it has SSL support. I also notice that for doing any user interaction I have to put a : in front of their name, (/who /query etc) but it’s really cool.

      I don’t know if its worth betting for it to strip stuff like the BOLD by default? although I know hitting ctrl+b is pretty easy too!

      I guess combining it with boxedwine, may get the on demand comic chat you desire…?

      • I can look into the : and bold issues. As for Wine, the main challenge is that comic view has never rendered correctly under it, so I had to use a Windows server for that project…

  3. Would it be possible to run the proxy on another machine (say, a Linux server in LAN)? I would like to have IRC working in my 701C running Windows 95 and it might be quite difficult to run both on the same machine (if Python would work on 95 at all).

    • I don’t see why it wouldn’t work. There is a ‘host’ option to specify where to listen, as well with a password option to force clients logging into the proxy to give a password.

      python ./comicchat_proxy.py -h -p 8888 chat.freenode.net +6697

      and looking at my netstat…

      netstat -na | find “888”

      So yeah, you can totally run this on any ‘modern python’ machine.

    • So you really are a person, Maraakate! I was beginning to think that you were just another one of Max’s room bots. Since you are so quiet in the room all of the time!
      A server in IRC-X mode hides the character text preceding the chatters message, however most servers have changed to IRC-D mode (which is a more secure setting). Unfortuneatly IRC-D shows the annoying character code.

  4. Can you use proxy in Microsoft comic chat? My isp block port 6667 and i can’t connect to Mermalid Elizabeth listed servers anymore 🙁

Leave a Reply