aboutsummaryrefslogtreecommitdiffstats
path: root/doc
Commit message (Expand)AuthorAgeFilesLines
* 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. Gravatar Ryan Schmidt2026-05-112-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. Gravatar Ryan Schmidt2026-04-292-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. Gravatar Ryan Schmidt2026-04-091-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. Gravatar Ryan Schmidt2026-04-091-0/+2
* doc/: rename ircd.motd{,.example} and unconditionally install•••Fixes #510 Gravatar Aaron Jones2026-03-253-7/+2
* build: add Meson buildsystemGravatar Valentin Lorentz2026-03-171-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. Gravatar Ryan Schmidt2026-03-172-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. Gravatar Ryan Schmidt2026-01-221-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 Gravatar Ryan Schmidt2026-01-221-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. Gravatar Ryan Schmidt2026-01-212-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. Gravatar Ryan Schmidt2026-01-211-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 Gravatar Ryan Schmidt2026-01-211-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). Gravatar Ryan Schmidt2025-10-102-8/+67
* doc/reference.conf: remove documentation of unsupported extension modesGravatar Aaron Jones2025-09-111-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.Gravatar Aaron Jones2025-08-181-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. Gravatar Marco Meier2025-02-112-3/+11
* Remove WebSocket supportGravatar Aaron Jones2024-06-122-12/+0
* doc/reference.conf: document the auth::umodes configuration option•••Fixes: 4d8088c386c23049fcfe ("Allow auth{} to apply extra umodes") Gravatar Aaron Jones2024-01-161-0/+5
* doc/reference.conf: document connect::flags sctpGravatar Aaron Jones2023-11-201-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. Gravatar Aaron Jones2023-11-082-0/+6
* Fix typoGravatar Mike Quin2023-08-071-1/+1
* Correct order of chunking and encoding steps.Gravatar Mike Quin2023-08-071-6/+7
* Describe database loading.Gravatar Mike Quin2023-08-071-0/+12
* Add documentation for extensions/filterGravatar Mike Quin2023-08-071-0/+46
* Warn opers about unresponsive serversGravatar David Schultz2023-06-131-0/+7
* reference.conf: document `hide_opers`Gravatar David Schultz2023-05-181-0/+3
* m_shedding: user shedding module based on oftc-hybridGravatar David Schultz2023-05-181-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.Gravatar David Schultz2023-05-151-1/+1
* ircd.conf.example: reference.conf: fix invalid line wrappingGravatar Doug Freed2022-10-262-4/+2
* Add oper:free_target (#374)•••Co-authored-by: Ed Kellett <e@kellett.im>Gravatar Jess Porter2022-09-261-0/+1
* Add umode +I to allow users to hide their idle time (#220)Gravatar David Schultz2022-08-301-0/+4
* EBMASK capab, to burst BMASK metadata (#354)Gravatar Jess Porter2022-08-201-0/+15
* Add description parameter to auth blocks (#327)Gravatar Eric Mertens2022-04-141-0/+5
* Fix comment in example configurationGravatar Eric Mertens2022-02-031-1/+1
* doc/features/extban.txt: document $j, $x, and $zGravatar David Schultz2021-10-021-0/+12
* fix typo in `sasl_only_client_message` (#279)Gravatar David Schultz2021-09-152-2/+2
* Remove sno_whois from reference.conf (#270)•••This was missed in commit 26c3681f7ccece87d9feGravatar Aaron Jones2021-08-211-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. Gravatar Valentin Lorentz2021-07-311-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. Gravatar Valentin Lorentz2021-07-311-0/+4
* reference.conf: Make it clearer connect {} blocks are reciprocalGravatar Val Lorentz2021-07-311-4/+11
* Remove Windows supportGravatar jailbird7772021-07-301-3/+0
* Create configurations for user-facing messages within registration (#238)Gravatar Melissa Draper2021-07-292-0/+50
* Create configurable client rejection message for SASL only (#236)Gravatar Melissa Draper2021-07-292-0/+6
* reference.conf: add drain_reasonGravatar David Schultz2021-07-111-0/+5
* reference.conf: Fix inconsistent use of tabulations and spacesGravatar Valentin Lorentz2021-07-061-9/+9
* Add a tutorial for connecting servers and services.Gravatar Valentin Lorentz2021-07-063-1/+134
* Remove ziplinks (#218)Gravatar Ariadne Conill2021-06-262-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>Gravatar Eric Mertens2021-06-121-0/+3
* Mailmap and copyright update for AriadneGravatar Ariadne Conill2021-06-013-4/+4
* Add channel::ip_bans_through_vhostGravatar Ed Kellett2021-04-261-0/+3