| Branch | Commit message | Author | Age |
| amdj/autotools-version-fix | include/serno.h.SH: correct check for git directory | Aaron Jones | 3 months |
| amdj/fix-buildsys-headers | Clean up include/stdinc.h and librb/include/rb_lib.h | Aaron Jones | 3 months |
| amdj/list-memleak | Merge branch 'main' into amdj/list-memleak | Doug Freed | 7 weeks |
| amdj/meson-generation-builddate | Meson: Decouple creation and generation data from version | Aaron Jones | 4 weeks |
| amdj/modules | Tidy up module loading code | Aaron Jones | 5 months |
| amdj/openssl-strerror | OpenSSL backend: Use nicer error strings for system errors | Aaron Jones | 4 months |
| amdj/unify-openssl-macro | Unify the preprocessor macro for OpenSSL support | Aaron Jones | 5 months |
| dwfreed/meson-rebased | build: add Meson buildsystem | Valentin Lorentz | 5 months |
| dwfreed/rm-rf-autotools | build: remove autotools buildsystem | Doug Freed | 4 months |
| main | Only init solanum once in tests/sasl_abort1.c | Ryan Schmidt | 13 days |
| [...] |
| |
| |
| Age | Commit message | Author | Files | Lines |
| 2026-05-14 | Clean up include/stdinc.h and librb/include/rb_lib.h•••- Unconditionally require stdbool.h in IRCd
We are a C99 project anyway (configure.ac and meson.build both
require a C99 compiler), so this header will always be present
This removes the awful hack defining bool, true, and false in
its absense, which was creating build errors when using meson,
because meson.build did not set the HAVE_STDBOOL_H macro
- Modernise definition of alloca(3) according to GNU guidance
This was in both librb and IRCd, while it only needs to be in
the former
- Fix missing endianness check in librb/meson.build
IRCd and librb both use the WORDS_BIGENDIAN macro, which was
only being set by their configure.ac (with the AC_C_BIGENDIAN
M4 macro)
Since IRCd's stdinc.h includes librb's rb_lib.h, which then
includes librb's librb-config.h, which would have the macro
defined there, we only need to check for it in librb, so we
can remove the endianness check from IRCd's configure.ac and
don't need to add it to IRCd's meson.build
- Use __has_attribute to detect whether compiler attributes are
available
This is supported by gcc (5+), clang (2.9+), and ICC (17+)
- Add a __noreturn macro for __attribute__((__noreturn__)) and
adjust the codebase to use that
- Remove inclusion of headers that are only used by librb
- Remove inclusion of headers that are included in rb_lib.h
because stdinc.h includes rb_lib.h anyway
- Remove the checks for headers and functions from the IRCd
configure.ac and meson.build that are only used by librb
- Alphabetise checks for headers and functions (by the name of
the macro they define) in the meson.build files
- Use check_header() instead of has_header() in meson to see if
it is actually possible to compile code using the header
- Remove dead code using srand48(3) which has never been
compiled because neither build system has ever set the
HAVE_SRAND48 macro and the surrounding code makes no use of
this libc RNG
- Remove the TLS defines from IRCd's meson.build because librb's
meson.build already defines them and IRCd pulls those in
amdj/fix-buildsys-headers | Aaron Jones | 19 | -276/+132 |
| 2026-04-29 | Automatically rehash when modules change conf•••When loading a module that modifies config (add/remove conf items or top
conf sections), we now queue a rehash operation so that new config can
be immediately applied. A new rb_defer_once() function was added to
deduplicate these rehash requests so that at most one rehash will occur
regardless of how many modules change conf.
| Ryan Schmidt | 7 | -5/+36 |
| 2026-04-29 | Add m_quarantine•••This extension module provides a new usermode (+q) and two commands that
allow opers to set/unset that mode. The mode can be set either via
ircd.conf (general::default_umodes or auth::umodes) or via the
QUARANTINE command. When using the command, a reason is required which
will be broadcast to all other opers via the snote.
The quarantine will be automatically removed if the target opers up or
logs into a services account, and opers and logged in users cannot be
quarantined. The UNQUARNTINE command may additionally be used to remove
the quarantine status from a user. Users cannot otherwise set or remove
this usermode from themselves.
The QUARANTINE and UNQUARANTINE commands require a new priv
oper:quarantine.
To support this, a new account_change hook was added to m_services and
m_signon. This hook is fired whenever a user's services account changes
(via logging in or logging out) from the SVSLOGIN, SIGNON, LOGIN, or SU
services commands. It is **not** fired for SVSLOGIN on unknown
(pre-registration) users.
Documentation was updated for the new usermode, hook, and commands.
Usermode help was alphabetized for consistency, a missing entry for
helpops was added, and cloaking was moved to +x (since all modern
cloaking modules use that mode instead) since I was touching the file
anyway.
| Ryan Schmidt | 11 | -54/+742 |
| 2026-04-09 | OpenSSL backend: Use nicer error strings for system errors | Aaron Jones | 1 | -0/+3 |
| 2026-04-09 | Add +reply client tag support•••We validate that the reply looks like a valid message id as generated by
tag_message_id and, for channel messages, that the reply is going to the
same channel as specified in the message id. Since tag values do not
currently go through spamfilter, this is an easy-ish way to ensure that
it cannot be used as a backchannel for spam.
| Ryan Schmidt | 4 | -0/+147 |
| 2026-04-09 | Add +channel-context client tag•••The sender must be in the channel mentioned by the tag and must be able
to send messages to that channel. Since this is a hint for clients to
display the received PM in a channel buffer, having the ircd strip the
tag when the sender would otherwise not be able to talk in the channel
will help reduce confusion and make chanop actions more effective in
reducing perceived in-channel issues.
| Ryan Schmidt | 4 | -0/+92 |
| 2026-04-05 | Fix logfile checks•••- Initialize hooks before the main log file, because if we send a snote
due to failing to open a logfile, that calls a hook. Attempting to
call a hook before hooks are initialized will cause the ircd to
segfault.
- Skip access() check for the logfile itself and simply check the return
value of fopen(). This fixes a TOCTTOU race where an access check
succeeds but something causes the file to become inaccessible between
access() and fopen(), preventing an appropriate error from being
logged. Also makes my life easier with my custom SELinux policy for
the ircd since access() checks for full-write access whereas my policy
only allows append access for logfiles.
| Ryan Schmidt | 2 | -13/+21 |
| 2026-04-05 | Fix copy/paste errors | Ryan Schmidt | 1 | -2/+2 |
| 2026-04-05 | Allow all ircd file paths to be customized•••The ban.db file as well as both MOTD files were in hardcoded locations. Add new config options to the main solanum binary to manipulate where these files are looked for. This should make it fully possible to run multiple solanum instances from the same directory side-by-side.
| Ryan Schmidt | 2 | -1/+13 |
| 2026-03-25 | doc/: rename ircd.motd{,.example} and unconditionally install•••Fixes #510
| Aaron Jones | 3 | -7/+2 |
| [...] |
| |
| Clone |
| https://cgit.space/~irc/github.com/solanum-ircd/solanum.git |
| http://cgitspacea7m5fmo5stfwxkykfbrjcecevl6z3xm5u7nfppuiigqoeyd.onion/~irc/github.com/solanum-ircd/solanum.git |
| http://cgit.i2p/~irc/github.com/solanum-ircd/solanum.git |
| http://cgitiek6febqkrplowpeqssm6cur3fk6de76oajer7dqixw2pwkq.b32.i2p/~irc/github.com/solanum-ircd/solanum.git |