leapchat
leapchat copied to clipboard
Create IRC-to-LeapChat proxy as to enable reuse of existing IRC chat bots
TL;DR of architecture: IRC bot => local trusted IRC proxy => remote untrusted LeapChat server
the IRC bot won't actually connect to a normal IRC network
it'll connect to a local proxy/API thing
Let's break this down into steps... Say you want to have a bot in LeapChat
so you write a LeapChat bot in Go or JS/TS that connects to a LeapChat server
the bot just needs a URL like https://www.leapchat.org/#ThawHuddlingRaspberryGooeyCaviarUnquenchedUnzipCufflinkDorsalGuacamoleEditorShirtBackpackMassagerShirtAjarRhapsodyOzoneSniffVestibuleLikewiseOxygenEnsembleFootpathBabbling
then bam, it has what it needs to connect
the bot can now read and write chat messages from that chat room
suppose we add a feature to the bot so that when it sees a message that begins with
!time
it replies into the chat room with the current time in UTC
now suppose we want to add a portscanning feature to this bot
we could write it in Go or JS/TS, but we'd like to use an existing chat bot that already has this functionality
and that bot is an IRC bot
so instead of building it ourselves, we build an IRC-to-LeapChat translation API, which is basically an "IRC proxy"
So instead of our original LeapChat bot, we have two pieces: the portscanner bot, and a local-to-the-portscanner-bot's-machine IRC-to-LeapChat proxy.
This proxy parses LeapChat messages coming from the server, decrypts them, formats them as IRC messages, then sends those messages to the local IRC bot.
In the other direction: the proxy reads the IRC message from the bot (that contains the result of a portscan, for example), encrypts it and formats it for LeapChat, then sends it to the LeapChat server it is connected to
There are some open questions, like: does the IRC bot think it's connected to multiple rooms?
Talk to @elimisteve if you'd like to get started with this task!
I'd forgotten about this. Very interesting alternative to creating an entirely new TUI client for encrypted apps...