1
0
mirror of https://github.com/unrealircd/unrealircd.git synced 2026-06-26 21:16:38 +02:00
Files
unrealircd/doc/conf.doc
T
2002-06-16 20:39:22 +00:00

1011 lines
36 KiB
Plaintext

UnrealIRCd Configuration Documentation v3.2-beta5
Table of Contents
1.0 Abstract
1.1 Introduction
2.0 Me block (M:line)
3.0 Admin block (A:line)
4.0 Class block (Y:line)
5.0 Allow block (I:line)
6.0 Listen block (P:line)
7.0 Oper block (O:line)
8.0 Drpass block (X:line)
9.0 Include directive (N/A)
10.0 Loadmodule directive (N/A)
11.0 Log block (N/A)
12.0 Tld block (T:line)
13.0 Ban nick block (Q:line)
13.1 Ban user block (K:line)
13.2 Ban ip block (Z:line)
13.3 Ban realname block (n:line)
13.4 Ban server block (q:line)
14.0 Except ban block (E:line)
14.1 Except scan block (e:line)
14.2 Except tkl block (N/A)
15.0 Deny dcc block (dccdeny.conf)
15.1 Deny version block (V:line)
15.2 Deny link block (D:line and d:line)
15.3 Deny channel block (chrestrict.conf)
16.0 Allow channel block (N/A)
17.0 Vhost block block (vhost.conf)
18.0 Badword block (badwords.*.conf)
19.0 Ulines block (U:line)
20.0 Link block (C:line, N:line, H:line, L:line)
21.0 Alias block (N/A)
22.0 Help block (N/A)
23.0 Set block (networks/unrealircd.conf and networks/*.network)
24.0 Conclusion
1.0 Abstract
Welcome to the new Unreal configuration format. This format may seem very confusing at first,
but hopefully this document will clear up any confusion. This file will show you the new config
file directives as well as tell you the old format equivilent (where one exists) to help you get
a feel for the new file.
1.1 Introduction
Each entry, or block, in the new format has a specific format. The format works like:
<block-name> <block-value> {
<block-directive> <directive-value>;
};
<block-name> is the type of block, such as me, or admin. <block-value> sometimes specifys a
value, such as /oper login, but other times it will be a sub-type such as in ban user.
<block-directive> is an individual variable specific to the block, and <directive-value> is the
associated value. Directives and their values do not have to be seperated by an equal sign, but
they maybe if you choose to do so. If <directive-value> contains spaces, or characters that
represent a comment it must be contained in double quotes. If you want to use a quote character
inside a quoted string use \" and it will be understood as a quote character. A
<block-directive> can have directives within it, if thats the case it will have it's own set of
curly braces surrounding it. Some blocks do not have directives and are specified just by
<block-value>, such as include. Also note that there is no set format, meaning the whole block
can appear on one line or over multiple lines. The format above is what is normally used (and
what will be used in this file) because it is easy to read. Note: the configuration file is
currently case sensitive so BLOCK-NAME is not the same as block-name. There is a special
notation used to talk about entries in the config file. For example, to talk about
<block-directive> in the example above, you'd say <block-name>::<block-directive>, and if that
directive has a sub-block you want to reference, you would add another :: and the name of the
sub directive. To talk about an unnamed directive you would do <block-name>:: which would in
this case mean <block-value>, or it could be an entry in a sub block that has no name.
Comments are supported in three formats, both multi-line and single-line comments are supported.
To comment a single line there are two options, a shell style comment, or a C++ style comment.
A shell style comment begins with a # and a C++ style begins with a //. These comments can
appear anywhere in a line and comment anything until the end of the line. For multi-line
comments, a C style comment is supported. To start the comment you enter /* and anything from
there until the */ is commented.
2.0 Me block (M:line)
Syntax:
me {
name <name-of-server>;
info <server-description>;
numeric <server-numeric>;
};
Example:
me {
name irc.unrealircd.com;
info "UnrealIRCd Development Server";
numeric 21;
};
These values are pretty obvious. The me::name specifies the name of the server, me::info
specifies the server's info line, me::numeric specifies a numeric to identify the server. This
must be a value between 1 and 255 that is unique to the server meaning no other servers on the
network may have the same numeric.
3.0 Admin block (A:line)
Syntax:
admin {
<text-line>;
<text-line>;
...
};
Example:
admin {
"codemastr";
"codemastr@unrealircd.com";
};
The admin block defines the text displayed in a /admin request. You can specify as many lines
as you want and you they can contain whatever information you choose, but it is standard to
include the admin's nickname and email address at a minimum. Other information may include any
other contact information you wish to give.
4.0 Class block (Y:line)
Syntax:
class <name> {
pingfreq <ping-frequency>;
connfreq <connect-frequency>;
maxclients <maximum-clients>;
sendq <send-queue>;
};
Example:
class clients {
pingfreq 90;
maxclients 100;
sendq 50000;
};
The class block is a vastly simplified version of the Y:lines. You are no longer limited to
naming them with a number, you can now use an alpha-numeric string which is specified in the
class::. The values of this block define the connection classes, class::pingfreq specifies the
number of seconds between PINGs, class::connfreq is only used in server classes to specify the
time in seconds between connection attempts, class::maxclients specifies the maximum amount of
clients that may use this class to connect, and class::sendq specifies the amount of information
that can remain in the send queue buffer.
5.0 Allow block (I:line)
Syntax:
allow {
ip <user@ip-connection-mask>;
hostname <user@host-connection-mask>;
class <connection-class>;
password <connection-password> { <auth-type>; };
maxperip <max-connections-per-ip>;
redirect-server <server-to-forward-to>;
redirect-port <port-to-forward-to>;
options {
<option>;
<option>;
...
};
};
Example:
allow {
ip *@*;
hostname *@*;
class clients;
maxperip 2;
redirect-server irc2.unrealircd.com;
redirect-port 6667;
};
The allow class is similar to an I:line but provides more features. The allow::ip specifies a
user@ip hostmask for a user to match to connect and allow::hostname specifies a user@host to
match to connect, allow::class is the name of a preexisting (appears before this block in the
config) class block that will be used for this class. The rest of the directives are optional,
allow::password specifies a password that users must enter to connect. The allow::password::
allows you to specify an authentication method. Currently supported methods are crypt, md3, and
sha1. If you are using plain-text you can just leave this sub-block out. This directive also
allows you to configure close killing, allow::maxperip lets you specify the maximum number of
clients that may connect from a single IP. Lastly, the allow block supports redirection when
the server is full, allow::redirect-server specifies the address of a server to forward to, and
allow::redirect-port specifies the port, if no port is specified, 6667 is assumed. Note: for
auto-redirection to occur the client must have support for the redirection numeric, at this
time not many clients do. The allow::options defines two option flags, the noident option
instructs the IRCd to use the username supplied by the client rather than using what is
returned by an ident response. The useip flag tells the IRCd to use the IP of the client as
the host even if it is possible to resolve the IP to a hostname.
6.0 Listen block (P:line)
Syntax:
listen <ip:port> {
options {
<option>;
<option>;
...
};
};
Examples:
listen 192.168.1.1:6667;
listen 192.168.1.1:6697 {
options {
ssl;
};
};
This block allows you to specify the ports on which the IRCd will listen. If no options are
required, you may specify this without any directives in the form listen <ip:port>;. Valid
listen::options are clientsonly (only users may connect), serversonly (only servers name
connect), java (CR javachat support), ssl (SSL encrypted port). A combination of any of those
flags may be specified. Since IPv6 is now supported, and the IPv6 seperator is a : it makes the
ip:port format a bit difficult. To compensate, you should enclose the IP in brackets. For
example, [::1]:6667. Which will bind to the localhost on port 6667. If you are using IPv6 and
want to listen on an IPv4 IP use the format [::ffff:<ip>]:<port>. For example,
[::ffff:203.123.67.1]:6667. Which will bind to the IPv4 203.123.67.1 on port 6667. You may also
specify * as the IP to bind to all interfaces.
7.0 Oper block (O:line)
oper <name> {
from {
userhost <hostmask>;
userhost <hostmask>;
...
};
password <password> { <auth-type>; };
class <class-name>;
snomask <snomask>;
swhois <swhois>;
flags <flags>;
flags {
<flag>;
<flag>;
...
};
};
Example:
oper codemastr {
from {
userhost codemastr@staff.unrealircd.info;
userhost codemastr@unrealircd.com;
};
password "testpass";
class clients;
snomask "+kfc";
flags OAaRDNz^t;
};
The oper block allows you to assign IRC Operators for your server. The oper:: specifies the
login name for the /oper. The oper::from::userhost is a user@host mask that the user must
match, you can specify more than one hostmask by creating more than one oper::from::userhost.
The oper::password is the password the user must specify, oper::password:: allows you to
specify an authentication method for this password, valid auth-types are crypt, md5, and sha1.
If you want to use a plain-text password leave this sub-block out. The oper::class directive
specifies the name of a preexisting (appears before this in the config file) class name that
the oper block will use. The oper::snomask directive lets you specify the default snomask
the \oper will receive, this overrides the standard snomask that is normally set. The
oper::swhois directive allows you to specify an swhois line that will be set when the user
/oper's. Note: This directive will be overridden if you use an IRC Services program that also
sets swhois. The oper::flags directive has two formats. If you wish to use the old style
oper flags i.e., OAa, you use the flags <flags> method, if you want to use the new style, i.e.,
services-admin, then you use the flags { <flag>; } method. Below is a list of all the flags
(in both formats) and what they do.
o local Makes you a local operator (contains rhgwlckbBn)
O global Makes you a global operator (contains oLKG)
C coadmin Makes you a coadmin
A admin Makes you an admin
a services-admin Makes you a services admin
N netadmin Makes you a netadmin
r can_rehash Oper may use /rehash
D can_die Oper may use /die
R can_restart Oper may use /restart
h helpop Oper receives +h (helpop)
w can_wallops Oper can send /wallops
g can_globops Oper can send /globops
c can_localroute Can connect servers locally
L can_globalroute Can connect servers globally
k can_localkill Can /kill local users
K can_globalkill Can /kill global users
b can_kline Can use /kline
B can_unkline Can use /unkline
t can_gkline Can use /gline and /shun
Z can_gzline Can use /gzline
n can_localnotice Can send local server notices
G can_globalnotice Can send global server notices
z can_zline Can use /zline
W get_umodew Sets +W when you oper
H get_host Sets your host to an oper host
^ can_stealth Can use +I
8.0 Drpass block (X:line)
Syntax:
drpass {
restart <restart-password> { <auth-type>; };
die <die-password> { <auth-type>; };
};
Example:
drpass {
restart "0CvoXHMDB45pY" { crypt; };
die "0BMFSJ6FWd23s" { crypt; };
};
This block sets the /restart and /die passwords with drpass::restart and drpass::die
respectively. The drpass::restart:: and drpass::die:: allow you to specify the type of
authentication used by this item. The currently supported authentication types are crypt, md5,
and sha1.
9.0 Include directive (N/A)
Syntax:
include <file-name>;
Example:
include "badwords.channel.conf";
This directive specifies a filename to be loaded as a seperate configuration file. This file
may contain any type of config block and can even include other files. Wildcards are supported
in the file name to allow you to load multiple files at once.
10.0 Loadmodule directive (N/A)
Syntax:
loadmodule <file-name>;
Example:
include "src/modules/commands.so";
This directive specifies a filename to be loaded as a module. Some modules may have there own
documentation which should be consulted when setting it up. Loadmodule also supports wildcards
to easily load multiple modules at once.
11.0 Log block (N/A)
Syntax:
log <file-name> {
maxsize <max-file-size>;
flags {
<flag>;
<flag>;
...
};
};
Example:
log ircd.log {
maxsize 200KB;
flags { errors; tkl; kline; };
};
The log block allows you to assign different log files for different purposes. If the log
filename is syslog and your system has syslogd, then syslogd will be used to log for this file.
If you do not have syslogd, then specifying a filename of syslog will simply write to a file
named syslog. The log:: contains the name of the log file. log::maxsize is an optional
directive that allows you to specify a size that the log file will be wiped and restarted. You
can enter this string using MB for megabytes, KB, for kilobytes, GB, for gigabytes. The
log::flags specifies which types of information will be in this log. You can specify one or
more of the following, errors, kills, tkl (G:lines and Shuns), connects, server-connects,
kline, and oper.
12.0 Tld block (T:line)
Syntax:
tld {
mask <hostmask>;
motd <motd-file>;
rules <rules-file>;
channel <channel-name>;
};
Example:
tld {
mask *@*.es;
motd motd.spanish;
rules rules.spanish;
channel "#help-spanish";
};
The tld block allows you to specify a motd, rules, and channel for a user based on their host.
This is useful if you want different motds for different languages. The tld::mask is a
user@host mask that the user's username and hostname must match. The tld::motd and tld::rules
specify the motd and rules file, respectively, to be displayed to this hostmask. Lastly the
tld::channel is optional, it allows you to specify a channel that this user will be forced to
join on connect. If this exists it will override the default auto join channel.
13.0 Ban nick block (Q:line)
Syntax:
ban nick {
mask <nickname>;
reason <reason-for-ban>;
};
Example:
ban nick {
mask "*Serv";
reason "Reserved for services";
};
The ban nick block allows you to disable use of a nickname on the server. The ban::mask allows
wildcard masks to match multiple nicks, and ban::reason allows you to specify the reason for
which this ban is placed. Most commonly these blocks are used to ban usage of the nicknames
commonly used for network services.
13.1 Ban user block (K:line)
Syntax:
ban user {
mask <hostmask>;
reason <reason-for-ban>;
};
Example:
ban user {
mask *@*.bobs.com;
reason "Abuse from domain";
};
This block allows you to ban a user@host mask from connecting to the server. The ban::mask is a
wildcard string of a user@host to ban, and ban::reason is the reason for a ban being placed.
Note, this is only a local ban and therefore the user may connect to other servers on the
network.
13.2 Ban ip block (Z:line)
Syntax:
ban ip {
mask <ipmask>;
reason <reason-for-ban>;
};
Example:
ban ip {
mask 127.0.0.1;
reason "No local connections allowed";
};
The ban ip block bans an IP from accessing the server. This includes both users and servers
attempting to link. The ban::mask parameter is an IP which may contain wildcard characters, and
ban::reason is the reason why this ban is being placed. Since this ban affects servers it should
be used very carefully.
13.3 Ban realname block (n:line)
Syntax:
ban realname {
mask <realname-mask>;
reason <reason-for-ban>;
};
Example:
ban realname {
mask "*sub7*";
reason "Sub7 Drones are not allowed";
};
The ban realname block allows you to ban a client based on the GECOS (realname) field. This is
useful to stop clone floods because often clone bots use the same realname. The ban::mask
specifies the realname which should be banned. The mask may contain wildcards. The ban::reason
specifies the reason why this ban is being placed.
13.4 Ban server block (q:line)
Syntax:
ban server {
mask <server-name>;
reason <reason-for-ban>;
};
Example:
ban server {
mask irc.lamerland.com;
reason "Too many lamers";
};
This block disables a server's ability to connect to your server. The ban::mask field specifies
a wildcard mask to match against the server attempting to connect's name, and ban::reason
specifies the reason for which this ban has been placed.
14.0 Except ban block (E:line)
Syntax:
except ban {
mask <hostmask>;
};
Example:
except ban {
mask *@*.unrealircd.com;
};
The except ban block allows you to specify a user@host that will override a ban placed on a
broader host. This is useful when you want an ISP banned, but still want specific users to be
able to connect. The except::mask directive specifies the user@host mask of the client who will
be allowed to connect.
14.1 Except scan block (e:line)
Syntax:
except scan {
mask <ipmask>;
};
Example:
except scan {
mask 192.168.1.23;
};
The except scan block allows you to specify an IP mask that will override the scanners. This
only works if you have chosen to load the scanner modules. The except::mask specifies an IP
mask that will not be banned because of any type of scanner problem.
14.2 Except tkl block (N/A)
Syntax:
except tkl {
type <type>;
mask <hostmask>;
};
Example:
except tkl {
type gline;
mask *@*.unrealircd.com;
};
The except tkl block lets you set a host as being exempt from certain types of tkls. The
except::type specifies the type of tkl the mask will be exempt from. Valid entries are gline,
gzline, tkline, tzline, or shun. The except::mask specifies a user@host that will be exempt
from the ban.
15.0 Deny dcc block (dccdeny.conf)
Syntax:
deny dcc {
filename <file-to-block>;
reason <reason-for-ban>;
};
Example:
deny dcc {
filename "dmsetup.exe";
reason "Dmsetup is a trojan";
};
The deny dcc block allows you to specify a filename which will not be allowed to be sent via
DCC over the server. This is very useful in helping stop distribution of trojans and viruses.
The deny::filename parameter specifies a wildcard mask of the filename to reject sends of, and
deny::reason specifys the reason why this file is blocked.
15.1 Deny version block (V:line)
Syntax:
deny version {
mask <server-name>;
version <version-number>;
flags <compile-flags>;
};
Example:
deny version {
mask *;
version *;
flags !R;
};
This block allows you to deny a server from linking based on the version of Unreal it is running
and what compile time options it has. The format for this block is somewhat complex but isn't
too hard to figure out. The deny::mask directive specifies a wildcard mask of the server name
this applies to. The deny::version specifies the protocol number of the version this refers to.
For example, 3.0 is 2301, 3.1.1/3.1.2 is 2302, 3.2 is 2303. The first character of this
parameter can be one of the following >, <, =, !. This character tells the IRCd how to
interpret the version. If the first character is a > then all version greater than the
specified version are denied, if it is a < all versions lower are denied, if it is an = only
that version is denied, and if it is a ! then all versions except the specified are denied. The
deny::flags directive allows you to specify what compile time flags the server may or may not
have. The flags are arranged one after the other with no seperation between, if a character is
prefixed by a ! then it means the server may not have this flag compiled into it, if it does not
have a ! prefix, then it means the server must have this flag compiled. An * can be specified for both
the version and the flags to indicate that all are allowed.
15.2 Deny link block (D:line and d:line)
Syntax:
deny link {
mask <server-name>;
rule <crule-expression>;
type <type-of-denial>;
};
Example:
deny link {
mask *.ca;
rule "connected(hub.irc.net)";
type all;
};
This block allows you to use specific rules to deny a server from linking. The deny::mask
specifies a wildcard mask of the server name to apply this rule to. The deny::rule directive is
very complex. A crule expression allows you to control the link in great detail, and it is set
up like a programming expression. Four operators are supported, connected(<servermask>), returns
true if a server matching servermask is connected, directcon(<servermask>), returns true if the
server matching servermask is directly connected to this server, via(<viamask>,<servermask>),
returns true if a server matching servermask is connected by a server matching viamask, and
directop(), which returns true if the operator issuing a /connect is directly connected to this
server. These operators can be combined using && (and) and || (or), items may also be enclosed
in parenthesis to allow grouping. In addition, an operator preceded with a ! checks if the
operator returned false. If the entire expression evaluates to true, then the link is denied.
The deny::type allows two different values, auto (only applies to autoconnects, /connect will
still work), and all (applies to all connection attempts).
15.3 Deny channel block (chrestrict.conf)
Syntax:
deny channel {
channel <channel-mask>;
reason <reason-for-ban>;
};
Example:
deny channel {
channel "#*hack*";
reason "Hacking channels are not allowed";
};
The deny channel block allows you to disallow users from joining specific channels. The
deny::channel directive specifies a wildcard mask of channels the users may not join, and the
deny::reason specifies the reason why the channel may not be joined.
16.0 Allow channel block (N/A)
Syntax:
allow channel {
channel <channel-mask>;
};
Example:
allow channel {
channel "#help";
};
The allow channel block allows you to specify specific channels that users may join. The
allow::channel directive specifies the wildcard mask of the channels which may be joined.
17.0 Vhost block (vhost.conf)
Syntax:
vhost {
vhost <vhost>;
from {
userhost <hostmask>;
userhost <hostmask>;
...
};
login <login-name>;
password <password> { <auth-type>; };
};
Example:
vhost {
vhost "i.love.unrealircd.com";
from {
userhost "*@unrealircd.com";
};
login "codemastr";
password "hjddfsre";
};
The vhost block allows you to specify a login/password that can be used with the /vhost command
to obtain a fake hostname. The vhost::vhost parameter can be either a user@host or just a host
that the user will receive upon successful /vhost. The vhost::from::userhost contains a
user@host that the user must match to be eligable for the vhost. You may specify more than one
hostmask. The vhost::login in the login name the user must enter and vhost::password is the
password that must be entered. Lastly vhost::password:: allows you to specify the type of
authentication used by this item. The currently supported authentication types are crypt, md5,
and sha1.
18.0 Badword block (badwords.*.conf)
Syntax:
badword <type> {
word <regex-to-match>;
replace <replace-with>;
};
Example:
badword channel {
word "ass";
replace "butt";
};
The badword block allows you to manipulate the list used for user and channel mode +G to strip
"badwords". The badword:: specifies the type, valid types are channel and messages, channel is
for the channel +G list, and message is for the user +G list. The badword::word is a regular
expression of the word we should search for and remove. The badword::replace is what we should
replace this match with. If badword::replace is left out, the word is replaced with <censored>.
19.0 Ulines block (U:line)
Syntax:
ulines {
<server-name>;
<server-name>;
...
};
Example:
ulines {
services.unrealircd.com;
};
The ulines block lets you define certain servers as having extra abilities. This should only be
used for servers such as services and stats. This should not be set for a normal server. Each
entry is the name of the server which will receive the extra abilities.
20.0 Link block (C:line, N:line, H:line, and L:line)
Syntax:
link <server-name> {
username <usermask>;
hostname <ipmask>;
bind-ip <ip-to-bind-to>;
port <port-to-connect-on>;
password-connect <password-to-connect-with>;
password-receive <password-to-receive> { <auth-type>; };
hub <hub-mask>;
leaf <leaf-mask>;
leafdepth <depth>;
class <class-name>;
ciphers <ciphers>;
options {
<option>;
<option>;
...
};
};
Example:
link irc2.unrealircd.com {
username *;
hostname 127.0.0.1;
bind-ip *;
port 7018;
password-connect "tstlnk";
password-receive "tstlnk";
hub *;
class servers;
};
The link block is a simplified way to link servers. The link:: should be the name of the server
which is to be linked, link::username is a wildcard mask of the username the server must have,
and link::hostname is an IP mask the server must match. If you are running with IPv6 enabled and
you want to link to an IPv4 server, specify the hostname in the format ::ffff:<ip>, example
::ffff:203.123.67.1. The link::bind-ip specifies an IP that the server will bind to in order to
make this connection and link::port specifies the port it will establish the connection on. The
link::password-connect must be a plain-text password since it will be sent to the other server,
but link::password-receive may be encrypted using a method specified in
link::password-receive:: valid methods are crypt, md5, and sha1. You can leave the auth-type
parameter out to have it remain plain-text. The link::hub and link::leaf directives may not be
used together, either a server is a hub or a leaf. If link::hub is specified, the value is a
mask of what servers this hub may connect. If link::leaf is specified the value specifies the
mask that this server will act like a leaf towards. The link::leafdepth directive should only
be specified if link::leaf exists and is also optional. This value specifies the depth (number
of hops) this server may have beneath it. The link::class is the name of a preexisting (appears
before this in the config) class block that will be used for the server connecting with the
link block. The link::options is a list of one or more options you wish this server to use,
valid options are ssl (the server will connect using SSL encryption), autoconnect (the server
will be autoconnected based on the value in the specified link::class), quarantine (opers on
this server will maintain locop status). If the server is set to link via SSL, the
link::ciphers directive may be used. This allows you to specify the ciphers that will be
used for this link. The ciphers are specified as a : seperated list in the order of preference.
Different systems support different ciphers, so the best way to get a list of available ciphers
for your system is to execute the openssl ciphers command. This will return a : seperated list
of the available ciphers.
21.0 Alias block (N/A)
Syntax [standard alias]:
alias <name> {
nick <nick-to-forward-to>;
type <type-of-alias>;
};
Example:
alias nickserv {
nick "nickserv";
type services;
};
The alias block [standard alias] allows you to forward a command to a user, for example
/chanserv sends a message to the user chanserv. The alias:: specifies the name of the command
that will be the alias, ex /chanserv, alias::nick is the nickname it will forward to, if the
alias:: is the same as the nick it will forward to, alias::nick can be left out. The
alias::type specifies the type of alias, valid types are services (the user is on the services
server), stats (the user is on the stats server), and normal (the user is a normal user on any
server). The alias block also has another purpose which is explained below.
Syntax [command alias]:
alias <name> {
format <regex-expression> {
alias <alias-to-forward-to>;
parameters <parameter-string>;
};
format <regex-expression> {
...
};
type command;
};
Example:
alias ghost {
format "*" {
alias nickserv;
parameters "GHOST %1-";
};
};
When the alias block is used in this format, it allows you a much broader range of usage. For
example you can create aliases such as /identify. The alias:: is the same as above, the name of
the alias command. The alias::format specifies a regular expression that compares against the
text sent to the alias command, when matched the sub-entries of that alias::format will be used,
you may have multiple alias::format's to make the command do different things depending on the
text sent to it. The alias::format::alias is the name of a preexisting (appears before this in
the config file) alias block in the standard format that when that format is matched will be
used. The alias::format::parameters is what will be sent as the parameters to this alias. To
specify one of the parameters given to the command alias specify % followed by a number, for
example, %1 is the first parameter. To specify all parameters from a given parameter to the end
do % followed by the number and a -, for example %2- returns all parameters from the second
till the last. For examples of using the alias block in the command format, consult
doc/example.conf.
22.0 Help block (N/A)
Syntax:
help <name> {
<text-line>;
<text-line>;
...
};
Example:
help oper {
"The oper command gives you IRC operator access";
};
The help block allows you to create entries for use in /helpop. The help:: is the value that
must be passed to /helpop as a parameter, if the help:: is left out, then it will be used when
no parameter is passed to /helpop. The entries for the help block are the text that will be
displayed to the user when requesting the /helpop.
23.0 Set block (networks/unrealircd.conf and networks/*.network)
Syntax:
set {
<entry> <value>;
<entry> <value>;
...
};
Example:
set {
kline-address "codemastr@unrealircd.com";
};
The set block sets options for individual server features. Each entry does something different
and therefore each will be described below. Some directives have sub blocks which will also be
described.
set::kline-address <email-address>;
The email address that K:line questions should be sent to. This value must be specified.
set::modes-on-connect <+modes>;
The modes that will be set on a user at connection.
set::modes-on-oper <+modes>;
The modes that will be set on a user when they /oper.
set::auto-join <channels>;
The channel(s) a user will be forced to join at connection. To specify more than one channel
use a comma seperated list.
set::oper-auto-join <channels>;
The channel(s) a user will be forced to join when they /oper. To specify more than one channel
use a comma seperated list.
set::anti-spam-quit-message-time <timevalue>;
A time value specifying the length of time a user must be connected for before a /quit message
will be displayed. Used to prevent spam. A time value is a numeric string with d meaning days,
h meaning hours, m meaning minutes, and s meaning seconds, for example 1d2h3m means 1 day, 2
hours, 3 minutes.
set::oper-only-stats <stats-list>;
Specifies a list of stats flags with no seperators that defines stats flags only opers can use.
Leave this value out to allow users to use all flags, or specify * for users to be able to use
no flags.
set::maxchannelsperuser <amount-of-channels>;
Specifies the number of channels a single user may be in at any one time.
set::options::hide-ulines;
If this is present, Ulined server will be hidden in a /links requested by non-opers.
set::options::no-stealth;
If present usermode +I may not be used by anyone on this server.
set::options::show-opermotd;
If present the opermotd will be shown to users once they successfully /oper.
set::options::identd-check;
If present the presence of an identd server will be checked and the returned value will be used
for the username. If no ident request is returned or the identd server doesn't exist, the user's
specified username will be prefixed with a ~. If this value is omitted no such check is made.
set::options::show-connect-info;
If present notices showing "ident request", "hostname lookup", etc. will be displayed when a user connects.
set::dns::timeout <timevalue>;
A time value specifying the length of time a DNS server has to respond before a timeout. A time
value is a numeric string with d meaning days, h meaning hours, m meaning minutes, and s meaning
seconds, for example 1d2h3m means 1 day, 2 hours, 3 minutes.
set::dns::retries <number-of-retries>;
A numeric value specifying the number of times the DNS lookup will be retried if failure occurs.
set::dns::nameserver <name-of-dns-server>;
Specifies the hostname of the server that will be used for DNS lookups.
set::network-name <name-of-network>;
Specifies the name of the network on which this server is run. This value should be exactly the
same on all servers on a network.
set::default-server <server-name>;
Defines the name of the default server to tell users to connect to if this server is full.
set::services-server <server-name>;
Specifies the name of the server that the services bots are connected to. If services are not
run this value may be left out.
set::stats-server <server-name>;
Sets the name of the server on which the stats bot is located. If stats are not run this value
may be left out.
set::help-channel <network-help-channel>;
Sets the name of the help channel for this network.
set::prefix-quit <text-to-prefix-quit>;
Sets the text that will be used to prefix a quit message. If this value is set to 0 then the
standard "Quit:" is used.
set::cloak-keys { <value>; <value>; <value>; };
Sets the keys to be used to generate a +x host. This value must be the same on all servers or
the servers will not link. Each of the set::cloak-keys:: must be a numeric value greater than
10000. You must have exactly three values specified.
set::hiddenhost-prefix <prefix-value>;
Defines the prefix that will be used on hiddenhosts (+x) this is usually three or four letters
representing the network name.
set::hosts::local <locop-host-name>;
Defines the hostname that will be assigned to local opers when they set +x.
set::hosts::global <globop-host-name>;
Defines the hostname that will be assigned to global operators when they set +x.
set::hosts::coadmin <coadmin-host-name>;
Sets the hostname that will be assigned to co-admins when they set +x.
set::hosts::admin <admin-host-name>;
Defines the hostname that will be set for admins when they set +x.
set::hosts::servicesadmin <servicesadmin-host-name>;
Sets the hostname that will be given to services-admins when they set +x.
set::hosts::netadmin <netadmin-host-name>;
Sets the hostname that will be given to netadmins when they set +x.
set::hosts::host-on-oper-up <yes/no>;
If set to yes, the H/get_host flag will be honored and +x will be automatically set at /oper.
If set to no, the user must set +x manually to receive the oper host.
set::scan::endpoint <ip:port>;
Specifies the IP and port that the server will tell an incomming open proxy to connect to.
This must be a valid IP and port, in addition the port on the specified IP must be open and
able to accept connections. Therefore it is a good idea to specify the IP of your server
and a port you know is open.
set::scan::bantime <timevalue>;
A time value that defines the length of time that a user caught by the scanner will be
banned for. A time value is a numeric string with d meaning days, h meaning hours, m
meaning minutes, and s meaning seconds, for example 1d2h3m means 1 day, 2 hours, 3 minutes.
set::scan::timeout <timevalue>;
A time value specifying the amount of time that is spent waiting for a proxy to respond to
the scanner's request. A time value is a numeric string with d meaning days, h meaning
hours, m meaning minutes, and s meaning seconds, for example 1d2h3m means 1 day, 2 hours,
3 minutes.
24.0 Conclusion
Well hopefully that cleared up some of the issues you had with the new config file format.
There are some additional documents that may help you with other problems such as
doc/example.conf and doc/example.settings. If you need an example in more detail on how to use
these directives, refer to one of those files.