1#-#-#-#-#-#-#-#-#-#-#-#-#-  MODULE OPTIONS   -#-#-#-#-#-#-#-#-#-#-#-#-#
2#                                                                     #
3#  These tags define which modules will be loaded on startup by your  #
4#  server. Add modules without any paths. When you make your ircd     #
5#  using the 'make' command, all compiled modules will be moved into  #
6#  the folder you specified when you ran ./configure. The module tag  #
7#  automatically looks for modules in this location.                  #
8#  If you attempt to load a module outside of this location, either   #
9#  in the config, or via /LOADMODULE, you will receive an error.      #
10#                                                                     #
11#  By default, ALL modules are commented out. You must uncomment them #
12#  or add lines to your config to load modules. Please refer to       #
13#  https://docs.inspircd.org/3/modules for a list of modules and      #
14#  each modules link for any additional conf tags they require.       #
15#                                                                     #
16#    ____                _   _____ _     _       ____  _ _   _        #
17#   |  _ \ ___  __ _  __| | |_   _| |__ (_)___  | __ )(_) |_| |       #
18#   | |_) / _ \/ _` |/ _` |   | | | '_ \| / __| |  _ \| | __| |       #
19#   |  _ <  __/ (_| | (_| |   | | | | | | \__ \ | |_) | | |_|_|       #
20#   |_| \_\___|\__,_|\__,_|   |_| |_| |_|_|___/ |____/|_|\__(_)       #
21#                                                                     #
22# To link servers to InspIRCd, you MUST load the spanningtree module. #
23# If you don't do this, server links will NOT work at all.            #
24# This is by design, to allow for the implementation of other linking #
25# protocols in modules in the future. This module is at the bottom of #
26# this file.                                                          #
27#                                                                     #
28
29#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
30# MD5 module: Allows other modules to generate MD5 hashes, usually for
31# cryptographic uses and security.
32#
33# IMPORTANT:
34# Other modules such as cloaking and password_hash may rely on
35# this module being loaded to function.
36#
37#<module name="md5">
38
39#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
40# SHA256 module: Allows other modules to generate SHA256 hashes,
41# usually for cryptographic uses and security.
42#
43# IMPORTANT:
44# Other modules such as password_hash may rely on this module being
45# loaded to function. Certain modules such as spanningtree will
46# function without this module but when it is loaded their features will
47# be enhanced (for example the addition of HMAC authentication).
48#
49#<module name="sha256">
50
51#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
52# Abbreviation module: Provides the ability to abbreviate commands a-la
53# BBC BASIC keywords.
54#<module name="abbreviation">
55
56#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
57# Alias module: Allows you to define server-side command aliases.
58#<module name="alias">
59#
60# Set the 'prefix' for in-channel aliases (fantasy commands) to the
61# specified character. If not set, the default is "!".
62# If 'allowbots' is disabled, +B clients will not be able to use
63# fantasy commands. If not set, the default is no.
64#<fantasy prefix="!" allowbots="no">
65#
66#-#-#-#-#-#-#-#-#-#-#-  ALIAS DEFINITIONS  -#-#-#-#-#-#-#-#-#-#-#-#-#-#
67#                                                                     #
68# If you have the alias module loaded, you may also define aliases as #
69# shown below. They are commonly used to provide shortcut commands to #
70# services, however they are not limited to just this use.            #
71# An alias tag requires the following values to be defined in it:     #
72#                                                                     #
73# text        -      The text to detect as the actual command line.   #
74#                    Can't contain spaces, but case insensitive.      #
75#                    You may have multiple aliases with the same      #
76#                    command name (text="" value), however the first  #
77#                    found will be executed if its format value is    #
78#                    matched, or it has no format value. Aliases are  #
79#                    read from the top of the file to the bottom.     #
80#                                                                     #
81# usercommand -      If set to yes, the alias can be run simply as    #
82#                    /ALIASNAME. Defaults to yes.                     #
83#                                                                     #
84# channelcommand -   If set to yes, the alias can be used as an       #
85#                    in-channel alias or 'fantasy command', prefixed  #
86#                    by the fantasy prefix character, !aliasname by   #
87#                    default. Defaults to no.                         #
88#                                                                     #
89# format      -      If this is defined, the parameters of the alias  #
90#                    must match this glob pattern. For example if you #
91#                    want the first parameter to start with a # for   #
92#                    the alias to be executed, set format="#*" in the #
93#                    alias definition. Note that the :'s which are    #
94#                    part of IRC formatted lines will be preserved    #
95#                    for matching of this text. This value is         #
96#                    optional.                                        #
97#                                                                     #
98# replace     -      The text to replace 'text' with. Usually this    #
99#                    will be "PRIVMSG ServiceName :$2-" or similar.   #
100#                    You may use the variables $1 through $9 in the   #
101#                    replace string, which refer to the first through #
102#                    ninth word in the original string typed by the   #
103#                    user. You may also use $1- through $9- which     #
104#                    refer to the first word onwards, through to the  #
105#                    ninth word onwards, e.g. if the user types the   #
106#                    command "foo bar baz qux quz" then $3- will hold #
107#                    "baz qux quz" and $2 will contain "bar". You may #
108#                    also use the special variables: $nick, $ident,   #
109#                    $host and $vhost, and you may separate multiple  #
110#                    commands with a newline (which can be written in #
111#                    the file literally, or encoded as &nl; or \n     #
112#                    depending on the config format setting).         #
113#                                                                     #
114# requires    -      If you provide a value for 'requires' this means #
115#                    the given nickname MUST be online for the alias  #
116#                    to successfully trigger. If they are not, then   #
117#                    the user receives a 'no such nick' 401 numeric.  #
118#                                                                     #
119# stripcolor  -      If set to yes, the text from the user will be    #
120#                    stripped of color and format codes before        #
121#                    matching against 'text'.                         #
122#                                                                     #
123# uline       -      Setting this to yes will ensure that the user    #
124#                    given in 'requires' is also on a U-lined server, #
125#                    as well as actually being on the network. If the #
126#                    user is online, but not on a U-lined server,     #
127#                    then an oper alert is sent out as this is        #
128#                    possibly a sign of a user trying to impersonate  #
129#                    a service.                                       #
130#                                                                     #
131# operonly    -      If yes, this will make the alias oper only.      #
132#                    If a non-oper attempts to use the alias, it will #
133#                    appear to not exist.                             #
134#                                                                     #
135#
136# An example of using the format value to create an alias with two
137# different behaviours depending on the format of the parameters.
138#
139#<alias text="ID" format="#*" replace="SQUERY ChanServ :IDENTIFY $2 $3"
140#  requires="ChanServ" uline="yes">
141#
142#<alias text="ID" replace="SQUERY NickServ :IDENTIFY $2"
143#  requires="NickServ" uline="yes">
144#
145# This alias fixes a glitch in xchat 2.6.x and above and the way it
146# assumes IDENTIFY must be prefixed by a colon (:) character. It should
147# be placed ABOVE the default NICKSERV alias.
148#
149#<alias text="NICKSERV" format=":IDENTIFY *" replace="SQUERY NickServ :IDENTIFY $3-"
150#  requires="NickServ" uline="yes">
151#
152# You may also add aliases to trigger based on something said in a
153# channel, aka 'fantasy' commands, configured in the same manner as any
154# other alias, with usercommand="no" and channelcommand="yes" The
155# command must be preceded by the fantasy prefix when used.
156#
157#<alias text="CS" usercommand="no" channelcommand="yes"
158#  replace="SQUERY ChanServ :$1 $chan $2-" requires="ChanServ" uline="yes">
159#
160# This would be used as "!cs <command> <options>", with the channel
161# being automatically inserted after the command in the message to
162# ChanServ, assuming the fantasy prefix is "!".
163
164#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
165# Allowinvite module: Gives channel mode +A to allow all users to use
166# /INVITE, and extban A to deny invite from specific masks.
167#<module name="allowinvite">
168
169#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
170# Alltime module: Shows time on all connected servers at once.
171# This module is oper-only and provides /ALLTIME.
172# To use, ALLTIME must be in one of your oper class blocks.
173#<module name="alltime">
174
175#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
176# Anticaps module: Adds channel mode +B which allows you to punish
177# users that send overly capitalised messages to channels. Unlike the
178# blockcaps module this module is more flexible as it has more options
179# for punishment and allows channels to configure their own punishment
180# policies.
181#<module name="anticaps">
182#
183# You may also configure the characters which anticaps considers to be
184# lower case and upper case. Any characters not listed here are assumed
185# to be punctuation and will be ignored when counting:
186# <anticaps lowercase="abcdefghijklmnopqrstuvwxyz"
187#           uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ">
188
189#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
190# Argon2 module: Allows other modules to generate Argon2 hashes,
191# usually for cryptographic uses and security.
192# This module makes the algorithms argon2i, argon2d and argon2id
193# available for use.
194# Note that this module is extra, and must be enabled explicitly
195# to build. It depends on libargon2.
196#<module name="argon2">
197#
198# memory: Memory hardness, in KiB. E.g. 131072 KiB = 128 MiB.
199# iterations: Time hardness in iterations. (def. 3)
200# lanes: How many parallel chains can be run. (def. 1)
201# threads: Maximum amount of threads each invocation can spawn. (def. 1)
202# length: Output length in bytes. (def. 32)
203# saltlength: Salt length in bytes. (def. 16)
204# version: Algorithm version, 10 or 13. (def. 13)
205# The parameters can be customized as follows:
206#<argon2 iterations="3" memory="131074" length="32" saltlength="16">
207# Defines the parameters that are common for all the variants (i/d/id).
208# Can be overridden on individual basis, e.g.
209#<argon2i iterations="4">
210#<argon2d memory="131074"
211#<argon2id iterations="5" memory="262144" length="64" saltlength="32">
212
213#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
214# Auditorium module: Adds channel mode +u which makes everyone else
215# except you in the channel invisible, used for large meetings etc.
216#<module name="auditorium">
217#
218# Auditorium settings:
219#
220#<auditorium opvisible="no" opcansee="no" opercansee="yes">
221#
222# opvisible (auditorium-vis in exemptchanops):
223#   Show channel ops to all users
224# opcansee (auditorium-see in exemptchanops):
225#   Allow ops to see all joins/parts/kicks in the channel
226# opercansee:
227#   Allow opers (channels/auspex) to see see all joins/parts/kicks in the channel
228#
229# Exemptchanops can be used to adjust the level at which users become visible or
230# the level at which they can see the full member list of the channel.
231
232#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
233# Autoop module: Adds basic channel access controls via the +w listmode.
234# For example +w o:*!Attila@127.0.0.1 will op anyone matching that mask
235# on join. This can be combined with extbans, for example +w o:R:Brain
236# will op anyone identified to the account "Brain".
237# Another useful combination is with TLS (SSL) client certificate
238# fingerprints: +w h:z:72db600734bb9546c1bdd02377bc21d2a9690d48 will
239# give halfop to the user(s) having the given certificate.
240#<module name="autoop">
241
242#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
243# Ban except module: Adds support for channel ban exceptions (+e).
244#<module name="banexception">
245
246#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
247# Ban redirection module: Allows bans which redirect to a specified
248# channel. e.g. +b nick!ident@host#channelbanneduserissentto
249#<module name="banredirect">
250
251#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
252# bcrypt module: Allows other modules to generate bcrypt hashes,
253# usually for cryptographic uses and security.
254#<module name="bcrypt">
255#
256# rounds: Defines how many rounds the bcrypt function will run when
257# generating new hashes.
258#<bcrypt rounds="10">
259
260#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
261# Block amsg module: Attempt to block all usage of /amsg and /ame.
262#<module name="blockamsg">
263#
264#-#-#-#-#-#-#-#-#-#-#-  BLOCKAMSG CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
265#                                                                     #
266# If you have the blockamsg module loaded, you can configure it with  #
267# the <blockamsg> tag:                                                #
268#                                                                     #
269# delay          -   How much time between two messages to force them #
270#                    to be recognised as unrelated.                   #
271# action         -   Any of 'notice', 'noticeopers', 'silent', 'kill' #
272#                    or 'killopers'. Define how to take action when   #
273#                    a user uses /amsg or /ame.                       #
274#
275#<blockamsg delay="3" action="killopers">
276
277#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
278# Block CAPS module: Adds channel mode +B, blocks all-CAPS messages.
279#
280# NOTE: This module is deprecated and will be removed in a future version
281# of InspIRCd. You should use the anticaps module shown above instead.
282#<module name="blockcaps">
283#
284#-#-#-#-#-#-#-#-#-#-#-  BLOCKCAPS CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
285#                                                                     #
286# percent        - The percentage of a message which must be upper    #
287#                  case before it will be blocked.                    #
288#                                                                     #
289# minlen         - The minimum length a message must be before it     #
290#                  will be blocked.                                   #
291#                                                                     #
292# lowercase      - The characters which will be considered lower      #
293#                  case.                                              #
294#                                                                     #
295# uppercase      - The characters which will be considered upper      #
296#                  case.                                              #
297#
298#<blockcaps percent="50"
299#           minlen="5"
300#           lowercase="abcdefghijklmnopqrstuvwxyz"
301#           uppercase="ABCDEFGHIJKLMNOPQRSTUVWXYZ">
302
303#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
304# Block color module: Blocking color-coded messages with chan mode +c.
305#<module name="blockcolor">
306
307#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
308# Botmode module: Adds the user mode +B. If set on a user, it will
309# show that the user is a bot in /WHOIS.
310#<module name="botmode">
311
312#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
313# CallerID module: Adds user mode +g which activates hybrid-style
314# callerid: block all private messages unless you /ACCEPT first.
315#<module name="callerid">
316#
317#-#-#-#-#-#-#-#-#-#-#- CALLERID  CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#
318# maxaccepts     - Maximum number of entries a user can add to their  #
319#                  /ACCEPT list. Default is 30 entries.               #
320# tracknick      - Preserve /ACCEPT entries when a user changes nick? #
321#                  If no (the default), the user is removed from      #
322#                  everyone's accept list if their nickname changes.  #
323# cooldown       - Amount of time that must pass since the last       #
324#                  notification sent to a user before they can be     #
325#                  sent another. Default is 1 minute.                 #
326#<callerid maxaccepts="30"
327#          tracknick="no"
328#          cooldown="1m">
329
330#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
331# CAP module: Provides the CAP negotiation mechanism required by the
332# sasl, namesx, uhnames, and ircv3 modules.
333# It is also recommended for STARTTLS support in the starttls module.
334#<module name="cap">
335
336#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
337# CBAN module: Lets you disallow channels from being used at runtime.
338# This module is oper-only and provides /CBAN.
339# To use, CBAN must be in one of your oper class blocks.
340#<module name="cban">
341# CBAN does not allow glob channelmasks by default for compatibility
342# reasons. You can enable glob support by uncommenting the next line.
343#<cban glob="yes">
344
345#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
346# Censor module: Adds channel and user mode +G which block phrases that
347# are listed in the server bad words list.
348#<module name="censor">
349#
350#-#-#-#-#-#-#-#-#-#-#-  CENSOR  CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#-#
351#                                                                     #
352# If you have the censor module loaded you should specify one or more #
353# phrases to replace/block in user messages. The config for this is   #
354# formatted as follows:                                               #
355#                                                                     #
356# Replaces "eggplant" with "aubergine" within messages:               #
357# <badword text="eggplant" replace="aubergine">                       #
358#                                                                     #
359# Blocks messages that contain "fluffy capybaras":                    #
360#<badword text="fluffy capybaras">                                    #
361
362#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
363# CGI:IRC module: Enables forwarding the real IP address of a user from
364# a gateway to the IRC server.
365#<module name="cgiirc">
366#
367#-#-#-#-#-#-#-#-#-#-#-# CGIIRC  CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#-#
368#
369# If you use the cgiirc module then you must specify the gateways which
370# are authorised to forward IP/host information to your server. There
371# are currently two ways to do this:
372#
373# The webirc method is the recommended way to allow gateways to forward
374# IP/host information. When using this method the gateway sends a WEBIRC
375# message to the server on connection. For more details please read the
376# IRCv3 WebIRC specification at: https://ircv3.net/specs/extensions/webirc.html
377#
378# When using this method you must specify one or more wildcard masks
379# or CIDR ranges to allow gateway connections from and at least one of
380# either a TLS (SSL) client certificate fingerprint for the gateway or
381# a password to be sent in the WEBIRC command.
382#
383# <cgihost type="webirc"
384#          fingerprint="bd90547b59c1942b85f382bc059318f4c6ca54c5"
385#          mask="192.0.2.0/24 198.51.100.*">
386# <cgihost type="webirc"
387#          password="$2a$10$WEUpX9GweJiEF1WxBDSkeODBstIBMlVPweQTG9cKM8/Vd58BeM5cW"
388#          hash="bcrypt"
389#          mask="*.webirc.gateway.com">
390#
391# Alternatively if your gateway does not support sending the WEBIRC
392# message then you can configure InspIRCd to look for the client IP
393# address in the ident sent by the user. This is not recommended as it
394# only works with IPv4 connections.
395#
396# When using this method you must specify one or more wildcard masks
397# or CIDR ranges to allow gateway connections from. You can also
398# optionally configure the static value that replaces the IP in the
399# ident to avoid leaking the real IP address of gateway clients
400# (defaults to "gateway" if not set).
401#
402# <cgihost type="ident"
403#          mask="198.51.100.0/24 203.0.113.*"
404#          newident="wibble">
405# <cgihost type="ident"
406#          mask="*.ident.gateway.com"
407#          newident="wobble">
408#
409# By default gateway connections are logged to the +w snomask. If you
410# do not want this to happen then you can uncomment this to disable it.
411# <cgiirc opernotice="no">
412
413# IMPORTANT NOTE:
414# ---------------
415#
416# When you connect gateway clients, there are two connect classes which
417# apply to these clients. When the client initially connects, the connect
418# class which matches the gateway site's host is checked. Therefore you
419# must raise the maximum local/global clients for this IP as high as you
420# want to allow gateway clients. After the client has connected and is
421# determined to be a gateway client, the class which matches the client's
422# real IP is then checked. You may set this class to a lower value, so that
423# the real IP of the client can still be restricted to, for example, 3
424# sessions maximum.
425
426#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
427# Channel create module: Adds snomask +j, which will notify opers of
428# any new channels that are created.
429# This module is oper-only.
430#<module name="chancreate">
431
432#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
433# Channel filter module: Allows channel-op defined message filtering
434# using simple string matches (channel mode +g).
435#<module name="chanfilter">
436#
437# If hidemask is set to yes, the user will not be shown the mask when
438# their message is blocked.
439#
440# If maxlen is set then it defines the maximum length of a filter entry.
441#
442# If notifyuser is set to no, the user will not be notified when
443# their message is blocked.
444#<chanfilter hidemask="yes" maxlen="50" notifyuser="yes">
445
446#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
447# Channel history module: Displays the last 'X' lines of chat to a user
448# joining a channel with +H 'X:T' set; 'T' is the maximum time to keep
449# lines in the history buffer. Designed so that the new user knows what
450# the current topic of conversation is when joining the channel.
451#<module name="chanhistory">
452#
453#-#-#-#-#-#-#-#-#-#-#- CHANHISTORY CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#
454#                                                                     #
455# bots - Whether to send channel history to bots. Defaults to yes.    #
456#                                                                     #
457# enableumode - Whether to enable the +N user mode which allows users #
458#               to opt-out of receiving channel history. Defaults to  #
459#               no.                                                   #
460#                                                                     #
461# maxlines - The maximum number of lines of chat history to send to a #
462#            joining users. Defaults to 50.                           #
463#                                                                     #
464# prefixmsg - Whether to send an explanatory message to clients that  #
465#             don't support the chathistory batch type. Defaults to   #
466#             yes.                                                    #
467#                                                                     #
468#<chanhistory bots="yes"
469#             enableumode="yes"
470#             maxlines="50"
471#             prefixmsg="yes">
472
473#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
474# Channel logging module: Used to send snotice output to channels, to
475# allow staff to centrally monitor and discuss network activity.
476#
477# The "channel" field is where you want the messages to go, "snomasks"
478# is what snomasks you want to be sent to that channel. Multiple tags
479# are allowed.
480#<module name="chanlog">
481#<chanlog snomasks="AOcC" channel="#opers">
482
483#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
484# Channel names module: Allows disabling channels which have certain
485# characters in the channel name such as bold, colorcodes, etc. which
486# can be quite annoying and allow users to on occasion have a channel
487# that looks like the name of another channel on the network.
488#<module name="channames">
489
490#<channames
491	# denyrange: characters or range of characters to deny in channel
492	# names.
493	#denyrange="2,3"
494
495	# allowrange: characters or range of characters to specifically allow
496	# in channel names.
497	#allowrange="">
498
499#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
500# Channelban: Implements extended ban j:, which stops anyone already
501# in a channel matching a ban like +b j:#channel from joining.
502# It is also possible to ban based on their status in that channel,
503# like so: +b j:@#channel, this example prevents the ops from joining.
504# Note that by default wildcard characters * and ? are allowed in
505# channel names. To disallow them, load the channames module and
506# add characters 42 and 63 to denyrange (see above).
507#<module name="channelban">
508
509#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
510# Check module: Adds the /CHECK command.
511# Check is useful for looking up information on channels, users,
512# IP addresses and hosts.
513# This module is oper-only.
514# To use, CHECK must be in one of your oper class blocks.
515#<module name="check">
516
517#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
518# CHGHOST module: Adds the /CHGHOST command.
519# This module is oper-only.
520# To use, CHGHOST must be in one of your oper class blocks.
521# NOTE: Services will not be able to set vhosts on users if this module
522# isn't loaded. If you're planning on running services, you probably
523# want to load this.
524#<module name="chghost">
525#
526#-#-#-#-#-#-#-#-# /CHGHOST - /SETHOST  CONFIGURATION #-#-#-#-#-#-#-#-#
527# Optional - If you want to use special chars for hostnames you can  #
528# specify your own custom list of chars with the <hostname> tag:     #
529#                                                                    #
530# charmap        - A list of chars accepted as valid by the /CHGHOST #
531#                  and /SETHOST commands. Also note that the list is #
532#                  case-sensitive.                                   #
533#<hostname charmap="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.-_/0123456789">
534
535#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
536# CHGIDENT module: Adds the /CHGIDENT command.
537# This module is oper-only.
538# To use, CHGIDENT must be in one of your oper class blocks.
539#<module name="chgident">
540
541#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
542# CHGNAME module: Adds the /CHGNAME command.
543# This module is oper-only.
544# To use, CHGNAME must be in one of your oper class blocks.
545#<module name="chgname">
546#
547#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
548# Connection class ban module: Adds support for extban 'n' which
549# matches against the class name of the user's connection.
550# This module assumes that connection classes are named in a uniform
551# way on all servers of the network. Wildcards are accepted.
552#<module name="classban">
553
554#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
555# Clear chan module: Allows opers to masskick, masskill or
556# mass G/Z-line all users on a channel using /CLEARCHAN.
557#<module name="clearchan">
558
559#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
560# Cloaking module: Adds user mode +x and cloaking support.
561# Relies on the md5 module being loaded.
562# To cloak users when they connect, load the conn_umodes module and set
563# <connect:modes> to include the +x mode. The example <connect> tag
564# shows this. See the conn_umodes module for more information.
565#<module name="cloaking">
566#
567#-#-#-#-#-#-#-#-#-#-#- CLOAKING  CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#
568#                                                                     #
569# To use cloaking, you must define a cloak key, and optionally a      #
570# cloak prefix as shown below. The cloak key must be shared across    #
571# the network for consistent cloaking and must be at least thirty     #
572# characters long.                                                    #
573#                                                                     #
574# There are two methods of cloaking:                                  #
575#                                                                     #
576#   half           Cloak only the "unique" portion of a host; by      #
577#                  default show the last 2 parts of the domain,       #
578#                  /16 subnet of IPv4 or /48 subnet of the IPv6       #
579#                  address.                                           #
580#                  To change the number of shown parts, modify the    #
581#                  domainparts option.                                #
582#                                                                     #
583#   full           Cloak the users completely, using three slices for #
584#                  common CIDR bans (IPv4: /16, /24; IPv6: /48, /64). #
585#                                                                     #
586# The methods use a single key that can be any length of text.        #
587# An optional prefix may be specified to mark cloaked hosts.          #
588#                                                                     #
589# IMPORTANT: Changing these details will break all of your existing   #
590# bans. If you do not want this to happen you can define multiple     #
591# cloak tags. The first will be used for cloaking and the rest will   #
592# be used for checking if a user is banned in a channel.              #
593#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
594#
595#<cloak mode="half"
596#       key="changeme"
597#       domainparts="3"
598#       prefix="net-"
599#       ignorecase="no">
600#
601#<cloak mode="full"
602#       key="changeme"
603#       prefix="net-"
604#       ignorecase="no">
605
606#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
607# Clones module: Adds an oper command /CLONES for detecting cloned
608# users. Warning: This command may be resource intensive when it is
609# issued, use with care.
610# This module is oper-only.
611# To use, CLONES must be in one of your oper class blocks.
612#<module name="clones">
613
614#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
615# Codepage module: Allows using a custom 8-bit codepage for nicknames
616# and case mapping.
617#<module name="codepage">
618#
619# You should include one of the following files to set your codepage:
620#<include file="codepages/ascii.conf">
621#<include file="codepages/iso-8859-1.conf">
622#<include file="codepages/iso-8859-2.conf">
623#<include file="codepages/rfc1459.conf">
624#<include file="codepages/strict-rfc1459.conf">
625#
626# You can also define a custom codepage. For details on how to do this
627# please refer to the docs site:
628# https://docs.inspircd.org/3/modules/codepage
629
630#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
631# Common channels module: Adds user mode +c, which, when set, requires
632# that users must share a common channel with you to PRIVMSG or NOTICE
633# you.
634#<module name="commonchans">
635
636#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
637# Auto join on connect module: Allows you to force users to join one
638# or more channels automatically upon connecting to the server, or
639# join them in case they aren't on any channels after being online
640# for X seconds.
641#<module name="conn_join">
642#
643#-#-#-#-#-#-#-#-#-#-#-#- CONNJOIN CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
644#
645# If you have the conn_join module loaded, you can configure it below
646# or set autojoin="#chat,#help" in <connect> blocks.
647#
648# Join users immediately after connection to #one #two and #three.
649#<autojoin channel="#one,#two,#three">
650# Join users to #chat after 15 seconds if they aren't on any channels.
651#<autojoin channel="#chat" delay="15">
652
653#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
654# Set modes on connect module: When this module is loaded <connect>
655# blocks may have an optional modes="" value, which contains modes to
656# add or remove from users when they connect to the server.
657#<module name="conn_umodes">
658
659#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
660# Wait for PONG on connect module: Send a PING to all connecting users
661# and don't let them connect until they reply with a PONG.
662# This is useful to stop certain kinds of bots and proxies.
663#<module name="conn_waitpong">
664#
665#-#-#-#-#-#-#-#-#-#-#-   WAITPONG CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
666#                                                                     #
667# If you have the conn_waitpong module loaded, configure it with the  #
668# <waitpong> tag:                                                     #
669#                                                                     #
670# sendsnotice    -   Whether to send a helpful notice to users on     #
671#                    connect telling them how to connect, should      #
672#                    their client not reply PONG automatically.       #
673#                                                                     #
674# killonbadreply -   Whether to kill the user if they send the wrong  #
675#                    PONG reply.                                      #
676#                                                                     #
677#<waitpong sendsnotice="no" killonbadreply="yes">
678
679#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
680# Channel cycle module: Adds the /CYCLE command which is a server-side
681# /HOP that bypasses restrictive modes.
682#<module name="cycle">
683
684#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
685# Connectban: Provides IP connection throttling. Any IP range that
686# connects too many times (configurable) in an hour is Z-lined for a
687# (configurable) duration, and their count resets to 0.
688#<module name="connectban">
689#
690# threshold - The number of connections which are allowed before a user
691#             is connectbnaned. Defaults to 10.
692#
693# banmessage - The message to give users when Z-lining them for connecting
694#              too much.
695#
696# duration - The time period to ban users who connect to much for. Defaults
697#            to 10 minutes.
698#
699# ipv4cidr - The IPv4 CIDR mask (1-32) to treat connecting users as coming
700#            from the same host. Defaults to 32.
701#
702# ipv6cidr - The IPv6 CIDR mask (1-128) to treat connecting users as coming
703#            from the same host. Defaults to 128.
704#
705# bootwait - The time period to wait after starting up before enforcing
706#            connection bans. Defaults to 2 minutes.
707#
708# splitwait - The time period to wait after a netsplit before enforcing
709#             connection bans. Defaults to 2 minutes.
710#
711#<connectban threshold="10"
712#            banmessage="Your IP range has been attempting to connect too many times in too short a duration. Wait a while, and you will be able to connect."
713#            duration="10m"
714#            ipv4cidr="32"
715#            ipv6cidr="128"
716#            bootwait="2m"
717#            splitwait="2m">
718
719#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
720# Connection throttle module.
721#<module name="connflood">
722#
723#-#-#-#-#-#-#-#-#-#-#- CONNTHROTTLE CONFIGURATION  -#-#-#-#-#-#-#-#-#-#
724#  period, maxconns -  Amount of connections per <period>.
725#
726#  timeout           -  Time to wait after the throttle was activated
727#                       before deactivating it. Be aware that the time
728#                       is seconds + timeout.
729#
730#  quitmsg           -  The message that users get if they attempt to
731#                       connect while the throttle is active.
732#
733#  bootwait          -  Amount of time in seconds to wait before enforcing
734#                       the throttling when the server just booted.
735#
736#<connflood period="30" maxconns="3" timeout="30"
737#   quitmsg="Throttled" bootwait="2m">
738
739#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
740# Custom prefixes: Allows for channel prefixes to be configured.
741#<module name="customprefix">
742#
743# name       The name of the mode, must be unique from other modes.
744# letter     The letter used for this mode. Required.
745# prefix     The prefix used for nicks with this mode. Not required.
746# rank       A numeric rank for this prefix, defining what permissions it gives.
747#            The rank of voice, halfop and op is 10000, 20000, and 30000,
748#            respectively.
749# ranktoset  The numeric rank required to set this mode. Defaults to rank.
750# ranktounset The numeric rank required to unset this mode. Defaults to ranktoset.
751# depriv     Can you remove the mode from yourself? Defaults to yes.
752#<customprefix name="founder" letter="q" prefix="~" rank="50000" ranktoset="50000">
753#<customprefix name="admin" letter="a" prefix="&amp;" rank="40000" ranktoset="50000">
754#<customprefix name="halfop" letter="h" prefix="%" rank="20000" ranktoset="30000">
755#
756# You can also override the configuration of prefix modes added by both the core
757# and other modules by adding a customprefix tag with change="yes" specified.
758# <customprefix name="op" change="yes" rank="30000" ranktoset="30000">
759# <customprefix name="voice" change="yes" rank="10000" ranktoset="20000" depriv="no">
760#
761# Do /RELOADMODULE customprefix after changing the settings of this module.
762
763#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
764# Custom title module: Adds the /TITLE command which allows for trusted
765# users to gain a custom whois line and an optional vhost can be
766# specified.
767#<module name="customtitle">
768#
769#-#-#-#-#-#-#-#-#-#-  CUSTOM TITLE CONFIGURATION   -#-#-#-#-#-#-#-#-#-#
770#  name     - The username used to identify.
771#  password - The password used to identify.
772#  hash     - The hash for the specific user's password (optional).
773#             password_hash and a hashing module must be loaded
774#             for this to work.
775#  host     - Allowed hostmask (optional).
776#  title    - Title shown in whois.
777#  vhost    - Displayed host (optional).
778#
779#<title name="foo" password="bar" title="Official Chat Helper">
780#<title name="bar" password="foo" host="ident@test.org" title="Official Chat Helper" vhost="helper.test.org">
781#<title name="foo" password="$2a$10$UYZ4OcO8NNTCCGyCdY9SK.2GHiqGgxZfHFPOPmWuxEVWVQTtoDC7C" hash="bcrypt" title="Official Chat Helper">
782
783#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
784# DCCALLOW module: Adds the /DCCALLOW command.
785#<module name="dccallow">
786#
787#-#-#-#-#-#-#-#-#-#-#-  DCCALLOW CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#
788#  blockchat         - Whether to block DCC CHAT as well as DCC SEND.
789#  length            - Default duration of entries in DCCALLOW list.
790#  action            - Default action to take if no action is
791#                      specified, can be 'block' or 'allow'.
792#  maxentries        - Max number of nicks to allow on a DCCALLOW list.
793#
794# File configuration:
795#  pattern           - The glob pattern to match against.
796#  action            - Action to take if a user attempts to send a file
797#                      that matches this pattern, can be 'block' or
798#                      'allow'.
799#
800#<dccallow blockchat="yes" length="5m" action="block" maxentries="20">
801#<banfile pattern="*.exe" action="block">
802#<banfile pattern="*.txt" action="allow">
803
804#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
805# Deaf module: Adds support for user modes +d and +D:
806# d - deaf to channel messages and notices.
807# D - deaf to user messages and notices.
808# The +D user mode is not enabled by default to enable link compatibility
809# with 2.0 servers.
810#<module name="deaf">
811#
812#-#-#-#-#-#-#-#-#-#-#-#-  DEAF CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#
813#  bypasschars       - Characters that bypass deaf to a regular user.
814#  bypasscharsuline  - Characters that bypass deaf to a U-lined user (services).
815#                      Both of these take a list of characters that must match
816#                      the starting character of a message.
817#                      If 'bypasscharsuline' is empty, then 'bypasschars' will
818#                      match for both regular and U-lined users.
819#  enableprivdeaf    - Whether to enable user mode +D (privdeaf).
820#  privdeafuline     - Whether U-lined users bypass user mode +D (privdeaf).
821#
822#<deaf bypasschars="" bypasscharsuline="!" enableprivdeaf="no" privdeafuline="yes">
823
824#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
825# Delay join module: Adds the channel mode +D which delays all JOIN
826# messages from users until they speak. If they quit or part before
827# speaking, their quit or part message will not be shown to the channel
828# which helps cut down noise on large channels in a more friendly way
829# than the auditorium mode. Only channel ops may set the +D mode.
830#<module name="delayjoin">
831
832#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
833# Delay message module: Adds the channel mode +d which disallows a user
834# from talking in the channel unless they've been joined for X seconds.
835# Settable using /MODE #chan +d 30
836#<module name="delaymsg">
837# Set allownotice to no to disallow NOTICEs too. Defaults to yes.
838#<delaymsg allownotice="no">
839
840#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
841# Deny channels module: Deny channels from being used by users.
842#<module name="denychans">
843#
844#-#-#-#-#-#-#-#-#-#-#-   DENYCHAN DEFINITIONS  -#-#-#-#-#-#-#-#-#-#-#-#
845#                                                                     #
846# If you have the denychans module loaded, you need to specify the    #
847# channels to deny:                                                   #
848#                                                                     #
849# name        -      The channel name to deny (glob masks are ok).    #
850# allowopers  -      If operators are allowed to override the deny.   #
851# reason      -      Reason given for the deny.                       #
852# redirect    -      Redirect the user to a different channel.        #
853#                                                                     #
854#<badchan name="#gods*" allowopers="yes" reason="Tortoises!">         #
855#<badchan name="#chan1" redirect="#chan2" reason="Chan1 is closed">   #
856#                                                                     #
857# Redirects will not work if the target channel is set +L.            #
858#                                                                     #
859# Additionally, you may specify channels which are allowed, even if   #
860# a badchan tag specifies it would be denied:                         #
861#<goodchan name="#funtimes">                                          #
862# Glob masks are accepted here also.                                  #
863
864#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
865# Disable module: Provides support for disabling commands and modes.  #
866#<module name="disable">
867#
868#-#-#-#-#-#-#-#-#-#-#-#- DISABLE CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#
869#                                                                     #
870# If you have the disable module loaded then you need to specify the  #
871# commands and modes that you want disabled. Users who have not fully #
872# connected yet are exempt from this module so you can e.g. disable   #
873# the NICK command but still allow users to connect to the server.    #
874#                                                                     #
875# commands - A space-delimited list of commands that can not be used  #
876#            by users. You can exempt server operators from this with #
877#            the servers/use-disabled-commands privilege.             #
878#                                                                     #
879# chanmodes - One or more channel modes that can not be added/removed #
880#             by users. You can exempt server operators from this     #
881#             with the servers/use-disabled-modes privilege.          #
882#                                                                     #
883# usermodes - One or more user modes that can not be added/removed by #
884#             users. You can exempt server operators from this with   #
885#             the servers/use-disabled-modes privilege.               #
886#                                                                     #
887# fakenonexistent - Whether to pretend that a disabled command/mode   #
888#                   does not exist when executed/changed by a user.   #
889#                   Defaults to no.                                   #
890#                                                                     #
891# notifyopers - Whether to send a notice to snomask `a` when a user   #
892#               is prevented from using a disabled command/mode.      #
893#               Defaults to no.                                       #
894#                                                                     #
895#<disabled commands="KICK TOPIC"                                      #
896#          chanmodes="kp"                                             #
897#          usermodes="iw"                                             #
898#          fakenonexistent="yes"                                      #
899#          notifyopers="no">                                          #
900
901#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
902# DNS blacklist module: Provides support for looking up IPs on one or #
903# more blacklists.                                                    #
904#<module name="dnsbl">
905#                                                                     #
906# For configuration options please see the docs page for dnsbl at     #
907# https://docs.inspircd.org/3/modules/dnsbl. You can also use one or  #
908# more of the following example configs for popular DNSBLs:           #
909#                                                                     #
910# DroneBL (https://dronebl.org)                                       #
911#<include file="providers/dronebl.conf">
912#                                                                     #
913# EFnet RBL (https://rbl.efnetrbl.org)                                #
914#<include file="providers/efnet-rbl.conf">
915#                                                                     #
916# dan.me.uk Tor exit node DNSBL (https://www.dan.me.uk/dnsbl)         #
917#<include file="providers/torexit.conf">
918
919#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
920# Exempt channel operators module: Provides support for allowing      #
921# users of a specified channel status to be exempt from some channel  #
922# restriction modes. Supported restrictions are:                      #
923# anticaps, auditorium-see, auditorium-vis, blockcaps, blockcolor,    #
924# censor, filter, flood, nickflood, noctcp, nonick, nonotice,         #
925# regmoderated, stripcolor, and topiclock.                            #
926# See <options:exemptchanops> in inspircd.conf for a more     #
927# detailed list of the restriction modes that can be exempted.        #
928# These are settable using: /MODE #chan +X <restriction>:<status>     #
929# Furthermore, the exemptions configured in <options:exemptchanops>   #
930# can also be negated by using: /MODE #chan +X <restriction>:*        #
931#<module name="exemptchanops">
932
933#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
934# Filter module: Provides message filtering, similar to SPAMFILTER.   #
935#<module name="filter">
936#                                                                     #
937# This module depends upon a regex provider such as regex_pcre or     #
938# regex_glob to function. You must specify which of these you want    #
939# the filter module to use via the tag below.                         #
940#                                                                     #
941# Valid engines are:                                                  #
942#                                                                     #
943# glob   - Glob patterns, provided via regex_glob.                    #
944# pcre   - PCRE regexps, provided via regex_pcre, needs libpcre.      #
945# tre    - TRE regexps, provided via regex_tre, requires libtre.      #
946# posix  - POSIX regexps, provided via regex_posix, not available     #
947#          on Windows, no dependencies on other operating systems.    #
948# stdregex - stdlib regexps, provided via regex_stdlib, see comment   #
949#            at the <module> tag for info on availability.            #
950#                                                                     #
951# If notifyuser is set to no, the user will not be notified when      #
952# their message is blocked.                                           #
953#                                                                     #
954# If warnonselfmsg is set to yes when a user sends a message to       #
955# themself that matches a filter the filter will be ignored and a     #
956# warning will be sent to opers instead. This stops spambots which    #
957# send their spam message to themselves first to check if it is being #
958# filtered by the server.                                             #
959#<filteropts engine="glob" notifyuser="yes" warnonselfmsg="no">
960#                                                                     #
961# Your choice of regex engine must match on all servers network-wide. #
962#                                                                     #
963# To learn more about the configuration of this module, read          #
964# filter.conf, which covers the various types of     #
965# filters and shows how to add exemptions.                            #
966#                                                                     #
967#-#-#-#-#-#-#-#-#-#-#-  FILTER  CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#-#
968#                                                                     #
969# Optional - If you specify to use the filter module, then            #
970# specify below the path to the filter.conf file, or define some      #
971# <keyword> tags.                                                     #
972#                                                                     #
973#<include file="filter.conf">
974
975#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
976# Flash Policy Daemon module: Allows Flash IRC clients (e.g. LightIRC)#
977# to connect. If no file is specified, it'll serve a default policy   #
978# allowing all IPs to connect to all plaintext IRC ports              #
979#<bind address="" port="8430" type="flashpolicyd">                    #
980#<flashpolicyd timeout="5" file="">                                   #
981#<module name="flashpolicyd">                                         #
982
983#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
984# Real name ban: Implements two extended bans:                        #
985# 'a', which matches a n!u@h+realname mask like +b a:*!*@host+*real*  #
986# 'r', which matches a realname mask like +b r:*realname?here*        #
987#<module name="gecosban">
988
989#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
990# Geolocation ban module: Adds support for extban 'G' which matches   #
991# against the ISO 3166-1 alpha-2 codes for the countries that users   #
992# are connecting from. Users connecting from unknown origins such as  #
993# internal networks can be matched against using the XX alpha-2 code. #
994# A full list of ISO 3166-1 alpha-2 codes can be found at             #
995# https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2                    #
996#<module name="geoban">
997
998#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
999# Geolocation connect class module: Adds support for limiting connect #
1000# classes to users from specific countries. With this module you can  #
1001# specify a space-delimited list of two character the ISO 3166-1      #
1002# alpha-2 codes in the "country" field of a connect class. e.g. to    #
1003# deny connections from users in Russia or Turkey:                    #
1004#                                                                     #
1005# <connect deny="*" country="TR RU">                                  #
1006#                                                                     #
1007# Users connecting from unknown origins such as internal networks can #
1008# be matched against using the XX alpha-2 code. A full list of ISO    #
1009# 3166-1 alpha-2 codes can be found at                                #
1010# https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2                    #
1011#<module name="geoclass">
1012
1013#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1014# MaxMindDB geolocation module: Provides geolocation information for  #
1015# other modules that need it using the libMaxMindDB library.          #
1016#                                                                     #
1017# This module is in extras. Re-run configure with:                    #
1018# ./configure --enable-extras geo_maxmind
1019# and run make install, then uncomment this module to enable it.      #
1020#                                                                     #
1021# This module requires libMaxMindDB to be installed on your system.   #
1022# Use your package manager to find the appropriate packages or check  #
1023# the InspIRCd documentation page for this module.                    #
1024#<module name="geo_maxmind">
1025#                                                                     #
1026# If you use the geo_maxmind module you MUST provide a database file  #
1027# to look up geolocation information in. You can either purchase this #
1028# from MaxMind at https://www.maxmind.com/en/geoip2-country-database  #
1029# or use the free CC-BY-SA licensed GeoLite2 Country database which   #
1030# can be downloaded at https://dev.maxmind.com/geoip/geoip2/geolite2/ #
1031#<maxmind file="GeoLite2-Country.mmdb">
1032
1033#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1034# Globops module: Provides the /GLOBOPS command and snomask +g.
1035# This module is oper-only.
1036# To use, GLOBOPS must be in one of your oper class blocks.
1037#<module name="globops">
1038
1039#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1040# Global load module: Allows loading and unloading of modules network-
1041# wide (USE WITH EXTREME CAUTION!)
1042# This module is oper-only and provides /GLOADMODULE, /GUNLOADMODULE
1043# and /GRELOADMODULE.
1044# To use, GLOADMODULE, GUNLOADMODULE and GRELOADMODULE
1045# must be in one of your oper class blocks.
1046#<module name="globalload">
1047
1048#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1049# HAProxy module: Adds support for the HAProxy PROXY v2 protocol. To
1050# use this module specify hook="haproxy" in the <bind> tag that HAProxy
1051# has been configured to connect to.
1052#<module name="haproxy">
1053
1054#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1055# HELPOP module: Provides the /HELPOP command
1056#<module name="helpop">
1057#
1058#-#-#-#-#-#-#-#-#-#-#-#-  HELPOP  CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
1059#                                                                     #
1060# If you specify to use the helpop module, then specify below the     #
1061# path to the helpop.conf file.                                       #
1062#                                                                     #
1063#<include file="helpop.conf">
1064
1065#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1066# Hide chans module: Allows users to hide their channels list from non-
1067# opers by setting user mode +I on themselves.
1068#<module name="hidechans">
1069#
1070# This mode can optionally prevent opers from seeing channels on a +I
1071# user, for more privacy if set to yes.
1072# This setting is not recommended for most mainstream networks.
1073#<hidechans affectsopers="no">
1074
1075#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1076# Hide list module: Allows for hiding the list of listmodes from users
1077# who do not have sufficient channel rank.
1078#<module name="hidelist">
1079#
1080# Each <hidelist> tag configures one listmode to hide.
1081# mode: Name of the listmode to hide.
1082# rank: Minimum rank required to view the list. If set to 0, all
1083# members of the channel may view the list, but non-members may not.
1084# The rank of the built-in op and voice mode is 30000 and 10000,
1085# respectively; the rank of other prefix modes is configurable.
1086# Defaults to 20000.
1087#
1088# Hiding the ban list is not recommended because it may break some
1089# clients.
1090#
1091# Hide filter (+g) list:
1092#<hidelist mode="filter" rank="30000">
1093# Only show invite exceptions (+I) to channel members:
1094#<hidelist mode="invex" rank="0">
1095
1096#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1097# Hide mode module: Allows for hiding mode changes from users who do not
1098# have sufficient channel privileges.
1099#<module name="hidemode">
1100#
1101# Hide bans (+b) from people who are not voiced:
1102#<hidemode mode="ban" rank="10000">
1103
1104#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1105# Hide oper module: Allows opers to hide their oper status from non-
1106# opers by setting user mode +H on themselves.
1107# This module is oper-only.
1108#<module name="hideoper">
1109
1110#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1111# Hostchange module: Allows a different style of cloaking.
1112#<module name="hostchange">
1113#
1114#-#-#-#-#-#-#-#-#-#-#-  HOSTCHANGE  CONFIGURATION  -#-#-#-#-#-#-#-#-#-#
1115#                                                                     #
1116# See https://docs.inspircd.org/3/modules/hostchange for help.        #
1117#                                                                     #
1118#<hostchange mask="*@42.theanswer.org" action="addaccount" suffix=".users.com">
1119#<hostchange mask="*root@*" action="addnick" prefix="example/users/">
1120#<hostchange mask="a@example.com" action="set" value="foo.bar.baz">
1121#<hostchange mask="*@localhost" ports="7000,7001,7005-7007" action="set" value="blahblah.foo" class="local">
1122
1123# hostcycle: If loaded, when a user gets a host or ident set, it will
1124# cycle them in all their channels. If not loaded it will simply change
1125# their host/ident without cycling them.
1126# This module is compatible with the ircv3_chghost module. Clients
1127# supporting the chghost extension will get the chghost message instead
1128# of seeing a host cycle.
1129#<module name="hostcycle">
1130
1131#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1132# httpd module: Provides HTTP server support for InspIRCd.
1133#<module name="httpd">
1134#
1135#-#-#-#-#-#-#-#-#-#-#-#-  HTTPD   CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
1136#
1137# If you choose to use the httpd module, then you will need to add
1138# a <bind> tag with type "httpd", and load at least one of the other
1139# httpd_* modules to provide pages to display.
1140# <bind address="127.0.0.1" port="8067" type="httpd">
1141# <bind address="127.0.0.1" port="8097" type="httpd" sslprofile="Clients">
1142#
1143# You can adjust the timeout for HTTP connections below. All HTTP
1144# connections will be closed after (roughly) this time period.
1145#<httpd timeout="20">
1146
1147#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1148# HTTP ACL module: Provides access control lists for httpd dependent
1149# modules. Use this module to restrict pages by IP address and by
1150# password.
1151#<module name="httpd_acl">
1152#
1153#-#-#-#-#-#-#-#-#-#-#-#- HTTPD ACL CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#
1154#
1155# Restrict access to the httpd_stats module to all but the local
1156# network and when the correct password is specified:
1157# <httpdacl path="/stats*" types="password,whitelist"
1158#    username="secrets" password="mypasshere" whitelist="127.0.0.*,10.*">
1159#
1160# Deny all connections to all but the main index page:
1161# <httpdacl path="/*" types="blacklist" blacklist="*">
1162
1163#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1164# HTTP config module: Allows the server configuration to be viewed over
1165# HTTP via the /config path. Requires the httpd module to be loaded for
1166# it to function.
1167#
1168# IMPORTANT: This module exposes extremely sensitive information about
1169# your server and users so you *MUST* protect it using a local-only
1170# <bind> tag and/or the httpd_acl module. See above for details.
1171#<module name="httpd_config">
1172
1173#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1174# HTTP stats module: Provides server statistics over HTTP via the /stats
1175# path. Requires the httpd module to be loaded for it to function.
1176#
1177# IMPORTANT: This module exposes extremely sensitive information about
1178# your server and users so you *MUST* protect it using a local-only
1179# <bind> tag and/or the httpd_acl module. See above for details.
1180#<module name="httpd_stats">
1181
1182#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1183# Ident: Provides RFC 1413 ident lookup support.
1184# When this module is loaded <connect:allow> tags may have an optional
1185# useident="yes|no" boolean value, determining whether or not to lookup
1186# ident on users matching that connect tag.
1187#<module name="ident">
1188#
1189#-#-#-#-#-#-#-#-#-#-#-#-   IDENT CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#
1190#                                                                     #
1191# Optional - If you are using the ident module, then you can specify  #
1192# the timeout for ident lookups here. If not defined, it will default #
1193# to 5 seconds. This is a non-blocking timeout which holds the user   #
1194# in a 'connecting' state until the lookup is complete.               #
1195# prefixunqueried: If yes, the idents of users in a connect class     #
1196# with ident lookups disabled (i.e. <connect useident="no">) will be  #
1197# prefixed with a "~". If no, the ident of those users will not be    #
1198# prefixed. Default is no.                                            #
1199#
1200#<ident timeout="5" prefixunqueried="no">
1201
1202#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1203# Invite exception module: Adds support for channel invite exceptions
1204# (+I).
1205#<module name="inviteexception">
1206# bypasskey: If this is enabled, exceptions will bypass +k as well as +i
1207#<inviteexception bypasskey="yes">
1208
1209#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1210# IRCv3 module: Provides the following IRCv3 extensions:
1211# extended-join, away-notify and account-notify. These are optional
1212# enhancements to the client-to-server protocol. An extension is only
1213# active for a client when the client specifically requests it, so this
1214# module needs the cap module to work.
1215#
1216# Further information on these extensions can be found at the IRCv3
1217# working group website:
1218# https://ircv3.net/irc/
1219#
1220#<module name="ircv3">
1221# The following block can be used to control which extensions are
1222# enabled. Note that extended-join can be incompatible with delayjoin
1223# and host cycling.
1224#<ircv3 accountnotify="yes" awaynotify="yes" extendedjoin="yes">
1225
1226#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1227# IRCv3 account-tag module. Adds the 'account' tag which contains the
1228# services account name of the message sender.
1229#<module name="ircv3_accounttag">
1230
1231#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1232# IRCv3 batch module: Provides the batch IRCv3 extension which allows
1233# the server to inform a client that a group of messages are related to
1234# each other.
1235#<module name="ircv3_batch">
1236
1237#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1238# IRCv3 cap-notify module: Provides the cap-notify IRCv3 extension.
1239# Required for IRCv3 conformance.
1240#<module name="ircv3_capnotify">
1241
1242#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1243# IRCv3 chghost module: Provides the chghost IRCv3 extension which
1244# allows capable clients to learn when the host/ident of another user
1245# changes without cycling the user. This module is compatible with the
1246# hostcycle module. If both are loaded, clients supporting the chghost
1247# extension will get the chghost message and won't see host cycling.
1248#<module name="ircv3_chghost">
1249
1250#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1251# IRCv3 client-to-client tags module: Provides the message-tags IRCv3
1252# extension which allows clients to add extra data to their messages.
1253# This is used to support new IRCv3 features such as replies and ids.
1254#<module name="ircv3_ctctags">
1255#
1256# If you want to only allow client tags that are intended for processing
1257# by the server you can disable the following setting. Doing this is not
1258# recommended though as it may break clients.
1259#<ctctags allowclientonlytags="yes">
1260
1261#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1262# IRCv3 echo-message module: Provides the echo-message IRCv3
1263# extension which allows capable clients to get an acknowledgement when
1264# their messages are delivered and learn what modifications, if any,
1265# were applied to them.
1266#<module name="ircv3_echomessage">
1267
1268#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1269# IRCv3 invite-notify module: Provides the invite-notify IRCv3
1270# extension which notifies supporting clients when a user invites
1271# another user into a channel. This respects <options:announceinvites>.
1272#<module name="ircv3_invitenotify">
1273
1274#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1275# IRCv3 labeled-response module: Provides the labeled-response IRCv3
1276# extension which allows server responses to be associated with the
1277# client message which caused them to be sent.
1278#<module name="ircv3_labeledresponse">
1279
1280#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1281# IRCv3 message id module: Provides the msgid IRCv3 extension which
1282# adds a unique identifier to each message when the message-tags cap
1283# has been requested. This enables support for modern features such as
1284# reactions and replies.
1285#<module name="ircv3_msgid">
1286
1287#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1288# IRCv3 server-time module. Adds the 'time' tag which adds a timestamp
1289# to all messages received from the server.
1290#<module name="ircv3_servertime">
1291
1292#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1293# IRCv3 Strict Transport Security module: Provides the sts IRCv3
1294# extension which allows clients connecting insecurely to upgrade their
1295# connections to TLS.
1296#<module name="ircv3_sts">
1297#
1298# If using the ircv3_sts module you MUST define a STS policy to send
1299# to clients using the <sts> tag. This tag takes the following
1300# attributes:
1301#
1302# host     - A glob match for the SNI hostname to apply this policy to.
1303# duration - The amount of time that the policy lasts for. Defaults to
1304#            five minutes by default. You should raise this to a month
1305#            or two once you know that your config is valid.
1306# port     - The port on which TLS connections to the server are being
1307#            accepted. You MUST have a CA-verified certificate on this
1308#            port. Self signed certificates are not acceptable.
1309# preload  - Whether client developers can include your certificate in
1310#            preload lists.
1311#
1312# <sts host="*.com" duration="5m" port="6697" preload="yes">
1313
1314#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1315# Join flood module: Adds support for join flood protection +j X:Y.
1316# Closes the channel for N seconds if X users join in Y seconds.
1317#<module name="joinflood">
1318#
1319# duration:  The number of seconds to close a channel for when it is
1320#            being flooded with joins.
1321#
1322# bootwait:  The number of seconds to disengage joinflood for after
1323#            a server boots. This allows users to reconnect without
1324#            being throttled by joinflood.
1325#
1326# splitwait: The number of seconds to disengage joinflood for after
1327#            a server splits. This allows users to reconnect without
1328#            being throttled by joinflood.
1329#
1330#<joinflood duration="1m"
1331#           bootwait="30s"
1332#           splitwait="30s">
1333
1334#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1335# Anti auto rejoin: Adds support for prevention of auto-rejoin (+J).
1336#<module name="kicknorejoin">
1337
1338#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1339# Knock module: Adds the /KNOCK command and channel mode +K.
1340#<module name="knock">
1341#
1342# This setting specifies what to do when someone successfully /KNOCKs.
1343# If set to "notice", then a NOTICE will be sent to the channel.
1344# This is the default and the compatible setting, as it requires no
1345# special support from the clients.
1346# If set to "numeric" then a 710 numeric will be sent to the channel.
1347# This allows easier scripting but not all clients support it.
1348# If set to "both" then (surprise!) both will be sent.
1349#<knock notify="notice">
1350
1351#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1352# LDAP module: Allows other SQL modules to access a LDAP database
1353# through a unified API.
1354# This modules is in extras. Re-run configure with:
1355# ./configure --enable-extras ldap
1356# and run make install, then uncomment this module to enable it.
1357#
1358#<module name="ldap">
1359#<database module="ldap" id="ldapdb" server="ldap://localhost" binddn="cn=Manager,dc=inspircd,dc=org" bindauth="mysecretpass" searchscope="subtree">
1360# The server parameter indicates the LDAP server to connect to. The   #
1361# ldap:// style scheme before the hostname proper is MANDATORY.       #
1362#                                                                     #
1363# The binddn and bindauth indicate the DN to bind to for searching,   #
1364# and the password for the distinguished name. Some LDAP servers will #
1365# allow anonymous searching in which case these two values do not     #
1366# need defining, otherwise they should be set similar to the examples #
1367# above.                                                              #
1368#                                                                     #
1369# The searchscope value indicates the subtree to search under. On our #
1370# test system this is 'subtree'. Your mileage may vary.               #
1371
1372#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1373# LDAP authentication module: Adds the ability to authenticate users  #
1374# via LDAP.                                                           #
1375#<module name="ldapauth">
1376#                                                                     #
1377# Configuration:                                                      #
1378#                                                                     #
1379# <ldapauth dbid="ldapdb"                                             #
1380#           baserdn="ou=People,dc=brainbox,dc=cc"                     #
1381#           attribute="uid"                                           #
1382#           allowpattern="Guest* Bot*"                                #
1383#           killreason="Access denied"                                #
1384#           verbose="yes"                                             #
1385#           host="$uid.$ou.inspircd.org"                              #
1386#           useusername="no">                                         #
1387#                                                                     #
1388# <ldapwhitelist cidr="10.42.0.0/16">                                 #
1389#                                                                     #
1390# <ldaprequire attribute="attr" value="val">                          #
1391#                                                                     #
1392# The baserdn indicates the base DN to search in for users. Usually   #
1393# this is 'ou=People,dc=yourdomain,dc=yourtld'.                       #
1394#                                                                     #
1395# The attribute value indicates the attribute which is used to locate #
1396# a user account by name. On POSIX systems this is usually 'uid'.     #
1397#                                                                     #
1398# The allowpattern value allows you to specify a space separated list #
1399# of wildcard masks which will always be allowed to connect           #
1400# regardless of if they have an account, for example guest and bot    #
1401# users.                                                              #
1402#                                                                     #
1403# The useusername setting chooses whether the user's username or      #
1404# nickname is used when locating a user account, if a username isn't  #
1405# provided in PASS.                                                   #
1406#                                                                     #
1407# Killreason indicates the QUIT reason to give to users if they fail  #
1408# to authenticate.                                                    #
1409#                                                                     #
1410# Setting the verbose value causes an oper notice to be sent out for  #
1411# every failed authentication to the server, with an error string.    #
1412#                                                                     #
1413# ldapwhitelist indicates that clients connecting from an IP in the   #
1414# provided CIDR do not need to authenticate against LDAP. It can be   #
1415# repeated to whitelist multiple CIDRs.                               #
1416#                                                                     #
1417# ldaprequire allows further filtering on the LDAP user, by requiring #
1418# certain LDAP attributes to have a given value. It can be repeated,   #
1419# in which case the list will act as an OR list, that is, the         #
1420# authentication will succeed if any of the requirements in the list  #
1421# is satisfied.                                                       #
1422#                                                                     #
1423# host allows you to change the displayed host of users connecting    #
1424# from ldap. The string supplied takes formatters which are replaced  #
1425# from the DN. For instance, if your DN looks like:                   #
1426# uid=w00t,ou=people,dc=inspircd,dc=org, then the formatters uid, ou  #
1427# and dc will be available to you. If a key is given multiple times   #
1428# in the DN, the last appearance will take precedence.                #
1429
1430#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1431# LDAP oper configuration module: Adds the ability to authenticate    #
1432# opers via LDAP.                                                     #
1433#<module name="ldapoper">
1434#                                                                     #
1435# Configuration:                                                      #
1436#                                                                     #
1437# <ldapoper dbid="ldapdb"
1438#           baserdn="ou=People,dc=brainbox,dc=cc"
1439#           attribute="uid">
1440#                                                                     #
1441# Available configuration items are identical to the same items in    #
1442# ldapauth above (except for the verbose setting, that is only        #
1443# supported in ldapauth).                                             #
1444# Please always specify a password in your <oper> tags even if the    #
1445# opers are to be authenticated via LDAP, so in case this module is   #
1446# not loaded the oper accounts are still protected by a password.     #
1447
1448#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1449# Lock server module: Adds /LOCKSERV and /UNLOCKSERV commands that    #
1450# are used to temporarily close/open the server for new connections.  #
1451# These commands require that the /LOCKSERV and /UNLOCKSERV commands  #
1452# are specified in a <class> tag that the oper is part of. This is so #
1453# you can control who has access to this possible dangerous command.  #
1454# If your server is locked and you get disconnected, do a REHASH from #
1455# shell to open up again.                                             #
1456# This module is oper-only.
1457#<module name="lockserv">
1458
1459#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1460# Map hiding module: replaces /MAP and /LINKS output to users with a  #
1461# message to see a website, set by maphide="https://test.org/map" in  #
1462# the <security> tag, instead.                                        #
1463#<module name="maphide">
1464
1465#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1466# Message flood module: Adds message/notice flood protection via
1467# channel mode +f.
1468#<module name="messageflood">
1469#
1470# The weight to give each message type. TAGMSGs are considered to be
1471# 1/5 of a NOTICE or PRIVMSG to avoid users being accidentally flooded
1472# out of a channel by automatic client features such as typing
1473# notifications.
1474#<messageflood notice="1.0" privmsg="1.0" tagmsg="0.2">
1475
1476#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1477# MLOCK module: Adds support for server-side enforcement of services
1478# side MLOCKs. Basically, this module suppresses any mode change that
1479# would likely be immediately bounced by services.
1480#<module name="mlock">
1481
1482#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1483# Modenotice module: Adds the /MODENOTICE command that allows opers to
1484# send notices to all users having the given user mode(s) set.
1485#<module name="modenotice">
1486
1487#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1488# Monitor module: Adds support for MONITOR which is used by clients to
1489# maintain notify lists.
1490#<module name="monitor">
1491#
1492# Set the maximum number of entries on a user's monitor list below.
1493#<monitor maxentries="30">
1494
1495#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1496# MySQL module: Allows other SQL modules to access MySQL databases
1497# through a unified API.
1498# This module is in extras. Re-run configure with:
1499# ./configure --enable-extras mysql
1500# and run make install, then uncomment this module to enable it.
1501#<module name="mysql">
1502#
1503#-#-#-#-#-#-#-#-#-#-#-#- SQL CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#-#
1504#                                                                     #
1505# mysql is more complex than described here, see the docs for more    #
1506# info: https://docs.inspircd.org/3/modules/mysql                     #
1507#
1508#<database module="mysql" name="mydb" user="myuser" pass="mypass" host="localhost" id="my_database2">
1509
1510#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1511# Named modes module: Allows for the display and set/unset of channel
1512# modes via long-form mode names via +Z and the /PROP command.
1513# For example, to set a ban, do /MODE #channel +Z ban=foo!bar@baz or
1514# /PROP #channel ban=foo!bar@baz
1515#<module name="namedmodes">
1516
1517#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1518# NAMESX module: Provides support for the IRCv3 multi-prefix capability
1519# and legacy NAMESX extension which allow clients to see all the prefix
1520# modes set on a user.
1521#<module name="namesx">
1522
1523#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1524# National characters module:
1525# 1) Allows using national characters in nicknames.
1526# 2) Allows using custom (national) casemapping over the network.
1527#
1528# This module is incredibly poorly written and documented. You should
1529# probably use the codepage module instead for 8-bit codepages.
1530#<module name="nationalchars">
1531#
1532# file - Location of the file which contains casemapping rules. If this
1533#        is a relative path then it is relative to "<PWD>/../locales"
1534#        on UNIX and "<PWD>/locales" on Windows.
1535# casemapping - The name of the casemapping sent to clients in the 005
1536#               numeric. If this is not set then it defaults to the name
1537#               of the casemapping file unless the file name contains a
1538#               space in which case you will have to specify it manually.
1539#<nationalchars file="bynets/russian-w1251-charlink" casemapping="ru_RU.cp1251-charlink">
1540
1541#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1542# Nickchange flood protection module: Provides channel mode +F X:Y
1543# which allows up to X nick changes in Y seconds.
1544#<module name="nickflood">
1545#
1546# The time period to prevent nick changes for:
1547#<nickflood duration="1m">
1548
1549#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1550# Nicklock module: Let opers change a user's nick and then stop that
1551# user from changing their nick again until unlocked.
1552# This module is oper-only.
1553# To use, NICKLOCK and NICKUNLOCK must be in one of your oper class blocks.
1554#<module name="nicklock">
1555
1556#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1557# No CTCP module: Adds the channel mode +C and user mode +T to block
1558# CTCPs and extban 'C' to block CTCPs sent by specific users.
1559#<module name="noctcp">
1560#
1561# The +T user mode is not enabled by default to enable link compatibility
1562# with 2.0 servers. You can enable it by uncommenting this:
1563#<noctcp enableumode="yes">
1564
1565#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1566# No kicks module: Adds the +Q channel mode and the Q: extban to deny
1567# certain users from kicking.
1568#<module name="nokicks">
1569
1570#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1571# No nicks module: Adds the +N channel mode, as well as the 'N' extban.
1572# +N stops all users from changing their nick, the N extban stops
1573# anyone from matching a +b N:nick!user@host mask from changing their
1574# nick.
1575#<module name="nonicks">
1576
1577#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1578# No part message module: Adds extban 'p' to block part messages from #
1579# matching users.                                                     #
1580#<module name="nopartmsg">
1581
1582#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1583# No notice module: Adds the channel mode +T and the extban 'T' to
1584# block specific users from noticing the channel.
1585#<module name="nonotice">
1586
1587#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1588# Network business join module:
1589# Allows an oper to join a channel using /OJOIN, giving them +Y on the
1590# channel which makes them immune to kicks.
1591#<module name="ojoin">
1592#
1593# Specify the prefix that +Y will grant here.
1594# Leave 'prefix' empty if you do not wish +Y to grant a prefix.
1595# If 'notice' is set to on, upon /OJOIN, the server will notice the
1596# channel saying that the oper is joining on network business.
1597# If 'op' is set to on, it will give them +o along with +Y.
1598#<ojoin prefix="!" notice="yes" op="yes">
1599
1600#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1601# Oper channels mode: Adds the +O channel mode and extban O:<mask>
1602# to ban, except, etc. specific oper types. For example
1603# /MODE #channel +iI O:* is equivalent to channel mode +O, but you
1604# may also set +iI O:AdminTypeOnly to only allow admins.
1605# Modes +I and +e work in a similar fashion.
1606#<module name="operchans">
1607
1608#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1609# Oper join module: Auto-joins opers to a channel upon oper-up.
1610# This module is oper-only. For the user equivalent, see the conn_join
1611# module.
1612#<module name="operjoin">
1613#
1614#-#-#-#-#-#-#-#-#-#-#   OPERJOIN CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#
1615#                                                                     #
1616# If you are using the operjoin module, specify options here:         #
1617#                                                                     #
1618# channel     -      The channel name to join, can also be a comma    #
1619#                    separated list e.g. "#channel1,#channel2".       #
1620#                                                                     #
1621# override    -      If on, lets the oper join walking thru any modes #
1622#                    that might be set, even bans.                    #
1623#                                                                     #
1624#<operjoin channel="#channel" override="no">
1625#
1626# Alternatively you can use the autojoin="channellist" in a <type>    #
1627# tag to set specific autojoins for a type of oper, for example:      #
1628#
1629#<type name="Helper" autojoin="#help" classes="...">
1630
1631#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1632# Oper log module: Logs all oper commands to the server log (with log
1633# type "m_operlog" at default loglevel), and optionally to the 'r'
1634# snomask.
1635# This module is oper-only.
1636#<module name="operlog">
1637#
1638# If the following option is on then all oper commands will be sent to
1639# the snomask 'r'. The default is no.
1640#<operlog tosnomask="no">
1641
1642#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1643# Oper prefixing module: Adds a channel prefix mode +y which is given
1644# to all server operators automatically on all channels they are in.
1645# This prefix mode is more powerful than channel op and other regular
1646# prefix modes.
1647#
1648# Load this module if you want all your server operators to have
1649# channel operator powers.
1650#<module name="operprefix">
1651#
1652# You may additionally customise the prefix character.
1653#<operprefix prefix="!">
1654
1655#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1656# Oper MOTD module: Provides support for a separate message of the day
1657# on oper-up.
1658# This module is oper-only.
1659#<module name="opermotd">
1660#
1661#-#-#-#-#-#-#-#-#-#-#   OPERMOTD CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#
1662#                                                                     #
1663# If you are using the opermotd module, specify the motd file here.   #
1664#                                                                     #
1665# onoper        - If on, the message is sent on /OPER, otherwise it's #
1666#                 only sent when /OPERMOTD is used.                   #
1667#                                                                     #
1668#<opermotd file="opermotd.txt" onoper="yes">
1669
1670#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1671# Override module: Adds support for oper override.
1672# This module is oper-only.
1673#<module name="override">
1674#
1675#-#-#-#-#-#-#-#-#-#-#   OVERRIDE CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#
1676#                                                                     #
1677# Much of override's configuration relates to your oper blocks.       #
1678# For more information on how to allow opers to override, see:        #
1679# https://docs.inspircd.org/3/modules/override                        #
1680#                                                                     #
1681# noisy         - If enabled, all oper overrides will be announced    #
1682#                 via channel notice.                                 #
1683#                                                                     #
1684# requirekey    - If enabled, overriding on join requires a channel   #
1685#                 key of "override" to be specified.                  #
1686#                                                                     #
1687# enableumode   - If enabled, user mode +O is required for override.  #
1688#                                                                     #
1689#<override noisy="yes" requirekey="no" enableumode="yes">
1690
1691#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1692# Oper levels module: Gives each oper a level and prevents actions
1693# being taken by lower level opers against higher level opers.
1694# Specify the level as the 'level' parameter of the <type> tag.
1695# This module is oper-only.
1696#<module name="operlevels">
1697
1698#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1699# Oper modes module: Allows you to specify modes to add/remove on oper.
1700# Specify the modes as the 'modes' parameter of the <type> tag
1701# and/or as the 'modes' parameter of the <oper> tag.
1702# This module is oper-only. For the user equivalent, see the
1703# conn_umodes module.
1704#<module name="opermodes">
1705
1706#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1707# Password forwarding module: Forwards a password users can send on
1708# connect to the specified client below. The client is usually NickServ
1709# and this module is usually used to authenticate users with NickServ
1710# using their connect password.
1711#<module name="passforward">
1712
1713<passforward
1714		# nick: nick to forward connect passwords to.
1715		nick="NickServ"
1716
1717		# forwardmsg: Message to send to users using a connect password.
1718		# $nick will be the users' nick, $nickrequired will be the nick
1719		# of where the password is going (the nick above).
1720		# You can also use $user for the user ident string.
1721		forwardmsg="NOTICE $nick :*** Forwarding PASS to $nickrequired"
1722
1723		# cmd: Command for the user to run when it receives a connect
1724		# password.
1725		cmd="SQUERY $nickrequired :IDENTIFY $pass">
1726
1727#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1728# Password hash module: Allows hashed passwords to be used.
1729# To be useful, a hashing module like bcrypt also needs to be loaded.
1730#<module name="password_hash">
1731#
1732#-#-#-#-#-#-#-#-#-# PASSWORD HASH CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#
1733#
1734# To use this module, you must define a hash type for each oper's
1735# password you want to hash. For example:
1736#
1737#     <oper name="Brain"
1738#           host="ident@dialup15.isp.test.com"
1739#           hash="bcrypt"
1740#           password="$2a$10$Mss9AtHHslZTLBrXqM0FB.JBwD.UTSu8A48SfrY9exrpxbsRiRTbO"
1741#           type="NetAdmin">
1742#
1743# If you are using a hash algorithm which does not perform salting you can use
1744# HMAC to salt your passwords in order to prevent them from being looked up in
1745# a rainbow table.
1746#
1747#    hash="hmac-sha256" password="lkS1Nbtp$CyLd/WPQXizsbxFUTqFRoMvaC+zhOULEeZaQkUJj+Gg"
1748#
1749# Generate hashes using the /MKPASSWD command on the server.
1750# Don't run it on a server you don't trust with your password.
1751#
1752# You can also make the MKPASSWD command oper only by uncommenting this:
1753#<mkpasswd operonly="yes">
1754
1755#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1756# PBKDF2 module: Allows other modules to generate PBKDF2 hashes,
1757# usually for cryptographic uses and security.
1758# This module relies on other hash providers (e.g. SHA256).
1759#<module name="pbkdf2">
1760#
1761# iterations: Iterations the hashing function runs when generating new
1762# hashes.
1763# length: Length in bytes of the derived key.
1764#<pbkdf2 iterations="12288" length="32">
1765# You can override these values with specific values
1766# for specific providers if you want to. Example given for SHA256.
1767#<pbkdf2prov hash="sha256" iterations="24576">
1768
1769#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1770# Permanent channels module: Channels with the permanent channel mode
1771# will remain open even after everyone else has left the channel, and
1772# therefore keep things like modes, ban lists and topic. Permanent
1773# channels -may- need support from your Services package to function
1774# properly with them. This adds channel mode +P.
1775# This module is oper-only.
1776#<module name="permchannels">
1777#
1778# If you like, this module can write a config file of permanent channels
1779# whenever +P is set, unset, or the topic/modes on a +P channel is changed.
1780# If you want to do this, set the filename below, and uncomment the include.
1781#
1782# If 'listmodes' is yes then all list modes (+b, +I, +e, +g...) will be
1783# saved. Defaults to no.
1784#
1785# 'saveperiod' determines how often to check if the database needs to be
1786# saved to disk. Defaults to every five seconds.
1787#<permchanneldb filename="permchannels.conf"
1788#               listmodes="yes"
1789#               saveperiod="5s">
1790#<include file="permchannels.conf" missingokay="yes">
1791#
1792# You may also create channels on startup by using the <permchannels> block.
1793#<permchannels channel="#opers" modes="isP" topic="Opers only.">
1794
1795#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1796# PostgreSQL module: Allows other SQL modules to access PgSQL databases
1797# through a unified API.
1798# This module is in extras. Re-run configure with:
1799# ./configure --enable-extras pgsql
1800# and run make install, then uncomment this module to enable it.
1801#<module name="pgsql">
1802#
1803#-#-#-#-#-#-#-#-#-#-#-#- SQL CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#-#
1804#                                                                     #
1805# pgsql is more complex than described here, see the docs for         #
1806# more: https://docs.inspircd.org/3/modules/pgsql                     #
1807#
1808#<database module="pgsql" name="mydb" user="myuser" pass="mypass" host="localhost" id="my_database" ssl="no">
1809
1810#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1811# Muteban: Implements extended ban 'm', which stops anyone matching
1812# a mask like +b m:nick!user@host from speaking on channel.
1813#<module name="muteban">
1814#
1815# If notifyuser is set to no, the user will not be notified when
1816# their message is blocked.
1817#<muteban notifyuser="yes">
1818
1819#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1820# Random quote module: Provides a random quote on connect.
1821# NOTE: Some of these may mimic fatal errors and confuse users and
1822# opers alike - BEWARE!
1823#<module name="randquote">
1824#
1825#-#-#-#-#-#-#-#-#-#-  RANDOMQUOTES CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#
1826#                                                                     #
1827# Optional - If you specify to use the randquote module, then specify #
1828# below the path to the quotes file.                                  #
1829#                                                                     #
1830#<randquote file="quotes.txt">
1831
1832#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1833# Redirect module: Adds channel mode +L which redirects users to      #
1834# another channel when the channel has reached its user limit and     #
1835# user mode +L which stops redirection.                               #
1836#<module name="redirect">
1837
1838#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1839# Regular expression provider for glob or wildcard (?/*) matching.
1840# You must have at least 1 provider loaded to use the filter or R-line
1841# modules. This module has no additional requirements, as it uses the
1842# matching already present in InspIRCd core.
1843#<module name="regex_glob">
1844
1845#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1846# Regular expression provider for PCRE (Perl-Compatible Regular
1847# Expressions). You need libpcre installed to compile and load this
1848# module. You must have at least 1 provider loaded to use the filter or
1849# R-line modules.
1850#<module name="regex_pcre">
1851
1852#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1853# Regular Expression Provider for RE2 Regular Expressions.
1854# You need libre2 installed and in your include/library paths in order
1855# to compile and load this module.
1856#<module name="regex_re2">
1857
1858#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1859# Regular expression provider for POSIX regular expressions.
1860# You shouldn't need any additional libraries on a POSIX-compatible
1861# system (i.e.: any Linux, BSD, but not Windows). You must have at
1862# least 1 provider loaded to use the filter or R-line modules.
1863# On POSIX-compliant systems, regex syntax can be found by using the
1864# command: 'man 7 regex'.
1865#<module name="regex_posix">
1866
1867#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1868# Regular expression provider for C++11 std::regex regular expressions.
1869# This module works on any fully compliant implementation of the C++11
1870# std::regex container. Examples for such are Visual C++ 2010 and newer
1871# but not libstdc++ (which GCC uses).
1872# You should verify that std::regex is supported by your setup before
1873# using this module, as it may compile normally but won't do anything
1874# on some implementations.
1875#<module name="regex_stdlib">
1876#
1877# Specify the regular expression engine to use here. Valid settings are
1878# bre, ere, awk, grep, egrep, ecmascript (default if not specified).
1879#<stdregex type="ecmascript">
1880
1881#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1882# Regular expression provider for TRE regular expressions.
1883# This is the same regular expression engine used by UnrealIRCd, so
1884# if you are most familiar with the syntax of /SPAMFILTER from there,
1885# this is the provider you want. You need libtre installed in order
1886# to compile and load this module.
1887#<module name="regex_tre">
1888
1889#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1890# Remove module: Adds the /REMOVE command which is a peaceful
1891# alternative to /KICK. It also provides the /FPART command which works
1892# in the same way as /REMOVE.
1893#<module name="remove">
1894#
1895# supportnokicks: If yes, /REMOVE is not allowed on channels where the
1896# nokicks (+Q) mode is set. Defaults to no.
1897# protectedrank: Members having this rank or above may not be /REMOVE'd
1898# by anyone. Set to 0 to disable this feature. Defaults to 50000.
1899#<remove supportnokicks="yes" protectedrank="50000">
1900
1901#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1902# Repeat module: Allows to block, kick or ban upon similar messages
1903# being uttered several times. Provides channel mode +E.
1904#
1905# Syntax: [~|*]<lines>:<sec>[:<difference>][:<backlog>]
1906#         ~ is to block, * is to ban, default is kick.
1907# lines      - In mode 1, the amount of lines that has to match consecutively.
1908#              In mode 2, the size of the backlog to keep for matching.
1909# seconds    - How old the message has to be before it's invalidated.
1910# difference - Edit distance, in percent, between two strings to trigger on.
1911# backlog    - When set, the function goes into mode 2. In this mode the
1912#              function will trigger if this many of the last <lines> matches.
1913#
1914# As this module can be rather CPU-intensive, it comes with some options.
1915# maxbacklog  - Maximum size that can be specified for backlog. 0 disables
1916#               multiline matching.
1917# maxdistance - Max percentage of difference between two lines we'll allow
1918#               to match. Set to 0 to disable edit-distance matching.
1919# maxlines    - Max lines of backlog to match against.
1920# maxtime     - Maximum period of time a user can set. 0 to allow any.
1921# size        - Maximum number of characters to check for, can be used to
1922#               truncate messages before they are checked, resulting in
1923#               less CPU usage. Increasing this beyond 512 doesn't have
1924#               any effect, as the maximum length of a message on IRC
1925#               cannot exceed that.
1926# kickmessage - Kick message when * is specified
1927#<repeat maxbacklog="20"
1928#        maxdistance="50"
1929#        maxlines="20"
1930#        maxtime="0s"
1931#        size="512"
1932#        kickmessage="Repeat flood">
1933#<module name="repeat">
1934
1935#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1936# Restricted channels module: Allows only opers with the
1937# channels/restricted-create priv and/or registered users to
1938# create channels.
1939#
1940# You probably *DO NOT* want to load this module on a public network.
1941#
1942#<module name="restrictchans">
1943#
1944# allowregistered: should registered users be allowed to bypass the restrictions?
1945#<restrictchans allowregistered="no">
1946#
1947# Allow any channel matching #user-* to be created, bypassing restrictchans checks
1948#<allowchannel name="#user-*">
1949
1950#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1951# Restrict message module: Allows users to only message opers.
1952#
1953# You probably *DO NOT* want to load this module on a public network.
1954#
1955#<module name="restrictmsg">
1956
1957#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1958# R-line module: Ban users through regular expression patterns.
1959#<module name="rline">
1960#
1961#-#-#-#-#-#-#-#-#-#-#-#- RLINE CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
1962#
1963# If you wish to re-check a user when they change nickname (can be
1964# useful under some situations, but *can* also use CPU with more users
1965# on a server) then set 'matchonnickchange' to yes.
1966# If you additionally want Z-lines to be added on matches, then
1967# set 'zlineonmatch' to yes.
1968# Also, this is where you set what Regular Expression engine is to be
1969# used. If you ever change it while running, all of your R-lines will
1970# be wiped. This is the regex engine used by all R-lines set, and
1971# regex_<engine> must be loaded, or rline will be non-functional
1972# until you load it or change the engine to one that is loaded.
1973#
1974#<rline matchonnickchange="yes" zlineonmatch="no" engine="pcre">
1975#
1976# Generally, you will NOT want to use 'glob' here, as this turns an
1977# R-line into just another G-line. The exceptions are that R-lines will
1978# always use the full "nick!user@host realname" string, rather than only
1979# user@host, but beware that only the ? and * wildcards are available,
1980# and are the only way to specify where the space can occur if you do
1981# use glob. For this reason, is recommended to use a real regex engine
1982# so that at least \s or [[:space:]] is available.
1983
1984#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1985# RMODE module: Adds the /RMODE command.
1986# Allows channel operators to remove list modes en masse, optionally
1987# matching a glob-based pattern.
1988# Syntax: /RMODE <channel> <mode> [<pattern>]
1989# E.g. '/RMODE #channel b m:*' will remove all mute extbans on the channel.
1990#<module name="rmode">
1991
1992#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
1993# SAJOIN module: Adds the /SAJOIN command which forcibly joins a user
1994# to the given channel.
1995# This module is oper-only.
1996# To use, SAJOIN must be in one of your oper class blocks.
1997# Opers need the users/sajoin-others priv to be able to /SAJOIN users
1998# other than themselves.
1999#<module name="sajoin">
2000
2001#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2002# SAKICK module: Adds the /SAKICK command which kicks a user from the
2003# given channel.
2004# This module is oper-only.
2005# To use, SAKICK must be in one of your oper class blocks.
2006#<module name="sakick">
2007
2008#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2009# SAMODE module: Adds the /SAMODE command which allows server operators
2010# to change modes on a channel without requiring them to have any
2011# channel privileges. Also allows changing user modes for any user.
2012# This module is oper-only.
2013# To use, SAMODE must be in one of your oper class blocks.
2014#<module name="samode">
2015
2016#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2017# SANICK module: Adds the /SANICK command which allows opers to change
2018# users' nicks.
2019# This module is oper-only.
2020# To use, SANICK must be in one of your oper class blocks.
2021#<module name="sanick">
2022
2023#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2024# SAPART module: Adds the /SAPART command which forcibly parts a user
2025# from a channel.
2026# This module is oper-only.
2027# To use, SAPART must be in one of your oper class blocks.
2028#<module name="sapart">
2029
2030#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2031# SAQUIT module: Adds the /SAQUIT command which forcibly quits a user.
2032# This module is oper-only.
2033# To use, SAQUIT must be in one of your oper class blocks.
2034#<module name="saquit">
2035
2036#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2037# SATOPIC module: Adds the /SATOPIC command which allows changing the
2038# topic on a channel without requiring any channel privileges.
2039# This module is oper-only.
2040# To use, SATOPIC must be in one of your oper class blocks.
2041#<module name="satopic">
2042
2043#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2044# SASL authentication module: Provides support for IRC Authentication
2045# Layer via AUTHENTICATE. Note: You also need to have cap loaded
2046# for SASL to work.
2047#<module name="sasl">
2048
2049# You must define <sasl:target> to the name of your services server so
2050# that InspIRCd knows where to send SASL authentication messages and
2051# when it should enable the SASL capability.
2052# You can also define <sasl:requiressl> to require users to use TLS (SSL)
2053# in order to be able to use SASL.
2054#<sasl target="services.mynetwork.com"
2055#      requiressl="yes">
2056
2057#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2058# Secure list module: Prevent /LIST in the first minute of connection,
2059# crippling most spambots and trojan spreader bots.
2060#<module name="securelist">
2061#
2062#-#-#-#-#-#-#-#-#-# SECURELIST CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
2063#                                                                     #
2064# Securelist can be harmful to some IRC search engines. To prevent    #
2065# securelist blocking these sites from listing, define exception tags #
2066# as shown below:                                                     #
2067#<securehost exception="*@*.netsplit.de">
2068#                                                                     #
2069# exemptregistered - Whether the waiting period applies to users who  #
2070#                    are logged in to a services account.             #
2071#                    Defaults to no.                                  #
2072#                                                                     #
2073# showmsg - Whether to tell users that they need to wait for a while  #
2074#           before they can use the /LIST command.                    #
2075#           Defaults to no.                                           #
2076#                                                                     #
2077# waittime - The time period that a user must be connected for before #
2078#            they can use the /LIST command.                          #
2079#             Defaults to 1 minute.                                   #
2080#                                                                     #
2081#<securelist exemptregistered="yes"
2082#            showmsg="yes"
2083#            waittime="1m">
2084
2085#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2086# Servprotect module: Provides support for Austhex style +k /
2087# UnrealIRCD +S services mode.
2088#<module name="servprotect">
2089
2090#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2091# See nicks module: Adds snomask +n and +N which show local and remote
2092# nick changes.
2093# This module is oper-only.
2094#<module name="seenicks">
2095
2096#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2097# Set idle module: Adds a command for opers to change their idle time.
2098# This module is oper-only.
2099# To use, SETIDLE must be in one of your oper class blocks.
2100#<module name="setidle">
2101
2102#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2103# Services support module: Adds several user modes such as +R and +M.
2104# This module implements the 'identified' state via account names,
2105# and is similar in operation to the way asuka and ircu handle services.
2106#
2107# At the same time, this offers +r for users and channels to mark them
2108# as identified separately from the idea of a master account, which
2109# can be useful for services which are heavily nick-as-account centric.
2110#
2111# Also of note is that this module implements two extbans:
2112# +b R: (stop matching account names from joining)
2113# +b U:n!u@h (blocks matching unregistered users)
2114#
2115#<module name="services_account">
2116
2117#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2118# Sethost module: Adds the /SETHOST command.
2119# This module is oper-only.
2120# To use, SETHOST must be in one of your oper class blocks.
2121# See the chghost module for how to customise valid chars for hostnames.
2122#<module name="sethost">
2123
2124#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2125# Setident module: Adds the /SETIDENT command.
2126# This module is oper-only.
2127# To use, SETIDENT must be in one of your oper class blocks.
2128#<module name="setident">
2129
2130#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2131# SETNAME module: Adds the /SETNAME command.
2132#<module name="setname">
2133#
2134#-#-#-#-#-#-#-#-#-#-#-#- SETNAME CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#
2135#                                                                     #
2136# operonly - Whether the SETNAME command should only be usable by     #
2137#            server operators. Defaults to no.                        #
2138#                                                                     #
2139# notifyopers - Whether to send a snotice to snomask `a` when a user  #
2140#               changes their real name. Defaults to to yes if        #
2141#               oper-only and no if usable by everyone.               #
2142#                                                                     #
2143#<setname notifyopers="yes"
2144#         operonly="no">
2145
2146#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2147# Serverban: Implements extended ban 's', which stops anyone connected
2148# to a server matching a mask like +b s:server.mask.here from joining.
2149# Wildcards are accepted.
2150#<module name="serverban">
2151
2152#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2153# SHA1 module: Allows other modules to generate SHA1 hashes.
2154# Required by the WebSocket module.
2155#<module name="sha1">
2156
2157#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2158# Showfile: Provides support for showing a text file to users when    #
2159# they enter a command.                                               #
2160# This module adds one command for each <showfile> tag that shows the #
2161# given file to the user as a series of messages or numerics.         #
2162#<module name="showfile">
2163#                                                                     #
2164#-#-#-#-#-#-#-#-#-#-# SHOWFILE CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
2165#                                                                     #
2166# name    - The name of the command which displays this file. This is #
2167#           the only mandatory setting, all others are optional.      #
2168# file    - The text file to be shown to the user.                    #
2169#           By default same as the command name.                      #
2170# method  - How should the file be shown?                             #
2171#           * numeric: Send contents using a numeric                  #
2172#             (similar to /MOTD; the default).                        #
2173#           * notice:  Send contents as a series of notices.          #
2174#           * msg:     Send contents as a series of private messages. #
2175#                                                                     #
2176# When using the method "numeric", the following extra settings are   #
2177# available:                                                          #
2178#                                                                     #
2179# introtext    - Introductory line, "Showing <name>" by default.      #
2180# intronumeric - Numeric used for the introductory line.              #
2181# numeric      - Numeric used for sending the text itself.            #
2182# endtext      - Ending line, "End of <name>" by default.             #
2183# endnumeric   - Numeric used for the ending line.                    #
2184#                                                                     #
2185#<showfile name="RULES"
2186#          file="rules.txt"
2187#          introtext="Server rules:"
2188#          endtext="End of server rules.">
2189
2190#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2191# Show whois module: Adds the +W user mode which allows opers to see
2192# when they are /WHOIS'd.
2193# This module is oper-only by default.
2194#<module name="showwhois">
2195#
2196# If you wish, you may also let users set this mode. Only opers with the
2197# users/auspex priv will see real hosts of people, though.
2198#<showwhois opersonly="yes"
2199#
2200# You may also set whether or not users should receive whois notices,
2201# should they be /WHOIS'd by an oper.
2202#showfromopers="yes">
2203
2204#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2205# Shun module: Provides the /SHUN command, which stops a user from
2206# executing all except configured commands.
2207# This module is oper-only.
2208# To use, SHUN must be in one of your oper class blocks.
2209#<module name="shun">
2210#
2211# Configuration:
2212#
2213#  affectopers: Whether server operators are exempt from shuns. This
2214#               option is deprecated; you should instead give exempt
2215#               server operators the servers/ignore-shun privilege.
2216#
2217#  allowconnect: Whether to only apply shuns to users who are fully
2218#                connected to the server.
2219#
2220#  allowtags: Whether to allow client tags to be attached to enabled
2221#             commands.
2222#
2223#  cleanedcommands: The commands that, if enabled, should be cleaned
2224#                    of any message content if a shunned user tries to
2225#                    execute them.
2226#
2227#  enabledcommands: The commands that a shunned user is allowed to
2228#                   execute.
2229#
2230#  notifyuser: Whether to notify shunned users that a command they tried
2231#              to execute has been blocked.
2232#
2233#<shun enabledcommands="ADMIN OPER PING PONG QUIT PART JOIN"
2234#      cleanedcommands="AWAY PART QUIT"
2235#      affectopers="no"
2236#      allowconnect="no"
2237#      allowtags="no"
2238#      notifyuser="yes">
2239
2240#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2241# SSL mode module: Adds support for TLS (SSL)-only channels via the '+z'
2242# channel mode, TLS (SSL)-only private messages via the '+z' user mode and
2243# the 'z:' extban which matches TLS (SSL) client certificate fingerprints.
2244#
2245# Does not do anything useful without a working TLS (SSL) module and the
2246# sslinfo module (see below).
2247#<module name="sslmodes">
2248#
2249# The +z user mode is not enabled by default to enable link compatibility
2250# with 2.0 servers. You can enable it by uncommenting this:
2251#<sslmodes enableumode="yes">
2252
2253#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2254# SSL rehash signal module: Allows the TLS (SSL) modules to be rehashed by
2255# sending SIGUSR1 to a running InspIRCd process.
2256# This module is in extras. Re-run configure with:
2257# ./configure --enable-extras sslrehashsignal
2258# and run make install, then uncomment this module to enable it.
2259#<module name="sslrehashsignal">
2260
2261#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2262# GnuTLS SSL module: Adds support for TLS (SSL) connections using GnuTLS,
2263# if enabled. You must answer 'yes' in ./configure when asked or
2264# manually symlink the source for this module from the directory
2265# src/modules/extra, if you want to enable this, or it will not load.
2266#<module name="ssl_gnutls">
2267#
2268#-#-#-#-#-#-#-#-#-#-#-  GNUTLS CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#
2269#                                                                     #
2270# ssl_gnutls is too complex to describe here, see the docs:           #
2271# https://docs.inspircd.org/3/modules/ssl_gnutls                      #
2272
2273#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2274# SSL info module: Allows users to retrieve information about other
2275# users' peer TLS (SSL) certificates and keys via the SSLINFO command.
2276# This can be used by client scripts to validate users. For this to
2277# work, one of ssl_gnutls, ssl_mbedtls or ssl_openssl must be loaded.
2278# This module also adds the "<user> is using a secure connection"
2279# and "<user> has TLS (SSL) client certificate fingerprint <fingerprint>"
2280# WHOIS lines, the ability for opers to use TLS (SSL) cert fingerprints to
2281# verify their identity and the ability to force opers to use TLS (SSL)
2282# connections in order to oper up. It is highly recommended to load
2283# this module if you use TLS (SSL) on your network.
2284# For how to use the oper features, please see the first
2285# example <oper> tag in opers.conf.
2286#
2287#<module name="sslinfo">
2288#
2289# If you want to prevent users from viewing TLS (SSL) certificate information
2290# and fingerprints of other users, set operonly to yes.
2291#<sslinfo operonly="no">
2292
2293#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2294# mbedTLS TLS (SSL) module: Adds support for TLS (SSL) connections using mbedTLS.
2295#<module name="ssl_mbedtls">
2296#
2297#-#-#-#-#-#-#-#-#-#-#- MBEDTLS CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#
2298#                                                                     #
2299# ssl_mbedtls is too complex to describe here, see the docs:          #
2300# https://docs.inspircd.org/3/modules/ssl_mbedtls                     #
2301
2302#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2303# OpenSSL TLS (SSL) module: Adds support for TLS (SSL) connections using OpenSSL,
2304# if enabled. You must answer 'yes' in ./configure when asked or symlink
2305# the source for this module from the directory src/modules/extra, if
2306# you want to enable this, or it will not load.
2307#<module name="ssl_openssl">
2308#
2309#-#-#-#-#-#-#-#-#-#-#- OPENSSL CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#
2310#                                                                     #
2311# ssl_openssl is too complex to describe here, see the docs:          #
2312# https://docs.inspircd.org/3/modules/ssl_openssl                     #
2313
2314#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2315# Strip color module: Adds channel mode +S that strips color codes and
2316# all control codes except CTCP from all messages sent to the channel.
2317#<module name="stripcolor">
2318
2319#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2320# Silence module: Adds support for the /SILENCE command, which allows
2321# users to have a server-side ignore list for their client.
2322#<module name="silence">
2323#
2324# Set the maximum number of entries allowed on a user's silence list.
2325#<silence maxentries="32"
2326#
2327# Whether messages from U-lined servers will bypass silence masks.
2328#exemptuline="yes">
2329
2330#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2331# SQLite3 module: Allows other SQL modules to access SQLite3          #
2332# databases through a unified API.                                    #
2333# This module is in extras. Re-run configure with:                    #
2334# ./configure --enable-extras sqlite3
2335# and run make install, then uncomment this module to enable it.      #
2336#
2337#<module name="sqlite3">
2338#
2339#-#-#-#-#-#-#-#-#-#-#-#- SQL CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#-#
2340#                                                                     #
2341# sqlite is more complex than described here, see the docs for more   #
2342# info: https://docs.inspircd.org/3/modules/sqlite3                   #
2343#
2344#<database module="sqlite" hostname="/full/path/to/database.db" id="anytext">
2345
2346#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2347# SQL authentication module: Allows IRCd connections to be tied into
2348# a database table (for example a forum).
2349#
2350#<module name="sqlauth">
2351#
2352#-#-#-#-#-#-#-#-#-#-#- SQLAUTH CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#
2353#                                                                     #
2354# sqlauth is too complex to describe here, see the docs:              #
2355# https://docs.inspircd.org/3/modules/sqlauth                         #
2356
2357#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2358# SQL oper module: Allows you to store oper credentials in an SQL
2359# table. You can add additional table columns like you would config
2360# tags in opers.conf. Opers in opers.conf will override opers from
2361# this module.
2362#
2363#<module name="sqloper">
2364#
2365#-#-#-#-#-#-#-#-#-#-#- SQLOPER CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#
2366#                                                                     #
2367# dbid       - Database ID to use (see SQL modules).                  #
2368#                                                                     #
2369# See also: https://docs.inspircd.org/3/modules/sqloper               #
2370#                                                                     #
2371#<sqloper dbid="1">
2372
2373#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2374# StartTLS module: Implements STARTTLS, which allows clients          #
2375# connected to non TLS (SSL) enabled ports to enable TLS (SSL), if    #
2376# a proper TLS (SSL) module is loaded (either ssl_gnutls,             #
2377# ssl_mbedtls or ssl_openssl).                                        #
2378#<module name="starttls">
2379
2380#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2381# SVSHold module: Implements SVSHOLD. Like Q-lines, but can only be   #
2382# added/removed by Services.                                          #
2383#<module name="svshold">
2384# SVSHOLD does not generate server notices by default, you can turn
2385# notices on by uncommenting the next line.
2386#<svshold silent="no">
2387
2388#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2389# SWHOIS module: Allows you to add arbitrary lines to user WHOIS.
2390# This module is oper-only.
2391# To use, SWHOIS must be in one of your oper class blocks.
2392#<module name="swhois">
2393
2394#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2395# Timed bans module: Adds timed channel bans with the /TBAN command.
2396#<module name="timedbans">
2397# By default, it sends a notice to channel operators when timed ban is
2398# set and when it is removed by server.
2399#<timedbans sendnotice="yes">
2400
2401#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2402# Test line module: Adds the /TLINE command, used to test how many
2403# users a /GLINE or /ZLINE etc. would match.
2404# This module is oper-only.
2405# To use, TLINE must be in one of your oper class blocks.
2406#<module name="tline">
2407
2408#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2409# Topiclock module: implements server-side topic locking to achieve deeper
2410# integration with services packages.
2411#<module name="topiclock">
2412
2413#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2414# UHNAMES support module: Adds support for the IRCv3 userhost-in-names
2415# capability and legacy UHNAMES extension which display the ident and
2416# hostname of users in the NAMES list.
2417#<module name="uhnames">
2418
2419#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2420# Uninvite module: Adds the /UNINVITE command which lets users remove
2421# pending invites from channels without waiting for the user to join.
2422#<module name="uninvite">
2423
2424#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2425# Userip module: Adds the /USERIP command.
2426# Allows users to query their own IP, also allows opers to query the IP
2427# of anyone else.
2428#<module name="userip">
2429
2430#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2431# Vhost module: Adds the VHOST command which allows for adding virtual
2432# hosts which are accessible using a username and password in the config.
2433#<module name="vhost">
2434#
2435#-#-#-#-#-#-#-#-#-#-#- VHOST CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-#-#
2436#                                                                     #
2437# user       - Username for the vhost.                                #
2438#                                                                     #
2439# pass       - Password for the vhost.                                #
2440#                                                                     #
2441# hash       - The hash for the specific user (optional)              #
2442#              password_hash and a hashing module must be loaded for  #
2443#              this to work.                                          #
2444#                                                                     #
2445# host       - Vhost to set.                                          #
2446#
2447#<vhost user="some_username" pass="some_password" host="some.host.test.cc">
2448#<vhost user="foo" password="$2a$10$iTuYLT6BRhRlOgzfsW9oPe62etW.oXwSpyKw5rJit64SGZanLXghO" hash="bcrypt" host="some.other.host.com">
2449
2450#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2451# Watch module: Adds the WATCH command, which is used by clients to
2452# maintain notify lists.
2453#<module name="watch">
2454#
2455# Set the maximum number of entries on a user's watch list below.
2456#<watch maxwatch="32">
2457
2458#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2459# WebSocket module: Adds HTML5 WebSocket support.
2460# Specify hook="websocket" in a <bind> tag to make that port accept
2461# WebSocket connections. Compatible with TLS (SSL).
2462# Requires SHA-1 hash support available in the sha1 module.
2463#<module name="websocket">
2464#
2465# proxyranges: A space-delimited list of glob or CIDR matches to trust
2466#              the X-Real-IP or X-Forwarded-For headers from. If enabled
2467#              the server will use the IP address specified by those HTTP
2468#              headers. You should NOT enable this unless you are using
2469#              a HTTP proxy like nginx as it will allow IP spoofing.
2470# sendastext: Whether to re-encode messages as UTF-8 before sending to
2471#             WebSocket clients. This is recommended as the WebSocket
2472#             protocol requires all text frames to be sent as UTF-8.
2473#             If you do not have this enabled messages will be sent as
2474#             binary frames instead. Clients can override this using a
2475#             WebSocket subprotocol. See the docs page for more info.
2476#<websocket proxyranges="192.0.2.0/24 198.51.100.*"
2477#           sendastext="yes">
2478#
2479# If you use the websocket module you MUST specify one or more origins
2480# which are allowed to connect to the server. You should set this as
2481# strict as possible to prevent malicious webpages from connecting to
2482# your server.
2483# <wsorigin allow="https://*.com">
2484
2485#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2486# X-line database: Stores all *-lines (G/Z/K/R/any added by other modules)
2487# in a file which is re-loaded on restart. This is useful
2488# for two reasons: it keeps bans so users may not evade them, and on
2489# bigger networks, server connections will take less time as there will
2490# be a lot less bans to apply - as most of them will already be there.
2491#<module name="xline_db">
2492
2493# Specify the filename for the xline database and how often to check whether
2494# the database needs to be saved here.
2495#<xlinedb filename="xline.db" saveperiod="5s">
2496
2497#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2498#    ____                _   _____ _     _       ____  _ _   _        #
2499#   |  _ \ ___  __ _  __| | |_   _| |__ (_)___  | __ )(_) |_| |       #
2500#   | |_) / _ \/ _` |/ _` |   | | | '_ \| / __| |  _ \| | __| |       #
2501#   |  _ <  __/ (_| | (_| |   | | | | | | \__ \ | |_) | | |_|_|       #
2502#   |_| \_\___|\__,_|\__,_|   |_| |_| |_|_|___/ |____/|_|\__(_)       #
2503#                                                                     #
2504# To link servers to InspIRCd, you MUST load the spanningtree module. #
2505# If you don't do this, server links will NOT work at all.            #
2506# This is by design, to allow for the implementation of other linking #
2507# protocols in modules in the future.                                 #
2508
2509#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
2510# Spanning tree module: Allows linking of servers using the spanning
2511# tree protocol (see the READ THIS BIT section above).
2512# You will almost always want to load this.
2513#
2514#<module name="spanningtree">
2515