Incoming MODE processing is split into a parsing step and an execution
step, instead of a mode's effector function being involved in its own
parsing. Modes can no longer use custom logic to control their parsing,
and instead supply a combination of CHM_* flags to the parser. As a
result, we know before we try to effect any mode changes what all of
them will be.
The reauthorize hack for override is no longer necessary. A side effect
of its introduction was that `MODE #foo b x!y@z` no longer worked; in
removing it we restore that behaviour.
We gain the ability to reject various invalid inputs that:
- mutate or query unknown modes
- supply excess mode arguments
- query modes that can't be queried
In each case, whether we *should* reject it is an open question; for now
I'm rejecting the first one.
This directory contains extensions (modules) to solanum ircd that
have been contributed by other people, or written by our development
team. Unsupported extensions live under unsupported/.
Modules
-------
createauthonly.c - Only allow authenticated (identified) users to create
channels.
ip_cloaking.c - Cloak (spoof) the host for users that have umode +h.
m_adminwall.c - Sends a message to all admins network-wide (umode +a)
Syntax: ADMINWALL :<message>
m_findforwards.c - Find channels that forward (+f) to a given channel.
Syntax: FINDFORWARDS <channel>
m_identify.c - Identifies to NickServ or ChanServ
Syntax: IDENTIFY [nick|channel] <password>
m_mkpasswd.c - MKPASSWD - generate a DES or MD5 encryption of a password
Syntax: MKPASSWD <plaintext> [MD5|DES]
m_ojoin.c - OJOIN - Join a channel through any modes or limits with
an optional status (@+)
Syntax: OJOIN [status]<channel>
m_olist.c - OLIST - Lists channels like LIST, but shows hidden
channels. Oper only of course.
m_opme.c - OPME - Allows an admin to op themselves in an opless channel
Syntax: OPME <channel>
m_omode.c - OMODE - Allows an admin to do all sorts of evil upon a
channel, sets modes with extreme prejudice
m_remove.c - REMOVE - Implements /REMOVE, which allows a channel op to
force-part a problematic user from a channel. Most
likely, you don't want this, because it is non-standard,
and easily worked around for autojoin purposes.
no_oper_invis.c - Disallow opers setting marking themselves as invisible
(+i) unless they have the hidden_oper flag.
example_module.c - An example module to be used for creating your own.
Syntax: TEST
Spy Modules
-----------
The following are the 'spy' parts, accessible via the +y snomask
spy_admin_notice.c - Spy on clients doing ADMIN
spy_info_notice.c - Spy on clients doing INFO
spy_links_notice.c - Spy on clients doing LINKS
spy_motd_notice.c - Spy on clients doing MOTD
spy_stats_notice.c - Spy on clients doing all STATS
spy_stats_p_notice.c - Spy on clients doing STATS p only
spy_trace_notice.c - Spy on clients doing TRACE
Note: if you have both spy_stats_notice.c and spy_stats_p_notice.c loaded
you will get two messages.
Snomask Modules
---------------
sno_farconnect.c - Remote client connect/exit notices (snomask +F)
sno_globalkline.c - Global K/D/X-line activation notices
sno_globaloper.c - Global oper-up notices
sno_whois.c - Spy on clients who WHOIS you seeing idle time (snomask +W).
Extban Modules
--------------
extb_account.so - Account bans (+b $a[:mask])
extb_canjoin.so - Banned from another channel (+b $j:mask)
extb_channel.so - Other-channel bans (+b $c:mask)
extb_extgecos.so - Extended ban (+b $x:mask)
extb_oper.so - Oper bans (+b $o)
extb_realname.so - Realname (gecos) bans (+b $r:mask)
extb_server.so - Server bans (+b $s:mask)