HaxIRCd, a public domain multi-protocol IRCd with redundant links
This is a work in progress.
- Git repo: https://git.andrewyu.org/hax/haxircd.git
- IRC channel: #chat on rx
- Documentation: https://man.sr.ht/~runxiyu/haxircd
- Task tracker: https://todo.sr.ht/~runxiyu/haxircd
- Mailing list: https://lists.sr.ht/~runxiyu/haxircd
Goals
- Could link in a network among multiple traditional protocols from different traditional IRCDs.
- Could provide internal services (ChanServ, NickServ, HaxServ) and synchronize the services database, handling collisions gracefully.
- Correct, fast and scalable.
- Modular. More extensive runtime module reloading is planned.
- Replace CoupServ and perhaps PyLink in the distant future.
Some implementation details(-ish)
dlopen(3)
is used to dynamically loadHaxIRCd.so
; this is forRTLD_GLOBAL
, so we can use the contained symbols for the actual loadable modules.- All strings that we handle (i.e. not required by external libraries) are length-specified, not null-terminated. Null bytes are treated as any other character in networking.
- Configuration is just another source file,
config.c
. The header fileconfig.h
defines the configuration options needed.
Dependencies
- Reasonably modern UNIX-like system with support for POSIX threads. We haven't tested on non-Linux systems yet.
- If you want TLS support, GnuTLS, OpenSSL, or LibreSSL.
- hax_string
- hax_table