You are here: Home > Inspircd
InspIRCd
InspIRCd is a modular Internet Relay Chat (IRC) server written in C++ for Linux, BSD, Windows and macOS systems.
It was created from scratch to be stable, modern and lightweight. It provides a tunable number of features through the use of an advanced but well documented module system. By keeping core functionality to a minimum we hope to increase the stability, security and speed of InspIRCd while also making it customisable to the needs of many different users.
Installing InspIRCd 3 from source
If there is no official InspIRCd package for your system and you don't want to use Docker you can build from source.
What systems can InspIRCd be built on?
InspIRCd can be built on on the following platforms:
-
Most recent BSD variants using the Clang or GCC compilers and the GNU toolchain (Make, etc).
-
Most recent Linux distributions using the Clang or GCC compilers and the GNU toolchain.
-
The most recent three major releases of macOS using the AppleClang, Clang, or GCC (not LLVM-GCC) compilers and the GNU toolchain.
-
Windows 7 or newer using the MSVC 14 (Visual Studio 2015) compiler and CMake 2.8 or newer.
Alternate platforms and toolchains may also work but are not officially supported by the InspIRCd team. Generally speaking if you are using a reasonably modern UNIX-like system you should be able to build InspIRCd on it.
How do I install from source?
Dependencies
In order to build from source you will need to have the development tools for your system installed. On Debian-based systems this is the build-essential
package and on RHEL-based systems this is the Development Tools
package group.
If you want to use any modules with third-party dependencies you should have pkg-config and the development headers for the dependency installed.
Once you have dependencies installed you need to download the source code. You can choose between building the most recent release or, if you enjoy living on the edge, the latest code committed to Git.
Release Tarball
To download the most recent release tarball you will need to have a download tool such as cURL or Wget installed. You can install one of these from your system's package manager. Once you have a download tool installed you can download the most recent release tarball from the releases page.
# You can replace `wget` with `curl --remote-name` if using cURL.
wget "https://github.com/inspircd/inspircd/archive/[VERSION].tar.gz"
Once the archive has downloaded you can unpack it using an archival tool such as GNU Tar.
tar -xvf "./inspircd-[VERSION].tar.gz"
A copy of the latest InspIRCd source code will now exist in the inspircd-[VERSION]
directory.
Git
To download the most recent code committed to Git you will need to have Git installed. You can install this from your system's package manager. Once you have Git installed you can download the latest source with the following command:
git clone --branch insp3 "https://github.com/inspircd/inspircd.git"
A copy of the latest InspIRCd source code will now exist in the inspircd
directory.
Configuration
Execute the ./configure
script from the directory which contains the InspIRCd sources from the previous step. This will start an interactive wizard to help you configure your installation.
You will initially be shown the installation paths that InspIRCd defaults to. The default is to install into a self-contained folder in your home directory but you can do a system-wide install if you really must. If the shown paths are okay then press enter to continue. Otherwise, enter "no", press enter, and fill in the paths that it prompts you for.
After you have configured the paths you will be asked whether you want to enable extra modules automatically based on whether you have the dependencies installed. If you want to do this then press enter to continue. Otherwise, enter "no", press enter, and select the extra modules that you want to use. You can enable modules later using ./configure --enable-extras m_foo.cpp
if you change your mind..
Finally, if you enabled a SSL module in the previous step, you will be asked if you want to generate a self-signed certificate for testing purposes. If you want to do this then press enter to continue and fill in the details it prompts you for. Otherwise, enter "no" , and press enter.
Compilation
You can now run the make install
command to build InspIRCd from source. On modern hardware this should take less than ten minutes to complete.
Installing InspIRCd 3 using the CentOS package
What systems are supported by this package?
This package can be installed on all x86-64 systems running CentOS 7.
How do I install this package?
First, download the RPM package to your server using Wget. If you do not have Wget installed you can install it using sudo yum install wget
.
# Replace the URL here with the URL you obtained from the releases page.
wget "https://github.com/inspircd/inspircd/releases/download/[VERSION]/inspircd-[VERSION].el7.centos.x86_64.rpm"
Once the package has downloaded ensure that the file has not been corrupted during download by running sha256sum
and comparing its output to the hash specified on the releases page.
# Replace the filename here with the name of the file you obtained from the releases page.
sha256sum "./inspircd-[VERSION].el7.centos.x86_64.rpm"
If the hash matches the one specified on the releases page you can proceed to install the package.
# Replace the filename here with the name of the file you obtained from the releases page.
sudo yum install "./inspircd-[VERSION].el7.centos.x86_64.rpm"
Installing InspIRCd 3 using the Debian package
What systems are supported by this package?
This package can be installed on all x86-64 systems running Debian 8 (jessie).
How do I install this package?
First, download the RPM package to your server using Wget. If you do not have Wget installed you can install it using sudo apt-get install wget
.
# Replace the URL here with the URL you obtained from the releases page.
wget "https://github.com/inspircd/inspircd/releases/download/[VERSION]/inspircd_[VERSION]_amd64.deb"
Once the package has downloaded ensure that the file has not been corrupted during download by running sha256sum
and comparing its output to the hash specified on the releases page.
# Replace the filename here with the name of the file you obtained from the releases page.
sha256sum "./inspircd_[VERSION]_amd64.deb"
If the hash matches the one specified on the releases page you can proceed to install the package.
# Replace the filename here with the name of the file you obtained from the releases page.
sudo apt-get install "./inspircd_[VERSION]_amd64.deb"
InspIRCd Configuration
This page only lists core configuration. For details on the configuration of a specific module please refer to the appropriate page for that module.
<admin>
The <admin>
tag defines contact details for the server administrator. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
name | Text | None | If defined then the real name of the server operator. |
nick | Text | admin | The nickname of the server operator. |
Text | [email protected] | The email address of the server operator. |
Example Usage
<admin name="John Doe"
nick="JDoe123"
email="[email protected]">
<badhost>
The <badhost>
tag defines a permanent K-line. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
host | Text | None | Required! A user@host to K-line. |
reason | Text | <Config> | The reason for the K-line being added. |
Example Usage
<badhost host="*@example.com"
reason="Spamming">
<badip>
The <badip>
tag defines a permanent Z-line. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
ipmask | Text | None | Required! An IP address to Z-line. |
reason | Text | <Config> | The reason for the Z-line being added. |
Example Usage
<badip ipmask="192.0.2.0/24"
reason="Spamming">
<badnick>
The <badnick>
tag defines a permanent Q-line. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
nick | Text | None | Required! A nickname to Q-line. |
reason | Text | <Config> | The reason for the Q-line being added. |
Example Usage
<badnick nick="NickServ"
reason="Reserved for a network service">
<bind>
The <bind>
tag defines an endpoint to listen for connections on. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
address | Text | None | If defined then the IP address to bind to instead of listening on all available interfaces. |
port | Number | None | Required! The TCP port to listen for connections on. |
type | Text | clients | The type of connection to be allowed on this endpoint. |
The type field should be set to one of the following values:
Value | Module | Description |
---|---|---|
clients | None | Listens for IRC client connections. |
flashpolicyd | flashpolicyd | Listens for Adobe Flash policy connections. |
httpd | httpd | Listens for HTTP connections. |
servers | spanningtree | Listens for IRC server connections. |
Example Usage
Listens for IRC client connections on 192.0.2.1:6667:
<bind address="192.0.2.1"
port="6667"
type="clients">
Listens for IRC server connections on *:7000:
<bind port="7000"
type="servers">
<cidr>
The <cidr>
tag defines the number of bits of an IP address that should be looked at when locating clones. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
ipv4clone | Number | 32 | The number of bits (0-32) of an IPv4 address that should be looked at when locating clones. |
ipv6clone | Number | 128 | The number of bits (0-128) of an IPv6 address that should be looked at when locating clones. |
Example Usage
<cidr ipv4clone="32"
ipv6clone="128">
<class>
The <class>
tag defines a set of server operator privileges. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
name | Text | None | A name that uniquely identifies this server operator class. |
commands | Text | None | A space-delimited list of server operator-only commands that server operators with this class can execute. |
privs | Text | None | A space-delimited list of server operator privileges that server operators with this class has. |
chanmodes | Text | None | The server operator-only channel modes that server operators with this class can change. |
usermodes | Text | None | The server operator-only user modes that server operators with this class can change. |
Example Usage
<class name="OperChat"
commands="WALLOPS GLOBOPS"
privs="users/mass-message"
chanmodes="*"
usermodes="*">
<connect>
The <connect>
tag defines a class that users can be filtered into when they connect to the server. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
name | Text | None | If defined then the name of this connect class. |
allow | Text | None | A glob pattern or CIDR range for an IP address which is allowed to connect to the server. If this is defined then deny (below) MUST NOT be defined. |
deny | Text | None | A glob pattern or CIDR range for an IP address which is banned from connecting to the server. If this is defined then allow (above) MUST NOT be defined. |
commandrate | Number | None | The number of commands per millisecond that a user can execute. |
fakelag | Boolean | Yes | Whether users should have their input/output delayed when they reach a soft limit rather than being killed. |
globalmax | Number | None | The maximum number of users who can exist on the entire network from the range specified in the allow field. |
hardsendq | Number | 1048576 | The maximum amount of data allowed in a user's send queue before it is killed. |
limit | Number | None | The maximum number of users who can be in this connect class. |
localmax | Number | None | The maximum number of users who can exist on the local server from the range specified in the allow field. |
maxchans | Number | None | If defined then the maximum number of channels that a user in this class can be in. |
maxconnwarn | Boolean | No | Whether to send a server notice when a connect class limit is reached. |
parent | Text | None | If defined then the name of the class to inherit most core settings from. |
password | Text | None | The password that the user must send to be put into this connect class. |
pingfreq | Duration | 2m | The number of seconds this client can be idle for before sending it a PING message. |
port | Number | None | The port on which a client must be connecting to be put into this connect class. |
reason | Number | Unauthorised connection | If <connect:deny> is set then the reason to give when disconnecting a user. |
resolvehostnames | Boolean | Yes | Whether to do DNS lookups for the hostnames of users in this class. |
recvq | Number | 4096 | The maximum amount of data allowed in a user's receive queue before it is killed. |
registered | Boolean | None | If defined then whether this connect class matches a user in registration or a client that has completed registration. |
softsendq | Number | 4096 | The maximum number of bytes of data that can be in a user's send queue before the server stops processing their input to allow the send queue to drain. |
threshold | Number | 10 | The maximum amount of penalty that a user can have before being fakelagged or killed if fakelag is turned off. |
timeout | Duration | 1m30s | The number of seconds after which an unregistered user is timed out. |
Example Usage
Denies connections to clients connecting from 3ffe::0/32:
<connect name="6bone"
deny="3ffe::0/32"
reason="The 6bone address space is deprecated">
Defines an SSL-only connect class and then a general connect class to inherit from:
<connect name="Secure"
parent="Main"
port="6697">
<connect name="Main"
allow="*"
commandrate="1000"
fakelag="on"
globalmax="3"
hardsendq="1M"
limit="5000"
localmax="3"
maxchans="30"
maxconnwarn="no"
pingfreq="120"
recvq="8K"
resolvehostnames="yes"
softsendq="8192"
threshold="10"
timeout="10">
Special Notes
If you are also using the cgiirc module you should disable DNS lookups for your WebIRC gateway.
<dns>
The <dns>
tag defines the DNS server to use when looking up hostnames. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
server | Text | None | If defined then the DNS server to look up hostnames with. |
timeout | Number | 5 | The number of seconds before timing out DNS lookups. |
Example Usage
<dns server="8.8.8.8"
timeout="5">
<exception>
The <exception>
tag defines a permanent E-line. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
host | Text | None | Required! A user@host to E-line. |
reason | Text | <Config> | The reason for the E-line being added. |
Example Usage
<exception host="*@localhost"
reason="Local connections">
<insane>
The <insane>
tag defines limits to protect against overly wide X-lines being created. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
hostmasks | Boolean | No | Whether to apply the limit to E-lines, G-lines, and K-lines. |
ipmasks | Boolean | No | Whether to apply the limit to Z-lines. |
nickmasks | Boolean | No | Whether to apply the limit to Q-lines. |
trigger | Decimal | 95.5 | The percentage of connected users who must match the X-line for it to be rejected as overly wide. |
Example Usage
<insane hostmasks="yes"
ipmasks="yes"
nickmasks="yes"
trigger="95.5">
<limits>
The <limits>
tag defines the maximum length of user-configurable fields. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
maxaway | Number | 200 | The maximum length of an away message. |
maxchan | Number | 64 | The maximum length of a channel name. |
maxhost | Number | 64 | The maximum length of a hostname. |
maxident | Number | 10 | The maximum length of a username (ident). |
maxkick | Number | 255 | The maximum length of a kick message. |
maxmodes | Number | 20 | The maximum number of non-flag modes that can be changed in a single MODE message. |
maxnick | Number | 30 | The maximum length of a nickname. |
maxquit | Number | 255 | The maximum length of a quit message. |
maxreal | Number | 128 | The maximum length of a real name (gecos). |
maxtopic | Number | 307 | The maximum length of a channel topic. |
Example Usage
<limits maxaway="200"
maxchan="64"
maxhost="64"
maxident="11"
maxkick="255"
maxmodes="20"
maxnick="32"
maxquit="255"
maxreal="128"
maxtopic="307">
<log>
The <log>
tag defines a location to log to. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
method | Text | file | The method to use for storing logs. |
type | Text | None | Required! A space-delimited token list of types of message to log. |
level | Text | default | The level of messages to log. |
target | Text | None | The location to write the log to. |
flush | Number | 20 | After how many lines to flush the log to disk. |
The method field should be set to one of the following values:
Value | Description |
---|---|
file | The specified log types should be written to a file. |
The type field should be set to one or more of the following values:
Value | Logging Levels Used | Description |
---|---|---|
BANCACHE | debug | Messages relating to the X-line result cache. |
CHANNELS | debug | Messages relating to channels. |
COMMAND | default | Messages relating to command execution. |
CONFIG | default debug |
Messages relating to the configuration. |
CONNECTCLASS | debug | Messages relating to connect classes. |
CULLLIST | debug | Messages relating to object cull lists. |
HEADER | sparse | Messages relating to starting logging. |
MODE | debug | Messages relating to modes. |
MODULE | default debug |
Messages relating to modules. |
SOCKET | default debug |
Messages relating to network sockets. |
STARTUP | default | Messages relating to the startup process. |
USERINPUT | rawio | Messages relating to user input. |
USEROUTPUT | rawio | Messages relating to user output. |
USERS | default debug |
Messages relating to users. |
core_channel | debug | Messages relating to channels. |
core_dns | default debug sparse |
Messages relating to DNS lookups. |
core_hostname_lookup | default debug |
Messages relating to user hostname lookups. |
core_oper | default sparse |
Messages relating to server operators. |
core_reloadmodule | debug | Messages relating to the RELOADMODULE command. |
core_whowas | default | Messages relating to the WHOWAS command. |
m_callerid | default | Messages relating to the callerid module. |
m_cap | debug | Messages relating to the cap module. |
m_cgiirc | default debug |
Messages relating to the cgiirc module. |
m_chanlog | default | Messages relating to the chanlog module. |
m_connectban | debug | Messages relating to the connectban module. |
m_customprefix | debug | Messages relating to the customprefix module. |
m_disable | default debug |
Messages relating to the disable module. |
m_dnsbl | debug | Messages relating to the dnsbl module. |
m_filter | default debug |
Messages relating to the filter module. |
m_geo_maxmind | debug | Messages relating to the geo_maxmind module. |
m_hidemode | debug | Messages relating to the hidemode module. |
m_httpd_acl | debug | Messages relating to the httpd_acl module. |
m_httpd_config | debug | Messages relating to the httpd_config module. |
m_httpd_stats | debug | Messages relating to the httpd_stats module. |
m_ident | debug | Messages relating to the ident module. |
m_ircv3_sts | debug | Messages relating to the ircv3_sts module. |
m_ldapauth | debug | Messages relating to the ldapauth module. |
m_mysql | default | Messages relating to the mysql module. |
m_nationalchars | default | Messages relating to the nationalchars module. |
m_operlog | default | Messages relating to the operlog module. |
m_password_hash | default | Messages relating to the password_hash module. |
m_permchannels | default debug |
Messages relating to the permchannels module. |
m_pgsql | default debug |
Messages relating to the pgsql module. |
m_regex_pcre | debug | Messages relating to the regex_pcre module. |
m_sasl | default verbose debug |
Messages relating to the sasl module. |
m_showfile | default | Messages relating to the showfile module. |
m_spanningtree | default debug rawio |
Messages relating to the spanningtree module. |
m_sqlite3 | default | Messages relating to the sqlite3 module. |
m_sqloper | sparse, default | Messages relating to the sqloper module. |
m_ssl_gnutls | default debug |
Messages relating to the ssl_gnutls module. |
m_ssl_mbedtls | default debug |
Messages relating to the ssl_mbedtls module. |
m_ssl_openssl | default debug |
Messages relating to the ssl_openssl module. |
m_sslinfo | debug | Messages relating to the sslinfo module. |
m_sslrehashsignal | default | Messages relating to the sslrehashsignal module. |
m_topiclock | default | Messages relating to the topiclock module. |
m_xline_db | debug | Messages relating to the xline_db module. |
The level field should be set to one of the following values:
Value | Description |
---|---|
rawio | Logs raw I/O traffic. |
debug | Logs debug information. |
verbose | Logs verbose information. |
default | Logs general information. |
sparse | Log errors and other infrequent information. |
none | Logs nothing. |
Example Usage
<log method="file"
type="* -USERINPUT -USEROUTPUT"
level="default"
target="ircd.log"
flush="20">
<maxlist>
The <maxlist>
tag defines the number of list modes which can be created in a channel. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
chan | Text | None | Required! A glob pattern for channels that this limit applies to. |
mode | Number | None | The character or name for the mode this limit applies to. If not defined then it applies to all modes. |
limit | Number | None | Required! The number of bans which can be created in these channels. |
Example Usage
<maxlist chan="#largechan"
mode="b"
limit="500">
<maxlist chan="*"
limit="100">
<module>
The <module>
tag defines a module to load. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
name | Text | None | Required! The name of a module to load. |
Example Usage
<module name="ssl_gnutls">
<oper>
The <oper>
tag defines a server operator account. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
class | Text | None | If defined then a connect class to assign users who log into this server operator account to. |
hash | Text | None | If defined then the hash algorithm that the password field is hashed with. |
host | Text | None | Required! A space-delimited list of glob patterns for the username@hostname mask that users must be connecting from to log into this server operator account. |
name | Text | None | Required! The username for this server operator account. |
password | Text | None | Required! The password for this server operator account. |
type | Text | None | Required! The type of server operator this account is. |
vhost | Text | None | If defined then a virtual hostname to set on users who log into this server operator account. |
The following hashing modules are included with InspIRCd:
Algorithm | Module(s) | Description |
---|---|---|
bcrypt | bcrypt | Hashes using the bcrypt algorithm. |
hmac-md5 | password_hash, md5 | Hashes using the MD5 and HMAC algorithms. |
hmac-sha1 | password_hash, sha1 | Hashes using the SHA-1 and HMAC algorithms. |
hmac-sha256 | password_hash, sha256 | Hashes using the SHA-256 and HMAC algorithms. |
md5 | md5 | Hashes using the MD5 algorithm. |
pbkdf2-hmac-md5 | pbkdf2, md5 | Hashes using the MD5 and PBKDF2 algorithms. |
pbkdf2-hmac-sha1 | pbkdf2, sha1 | Hashes using the SHA-1 and PBKDF2 algorithms. |
pbkdf2-hmac-sha256 | pbkdf2, sha256 | Hashes using the SHA-256 and PBKDF2 algorithms. |
sha256 | sha256 | Hashes using the SHA-256 algorithm. |
sha1 | sha1 | Hashes using the SHA-1 algorithm. |
Example Usage
<oper name="Sadie"
password="7H8Tqm+i$jaG48RHAcoLXSB3Guzaf1bQehaNRNbblMoNrHPdguvU"
hash="hmac-sha256"
class="ServerOperators"
host="*@bnc.example.com"
type="NetAdmin"
vhost="staff.example.net">
<options>
The <options>
tag defines general configuration options. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
allowzerolimit | Boolean | Yes | Whether to allow channels to have channel mode l (limit) set to 0. |
casemapping | Text | rfc1459 | The casemapping to use when comparing channel and nicknames insensitively. |
cyclehostsfromuser | Boolean | No | Whether to send modes from the user rather than the server when sending a fake rejoin. |
defaultbind | Text | auto | The IP version to bind using if an IP address is not specified. |
defaultmodes | Text | not | The default modes to apply to newly created channels. |
exemptchanops | Text | None | The privileges to exempt ranked channel users from. See the notes for the exemptchanops module for more information. |
fixedpart | Text | None | If defined then a static value to replace users' part messages with. |
fixedquit | Text | None | If defined then a static value to replace users' quit messages with. |
hostintopic | Boolean | No | Whether to show the full user mask of a topic setter rather than just their nickname. |
invitebypassmodes | Boolean | Yes | Whether being invited to a channel allows the invitee to bypass channel modes which would otherwise prevent them from joining. |
nosnoticestack | Boolean | No | Whether to stop identical server notices from being stacked with "last message repeated X times". |
prefixpart | Text | None | If defined then the value to prefix users' part messages with. |
prefixquit | Text | None | If defined then the value to prefix users' quit messages with. |
splitwhois | Text | no | Whether to split private/secret channels from normal channels in WHOIS responses. |
suffixpart | Text | None | If defined then the value to suffix users' part messages with. |
suffixquit | Text | None | If defined then the value to suffix users' quit messages with. |
syntaxhints | Boolean | No | Whether to send syntax hints to users who send commands with not enough parameters. |
xlinemessage | Text | You're banned! | The message to send to users who have been banned from the server. |
The casemapping field should be set to one of the following values:
Value | Description |
---|---|
ascii | Use the ASCII case mapping for nicknames and channels. |
rfc1459 | Use the broken RFC1459 casemapping for nicknames and channels. |
The defaultbind field should be set to one of the following values:
Value | Description |
---|---|
auto | Bind to :: if IPv6 support is available. Otherwise, bind to 0.0.0.0. |
ipv4 | Bind to 0.0.0.0 by default. |
ipv6 | Bind to :: by default. |
The splitwhois field should be set to one of the following values:
Value | Description |
---|---|
no | Don't split private/secret channels from normal channels in WHOIS responses. |
yes | Split private/secret channels from normal channels in WHOIS responses. |
splitmsg | Split private/secret channels from normal channels in WHOIS responses with an explanation. |
Example Usage
<options allowzerolimit="no"
casemapping="ascii"
cyclehostsfromuser="no"
defaultbind="auto"
defaultmodes="nost"
exemptchanops=""
fixedpart=""
fixedquit=""
hostintopic="yes"
invitebypassmodes="yes"
nosnoticestack="no"
prefixpart="""
prefixquit="Quit: "
splitwhois="no"
suffixpart="""
suffixquit=""
syntaxhints="yes"
xlinemessage="You're banned. Email [email protected] to appeal this decision.">
<path>
The <path>
tag defines the location of the config, data, log, and module directories. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
configdir | Text | conf | The location of the config directory. |
datadir | Text | data | The location of the data directory. |
logdir | Text | logs | The location of the logs directory. |
moduledir | Text | modules | The location of the modules directory. |
Example Usage
<path configdir="conf"
datadir="data"
logdir="logs"
moduledir="modules">
<performance>
The <performance>
tag defines configuration options relating to server performance. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
clonesonconnect | Boolean | Yes | Whether to check for clones when a user connects to the server. |
netbuffersize | Number | 10240 | The size of the buffer used to receive data from users. |
softlimit | Number | Varies | The maximum number of connections to allow to the IRC server. |
somaxconn | Number | Varies | The maximum number of connections that may be waiting in the connection accept queue. |
timeskipwarn | Duration | 2s | The amount of time the server clock can skip by before server operators are warned about lag. |
Example Usage
<performance clonesonconnect="yes"
netbuffersize="10240"
softlimit="15000"
somaxconn="128"
timeskipwarn="2s">
<pid>
The <pid>
tag defines the location of the pidfile. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
file | Text | inspircd.pid | The location of the pidfile. |
Example Usage
<pid file="inspircd.pid">
<security>
The <security>
tag defines configuration options relating to server security. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
allowcoreunload | Boolean | No | Whether core modules can be unloaded by a server operator. |
announceinvites | Text | dynamic | Whether to send an announcement when a user is invited to a channel. |
customversion | Text | Network IRCd | A custom string to show in the /VERSION output. |
genericoper | Boolean | No | Whether to show "is a server operator" in /WHOIS instead of the server operator's type. |
hidebans | Boolean | No | Whether to only show X-line messages to server operators. |
hidekills | Text | None | If defined then the text to show in a kill message instead of the name of the server operator who caused the kill. |
hideserver | Text | None | If defined then the text to show in place of a server name. |
hidesplits | Boolean | No | Whether to hide server names in netsplit quits from non-server operators. |
hideulinekills | Boolean | No | Whether to hide server notices about kills by users on U-lined servers. |
maxtargets | Number | 20 | The maximum number of targets a user may specify in a command. |
restrictbannedusers | Text | Yes | Whether to restrict the behaviour of users who are banned in a channel. |
runasgroup | Text | None | If defined then the group to switch to after starting up (requires starting as root). |
runasuser | Text | None | If defined then the user to switch to after starting up (requires starting as root). |
userstats | Text | None | The /STATS characters that a non-server operator can view. |
The announceinvites field should be set to one of the following values:
Value | Description |
---|---|
none | Don't send any invite announcements. |
ops | Send invite announcements to channel operators and higher ranked users. |
dynamic | Send invites to channel half-operators (if available) and higher ranked users. |
all | Send invites to all channel members. |
The restrictbannedusers field should be set to one of the following values:
Value | Description |
---|---|
yes | Banned users should be restricted. |
no | Banned users should not be restricted. |
silent | Banned users should be restricted but should not be informed. |
Example Usage
<security allowcoreunload="no"
announceinvites="dynamic"
customversion=""
genericoper="no"
hidebans="yes"
hidekills=""
hideserver=""
hidesplits="no"
hideulinekills="yes"
maxtargets="20"
restrictbannedusers="yes"
runasgroup=""
runasuser=""
userstats="Pu">
<server>
The <server>
tag defines settings about the local server. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
name | Text | None | Required! The hostname of the local server. |
description | Text | Configure Me | A description of the local server. |
network | Text | Network | The name of the IRC network the local server is attached to. |
id | Text | None | If defined then a unique server identifier in the format [0-9][0-9A-Z][0-9A-Z]. |
Example Usage
<server name="irc.eu.example.com"
description="ExampleNet's European server"
network="ExampleNet"
id="34C">
<type>
The <type>
tag defines a type of server operator. This tag can be defined as many times as required.
Name | Type | Default Value | Description |
---|---|---|---|
class | Text | None | If defined then a connect class to assign users who log into this server operator account to. |
classes | Text | None | If defined then a space-delimited list of <class> tags to inherit privileges from. |
name | Text | None | Required! The name for this server operator type. |
vhost | Text | None | If defined then a virtual hostname to set on users who log into a server operator account using this type. |
Example Usage
<type name="NetAdmin"
class="ServerOperators"
classes="BanControl HostCloak OperChat SACommands ServerLink Shutdown"
vhost="staff.example.net">
<whowas>
The <whowas>
tag defines the configuration of the /WHOWAS
database. This tag can only be defined once.
Name | Type | Default Value | Description |
---|---|---|---|
groupsize | Number | 0 | The maximum number of /WHOWAS entries for a nickname. |
maxgroups | Number | 0 | The maximum number of /WHOWAS nickname groups. |
maxkeep | Duration | 1h | The period of time to keep /WHOWAS records for. |
Example Usage
<whowas groupsize="10"
maxgroups="100000"
maxkeep="3d">