Merge tag 'v2.0.26' into master.

This commit is contained in:
Peter Powell 2018-04-21 12:04:43 +01:00
commit 35b70631f0
14 changed files with 323 additions and 223 deletions

View File

@ -2,6 +2,8 @@
# Helpop Standard # # Helpop Standard #
##################### #####################
<config format="xml">
<alias text="HELP" replace="HELPOP $2-"> <alias text="HELP" replace="HELPOP $2-">
<helpop key="start" value="InspIRCd Help System <helpop key="start" value="InspIRCd Help System
@ -398,11 +400,12 @@ LOCKSERV UNLOCKSERV">
Returns the ip and nickname of the given users."> Returns the ip and nickname of the given users.">
<helpop key="tline" value="/TLINE <host/IP mask> <helpop key="tline" value="/TLINE <mask>
This command returns the number of local and global clients matched, This command returns the number of local and global clients matched,
and the percentage of clients matched, plus how they were matched and the percentage of clients matched, plus how they were matched
(by IP address or by hostname)."> (by IP address or by hostname). Mask should be given as either a
nick!user@host or user@IP (wildcards acceptable).">
<helpop key="lockserv" value="/LOCKSERV :[<message>] <helpop key="lockserv" value="/LOCKSERV :[<message>]
@ -464,7 +467,7 @@ n Block private and channel notices
P Block part messages P Block part messages
q Block quit messages q Block quit messages
o Don't match against opers o Don't match against opers
c Strip all color codes from the message before matching c Strip all formatting codes from the message before matching
* Represents all of the above flags * Represents all of the above flags
- Does nothing, a non-op for when you do not want to specify any - Does nothing, a non-op for when you do not want to specify any
flags flags
@ -740,7 +743,7 @@ Sends a message to all +w users.">
<helpop key="rline" value="/RLINE <regex> [<duration> :<reason>] <helpop key="rline" value="/RLINE <regex> [<duration> :<reason>]
Sets or removes an r-line (regex line) on a n!u@h\\srealname mask. You Sets or removes an r-line (regex line) on a n!u@h\srealname mask. You
must specify all three parameters to add an rline, and one parameter must specify all three parameters to add an rline, and one parameter
to remove an rline (just the regex). to remove an rline (just the regex).
@ -782,79 +785,81 @@ using their cloak when they quit.">
---------- ----------
c Blocks private messages and notices from users who do c Blocks private messages and notices from users who do
not share a common channel with you (requires not share a common channel with you (requires the
commonchans module). commonchans module).
d Deaf mode. User will not receive any messages or notices d Deaf mode. User will not receive any messages or notices
from channels they are in (requires deaf module). from channels they are in (requires the deaf module).
g In combination with /ACCEPT, provides for server side g In combination with /ACCEPT, provides for server side
ignore (requires callerid module). ignore (requires the callerid module).
h Marks as 'available for help' in WHOIS (IRCop only, h Marks as 'available for help' in WHOIS (IRCop only,
requires helpop module). requires the helpop module).
i Makes invisible to /WHO if the user using /WHO is not in i Makes invisible to /WHO if the user using /WHO is not in
a common channel. a common channel.
k Prevents the user from being kicked from channels, or k Prevents the user from being kicked from channels, or
having op modes removed from them (services only, having op modes removed from them (services only,
requires servprotect module). requires the servprotect module).
o Marks as a IRC operator. o Marks as a IRC operator.
s <mask> Receives server notices specified by <mask> s <mask> Receives server notices specified by <mask>
(IRCop only). (IRCop only).
r Marks as a having a registered nickname r Marks as a having a registered nickname
(requires services account module). (requires the services account module).
w Receives wallops messages. w Receives wallops messages.
x Gives a cloaked hostname (requires cloaking module). x Gives a cloaked hostname (requires the cloaking module).
z Only allow private messages from SSL users (requires z Only allow private messages from SSL users (requires the
sslmode module). sslmode module).
B Marks as a bot (requires botmode module). B Marks as a bot (requires the botmode module).
G Censors messages sent to the user based on filters G Censors messages sent to the user based on filters
configured for the network (requires censor module). configured for the network (requires the censor module).
H Hides an oper's oper status from WHOIS (requires H Hides an oper's oper status from WHOIS (requires the
hideoper module). hideoper module).
I Hides a user's entire channel list in WHOIS from I Hides a user's entire channel list in WHOIS from
non-IRCops (requires hidechans module). non-IRCops (requires the hidechans module).
L Stops redirections done by m_redirect (mode must be L Stops redirections done by m_redirect (mode must be
enabled in the config). enabled in the config).
R Blocks private messages from unregistered users R Blocks private messages from unregistered users
(requires services account module). (requires the services account module).
S Strips mIRC color/bold/underline codes out of private S Strips formatting codes out of private messages
messages to the user (requires stripcolor module). to the user (requires the stripcolor module).
W Receives notification when a user uses WHOIS on them W Receives notification when a user uses WHOIS on them
(IRCop only, requires showwhois module)."> (IRCop only, requires the showwhois module).">
<helpop key="chmodes" value="Channel Modes <helpop key="chmodes" value="Channel Modes
------------- -------------
v <nickname> Gives voice to <nickname>, allowing them to speak v <nickname> Gives voice to <nickname>, allowing them to speak
while the channel is +m. while the channel is +m.
h <nickname> Gives halfop status to <nickname> (requires h <nickname> Gives halfop status to <nickname> (requires the
customprefix module). customprefix module).
o <nickname> Gives op status to <nickname>. o <nickname> Gives op status to <nickname>.
a <nickname> Gives protected status to <nickname>, preventing a <nickname> Gives protected status to <nickname>, preventing
them from them from being kicked (+q only, them from being kicked (+q only, requires the
requires customprefix module).
q <nickname> Gives owner status to <nickname>, preventing them
from being kicked (Services or only, requires
customprefix module). customprefix module).
q <nickname> Gives owner status to <nickname>, preventing them
from being kicked (Services or +q only, requires
the customprefix module).
b <hostmask> Bans <hostmask> from the channel. b <hostmask> Bans <hostmask> from the channel.
e <hostmask> Excepts <hostmask> from bans (requires e <hostmask> Excepts <hostmask> from bans (requires the
banexception module). banexception module).
I <hostmask> Excepts <hostmask> from +i, allowing matching I <hostmask> Excepts <hostmask> from +i, allowing matching
users to join while the channel is invite-only users to join while the channel is invite-only
(requires inviteexception module). (requires the inviteexception module).
c Blocks messages containing mIRC color codes c Blocks messages that contain formatting codes
(requires blockcolor module). (requires the blockcolor module).
d <time> Blocks messages to a channel from new users d <time> Blocks messages to a channel from new users
until they have been in the channel for <time> until they have been in the channel for <time>
seconds (requires delaymsg module). seconds (requires the delaymsg module).
f [*]<lines>:<sec> Kicks on text flood equal to or above the f [*]<lines>:<sec> Kicks on text flood equal to or above the
specified rate. With *, the user is banned specified rate. With *, the user is banned
(requires messageflood module). (requires the messageflood module).
g <mask> Blocks messages matching the given glob mask
(requires the chanfilter module).
i Makes the channel invite-only. i Makes the channel invite-only.
Users can only join if an operator Users can only join if an operator
uses /INVITE to invite them. uses /INVITE to invite them.
j <joins>:<sec> Limits joins to the specified rate (requires j <joins>:<sec> Limits joins to the specified rate (requires
joinflood module). the joinflood module).
k <key> Set the channel key (password) to <key>. k <key> Set the channel key (password) to <key>.
l <limit> Set the maximum allowed users to <limit>. l <limit> Set the maximum allowed users to <limit>.
m Enable moderation. Only users with +v, +h, or +o m Enable moderation. Only users with +v, +h, or +o
@ -864,73 +869,89 @@ using their cloak when they quit.">
p Make channel private, hiding it in users' whoises p Make channel private, hiding it in users' whoises
and replacing it with * in /LIST. and replacing it with * in /LIST.
r Marks the channel as registered with Services r Marks the channel as registered with Services
(requires services account module). (requires the services account module).
s Make channel secret, hiding it in users' whoises s Make channel secret, hiding it in users' whoises
and /LIST. and /LIST.
t Prevents users without +h or +o from changing the t Prevents users without +h or +o from changing the
topic. topic.
u Makes the channel an auditorium; normal users only u Makes the channel an auditorium; normal users only
see themselves or themselves and the operators, see themselves or themselves and the operators,
while operators see all the users (requires while operators see all the users (requires the
auditorium module). auditorium module).
w <flag>:<banmask> Adds basic channel access controls of <flag> to w <flag>:<banmask> Adds basic channel access controls of <flag> to
<banmask>, via the +w listmode. <banmask>, via the +w listmode.
For example, +w o:R:Brain will op anyone identified For example, +w o:R:Brain will op anyone identified
to the account 'Brain' on join. to the account 'Brain' on join.
(requires autoop module) (requires the autoop module)
z Blocks non-SSL clients from joining the channel. z Blocks non-SSL clients from joining the channel.
A Allows anyone to invite users to the channel A Allows anyone to invite users to the channel
(normally only chanops can invite, requires (normally only chanops can invite, requires
allowinvite module). the allowinvite module).
B Blocks messages with too many capital letters, B Blocks messages with too many capital letters,
as determined by the network configuration as determined by the network configuration
(requires blockcaps module). (requires the blockcaps module).
C Blocks any CTCPs to the channel (requires noctcp C Blocks any CTCPs to the channel (requires the
module). noctcp module).
D Delays join messages from users until they D Delays join messages from users until they message
message the channel (requires delayjoin module). the channel (requires the delayjoin module).
E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages. E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages.
Kicks as default, blocks with ~ and bans with * Kicks as default, blocks with ~ and bans with *
The last two parameters are optional. The last two parameters are optional.
F <changes>:<sec> Blocks nick changes when they equal or exceed the F <changes>:<sec> Blocks nick changes when they equal or exceed the
specified rate (requires nickflood module). specified rate (requires the nickflood module).
G Censors messages to the channel based on the G Censors messages to the channel based on the
network configuration (requires censor module). network configuration (requires the censor module).
H <num>:<duration> Displays the last <num> lines of chat to joining H <num>:<duration> Displays the last <num> lines of chat to joining
users. <duration> is the maximum time to keep users. <duration> is the maximum time to keep
lines in the history buffer (requires chanhistory lines in the history buffer (requires the
module). chanhistory module).
J <seconds> Prevents rejoin after kick for the specified J <seconds> Prevents rejoin after kick for the specified
number of seconds. This prevents auto-rejoin number of seconds. This prevents auto-rejoin
(requires kicknorejoin module). (requires the kicknorejoin module).
K Blocks /KNOCK on the channel. K Blocks /KNOCK on the channel.
L <channel> If the channel reaches its limit set by +l, L <channel> If the channel reaches its limit set by +l,
redirect users to <channel> (requires redirect redirect users to <channel> (requires the
module). redirect module).
M Blocks unregistered users from speaking (requires M Blocks unregistered users from speaking (requires
services account module). the services account module).
N Prevents users on the channel from changing nick N Prevents users on the channel from changing nick
(requires nonicks module). (requires the nonicks module).
O Channel is IRCops only (can only be set by IRCops, O Channel is IRCops only (can only be set by IRCops,
requires operchans module). requires the operchans module).
P Makes the channel permanent; Bans, invites, the P Makes the channel permanent; Bans, invites, the
topic, modes, and such will not be lost when it topic, modes, and such will not be lost when it
empties (can only be set by IRCops, requires empties (can only be set by IRCops, requires
permchannels module). the permchannels module).
Q Only ulined servers and their users can kick Q Only ulined servers and their users can kick
(requires nokicks module) (requires the nokicks module)
R Blocks unregistered users from joining (requires R Blocks unregistered users from joining (requires
services account module). the services account module).
S Strips mIRC color codes from messages to the S Strips formatting codes from messages to the
channel (requires stripcolor module). channel (requires the stripcolor module).
T Blocks /NOTICEs to the channel from users who are T Blocks /NOTICEs to the channel from users who are
not at least halfop (requires nonotice module). not at least halfop (requires the nonotice module).
X <type>:<status> Makes users of <status> or higher exempt to the
specified restriction <type>. For example: flood:h
(requires the exemptchanops module).
Possible restriction types to exempt with +X are:
g <mask> Blocks messages matching the given glob mask auditorium-see Permission required to see the full user list of
(requires chanfilter module). a +u channel (requires the auditorium module).
X <mode> Makes channel operators immune to the specified auditorium-vis Permission required to be visible in a +u channel
restrictive mode (requires exemptchanops module). (requires the auditorium module).
blockcaps Channel mode +B
blockcolor Channel mode +c
censor Channel mode +G
filter Channel mode +g
flood Channel mode +f
nickflood Channel mode +F
noctcp Channel mode +C
nonick Channel mode +N
nonotice Channel mode +T
regmoderated Channel mode +M
stripcolor Channel mode +S
topiclock Channel mode +t
------------- -------------
NOTE: A large number of these modes are dependent upon server-side modules NOTE: A large number of these modes are dependent upon server-side modules
@ -991,30 +1012,25 @@ Note that all /STATS use is broadcast to online IRC operators.">
A Allows receipt of remote announcement messages. A Allows receipt of remote announcement messages.
c Allows receipt of local connect messages. c Allows receipt of local connect messages.
C Allows receipt of remote connect messages. C Allows receipt of remote connect messages.
d Allows receipt of general (and sometimes random) debug d Allows receipt of general (and sometimes random) debug messages.
messages.
f Allows receipt of flooding notices. f Allows receipt of flooding notices.
g Allows receipt of globops (requires globops module). g Allows receipt of globops (requires the globops module).
j Allows receipt of channel creation notices (requires j Allows receipt of channel creation notices (requires the chancreate module).
chancreate module). J Allows receipt of remote channel creation notices (requires the chancreate module).
J Allows receipt of remote channel creation notices (requires
chancreate module).
k Allows receipt of local kill messages. k Allows receipt of local kill messages.
K Allows receipt of remote kill messages. K Allows receipt of remote kill messages.
l Allows receipt of local linking related l Allows receipt of local linking related messages.
messages. L Allows receipt of remote linking related messages.
L Allows receipt of remote linking related n See local nickname changes (requires the seenicks module).
messages. N See remote nickname changes (requires the seenicks modules).
n See local nickname changes (requires seenicks module). o Allows receipt of oper-up, oper-down, and oper-failure messages.
N See remote nickname changes (requires seenicks modules). O Allows receipt of remote oper-up, oper-down, and oper-failure messages.
o Allows receipt of oper-up, oper-down, and oper-failure
messages.
O Allows receipt of remote oper-up, oper-down, and oper-failure
messages.
q Allows receipt of local quit messages. q Allows receipt of local quit messages.
Q Allows receipt of remote quit messages. Q Allows receipt of remote quit messages.
r Allows receipt of local oper commands (requires the operlog module).
R Allows receipt of remote oper commands (requires the operlog module).
t Allows receipt of attempts to use /STATS (local and remote). t Allows receipt of attempts to use /STATS (local and remote).
v Allows receipt of oper-override notices (requires override module). v Allows receipt of oper-override notices (requires the override module).
x Allows receipt of local Xline notices (g/Z/q/k/e/R/shuns). x Allows receipt of local Xline notices (g/Z/q/k/e/R/shuns).
X Allows receipt of remote Xline notices (g/Z/q/k/e/R/shuns)."> X Allows receipt of remote Xline notices (g/Z/q/k/e/R/shuns).">
@ -1039,44 +1055,44 @@ setting +I <extban>.
Matching extbans: Matching extbans:
j:<channel> Matches anyone in the given channel. Does not support j:<channel> Matches anyone in the given channel. Does not support
wildcards (requires channelban module). wildcards (requires the channelban module).
n:<class> Matches users in a matching connect class (requires n:<class> Matches users in a matching connect class (requires the
classban module). classban module).
r:<realname> Matches users with a matching real name (requires r:<realname> Matches users with a matching real name (requires the
gecosban module). gecosban module).
s:<server> Matches users on a matching server (requires serverban s:<server> Matches users on a matching server (requires the
module). serverban module).
z:<certfp> Matches users with a matching SSL certificate fingerprint z:<certfp> Matches users having the given SSL certificate
(requires sslmodes module) fingerprint (requires the sslmodes module).
O:<opertype> Matches IRCops of a matching type, mostly useful as an O:<opertype> Matches IRCops of a matching type, mostly useful as an
an invite exception (requires operchans module). an invite exception (requires the operchans module).
R:<account> Matches users logged into a matching account (requires R:<account> Matches users logged into a matching account (requires
services account module). the services account module).
U:<banmask> Matches unregistered users matching the given banmask. U:<banmask> Matches unregistered users matching the given banmask.
(requires services account module). (requires the services account module).
Acting extbans: Acting extbans:
c:<banmask> Blocks any messages that contain color codes from c:<banmask> Blocks any messages that contain formatting codes from
matching users (requires blockcolor module). matching users (requires the blockcolor module).
m:<banmask> Blocks messages from matching users (requires muteban m:<banmask> Blocks messages from matching users (requires the muteban
module). Users with +v or above are not affected. module). Users with +v or above are not affected.
p:<banmask> Blocks part messages from matching users (requires p:<banmask> Blocks part messages from matching users (requires
nopartmsg module). the nopartmsg module).
A:<banmask> Blocks invites by matching users even when +A is set A:<banmask> Blocks invites by matching users even when +A is set
(requires allowinvite module). (requires the allowinvite module).
B:<banmask> Blocks all capital or nearly all capital messages from B:<banmask> Blocks all capital or nearly all capital messages from
matching users (requires blockcaps module). matching users (requires the blockcaps module).
C:<banmask> Blocks CTCPs from matching users (requires noctcp C:<banmask> Blocks CTCPs from matching users (requires the noctcp
module). module).
N:<banmask> Blocks nick changes from matching users (requires N:<banmask> Blocks nick changes from matching users (requires
nonicks module). the nonicks module).
Q:<banmask> Blocks kicks by matching users (requires nokicks Q:<banmask> Blocks kicks by matching users (requires the nokicks
module).
S:<banmask> Strips color/bold/underline from messages from matching
users (requires stripcolor module).
T:<banmask> Blocks notices from matching users (requires nonotice
module). module).
S:<banmask> Strips formatting codes from messages from matching
users (requires the stripcolor module).
T:<banmask> Blocks notices from matching users (requires the
nonotice module).
A ban given to an Acting extban may either be a nick!user@host mask A ban given to an Acting extban may either be a nick!user@host mask
(unless stated otherwise), matched against users as for a normal ban, (unless stated otherwise), matched against users as for a normal ban,
@ -1085,4 +1101,4 @@ or a Matching extban.
There is an additional special type of extended ban, a redirect ban: There is an additional special type of extended ban, a redirect ban:
Redirect n!u@h#channel will redirect the banned user to #channel Redirect n!u@h#channel will redirect the banned user to #channel
when they try to join (requires banredirect module)."> when they try to join (requires the banredirect module).">

View File

@ -74,79 +74,81 @@ LOCKSERV UNLOCKSERV">
---------- ----------
c Blocks private messages and notices from users who do c Blocks private messages and notices from users who do
not share a common channel with you (requires not share a common channel with you (requires the
commonchans module). commonchans module).
d Deaf mode. User will not receive any messages or notices d Deaf mode. User will not receive any messages or notices
from channels they are in (requires deaf module). from channels they are in (requires the deaf module).
g In combination with /ACCEPT, provides for server side g In combination with /ACCEPT, provides for server side
ignore (requires callerid module). ignore (requires the callerid module).
h Marks as 'available for help' in WHOIS (IRCop only, h Marks as 'available for help' in WHOIS (IRCop only,
requires helpop module). requires the helpop module).
i Makes invisible to /WHO if the user using /WHO is not in i Makes invisible to /WHO if the user using /WHO is not in
a common channel. a common channel.
k Prevents the user from being kicked from channels, or k Prevents the user from being kicked from channels, or
having op modes removed from them (services only, having op modes removed from them (services only,
requires servprotect module). requires the servprotect module).
o Marks as a IRC operator. o Marks as a IRC operator.
s <mask> Receives server notices specified by <mask> s <mask> Receives server notices specified by <mask>
(IRCop only). (IRCop only).
r Marks as a having a registered nickname r Marks as a having a registered nickname
(requires services account module). (requires the services account module).
w Receives wallops messages. w Receives wallops messages.
x Gives a cloaked hostname (requires cloaking module). x Gives a cloaked hostname (requires the cloaking module).
z Only allow private messages from SSL users (requires z Only allow private messages from SSL users (requires the
sslmode module). sslmode module).
B Marks as a bot (requires botmode module). B Marks as a bot (requires the botmode module).
G Censors messages sent to the user based on filters G Censors messages sent to the user based on filters
configured for the network (requires censor module). configured for the network (requires the censor module).
H Hides an oper's oper status from WHOIS (requires H Hides an oper's oper status from WHOIS (requires the
hideoper module). hideoper module).
I Hides a user's entire channel list in WHOIS from I Hides a user's entire channel list in WHOIS from
non-IRCops (requires hidechans module). non-IRCops (requires the hidechans module).
L Stops redirections done by m_redirect (mode must be L Stops redirections done by m_redirect (mode must be
enabled in the config). enabled in the config).
R Blocks private messages from unregistered users R Blocks private messages from unregistered users
(requires services account module). (requires the services account module).
S Strips mIRC color/bold/underline codes out of private S Strips formatting codes out of private messages
messages to the user (requires stripcolor module). to the user (requires the stripcolor module).
W Receives notification when a user uses WHOIS on them W Receives notification when a user uses WHOIS on them
(IRCop only, requires showwhois module)."> (IRCop only, requires the showwhois module).">
<helpop key="chmodes" value="Channel Modes <helpop key="chmodes" value="Channel Modes
------------- -------------
v <nickname> Gives voice to <nickname>, allowing them to speak v <nickname> Gives voice to <nickname>, allowing them to speak
while the channel is +m. while the channel is +m.
h <nickname> Gives halfop status to <nickname> (requires h <nickname> Gives halfop status to <nickname> (requires the
customprefix module). customprefix module).
o <nickname> Gives op status to <nickname>. o <nickname> Gives op status to <nickname>.
a <nickname> Gives protected status to <nickname>, preventing a <nickname> Gives protected status to <nickname>, preventing
them from them from being kicked (+q only, them from being kicked (+q only, requires the
requires customprefix module).
q <nickname> Gives owner status to <nickname>, preventing them
from being kicked (Services or only, requires
customprefix module). customprefix module).
q <nickname> Gives owner status to <nickname>, preventing them
from being kicked (Services or +q only, requires
the customprefix module).
b <hostmask> Bans <hostmask> from the channel. b <hostmask> Bans <hostmask> from the channel.
e <hostmask> Excepts <hostmask> from bans (requires e <hostmask> Excepts <hostmask> from bans (requires the
banexception module). banexception module).
I <hostmask> Excepts <hostmask> from +i, allowing matching I <hostmask> Excepts <hostmask> from +i, allowing matching
users to join while the channel is invite-only users to join while the channel is invite-only
(requires inviteexception module). (requires the inviteexception module).
c Blocks messages containing mIRC color codes c Blocks messages that contain formatting codes
(requires blockcolor module). (requires the blockcolor module).
d <time> Blocks messages to a channel from new users d <time> Blocks messages to a channel from new users
until they have been in the channel for <time> until they have been in the channel for <time>
seconds (requires delaymsg module). seconds (requires the delaymsg module).
f [*]<lines>:<sec> Kicks on text flood equal to or above the f [*]<lines>:<sec> Kicks on text flood equal to or above the
specified rate. With *, the user is banned specified rate. With *, the user is banned
(requires messageflood module). (requires the messageflood module).
g <mask> Blocks messages matching the given glob mask
(requires the chanfilter module).
i Makes the channel invite-only. i Makes the channel invite-only.
Users can only join if an operator Users can only join if an operator
uses /INVITE to invite them. uses /INVITE to invite them.
j <joins>:<sec> Limits joins to the specified rate (requires j <joins>:<sec> Limits joins to the specified rate (requires
joinflood module). the joinflood module).
k <key> Set the channel key (password) to <key>. k <key> Set the channel key (password) to <key>.
l <limit> Set the maximum allowed users to <limit>. l <limit> Set the maximum allowed users to <limit>.
m Enable moderation. Only users with +v, +h, or +o m Enable moderation. Only users with +v, +h, or +o
@ -156,73 +158,72 @@ LOCKSERV UNLOCKSERV">
p Make channel private, hiding it in users' whoises p Make channel private, hiding it in users' whoises
and replacing it with * in /LIST. and replacing it with * in /LIST.
r Marks the channel as registered with Services r Marks the channel as registered with Services
(requires services account module). (requires the services account module).
s Make channel secret, hiding it in users' whoises s Make channel secret, hiding it in users' whoises
and /LIST. and /LIST.
t Prevents users without +h or +o from changing the t Prevents users without +h or +o from changing the
topic. topic.
u Makes the channel an auditorium; normal users only u Makes the channel an auditorium; normal users only
see themselves or themselves and the operators, see themselves or themselves and the operators,
while operators see all the users (requires while operators see all the users (requires the
auditorium module). auditorium module).
w <flag>:<banmask> Adds basic channel access controls of <flag> to w <flag>:<banmask> Adds basic channel access controls of <flag> to
<banmask>, via the +w listmode. <banmask>, via the +w listmode.
For example, +w o:R:Brain will op anyone identified For example, +w o:R:Brain will op anyone identified
to the account 'Brain' on join. to the account 'Brain' on join.
(requires autoop module) (requires the autoop module)
z Blocks non-SSL clients from joining the channel. z Blocks non-SSL clients from joining the channel.
A Allows anyone to invite users to the channel A Allows anyone to invite users to the channel
(normally only chanops can invite, requires (normally only chanops can invite, requires
allowinvite module). the allowinvite module).
B Blocks messages with too many capital letters, B Blocks messages with too many capital letters,
as determined by the network configuration as determined by the network configuration
(requires blockcaps module). (requires the blockcaps module).
C Blocks any CTCPs to the channel (requires noctcp C Blocks any CTCPs to the channel (requires the
module). noctcp module).
D Delays join messages from users until they D Delays join messages from users until they message
message the channel (requires delayjoin module). the channel (requires the delayjoin module).
E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages. E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages.
Kicks as default, blocks with ~ and bans with * Kicks as default, blocks with ~ and bans with *
The last two parameters are optional. The last two parameters are optional.
F <changes>:<sec> Blocks nick changes when they equal or exceed the F <changes>:<sec> Blocks nick changes when they equal or exceed the
specified rate (requires nickflood module). specified rate (requires the nickflood module).
G Censors messages to the channel based on the G Censors messages to the channel based on the
network configuration (requires censor module). network configuration (requires the censor module).
H <num>:<duration> Displays the last <num> lines of chat to joining H <num>:<duration> Displays the last <num> lines of chat to joining
users. <duration> is the maximum time to keep users. <duration> is the maximum time to keep
lines in the history buffer (requires chanhistory lines in the history buffer (requires the
module). chanhistory module).
J <seconds> Prevents rejoin after kick for the specified J <seconds> Prevents rejoin after kick for the specified
number of seconds. This prevents auto-rejoin number of seconds. This prevents auto-rejoin
(requires kicknorejoin module). (requires the kicknorejoin module).
K Blocks /KNOCK on the channel. K Blocks /KNOCK on the channel.
L <channel> If the channel reaches its limit set by +l, L <channel> If the channel reaches its limit set by +l,
redirect users to <channel> (requires redirect redirect users to <channel> (requires the
module). redirect module).
M Blocks unregistered users from speaking (requires M Blocks unregistered users from speaking (requires
services account module). the services account module).
N Prevents users on the channel from changing nick N Prevents users on the channel from changing nick
(requires nonicks module). (requires the nonicks module).
O Channel is IRCops only (can only be set by IRCops, O Channel is IRCops only (can only be set by IRCops,
requires operchans module). requires the operchans module).
P Makes the channel permanent; Bans, invites, the P Makes the channel permanent; Bans, invites, the
topic, modes, and such will not be lost when it topic, modes, and such will not be lost when it
empties (can only be set by IRCops, requires empties (can only be set by IRCops, requires
permchannels module). the permchannels module).
Q Only ulined servers and their users can kick Q Only ulined servers and their users can kick
(requires nokicks module) (requires the nokicks module)
R Blocks unregistered users from joining (requires R Blocks unregistered users from joining (requires
services account module). the services account module).
S Strips mIRC color codes from messages to the S Strips formatting codes from messages to the
channel (requires stripcolor module). channel (requires the stripcolor module).
T Blocks /NOTICEs to the channel from users who are T Blocks /NOTICEs to the channel from users who are
not at least halfop (requires nonotice module). not at least halfop (requires the nonotice module).
X <type>:<status> Makes users of <status> or higher exempt to the
g <mask> Blocks messages matching the given glob mask specified restriction <type>. For example: flood:h
(requires chanfilter module). (requires the exemptchanops module).
X <mode> Makes channel operators immune to the specified
restrictive mode (requires exemptchanops module).
------------- -------------
NOTE: A large number of these modes are dependent upon server-side modules NOTE: A large number of these modes are dependent upon server-side modules
@ -236,30 +237,25 @@ help channel if you have any questions.">
A Allows receipt of remote announcement messages. A Allows receipt of remote announcement messages.
c Allows receipt of local connect messages. c Allows receipt of local connect messages.
C Allows receipt of remote connect messages. C Allows receipt of remote connect messages.
d Allows receipt of general (and sometimes random) debug d Allows receipt of general (and sometimes random) debug messages.
messages.
f Allows receipt of flooding notices. f Allows receipt of flooding notices.
g Allows receipt of globops (requires globops module). g Allows receipt of globops (requires the globops module).
j Allows receipt of channel creation notices (requires j Allows receipt of channel creation notices (requires the chancreate module).
chancreate module). J Allows receipt of remote channel creation notices (requires the chancreate module).
J Allows receipt of remote channel creation notices (requires
chancreate module).
k Allows receipt of local kill messages. k Allows receipt of local kill messages.
K Allows receipt of remote kill messages. K Allows receipt of remote kill messages.
l Allows receipt of local linking related l Allows receipt of local linking related messages.
messages. L Allows receipt of remote linking related messages.
L Allows receipt of remote linking related n See local nickname changes (requires the seenicks module).
messages. N See remote nickname changes (requires the seenicks modules).
n See local nickname changes (requires seenicks module). o Allows receipt of oper-up, oper-down, and oper-failure messages.
N See remote nickname changes (requires seenicks modules). O Allows receipt of remote oper-up, oper-down, and oper-failure messages.
o Allows receipt of oper-up, oper-down, and oper-failure
messages.
O Allows receipt of remote oper-up, oper-down, and oper-failure
messages.
q Allows receipt of local quit messages. q Allows receipt of local quit messages.
Q Allows receipt of remote quit messages. Q Allows receipt of remote quit messages.
r Allows receipt of local oper commands (requires the operlog module).
R Allows receipt of remote oper commands (requires the operlog module).
t Allows receipt of attempts to use /STATS (local and remote). t Allows receipt of attempts to use /STATS (local and remote).
v Allows receipt of oper-override notices (requires override module). v Allows receipt of oper-override notices (requires the override module).
x Allows receipt of local Xline notices (g/Z/q/k/e/R/shuns). x Allows receipt of local Xline notices (g/Z/q/k/e/R/shuns).
X Allows receipt of remote Xline notices (g/Z/q/k/e/R/shuns)."> X Allows receipt of remote Xline notices (g/Z/q/k/e/R/shuns).">
@ -280,44 +276,44 @@ setting +I <extban>.
Matching extbans: Matching extbans:
j:<channel> Matches anyone in the given channel. Does not support j:<channel> Matches anyone in the given channel. Does not support
wildcards (requires channelban module). wildcards (requires the channelban module).
n:<class> Matches users in a matching connect class (requires n:<class> Matches users in a matching connect class (requires
classban module). the classban module).
r:<realname> Matches users with a matching real name (requires r:<realname> Matches users with a matching real name (requires the
gecosban module). gecosban module).
s:<server> Matches users on a matching server (requires serverban s:<server> Matches users on a matching server (requires the
module). serverban module).
z:<certfp> Matches users having the given SSL certificate z:<certfp> Matches users having the given SSL certificate
fingerprint (requires sslmodes module). fingerprint (requires the sslmodes module).
O:<opertype> Matches IRCops of a matching type, mostly useful as an O:<opertype> Matches IRCops of a matching type, mostly useful as an
an invite exception (requires operchans module). an invite exception (requires the operchans module).
R:<account> Matches users logged into a matching account (requires R:<account> Matches users logged into a matching account (requires
services account module). the services account module).
U:<banmask> Matches unregistered users matching the given banmask. U:<banmask> Matches unregistered users matching the given banmask.
(requires services account module). (requires the services account module).
Acting extbans: Acting extbans:
c:<banmask> Blocks any messages that contain color codes from c:<banmask> Blocks any messages that contain formatting codes from
matching users (requires blockcolor module). matching users (requires the blockcolor module).
m:<banmask> Blocks messages from matching users (requires muteban m:<banmask> Blocks messages from matching users (requires the muteban
module). Users with +v or above are not affected. module). Users with +v or above are not affected.
p:<banmask> Blocks part messages from matching users (requires p:<banmask> Blocks part messages from matching users (requires
nopartmsg module). the nopartmsg module).
A:<banmask> Blocks invites by matching users even when +A is set A:<banmask> Blocks invites by matching users even when +A is set
(requires allowinvite module). (requires the allowinvite module).
B:<banmask> Blocks all capital or nearly all capital messages from B:<banmask> Blocks all capital or nearly all capital messages from
matching users (requires blockcaps module). matching users (requires the blockcaps module).
C:<banmask> Blocks CTCPs from matching users (requires noctcp C:<banmask> Blocks CTCPs from matching users (requires the noctcp
module). module).
N:<banmask> Blocks nick changes from matching users (requires N:<banmask> Blocks nick changes from matching users (requires
nonicks module). the nonicks module).
Q:<banmask> Blocks kicks by matching users (requires nokicks Q:<banmask> Blocks kicks by matching users (requires the nokicks
module).
S:<banmask> Strips color/bold/underline from messages from matching
users (requires stripcolor module).
T:<banmask> Blocks notices from matching users (requires nonotice
module). module).
S:<banmask> Strips formatting codes from messages from matching
users (requires the stripcolor module).
T:<banmask> Blocks notices from matching users (requires the
nonotice module).
A ban given to an Acting extban may either be a nick!user@host mask A ban given to an Acting extban may either be a nick!user@host mask
(unless stated otherwise), matched against users as for a normal ban, (unless stated otherwise), matched against users as for a normal ban,
@ -326,4 +322,4 @@ or a Matching extban.
There is an additional special type of extended ban, a redirect ban: There is an additional special type of extended ban, a redirect ban:
Redirect n!u@h#channel will redirect the banned user to #channel Redirect n!u@h#channel will redirect the banned user to #channel
when they try to join (requires banredirect module)."> when they try to join (requires the banredirect module).">

View File

@ -62,7 +62,7 @@
#<include executable="/path/to/executable parameters"> # #<include executable="/path/to/executable parameters"> #
# # # #
# Executable include example: # # Executable include example: #
#<include executable="/usr/bin/wget -q -O - http://example.com/inspircd.conf"> #<include executable="/usr/bin/wget -q -O - https://example.com/inspircd.conf">
# # # #
@ -241,7 +241,9 @@
# you only want to adjust sendq and a password # you only want to adjust sendq and a password
parent="main" parent="main"
# allow: What IP addresses/hosts to allow for this block. # allow: The IP address or hostname of clients that can use this
# class. You can specify either an exact match, a glob match, or
# a CIDR range here.
allow="203.0.113.*" allow="203.0.113.*"
# hash: the hash function this password is hashed with. Requires the # hash: the hash function this password is hashed with. Requires the
@ -330,7 +332,9 @@
# connect class inheriting. # connect class inheriting.
name="main" name="main"
# allow: What IP addresses/hosts to allow for this block. # allow: The IP address or hostname of clients that can use this
# class. You can specify either an exact match, a glob match, or
# a CIDR range here.
allow="*" allow="*"
# maxchans: Maximum number of channels a user in this class # maxchans: Maximum number of channels a user in this class
@ -452,7 +456,7 @@
# Example of an executable file include. Note this will be read on rehash, # Example of an executable file include. Note this will be read on rehash,
# not when the command is run. # not when the command is run.
#<execfiles motd="wget -O - http://www.example.com/motd.txt"> #<execfiles motd="wget -O - https://www.example.com/motd.txt">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-# DNS SERVER -#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-#-#-#-#-#-#-#-#-#-#-#-#-#-# DNS SERVER -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# If these values are not defined, InspIRCd uses the default DNS resolver # If these values are not defined, InspIRCd uses the default DNS resolver
@ -622,8 +626,38 @@
# link with servers running 2.0. Defaults to yes. # link with servers running 2.0. Defaults to yes.
allowzerolimit="no" allowzerolimit="no"
# exemptchanops: exemptions for channel access restrictions based on prefix. # exemptchanops: Allows users with with a status mode to be exempt
exemptchanops="nonick:v flood:o" # from various channel restrictions. Possible restrictions are:
# - auditorium-see Permission required to see the full user list of
# a +u channel (requires the auditorium module).
# - auditorium-vis Permission required to be visible in a +u channel
# (requires the auditorium module).
# - blockcaps Channel mode +B - blocks messages with too many capital
# letters (requires the blockcaps module).
# - blockcolor Channel mode +c - blocks messages with formatting codes
# (requires the blockcolor module).
# - censor Channel mode +G - censors messages based on the network
# configuration (requires the censor module).
# - filter Channel mode +g - blocks messages containing the given
# glob mask (requires the chanfilter module).
# - flood Channel mode +f - kicks (and bans) on text flood of a
# specified rate (requires the messageflood module).
# - nickflood Channel mode +F - blocks nick changes after a specified
# rate (requires the nickflood module).
# - noctcp Channel mode +C - blocks any CTCPs to the channel
# (requires the noctcp module).
# - nonick Channel mode +N - prevents users on the channel from
# changing nicks (requires the nonicks module).
# - nonotice Channel mode +T - blocks /NOTICEs to the channel
# (requires the nonotice module).
# - regmoderated Channel mode +M - blocks unregistered users from
# speaking (requires the services account module).
# - stripcolor Channel mode +S - strips formatting codes from
# messages (requires the stripcolor module).
# - topiclock Channel mode +t - limits changing the topic to (half)ops
# You can also configure this on a per-channel basis with a channel mode.
# See m_exemptchanops in modules.conf.example for more details.
exemptchanops="censor:o filter:o nickflood:o nonick:v regmoderated:o"
# invitebypassmodes: This allows /invite to bypass other channel modes. # invitebypassmodes: This allows /invite to bypass other channel modes.
# (Such as +k, +j, +l, etc.) # (Such as +k, +j, +l, etc.)

View File

@ -438,14 +438,14 @@
# that looks like the name of another channel on the network. # that looks like the name of another channel on the network.
#<module name="channames"> #<module name="channames">
<channames #<channames
# denyrange: characters or range of characters to deny in channel # denyrange: characters or range of characters to deny in channel
# names. # names.
denyrange="2,3" #denyrange="2,3"
# allowrange: characters or range of characters to specifically allow # allowrange: characters or range of characters to specifically allow
# in channel names. # in channel names.
allowrange=""> #allowrange="">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Channelban: Implements extended ban j:, which stops anyone already # Channelban: Implements extended ban j:, which stops anyone already
@ -765,9 +765,13 @@
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Exempt channel operators module: Provides support for allowing # # Exempt channel operators module: Provides support for allowing #
# channel operators to be exempt from some channel modes. Supported # # users of a specified channel status to be exempt from some channel #
# modes are blockcaps, noctcp, blockcolor, nickflood, flood, censor, # # restriction modes. Supported restrictions are #
# filter, regmoderated, nonick, nonotice, and stripcolor. # # blockcaps, blockcolor, censor, filter, flood, nickflood, noctcp, #
# nonick, nonotice, regmoderated, stripcolor, and topiclock. #
# See <options:exemptchanops> in inspircd.conf.example for a more #
# detailed list of the restriction modes that can be exempted. #
# These are settable using /mode #chan +X <restriction>:<status> #
#<module name="exemptchanops"> # #<module name="exemptchanops"> #
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
@ -869,7 +873,7 @@
# If you specify to use the helpop module, then specify below the # # If you specify to use the helpop module, then specify below the #
# path to the helpop.conf file. # # path to the helpop.conf file. #
# # # #
#<include file="examples/inspircd.helpop-full.example"> #<include file="examples/helpop-full.conf.example">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Hide chans module: Allows users to hide their channels list from non- # Hide chans module: Allows users to hide their channels list from non-

View File

@ -221,7 +221,7 @@ enum Implementation
I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite, I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite,
I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckChannelBan, I_OnExtBanCheck, I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckChannelBan, I_OnExtBanCheck,
I_OnChangeLocalUserHost, I_OnPreTopicChange, I_OnChangeLocalUserHost, I_OnPreTopicChange,
I_OnPostTopicChange, I_OnPostConnect, I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper,
I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete, I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin, I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass, I_OnBuildNeighborList, I_OnGarbageCollect, I_OnSetConnectClass,
@ -448,6 +448,11 @@ class CoreExport Module : public classbase, public usecountbase
*/ */
virtual void OnPostOper(User* user, const std::string &opername, const std::string &opertype); virtual void OnPostOper(User* user, const std::string &opername, const std::string &opertype);
/** Called after a user deopers locally.
* @param user The user who has deopered.
*/
virtual void OnPostDeoper(User* user);
/** Called whenever a user types /INFO. /** Called whenever a user types /INFO.
* The User will contain the information of the user who typed the command. Modules may use this * The User will contain the information of the user who typed the command. Modules may use this
* method to output their own credits in /INFO (which is the ircd's version of an about box). * method to output their own credits in /INFO (which is the ircd's version of an about box).

View File

@ -97,7 +97,7 @@ sub parse_url {
$mod->{description} = $1; $mod->{description} = $1;
} elsif (/^mask (.*)/) { } elsif (/^mask (.*)/) {
$mod->{mask} = $1; $mod->{mask} = $1;
} elsif (m#^source (http://\S+)#) { } elsif (/^source (\S+)/) {
parse_url $1; parse_url $1;
} else { } else {
print "Unknown line in $src: $_\n"; print "Unknown line in $src: $_\n";

View File

@ -82,6 +82,7 @@ ModResult Module::OnUserPreJoin(LocalUser*, Channel*, const std::string&, std::s
void Module::OnMode(User*, User*, Channel*, const Modes::ChangeList&, ModeParser::ModeProcessFlag, const std::string&) { DetachEvent(I_OnMode); } void Module::OnMode(User*, User*, Channel*, const Modes::ChangeList&, ModeParser::ModeProcessFlag, const std::string&) { DetachEvent(I_OnMode); }
void Module::OnOper(User*, const std::string&) { DetachEvent(I_OnOper); } void Module::OnOper(User*, const std::string&) { DetachEvent(I_OnOper); }
void Module::OnPostOper(User*, const std::string&, const std::string &) { DetachEvent(I_OnPostOper); } void Module::OnPostOper(User*, const std::string&, const std::string &) { DetachEvent(I_OnPostOper); }
void Module::OnPostDeoper(User*) { DetachEvent(I_OnPostDeoper); }
void Module::OnInfo(User*) { DetachEvent(I_OnInfo); } void Module::OnInfo(User*) { DetachEvent(I_OnInfo); }
ModResult Module::OnUserPreInvite(User*, User*, Channel*, time_t) { DetachEvent(I_OnUserPreInvite); return MOD_RES_PASSTHRU; } ModResult Module::OnUserPreInvite(User*, User*, Channel*, time_t) { DetachEvent(I_OnUserPreInvite); return MOD_RES_PASSTHRU; }
ModResult Module::OnUserPreMessage(User*, const MessageTarget&, MessageDetails&) { DetachEvent(I_OnUserPreMessage); return MOD_RES_PASSTHRU; } ModResult Module::OnUserPreMessage(User*, const MessageTarget&, MessageDetails&) { DetachEvent(I_OnUserPreMessage); return MOD_RES_PASSTHRU; }

View File

@ -146,6 +146,13 @@ class ModuleGeoIP : public Module, public Stats::EventListener, public Whois::Ev
return MOD_RES_DENY; return MOD_RES_DENY;
} }
void OnSetUserIP(LocalUser* user) CXX11_OVERRIDE
{
// If user has sent NICK/USER, re-set the ExtItem as this is likely CGI:IRC changing the IP
if (user->registered == REG_NICKUSER)
SetExt(user);
}
void OnWhois(Whois::Context& whois) CXX11_OVERRIDE void OnWhois(Whois::Context& whois) CXX11_OVERRIDE
{ {
// If the extban is disabled we don't expose users location. // If the extban is disabled we don't expose users location.

View File

@ -182,6 +182,21 @@ class BanRedirect : public ModeWatcher
redirects = new BanRedirectList; redirects = new BanRedirectList;
extItem.set(channel, redirects); extItem.set(channel, redirects);
} }
else
{
for (BanRedirectList::iterator redir = redirects->begin(); redir != redirects->end(); ++redir)
{
// Mimic the functionality used when removing the mode
if (irc::equals(redir->targetchan, mask[CHAN]) && irc::equals(redir->banmask, param))
{
// Make sure the +b handler will still set the right ban
param.append(mask[CHAN]);
// Silently ignore the duplicate and don't set metadata
// This still allows channel ops to set/unset a redirect ban to clear "ghost" redirects
return true;
}
}
}
/* Here 'param' doesn't have the channel on it yet */ /* Here 'param' doesn't have the channel on it yet */
redirects->push_back(BanRedirectEntry(mask[CHAN], param)); redirects->push_back(BanRedirectEntry(mask[CHAN], param));

View File

@ -230,7 +230,7 @@ class ModuleShun : public Module, public Stats::EventListener
else if ((command == "PART") && (parameters.size() > 1)) else if ((command == "PART") && (parameters.size() > 1))
{ {
/* same for PART */ /* same for PART */
parameters[1].clear(); parameters.pop_back();
} }
/* if we're here, allow the command. */ /* if we're here, allow the command. */

View File

@ -37,9 +37,11 @@ enum
class CommandSwhois : public Command class CommandSwhois : public Command
{ {
public: public:
LocalIntExt operblock;
StringExtItem swhois; StringExtItem swhois;
CommandSwhois(Module* Creator) CommandSwhois(Module* Creator)
: Command(Creator, "SWHOIS", 2, 2) : Command(Creator, "SWHOIS", 2, 2)
, operblock("swhois_operblock", ExtensionItem::EXT_USER, Creator)
, swhois("swhois", ExtensionItem::EXT_USER, Creator) , swhois("swhois", ExtensionItem::EXT_USER, Creator)
{ {
flags_needed = 'o'; syntax = "<nick> :<swhois>"; flags_needed = 'o'; syntax = "<nick> :<swhois>";
@ -70,6 +72,7 @@ class CommandSwhois : public Command
ServerInstance->SNO->WriteGlobalSno('a', "%s used SWHOIS to set %s's extra whois to '%s'", user->nick.c_str(), dest->nick.c_str(), parameters[1].c_str()); ServerInstance->SNO->WriteGlobalSno('a', "%s used SWHOIS to set %s's extra whois to '%s'", user->nick.c_str(), dest->nick.c_str(), parameters[1].c_str());
} }
operblock.set(user, 0);
if (parameters[1].empty()) if (parameters[1].empty())
swhois.unset(dest); swhois.unset(dest);
else else
@ -127,10 +130,32 @@ class ModuleSWhois : public Module, public Whois::LineEventListener
if (!swhois.length()) if (!swhois.length())
return; return;
cmd.operblock.set(user, 1);
cmd.swhois.set(user, swhois); cmd.swhois.set(user, swhois);
ServerInstance->PI->SendMetaData(user, "swhois", swhois); ServerInstance->PI->SendMetaData(user, "swhois", swhois);
} }
void OnPostDeoper(User* user) CXX11_OVERRIDE
{
std::string* swhois = cmd.swhois.get(user);
if (!swhois)
return;
if (!cmd.operblock.get(user))
return;
cmd.operblock.set(user, 0);
cmd.swhois.unset(user);
ServerInstance->PI->SendMetaData(user, "swhois", "");
}
void OnDecodeMetaData(Extensible* target, const std::string& extname, const std::string&) CXX11_OVERRIDE
{
User* dest = static_cast<User*>(target);
if (dest && (extname == "swhois"))
cmd.operblock.set(dest, 0);
}
Version GetVersion() CXX11_OVERRIDE Version GetVersion() CXX11_OVERRIDE
{ {
return Version("Provides the SWHOIS command which allows setting of arbitrary WHOIS lines", VF_OPTCOMMON | VF_VENDOR); return Version("Provides the SWHOIS command which allows setting of arbitrary WHOIS lines", VF_OPTCOMMON | VF_VENDOR);

View File

@ -114,7 +114,7 @@ class ModuleXLineDB : public Module
{ {
XLine* line = i->second; XLine* line = i->second;
stream << "LINE " << line->type << " " << line->Displayable() << " " stream << "LINE " << line->type << " " << line->Displayable() << " "
<< ServerInstance->Config->ServerName << " " << line->set_time << " " << line->source << " " << line->set_time << " "
<< line->duration << " :" << line->reason << std::endl; << line->duration << " :" << line->reason << std::endl;
} }
} }

View File

@ -458,6 +458,7 @@ void User::UnOper()
ModeHandler* opermh = ServerInstance->Modes->FindMode('o', MODETYPE_USER); ModeHandler* opermh = ServerInstance->Modes->FindMode('o', MODETYPE_USER);
this->SetMode(opermh, false); this->SetMode(opermh, false);
FOREACH_MOD(OnPostDeoper, (this));
} }
/* /*

View File

@ -589,10 +589,6 @@ void GLine::Apply(User* u)
bool ELine::Matches(User *u) bool ELine::Matches(User *u)
{ {
LocalUser* lu = IS_LOCAL(u);
if (lu && lu->exempt)
return false;
if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map)) if (InspIRCd::Match(u->ident, this->identmask, ascii_case_insensitive_map))
{ {
if (InspIRCd::MatchCIDR(u->GetRealHost(), this->hostmask, ascii_case_insensitive_map) || if (InspIRCd::MatchCIDR(u->GetRealHost(), this->hostmask, ascii_case_insensitive_map) ||