IRCD.CONF(5)

NAME

ircd.conf - Configuration file for the Internet Relay Chat Server

DESCRIPTION

This file, by default etc/ircd.conf, is read by the ircd server (see ircd(8)).

The config file consists of directives and comments. A directive consists of either a direct value, or other directives. Each directive has to end with a semicolon (;). A directive is always in lowercase.

Comments are denoted with either one of # or // While these two declare the rest of the line as comments, anything between /* and */ is considered a comment and gets ignored.

Some examples of correct directives are:

    directive1="value1";
    directive2 {
    	directive3="value3";
    	directive4="value4";
    };

Below is a description of each directive and the values they expect. Unless noted otherwise in the comments to each directive, each directive accepts strings as values. Accepted units for time are: seconds, minutes, hours, days, weeks, months, years, decades, centuries and millenia.

GLOBAL OPTIONS

If a directive is not listed below, it doesn't exist.

serverinfo {

    name="servername";
        This is the name used throughout IRC to refer to this server. Although this name does not have to correspond to an actual hostname of the server running the daemon, if this is to be leaf server, a resolvable address is recommended.

    aliasname="alternative servername";
        This is an alias for the server. Every client connecting using this name will get servermessages from this servername.

    description="Server description";
        This is a description of the server as seen in whois and links requests.

    networkname="Name of the Network";
        This is given to the clients as they connect. It is prudent, but not mandatory that all linked servers have the same value set at this directive.

    address="Serverip";
        This is the IP address for the daemon to bind to. This value has to be entered as a valid IP address.

    servermode=native|trircd4_compatible|pelennor|halcyon;
        This value determines whether this server will act with full capacity or maintain only those features available in tr-ircd version 4. You can also choose to make the ircd compatible with Bahamut Ircd Software of type Pelennor and Halcyon. This option will have no effect, if the ircd is compiled with STATIC_MODULES enabled.

    restartpass="Password";
        This is the password required to use the restart command. It has to be entered encrypted.

    diepass="Password";
        This is the password required to use the die command. It has to be entered encrypted.

    displaypass="Password";
        This is the password required to use the display command. It has to be entered encrypted.

    identity=nn;
        This is the unique identifier for the server, between 1 and 4095.

    aliasname="another.hostname";
        This is a definition for an alternative servername users will see, if they explicitely chose to connect to the server with this given name.

};  /* End of the serverinfo section. */

serverhide {

    enable=yes|no;
        This enables whether server hiding is enabled.

    flatten_links=yes|no;
        If this is set to yes all servers in a links request will be shown as connected to this server.

    links_from_file=yes|no;
        If this is set to yes, the links information is read from the etc/ircd.links file.

    links_oper_only=yes|no;
        This directive restricts the links command to IRC Operators.

    links_delay=timevalue;
        This directive defines the amount of time the event manager uses to write down the links file.

};  /* End of the serverhide section */

serveropts {

    ts_warn_delta=timevalue;
        This is the maximum lag between two servers before a warning is given.

    ts_max_delta=timevalue;
        This is the maximum lag allowed between two servers that are to be linked.

    save_maxclient_stats=yes|no;
        If this value is set to yes, the server retains the peak number of users.

    save_maxclient_stats_time=timevalue;
        If this value is set to yes, the server retains the date the peak number of users was reached.

    use_registerfilter=yes|no;
        If this value is set to yes, each user gets the mode +R upon login.

    use_short_motd=yes|no;
        This is the fakehost that opers get if staffhide is set to yes.

    hub=yes|no;
        This determines whether the shor form of the motd is shown to users on connection.

    language="Default Language";
        This is the default language a user sees on connecting. Only language names defined in the language extension files and "english" are valid.

};  /* End of the serveropts section */

connect_control {

    default_kline_time=timevalue;
        This value is used whenever a kline does not have the time attribute set.

    server_kline_address="email";
        This value will be shown to anyone who has been klined locally as the email address to apply to.

    network_kline_address="email";
        This value will be shown to anyone who has been klined from the network. This value should be the same as the value used by every other server in the network.

    wingate_notice=yes|no;
        If this is set to yes, users get a warning that they will be scanned by the address specified in monitor_host upon login.

    monitor_host="hostname";
        This value should correspond to your proxy control host if wingate_notice is set to yes.

    monitor_url="webpage";
        This value should point to an URL where you describe your networks policy about the usage of irc proxies.

    identd_use_tilde=yes|no;
        Setting this to yes uses the tilde ~ symbol for users without a proper identd reply.

    identd_timeout=timevalue;
        This value determines how long the server should wait for an identd connection.

    identd_complain=yes|no;
        If this value is set to yes, users without proper identd authentification get a message telling them to install identd.

    throttle_time=timevalue;
        This is the time that has to pass before the server will allow a second connection from the same host. Enter a time unit.

    throttle_count=nn;
        This is the maximum number of connections that will be allowed to connect before getting throttled.

};  /* End of the connect_control section */

flood_control {

    floodcontrol=nn;
        This value sets the max number of lines per second a client can send to a channel or user before the following lines will be throttled due to flood.

    motd_wait=timevalue;
        This value shows the amount of time which has to pass before using the motd command more than the number set in motd_max.

    motd_max=nn;
        This is the maximum number of motd attempts that will be answered by the server in the time specified by motd_wait.

    client_flood=nn;
        This is the number of bytes that a client may send in one second before it will be disconnected for flooding.

    no_oper_flood=yes|no;
        If this is set to no, opers are included in flood checks.

    anti_nick_flood=yes|no;
        This determines whether rapid nick changes constitute a flood.

    max_nick_time=timevalue;
        If anti_nick_flood is set to yes, this value denotes the amount of time which has to pass before using the nick command more than the number set in max_nick_changes.

    max_nick_changes=nn;
        If anti_nick_flood is set to yes, this is the maximum number of nick change attempts that will be allowed by the server in the time specified by max_nick_time.

    no_away_flood=yes|no;
        This determines whether rapid away changes constitute a flood.

    max_away_time=timevalue;
        If no_away_flood is set to yes, this value denotes the amount of time which has to pass before using the away command more than the number set in max_away_count.

    max_away_count=nn;
        If no_away_flood is set to yes, this is the maximum number of away uses that will be allowed by the server in the time specified by max_away_count.

    anti_spambot=yes|no;
        This value determines whether join and part floods should be detected.

    min_join_leave_time=timevalue;
        This is the amount of time in which a client is evaluated for spambot candidacy. Enter a time unit.

    min_join_leave_count=nn;
        This is the number of join or part commands that are enough for a client to be considered a spambot if executed within the period set in min_join_leave_time. Enter a positive number.

    join_leave_count_expire_time=timevalue;
        This is the amount of time in which a spambot is ignored by the server after exceeding the limits set by prior directives. Enter a time unit.

    oper_spam_countdown=nn;
        The number of join & part attempts the server allows before sending a message to &SPAMBOTS about the client.

    havent_read_conf;
        If this directive is encountered, the server does not start. Delete it.

};  /* End of the flood_control section */

operator_options {

    use_remoteconnect=yes|no;
        If this value is set to yes, operators can observe remote connections from the &CONNECTS channel.

    staffhide=yes|no;
        This determines whether operators get fakehosts.

    opers_can_choose_fakehost=yes|no;
        If this value is set to yes, users without proper identd authentification get a message telling them to install identd.

    staff_fakehost="hostname";
        This is the fakehost that opers get if staffhide is set to yes.

    no_oper_jupiter=yes|no;
        If this value is set to yes, operators cannot use the jupiter command directly.

    dont_check_remote_qline=yes|no;
        If this value is set to yes, the server checks local qlines against remote connects and issues a warning if a locally qlined nick is introduced remotely.

    havent_read_conf;
        If this directive is encountered, the server does not start. Delete it.

};  /* End of the operator_options section */

servicesconf {

    operserv_other_host="hostname";
        If OperServ has a different address than the rest of services, it should be defined here.

    chanserv_name="ChanServ";
        Set this to the nick of ChanServ in your network.

    nickserv_name="NickServ";
        Set this to the nick of NickServ in your network.

    operserv_name="OperServ";
        Set this to the nick of OperServ in your network.

    memoserv_name="MemoServ";
        Set this to the nick of MemoServ in your network.

    statserv_name="StatServ";
        Set this to the nick of StatServ in your network.
statserv_name="HelpServ";
        Set this to the nick of HelpServ in your network.

    services_name="hostname";
        Set this to the address of Services.

    hide_ulined_servers=yes|no;
        Set this to yes to hide the server name of U-lined clients.

};  /* End of the servicesconf section. */

admin {

    name="Name of the Administrator";
        This name is shown in admin requests.

    email="email";
        This email address is shown as the admin contact address.

    description="Free descriptive line";
        This is shown in admin requests as extra details.

};  /* End of the admin section. */

channelconf {

    moderated_hosts=yes|no;
        If this value is set to yes, the chanmode +M may be used to impose host based moderating in channels.

    channelname_bans=yes|no;
        If this value is set to yes, users may be denied entry to a channel based on what other channels they are on.

    halfops=yes|no;
        This enables or disables halfops.

    floodmode=yes|no;
        This enables or disables floodmode (+f).

    max_channels_per_user=nn;
        The maximum amount of channels a user may join.

    default_quit_msg="quitmessage";
        This is the message shown when a user quits without message.

};  /* End of the channelconf section. */

modules {

    module="modulename";
        This directive facilitates the loading of additional modules, allowing additional functionality without having to go to great lengths. Enter the name of the file containing the module.

    path="modulepath";
        Modules added with the module directive are searched for in MODPATH, LANGPATH and this directory.

};  /* End of the modules section. */

files {

    load="filename";
        This directive facilitates the loading of additional, old style configuration files. Such files are used to keep the main configuration file clean of repetitive lines such as the kline.

};  /* End of the files section. */

operator {

    name="userid";
        This is the userid of the operator.

    user="hostmask";
        This is the hostmask from which this operator can login.

    password="password";
        This is the password required to oper to this operator. It has to be entered encrypted.

    class=nn;
        This is the connection class that this operator gets transferred to after successfully opering.

    die=yes|no;
        This value determines whether the operator has access to the die command.

    admin=yes|no;
        This value determines whether the operator is a Server Admin.

    restart=yes|no;
        This value determines whether the operator has access to the restart command.

    sadmin=yes|no;
        This value determines whether the operator is a Services Admin.

};  /* End of the operator section. */

class {

    class=nn;
        This is the number identifying this connection class.

    pingtime=timevalue;
        This the time after which the server will ping an inactive user to determine whether the connection is still alive.

    connectfreq=nn;
        This is the time interval at which the server attempts to establish a connection to servers bearing this class. Enter 0 for client classes, a time unit for servers.

    max_links=nn;
        This is the maximum number of clients that will be allowed to connect using this class.

    sendq=size;
        This is the total bandwidth allocated to this class.

};  /* End of the class section. */

listen {

    This directive may include multiple subsections of the following format. Every subsection defines a combination of port and interface IP, where listeners are started.

    {

        port=nn,nn..nn,nn;
            This directive lists the ports the server listens on. The format accepted by this directive is a list of port numbers or port ranges separated by commas (,). A port range consists of the lower port separated by two dots (..) from the higher port.

        ip="serverip";
            This is the IP the server binds on the ports listed above to. If this and the next directive are not entered, the ports listed are bound to all interfaces of the server.

        host="hostname";
            This is the hostname the server listens for the ports listed above. If this and the previous directive are not entered, the ports listed are bound to all interfaces of the server.

    };

};  /* End of the listen section. */

auth {

    user="hostmask";
        The ident and hostmask that this auth directive applies to.

    password="password";
        If this directive is set this password has to be entered via the PASS command to use this auth.

    spoof_notice=yes|no;
        If this directive is set to yes, a notice will be sent each time an operator uses hostmasking.

    spoof="servername";
        This is the address that is shown as the hostname of the operator using hostmasking.

    exceed_limit=yes|no;
        If this directive is set to yes, users connecting with this auth will be exempt from flood checks.

    kline_exempt=yes|no;
        If this directive is set to yes, users connecting with this auth are unaffected by klines matching their hosts.

    restricted=yes|no;
        If this directive is set to yes, users connecting with this auth will not be oppable in channels.

    redirserv="servername";
        If and when the class this auth uses is full, this server is shown along with the port set in redirport.

    redirport=nn;
        If and when the class this auth uses is full, this port is shown alongside redirserv.

    class=nn;
        This is the class this auth uses.

};  /* End of the auth section. */

connect {

    name="servername";
        This is the name expected of the connecting server.

    host="servername";
        This is the actual hostname of the server expected.

    send_password="password";
        This is the password sent to the server as part of the handshake. This must correspond to the accept_password of the server to which the connection will be established.

    accept_password="password";
        This is the password the other server is expected to send as part of the handshake. It has to be entred encrypted.

    encrypted=yes|no;
        This determines whether data transfer between the servers is encrypted. Please note that encryption via RC4 is a CPU intensive operation.

    compressed=yes|no;
        This determines whether data transfer between the servers is compressed.

    autoconnect=yes|no;
        If this directive is set to yes, the server tries to automatically connect to this server as set in the class directive.

    aftype=ipv4|ipv6;
        This determines if the connection is made with IPv4 or IPv6 interfaces.

    ishub=yes|no;
        This determines whether the other server is accepted as a hub by this server.

    class=nn;
        This is the class used by this connect directive.

    port=nn;
        This is the port the connection will be made to.

    ultimate=yes|no;
        This determines whether the other server is accepted as a U-Lined server by this server.
}; /* End of the connect section. */

service {

    name="name";
        This is the name of the service using this directive.

    host="hostname";
        This is the hostname the service must have to be able to connect through this service directive. Either one of host or ip needed for a service to connect.

    ip="Serverip";
        This is the IP address the service must have to be able to connect through this service directive. Either one of IP or host is needed for a service to connect.

    password="password";
        This is the password the service must use during connection to be allowed to connect. It has to be entered encrypted

    ultimate=yes|no;
        This determines whether the service is given U-line privileges.

    send_akill=yes|no;
        This determines whether the service can create Akills.

    class=nn;
        This determines the connection class of the connecting service
}; /* End of the service section. */

EXAMPLE

serverinfo {
    name = "testserv.time.net";
    description = "timenet test server";
    networkname = "timenet";
    networkdesc = "timenet test server";
    address = "212.156.4.5";
    servermode = native;
    restartpass = "timediril";
    diepass = "timegeber";
    displaypass = "timegoester";
    identity = 42;
    aliasname = "irc.test.net";
};
serverhide {
    enable = no;
    flatten_links = no;
    links_from_file = no;
    links_oper_only = no;
    links_delay = 2 hours;
}
serveropts {
    ts_warn_delta = 12 minutes;
    ts_max_delta = 1 minute;
    save_maxclient_stats = yes;
    save_maxclient_stats_time = 1 hour;
    use_registerfilter = no;
    use_short_motd = no;
    hub = yes;
#   language = "english";
};

connect_control {
    default_kline_time = 30 seconds;
    server_kline_address = "kline@local.tile.net";
    network_kline_address = "kline@time.net";
    wingate_notice = yes;
    monitor_host = "proxyscan.time.net";
    monitor_url = "www.hadiko.de";
    identd_use_tilde = no;
    identd_timeout = 5 seconds;
    identd_complain = no;
    throttle_time = 30 seconds;
    throttle_count = 10;
};
flood_control {
    floodcontrol = 10;
    motd_wait = 10 seconds;
    motd_max = 3;
    client_flood = 2560 ;
    no_oper_flood = yes;
    anti_nick_flood = yes ;
    max_nick_time = 20 seconds;
    max_nick_changes = 5 ;
    no_away_flood = yes;
    max_away_time = 3 minutes;
    max_away_count = 5;
    anti_spambot = yes;
    min_join_leave_time = 1 minute;
    max_join_leave_count = 25;
    join_leave_count_expire_time = 2 minutes;
    oper_spam_countdown = 5;
};
operator_options {
    use_remoteconnect = yes;
    dont_check_remote_qline = no;
    staff_fakehost = "staff.time.net";
    staffhide = yes;
    opers_can_choose_fakehost = yes;
    no_oper_jupiter = yes;
};
servicesconf {
    operserv_other_host = "rootserv.tr";
    chanserv_name = "ChanServ";
    nickserv_name = "NickServ";
    operserv_name = "Haydar";
    memoserv_name = "MemoServ";
    statserv_name = "StatServ";
    helpserv_name = "HelpServ";
    services_name = "services.tr";
    hide_ulined_servers = yes;
};
admin {
    name = "Administration";
    email = "trircd@time.net";
    description = "timenet irc administration";
};

channelconf {
    moderated_hosts = no;
    channelname_bans = no;
    halfops = yes;
    floodmode = no;
    max_channels_per_user = 10 ;
    default_quit_message = "timenet - where time stops";
};
modules {
    path = "/home/ircd/lib/contrib";
    module = "m_locops.so";
};
files {
    load = "klines.conf";
    load = "glines.conf";
};
operator {
    name = "talesin";
    user = "*@*";
    password = "excalibur";
    class = 1;
    die = no;
    admin = yes;
    restart = yes;
    sadmin = yes;
};
class {
    class = 1;
    pingtime = 1 minute;
    connectfreq = 0;
    max_links = 512;
    sendq = 350 kb;
};
class {
    class = 2;
    pingtime = 5 minutes;
    connectfreq = 0;
    max_links = 24;
    sendq = 350 kb;
};
class {
    class = 50;
    pingtime = 1 minute;
    connectfreq = 30 seconds;
    max_links = 24;
    sendq = 1029 kb;
};
listen {
    port = 15555, 16660 .. 16670, 17000, 50010;
    ip = "212.156.4.5";
    host = "chat.ttnet.net.tr";
};
auth {
    user = "*@*";
    class = 2;
};
connect {
    name = "tales.time.net";
    host = "chat.ttnet.net.tr";
    send_password = "timetale";
    accept_password = "taletime";
    encrypted = no;
    compressed = yes;
    autoconnect = no;
    ishub = yes;
    class = 50;
    port = 7000;
    ultimate = no;
};
service {
    name = "SockServ";
    host = "chat.ttnet.net.tr";
    ip = "212.156.4.5"
    password = "servpass";
    ultimate = yes;
    send_akill = no;
    class = 30;
}

FURTHER EXAMPLES

See doc/example.conf

AUTHOR

TR-IRCd Development Team <development@tr-ircd.net>

SEE ALSO

ircd(8)