Go to file
Joshua Judson Rosen d1873a1630 README: remove hyperlinks from "example.com" URLs
That just feels... pointless at best, confusing at worst?
2021-06-27 20:30:37 -04:00
gpl-3.0.txt Add readme, license, and command line arguments, first version that *should* be useable by others 2015-11-28 01:48:35 -05:00
readme.md README: remove hyperlinks from "example.com" URLs 2021-06-27 20:30:37 -04:00
xmpp-ircd.py Noop AWAY commands as a quick `fix' to avoid crashes 2021-05-28 00:15:23 -04:00



This is a fork of a fork of a fork of telepaatti, which was originally written as a way for one user to connect to a XMPP server from their IRC client.

This particular fork aims to be ran as an IRC server connected to a single XMPP MUC server as a standard XMPP component. This will hopefully allow IRC server operators to migrate to hosting real XMPP MUCs with minimal headache or complaining from hardcore IRC users, and also allow XMPP MUC operators to easily add IRC support.


Install dependencies, python libs xmpp and daemon, on Debian/Ubuntu:

sudo apt-get install python-xmpp python-daemon

Then run:

./xmpp-ircd.py --muc-server=chat.example.com --component-name=irc.example.com --component-pass=irc

Which will connect to as an XMPP component and serve the MUC chat.example.com as an IRC server on port 6667.

prosody for example would need this component configuration for the above command:

Component "chat.example.com" "muc"

Component "irc.example.com"
    component_secret = "irc"

Then, whether an XMPP user connects to xmpp:example@chat.example.com?join or an IRC user to irc://irc.example.com:6667/example they will both be in the same channel, hopefully unable to tell the other is using a completely different protocol.


Online discussions:

Useful documentation:

Useful command to watch real IRC traffic between actual client and server, connect client to localhost:4444:

socat -v TCP-LISTEN:4444,fork OPENSSL:irc.freenode.net:6697


  • NickServ/SASL auth
  • finish /list /whois
  • handle XMPP disconnecting
  • handle shutdown cleanly
  • init scripts?
  • other IRC commands?

known issues:

  • nick changes are hacky, can lock up gajim private messages rarely somehow...
  • Nicks are only unique per-channel in XMPP, but per-server in IRC, I don't know that there IS a good solution for this. The main problem this brings up is with private messaging, there is no way to know who you are chatting with. Nick changes are also affected, but that only prevents you from changing your nick in a channel if you are joined with any other channels where the nick is taken.

License - GNU/GPLv3

xmpp-ircd, IRC to Jabber/XMPP gateway.
forked from Telepaatti

Copyright (C) 2007-2009 Petteri Klemola
Copyright (C) 2015 moparisthebest

xmpp-ircd is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License version 3 as
published by the Free Software Foundation.

xmpp-ircd is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
02110-1301, USA.