LibreIRCd
LibreIRCd is a lightweight IRC daemon.
When most of server implementations
try to be fully-featured,
goal of this one is simplicity.
Features
LibreIRCd goal is to be RFC 2810-2813 compatible.
First major release should support
all the sensible features of the IRC RFC,
except the interserver communication.
Then,
the goal is to implement the latter.
So far it supports basic communication through channels
and some modes.
Not all features are implemented yet, though.
LibreIRCd doesn't support TLS.
Instead,
it implements the PROXY protocol v1 from HAProxy.
this way,
you can use some other software to terminate TLS
and pass plaintext traffic to the LibreIRCd
without loosing source IP address
which is essential in IRC.
Source code
As of dependencies LibreIRCd requires
- a C99 compiler
- POSIX-compliant C library
- POSIX make (optional)
Available versions for downloading are
- v0.1.0
Initial release. LibreIRCd is not complete yet, but it's possible to
connect from an IRC client, join a #room and talk with some users. At
this point LibreIRCd consists of the following:
- Incomplete support for channels and users
- Beginnings of modes
- Some hard{,coded} limits
- v0.2.0
Changelog:
- Show topic in LIST
- Replace all fd checks with pointer checks
- Add support for voice and +m channel mode
- Fix & Refactor NAMES
- Fix some typos in SETOPER
- Add sending topic on join
- Add TOPIC and t channel flag support
- Add SETHOSTNAME command
- Add LIST command
- Fix loop in kick()
- Flatten privmsg to a user
- Add support for n channel flag
- Fix KICK permissions
- Add KICK command
- Fix channel_exit()ing user_remove()
- Factor writechanf() calls out to a macro
- Fix writechanf() in mode_channel()
- Add channel mode editing support
- Add authorization for mode_channel()
- Refactor MODE
- Add basic support for channel oper
- Change way to deal with modes in channels
- Fix linking
- Fix some types
- Fix UB with reply 461
- Add OPER/SETOPER
- Fix PRIVMSG/NOTICE
- Add NAMES
- Allow lf as well as crlf
- Add WHOIS and config parsing
- Fixes
- Added copyright notice to the config.h
- Enhance registration messages
- Update README
- Add validation
- Fix all the warnings
- Refactor QUIT message sending
- Add exiting from a channel in user_remove
- Add ping system
- Remove magic numbers from ircd.h
- v0.3.0
Changelog:
- Make a kludge a bit prettier
- Replace goto with continue
- Add PASS command
- v0.4.0
Changelog:
- Remove extra condition from ensure() macro
- Do rDNS of clients
- Add PROXY protocol support
Complete changelog is available
through a git repository at
anongit at code dot maow dot one:libreircd.