0
1
Fork
You've already forked HaxIRCd
0
A work-in-progress multi-protocol IRCd
  • C 97.5%
  • Makefile 2.5%
Find a file
2025年05月02日 18:47:17 -04:00
.woodpecker Fix CI some more 2024年12月09日 22:55:35 -05:00
networks *_handle -> info 2025年04月08日 19:43:50 -04:00
protocols Allow recv functions to be interrupted, and actually implement gnutls_buffered 2025年04月08日 19:19:35 -04:00
pseudoclients Fix a leak 2025年03月16日 04:43:36 -04:00
.editorconfig Add an .editorconfig 2024年07月26日 08:00:00 +08:00
.gitignore Fix some issues in inspircd3 protocol support, and the parts of inspircd4 protocol copied from it 2024年07月24日 18:34:05 -04:00
config.h More dynamic pseudoclients 2024年12月09日 20:12:13 -05:00
general_network.c That was not supposed to be a failure 2025年05月02日 18:47:17 -04:00
general_network.h hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
LICENSE hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
LICENSE.c hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
LICENSE.h hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
main.c Check for symbol validation 2024年12月10日 15:42:57 -05:00
main.h hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
Makefile Explicitly link to libc, though it's not needed yet 2024年12月08日 12:21:19 -05:00
mutex.c hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
mutex.h Avoid needless locking when attempting to unlock, instead check the value directly 2024年10月02日 23:31:00 -04:00
protocol_numbers.h hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
protocols.c hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
protocols.h hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
pseudoclients.c Check for symbol validation 2024年12月10日 15:42:57 -05:00
pseudoclients.h Loading and unloading of pseudoclients 2024年12月09日 20:57:28 -05:00
README.md Update README again 2025年01月02日 13:54:38 +08:00
real_main.c Get rid of old deadlock-main-thread-instead-of-exit behavior 2024年12月08日 12:04:55 -05:00
server_network.c hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00
server_network.h hax@andrewyu.org -> hax@runxiyu.org 2024年09月14日 16:06:36 -04:00

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 HaxServ and perhaps PyLink in the distant future.

Some implementation details(-ish)

  • hax_dlopen is used to dynamically load HaxIRCd.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 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.
  • hax_loader
  • hax_string
  • hax_table

Why

  • PyLink is used by the rx IRC network, but it's unmaintained and we still want to use something like it.
  • HaxServ uses the 1202 (InspIRCd v2) protocol, which is not supported by InspIRCd v4; more generally, we want to make protocols pluggable modules.