| Commit message (Expand) | Author | Age | Files | Lines |
| * | Add "bypass" capability to spamfilter•••A new flag ACT_BYPASS was added as a generic flag to bypass +u if set.
Opers remain immune, both as senders and recipients, so that spamfilter
cannot be abused to lock people out of managing filters, talking to
services, etc.
Three new configuration items were added to the general section of
ircd.conf to control filter behaviour:
- filter_sees_user_info: This replaces the old #defines for FILTER_NICK,
FILTER_IDENT, and FILTER_HOST to determine whether the hostmask of the
user is passed to the spamfilter or whether we pass a dummy *!*@*.
- filter_bypass_all: If set, the new ACT_BYPASS can allow every filter
action (DROP, KILL, ALARM) to bypass +u if set in conjunction with
those flags. If unset, only the DROP action can bypass +u and
ACT_BYPASS has no effect on other actions.
- filter_exit_message: This is the quit reason displayed, to move it out
of a #define (we still keep a define around for a default reason in
case it is unspecified).
If either filter_sees_user_info or filter_bypass_all are set, the
VERSION command will display a new 'F' flag to indicate the ability for
filter to spy on users.
| Ryan Schmidt | 2026-05-11 | 2 | -0/+19 |
| * | 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 | 2026-04-29 | 2 | -46/+102 |
| * | 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 | 2026-04-09 | 1 | -0/+2 |
| * | 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 | 2026-04-09 | 1 | -0/+2 |
| * | doc/: rename ircd.motd{,.example} and unconditionally install•••Fixes #510
| Aaron Jones | 2026-03-25 | 3 | -7/+2 |
| * | build: add Meson buildsystem | Valentin Lorentz | 2026-03-17 | 1 | -0/+6 |
| * | Remove channel::kick_on_split_riding•••This feature had numerous pitfalls (such as not checking +beI) and
services does it better than we can. Remove it and alert opers that the
feature no longer exists if they had it configured.
| Ryan Schmidt | 2026-03-17 | 2 | -10/+0 |
| * | Add doing_version_confopts hook•••This hook allows modification of the confopts portion of a VERSION
response (i.e. the set of flags representing how the ircd was
configured).
Extension modules can use this hook to display additional confopts
without needing to edit m_version or add things to core in order to
share state with m_version.
| Ryan Schmidt | 2026-01-22 | 1 | -45/+78 |
| * | Pass msgbuf to PART's privmsg_channel hook and propagate PART tags•••The privmsg_channel hook gained a new msgbuf member which was
uninitialized in m_part. Properly pass the msgbuf to that parameter and
propagate any tags set by the hook to downstream servers.
This requires introducing sendto_server_tags(), and I refactored
sendto_server() to call the same helper internal method as
sendto_server_tags(). I took the opportunity to update the method to use
msgbuf instead of linebuf directly (meaning sendto_server() now calls
outbound_msgbuf).
Fixes #484
| Ryan Schmidt | 2026-01-22 | 1 | -1/+0 |
| * | Overhaul hooks documentation•••The new hooks documentation is now a comprehensive accounting of every
hook that exists in the solanum repo. The document includes changes to
hooks present in the (as of now unmerged) PRs #466, #478, and #482.
| Ryan Schmidt | 2026-01-21 | 2 | -137/+1214 |
| * | Batch updates•••The extension example_module was extended to introduce a new
client-initiated batch type named test. This is primarily done to ease
testing of the client-initiated portions of m_batch, but also serves as
a useful sketch for how a module can register its own client-initiated
batch types.
The definition of struct BatchHandler was slightly modified to use a
callback function to determine if nesting is allowed. The callback can
additionally set a custom error message if desired when returning false.
The len and messages list in struct Batch no longer include the start
message, so a len of 0 indicates an empty batch. Because the start
message is still allocated and saved off, adjust anything that impacts a
client's pending_batch_lines by 1 to account for the implicit additional
message.
Empty batches now trigger the relevant batch handler. If a handler wants
to no-op on empty batches, it can do so but this allows additional
flexibility for handlers to still do something upon receiving empty
client-initiated batches.
| Ryan Schmidt | 2026-01-21 | 1 | -5/+5 |
| * | Add batch support•••- Add "batch" client capability
- Support sending netsplit/netjoin batches
- Support receiving BATCH from clients and remote servers
- Support for modules to define supported batch types for incoming
batches
- Add "message_handler" hook to override the handler for a particular
incoming message
- Add technical and user-facing documentation for batches
- Add some more sendto_* overloads that support tags which were missing
from the initial message-tags implementation but turned out to be
needed
| Ryan Schmidt | 2026-01-21 | 1 | -0/+229 |
| * | Documentation updates•••Add user help for the TAGMSG command. Additionally, update
reference.conf to include (almost) all extensions. The only extensions
excluded were those that are only useful when testing/debugging
(m_echotags), example modules (chantype_dummy, example_module), or
modules that should probably never be loaded in new networks
(ip_cloaking_3.0, ip_cloaking_old, m_mkpasswd).
| Ryan Schmidt | 2025-10-10 | 2 | -8/+67 |
| * | doc/reference.conf: remove documentation of unsupported extension modes | Aaron Jones | 2025-09-11 | 1 | -2/+0 |
| * | modules/m_stats: fix hooks not being called (#458)•••Some modules rely on stats hooks being called (e.g. extensions/helpops).
These calls were removed accidentally by commit 4e89f6603d63b2f8dfde.
Additionally, the last vestiges of the spy-only doing_stats_p hook were
left around. No module has ever used this hook. Remove it. | Aaron Jones | 2025-08-18 | 1 | -3/+0 |
| * | Add max_autoconn to documentation•••7c7065b0 introduced class::max_autoconn configuration parameter.
However, this parameter was never added to config.rst and the
example config. This commits adds them there as well.
| Marco Meier | 2025-02-11 | 2 | -3/+11 |
| * | Remove WebSocket support | Aaron Jones | 2024-06-12 | 2 | -12/+0 |
| * | doc/reference.conf: document the auth::umodes configuration option•••Fixes: 4d8088c386c23049fcfe ("Allow auth{} to apply extra umodes")
| Aaron Jones | 2024-01-16 | 1 | -0/+5 |
| * | doc/reference.conf: document connect::flags sctp | Aaron Jones | 2023-11-20 | 1 | -0/+1 |
| * | extensions/invite_notify: make the NOTICE optional, configurable•••This adds a configuration option that determines whether the NOTICE is
sent to clients that do not support the IRCv3 invite-notify capability.
Requested by LiberaChat MGM.
| Aaron Jones | 2023-11-08 | 2 | -0/+6 |
| * | Fix typo | Mike Quin | 2023-08-07 | 1 | -1/+1 |
| * | Correct order of chunking and encoding steps. | Mike Quin | 2023-08-07 | 1 | -6/+7 |
| * | Describe database loading. | Mike Quin | 2023-08-07 | 1 | -0/+12 |
| * | Add documentation for extensions/filter | Mike Quin | 2023-08-07 | 1 | -0/+46 |
| * | Warn opers about unresponsive servers | David Schultz | 2023-06-13 | 1 | -0/+7 |
| * | reference.conf: document `hide_opers` | David Schultz | 2023-05-18 | 1 | -0/+3 |
| * | m_shedding: user shedding module based on oftc-hybrid | David Schultz | 2023-05-18 | 1 | -0/+1 |
| * | doc/connecting-servers: update example atheme protocol module•••Atheme has had a protocol module designed specifically for Solanum for some time now that includes proper support for new IRCd features. | David Schultz | 2023-05-15 | 1 | -1/+1 |
| * | ircd.conf.example: reference.conf: fix invalid line wrapping | Doug Freed | 2022-10-26 | 2 | -4/+2 |
| * | Add oper:free_target (#374)•••Co-authored-by: Ed Kellett <e@kellett.im> | Jess Porter | 2022-09-26 | 1 | -0/+1 |
| * | Add umode +I to allow users to hide their idle time (#220) | David Schultz | 2022-08-30 | 1 | -0/+4 |
| * | EBMASK capab, to burst BMASK metadata (#354) | Jess Porter | 2022-08-20 | 1 | -0/+15 |
| * | Add description parameter to auth blocks (#327) | Eric Mertens | 2022-04-14 | 1 | -0/+5 |
| * | Fix comment in example configuration | Eric Mertens | 2022-02-03 | 1 | -1/+1 |
| * | doc/features/extban.txt: document $j, $x, and $z | David Schultz | 2021-10-02 | 1 | -0/+12 |
| * | fix typo in `sasl_only_client_message` (#279) | David Schultz | 2021-09-15 | 2 | -2/+2 |
| * | Remove sno_whois from reference.conf (#270)•••This was missed in commit 26c3681f7ccece87d9fe | Aaron Jones | 2021-08-21 | 1 | -2/+0 |
| * | Rename doc/index.txt to doc/readme.txt and mention reference.conf•••The new name will make it appear in GitHub's web view.
| Valentin Lorentz | 2021-07-31 | 1 | -1/+3 |
| * | reference.conf: Document the common syntax for flags•••It was only documented as an example in the auth {} block,
not for other blocks.
| Valentin Lorentz | 2021-07-31 | 1 | -0/+4 |
| * | reference.conf: Make it clearer connect {} blocks are reciprocal | Val Lorentz | 2021-07-31 | 1 | -4/+11 |
| * | Remove Windows support | jailbird777 | 2021-07-30 | 1 | -3/+0 |
| * | Create configurations for user-facing messages within registration (#238) | Melissa Draper | 2021-07-29 | 2 | -0/+50 |
| * | Create configurable client rejection message for SASL only (#236) | Melissa Draper | 2021-07-29 | 2 | -0/+6 |
| * | reference.conf: add drain_reason | David Schultz | 2021-07-11 | 1 | -0/+5 |
| * | reference.conf: Fix inconsistent use of tabulations and spaces | Valentin Lorentz | 2021-07-06 | 1 | -9/+9 |
| * | Add a tutorial for connecting servers and services. | Valentin Lorentz | 2021-07-06 | 3 | -1/+134 |
| * | Remove ziplinks (#218) | Ariadne Conill | 2021-06-26 | 2 | -14/+2 |
| * | Allow auth{} to apply extra umodes (#202)•••Allow auth{} to apply extra umodes
Co-authored-by: Doug Freed <dwfreed@mtu.edu>
Co-authored-by: Ed Kellett <e@kellett.im> | Eric Mertens | 2021-06-12 | 1 | -0/+3 |
| * | Mailmap and copyright update for Ariadne | Ariadne Conill | 2021-06-01 | 3 | -4/+4 |
| * | Add channel::ip_bans_through_vhost | Ed Kellett | 2021-04-26 | 1 | -0/+3 |