1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
# 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](ircs://irc.runxiyu.org/#chat) on [rx](https://irc.runxiyu.org)
* 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](https://git.andrewyu.org/hax/coupserv.git/about) and
perhaps [PyLink](https://github.com/PyLink/PyLink) in the distant future.
## Some implementation details(-ish)
* `dlopen(3)` is used to dynamically load `HaxIRCd.so`; this is for `RTLD_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 file
`config.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.
## Why
* [PyLink](https://github.com/PyLink/PyLink) is used by the
[rx](https://irc.runxiyu.org) IRC network, but it's unmaintained and we still
want to use something like it.
* [CoupServ](https://git.andrewyu.org/hax/coupserv.git/about) uses the 1202
(InspIRCd v2) protocol, which is not supported by InspIRCd v4; more generally,
we want to make protocols pluggable modules.
|