]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Merge tag 'v2.0.26' into master.
authorPeter Powell <petpow@saberuk.com>
Sat, 21 Apr 2018 11:04:43 +0000 (12:04 +0100)
committerPeter Powell <petpow@saberuk.com>
Sun, 22 Apr 2018 12:02:19 +0000 (13:02 +0100)
14 files changed:
docs/conf/helpop-full.conf.example
docs/conf/helpop.conf.example
docs/conf/inspircd.conf.example
docs/conf/modules.conf.example
include/modules.h
modulemanager
src/modules.cpp
src/modules/extra/m_geoip.cpp
src/modules/m_banredirect.cpp
src/modules/m_shun.cpp
src/modules/m_swhois.cpp
src/modules/m_xline_db.cpp
src/users.cpp
src/xline.cpp

index aa63b6ebb3d53ea7c0b8fcd25fb5a36be06525e4..20e03d64a27000cdcc1e3077ffc5d31ceec3eff2 100644 (file)
@@ -2,6 +2,8 @@
 #  Helpop Standard  #
 #####################
 
+<config format="xml">
+
 <alias text="HELP" replace="HELPOP $2-">
 
 <helpop key="start" value="InspIRCd Help System
@@ -398,11 +400,12 @@ LOCKSERV       UNLOCKSERV">
 
 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,
 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>]
 
@@ -464,7 +467,7 @@ n    Block private and channel notices
 P    Block part messages
 q    Block quit messages
 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
 -    Does nothing, a non-op for when you do not want to specify any
      flags
@@ -740,7 +743,7 @@ Sends a message to all +w users.">
 
 <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
 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
-              not share a common channel with you (requires
+              not share a common channel with you (requires the
               commonchans module).
  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
-              ignore (requires callerid module).
+              ignore (requires the callerid module).
  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
               a common channel.
  k            Prevents the user from being kicked from channels, or
               having op modes removed from them (services only,
-              requires servprotect module).
+              requires the servprotect module).
  o            Marks as a IRC operator.
  s <mask>     Receives server notices specified by <mask>
               (IRCop only).
  r            Marks as a having a registered nickname
-              (requires services account module).
+              (requires the services account module).
  w            Receives wallops messages.
- x            Gives a cloaked hostname (requires cloaking module).
- z            Only allow private messages from SSL users (requires
+ x            Gives a cloaked hostname (requires the cloaking module).
+ z            Only allow private messages from SSL users (requires the
               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
-              configured for the network (requires censor module).
- H            Hides an oper's oper status from WHOIS (requires
+              configured for the network (requires the censor module).
+ H            Hides an oper's oper status from WHOIS (requires the
               hideoper module).
  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
               enabled in the config).
  R            Blocks private messages from unregistered users
-              (requires services account module).
- S            Strips mIRC color/bold/underline codes out of private
-              messages to the user (requires stripcolor module).
+              (requires the services account module).
+ S            Strips formatting codes out of private messages
+              to the user (requires the stripcolor module).
  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
 -------------
 
  v <nickname>       Gives voice to <nickname>, allowing them to speak
                     while the channel is +m.
- h <nickname>       Gives halfop status to <nickname> (requires
+ h <nickname>       Gives halfop status to <nickname> (requires the
                     customprefix module).
  o <nickname>       Gives op status to <nickname>.
  a <nickname>       Gives protected status to <nickname>, preventing
-                    them from them from being kicked (+q only,
-                    requires customprefix module).
- q <nickname>       Gives owner status to <nickname>, preventing them
-                    from being kicked (Services or only, requires
+                    them from being kicked (+q only, requires the
                     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.
- e <hostmask>       Excepts <hostmask> from bans (requires
+ e <hostmask>       Excepts <hostmask> from bans (requires the
                     banexception module).
  I <hostmask>       Excepts <hostmask> from +i, allowing matching
                     users to join while the channel is invite-only
-                    (requires inviteexception module).
+                    (requires the inviteexception module).
 
- c                  Blocks messages containing mIRC color codes
-                    (requires blockcolor module).
+ c                  Blocks messages that contain formatting codes
+                    (requires the blockcolor module).
  d <time>           Blocks messages to a channel from new users
                     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
                     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.
                     Users can only join if an operator
                     uses /INVITE to invite them.
  j <joins>:<sec>    Limits joins to the specified rate (requires
-                    joinflood module).
+                    the joinflood module).
  k <key>            Set the channel key (password) to <key>.
  l <limit>          Set the maximum allowed users to <limit>.
  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
                     and replacing it with * in /LIST.
  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
                     and /LIST.
  t                  Prevents users without +h or +o from changing the
                     topic.
  u                  Makes the channel an auditorium; normal users only
                     see themselves or themselves and the operators,
-                    while operators see all the users (requires
+                    while operators see all the users (requires the
                     auditorium module).
  w <flag>:<banmask> Adds basic channel access controls of <flag> to
                     <banmask>, via the +w listmode.
                     For example, +w o:R:Brain will op anyone identified
                     to the account 'Brain' on join.
-                    (requires autoop module)
+                    (requires the autoop module)
  z                  Blocks non-SSL clients from joining the channel.
 
  A                  Allows anyone to invite users to the channel
                     (normally only chanops can invite, requires
-                    allowinvite module).
+                    the allowinvite module).
  B                  Blocks messages with too many capital letters,
                     as determined by the network configuration
-                    (requires blockcaps module).
- C                  Blocks any CTCPs to the channel (requires noctcp
-                    module).
- D                  Delays join messages from users until they
-                    message the channel (requires delayjoin module).
+                    (requires the blockcaps module).
+ C                  Blocks any CTCPs to the channel (requires the
+                    noctcp module).
+ D                  Delays join messages from users until they message
+                    the channel (requires the delayjoin module).
  E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages.
                     Kicks as default, blocks with ~ and bans with *
                     The last two parameters are optional.
  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
-                    network configuration (requires censor module).
+                    network configuration (requires the censor module).
  H <num>:<duration> Displays the last <num> lines of chat to joining
                     users. <duration> is the maximum time to keep
-                    lines in the history buffer (requires chanhistory
-                    module).
+                    lines in the history buffer (requires the
+                    chanhistory module).
  J <seconds>        Prevents rejoin after kick for the specified
                     number of seconds. This prevents auto-rejoin
-                    (requires kicknorejoin module).
+                    (requires the kicknorejoin module).
  K                  Blocks /KNOCK on the channel.
  L <channel>        If the channel reaches its limit set by +l,
-                    redirect users to <channel> (requires redirect
-                    module).
+                    redirect users to <channel> (requires the
+                    redirect module).
  M                  Blocks unregistered users from speaking (requires
-                    services account module).
+                    the services account module).
  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,
-                    requires operchans module).
+                    requires the operchans module).
  P                  Makes the channel permanent; Bans, invites, the
                     topic, modes, and such will not be lost when it
                     empties (can only be set by IRCops, requires
-                    permchannels module).
+                    the permchannels module).
  Q                  Only ulined servers and their users can kick
-                    (requires nokicks module)
+                    (requires the nokicks module)
  R                  Blocks unregistered users from joining (requires
-                    services account module).
- S                  Strips mIRC color codes from messages to the
-                    channel (requires stripcolor module).
+                    the services account module).
+ S                  Strips formatting codes from messages to the
+                    channel (requires the stripcolor module).
  T                  Blocks /NOTICEs to the channel from users who are
-                    not at least halfop (requires nonotice module).
-
- g <mask>           Blocks messages matching the given glob mask
-                    (requires chanfilter module).
- X <mode>           Makes channel operators immune to the specified
-                    restrictive mode (requires exemptchanops 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:
+
+ 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
+ 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
@@ -991,30 +1012,25 @@ Note that all /STATS use is broadcast to online IRC operators.">
  A      Allows receipt of remote announcement messages.
  c      Allows receipt of local connect messages.
  C      Allows receipt of remote connect messages.
- d      Allows receipt of general (and sometimes random) debug
-        messages.
+ d      Allows receipt of general (and sometimes random) debug messages.
  f      Allows receipt of flooding notices.
- g      Allows receipt of globops (requires globops module).
- j      Allows receipt of channel creation notices (requires
-        chancreate module).
- J      Allows receipt of remote channel creation notices (requires
-        chancreate module).
+ g      Allows receipt of globops (requires the globops module).
+ j      Allows receipt of channel creation notices (requires the chancreate module).
+ J      Allows receipt of remote channel creation notices (requires the chancreate module).
  k      Allows receipt of local kill messages.
  K      Allows receipt of remote kill messages.
- l      Allows receipt of local linking related
-        messages.
- L      Allows receipt of remote linking related
-        messages.
- n      See local nickname changes (requires seenicks module).
- N      See remote nickname changes (requires seenicks modules).
- 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.
+ l      Allows receipt of local linking related messages.
+ L      Allows receipt of remote linking related messages.
+ n      See local nickname changes (requires the seenicks module).
+ N      See remote nickname changes (requires the seenicks modules).
+ 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 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).
- 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 remote Xline notices (g/Z/q/k/e/R/shuns).">
 
@@ -1039,44 +1055,44 @@ setting +I <extban>.
 Matching extbans:
 
  j:<channel>   Matches anyone in the given channel. Does not support
-               wildcards (requires channelban module).
- n:<class>     Matches users in a matching connect class (requires
+               wildcards (requires the channelban module).
+ n:<class>     Matches users in a matching connect class (requires 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).
- s:<server>    Matches users on a matching server (requires serverban
-               module).
- z:<certfp>    Matches users with a matching SSL certificate fingerprint
-               (requires sslmodes module)
+ s:<server>    Matches users on a matching server (requires the
+               serverban module).
+ z:<certfp>    Matches users having the given SSL certificate
+               fingerprint (requires the sslmodes module).
  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
-               services account module).
+               the services account module).
  U:<banmask>   Matches unregistered users matching the given banmask.
-               (requires services account module).
+               (requires the services account module).
 
 Acting extbans:
 
- c:<banmask>   Blocks any messages that contain color codes from
-               matching users (requires blockcolor module).
- m:<banmask>   Blocks messages from matching users (requires muteban
+ c:<banmask>   Blocks any messages that contain formatting codes from
+               matching users (requires the blockcolor module).
+ m:<banmask>   Blocks messages from matching users (requires the muteban
                module). Users with +v or above are not affected.
  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
-               (requires allowinvite module).
+               (requires the allowinvite module).
  B:<banmask>   Blocks all capital or nearly all capital messages from
-               matching users (requires blockcaps module).
- C:<banmask>   Blocks CTCPs from matching users (requires noctcp
+               matching users (requires the blockcaps module).
+ C:<banmask>   Blocks CTCPs from matching users (requires the noctcp
                module).
  N:<banmask>   Blocks nick changes from matching users (requires
-               nonicks module).
- Q:<banmask>   Blocks kicks by matching users (requires 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
+               the nonicks module).
+ Q:<banmask>   Blocks kicks by matching users (requires the nokicks
                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
 (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:
 
  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).">
index b38e4130e3ff0afaddf88b1ce7a35ba671e63b95..25253c1399726dbb59b4831850a0e5541acf6adf 100644 (file)
@@ -74,79 +74,81 @@ LOCKSERV       UNLOCKSERV">
 ----------
 
  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).
  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
-              ignore (requires callerid module).
+              ignore (requires the callerid module).
  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
               a common channel.
  k            Prevents the user from being kicked from channels, or
               having op modes removed from them (services only,
-              requires servprotect module).
+              requires the servprotect module).
  o            Marks as a IRC operator.
  s <mask>     Receives server notices specified by <mask>
               (IRCop only).
  r            Marks as a having a registered nickname
-              (requires services account module).
+              (requires the services account module).
  w            Receives wallops messages.
- x            Gives a cloaked hostname (requires cloaking module).
- z            Only allow private messages from SSL users (requires
+ x            Gives a cloaked hostname (requires the cloaking module).
+ z            Only allow private messages from SSL users (requires the
               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
-              configured for the network (requires censor module).
- H            Hides an oper's oper status from WHOIS (requires
+              configured for the network (requires the censor module).
+ H            Hides an oper's oper status from WHOIS (requires the
               hideoper module).
  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
               enabled in the config).
  R            Blocks private messages from unregistered users
-              (requires services account module).
- S            Strips mIRC color/bold/underline codes out of private
-              messages to the user (requires stripcolor module).
+              (requires the services account module).
+ S            Strips formatting codes out of private messages
+              to the user (requires the stripcolor module).
  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
 -------------
 
  v <nickname>       Gives voice to <nickname>, allowing them to speak
                     while the channel is +m.
- h <nickname>       Gives halfop status to <nickname> (requires
+ h <nickname>       Gives halfop status to <nickname> (requires the
                     customprefix module).
  o <nickname>       Gives op status to <nickname>.
  a <nickname>       Gives protected status to <nickname>, preventing
-                    them from them from being kicked (+q only,
-                    requires customprefix module).
- q <nickname>       Gives owner status to <nickname>, preventing them
-                    from being kicked (Services or only, requires
+                    them from being kicked (+q only, requires the
                     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.
- e <hostmask>       Excepts <hostmask> from bans (requires
+ e <hostmask>       Excepts <hostmask> from bans (requires the
                     banexception module).
  I <hostmask>       Excepts <hostmask> from +i, allowing matching
                     users to join while the channel is invite-only
-                    (requires inviteexception module).
+                    (requires the inviteexception module).
 
- c                  Blocks messages containing mIRC color codes
-                    (requires blockcolor module).
+ c                  Blocks messages that contain formatting codes
+                    (requires the blockcolor module).
  d <time>           Blocks messages to a channel from new users
                     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
                     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.
                     Users can only join if an operator
                     uses /INVITE to invite them.
  j <joins>:<sec>    Limits joins to the specified rate (requires
-                    joinflood module).
+                    the joinflood module).
  k <key>            Set the channel key (password) to <key>.
  l <limit>          Set the maximum allowed users to <limit>.
  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
                     and replacing it with * in /LIST.
  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
                     and /LIST.
  t                  Prevents users without +h or +o from changing the
                     topic.
  u                  Makes the channel an auditorium; normal users only
                     see themselves or themselves and the operators,
-                    while operators see all the users (requires
+                    while operators see all the users (requires the
                     auditorium module).
  w <flag>:<banmask> Adds basic channel access controls of <flag> to
                     <banmask>, via the +w listmode.
                     For example, +w o:R:Brain will op anyone identified
                     to the account 'Brain' on join.
-                    (requires autoop module)
+                    (requires the autoop module)
  z                  Blocks non-SSL clients from joining the channel.
 
  A                  Allows anyone to invite users to the channel
                     (normally only chanops can invite, requires
-                    allowinvite module).
+                    the allowinvite module).
  B                  Blocks messages with too many capital letters,
                     as determined by the network configuration
-                    (requires blockcaps module).
- C                  Blocks any CTCPs to the channel (requires noctcp
-                    module).
- D                  Delays join messages from users until they
-                    message the channel (requires delayjoin module).
+                    (requires the blockcaps module).
+ C                  Blocks any CTCPs to the channel (requires the
+                    noctcp module).
+ D                  Delays join messages from users until they message
+                    the channel (requires the delayjoin module).
  E [~*][lines]:[sec]{[:difference]}{[:backlog]} Allows blocking of similar messages.
                     Kicks as default, blocks with ~ and bans with *
                     The last two parameters are optional.
+
  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
-                    network configuration (requires censor module).
+                    network configuration (requires the censor module).
  H <num>:<duration> Displays the last <num> lines of chat to joining
                     users. <duration> is the maximum time to keep
-                    lines in the history buffer (requires chanhistory
-                    module).
+                    lines in the history buffer (requires the
+                    chanhistory module).
  J <seconds>        Prevents rejoin after kick for the specified
                     number of seconds. This prevents auto-rejoin
-                    (requires kicknorejoin module).
+                    (requires the kicknorejoin module).
  K                  Blocks /KNOCK on the channel.
  L <channel>        If the channel reaches its limit set by +l,
-                    redirect users to <channel> (requires redirect
-                    module).
+                    redirect users to <channel> (requires the
+                    redirect module).
  M                  Blocks unregistered users from speaking (requires
-                    services account module).
+                    the services account module).
  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,
-                    requires operchans module).
+                    requires the operchans module).
  P                  Makes the channel permanent; Bans, invites, the
                     topic, modes, and such will not be lost when it
                     empties (can only be set by IRCops, requires
-                    permchannels module).
+                    the permchannels module).
  Q                  Only ulined servers and their users can kick
-                    (requires nokicks module)
+                    (requires the nokicks module)
  R                  Blocks unregistered users from joining (requires
-                    services account module).
- S                  Strips mIRC color codes from messages to the
-                    channel (requires stripcolor module).
+                    the services account module).
+ S                  Strips formatting codes from messages to the
+                    channel (requires the stripcolor module).
  T                  Blocks /NOTICEs to the channel from users who are
-                    not at least halfop (requires nonotice module).
-
- g <mask>           Blocks messages matching the given glob mask
-                    (requires chanfilter module).
- X <mode>           Makes channel operators immune to the specified
-                    restrictive mode (requires exemptchanops 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).
 
 -------------
 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.
  c      Allows receipt of local connect messages.
  C      Allows receipt of remote connect messages.
- d      Allows receipt of general (and sometimes random) debug
-        messages.
+ d      Allows receipt of general (and sometimes random) debug messages.
  f      Allows receipt of flooding notices.
- g      Allows receipt of globops (requires globops module).
- j      Allows receipt of channel creation notices (requires
-        chancreate module).
- J      Allows receipt of remote channel creation notices (requires
-        chancreate module).
+ g      Allows receipt of globops (requires the globops module).
+ j      Allows receipt of channel creation notices (requires the chancreate module).
+ J      Allows receipt of remote channel creation notices (requires the chancreate module).
  k      Allows receipt of local kill messages.
  K      Allows receipt of remote kill messages.
- l      Allows receipt of local linking related
-        messages.
- L      Allows receipt of remote linking related
-        messages.
- n      See local nickname changes (requires seenicks module).
- N      See remote nickname changes (requires seenicks modules).
- 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.
+ l      Allows receipt of local linking related messages.
+ L      Allows receipt of remote linking related messages.
+ n      See local nickname changes (requires the seenicks module).
+ N      See remote nickname changes (requires the seenicks modules).
+ 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 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).
- 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 remote Xline notices (g/Z/q/k/e/R/shuns).">
 
@@ -280,44 +276,44 @@ setting +I <extban>.
 Matching extbans:
 
  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
-               classban module).
- r:<realname>  Matches users with a matching real name (requires
+               the classban module).
+ r:<realname>  Matches users with a matching real name (requires the
                gecosban module).
- s:<server>    Matches users on a matching server (requires serverban
-               module).
+ s:<server>    Matches users on a matching server (requires the
+               serverban module).
  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
-               an invite exception (requires operchans module).
+               an invite exception (requires the operchans module).
  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.
-               (requires services account module).
+               (requires the services account module).
 
 Acting extbans:
 
- c:<banmask>   Blocks any messages that contain color codes from
-               matching users (requires blockcolor module).
- m:<banmask>   Blocks messages from matching users (requires muteban
+ c:<banmask>   Blocks any messages that contain formatting codes from
+               matching users (requires the blockcolor module).
+ m:<banmask>   Blocks messages from matching users (requires the muteban
                module). Users with +v or above are not affected.
  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
-               (requires allowinvite module).
+               (requires the allowinvite module).
  B:<banmask>   Blocks all capital or nearly all capital messages from
-               matching users (requires blockcaps module).
- C:<banmask>   Blocks CTCPs from matching users (requires noctcp
+               matching users (requires the blockcaps module).
+ C:<banmask>   Blocks CTCPs from matching users (requires the noctcp
                module).
  N:<banmask>   Blocks nick changes from matching users (requires
-               nonicks module).
- Q:<banmask>   Blocks kicks by matching users (requires 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
+               the nonicks module).
+ Q:<banmask>   Blocks kicks by matching users (requires the nokicks
                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
 (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:
 
  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).">
index abb8830a96043d3e5e483e7e65c24ac077b997da..6a9b960e09c9b48990ad0c2b9292946de5f5b665 100644 (file)
@@ -62,7 +62,7 @@
 #<include executable="/path/to/executable parameters">                #
 #                                                                     #
 # 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">
 #                                                                     #
 
 
          # you only want to adjust sendq and a password
          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.*"
 
          # hash: the hash function this password is hashed with. Requires the
          # connect class inheriting.
          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="*"
 
          # maxchans: Maximum number of channels a user in this class
 
 # Example of an executable file include. Note this will be read on rehash,
 # 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 -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # If these values are not defined, InspIRCd uses the default DNS resolver
          # link with servers running 2.0. Defaults to yes.
          allowzerolimit="no"
 
-         # exemptchanops: exemptions for channel access restrictions based on prefix.
-         exemptchanops="nonick:v flood:o"
+         # exemptchanops: Allows users with with a status mode to be exempt
+         # 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.
          # (Such as +k, +j, +l, etc.)
index da72775e915435b343fd25f49a34c152c32d31d3..6955b2d74f7f397db1711f8d2d5d217ddc83bd79 100644 (file)
 # that looks like the name of another channel on the network.
 #<module name="channames">
 
-<channames
+#<channames
        # denyrange: characters or range of characters to deny in channel
        # names.
-       denyrange="2,3"
+       #denyrange="2,3"
 
        # allowrange: characters or range of characters to specifically allow
        # in channel names.
-       allowrange="">
+       #allowrange="">
 
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # Channelban: Implements extended ban j:, which stops anyone already
 
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # Exempt channel operators module: Provides support for allowing      #
-# channel operators to be exempt from some channel modes.  Supported  #
-# modes are blockcaps, noctcp, blockcolor, nickflood, flood, censor,  #
-# filter, regmoderated, nonick, nonotice, and stripcolor.             #
+# users of a specified channel status to be exempt from some channel  #
+# restriction modes. Supported restrictions are                       #
+# 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">                                        #
 
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # If you specify to use the helpop module, then specify below the     #
 # 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-
index 11bf6d55a8fdc692c9efc5b453251a0cae456818..082079cd98512213070159f912047932b3f00987 100644 (file)
@@ -221,7 +221,7 @@ enum Implementation
        I_OnUnloadModule, I_OnBackgroundTimer, I_OnPreCommand, I_OnCheckReady, I_OnCheckInvite,
        I_OnRawMode, I_OnCheckKey, I_OnCheckLimit, I_OnCheckBan, I_OnCheckChannelBan, I_OnExtBanCheck,
        I_OnChangeLocalUserHost, I_OnPreTopicChange,
-       I_OnPostTopicChange, I_OnPostConnect,
+       I_OnPostTopicChange, I_OnPostConnect, I_OnPostDeoper,
        I_OnChangeLocalUserGECOS, I_OnUserRegister, I_OnChannelPreDelete, I_OnChannelDelete,
        I_OnPostOper, I_OnSetAway, I_OnPostCommand, I_OnPostJoin,
        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);
 
+       /** Called after a user deopers locally.
+        * @param user The user who has deopered.
+        */
+       virtual void OnPostDeoper(User* user);
+
        /** Called whenever a user types /INFO.
         * 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).
index 3e4eee9c95fcd86d24a11dcf7f60a4bbff49e458..50a86a7f7cac40b993396f4e77a5dccd63160962 100755 (executable)
@@ -97,7 +97,7 @@ sub parse_url {
                        $mod->{description} = $1;
                } elsif (/^mask (.*)/) {
                        $mod->{mask} = $1;
-               } elsif (m#^source (http://\S+)#) {
+               } elsif (/^source (\S+)/) {
                        parse_url $1;
                } else {
                        print "Unknown line in $src: $_\n";
index 9359cac3755934c8db5b582d0fa2e3e10048c3bc..ab10d6ae13ead59f48d3f638f30a1ba29ada72e1 100644 (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::OnOper(User*, const std::string&) { DetachEvent(I_OnOper); }
 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); }
 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; }
index 7083be6acba44fb7b317142791a50a33202633ad..0d7c2eb70636a17a327f061365197d5efe6e83ed 100644 (file)
@@ -146,6 +146,13 @@ class ModuleGeoIP : public Module, public Stats::EventListener, public Whois::Ev
                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
        {
                // If the extban is disabled we don't expose users location.
index 4a4188757c23f31c5f59c59c065214ba88de984d..5ec75f13ce12d016f942f3bfdc650071bf806a4b 100644 (file)
@@ -182,6 +182,21 @@ class BanRedirect : public ModeWatcher
                                                redirects = new BanRedirectList;
                                                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 */
                                        redirects->push_back(BanRedirectEntry(mask[CHAN], param));
index 92c0b0bd0d36b1a2f01e042d8af254aa734c8d6b..3e378a74c3e0b2a04d8218737433fc1047e971cb 100644 (file)
@@ -230,7 +230,7 @@ class ModuleShun : public Module, public Stats::EventListener
                else if ((command == "PART") && (parameters.size() > 1))
                {
                        /* same for PART */
-                       parameters[1].clear();
+                       parameters.pop_back();
                }
 
                /* if we're here, allow the command. */
index c7c14e30cd7cecfb9d0821ec3a505971ea961aa3..d42649909babf9d48c0c6d612d00c14c664f37ab 100644 (file)
@@ -37,9 +37,11 @@ enum
 class CommandSwhois : public Command
 {
  public:
+       LocalIntExt operblock;
        StringExtItem swhois;
        CommandSwhois(Module* Creator)
                : Command(Creator, "SWHOIS", 2, 2)
+               , operblock("swhois_operblock", ExtensionItem::EXT_USER, Creator)
                , swhois("swhois", ExtensionItem::EXT_USER, Creator)
        {
                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());
                }
 
+               operblock.set(user, 0);
                if (parameters[1].empty())
                        swhois.unset(dest);
                else
@@ -127,10 +130,32 @@ class ModuleSWhois : public Module, public Whois::LineEventListener
                if (!swhois.length())
                        return;
 
+               cmd.operblock.set(user, 1);
                cmd.swhois.set(user, 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
        {
                return Version("Provides the SWHOIS command which allows setting of arbitrary WHOIS lines", VF_OPTCOMMON | VF_VENDOR);
index d220027fef5fdb5fe7cbf87e27ecfac92c6e7c02..fb0c81d2fb4186169c30cd78b4aa634aaf5b5ea8 100644 (file)
@@ -114,7 +114,7 @@ class ModuleXLineDB : public Module
                        {
                                XLine* line = i->second;
                                stream << "LINE " << line->type << " " << line->Displayable() << " "
-                                       << ServerInstance->Config->ServerName << " " << line->set_time << " "
+                                       << line->source << " " << line->set_time << " "
                                        << line->duration << " :" << line->reason << std::endl;
                        }
                }
index 5f31ff299e87d1fa0fd651141471c261efb9a7f0..1e2554107b1905c1d1a9bb1f30918e2c85330ebb 100644 (file)
@@ -458,6 +458,7 @@ void User::UnOper()
 
        ModeHandler* opermh = ServerInstance->Modes->FindMode('o', MODETYPE_USER);
        this->SetMode(opermh, false);
+       FOREACH_MOD(OnPostDeoper, (this));
 }
 
 /*
index dfd7e290301040afb1d8aa3f5ab203d017aefc51..cb4f011c0fffa76f8c8caa90d01c474a2a93b34f 100644 (file)
@@ -589,10 +589,6 @@ void GLine::Apply(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::MatchCIDR(u->GetRealHost(), this->hostmask, ascii_case_insensitive_map) ||