<feed xmlns='http://www.w3.org/2005/Atom'>
<title>~irc/github.com/solanum-ircd/solanum.git/doc/technical, branch amdj/autotools-version-fix</title>
<subtitle>https://github.com/solanum-ircd/solanum</subtitle>
<id>https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/atom/doc/technical?h=amdj%2Fautotools-version-fix</id>
<link rel='self' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/atom/doc/technical?h=amdj%2Fautotools-version-fix'/>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/'/>
<updated>2026-04-29T16:12:04Z</updated>
<entry>
<title>Add m_quarantine</title>
<updated>2026-04-29T16:12:04Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-28T02:48:41Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=13969e96c9993892924b61f4b98d25626b4f1e2f'/>
<id>urn:sha1:13969e96c9993892924b61f4b98d25626b4f1e2f</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Add doing_version_confopts hook</title>
<updated>2026-01-22T22:01:58Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-22T20:11:43Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=fd89d4e837fe2e98cb273c340ddf4762ce1eb070'/>
<id>urn:sha1:fd89d4e837fe2e98cb273c340ddf4762ce1eb070</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>Pass msgbuf to PART's privmsg_channel hook and propagate PART tags</title>
<updated>2026-01-22T00:42:01Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-21T22:08:55Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=6a1cd5ec8650ea4a8f47db64f8a4032cc4827c11'/>
<id>urn:sha1:6a1cd5ec8650ea4a8f47db64f8a4032cc4827c11</id>
<content type='text'>
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
</content>
</entry>
<entry>
<title>Overhaul hooks documentation</title>
<updated>2026-01-21T17:10:18Z</updated>
<author>
<name>Ryan Schmidt</name>
</author>
<published>2026-01-13T01:38:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=86596936c1c4a708cb3ec3a642c008489d67255e'/>
<id>urn:sha1:86596936c1c4a708cb3ec3a642c008489d67255e</id>
<content type='text'>
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.
</content>
</entry>
<entry>
<title>modules/m_stats: fix hooks not being called (#458)</title>
<updated>2025-08-18T01:47:56Z</updated>
<author>
<name>Aaron Jones</name>
</author>
<published>2025-08-18T01:47:56Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=f9381ed2e3da2ede96cb18d8ed80700f2ee0dc8e'/>
<id>urn:sha1:f9381ed2e3da2ede96cb18d8ed80700f2ee0dc8e</id>
<content type='text'>
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.</content>
</entry>
<entry>
<title>EBMASK capab, to burst BMASK metadata (#354)</title>
<updated>2022-08-20T00:35:54Z</updated>
<author>
<name>Jess Porter</name>
</author>
<published>2022-08-20T00:35:54Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=fdd8cad93f4bb5af2195a0c989eec15c174df3b2'/>
<id>urn:sha1:fdd8cad93f4bb5af2195a0c989eec15c174df3b2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Mailmap and copyright update for Ariadne</title>
<updated>2021-06-01T16:40:02Z</updated>
<author>
<name>Ariadne Conill</name>
</author>
<published>2021-06-01T16:40:02Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=3fc0499e77c9091ce08a8c6da277de3a45c0c027'/>
<id>urn:sha1:3fc0499e77c9091ce08a8c6da277de3a45c0c027</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Document s2s ECHO</title>
<updated>2020-11-06T19:42:55Z</updated>
<author>
<name>Ed Kellett</name>
</author>
<published>2020-11-06T17:48:15Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=cbc31cce4d034ad5a95d2d9eb9d488c578e86493'/>
<id>urn:sha1:cbc31cce4d034ad5a95d2d9eb9d488c578e86493</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Document invite hooks</title>
<updated>2020-04-30T17:17:00Z</updated>
<author>
<name>Ed Kellett</name>
</author>
<published>2020-04-29T10:01:39Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=d691b63be236f14d9f9029615b5dba6d29a0fe52'/>
<id>urn:sha1:d691b63be236f14d9f9029615b5dba6d29a0fe52</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Propagate OPER</title>
<updated>2019-09-13T09:08:27Z</updated>
<author>
<name>Ed Kellett</name>
</author>
<published>2019-07-07T01:36:58Z</published>
<link rel='alternate' type='text/html' href='https://cgit.space/~irc/github.com/solanum-ircd/solanum.git/commit/?id=ed3ca2ff16a1dc921d90c0a67093de8f47209176'/>
<id>urn:sha1:ed3ca2ff16a1dc921d90c0a67093de8f47209176</id>
<content type='text'>
Move opername and privset storage to struct User, so it can exist for
remote opers.

On /oper and when bursting opers, send:

    :foo OPER opername privset

which sets foo's opername and privset. The contents of the privset on
remote servers come from the remote server's config, so the potential
for confusion exists if these do not match.

If an oper's privset does not exist on a server that sees it, it will
complain, but create a placeholder privset. If the privset is created by
a rehash, this will be reflected properly.

/privs is udpated to take an optional argument, the server to query, and
is now local by default:

    /privs [[nick_or_server] nick]
</content>
</entry>
</feed>
