Jilles's IRC page

Table of contents


Perl script to convert HybServ2 databases to ratbox-services format. (This is .pl.txt instead of .pl to prevent the web server from executing it.) Not everything can be converted; see the comments in the script for more information. Some conversion problems are also noted as comments ("--") in the SQL output. This script has been used successfully on several networks.

Short introduction to ratbox-services for users.

Services shortcut (/chanserv etc.) module generator for ircd-ratbox 2.x. This should work with ratbox-services or other services. Note that ratbox-services includes another services shortcut generator which only works with ratbox-services and recent versions of Atheme but is cleaner. It is a ircd-ratbox 2.x port of Hwy's services shortcut module generator. The commands will use PRIVMSG username@services.server.name syntax. Note that some services packages such as Anope use nick@services.server.name instead.

See the main website for more information.


ircd-ratbox is the main ircd on EFnet and on various small networks.

The following files are still here for historical purposes; they probably do not apply anymore.

Remote rehash patch for ircd-ratbox 2.1 and for 2.2. This allows things like REHASH irc2.server and REHASH REJECTCACHE *. Only works if the destination server grants the "rehash" flag in the shared{} for the source user@host and server and the source oper has the rehash and remoteban privs.

Patch which helps finding places where names are used instead of IDs. This gives notices on umode +d. Particularly if there are TS5 servers or services linked, this will generate many false positives. This is only recommended for debugging.


Charybdis is an ircd used on various networks such as AthemeNet/AlphaChat, originally based on ircd-ratbox. Git repository at http://github.com/atheme/charybdis/ (web interface).

Download charybdis 3.4.2 tarball (stable version). MD5 (charybdis-3.4.2.tbz2) = 54245396b829f8d19d3958cde9c3bd65, SHA256 (charybdis-3.4.2.tbz2) = 8a38e67072d90147c40202918c82237765e339cbc849456da54994ce6e31b754.

Download charybdis 3.4.1 tarball. MD5 (charybdis-3.4.1.tbz2) = 2bfb430bbbec268c9945607b714e4cac, SHA256 (charybdis-3.4.1.tbz2) = 8d6e508bdee06d2ef7fa06e472f8c1caece4a97a4e552bc8b179c7a5ef239f93.

Download charybdis 3.4.0 tarball. MD5 (charybdis-3.4.0.tbz2) = b31c126ae76938233d6a0a6d1123dce8, SHA256 (charybdis-3.4.0.tbz2) = fa7455570e3077bf86c7a25ad9d19268df8f9a6181d7a96fc7b1fa834a179646.

Download charybdis 3.3.0 tarball (previous stable version). MD5 (charybdis-3.3.0.tbz2) = 4b6e0098db070a694b6d41b3d02c2378, SHA256 (charybdis-3.3.0.tbz2) = b5feae88c031dee799144fbfde9d64f3ace4c979c337a1047677a17600dddab1.

Compiled SGML documentation, HTML version and PDF version, about trunk, and HTML version and PDF version, about 3.0.x. There is also a lot of stuff documented in reference.conf, the text files under doc/ and the help files (/quote help). The latter three links point to the files in the development branch of the Mercurial repository and may not be the most convenient way to access the information.


Atheme is an IRC services package with many features such as support for many IRCds, loadable modules, flags-based channel access, and more. Please see the official Atheme website for downloads and more information.

Browse the help files online. These help files are from trunk and may differ from the stable and older help files.

Design notes for multiple founders per channel. This is written from the perspective of Atheme 2.1.

The Anope module to convert anope databases to atheme is now included in atheme hg, as contrib/anope_convert.c. Upon loading this dumps anope's data as an atheme flatfile.

  1. Copy file to modules/ (1.6.x) or src/modules/ (1.7.x) in your anope source tree.
  2. Read the warnings.
  3. Edit #define WHERE_TO.
  4. For 1.7.x, remove #define ANOPE_16X.
  5. Rerun configure and make, etc. like for any anope module.
  6. Load the module with /msg operserv modload anope_convert. You may have to try twice before it works. The services.log can also be quite helpful.
  7. You now have an atheme database.

The Perl script to convert HybServ2 databases to Atheme format is now included in atheme hg, as contrib/hybservtoatheme.pl. Not everything can be converted; see the comments in the script for more information. Some conversion problems are also noted as comments ("#") in the output.

ircd protocol theory

Abstract description of the way several ircd protocols try to prevent channel netsplit abuse. Discussed are TS6 (ratbox, charybdis), bahamut, P10 (undernet-ircu, asuka, nefarious, etc.), ircd 2.8.21.mu3.1 (aka TS8) and dreamforge.

Example of how Atheme uses TS6's protections against hacked modes during netbursts to solve the "JOIN-MODE" problem where someone recreates a registered channel and quickly sets some modes on it.

ircd-hybrid 7.0.x INVITE fix

Due to a hybrid 7.0 bug, users on hybrid 7.0 servers cannot receive invites when their server directly connects to a ratbox 2 or hybrid 7.1 server.

The hybrid 7.0 developers had a strange idea of propagating invite notices (i.e. -server- jack has invited jane into channel #paranoids) with :server INVITE source target #channel. Hybrid 7.0 uses the parameter count to distinguish between a normal invite and an "invite notice". However, hybrid 7.1 and some versions of ratbox 2 send the channelTS on a normal server-server invite (to avoid invites by splitriders); these invites are seen as invite notices which are subsequently dropped because they are invalid.

This patch hybrid-7.0-invite.patch makes it distinguish between the two by type of the source: INVITE messages from remote clients are treated as invites, ones coming from servers are treated as invite notices.

dynamic-ip update script

This is a template for a script to update ircd.conf for people running ircd on dynamic IPs (yes they really should not...). This was created for the ChatAutism IRC network.



A small irssi setup guide (in Dutch).

Patch to do channel sync right away on servers that do not support multi MODE and WHO queries (i.e. most). This patch does not really solve the issue of irssi not getting the reply it expects for a channel join (irssi's fault, mostly) but does solve its most annoying effect. Channel sync is required for proper mode display, /BAN and various other commands. This patch is part of irssi 0.8.11.

Simple script to show which server replied to a /WHOIS.

Patch to make notices to +#channel, etc work. This patch does not break +channels on ircnet (modeless) and does not require GC to compile. Due to some architectural decisions by the irssi authors, privmsg to +#channel is harder to fix.

Patch to fix inappropriate "Netsplit over". This patch is part of irssi 0.8.11.

Patch to not remove nicks from netsplit if one nick with the same servers rejoins.

Patch to stop forgetting server connections when DNS returns the name does not exist. In practice, "hostname nor servname provided, or not known" is often a transient error returned if the Internet connection is down (yes that is wrong) or if the IRC network has DNS problems.

Script to show channels where irssi does not know whether the join succeeded or not. Such channels can cause trouble in certain situations. If you are really not on those channels (/whois yourself to check), you can let irssi know this by doing something that causes an error with the channel, for example try to /msg it (assuming it has mode +n set which is almost always the case). Alternatively, try to /join them again.

For opers

Script to display hyperion 1.0.2's /MAP properly. This worked fine without script in 0.8.9 but broke in 0.8.10 because some other ircd uses the numeric in whois.

Script to show numeric hop counts in /MAP. This script is tested with ratbox 2.x and charybdis.

Tweaked version of Garion's excellent server notice reformatter and data file. The tweaks include not reformatting notices to channels and improving charybdis support; it will still work fine with hybrid or ratbox as well.

Script reformatting ETRACE, MASKTRACE and CHANTRACE in ratbox and charybdis. These commands provide user information in an extended format.

For ratbox/charybdis servers (some for a few others also)

Irssi script (whois0810.pl) to display account name and real IP more clearly for ratbox/charybdis and ircu. Thanks to Nei for providing an earlier version and to Valentin Batz for the original version. Updated 29 Jun 2006 to parse unreal's RPL_WHOISHOST also which we took in charybdis 2.1.

Irssi script (for 0.8.9) to display ratbox's and others' "actually using host" properly, using accountname.pl as a skeleton. This script mainly helps with /wii in a query, otherwise RPL_WHOISACTUALLY ends up in window 1 (in irssi 0.8.9 at least). This script does not work properly in irssi 0.8.10 and newer, use the above one instead.

Tweaked version of dubkat's callerid numeric reformatting script, for servers with "callerid" server side ignore of private messages such as ratbox and charybdis.

Script implementing a notify list using the MONITOR feature found in ratbox 2.1 or newer and charybdis. Supports user@host masks, can automatically accept users (for +g) and keeps track of the last time someone was seen. Implements a separate /MONITOR command independent of the builtin /NOTIFY.

Script implementing the SASL PLAIN mechanism for charybdis+atheme networks and enabling CAP MULTI-PREFIX for recent ratbox, charybdis and hybrid ircds. Usernames/passwords are stored in ~/.irssi/sasl.auth and are set with /sasl set <servertag> <username> <password>. CAP MULTI-PREFIX sends @+ in NAMES and WHO if a client is both opped and voiced, thus ensuring it is clear they are voiced when they are deopped.

Script reformatting the numeric generated by /KNOCK. This shows the numeric in the channel window instead of the status window. /KNOCK is used to request an invite to a channel that is locked somehow (+ikl).

Patch displaying successful invites in channel's instead of user's window. This needs discussion/thought as to whether this is better or not.

For dancer/hyperion servers

Script displaying removes as kicks. Other scripts reacting to kicks have a good chance at working with this. Rationale: remove has the same effect as kick, but is rather rude (even though it looks friendly); the only thing it is useful for is tricking lame autorejoin scripts, which is what /kickban is for.

dancer-ircd / hyperion / freenode

Please do not bother me with any bugs/features/whatever about this code.

The last release version of hyperion: Download hyperion 1.0.2 tarball.

Back to Jilles' homepage

Created with Vim