A work-in-progress multi-protocol IRCd
- C 97.5%
- Makefile 2.5%
HaxIRCd, a public domain multi-protocol IRCd with redundant links
This is a work in progress.
- Git repo: https://git.runxiyu.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 HaxServ and perhaps PyLink in the distant future.
Some implementation details(-ish)
hax_dlopenis used to dynamically loadHaxIRCd.so, so we can use the contained symbols for the actual loadable modules. This will also be reloadable eventually.- 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.hdefines 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_loader
- hax_string
- hax_table