- Change any "-Line", ":Line", or "*line" to "-line" throughout
the X-line code, comments, and documentation.
- Add periods to the end of some notices.
- Correct a typo in the Q-line code comments.
- Update the filter module documentation (shun addition).
Co-authored-by: Robby <robby@chatbelgie.be>
29 files changed:
# reason="reason for filtering"
# action="action to take"
# flags="filter flags"
# reason="reason for filtering"
# action="action to take"
# flags="filter flags"
-# duration="optional length of gline">
+# duration="optional duration of the G-line, Z-line or shun">
#
# Valid actions for 'action' are:
#
#
# Valid actions for 'action' are:
#
# kill This disconnects the user, with the 'reason' parameter as
# the kill reason.
#
# kill This disconnects the user, with the 'reason' parameter as
# the kill reason.
#
-# gline G-LINE the user for 'duration' length of time. Durations may
+# gline G-line the user for 'duration' length of time. Durations may
# be specified using the notation 1y2d3h4m6s in a similar way to
# be specified using the notation 1y2d3h4m6s in a similar way to
-# other glines, omitting the duration or setting it to 0 makes
-# any glines set by this filter be permanent.
+# other G-lines, omitting the duration or setting it to 0 makes
+# any G-lines set by this filter be permanent.
-# zline Z-LINE the user for 'duration' length of time. Durations may
+# zline Z-line the user for 'duration' length of time. Durations may
# be specified using the notation 1y2d3h4m6s in a similar way to
# be specified using the notation 1y2d3h4m6s in a similar way to
-# other zlines, omitting the duration or setting it to 0 makes
-# any zlines set by this filter be permanent.
+# other Z-lines, omitting the duration or setting it to 0 makes
+# any Z-lines set by this filter be permanent.
+#
+# shun Shun the user for 'duration' length of time. Durations may
+# be specified using the notation 1y2d3h4m6s in a similar way to
+# other X-lines, omitting the duration or setting it to 0 makes
+# any shuns set by this filter be permanent.
+# Requires the shun module to be loaded.
#
# You can add filters from IRC using the /FILTER command. If you do this, they
# will be set globally to your entire network.
#
# You can add filters from IRC using the /FILTER command. If you do this, they
# will be set globally to your entire network.
This command will add a filter when more than one parameter is given,
for messages of the types specified by the flags, with the given
This command will add a filter when more than one parameter is given,
for messages of the types specified by the flags, with the given
-filter definition, action, duration (when the action is 'gline' or 'shun'),
-and reason.
+filter definition, action, duration (when the action is 'gline',
+'zline' or 'shun'), and reason.
The filter will take effect when a message of any type specified by
the flags and matching the definition is sent to the server, and
The filter will take effect when a message of any type specified by
the flags and matching the definition is sent to the server, and
and all relevant info
Silent Blocks message, but does not notify IRCops
Kill Kills the user
and all relevant info
Silent Blocks message, but does not notify IRCops
Kill Kills the user
-Gline Glines the user for the specified duration
-Zline Zlines the user for the specified duration
+Gline G-lines the user for the specified duration
+Zline Z-lines the user for the specified duration
Shun Shuns the user for the specified duration (requires the shun module)
Valid FILTER Flags
Shun Shuns the user for the specified duration (requires the shun module)
Valid FILTER Flags
unless the action is 'none', and is sent to the user when their text is
blocked by 'block' and 'silent' actions.
unless the action is 'none', and is sent to the user when their text is
blocked by 'block' and 'silent' actions.
-A gline duration may be specified in seconds, or in the format
-1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, 5
+A G-line, Z-line or shun duration may be specified in seconds, or in the
+format 1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours, 5
minutes and 6 seconds. All fields in this format are optional.
When only one parameter is provided (the filter pattern) the provided
minutes and 6 seconds. All fields in this format are optional.
When only one parameter is provided (the filter pattern) the provided
<helpop key="kline" value="/KLINE <user@host> [<duration> :<reason>]
<helpop key="kline" value="/KLINE <user@host> [<duration> :<reason>]
-Sets or removes a k-line (local host based ban) on a host and ident mask.
+Sets or removes a K-line (local host based ban) on a host and ident mask.
You must specify all three parameters to add a ban, and one parameter
to remove a ban (just the user@host section).
You must specify all three parameters to add a ban, and one parameter
to remove a ban (just the user@host section).
<helpop key="zline" value="/ZLINE <ipmask> [<duration> :<reason>]
<helpop key="zline" value="/ZLINE <ipmask> [<duration> :<reason>]
-Sets or removes a z-line (ip based ban) on an ip range mask.
+Sets or removes a Z-line (ip based ban) on an ip range mask.
You must specify all three parameters to add a ban, and one parameter
to remove a ban (just the ipmask).
You must specify all three parameters to add a ban, and one parameter
to remove a ban (just the ipmask).
<helpop key="qline" value="/QLINE <nickmask> [<duration> :<reason>]
<helpop key="qline" value="/QLINE <nickmask> [<duration> :<reason>]
-Sets or removes a q-line (nick based ban) on a nick mask.
+Sets or removes a Q-line (nick based ban) on a nick mask.
You must specify all three parameters to add a ban, and one parameter
to remove a ban (just the nickmask).
You must specify all three parameters to add a ban, and one parameter
to remove a ban (just the nickmask).
<helpop key="gline" value="/GLINE <user@host> [<duration> :<reason>]
<helpop key="gline" value="/GLINE <user@host> [<duration> :<reason>]
-Sets or removes a g-line (host based ban) on host mask.
+Sets or removes a G-line (host based ban) on host mask.
You must specify all three parameters to add a ban, and one
parameter to remove a ban (just the user@host section).
You must specify all three parameters to add a ban, and one
parameter to remove a ban (just the user@host section).
<helpop key="eline" value="/ELINE <user@host> [<duration> :<reason>]
<helpop key="eline" value="/ELINE <user@host> [<duration> :<reason>]
-Sets or removes a e-line (global ban exception) on host mask.
+Sets or removes a E-line (global ban exception) on host mask.
You must specify at least 3 parameters to add an exception, and one
parameter to remove an exception (just the user@host section).
You must specify at least 3 parameters to add an exception, and one
parameter to remove an exception (just the user@host section).
5 minutes and 6 seconds. All fields in this format are optional.
This command has a few important limitations. Bans on *@<ip> can only
5 minutes and 6 seconds. All fields in this format are optional.
This command has a few important limitations. Bans on *@<ip> can only
-be negated by an eline on *@<ip>, bans on *@<host> can be negated by
-elines on *@<ip>, or *@<host>, and bans on <ident>@* or <ident>@<host>
-can be negated by any eline that matches.">
+be negated by an E-line on *@<ip>, bans on *@<host> can be negated by
+E-lines on *@<ip>, or *@<host>, and bans on <ident>@* or <ident>@<host>
+can be negated by any E-line that matches.">
<helpop key="wallops" value="/WALLOPS <message>
<helpop key="wallops" value="/WALLOPS <message>
<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
-must specify all three parameters to add an rline, and one parameter
-to remove an rline (just the regex).
+Sets or removes an R-line (regex line) on a n!u@h\srealname mask. You
+must specify all three parameters to add an R-line, and one parameter
+to remove an R-line (just the regex).
The duration may be specified in seconds, or in the format
1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours,
The duration may be specified in seconds, or in the format
1y2w3d4h5m6s - meaning one year, two weeks, three days, 4 hours,
<helpop key="clearchan" value="/CLEARCHAN <channel> [<KILL|KICK|G|Z>] [<reason>]
<helpop key="clearchan" value="/CLEARCHAN <channel> [<KILL|KICK|G|Z>] [<reason>]
-Quits or kicks all non-opers from a channel, optionally G/Z-Lines them.
+Quits or kicks all non-opers from a channel, optionally G/Z-lines them.
Useful for quickly nuking bot channels.
The default method, KILL, simply disconnects the victims from the server,
Useful for quickly nuking bot channels.
The default method, KILL, simply disconnects the victims from the server,
-while methods G and Z also add G/Z-Lines for all the targets.
+while methods G and Z also add G/Z-lines for all the targets.
When used, the victims won't see each other getting kicked or quitting.">
When used, the victims won't see each other getting kicked or quitting.">
R Allows receipt of remote oper commands (requires the operlog module).
t Allows receipt of attempts to use /STATS (local and remote).
v Allows receipt of oper-override notices (requires the override module).
R Allows receipt of remote oper commands (requires the operlog module).
t Allows receipt of attempts to use /STATS (local and remote).
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 remote Xline notices (g/Z/q/k/e/R/shuns).">
+ x Allows receipt of local X-line notices (G/Z/Q/K/E/R/SHUN/CBan).
+ X Allows receipt of remote X-line notices (G/Z/Q/K/E/R/SHUN/CBan).">
######################
# EXTBANS #
######################
# EXTBANS #
R Allows receipt of remote oper commands (requires the operlog module).
t Allows receipt of attempts to use /STATS (local and remote).
v Allows receipt of oper-override notices (requires the override module).
R Allows receipt of remote oper commands (requires the operlog module).
t Allows receipt of attempts to use /STATS (local and remote).
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 remote Xline notices (g/Z/q/k/e/R/shuns).">
+ x Allows receipt of local X-line notices (G/Z/Q/K/E/R/SHUN/CBan).
+ X Allows receipt of remote X-line notices (G/Z/Q/K/E/R/SHUN/CBan).">
<helpop key="extbans" value="Extended Bans
----------
<helpop key="extbans" value="Extended Bans
----------
# when a remote whois (/WHOIS <nick> <nick>) is used.
#hideserver="*.example.com"
# when a remote whois (/WHOIS <nick> <nick>) is used.
#hideserver="*.example.com"
- # hidebans: If this value is set to yes, when a user is banned ([gkz]lined)
+ # hidebans: If this value is set to yes, when a user is banned ([KGZ]-lined)
# only opers will see the ban message when the user is removed
# from the server.
hidebans="no"
# only opers will see the ban message when the user is removed
# from the server.
hidebans="no"
<badhost host="root@*" reason="Don't IRC as root!">
<badhost host="*@198.51.100.0/24" reason="This subnet is bad.">
<badhost host="root@*" reason="Don't IRC as root!">
<badhost host="*@198.51.100.0/24" reason="This subnet is bad.">
-# exception: Hosts that are exempt from [kgz]lines.
+# exception: Hosts that are exempt from [KGZ]-lines.
<exception
# host: ident@hostname to exempt.
# Wildcards and CIDR (if you specify an IP) can be used.
<exception
# host: ident@hostname to exempt.
# Wildcards and CIDR (if you specify an IP) can be used.
#-#-#-#-#-#-#-#-#-#-#- INSANE BAN OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#-#
# #
#-#-#-#-#-#-#-#-#-#-#- INSANE BAN OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#-#
# #
-# This optional tag allows you to specify how wide a gline, eline, #
-# kline, zline or qline can be before it is forbidden from being #
-# set. By setting hostmasks="yes", you can allow all G, K, E lines, #
+# This optional tag allows you to specify how wide a G-line, E-line, #
+# K-line, Z-line or Q-line can be before it is forbidden from being #
+# set. By setting hostmasks="yes", you can allow all G-, K-, E-lines, #
# no matter how many users the ban would cover. This is not #
# no matter how many users the ban would cover. This is not #
-# recommended! By setting ipmasks="yes", you can allow all Z lines, #
+# recommended! By setting ipmasks="yes", you can allow all Z-lines, #
# no matter how many users these cover too. Needless to say we #
# don't recommend you do this, or, set nickmasks="yes", which will #
# no matter how many users these cover too. Needless to say we #
# don't recommend you do this, or, set nickmasks="yes", which will #
#<module name="classban">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#<module name="classban">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# Clear chan module: Allows opers to masskick, masskill or mass-G/ZLine
-# all users on a channel using /CLEARCHAN.
+# Clear chan module: Allows opers to masskick, masskill or
+# mass G/Z-line all users on a channel using /CLEARCHAN.
#<module name="clearchan">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#<module name="clearchan">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Connectban: Provides IP connection throttling. Any IP range that
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Connectban: Provides IP connection throttling. Any IP range that
-# connects too many times (configurable) in an hour is Z-Lined for a
+# connects too many times (configurable) in an hour is Z-lined for a
# (configurable) duration, and their count resets to 0.
#<module name="connectban">
#
# (configurable) duration, and their count resets to 0.
#<module name="connectban">
#
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Regular expression provider for glob or wildcard (?/*) matching.
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Regular expression provider for glob or wildcard (?/*) matching.
-# You must have at least 1 provider loaded to use the filter or rline
+# You must have at least 1 provider loaded to use the filter or R-line
# modules. This module has no additional requirements, as it uses the
# matching already present in InspIRCd core.
#<module name="regex_glob">
# modules. This module has no additional requirements, as it uses the
# matching already present in InspIRCd core.
#<module name="regex_glob">
# Regular expression provider for PCRE (Perl-Compatible Regular
# Expressions). You need libpcre installed to compile and load this
# module. You must have at least 1 provider loaded to use the filter or
# Regular expression provider for PCRE (Perl-Compatible Regular
# Expressions). You need libpcre installed to compile and load this
# module. You must have at least 1 provider loaded to use the filter or
#<module name="regex_pcre">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#<module name="regex_pcre">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Regular expression provider for POSIX regular expressions.
# You shouldn't need any additional libraries on a POSIX-compatible
# system (i.e.: any Linux, BSD, but not Windows). You must have at
# Regular expression provider for POSIX regular expressions.
# You shouldn't need any additional libraries on a POSIX-compatible
# system (i.e.: any Linux, BSD, but not Windows). You must have at
-# least 1 provider loaded to use filter or rline.
+# least 1 provider loaded to use the filter or R-line modules.
# On POSIX-compliant systems, regex syntax can be found by using the
# command: 'man 7 regex'.
#<module name="regex_posix">
# On POSIX-compliant systems, regex syntax can be found by using the
# command: 'man 7 regex'.
#<module name="regex_posix">
#<module name="restrictmsg">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#<module name="restrictmsg">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# R-Line module: Ban users through regular expression patterns.
+# R-line module: Ban users through regular expression patterns.
#<module name="rline">
#
#-#-#-#-#-#-#-#-#-#-#-#- RLINE CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
#<module name="rline">
#
#-#-#-#-#-#-#-#-#-#-#-#- RLINE CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
# useful under some situations, but *can* also use CPU with more users
# on a server) then set 'matchonnickchange' to yes.
# Also, this is where you set what Regular Expression engine is to be
# useful under some situations, but *can* also use CPU with more users
# on a server) then set 'matchonnickchange' to yes.
# Also, this is where you set what Regular Expression engine is to be
-# used. If you ever change it while running, all of your R-Lines will
-# be wiped. This is the regex engine used by all R-Lines set, and
+# used. If you ever change it while running, all of your R-lines will
+# be wiped. This is the regex engine used by all R-lines set, and
# regex_<engine> must be loaded, or rline will be non-functional
# until you load it or change the engine to one that is loaded.
#
#<rline matchonnickchange="yes" engine="pcre">
#
# regex_<engine> must be loaded, or rline will be non-functional
# until you load it or change the engine to one that is loaded.
#
#<rline matchonnickchange="yes" engine="pcre">
#
-# Generally, you will NOT want to use 'glob' here, as this turns
-# rline into just another gline. The exceptions are that rline will
+# Generally, you will NOT want to use 'glob' here, as this turns an
+# R-line into just another G-line. The exceptions are that R-lines will
# always use the full "nick!user@host realname" string, rather than only
# user@host, but beware that only the ? and * wildcards are available,
# and are the only way to specify where the space can occur if you do
# always use the full "nick!user@host realname" string, rather than only
# user@host, but beware that only the ? and * wildcards are available,
# and are the only way to specify where the space can occur if you do
#<module name="starttls">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#<module name="starttls">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# SVSHold module: Implements SVSHOLD. Like Q:Lines, but can only be #
+# SVSHold module: Implements SVSHOLD. Like Q-lines, but can only be #
# added/removed by Services. #
#<module name="svshold">
# SVSHOLD does not generate server notices by default, you can turn
# added/removed by Services. #
#<module name="svshold">
# SVSHOLD does not generate server notices by default, you can turn
# <wsorigin allow="https://*.example.com/">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# <wsorigin allow="https://*.example.com/">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# XLine database: Stores all *Lines (G/Z/K/R/any added by other modules)
+# XLine database: Stores all *-lines (G/Z/K/R/any added by other modules)
# in a file which is re-loaded on restart. This is useful
# for two reasons: it keeps bans so users may not evade them, and on
# bigger networks, server connections will take less time as there will
# in a file which is re-loaded on restart. This is useful
# for two reasons: it keeps bans so users may not evade them, and on
# bigger networks, server connections will take less time as there will
* @param ip The IP the item is for.
* @param type The type of ban cache item. std::string. .empty() means it's a negative match (user is allowed freely).
* @param reason The reason for the ban. Left .empty() if it's a negative match.
* @param ip The IP the item is for.
* @param type The type of ban cache item. std::string. .empty() means it's a negative match (user is allowed freely).
* @param reason The reason for the ban. Left .empty() if it's a negative match.
- * @param seconds Number of seconds before nuking the bancache entry, the default is a day. This might seem long, but entries will be removed as glines/etc expire.
+ * @param seconds Number of seconds before nuking the bancache entry, the default is a day. This might seem long, but entries will be removed as G-lines/etc expire.
*/
BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds = 0);
BanCacheHit *GetHit(const std::string &ip);
*/
BanCacheHit *AddHit(const std::string &ip, const std::string &type, const std::string &reason, time_t seconds = 0);
BanCacheHit *GetHit(const std::string &ip);
/** The number of seconds that the server clock can skip by before server operators are warned. */
time_t TimeSkipWarn;
/** The number of seconds that the server clock can skip by before server operators are warned. */
time_t TimeSkipWarn;
- /** True if we're going to hide ban reasons for non-opers (e.g. G-Lines,
- * K-Lines, Z-Lines)
+ /** True if we're going to hide ban reasons for non-opers (e.g. G-lines,
+ * K-lines, Z-lines)
- /** X-Line manager. Handles G/K/Q/E line setting, removal and matching
+ /** X-line manager. Handles G/K/Q/E-line setting, removal and matching
*/
unsigned int lastping:1;
*/
unsigned int lastping:1;
- /** This is true if the user matched an exception (E:Line). It is used to save time on ban checks.
+ /** This is true if the user matched an exception (E-line). It is used to save time on ban checks.
*/
unsigned int exempt:1;
*/
unsigned int exempt:1;
already_sent_t already_sent;
already_sent_t already_sent;
- /** Check if the user matches a G or K line, and disconnect them if they do.
- * @param doZline True if ZLines should be checked (if IP has changed since initial connect)
+ /** Check if the user matches a G- or K-line, and disconnect them if they do.
+ * @param doZline True if Z-lines should be checked (if IP has changed since initial connect)
* Returns true if the user matched a ban, false else.
*/
bool CheckLines(bool doZline = false);
/** Use this method to fully connect a user.
* Returns true if the user matched a ban, false else.
*/
bool CheckLines(bool doZline = false);
/** Use this method to fully connect a user.
- * This will send the message of the day, check G/K/E lines, etc.
+ * This will send the message of the day, check G/K/E-lines, etc.
-/** XLine is the base class for ban lines such as G lines and K lines.
+/** XLine is the base class for ban lines such as G-lines and K-lines.
* Modules may derive from this, and their xlines will automatically be
* handled as expected by any protocol modules (e.g. m_spanningtree will
* propogate them using AddLine). The process of translating a type+pattern
* Modules may derive from this, and their xlines will automatically be
* handled as expected by any protocol modules (e.g. m_spanningtree will
* propogate them using AddLine). The process of translating a type+pattern
}
/** Change creation time of an xline. Updates expiry
}
/** Change creation time of an xline. Updates expiry
- * to be after the creation time
+ * to be after the creation time.
*/
virtual void SetCreateTime(time_t created)
{
*/
virtual void SetCreateTime(time_t created)
{
virtual void Unset() { }
/** Called when the expiry message is to be displayed for the
virtual void Unset() { }
/** Called when the expiry message is to be displayed for the
- * line. Usually a line in the form 'expiring Xline blah, set by...'
+ * line. Usually a line in the form 'expiring X-line blah, set by...'
* see the DisplayExpiry methods of GLine, ELine etc.
*/
virtual void DisplayExpiry();
* see the DisplayExpiry methods of GLine, ELine etc.
*/
virtual void DisplayExpiry();
* e.g. '*\@foo' or '*baz*'. This must always return the full pattern
* in a form which can be used to construct an entire derived xline,
* even if it is stored differently internally (e.g. GLine stores the
* e.g. '*\@foo' or '*baz*'. This must always return the full pattern
* in a form which can be used to construct an entire derived xline,
* even if it is stored differently internally (e.g. GLine stores the
- * ident and host parts seperately but will still return ident\@host
+ * ident and host parts separately but will still return ident\@host
* for its Displayable() method).
*/
virtual const std::string& Displayable() = 0;
* for its Displayable() method).
*/
virtual const std::string& Displayable() = 0;
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
class CoreExport GLine : public XLine
{
public:
class CoreExport GLine : public XLine
{
public:
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
class CoreExport ELine : public XLine
{
public:
class CoreExport ELine : public XLine
{
public:
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
class CoreExport ZLine : public XLine
{
public:
class CoreExport ZLine : public XLine
{
public:
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
class CoreExport QLine : public XLine
{
public:
class CoreExport QLine : public XLine
{
public:
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
virtual ~XLineFactory() { }
};
virtual ~XLineFactory() { }
};
-/** XLineManager is a class used to manage glines, klines, elines, zlines and qlines,
+/** XLineManager is a class used to manage G-lines, K-lines, E-lines, Z-lines and Q-lines,
* or any other line created by a module. It also manages XLineFactory classes which
* can generate a specialized XLine for use by another module.
*/
* or any other line created by a module. It also manages XLineFactory classes which
* can generate a specialized XLine for use by another module.
*/
*/
IdentHostPair IdentSplit(const std::string &ident_and_host);
*/
IdentHostPair IdentSplit(const std::string &ident_and_host);
- /** Checks what users match e:lines and sets their ban exempt flag accordingly.
+ /** Checks what users match E-lines and sets their ban exempt flag accordingly.
/** Registers an xline factory.
* An xline factory is a class which when given a particular xline type,
* will generate a new XLine specialized to that type. For example if you
/** Registers an xline factory.
* An xline factory is a class which when given a particular xline type,
* will generate a new XLine specialized to that type. For example if you
- * pass the XLineFactory that handles glines some data it will return a
+ * pass the XLineFactory that handles G-lines some data it will return a
* pointer to a GLine, polymorphically represented as XLine. This is used where
* you do not know the full details of the item you wish to create, e.g. in a
* server protocol module like m_spanningtree, when you receive xlines from other
* pointer to a GLine, polymorphically represented as XLine. This is used where
* you do not know the full details of the item you wish to create, e.g. in a
* server protocol module like m_spanningtree, when you receive xlines from other
- user->WriteNotice("*** Target not found");
+ user->WriteNotice("*** Target not found.");
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for E-line");
+ user->WriteNotice("*** Invalid duration for E-line.");
return CMD_FAILURE;
}
ELine* el = new ELine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ih.first.c_str(), ih.second.c_str());
return CMD_FAILURE;
}
ELine* el = new ELine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ih.first.c_str(), ih.second.c_str());
- user->WriteNotice("*** E-Line for " + target + " already exists");
+ user->WriteNotice("*** E-line for " + target + " already exists.");
- user->WriteNotice("*** E-Line " + target + " not found in list, try /stats e");
+ user->WriteNotice("*** E-line " + target + " not found in list, try /stats e.");
- user->WriteNotice("*** Target not found");
+ user->WriteNotice("*** Target not found.");
else if (target.find('!') != std::string::npos)
{
else if (target.find('!') != std::string::npos)
{
- user->WriteNotice("*** G-Line cannot operate on nick!user@host masks");
+ user->WriteNotice("*** G-line cannot operate on nick!user@host masks.");
return CMD_FAILURE;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
return CMD_FAILURE;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for G-line");
+ user->WriteNotice("*** Invalid duration for G-line.");
return CMD_FAILURE;
}
GLine* gl = new GLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ih.first.c_str(), ih.second.c_str());
return CMD_FAILURE;
}
GLine* gl = new GLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ih.first.c_str(), ih.second.c_str());
- user->WriteNotice("** G-Line for " + target + " already exists");
+ user->WriteNotice("** G-line for " + target + " already exists.");
- user->WriteNotice("*** G-Line " + target + " not found in list, try /stats g.");
+ user->WriteNotice("*** G-line " + target + " not found in list, try /stats g.");
- user->WriteNotice("*** Target not found");
+ user->WriteNotice("*** Target not found.");
if (target.find('!') != std::string::npos)
{
if (target.find('!') != std::string::npos)
{
- user->WriteNotice("*** K-Line cannot operate on nick!user@host masks");
+ user->WriteNotice("*** K-line cannot operate on nick!user@host masks.");
return CMD_FAILURE;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
return CMD_FAILURE;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for K-line");
+ user->WriteNotice("*** Invalid duration for K-line.");
return CMD_FAILURE;
}
KLine* kl = new KLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ih.first.c_str(), ih.second.c_str());
return CMD_FAILURE;
}
KLine* kl = new KLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ih.first.c_str(), ih.second.c_str());
- user->WriteNotice("*** K-Line for " + target + " already exists");
+ user->WriteNotice("*** K-line for " + target + " already exists.");
- user->WriteNotice("*** K-Line " + target + " not found in list, try /stats k.");
+ user->WriteNotice("*** K-line " + target + " not found in list, try /stats k.");
if (parameters[0].find('@') != std::string::npos || parameters[0].find('!') != std::string::npos || parameters[0].find('.') != std::string::npos)
{
if (parameters[0].find('@') != std::string::npos || parameters[0].find('!') != std::string::npos || parameters[0].find('.') != std::string::npos)
{
- user->WriteNotice("*** A Q-Line only bans a nick pattern, not a nick!user@host pattern.");
+ user->WriteNotice("*** A Q-line only bans a nick pattern, not a nick!user@host pattern.");
return CMD_FAILURE;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
return CMD_FAILURE;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for Q-line");
+ user->WriteNotice("*** Invalid duration for Q-line.");
return CMD_FAILURE;
}
QLine* ql = new QLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), parameters[0].c_str());
return CMD_FAILURE;
}
QLine* ql = new QLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), parameters[0].c_str());
- user->WriteNotice("*** Q-Line for " + parameters[0] + " already exists");
+ user->WriteNotice("*** Q-line for " + parameters[0] + " already exists.");
- user->WriteNotice("*** Q-Line " + parameters[0] + " not found in list, try /stats q.");
+ user->WriteNotice("*** Q-line " + parameters[0] + " not found in list, try /stats q.");
{
if (target.find('!') != std::string::npos)
{
{
if (target.find('!') != std::string::npos)
{
- user->WriteNotice("*** You cannot include a nickname in a zline, a zline must ban only an IP mask");
+ user->WriteNotice("*** You cannot include a nickname in a Z-line, a Z-line must ban only an IP mask.");
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for Z-line");
+ user->WriteNotice("*** Invalid duration for Z-line.");
return CMD_FAILURE;
}
ZLine* zl = new ZLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ipaddr);
return CMD_FAILURE;
}
ZLine* zl = new ZLine(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), ipaddr);
- user->WriteNotice("*** Z-Line for " + std::string(ipaddr) + " already exists");
+ user->WriteNotice("*** Z-line for " + std::string(ipaddr) + " already exists.");
- user->WriteNotice("*** Z-Line " + target + " not found in list, try /stats Z.");
+ user->WriteNotice("*** Z-line " + target + " not found in list, try /stats Z.");
ModResult OnUserPreNick(LocalUser* user, const std::string& newnick) CXX11_OVERRIDE
{
ModResult OnUserPreNick(LocalUser* user, const std::string& newnick) CXX11_OVERRIDE
{
- // Check Q-Lines (for local nick changes only, remote servers have our Q-Lines to enforce themselves)
+ // Check Q-lines (for local nick changes only, remote servers have our Q-lines to enforce themselves)
XLine* xline = ServerInstance->XLines->MatchesLine("Q", newnick);
if (!xline)
return MOD_RES_PASSTHRU; // No match
XLine* xline = ServerInstance->XLines->MatchesLine("Q", newnick);
if (!xline)
return MOD_RES_PASSTHRU; // No match
- // A Q-Line matched the new nick, tell opers if the user is registered
+ // A Q-line matched the new nick, tell opers if the user is registered
if (user->registered == REG_ALL)
{
if (user->registered == REG_ALL)
{
- ServerInstance->SNO->WriteGlobalSno('a', "Q-Lined nickname %s from %s: %s",
+ ServerInstance->SNO->WriteGlobalSno('a', "Q-lined nickname %s from %s: %s",
newnick.c_str(), user->GetFullRealHost().c_str(), xline->reason.c_str());
}
newnick.c_str(), user->GetFullRealHost().c_str(), xline->reason.c_str());
}
class CommandEline : public Command
{
public:
class CommandEline : public Command
{
public:
- /** Constructor for eline.
+ /** Constructor for E-line.
*/
CommandEline(Module* parent);
*/
CommandEline(Module* parent);
class CommandGline : public Command
{
public:
class CommandGline : public Command
{
public:
- /** Constructor for gline.
+ /** Constructor for G-line.
*/
CommandGline(Module* parent);
*/
CommandGline(Module* parent);
class CommandKline : public Command
{
public:
class CommandKline : public Command
{
public:
- /** Constructor for kline.
+ /** Constructor for K-line.
*/
CommandKline(Module* parent);
*/
CommandKline(Module* parent);
- /** Constructor for qline.
+ /** Constructor for Q-line.
*/
CommandQline(Module* parent);
*/
CommandQline(Module* parent);
- /** Constructor for zline.
+ /** Constructor for Z-line.
*/
CommandZline(Module* parent);
*/
CommandZline(Module* parent);
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for CBan");
+ user->WriteNotice("*** Invalid duration for CBan.");
return CMD_FAILURE;
}
const char *reason = (parameters.size() > 2) ? parameters[2].c_str() : "No reason supplied";
return CMD_FAILURE;
}
const char *reason = (parameters.size() > 2) ? parameters[2].c_str() : "No reason supplied";
Version GetVersion() CXX11_OVERRIDE
{
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Gives /cban, aka C:lines. Think Q:lines, for channels.", VF_COMMON | VF_VENDOR);
+ return Version("Gives /cban, aka C-lines. Think Q-lines, for channels.", VF_COMMON | VF_VENDOR);
Version GetVersion() CXX11_OVERRIDE
{
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Adds /CLEARCHAN that allows opers to masskick, masskill or mass-G/ZLine users on a channel", VF_VENDOR|VF_OPTCOMMON);
+ return Version("Adds /CLEARCHAN that allows opers to masskick, masskill or mass G/Z-line users on a channel.", VF_VENDOR|VF_OPTCOMMON);
if (i->second >= threshold)
{
if (i->second >= threshold)
{
- // Create zline for set duration.
+ // Create Z-line for set duration.
ZLine* zl = new ZLine(ServerInstance->Time(), banduration, ServerInstance->Config->ServerName, banmessage, mask.str());
if (!ServerInstance->XLines->AddLine(zl, NULL))
{
ZLine* zl = new ZLine(ServerInstance->Time(), banduration, ServerInstance->Config->ServerName, banmessage, mask.str());
if (!ServerInstance->XLines->AddLine(zl, NULL))
{
ServerInstance->XLines->ApplyLines();
std::string maskstr = mask.str();
std::string timestr = InspIRCd::TimeString(zl->expiry);
ServerInstance->XLines->ApplyLines();
std::string maskstr = mask.str();
std::string timestr = InspIRCd::TimeString(zl->expiry);
- ServerInstance->SNO->WriteGlobalSno('x',"Module m_connectban added Z:line on *@%s to expire on %s: Connect flooding",
+ ServerInstance->SNO->WriteGlobalSno('x',"Module m_connectban added Z-line on %s to expire on %s: Connect flooding",
maskstr.c_str(), timestr.c_str());
ServerInstance->SNO->WriteGlobalSno('a', "Connect flooding from IP range %s (%d)", maskstr.c_str(), threshold);
connects.erase(i);
maskstr.c_str(), timestr.c_str());
ServerInstance->SNO->WriteGlobalSno('a', "Connect flooding from IP range %s (%d)", maskstr.c_str(), threshold);
connects.erase(i);
if (ServerInstance->XLines->AddLine(kl,NULL))
{
std::string timestr = InspIRCd::TimeString(kl->expiry);
if (ServerInstance->XLines->AddLine(kl,NULL))
{
std::string timestr = InspIRCd::TimeString(kl->expiry);
- ServerInstance->SNO->WriteGlobalSno('x',"K:line added due to DNSBL match on *@%s to expire on %s: %s",
+ ServerInstance->SNO->WriteGlobalSno('x', "K-line added due to DNSBL match on *@%s to expire on %s: %s",
them->GetIPString().c_str(), timestr.c_str(), reason.c_str());
ServerInstance->XLines->ApplyLines();
}
them->GetIPString().c_str(), timestr.c_str(), reason.c_str());
ServerInstance->XLines->ApplyLines();
}
if (ServerInstance->XLines->AddLine(gl,NULL))
{
std::string timestr = InspIRCd::TimeString(gl->expiry);
if (ServerInstance->XLines->AddLine(gl,NULL))
{
std::string timestr = InspIRCd::TimeString(gl->expiry);
- ServerInstance->SNO->WriteGlobalSno('x',"G:line added due to DNSBL match on *@%s to expire on %s: %s",
+ ServerInstance->SNO->WriteGlobalSno('x', "G-line added due to DNSBL match on *@%s to expire on %s: %s",
them->GetIPString().c_str(), timestr.c_str(), reason.c_str());
ServerInstance->XLines->ApplyLines();
}
them->GetIPString().c_str(), timestr.c_str(), reason.c_str());
ServerInstance->XLines->ApplyLines();
}
if (ServerInstance->XLines->AddLine(zl,NULL))
{
std::string timestr = InspIRCd::TimeString(zl->expiry);
if (ServerInstance->XLines->AddLine(zl,NULL))
{
std::string timestr = InspIRCd::TimeString(zl->expiry);
- ServerInstance->SNO->WriteGlobalSno('x',"Z:line added due to DNSBL match on %s to expire on %s: %s",
+ ServerInstance->SNO->WriteGlobalSno('x', "Z-line added due to DNSBL match on %s to expire on %s: %s",
them->GetIPString().c_str(), timestr.c_str(), reason.c_str());
ServerInstance->XLines->ApplyLines();
}
them->GetIPString().c_str(), timestr.c_str(), reason.c_str());
ServerInstance->XLines->ApplyLines();
}
else if (f->action == FA_GLINE)
{
GLine* gl = new GLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), "*", user->GetIPString());
else if (f->action == FA_GLINE)
{
GLine* gl = new GLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), "*", user->GetIPString());
- ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was glined because their message to %s matched %s (%s)",
+ ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was G-lined because their message to %s matched %s (%s)",
user->nick.c_str(), target.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(gl,NULL))
{
user->nick.c_str(), target.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(gl,NULL))
{
else if (f->action == FA_ZLINE)
{
ZLine* zl = new ZLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), user->GetIPString());
else if (f->action == FA_ZLINE)
{
ZLine* zl = new ZLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), user->GetIPString());
- ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was zlined because their message to %s matched %s (%s)",
+ ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was Z-lined because their message to %s matched %s (%s)",
user->nick.c_str(), target.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(zl,NULL))
{
user->nick.c_str(), target.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(zl,NULL))
{
}
if (f->action == FA_GLINE)
{
}
if (f->action == FA_GLINE)
{
- /* Note: We gline *@IP so that if their host doesnt resolve the gline still applies. */
+ /* Note: We G-line *@IP so that if their host doesn't resolve the G-line still applies. */
GLine* gl = new GLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), "*", user->GetIPString());
GLine* gl = new GLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), "*", user->GetIPString());
- ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was glined because their %s message matched %s (%s)",
+ ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was G-lined because their %s message matched %s (%s)",
user->nick.c_str(), command.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(gl,NULL))
user->nick.c_str(), command.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(gl,NULL))
if (f->action == FA_ZLINE)
{
ZLine* zl = new ZLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), user->GetIPString());
if (f->action == FA_ZLINE)
{
ZLine* zl = new ZLine(ServerInstance->Time(), f->duration, ServerInstance->Config->ServerName.c_str(), f->reason.c_str(), user->GetIPString());
- ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was zlined because their %s message matched %s (%s)",
+ ServerInstance->SNO->WriteGlobalSno('f', InspIRCd::Format("%s was Z-lined because their %s message matched %s (%s)",
user->nick.c_str(), command.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(zl,NULL))
user->nick.c_str(), command.c_str(), f->freeform.c_str(), f->reason.c_str()));
if (ServerInstance->XLines->AddLine(zl,NULL))
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
* @param s_time The set time
* @param d The duration of the xline
* @param src The sender of the xline
if (ServerInstance->XLines->AddLine(zl, NULL))
{
std::string timestr = InspIRCd::TimeString(zl->expiry);
if (ServerInstance->XLines->AddLine(zl, NULL))
{
std::string timestr = InspIRCd::TimeString(zl->expiry);
- ServerInstance->SNO->WriteToSnoMask('x', "Z-line added due to R-line match on *@%s%s%s: %s",
+ ServerInstance->SNO->WriteToSnoMask('x', "Z-line added due to R-line match on %s%s%s: %s",
zl->ipaddr.c_str(), zl->duration ? " to expire on " : "", zl->duration ? timestr.c_str() : "", zl->reason.c_str());
added_zline = true;
}
zl->ipaddr.c_str(), zl->duration ? " to expire on " : "", zl->duration ? timestr.c_str() : "", zl->reason.c_str());
added_zline = true;
}
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for R-line");
+ user->WriteNotice("*** Invalid duration for R-line.");
return CMD_FAILURE;
}
XLine *r = NULL;
return CMD_FAILURE;
}
XLine *r = NULL;
- user->WriteNotice("*** R-Line for " + parameters[0] + " already exists");
+ user->WriteNotice("*** R-line for " + parameters[0] + " already exists.");
- user->WriteNotice("*** R-Line " + parameters[0] + " not found in list, try /stats R.");
+ user->WriteNotice("*** R-line " + parameters[0] + " not found in list, try /stats R.");
if (!rxfactory)
{
if (newrxengine.empty())
if (!rxfactory)
{
if (newrxengine.empty())
- ServerInstance->SNO->WriteToSnoMask('a', "WARNING: No regex engine loaded - R-Line functionality disabled until this is corrected.");
+ ServerInstance->SNO->WriteToSnoMask('a', "WARNING: No regex engine loaded - R-line functionality disabled until this is corrected.");
- ServerInstance->SNO->WriteToSnoMask('a', "WARNING: Regex engine '%s' is not loaded - R-Line functionality disabled until this is corrected.", newrxengine.c_str());
+ ServerInstance->SNO->WriteToSnoMask('a', "WARNING: Regex engine '%s' is not loaded - R-line functionality disabled until this is corrected.", newrxengine.c_str());
ServerInstance->XLines->DelAll(f.GetType());
}
else if ((!initing) && (rxfactory.operator->() != factory))
{
ServerInstance->XLines->DelAll(f.GetType());
}
else if ((!initing) && (rxfactory.operator->() != factory))
{
- ServerInstance->SNO->WriteToSnoMask('a', "Regex engine has changed, removing all R-Lines");
+ ServerInstance->SNO->WriteToSnoMask('a', "Regex engine has changed, removing all R-lines.");
ServerInstance->XLines->DelAll(f.GetType());
}
ServerInstance->XLines->DelAll(f.GetType());
}
void OnUnloadModule(Module* mod) CXX11_OVERRIDE
{
void OnUnloadModule(Module* mod) CXX11_OVERRIDE
{
- // If the regex engine became unavailable or has changed, remove all rlines
+ // If the regex engine became unavailable or has changed, remove all R-lines.
if (!rxfactory)
{
ServerInstance->XLines->DelAll(f.GetType());
if (!rxfactory)
{
ServerInstance->XLines->DelAll(f.GetType());
{
if (!InspIRCd::Duration(parameters[1], duration))
{
{
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for SHUN");
+ user->WriteNotice("*** Invalid duration for SHUN.");
return CMD_FAILURE;
}
expr = parameters[2];
return CMD_FAILURE;
}
expr = parameters[2];
- user->WriteNotice("*** Shun for " + target + " already exists");
+ user->WriteNotice("*** Shun for " + target + " already exists.");
*/
void SendFJoins(Channel* c);
*/
void SendFJoins(Channel* c);
- /** Send G, Q, Z and E lines */
+ /** Send G-, Q-, Z- and E-lines */
void SendXLines();
/** Send all known information about a channel */
void SendXLines();
/** Send all known information about a channel */
public:
SVSHoldFactory() : XLineFactory("SVSHOLD") { }
public:
SVSHoldFactory() : XLineFactory("SVSHOLD") { }
+ /** Generate an SVSHOLD
*/
XLine* Generate(time_t set_time, unsigned long duration, const std::string& source, const std::string& reason, const std::string& xline_specific_mask) CXX11_OVERRIDE
{
*/
XLine* Generate(time_t set_time, unsigned long duration, const std::string& source, const std::string& reason, const std::string& xline_specific_mask) CXX11_OVERRIDE
{
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
unsigned long duration;
if (!InspIRCd::Duration(parameters[1], duration))
{
- user->WriteNotice("*** Invalid duration for SVSHOLD");
+ user->WriteNotice("*** Invalid duration for SVSHOLD.");
return CMD_FAILURE;
}
SVSHold* r = new SVSHold(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), parameters[0].c_str());
return CMD_FAILURE;
}
SVSHold* r = new SVSHold(ServerInstance->Time(), duration, user->nick.c_str(), parameters[2].c_str(), parameters[0].c_str());
Version GetVersion() CXX11_OVERRIDE
{
Version GetVersion() CXX11_OVERRIDE
{
- return Version("Implements SVSHOLD. Like Q:Lines, but can only be added/removed by Services.", VF_COMMON | VF_VENDOR);
+ return Version("Implements SVSHOLD. Like Q-lines, but can only be added/removed by Services.", VF_COMMON | VF_VENDOR);
EnableSnomask('q',"QUIT"); /* Local quit notices */
EnableSnomask('k',"KILL"); /* Kill notices */
EnableSnomask('o',"OPER"); /* Oper up/down notices */
EnableSnomask('q',"QUIT"); /* Local quit notices */
EnableSnomask('k',"KILL"); /* Kill notices */
EnableSnomask('o',"OPER"); /* Oper up/down notices */
- EnableSnomask('a',"ANNOUNCEMENT"); /* formerly WriteOpers() - generic notices to all opers */
- EnableSnomask('x',"XLINE"); /* Xline notice (g/z/q/k/e) */
+ EnableSnomask('a',"ANNOUNCEMENT"); /* formerly WriteOpers() - generic notices to all opers */
+ EnableSnomask('x',"XLINE"); /* X-line notices (G/Z/Q/K/E/R/SHUN/CBan) */
EnableSnomask('t',"STATS"); /* Local or remote stats request */
}
EnableSnomask('t',"STATS"); /* Local or remote stats request */
}
New->WriteNumeric(ERR_YOUREBANNEDCREEP, ServerInstance->Config->XLineMessage);
if (ServerInstance->Config->HideBans)
New->WriteNumeric(ERR_YOUREBANNEDCREEP, ServerInstance->Config->XLineMessage);
if (ServerInstance->Config->HideBans)
- this->QuitUser(New, b->Type + "-Lined", &b->Reason);
+ this->QuitUser(New, b->Type + "-lined", &b->Reason);
else
this->QuitUser(New, b->Reason);
return;
else
this->QuitUser(New, b->Reason);
return;
ServerInstance->XLines->CheckELines();
}
ServerInstance->XLines->CheckELines();
}
-// returns a pointer to the reason if a nickname matches a qline, NULL if it didnt match
+// returns a pointer to the reason if a nickname matches a Q-line, NULL if it didn't match
XLine* XLineManager::MatchesLine(const std::string &type, User* user)
{
XLine* XLineManager::MatchesLine(const std::string &type, User* user)
{
void XLine::DefaultApply(User* u, const std::string &line, bool bancache)
{
void XLine::DefaultApply(User* u, const std::string &line, bool bancache)
{
- const std::string banReason = line + "-Lined: " + reason;
+ const std::string banReason = line + "-lined: " + reason;
if (!ServerInstance->Config->XLineMessage.empty())
u->WriteNumeric(ERR_YOUREBANNEDCREEP, ServerInstance->Config->XLineMessage);
if (ServerInstance->Config->HideBans)
if (!ServerInstance->Config->XLineMessage.empty())
u->WriteNumeric(ERR_YOUREBANNEDCREEP, ServerInstance->Config->XLineMessage);
if (ServerInstance->Config->HideBans)
- ServerInstance->Users->QuitUser(u, line + "-Lined", &banReason);
+ ServerInstance->Users->QuitUser(u, line + "-lined", &banReason);
else
ServerInstance->Users->QuitUser(u, banReason);
else
ServerInstance->Users->QuitUser(u, banReason);
void QLine::Apply(User* u)
{
void QLine::Apply(User* u)
{
- /* Force to uuid on apply of qline, no need to disconnect any more :) */
+ /* Force to uuid on apply of Q-line, no need to disconnect anymore :) */
u->ChangeNick(u->uuid);
}
u->ChangeNick(u->uuid);
}
- /* When adding one eline, only check the one eline */
+ /* When adding one E-line, only check the one E-line */
const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers();
for (UserManager::LocalList::const_iterator u2 = list.begin(); u2 != list.end(); u2++)
{
const UserManager::LocalList& list = ServerInstance->Users.GetLocalUsers();
for (UserManager::LocalList::const_iterator u2 = list.begin(); u2 != list.end(); u2++)
{
{
bool onechar = (type.length() == 1);
ServerInstance->SNO->WriteToSnoMask('x', "Removing expired %s%s %s (set by %s %ld seconds ago): %s",
{
bool onechar = (type.length() == 1);
ServerInstance->SNO->WriteToSnoMask('x', "Removing expired %s%s %s (set by %s %ld seconds ago): %s",
- type.c_str(), (onechar ? "-Line" : ""), Displayable().c_str(), source.c_str(), (long)(ServerInstance->Time() - set_time), reason.c_str());
+ type.c_str(), (onechar ? "-line" : ""), Displayable().c_str(), source.c_str(), (long)(ServerInstance->Time() - set_time), reason.c_str());
}
const std::string& ELine::Displayable()
}
const std::string& ELine::Displayable()