From dce234bf05d69b43bf78d0347c108ae008a290be Mon Sep 17 00:00:00 2001 From: Test_User Date: Sun, 16 Jun 2024 10:00:34 -0400 Subject: README.md, mostly from runxiyu --- README.md | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 README.md (limited to 'README.md') diff --git a/README.md b/README.md new file mode 100644 index 0000000..33577fa --- /dev/null +++ b/README.md @@ -0,0 +1,47 @@ +# HaxIRCd, a public domain multi-protocol IRCd with redundant links + +**This is a work in progress.** + +## 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. + +## Project links + +* Git repo: +* IRC channel: [#chat](ircs://irc.runxiyu.org/#chat) on [rx](https://irc.runxiyu.org) +* Task tracker: +* Mailing list: -- cgit v1.2.3