# This is an example of the config file for InspIRCd. #
# Change the options to suit your network #
# #
-# Last updated on : 04/09/2006 #
-# Written by : CC (cc@backchat.co.za) #
-# Updated by : katsklaw (katsklaw@gmail.com) #
-# Updated by : brain (brain@inspircd.org) #
+# Last updated on : 03 Feb 2007 #
# #
# ____ _ _____ _ _ ____ _ _ _ #
# | _ \ ___ __ _ __| | |_ _| |__ (_)___ | __ )(_) |_| | #
#-#-#-#-#-#-#-#-#-#-#-#- ADMIN INFORMATION -#-#-#-#-#-#-#-#-#-#-#-#
# #
-# Describes the Server Administrator's real name, nick #
-# and email address. #
+# Describes the Server Administrator's real name (optionally), #
+# nick, and email address. #
# #
# Syntax is as follows: #
# <admin name="real name" #
# email="email@address.com"> #
# #
-<admin name="Johnny English"
- nick="MI5"
- email="MI5@the.best.secret.agent">
+<admin name="Johnny English"
+ nick="MI5"
+ email="MI5@the.best.secret.agent">
#-#-#-#-#-#-#-#-#-#-#-#- PORT CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-
# <bind address="ip address" port="port" type="servers"> #
# #
# If InspIRCd is built for IPV6, and you wish to accept IPV4 clients, #
-# then you must specify your IPV6 clients in the following form: #
-# ::ffff:1.2.3.4, where 1.2.3.4 is the IPV4 address to bind the #
-# port on. If InspIRCd is built for IPV4 connections (this is the #
-# default) then you do not need to prefix your addresses like this. #
+# then you can specify IPV4 ip addresses here to bind. You may also #
+# use the 4in6 notation, ::ffff:1.2.3.4, where 1.2.3.4 is the IPV4 #
+# address to bind the port, but as of InspIRCd 1.1.1, this is not #
+# required. #
+# #
+# ------------------------------------------------------------------- #
+# #
+# PLEASE NOTE: If you have build InspIRCd as an ipv6 server, and you #
+# specify an empty bind address, the binding will be bound to ALL THE #
+# IPV6 IP ADDRESSES, and not the ipv4 addresses. If you are using an #
+# ipv6 enabled InspIRCd and want to bind to multiple IPV4 addresses #
+# in this way, you must specify them by hand. If you have built the #
+# server for ipv4 connections only, then specifying an empty bind #
+# address binds the port to all ipv4 IP addresses, as expected. #
# #
<bind address="" port="6000" type="clients">
# type="oper type"> #
# #
-<oper name="katsklaw"
- password="s3cret"
- host="ident@dialup15.isp.com *@localhost *@server.com *@3ffe::0/16"
- fingerprint="a41d730937a53b79f788c0ab13e9e1d5"
- type="NetAdmin">
+<oper name="Brain"
+ password="s3cret"
+ host="ident@dialup15.isp.com *@localhost *@server.com *@3ffe::0/16"
+ type="NetAdmin">
#-#-#-#-#-#-#-#-#-#-#- SERVER LINK CONFIGURATION -#-#-#-#-#-#-#-#-#-#
# seconds. If this is not defined, the default of ten #
# seconds is used. #
# #
+# bind - If you specify this value, then when creating an #
+# outbound connection to the given server, the IP you #
+# place here will be bound to. This is for multi- #
+# homed servers which may have multiple IP addresses. #
+# If you do not define this value, the first IP that #
+# is not empty or localhost from your <bind> tags #
+# will be bound to. This is usually acceptable, #
+# however if your server has multiple network cards #
+# then you may have to manually specify the bind #
+# value instead of leaving it to automatic binding. #
+# You can usually tell if you need to set this by #
+# looking for the error 'Could not assign requested #
+# address' in your log when connecting to servers. #
+# #
# to u:line a server (give it extra privilages required for running #
# services, Q, etc) you must include the <uline server> tag as shown #
# in the example below. You can have as many of these as you like. #
# that server to operoverride modes. This should only be used for #
# services and protected oper servers! #
# #
-# NOTE: If you have built InspIRCd with IPV6 support, and you want #
-# to link to an IPV4 server, you must specify the IP address in the #
-# form '::ffff:1.2.3.4' where 1.2.3.4 is the IP address of the target #
-# server. If you have built InspIRCd for IPV4 (this is the default) #
-# you should not prefix your IP addresses in this fashion. #
+# ------------------------------------------------------------------- #
+# #
+# NOTE: If you have built your server as an ipv6 server, then when a #
+# DNS lookup of a server's host occurs, AAAA records (ipv6) are #
+# priorotized over A records (ipv4). Therefore, if the server you are #
+# connecting to has both an IPV6 ip address and an IPV4 ip address in #
+# its DNS entry, the IPV6 address will *always* be selected. To #
+# change this behaviour simply specify the IPV4 IP address rather #
+# than the hostname of the server. #
+# #
+# ------------------------------------------------------------------- #
# #
# ____ _ _____ _ _ ____ _ _ _ #
# | _ \ ___ __ _ __| | |_ _| |__ (_)___ | __ )(_) |_| | #
# #
<link name="hub.penguin.org"
- ipaddr="penguin.box.com"
- port="7000"
- allowmask="69.58.44.0/24"
- autoconnect="300"
- failover="hub.other.net"
- timeout="15"
- transport="gnutls"
- sendpass="outgoing!password"
- recvpass="incoming!password">
+ ipaddr="penguin.box.com"
+ port="7000"
+ allowmask="69.58.44.0/24"
+ autoconnect="300"
+ failover="hub.other.net"
+ timeout="15"
+ transport="gnutls"
+ bind="1.2.3.4"
+ sendpass="outgoing!password"
+ recvpass="incoming!password">
<link name="services.antarctic.com"
- ipaddr="localhost"
- port="7000"
- allowmask="127.0.0.0/8"
- sendpass="penguins"
- recvpass="polarbears">
+ ipaddr="localhost"
+ port="7000"
+ allowmask="127.0.0.0/8"
+ sendpass="penguins"
+ recvpass="polarbears">
<uline server="services.antarctic.com">
# configurtion directory. #
# #
-<files motd="inspircd.motd"
- rules="inspircd.rules">
+<files motd="inspircd.motd"
+ rules="inspircd.rules">
+
+#-#-#-#-#-#-#-#-#-#-#-# MAXIMUM CHANNELS -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# #
+# This optional configuration tag lets you define the maximum number #
+# of channels that both opers and users may be on at any one time. #
+# the default is 20 for user and 60 for opers if this tag is not #
+# defined. Remote users are not restricted in any manner. #
+# #
+
+<channels users="20"
+ opers="60">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-# DNS SERVER -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# #
# resolving even though the DNS server appears to be up! Most ISP and #
# hosting provider DNS servers support recursive lookups. #
# #
-# NOTE: If you have built InspIRCd with IPV6 support, and you want #
-# to use an IPV4 nameserver, you must specify the IP address in the #
-# form '::ffff:1.2.3.4' where 1.2.3.4 is the IP address of the target #
-# server. If you have built InspIRCd for IPV4 (this is the default) #
-# you should not prefix your IP addresses in this fashion. #
+# ------------------------------------------------------------------- #
# #
-# IF YOUR RESOLV.CONF CONTAINS ONLY IPV4 ADDRESSES, AND YOU ARE USING #
-# IPV6, YOU MUST DEFINE THE <DNS SERVER> TAG, AND USE THE ::FFFF #
-# PREFIX NOTATION. IF YOU DO NOT, HOSTS WILL *NOT* RESOLVE. #
+# NOTE: if you have built InspIRCd with IPV6 support, then both #
+# ipv6 and ipv4 addresses are allowed here, and also in the system #
+# resolv.conf file. Remember that an ipv4 dns server can still #
+# resolve ipv6 addresses, and vice versa. #
# #
<dns server="127.0.0.1" timeout="5">
-# An example of using IPV4 nameservers over IPV6
-#<dns server="::ffff:127.0.0.1" timeout="5">
+# An example of using an IPV6 nameserver
+#<dns server="::1" timeout="5">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-# PID FILE -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# #
# #
# Settings to define which features are useable on your server. #
# #
-# prefixquit - a prefix for a client's quit message #
+# prefixquit - A prefix to be placed on the start of a client's #
+# quit message #
+# #
+# suffixquit - A suffix to be placed on the end of a client's #
+# quit message. #
+# #
+# fixedquit - A fixed quit message to display for all client #
+# QUITS. If specified, overrides both prefixquit #
+# and suffixquit options. #
# #
# loglevel - specifies what detail of messages to log in the #
# log file. You may select from debug, verbose, #
# ircumsgprefix - Use undernet style message prefix for channel #
# NOTICE and PRIVMSG adding the prefix to the line #
# of text sent out. Eg. NOTICE @#test :@ testing #
-# vs off: NOTICE @#test :testing #
-#
-# notimesync - If this value is 'yes', 'true', or '1', time #
-# synchronization is disabled on this server. This #
-# means any servers you are linked to will not #
-# automatically synchronize time with you, and in #
-# most cases will just result in more bounced modes #
-# on netsplits. This option should be the same on #
-# all servers. #
+# vs. the off setting: NOTICE @#test :testing #
+# #
+# hostintopic - If this is set to yes (the default) then the full #
+# nick!user@host is shown for who set a TOPIC last. #
+# if set to no, then only the nickname is shown. #
+# #
+# announceinvites #
+# - If this option is set to yes (the default), then #
+# invites are announced to the channel when a user #
+# invites annother user. If you consider this to be #
+# unnecessary noise, explicitly set this to no. #
# #
<options prefixquit="Quit: "
cyclehosts="yes"
ircumsgprefix="no"
announcets="yes"
- notimesync="no"
+ hostintopic="yes"
allowhalfop="yes">
+#-#-#-#-#-#-#-#-#-#-#-#-#-#- TIME SYNC OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#
+# Time sychronization options for m_spanningtree linking. #
+# #
+# Because IRC is very time and clock dependent, InspIRCd provides its #
+# own methods for syncronization of time between servers as shown #
+# in the example below, for servers that don't have ntpd running. #
+# #
+# enable - If this value is 'yes', 'true', or '1', time #
+# synchronization is enabled on this server. This #
+# means any servers you are linked to will #
+# automatically synchronize time, however you should #
+# use ntpd instead where possible, NOT this option. #
+# #
+# master - If this value is set to yes, then this server will #
+# act as the authoritative time source for the whole #
+# network. All other servers will respect its time #
+# without question, and match their times to it. #
+# only one server should have the master value set #
+# to 'yes'. #
+# #
+<timesync enable="no" master="no">
+
#-#-#-#-#-#-#-#-#-#-#-#-#- WHOWAS OPTIONS -#-#-#-#-#-#-#-#-#-#-#-#-#
# #
# This tag lets you define the behaviour of the /whowas command of #
#<alias text="ID" replace="PRIVMSG NickServ :IDENTIFY $2"
# requires="NickServ" uline="yes">
#
+# This alias fixes a glitch in xchat 2.6.x and above and the way it
+# assumes IDENTIFY must be prefixed by a colon (:) character. It should
+# be placed ABOVE the default NICKSERV alias (the first example) listed
+# above.
+#
+#<alias text="NICKSERV" format=":IDENTIFY *" replace="PRIVMSG NickServ :IDENTIFY $3-"
+# requires="NickServ" uline="yes">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Alltime module: Shows time on all connected servers at once
# Ban except module: Adds support for channel ban exceptions (+e)
#<module name="m_banexception.so">
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# Ban redirection module: Allows bans which redirect to a specified
+# channel. e.g. +b nick!ident@host#channelbanneduserissentto
+#<module name="m_banredirect.so">
+
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Block amsg module: Attempt to block all usage of /amsg and /ame
#<module name="m_blockamsg.so">
# minlen - The minimum length a line must be for the block #
# percent to have any effect. #
# #
-#<blockcaps percent="95" minlen="5">
+# capsmap - A list of chars to be considered CAPS, this was #
+# you can add CAPS for your language. Also you can #
+# add things like ! and space to further lock down #
+# on caps usage. #
+#<blockcaps percent="50"
+# minlen="5"
+# capsmap="ABCDEFGHIJKLMNOPQRSTUVWXYZ! ">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Block colour module: Blocking colour-coded messages with cmode +c
#
#<include file="censor.conf">
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# CGI:IRC module: Adds support for automatic host changing in CGI:IRC
+# (http://cgiirc.sourceforge.net).
+#<module name="m_cgiirc.so">
+#
+#-#-#-#-#-#-#-#-#-#-#-# CGIIRC CONFIGURATION #-#-#-#-#-#-#-#-#-#-#-#-#
+#
+# Optional - If you specify to use m_cgiirc, then you must specify one
+# or more cgihost tags which indicate authorized CGI:IRC servers which
+# will be connecting to your network, and an optional cgiirc tag.
+# For more information see: http://www.inspircd.org/wiki/CGI-IRC_Module
+#
+# Set to yes if you want to notice opers when CGI clients connect
+# <cgiirc opernotice="no">
+#
+# The type field indicates where the module should get the real
+# client's IP address from, for further information, please see the
+# CGI:IRC documentation.
+#
+# <cgihost type="pass" mask="www.mysite.com"> # Get IP from PASS
+# <cgihost type="webirc" mask="somebox.mysite.com"> # Get IP from WEBIRC
+# <cgihost type="ident" mask="otherbox.mysite.com"> # Get IP from ident
+# <cgihost type="passfirst" mask="www.mysite.com"> # See the docs
+
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Channel filter module: Allows channel-op defined message
# filtering using simple string matches (channel mode +g)
# be included. However, if prefix is not included, it will default #
# to your networks name from the <server> tag. #
# #
-# <cloak key1="543241423" #
-# key2="5378410432" #
-# key3="1143242382" #
-# key4="9504324581" #
+# <cloak key1="0x2AF39F40" #
+# key2="0x78E10B32" #
+# key3="0x4F2D2E82" #
+# key4="0x043A4C81" #
# prefix="mynet"> #
# #
# Please note that the key values will accept any number, and should #
# be large numbers. Using small numbers such as "7" or "1924" will #
-# seriously weaken the security of your cloak. #
+# seriously weaken the security of your cloak. It is recommended you #
+# use hexdecimal numbers prefixed by "0x", as shown in this example, #
+# with each key eight hex digits long. #
+
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# Conn-Join: Allows you to force users to join one or more channels
+# automatically upon connecting to the server.
+#<module name="m_conn_join.so">
+#
+#-#-#-#-#-#-#-#-#-#-#-#- CONNJOIN CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#
+#
+# If you have m_conn_join.so loaded, you can configure it using the
+# follow values:
+#
+#<autojoin channel="#one,#two,#three">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Conn-Lusers: Shows the LUSERS output on connect
# Join flood module: Adds support for join flood protection (+j)
#<module name="m_joinflood.so">
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# Jump Server module: Adds support for the RPL_REDIR numeric
+#<module name="m_jumpserver.so">
+
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Anti-Auto-Rejoin: Adds support for prevention of auto-rejoin (+J)
#<module name="m_kicknorejoin.so">
#<module name="m_knock.so">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
-# Lock server module: adds /LOCKSERV and /UNLOCKSERV commands that is #
+# Lock server module: Adds /LOCKSERV and /UNLOCKSERV commands that is #
# used to temporarily close/open for new connections to the server. #
# These commands require OPER status and that the LOCKSERV UNLOCKSERV #
# are specified in a <class> tag that the oper is part of. This is so #
# To use this module, you must define a hash type for each oper's
# password you want to hash. For example:
#
-# <oper name="katsklaw"
+# <oper name="Brain"
# host="ident@dialup15.isp.com"
# hash="sha256"
# password="a41d730937a53b79f788c0ab13e9e1d5"
# Provide /LIST throttling (to prevent flooding) and /LIST safety to
# prevent excess flood when the list is large.
#<module name="m_safelist.so">
+#
+#-#-#-#-#-#-#-#-#-#-# SAFELIST CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
+#
+# When using Safelist, you may set the following values;
+#
+# The first value, 'throttle', sets the amount of time in seconds a user
+# must wait between LIST commands. For example, if this is set to 60
+# (the default) then the user may not /LIST more than once a minute.
+# If not defined, the default value is 60 seconds.
+#
+# The second value, 'maxlisters', indicates the maximum number of users
+# which may be retrieving a LIST at once. It is not recommended you raise
+# this value, as increasing it too high can make your network vulnerable
+# to floodbots which waste your bandwidth and CPU time with LIST requests.
+#
+#<safelist throttle="60" maxlisters="50">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# SAJOIN module: Adds the /SAJOIN command
# SAQUIT module: Adds the oper /SAQUIT command (abusable!!!)
#<module name="m_saquit.so">
-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Secure list module: Prevent /LIST in the first minute of connection,
# crippling most spambots and trojan spreader bots.
#<module name="m_securelist.so">
+#
+#-#-#-#-#-#-#-#-#-# SECURELIST CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
+# #
+# Securelist can be harmful to some irc search engines such as #
+# netsplit.de and searchirc.com. To prevent securelist blocking these #
+# sites from listing, define exception tags as shown below: #
+<securelist exception="*@*.searchirc.org">
+<securelist exception="*@*.netsplit.de">
+<securelist exception="*@echo940.server4you.de">
+# #
+# Define the following variable to change how long a user must wait #
+# before issuing a LIST. If not defined, defaults to 60 seconds. #
+# #
+#<securelist waittime="60"> #
+
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# See nicks module: Allow for SNOMASK +N which shows nick changes.
+#<module name="m_seenicks.so">
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Set Idle module: Adds a command for opers to change their
# features to silence based on invites, channel messages, etc.
#<module name="m_silence_ext.so">
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# SQLite3 module: Allows other SQL modules to access SQLite3 #
+# databases through a unified API. You must link the source for this #
+# module from the directory src/modules/extra to src/modules, plus #
+# the file m_sqlv2.h #
+#<module name="m_sqlite3.so">
+#
+#-#-#-#-#-#-#-#-#-#-#-#- SQL CONFIGURATION -#-#-#-#-#-#-#-#-#-#-#-#-#
+# #
+# m_sqlite.so is more complex than described here, see the wiki for #
+# more: http://www.inspircd.org/wiki/SQLite3_Service_Provider_Module #
+#
+#<database hostname="/full/path/to/database.db" id="anytext">
+
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# SQLutils module: Provides some utilities to SQL client modules, such
# as mapping queries to users and channels. You must copy the source
# #
#<sqloper dbid="1">
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# SVSHold module: Implements SVSHOLD. Like Q:Lines, but can only be #
+# added/removed by Services. #
+#<module name="m_svshold.so">
+
+
#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# SWHOIS module: Allows you to add arbitary lines to user WHOIS.
#<module name="m_swhois.so">