summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2013-04-14 18:24:38 +0000
committermichael <michael@82007160-df01-0410-b94d-b575c5fd34c7>2013-04-14 18:24:38 +0000
commitb1a36302e3914741007329cefa407e635bd72d67 (patch)
tree33a00577b69442e4e25f9b1f4e1af8fb996d3dbe
parent2983801517a96a2256a7c1761a6c40d711f67585 (diff)
- Renamed example.conf to reference.conf
- Due to upcoming feature implementation, resv{} blocks are no longer stackable git-svn-id: svn://svn.ircd-hybrid.org/svnroot/ircd-hybrid/trunk@1823 82007160-df01-0410-b94d-b575c5fd34c7
-rw-r--r--INSTALL6
-rw-r--r--NEWS2
-rw-r--r--README4
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/Makefile.in2
-rw-r--r--doc/example.efnet.conf1283
-rw-r--r--doc/example.quick.conf370
-rw-r--r--doc/guidelines.txt2
-rw-r--r--doc/messages.txt2
-rw-r--r--doc/reference.conf (renamed from doc/example.conf)30
-rw-r--r--src/conf_parser.c452
-rw-r--r--src/conf_parser.y21
12 files changed, 261 insertions, 1915 deletions
diff --git a/INSTALL b/INSTALL
index 949730a..6520395 100644
--- a/INSTALL
+++ b/INSTALL
@@ -17,10 +17,6 @@
| the possible options you can pass to configure. |
+------------------------------------------------------------------------+
- ***** EFNET NOTE *****
- You should use the example.efnet.conf instead of example.conf.
- **********************
-
----------------------------------------------------------------------
HOW TO BUILD
@@ -30,7 +26,7 @@
ircd-hybrid.
1. Read the NEWS file to find out about the exciting new features in
- this version. Other good reads are doc/example.conf, and README.
+ this version. Other good reads are doc/reference.conf, and README.
2. Run the configure script. It will create config.h and the
Makefiles to match your system. The paths are now handled
diff --git a/NEWS b/NEWS
index 4bca3b0..02759ed 100644
--- a/NEWS
+++ b/NEWS
@@ -138,7 +138,7 @@ o) Implemented full services support, including but not limited to the
o) Removed RKLINE and RXLINE commands. Regular expression based bans should
only be added via ircd.conf
o) Added 'globops', 'restart', 'dline', 'undline' and 'module' operator
- privilege flags. Read doc/example.conf for further explanation of what
+ privilege flags. Read doc/reference.conf for further explanation of what
these flags control
o) Removed Idle-time klines
o) Cleaned up modules API. Old modules won't work anymore
diff --git a/README b/README
index 366aa18..22c0be1 100644
--- a/README
+++ b/README
@@ -13,7 +13,7 @@ Contact Information:
* - Reading INSTALL is now a must, as the old DPATH is now specified *
* when configure is run. *
* You now need to ./configure --prefix="/path/to/install/it" *
- * - The old config format WILL NOT WORK. Please see doc/example.conf ! *
+ * - The old config format WILL NOT WORK. Please see doc/reference.conf !*
* - The old kline, dline, xline format WILL NOT WORK. *
*************************************************************************
@@ -60,7 +60,7 @@ Feature Specific Requirements:
- If you are wondering why config.h no longer exists, it's because most
things that were once in config.h are now specified in the 'general'
- block of ircd.conf. Look at example.conf for more information about
+ block of ircd.conf. Look at reference.conf for more information about
these options.
- /etc/resolv.conf must exist for the resolver to work.
diff --git a/doc/Makefile.am b/doc/Makefile.am
index 775eb45..d842050 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -1,3 +1,3 @@
AUTOMAKE_OPTIONS = foreign
man_MANS = ircd.8
-dist_sysconf_DATA = example.conf example.efnet.conf
+dist_sysconf_DATA = reference.conf
diff --git a/doc/Makefile.in b/doc/Makefile.in
index af47ebf..c473e36 100644
--- a/doc/Makefile.in
+++ b/doc/Makefile.in
@@ -258,7 +258,7 @@ top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
AUTOMAKE_OPTIONS = foreign
man_MANS = ircd.8
-dist_sysconf_DATA = example.conf example.efnet.conf
+dist_sysconf_DATA = example.conf
all: all-am
.SUFFIXES:
diff --git a/doc/example.efnet.conf b/doc/example.efnet.conf
deleted file mode 100644
index f76e27c..0000000
--- a/doc/example.efnet.conf
+++ /dev/null
@@ -1,1283 +0,0 @@
-/* doc/example.efnet.conf - ircd-hybrid-8 EFnet Example configuration file
- * Copyright (C) 2000-2013 Hybrid Development Team
- *
- * Written by ejb, wcampbel, db, leeh and others
- * Other example configurations can be found in the source dir under
- * doc/.
- *
- * $Id$
- */
-
-/* IMPORTANT NOTES:
- *
- * auth {} blocks MUST be specified in order of precedence. The first one
- * that matches a user will be used. So place spoofs first, then specials,
- * then general access.
- *
- * Shell style (#), C++ style (//) and C style comments are supported.
- *
- * Files may be included by either:
- * .include "filename"
- * .include <filename>
- *
- * Times/durations are written as:
- * 12 hours 30 minutes 1 second
- *
- * Valid units of time:
- * year, month, week, day, hour, minute, second
- *
- * Valid units of size:
- * megabyte/mbyte/mb, kilobyte/kbyte/kb, byte
- *
- * Sizes and times may be singular or plural.
- */
-
-/* EFNET NOTE:
- *
- * This configuration file is a BASIC configuration file for use
- * on EFnet. You MUST still take the time to set this file up
- * properly.
- *
- * DISCLAIMER: This file was submitted by Disciple@EFnet and has
- * since been modified by the Hybrid team.
- */
-
-/*
- * serverinfo {}: contains information about the server
- */
-serverinfo {
- /*
- * name: the name of this server. This cannot be changed at runtime.
- */
- name = "efnet.irc";
-
- /*
- * sid: a server's unique ID. This is three characters long and must
- * be in the form [0-9][A-Z0-9][A-Z0-9]. The first character must be
- * a digit, followed by 2 alpha-numerical letters.
- * NOTE: The letters must be capitalized. This cannot be changed at runtime.
- */
- sid = "0HY";
-
- /*
- * description: the description of the server.
- */
- description = "ircd-hybrid test server";
-
- /*
- * network info: the name and description of the network this server
- * is on. Shown in the 005 reply and used with serverhiding.
- */
- network_name = "EFnet";
- network_desc = "Eris Free Network";
-
- /*
- * hub: allow this server to act as a hub and have multiple servers
- * connected to it.
- */
- hub = no;
-
- /*
- * vhost: the IP to bind to when we connect outward to ipv4 servers.
- * This should be an ipv4 IP only, or "*" for INADDR_ANY.
- */
- #vhost = "192.169.0.1";
-
- /*
- * vhost6: the IP to bind to when we connect outward to ipv6 servers.
- * This should be an ipv6 IP only, or "*" for INADDR_ANY.
- */
- #vhost6 = "3ffe:80e8:546::2";
-
- /* max_clients: the maximum number of clients allowed to connect */
- max_clients = 512;
-
- /*
- * max_nick_length: only applies to local clients. Must be in the
- * range of 9 to 30. Default is 9 if nothing else is specified.
- */
- max_nick_length = 9;
-
- /*
- * max_topic_length: only applies to topics set by local clients.
- * Must be in the range of 80 to 300. Default is 80 if nothing
- * else is specified.
- */
- max_topic_length = 160;
-
- /*
- * rsa_private_key_file: the path to the file containing our
- * rsa key for cryptlink.
- *
- * Example command to store a 2048 bit RSA keypair in
- * rsa.key, and the public key in rsa.pub:
- *
- * openssl genrsa -out rsa.key 2048
- * openssl rsa -in rsa.key -pubout -out rsa.pub
- * chown <ircd-user>.<ircd.group> rsa.key rsa.pub
- * chmod 0600 rsa.key
- * chmod 0644 rsa.pub
- */
- #rsa_private_key_file = "/usr/local/ircd/etc/rsa.key";
-
- /*
- * ssl_certificate_file: the path to the file containing our
- * ssl certificate for encrypted client connection.
- *
- * This assumes your private RSA key is stored in rsa.key. You
- * MUST have an RSA key in order to generate the certificate
- *
- * openssl req -new -days 365 -x509 -key rsa.key -out cert.pem
- *
- * See http://www.openssl.org/docs/HOWTO/certificates.txt
- *
- * Please use the following values when generating the cert
- *
- * Organization Name: Network Name
- * Organization Unit Name: changme.someirc.net
- * Common Name: irc.someirc.net
- * E-mail: you@domain.com
- */
- #ssl_certificate_file = "/usr/local/ircd/etc/cert.pem";
-
- /*
- * ssl_dh_param_file:
- *
- * Path to the PEM encoded Diffie-Hellman parameter file.
- * DH parameters are strictly required when using ciphers
- * with EDH (ephemeral Diffie-Hellman) key exchange.
- *
- * A DH parameter file can be created by running:
- *
- * openssl dhparam -out dhparam.pem 1024
- *
- * Prime size must be at least 1024 bits. Further information
- * regarding specific OpenSSL dhparam command-line options
- * can be found in the OpenSSL manual.
- */
- #ssl_dh_param_file = "/usr/local/ircd/etc/dhparam.pem";
-
- /*
- * ssl_cipher_list:
- *
- * List of ciphers that are supported by _this_ server. Can be used to
- * enforce specific ciphers for incoming SSL/TLS connections.
- * If a client (which also includes incoming server connections) isn't
- * capable of any cipher listed below, the connection will simply be
- * rejected.
- *
- * A list of supported ciphers can be obtained by running:
- *
- * openssl ciphers -ssl3 -tls1 -v
- *
- * Multiple ciphers are separated by colons. The order of preference is
- * from left to right.
- */
- #ssl_cipher_list = "DHE-RSA-AES256-SHA:AES256-SHA";
-
- /*
- * ssl_server_method:
- * ssl_client_method:
- *
- * SSL/TLS methods we provide for incoming (server method) and
- * outgoing (client method) SSL/TLS connections.
- * This can be either sslv3 for SSLv3, and/or tlsv1 for TLSv1.
- */
- #ssl_server_method = tlsv1, sslv3;
- #ssl_client_method = tlsv1;
-};
-
-/*
- * admin {}: contains admin information about the server
- */
-admin {
- name = "EFnet Admin";
- description = "Main Server Administrator";
- email = "<irc-admin@efnet.irc>";
-};
-
-/*
- * class {}: contains information about classes for users
- */
-class {
- /* name: the name of the class */
- name = "users";
-
- /*
- * ping_time: how often a client must reply to a PING from the
- * server before they are dropped.
- */
- ping_time = 90 seconds;
-
- /*
- * number_per_ip: how many local users are allowed to connect
- * from one IP (optional)
- */
- number_per_ip = 2;
-
- /*
- * max_local: how many local users are allowed to connect
- * from one ident@host (optional)
- */
- max_local = 2;
-
- /*
- * max_global: network-wide limit of users per ident@host (optional)
- */
- max_global = 10;
-
- /*
- * max_number: the maximum number of users allowed in this class (optional)
- */
- max_number = 100;
-
- /*
- * the following lines are optional and allow you to define
- * how many users can connect from one /NN subnet
- */
- cidr_bitlen_ipv4 = 24;
- cidr_bitlen_ipv6 = 120;
- number_per_cidr = 16;
-
- /*
- * sendq: the amount of data allowed in a clients send queue before
- * they are dropped.
- */
- sendq = 100 kbytes;
-
- /*
- * recvq: maximum amount of data in a clients receive queue before
- * they are dropped for flooding. Defaults to 2560 if the chosen
- * value isn't within the range of 512 to 8000.
- */
- recvq = 2560 bytes;
-};
-
-class {
- name = "opers";
-
- /*
- * contrary to seeming popular belief, setting ping time
- * higher for an oper is NOT doing them a favor.
- * Since if a link is dead its dead and it means
- * you have to use another nick long enough to kill the old one :-)
- * Its much better to use a fairly standard 90 second ping time
- */
- ping_time = 90 seconds;
- number_per_ip = 10;
- max_number = 100;
- sendq = 1 mbyte;
-
- /*
- * min_idle: minimum idle time that is shown in /whois
- */
- min_idle = 3 hours;
-
- /*
- * max_idle: maximum idle time that is shown in /whois
- */
- max_idle = 8 hours;
-
- /*
- * flags:
- *
- * random_idle - idle time is randomly selected within the
- * range of min_idle to max_idle
- * hide_idle_from_opers - fake idle time will be shown to operators, too
- */
- flags = random_idle, hide_idle_from_opers;
-};
-
-class {
- name = "server";
-
- /*
- * Same thing here. It's a fallacy to think increasing
- * ping time for servers is a "good idea." All it leads to
- * is "ghosting" on one end. Not a good idea.
- */
- ping_time = 90 seconds;
-
- /*
- * connectfreq: only used in server classes. Specifies the delay
- * between autoconnecting to servers.
- *
- * Both comstud and I recommend 10 minutes a few years ago.
- * 15 minutes might be right now. The reason you don't want it too
- * low is, you make the servers reconnect too quickly with
- * a large sendq, and they _will_ nick collide. badly. 5 minutes
- * IS way too short.
- */
- connectfreq = 15 minutes;
-
- /* max number: the amount of servers to autoconnect to */
- max_number = 1;
-
- /* sendq: servers need a higher sendq as they send more data */
- sendq = 15 megabytes;
-};
-
-/*
- * listen {}: contains information about the ports ircd listens on
- */
-listen {
- /*
- * port: the specific port to listen on. If no host is specified
- * before, it will listen on all available IPs.
- *
- * Ports are separated via a comma, a range may be specified using ".."
- */
-
- /* port: listen on all available IPs, ports 6665 to 6669 */
- port = 6665 .. 6669;
-
- /*
- * Listen on 192.168.0.1/6697 with ssl enabled and hidden from STATS P
- * unless you are an administrator.
- *
- * NOTE: The "flags" directive has to come before "port". Always!
- *
- * Currently available flags are:
- *
- * ssl - Port may only accept TLS/SSL connections
- * server - Only server connections are permitted
- * hidden - Port is hidden from /stats P, unless you're an admin
- */
- flags = hidden, ssl;
- host = "192.168.0.1";
- port = 6697;
-
- /*
- * host: set a specific IP/host the ports after the line will listen
- * on. This may be ipv4 or ipv6.
- */
- host = "1.2.3.4";
- port = 7000, 7001;
-
- host = "3ffe:1234:a:b:c::d";
- port = 7002;
-};
-
-/*
- * auth {}: allow users to connect to the ircd
- */
-auth {
- /*
- * user: the user@host allowed to connect. Multiple user
- * lines are permitted per auth block.
- */
- user = "*@172.16.0.0/12";
- user = "*test@123D:B567:*";
-
- /* password: an optional password that is required to use this block */
- password = "letmein";
-
- /*
- * encrypted: controls whether the auth password above has been
- * encrypted.
- */
- encrypted = yes;
-
- /*
- * spoof: fake the users host to this. This is free-form,
- * just do everyone a favor and don't abuse it. ('=' prefix on /stats I)
- */
- spoof = "I.still.hate.packets";
-
- /* class: the class the user is placed in */
- class = "opers";
-
- /*
- * need_password - don't allow users who haven't supplied the correct
- * password to connect using another auth{} block
- * ('&' prefix on /stats I if disabled)
- * need_ident - require the user to have identd to connect ('+' prefix on /stats I)
- * spoof_notice - enable spoofing notification to admins
- * exceed_limit - allow a user to exceed class limits ('>' prefix on /stats I)
- * kline_exempt - exempt this user from k/glines ('^' prefix on /stats I)
- * gline_exempt - exempt this user from glines ('_' prefix on /stats I)
- * resv_exempt - exempt this user from resvs ('$' prefix on /stats I)
- * no_tilde - remove ~ from a user with no ident ('-' prefix on /stats I)
- * can_flood - allow this user to exceed flood limits ('|' prefix on /stats I)
- * webirc - enables WEBIRC authentication for web-based clients such as Mibbit
- * ('<' prefix on /stats I)
- */
- flags = need_password, spoof_notice, exceed_limit, kline_exempt,
- gline_exempt, resv_exempt, no_tilde, can_flood;
-};
-
-auth {
- /*
- * redirect: the server and port to redirect a user to. A user does
- * not have to obey the redirection, the ircd just suggests an alternative
- * server for them.
- */
- redirserv = "this.is.not.a.real.server";
- redirport = 6667;
-
- user = "*.server";
-
- /* class: a class is required even though it is not used */
- class = "users";
-};
-
-auth {
- user = "*@*";
- class = "users";
- flags = need_ident;
-};
-
-/*
- * operator {}: defines ircd operators
- *
- * ircd-hybrid no longer supports local operators, privileges are
- * controlled via flags.
- */
-operator {
- /* name: the name of the oper */
- name = "sheep";
-
- /*
- * user: the user@host required for this operator. Multiple
- * user="" lines are supported.
- */
- user = "*sheep@192.168.0.0/16";
- user = "*@127.0.0.0/8";
-
- /*
- * password: the password required to oper. By default this will
- * need to be encrypted by using the provided mkpasswd tool.
- * Several password hash algorithms are available depending
- * on your system's crypt() implementation. For example, a modern
- * glibc already has support for SHA-256/512, and MD5 encryption
- * algorithms.
- */
- password = "$5$x5zof8qe.Yc7/bPp$5zIg1Le2Lsgd4CvOjaD20pr5PmcfD7ha/9b2.TaUyG4";
-
- /*
- * encrypted: controls whether the oper password above has been
- * encrypted.
- */
- encrypted = yes;
-
- /*
- * rsa_public_key_file: the public key for this oper when using Challenge.
- * A password should not be defined when this is used, see
- * doc/challenge.txt for more information.
- */
-# rsa_public_key_file = "/usr/local/ircd/etc/oper.pub";
-
- /* class: the class the oper joins when they successfully /oper */
- class = "opers";
-
- /*
- * umodes: default usermodes opers get when they /oper. If defined,
- * it will override oper_umodes settings in general {}.
- * Available usermodes:
- *
- * +b - bots - See bot and drone flooding notices
- * +c - cconn - Client connection/quit notices
- * +C - cconn_full - Client connection/quit notices full
- * +D - deaf - Don't receive channel messages
- * +d - debug - See debugging notices
- * +e - external - See remote server connection and split notices
- * +f - full - See auth{} block full notices
- * +G - softcallerid - Server Side Ignore for users not on your channels
- * +g - callerid - Server Side Ignore (for privmsgs etc)
- * +H - hidden - Hides operator status to other users
- * +i - invisible - Not shown in NAMES or WHO unless you share a
- * a channel
- * +j - rej - See rejected client notices
- * +k - skill - See server generated KILL messages
- * +l - locops - See LOCOPS messages
- * +n - nchange - See client nick changes
- * +s - servnotice - See general server notices
- * +u - unauth - See unauthorized client notices
- * +w - wallop - See server generated WALLOPS
- * +y - spy - See LINKS, STATS, TRACE notices etc.
- * +z - operwall - See oper generated WALLOPS
- */
-# umodes = locops, servnotice, operwall, wallop;
-
- /*
- * privileges: controls the activities and commands an oper is
- * allowed to do on the server. All options default to no.
- * Available options:
- *
- * module - allows MODULE
- * global_kill - allows remote users to be /KILL'd
- * remote - allows remote SQUIT and CONNECT
- * remoteban - allows remote KLINE/UNKLINE
- * dline - allows DLINE
- * undline - allows UNDLINE
- * kline - allows KILL and KLINE
- * unkline - allows UNKLINE
- * gline - allows GLINE
- * xline - allows XLINE
- * globops - allows GLOBOPS
- * operwall - allows OPERWALL
- * nick_changes - allows oper to see nickchanges via usermode +n
- * rehash - allows oper to REHASH config
- * die - allows DIE
- * restart - allows RESTART
- * set - allows SET
- * admin - gives admin privileges. admins for example,
- * may see the real IP addresses of servers.
- */
- flags = global_kill, remote, kline, unkline, xline, globops, restart,
- die, rehash, nick_changes, admin, operwall, module;
-};
-
-/*
- * connect {}: controls servers we connect to
- */
-connect {
- /* name: the name of the server */
- name = "irc.uplink.com";
-
- /*
- * host: the host or IP to connect to. If a hostname is used it
- * must match the reverse dns of the server.
- */
- host = "192.168.0.1";
-
- /*
- * vhost: the IP to bind to when we connect outward to servers.
- * serverinfo::vhost and serverinfo::vhost6 will be overridden
- * by this directive.
- */
- vhost = "192.168.0.2";
-
- /*
- * passwords: the passwords we send (OLD C:) and accept (OLD N:).
- * The remote server will have these passwords reversed.
- */
- send_password = "password";
- accept_password = "anotherpassword";
-
- /*
- * encrypted: controls whether the accept_password above has been
- * encrypted.
- */
- encrypted = no;
-
- /* port: the port to connect to this server on */
- port = 6666;
-
- /*
- * hub_mask: the mask of servers that this server may hub. Multiple
- * entries are permitted
- */
- hub_mask = "*";
-
- /*
- * leaf_mask: the mask of servers this server may not hub. Multiple
- * entries are permitted. Useful for forbidding EU -> US -> EU routes.
- */
-# leaf_mask = "*.uk";
-
- /* class: the class this server is in */
- class = "server";
-
- /*
- * ssl_cipher_list:
- *
- * List of ciphers that the server we are connecting to must support.
- * If the server isn't capable of any cipher listed below, the
- * connection will simply be rejected.
- * Can be used to enforce stronger ciphers, even though this option
- * is not necessarily required to establish a SSL/TLS connection.
- *
- * Multiple ciphers are separated by colons. The order of preference
- * is from left to right.
- */
- #ssl_cipher_list = "DHE-RSA-AES256-SHA:AES256-SHA";
-
- /*
- * autoconn - controls whether we autoconnect to this server or not,
- * dependent on class limits. By default, this is disabled.
- * ssl - Initiates a TLS/SSL connection.
- */
-# flags = autoconn, ssl;
-};
-
-connect {
- name = "ipv6.some.server";
- host = "3ffd:dead:beef::1";
- send_password = "password";
- accept_password = "password";
- port = 6666;
-
- /*
- * aftype: controls whether the connection uses "ipv4" or "ipv6".
- * Default is ipv4.
- */
- aftype = ipv6;
- class = "server";
-};
-
-/*
- * cluster {}: servers that share klines/unkline/xline/unxline/resv/unresv/locops
- * automatically
- */
-cluster {
- /*
- * name: the server to share with, this can take wildcards
- *
- * NOTE: only local actions will be clustered, meaning if
- * the server receives a shared kline/unkline/etc, it
- * will not be propagated to clustered servers.
- *
- * Remote servers are not necessarily required to accept
- * clustered lines, they need a shared{} for *THIS* server
- * in order to accept them.
- */
- name = "*.arpa";
-
- /*
- * type: list of what to share, options are as follows:
- * dline - share dlines
- * undline - share undlines
- * kline - share klines
- * unkline - share unklines
- * xline - share xlines
- * unxline - share unxlines
- * resv - share resvs
- * unresv - share unresvs
- * locops - share locops
- * all - share all of the above (default)
- */
- type = kline, unkline, locops, xline, resv;
-};
-
-/*
- * shared {}: users that are allowed to remote kline
- *
- * NOTE: This can be effectively used for remote klines.
- * Please note that there is no password authentication
- * for users setting remote klines. You must also be
- * /oper'd in order to issue a remote kline.
- */
-shared {
- /*
- * name: the server the user must be on to set klines. If this is not
- * specified, the user will be allowed to kline from all servers.
- */
- name = "irc2.some.server";
-
- /*
- * user: the user@host mask that is allowed to set klines. If this is
- * not specified, all users on the server above will be allowed to set
- * a remote kline.
- */
- user = "oper@my.host.is.spoofed";
-
- /*
- * type: list of what to share, options are as follows:
- * dline - allow oper/server to dline
- * undline - allow oper/server to undline
- * kline - allow oper/server to kline
- * unkline - allow oper/server to unkline
- * xline - allow oper/server to xline
- * unxline - allow oper/server to unxline
- * resv - allow oper/server to resv
- * unresv - allow oper/server to unresv
- * locops - allow oper/server to locops - only used for servers that cluster
- * all - allow oper/server to do all of the above (default)
- */
- type = kline, unkline, resv;
-};
-
-/*
- * kill {}: users that are not allowed to connect
- * Oper issued klines will be added to the specified kline config
- */
-kill {
- user = "bad@*.hacked.edu";
- reason = "Obviously hacked account";
-};
-
-kill {
- user = "^O[[:alpha:]]?[[:digit:]]+(x\.o|\.xo)$@^[[:alnum:]]{4}\.evilnet.tld$";
-
- /*
- * NOTE: You have to set type=regex; when using a regular expression
- * based user entry
- */
- type = regex;
-};
-
-/*
- * deny {}: IPs that are not allowed to connect (before DNS/ident lookup)
- * Oper issued dlines will be added to the specified dline config
- */
-deny {
- ip = "10.0.1.0/24";
- reason = "Reconnecting vhosted bots";
-};
-
-/*
- * exempt {}: IPs that are exempt from deny {} and Dlines
- *
- * EFnet Note: We really suggest to enable general::stats_e_disabled
- * if you plan to exempt EFnet server IPs you don't want to show to
- * other operators and/or administrators through "STATS e".
- */
-exempt {
- ip = "192.168.0.0/16";
-};
-
-/*
- * resv {}: nicks and channels users may not use/join
- */
-resv {
- /* reason: the reason for the proceeding resv's */
- reason = "There are no services on this network";
-
- /* resv: the nicks and channels users may not join/use */
- nick = "nickserv";
- nick = "chanserv";
- nick = "operserv";
- nick = "JUPES";
- nick = "JUPE";
- nick = "CH?NF?X"; # CHANFIX (services.int)
-
- /* These are totally optional, but may be a good idea */
- nick = "oper";
- nick = "ircop";
- nick = "op";
- nick = "ident";
- nick = "pass";
- channel = "#jupedchan";
-
- /* resv: wildcard masks are also supported in nicks only */
- reason = "Clone bots";
- nick = "clone*";
-};
-
-/*
- * gecos {}: The X: replacement, used for banning users based on
- * their "realname".
- */
-gecos {
- name = "*sex*";
- reason = "Possible spambot";
-};
-
-gecos {
- name = "sub7server";
- reason = "Trojan drone";
-};
-
-gecos {
- name = "^\[J[0o]hn Do[3e]\]-[0-9]{2,5}$";
-
- /*
- * NOTE: You have to set type=regex; when using a regular expression
- * based name entry
- */
- type = regex;
-};
-
-/*
- * channel {}: The channel block contains options pertaining to channels
- */
-channel {
- /*
- * disable_fake_channels: this option, if set to 'yes', will
- * disallow clients to create or join channels that have one
- * of the following ASCII characters in their name:
- *
- * 2 | bold
- * 3 | mirc color
- * 15 | plain text
- * 22 | reverse
- * 29 | italic
- * 31 | underline
- * 160 | non-breaking space
- */
- disable_fake_channels = yes;
-
- /*
- * restrict_channels: reverse channel RESVs logic, only reserved
- * channels are allowed
- */
- restrict_channels = no;
-
- /*
- * knock_delay: The amount of time a user must wait between issuing
- * the knock command.
- */
- knock_delay = 5 minutes;
-
- /*
- * knock_delay_channel: How often a knock to any specific channel
- * is permitted, regardless of the user sending the knock.
- */
- knock_delay_channel = 1 minute;
-
- /*
- * max_chans_per_user: The maximum number of channels a user can
- * join/be on.
- */
- max_chans_per_user = 25;
-
- /*
- * max_chans_per_oper: The maximum number of channels an oper can
- * join/be on.
- */
- max_chans_per_oper = 50;
-
- /* quiet_on_ban: stop banned people talking in channels. */
- quiet_on_ban = yes;
-
- /* max_bans: maximum number of +b/e/I modes in a channel */
- max_bans = 100;
-
- /*
- * how many joins in how many seconds constitute a flood, use 0 to
- * disable. +b opers will be notified (changeable via /set)
- */
- join_flood_count = 16;
- join_flood_time = 8 seconds;
-
- /*
- * splitcode: The ircd will now check splitmode every few seconds.
- *
- * Either split users or split servers can activate splitmode, but
- * both conditions must be met for the ircd to deactivate splitmode.
- *
- * You may force splitmode to be permanent by /quote set splitmode on
- */
-
- /*
- * default_split_user_count: when the usercount is lower than this level,
- * consider ourselves split. This must be set for automatic splitmode.
- */
- default_split_user_count = 20000;
-
- /*
- * default_split_server_count: when the servercount is lower than this,
- * consider ourselves split. This must be set for automatic splitmode.
- */
- default_split_server_count = 10;
-
- /* no_create_on_split: disallow users creating channels on split. */
- no_create_on_split = yes;
-
- /* no_join_on_split: disallow users joining channels at all on a split. */
- no_join_on_split = no;
-};
-
-/*
- * serverhide {}: The serverhide block contains the options regarding
- * serverhiding
- */
-serverhide {
- /*
- * flatten_links: this option will show all servers in /links appear
- * that they are linked to this current server
- *
- * EFnet Note: While this is not a requirement on EFnet, it
- * may be a good idea. Except, it's useless
- * unless the entire net runs it.
- */
- flatten_links = no;
-
- /*
- * links_delay: how often to update the links file when it is
- * flattened.
- */
- links_delay = 5 minutes;
-
- /*
- * hidden: hide this server from a /links output on servers that
- * support it. This allows hub servers to be hidden etc.
- */
- hidden = no;
-
- /*
- * hide_servers: hide remote servernames everywhere and instead use
- * hidden_name and network_desc.
- */
- hide_servers = no;
-
- /*
- * Use this as the servername users see if hide_servers = yes.
- */
- hidden_name = "*.hidden.com";
-
- /*
- * hide_server_ips: If this is disabled, opers will be unable to see
- * servers ips and will be shown a masked ip, admins will be shown the
- * real ip.
- *
- * If this is enabled, nobody can see a servers ip. *This is a kludge*,
- * it has the side effect of hiding the ips everywhere, including
- * logfiles.
- *
- * We recommend you leave this disabled, and just take care with who you
- * give administrator privileges to.
- */
- hide_server_ips = yes;
-};
-
-/*
- * general {}: The general block contains many of the options that were once
- * compiled in options in config.h
- */
-general {
- /* max_watch: maximum WATCH entries a client can have. */
- max_watch = 60;
-
- /*
- * EFnet Note: This feature is required for European EFnet servers
- * and is used by several North American servers. As
- * such, it has been left on by default. If you
- * do not want your server to participate in G:Lines
- * you should disable this.
- */
-
- /* gline_enable: enable glines, network wide temp klines */
- gline_enable = yes;
-
- /*
- * gline_duration: the amount of time a gline will remain on your
- * server before expiring
- */
- gline_duration = 1 day;
-
- /*
- * gline_request_duration: how long a pending G-line can be around.
- * 10 minutes should be plenty
- */
- gline_request_duration = 10 minutes;
-
- /*
- * gline_min_cidr: the minimum required length of a CIDR bitmask
- * for IPv4 based glines
- */
- gline_min_cidr = 16;
-
- /*
- * gline_min_cidr6: the minimum required length of a CIDR bitmask
- * for IPv6 based glines
- */
- gline_min_cidr6 = 48;
-
- /*
- * Whether to automatically set mode +i on connecting users.
- */
- invisible_on_connect = yes;
-
- /*
- * Max time from the nickname change that still causes KILL
- * automatically to switch for the current nick of that user.
- */
- kill_chase_time_limit = 90 seconds;
-
- /*
- * If hide_spoof_ips is disabled, opers will be allowed to see the real
- * IP of spoofed users in /trace etc. If this is defined they will be
- * shown a masked IP.
- */
- hide_spoof_ips = yes;
-
- /*
- * Ignore bogus timestamps from other servers. Yes, this will desync
- * the network, but it will allow chanops to resync with a valid non TS 0
- *
- * This should be enabled network wide, or not at all.
- */
- ignore_bogus_ts = no;
-
- /*
- * disable_auth: completely disable ident lookups; if you enable this,
- * be careful of what you set need_ident to in your auth {} blocks
- */
- disable_auth = no;
-
- /* disable_remote_commands: disable users doing commands on remote servers */
- disable_remote_commands = no;
-
- /*
- * tkline_expire_notices: enables or disables temporary kline/xline
- * expire notices.
- */
- tkline_expire_notices = no;
-
- /*
- * default_floodcount: the default value of floodcount that is configurable
- * via /quote set floodcount. This is the amount of lines a user
- * may send to any other user/channel in one second.
- */
- default_floodcount = 10;
-
- /*
- * failed_oper_notice: send a notice to all opers on the server when
- * someone tries to OPER and uses the wrong password, host or ident.
- */
- failed_oper_notice = yes;
-
- /*
- * dots_in_ident: the amount of '.' characters permitted in an ident
- * reply before the user is rejected.
- */
- dots_in_ident = 2;
-
- /*
- * min_nonwildcard: the minimum non wildcard characters in k/d/g lines
- * placed via the server. klines hand placed are exempt from limits.
- * wildcard chars: '.' ':' '*' '?' '@' '!' '#'
- */
- min_nonwildcard = 3;
-
- /*
- * min_nonwildcard_simple: the minimum non wildcard characters in
- * gecos bans. wildcard chars: '*' '?' '#'
- */
- min_nonwildcard_simple = 3;
-
- /* max_accept: maximum allowed /accept's for +g usermode */
- max_accept = 20;
-
- /* anti_nick_flood: enable the nickflood control code */
- anti_nick_flood = yes;
-
- /* nick flood: the nick changes allowed in the specified period */
- max_nick_time = 20 seconds;
- max_nick_changes = 5;
-
- /*
- * anti_spam_exit_message_time: the minimum time a user must be connected
- * before custom quit messages are allowed.
- */
- anti_spam_exit_message_time = 5 minutes;
-
- /*
- * ts delta: the time delta allowed between server clocks before
- * a warning is given, or before the link is dropped. all servers
- * should run ntpdate/rdate to keep clocks in sync
- */
- ts_warn_delta = 30 seconds;
- ts_max_delta = 5 minutes;
-
- /*
- * warn_no_nline: warn opers about servers that try to connect but
- * we don't have a connect {} block for. Twits with misconfigured
- * servers can get really annoying with this enabled.
- */
- warn_no_nline = yes;
-
- /*
- * stats_e_disabled: set this to 'yes' to disable "STATS e" for both
- * operators and administrators. Doing so is a good idea in case
- * there are any exempted (exempt{}) server IPs you don't want to
- * see leaked.
- */
- stats_e_disabled = no;
-
- /* stats_o_oper only: make stats o (opers) oper only */
- stats_o_oper_only = yes;
-
- /* stats_P_oper_only: make stats P (ports) oper only */
- stats_P_oper_only = yes;
-
- /*
- * stats i oper only: make stats i (auth {}) oper only. set to:
- * yes: show users no auth blocks, made oper only.
- * masked: show users first matching auth block
- * no: show users all auth blocks.
- */
- stats_i_oper_only = yes;
-
- /*
- * stats_k_oper_only: make stats k/K (klines) oper only. set to:
- * yes: show users no auth blocks, made oper only
- * masked: show users first matching auth block
- * no: show users all auth blocks.
- */
- stats_k_oper_only = yes;
-
- /*
- * caller_id_wait: time between notifying a +g user that somebody
- * is messaging them.
- */
- caller_id_wait = 1 minute;
-
- /*
- * opers_bypass_callerid: allows operators to bypass +g and message
- * anyone who has it set (useful if you use services).
- */
- opers_bypass_callerid = no;
-
- /*
- * pace_wait_simple: time between use of less intensive commands
- * (ADMIN, HELP, (L)USERS, VERSION, remote WHOIS)
- */
- pace_wait_simple = 1 second;
-
- /*
- * pace_wait: time between more intensive commands
- * (AWAY, INFO, LINKS, MAP, MOTD, STATS, WHO, wildcard WHOIS, WHOWAS)
- */
- pace_wait = 10 seconds;
-
- /*
- * short_motd: send clients a notice telling them to read the motd
- * instead of forcing a motd to clients who may simply ignore it.
- */
- short_motd = no;
-
- /*
- * ping_cookie: require clients to respond exactly to a ping command,
- * can help block certain types of drones and FTP PASV mode spoofing.
- */
- ping_cookie = no;
-
- /* no_oper_flood: increase flood limits for opers. */
- no_oper_flood = yes;
-
- /*
- * true_no_oper_flood: completely eliminate flood limits for opers
- * and for clients with can_flood = yes in their auth {} blocks
- */
- true_no_oper_flood = yes;
-
- /* oper_pass_resv: allow opers to over-ride RESVs on nicks/channels */
- oper_pass_resv = yes;
-
- /* REMOVE ME. The following line checks you've been reading. */
- havent_read_conf = 1;
-
- /*
- * max_targets: the maximum amount of targets in a single
- * PRIVMSG/NOTICE. Set to 999 NOT 0 for unlimited.
- */
- max_targets = 4;
-
- /*
- * message_locale: the default message locale
- * Use "standard" for the compiled in defaults.
- * To install the translated messages, go into messages/ in the
- * source directory and run `make install'.
- */
- message_locale = "standard";
-
- /*
- * usermodes configurable: a list of usermodes for the options below
- *
- * +b - bots - See bot and drone flooding notices
- * +c - cconn - Client connection/quit notices
- * +C - cconn_full - Client connection/quit notices full
- * +D - deaf - Don't receive channel messages
- * +d - debug - See debugging notices
- * +e - external - See remote server connection and split notices
- * +f - full - See auth{} block full notices
- * +G - softcallerid - Server Side Ignore for users not on your channels
- * +g - callerid - Server Side Ignore (for privmsgs etc)
- * +H - hidden - Hides operator status to other users
- * +i - invisible - Not shown in NAMES or WHO unless you share a
- * a channel
- * +j - rej - See rejected client notices
- * +k - skill - See server generated KILL messages
- * +l - locops - See LOCOPS messages
- * +n - nchange - See client nick changes
- * +s - servnotice - See general server notices
- * +u - unauth - See unauthorized client notices
- * +w - wallop - See server generated WALLOPS
- * +y - spy - See LINKS, STATS, TRACE notices etc.
- * +z - operwall - See oper generated WALLOPS
- */
-
- /* oper_only_umodes: usermodes only opers may set */
- oper_only_umodes = bots, cconn, cconn_full, debug, full, hidden, skill,
- nchange, rej, spy, external, operwall,
- locops, unauth;
-
- /* oper_umodes: default usermodes opers get when they /oper */
- oper_umodes = bots, locops, servnotice, operwall, wallop;
-
- /*
- * use_egd: if your system does not have *random devices yet you
- * want to use OpenSSL and encrypted links, enable this. Beware -
- * EGD is *very* CPU intensive when gathering data for its pool
- */
-# use_egd = yes;
-
- /*
- * egdpool_path: path to EGD pool. Not necessary for OpenSSL >= 0.9.7
- * which automatically finds the path.
- */
-# egdpool_path = "/var/run/egd-pool";
-
- /*
- * throttle_time: the minimum amount of time between connections from
- * the same ip. exempt {} blocks are excluded from this throttling.
- * Offers protection against flooders who reconnect quickly.
- * Set to 0 to disable.
- */
- throttle_time = 0;
-};
-
-modules {
- /*
- * path: other paths to search for modules specified below
- * and in "/module load".
- */
- path = "/usr/local/ircd/lib/ircd-hybrid/modules";
- path = "/usr/local/ircd/lib/ircd-hybrid/modules/autoload";
-
- /* module: the name of a module to load on startup/rehash */
- #module = "some_module.la";
-};
-
-/*
- * log {}: contains information about logfiles.
- */
-log {
- /* Do you want to enable logging to ircd.log? */
- use_logging = yes;
-
- file {
- type = oper;
- name = "/home/ircd/var/log/oper.log";
- size = unlimited;
- };
-
- file {
- type = user;
- name = "/home/ircd/var/log/user.log";
- size = 50 megabytes;
- };
-
- file {
- type = kill;
- name = "/home/ircd/var/log/kill.log";
- size = 50 megabytes;
- };
-
- file {
- type = kline;
- name = "/home/ircd/var/log/kline.log";
- size = 50 megabytes;
- };
-
- file {
- type = dline;
- name = "/home/ircd/var/log/dline.log";
- size = 50 megabytes;
- };
-
- file {
- type = gline;
- name = "/home/ircd/var/log/gline.log";
- size = 50 megabytes;
- };
-
- file {
- type = debug;
- name = "/home/ircd/var/log/debug.log";
- size = 50 megabytes;
- };
-};
diff --git a/doc/example.quick.conf b/doc/example.quick.conf
deleted file mode 100644
index bf2faec..0000000
--- a/doc/example.quick.conf
+++ /dev/null
@@ -1,370 +0,0 @@
-/* doc/example.conf.quick - ircd-hybrid-8 Example configuration file
- * Copyright (C) 2000-2013 Hybrid Development Team
- *
- * Written by ejb, wcampbel, db, leeh and others
- *
- * $Id$
- */
-
-/* IMPORTANT NOTES:
- *
- * auth {} blocks MUST be specified in order of precedence. The first one
- * that matches a user will be used. So place spoofs first, then specials,
- * then general access, then restricted.
- *
- * Both shell style (#) and C style comments are supported.
- *
- * Files may be included by either:
- * .include "filename"
- * .include <filename>
- *
- * Times/durations are written as:
- * 12 hours 30 minutes 1 second
- *
- * Valid units of time:
- * year, month, week, day, hour, minute, second
- *
- * Valid units of size:
- * megabyte/mbyte/mb, kilobyte/kbyte/kb, byte
- *
- * Sizes and times may be singular or plural.
- */
-
-/* EFNET NOTE:
- *
- * This config file is NOT suitable for EFNet. EFNet admins should use
- * example.efnet.conf
- */
-
-serverinfo {
- name = "hades.arpa";
- sid = "0HY";
- description = "ircd-hybrid test server";
- network_name = "MyNet";
- network_desc = "This is My Network";
- hub = no;
- #vhost = "192.169.0.1";
- #vhost6 = "3ffe:80e8:546::2";
- max_clients = 512;
- max_nick_length = 9;
- max_topic_length = 160;
- #rsa_private_key_file = "/usr/local/ircd/etc/rsa.key";
- #ssl_certificate_file = "/usr/local/ircd/etc/cert.pem";
- #ssl_server_method = tlsv1, sslv3;
- #ssl_client_method = tlsv1;
-};
-
-/* admin {}: contains admin information about the server. (OLD A:) */
-admin {
- name = "Smurf target";
- description = "Main Server Administrator";
- email = "<syn@packets.r.us>";
-};
-
-/* class {}: contain information about classes for users (OLD Y:) */
-class {
- name = "users";
- ping_time = 2 minutes;
- number_per_ip = 2;
- max_number = 100;
- sendq = 100 kbytes;
- recvq = 2560 bytes;
-};
-
-class {
- name = "restricted";
- ping_time = 1 minute 30 seconds;
- number_per_ip = 1;
- max_number = 100;
- sendq = 60kb;
- recvq = 2560 bytes;
-};
-
-class {
- name = "opers";
- ping_time = 5 minutes;
- number_per_ip = 10;
- max_number = 100;
- sendq = 100kbytes;
-};
-
-class {
- name = "server";
- ping_time = 5 minutes;
- connectfreq = 5 minutes;
- max_number = 1;
- sendq=2 megabytes;
-};
-
-/* listen {}: contain information about the ports ircd listens on (OLD P:) */
-listen {
- port = 6665 .. 6669;
-
- flags = ssl;
- port = 6697;
-
- host = "1.2.3.4";
- port = 7000, 7001;
-
- host = "3ffe:1234:a:b:c::d";
- port = 7002;
-};
-
-/* auth {}: allow users to connect to the ircd (OLD I:) */
-auth {
- user = "*@172.16.0.0/12";
- user = "*test@123D:B567:*";
- password = "letmein";
- flags = need_password, spoof_notice, exceed_limit, kline_exempt,
- gline_exempt, no_tilde;
- spoof = "I.still.hate.packets";
- class = "opers";
-};
-
-auth {
- redirserv = "irc.fi";
- redirport = 6667;
- user = "*.fi";
- class = "users";
-};
-
-auth {
- user = "*@*";
- class = "users";
- flags = need_ident;
-};
-
-/* operator {}: defines ircd operators. (OLD O:)
- * ircd-hybrid no longer supports local operators, privileges are
- * controlled via flags.
- */
-operator {
- name = "sheep";
- user = "*sheep@*";
- user = "*@127.0.0.1";
- password = "etcnjl8juSU1E";
- encrypted = yes;
- #rsa_public_key_file = "/usr/local/ircd/etc/oper.pub";
- class = "opers";
- flags = global_kill, remote, kline, unkline, gline, module,
- xline, die, rehash, nick_changes, admin, set;
-};
-
-/* connect {}: controls servers we connect to (OLD C:, N:, H:, L:) */
-connect {
- name = "irc.uplink.com";
- host = "192.168.0.1";
- send_password = "password";
- accept_password = "anotherpassword";
- encrypted = no;
- port = 6666;
- hub_mask = "*";
- #leaf_mask = "*.uk";
- class = "server";
- flags = autoconn;
-};
-
-connect {
- name = "ipv6.some.server";
- host = "3ffd:dead:beef::1";
- send_password = "password";
- accept_password = "password";
- port = 6666;
-
- aftype = ipv6;
- class = "server";
-};
-
-/* cluster{}: servers that share klines/unkline/xline/unxline/resv/unresv/locops
- * automatically (OLD hyb6 SLAVE_SERVERS)
- */
-cluster {
- name = "*.arpa";
- type = kline, unkline, locops, xline, resv;
-};
-
-/* shared {}: users that are allowed to remote kline (OLD U:) */
-shared {
- name = "irc2.some.server";
- user = "oper@my.host.is.spoofed";
- type = all;
-};
-
-/* kill {}: users that are not allowed to connect (OLD K:)
- * Oper issued klines will be added to the specified kline config
- */
-kill {
- user = "bad@*.hacked.edu";
- reason = "Obviously hacked account";
-};
-
-/* deny {}: IPs that are not allowed to connect (before DNS/ident lookup)
- * Oper issued dlines will be added to the specified dline config
- */
-deny {
- ip = "10.0.1.0/24";
- reason = "Reconnecting vhosted bots";
-};
-
-/* exempt {}: IPs that are exempt from deny {} and Dlines. (OLD d:) */
-exempt {
- ip = "192.168.0.0/16";
-};
-
-/* resv {}: nicks and channels users may not use/join (OLD Q:) */
-resv {
- nick = "nickserv";
- nick = "chanserv";
- channel = "#services";
- reason = "Clone bots";
- nick = "clone*";
-};
-
-gecos {
- name = "*sex*";
- reason = "Possible spambot";
-};
-
-gecos {
- name = "sub7server";
- reason = "Trojan drone";
-};
-
-gecos {
- name = "*http*";
- reason = "Spambot";
-};
-
-channel {
- restrict_channels = no;
- knock_delay = 5 minutes;
- knock_delay_channel = 1 minute;
- max_chans_per_user = 25;
- max_chans_per_oper = 50;
- quiet_on_ban = yes;
- max_bans = 25;
- join_flood_count = 16;
- join_flood_time = 8 seconds;
- default_split_user_count = 0;
- default_split_server_count = 0;
- no_create_on_split = yes;
- no_join_on_split = no;
-};
-
-serverhide {
- flatten_links = no;
- links_delay = 5 minutes;
- hidden = no;
- hide_servers = no;
- hidden_name = "*.hidden.com";
- hide_server_ips = no;
-};
-
-general {
- kill_chase_time_limit = 90 seconds;
- hide_spoof_ips = yes;
- ignore_bogus_ts = no;
-
- disable_auth = no;
- disable_remote_commands = no;
- default_floodcount = 10;
- failed_oper_notice = yes;
- dots_in_ident=2;
- min_nonwildcard = 4;
- min_nonwildcard_simple = 3;
- max_accept = 20;
- anti_nick_flood = yes;
-
- max_nick_time = 20 seconds;
- max_nick_changes = 5;
-
- anti_spam_exit_message_time = 5 minutes;
- ts_warn_delta = 30 seconds;
- ts_max_delta = 5 minutes;
-
- invisible_on_connect = yes;
- warn_no_nline = yes;
- stats_o_oper_only=yes;
- stats_P_oper_only=no;
- stats_i_oper_only=masked;
- stats_k_oper_only=masked;
- caller_id_wait = 1 minute;
- pace_wait_simple = 1 second;
- pace_wait = 10 seconds;
- short_motd = no;
- ping_cookie = no;
- no_oper_flood = yes;
- true_no_oper_flood = yes;
- oper_pass_resv = yes;
-
- /* REMOVE ME. The following line checks you've been reading. */
- havent_read_conf = 1;
-
- max_targets = 4;
- message_locale = "standard";
- oper_only_umodes = bots, cconn, debug, full, skill, nchange,
- rej, spy, external, operwall, locops, unauth;
-
- oper_umodes = bots, locops, servnotice, operwall, wallop;
-
-
- #use_egd = yes;
- #egdpool_path = "/var/run/egd-pool";
- throttle_time = 10;
-};
-
-modules {
- path = "/usr/local/ircd/lib/ircd-hybrid/modules";
- path = "/usr/local/ircd/lib/ircd-hybrid/modules/autoload";
- #module = "some_module.so";
-};
-
-/*
- * log {}: contains information about logfiles.
- */
-log {
- /* Do you want to enable logging to ircd.log? */
- use_logging = yes;
-
- file {
- type = oper;
- name = "/home/ircd/var/log/oper.log";
- size = unlimited;
- };
-
- file {
- type = user;
- name = "/home/ircd/var/log/user.log";
- size = 50 megabytes;
- };
-
- file {
- type = kill;
- name = "/home/ircd/var/log/kill.log";
- size = 50 megabytes;
- };
-
- file {
- type = kline;
- name = "/home/ircd/var/log/kline.log";
- size = 50 megabytes;
- };
-
- file {
- type = dline;
- name = "/home/ircd/var/log/dline.log";
- size = 50 megabytes;
- };
-
- file {
- type = gline;
- name = "/home/ircd/var/log/gline.log";
- size = 50 megabytes;
- };
-
- file {
- type = debug;
- name = "/home/ircd/var/log/debug.log";
- size = 50 megabytes;
- };
-};
diff --git a/doc/guidelines.txt b/doc/guidelines.txt
index a3d13f8..5018a78 100644
--- a/doc/guidelines.txt
+++ b/doc/guidelines.txt
@@ -4,7 +4,7 @@ ircd-hybrid documentation guidelines
in whats-new and all other appropriate locations.
2. When something affects the configuration file, and it's compatibility
-with previous versions, it MUST be documented in example.conf and in a
+with previous versions, it MUST be documented in reference.conf and in a
proposed new document README.NOW. This is VERY important during the beta
phase to help anyone who mans the "help desk".
diff --git a/doc/messages.txt b/doc/messages.txt
index a8c6227..06fc967 100644
--- a/doc/messages.txt
+++ b/doc/messages.txt
@@ -26,7 +26,7 @@
default.
If the desired message file works without any issues, it can be set to be
- the default message file in the ircd.conf file. Refer to example.conf's
+ the default message file in the ircd.conf file. Refer to reference.conf's
documentation on the message_locale setting.
----------------------------------------------------------------------
diff --git a/doc/example.conf b/doc/reference.conf
index 162c608..d0893b3 100644
--- a/doc/example.conf
+++ b/doc/reference.conf
@@ -714,28 +714,20 @@ exempt {
* resv {}: nicks and channels users may not use/join
*/
resv {
- /* reason: the reason for the proceeding resv's */
- reason = "Reserved for services";
-
- /* resv: the nicks and channels users may not join/use */
- nick = "Global";
- nick = "DevNull";
- nick = "BotServ";
- nick = "Services";
- nick = "StatServ";
- nick = "HelpServ";
- nick = "HostServ";
- nick = "NickServ";
- nick = "ChanServ";
- nick = "MemoServ";
- nick = "OperServ";
- channel = "#services";
-
- /* resv: wildcard masks are also supported in nicks only */
- reason = "Clone bots";
+ /* resv: wildcard masks are supported in nicks only */
nick = "clone*";
+ reason = "Clone bots";
};
+resv { nick = "NickServ"; reason = "Reserved for services"; };
+resv { nick = "OperServ"; reason = "Reserved for services"; };
+resv { nick = "MemoServ"; reason = "Reserved for services"; };
+resv { nick = "BotServ"; reason = "Reserved for services"; };
+resv { nick = "HelpServ"; reason = "Reserved for services"; };
+resv { nick = "HostServ"; reason = "Reserved for services"; };
+resv { nick = "StatServ"; reason = "Reserved for services"; };
+resv { channel = "#services"; reason = "Reserved for services"; };
+
/*
* gecos {}: The X: replacement, used for banning users based on
* their "realname".
diff --git a/src/conf_parser.c b/src/conf_parser.c
index 379e86c..ce63850 100644
--- a/src/conf_parser.c
+++ b/src/conf_parser.c
@@ -1295,41 +1295,41 @@ static const yytype_uint16 yyrline[] =
1587, 1588, 1588, 1588, 1588, 1589, 1589, 1589, 1590, 1590,
1592, 1598, 1604, 1610, 1622, 1621, 1627, 1627, 1628, 1632,
1636, 1640, 1644, 1648, 1652, 1656, 1660, 1664, 1670, 1684,
- 1693, 1707, 1706, 1715, 1715, 1716, 1716, 1716, 1716, 1718,
- 1724, 1733, 1742, 1744, 1744, 1745, 1745, 1747, 1763, 1762,
- 1787, 1787, 1788, 1788, 1788, 1788, 1790, 1796, 1816, 1815,
- 1821, 1821, 1822, 1826, 1830, 1834, 1838, 1842, 1846, 1850,
- 1854, 1858, 1868, 1867, 1888, 1888, 1889, 1889, 1889, 1891,
- 1898, 1897, 1903, 1903, 1904, 1908, 1912, 1916, 1920, 1924,
- 1928, 1932, 1936, 1940, 1950, 1949, 2015, 2015, 2016, 2016,
- 2016, 2017, 2017, 2018, 2018, 2018, 2019, 2019, 2019, 2020,
- 2020, 2021, 2023, 2029, 2035, 2041, 2054, 2067, 2073, 2077,
- 2086, 2085, 2090, 2090, 2091, 2095, 2101, 2112, 2118, 2124,
- 2130, 2146, 2145, 2208, 2207, 2213, 2213, 2214, 2220, 2220,
- 2221, 2221, 2221, 2221, 2223, 2243, 2253, 2252, 2279, 2279,
- 2280, 2280, 2280, 2282, 2288, 2297, 2299, 2299, 2300, 2300,
- 2302, 2320, 2319, 2365, 2364, 2370, 2370, 2371, 2377, 2377,
- 2378, 2378, 2378, 2378, 2380, 2386, 2395, 2398, 2398, 2399,
- 2399, 2400, 2400, 2401, 2401, 2402, 2402, 2403, 2403, 2404,
- 2405, 2406, 2406, 2407, 2407, 2408, 2408, 2409, 2409, 2410,
- 2410, 2411, 2411, 2412, 2413, 2413, 2414, 2414, 2415, 2415,
- 2416, 2416, 2417, 2417, 2418, 2419, 2419, 2420, 2421, 2422,
- 2422, 2423, 2423, 2424, 2425, 2426, 2427, 2427, 2428, 2431,
- 2436, 2442, 2448, 2454, 2459, 2464, 2469, 2474, 2479, 2484,
- 2489, 2494, 2499, 2504, 2509, 2514, 2519, 2524, 2530, 2541,
- 2546, 2551, 2556, 2561, 2566, 2569, 2574, 2577, 2582, 2587,
- 2592, 2597, 2602, 2607, 2612, 2617, 2622, 2633, 2638, 2643,
- 2648, 2657, 2666, 2671, 2676, 2682, 2681, 2686, 2686, 2687,
- 2690, 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, 2717,
- 2720, 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2750,
- 2749, 2754, 2754, 2755, 2758, 2761, 2764, 2767, 2770, 2773,
- 2776, 2779, 2782, 2785, 2788, 2791, 2794, 2797, 2800, 2803,
- 2806, 2809, 2812, 2817, 2822, 2827, 2836, 2839, 2839, 2840,
- 2841, 2841, 2842, 2842, 2843, 2843, 2844, 2845, 2845, 2846,
- 2847, 2847, 2848, 2848, 2850, 2855, 2860, 2865, 2870, 2875,
- 2880, 2885, 2890, 2895, 2900, 2905, 2910, 2915, 2923, 2926,
- 2926, 2927, 2927, 2928, 2929, 2929, 2930, 2931, 2933, 2939,
- 2945, 2954, 2968, 2974
+ 1693, 1707, 1706, 1721, 1721, 1722, 1722, 1722, 1722, 1724,
+ 1730, 1736, 1745, 1747, 1747, 1748, 1748, 1750, 1766, 1765,
+ 1790, 1790, 1791, 1791, 1791, 1791, 1793, 1799, 1819, 1818,
+ 1824, 1824, 1825, 1829, 1833, 1837, 1841, 1845, 1849, 1853,
+ 1857, 1861, 1871, 1870, 1891, 1891, 1892, 1892, 1892, 1894,
+ 1901, 1900, 1906, 1906, 1907, 1911, 1915, 1919, 1923, 1927,
+ 1931, 1935, 1939, 1943, 1953, 1952, 2018, 2018, 2019, 2019,
+ 2019, 2020, 2020, 2021, 2021, 2021, 2022, 2022, 2022, 2023,
+ 2023, 2024, 2026, 2032, 2038, 2044, 2057, 2070, 2076, 2080,
+ 2089, 2088, 2093, 2093, 2094, 2098, 2104, 2115, 2121, 2127,
+ 2133, 2149, 2148, 2211, 2210, 2216, 2216, 2217, 2223, 2223,
+ 2224, 2224, 2224, 2224, 2226, 2246, 2256, 2255, 2282, 2282,
+ 2283, 2283, 2283, 2285, 2291, 2300, 2302, 2302, 2303, 2303,
+ 2305, 2323, 2322, 2368, 2367, 2373, 2373, 2374, 2380, 2380,
+ 2381, 2381, 2381, 2381, 2383, 2389, 2398, 2401, 2401, 2402,
+ 2402, 2403, 2403, 2404, 2404, 2405, 2405, 2406, 2406, 2407,
+ 2408, 2409, 2409, 2410, 2410, 2411, 2411, 2412, 2412, 2413,
+ 2413, 2414, 2414, 2415, 2416, 2416, 2417, 2417, 2418, 2418,
+ 2419, 2419, 2420, 2420, 2421, 2422, 2422, 2423, 2424, 2425,
+ 2425, 2426, 2426, 2427, 2428, 2429, 2430, 2430, 2431, 2434,
+ 2439, 2445, 2451, 2457, 2462, 2467, 2472, 2477, 2482, 2487,
+ 2492, 2497, 2502, 2507, 2512, 2517, 2522, 2527, 2533, 2544,
+ 2549, 2554, 2559, 2564, 2569, 2572, 2577, 2580, 2585, 2590,
+ 2595, 2600, 2605, 2610, 2615, 2620, 2625, 2636, 2641, 2646,
+ 2651, 2660, 2669, 2674, 2679, 2685, 2684, 2689, 2689, 2690,
+ 2693, 2696, 2699, 2702, 2705, 2708, 2711, 2714, 2717, 2720,
+ 2723, 2726, 2729, 2732, 2735, 2738, 2741, 2744, 2747, 2753,
+ 2752, 2757, 2757, 2758, 2761, 2764, 2767, 2770, 2773, 2776,
+ 2779, 2782, 2785, 2788, 2791, 2794, 2797, 2800, 2803, 2806,
+ 2809, 2812, 2815, 2820, 2825, 2830, 2839, 2842, 2842, 2843,
+ 2844, 2844, 2845, 2845, 2846, 2846, 2847, 2848, 2848, 2849,
+ 2850, 2850, 2851, 2851, 2853, 2858, 2863, 2868, 2873, 2878,
+ 2883, 2888, 2893, 2898, 2903, 2908, 2913, 2918, 2926, 2929,
+ 2929, 2930, 2930, 2931, 2932, 2932, 2933, 2934, 2936, 2942,
+ 2948, 2957, 2971, 2977
};
#endif
@@ -1423,7 +1423,7 @@ static const char *const yytname[] =
"auth_passwd", "auth_class", "auth_encrypted", "auth_flags", "$@12",
"auth_flags_items", "auth_flags_item", "auth_spoof", "auth_redir_serv",
"auth_redir_port", "resv_entry", "$@13", "resv_items", "resv_item",
- "resv_creason", "resv_channel", "resv_nick", "service_entry",
+ "resv_reason", "resv_channel", "resv_nick", "service_entry",
"service_items", "service_item", "service_name", "shared_entry", "$@14",
"shared_items", "shared_item", "shared_name", "shared_user",
"shared_type", "$@15", "shared_types", "shared_type_item",
@@ -4985,9 +4985,20 @@ yyreduce:
}
break;
+ case 302:
+/* Line 1792 of yacc.c */
+#line 1714 "conf_parser.y"
+ {
+ if (IsChanPrefix(block_state.name.buf[0]))
+ create_channel_resv(block_state.name.buf, block_state.rpass.buf, 1);
+ else if (block_state.name.buf[0])
+ create_nick_resv(block_state.name.buf, block_state.rpass.buf, 1);
+}
+ break;
+
case 309:
/* Line 1792 of yacc.c */
-#line 1719 "conf_parser.y"
+#line 1725 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
@@ -4996,28 +5007,25 @@ yyreduce:
case 310:
/* Line 1792 of yacc.c */
-#line 1725 "conf_parser.y"
+#line 1731 "conf_parser.y"
{
- if (conf_parser_ctx.pass != 2)
- break;
-
- if (IsChanPrefix(*yylval.string))
- create_channel_resv(yylval.string, block_state.rpass.buf, 1);
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
}
break;
case 311:
/* Line 1792 of yacc.c */
-#line 1734 "conf_parser.y"
+#line 1737 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
- create_nick_resv(yylval.string, block_state.rpass.buf, 1);
+ strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
}
break;
case 317:
/* Line 1792 of yacc.c */
-#line 1748 "conf_parser.y"
+#line 1751 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5032,7 +5040,7 @@ yyreduce:
case 318:
/* Line 1792 of yacc.c */
-#line 1763 "conf_parser.y"
+#line 1766 "conf_parser.y"
{
if (conf_parser_ctx.pass != 2)
break;
@@ -5048,7 +5056,7 @@ yyreduce:
case 319:
/* Line 1792 of yacc.c */
-#line 1774 "conf_parser.y"
+#line 1777 "conf_parser.y"
{
struct MaskItem *conf = NULL;
@@ -5065,7 +5073,7 @@ yyreduce:
case 326:
/* Line 1792 of yacc.c */
-#line 1791 "conf_parser.y"
+#line 1794 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
@@ -5074,7 +5082,7 @@ yyreduce:
case 327:
/* Line 1792 of yacc.c */
-#line 1797 "conf_parser.y"
+#line 1800 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5096,7 +5104,7 @@ yyreduce:
case 328:
/* Line 1792 of yacc.c */
-#line 1816 "conf_parser.y"
+#line 1819 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value = 0;
@@ -5105,7 +5113,7 @@ yyreduce:
case 332:
/* Line 1792 of yacc.c */
-#line 1823 "conf_parser.y"
+#line 1826 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_KLINE;
@@ -5114,7 +5122,7 @@ yyreduce:
case 333:
/* Line 1792 of yacc.c */
-#line 1827 "conf_parser.y"
+#line 1830 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNKLINE;
@@ -5123,7 +5131,7 @@ yyreduce:
case 334:
/* Line 1792 of yacc.c */
-#line 1831 "conf_parser.y"
+#line 1834 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_DLINE;
@@ -5132,7 +5140,7 @@ yyreduce:
case 335:
/* Line 1792 of yacc.c */
-#line 1835 "conf_parser.y"
+#line 1838 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNDLINE;
@@ -5141,7 +5149,7 @@ yyreduce:
case 336:
/* Line 1792 of yacc.c */
-#line 1839 "conf_parser.y"
+#line 1842 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_XLINE;
@@ -5150,7 +5158,7 @@ yyreduce:
case 337:
/* Line 1792 of yacc.c */
-#line 1843 "conf_parser.y"
+#line 1846 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNXLINE;
@@ -5159,7 +5167,7 @@ yyreduce:
case 338:
/* Line 1792 of yacc.c */
-#line 1847 "conf_parser.y"
+#line 1850 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_RESV;
@@ -5168,7 +5176,7 @@ yyreduce:
case 339:
/* Line 1792 of yacc.c */
-#line 1851 "conf_parser.y"
+#line 1854 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNRESV;
@@ -5177,7 +5185,7 @@ yyreduce:
case 340:
/* Line 1792 of yacc.c */
-#line 1855 "conf_parser.y"
+#line 1858 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_LOCOPS;
@@ -5186,7 +5194,7 @@ yyreduce:
case 341:
/* Line 1792 of yacc.c */
-#line 1859 "conf_parser.y"
+#line 1862 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value = SHARED_ALL;
@@ -5195,7 +5203,7 @@ yyreduce:
case 342:
/* Line 1792 of yacc.c */
-#line 1868 "conf_parser.y"
+#line 1871 "conf_parser.y"
{
if (conf_parser_ctx.pass != 2)
break;
@@ -5209,7 +5217,7 @@ yyreduce:
case 343:
/* Line 1792 of yacc.c */
-#line 1877 "conf_parser.y"
+#line 1880 "conf_parser.y"
{
struct MaskItem *conf = NULL;
@@ -5224,7 +5232,7 @@ yyreduce:
case 349:
/* Line 1792 of yacc.c */
-#line 1892 "conf_parser.y"
+#line 1895 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
@@ -5233,7 +5241,7 @@ yyreduce:
case 350:
/* Line 1792 of yacc.c */
-#line 1898 "conf_parser.y"
+#line 1901 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value = 0;
@@ -5242,7 +5250,7 @@ yyreduce:
case 354:
/* Line 1792 of yacc.c */
-#line 1905 "conf_parser.y"
+#line 1908 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_KLINE;
@@ -5251,7 +5259,7 @@ yyreduce:
case 355:
/* Line 1792 of yacc.c */
-#line 1909 "conf_parser.y"
+#line 1912 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNKLINE;
@@ -5260,7 +5268,7 @@ yyreduce:
case 356:
/* Line 1792 of yacc.c */
-#line 1913 "conf_parser.y"
+#line 1916 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_DLINE;
@@ -5269,7 +5277,7 @@ yyreduce:
case 357:
/* Line 1792 of yacc.c */
-#line 1917 "conf_parser.y"
+#line 1920 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNDLINE;
@@ -5278,7 +5286,7 @@ yyreduce:
case 358:
/* Line 1792 of yacc.c */
-#line 1921 "conf_parser.y"
+#line 1924 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_XLINE;
@@ -5287,7 +5295,7 @@ yyreduce:
case 359:
/* Line 1792 of yacc.c */
-#line 1925 "conf_parser.y"
+#line 1928 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNXLINE;
@@ -5296,7 +5304,7 @@ yyreduce:
case 360:
/* Line 1792 of yacc.c */
-#line 1929 "conf_parser.y"
+#line 1932 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_RESV;
@@ -5305,7 +5313,7 @@ yyreduce:
case 361:
/* Line 1792 of yacc.c */
-#line 1933 "conf_parser.y"
+#line 1936 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_UNRESV;
@@ -5314,7 +5322,7 @@ yyreduce:
case 362:
/* Line 1792 of yacc.c */
-#line 1937 "conf_parser.y"
+#line 1940 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= SHARED_LOCOPS;
@@ -5323,7 +5331,7 @@ yyreduce:
case 363:
/* Line 1792 of yacc.c */
-#line 1941 "conf_parser.y"
+#line 1944 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value = SHARED_ALL;
@@ -5332,7 +5340,7 @@ yyreduce:
case 364:
/* Line 1792 of yacc.c */
-#line 1950 "conf_parser.y"
+#line 1953 "conf_parser.y"
{
if (conf_parser_ctx.pass != 2)
@@ -5345,7 +5353,7 @@ yyreduce:
case 365:
/* Line 1792 of yacc.c */
-#line 1958 "conf_parser.y"
+#line 1961 "conf_parser.y"
{
struct MaskItem *conf = NULL;
struct addrinfo hints, *res;
@@ -5406,7 +5414,7 @@ yyreduce:
case 382:
/* Line 1792 of yacc.c */
-#line 2024 "conf_parser.y"
+#line 2027 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
@@ -5415,7 +5423,7 @@ yyreduce:
case 383:
/* Line 1792 of yacc.c */
-#line 2030 "conf_parser.y"
+#line 2033 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.host.buf, yylval.string, sizeof(block_state.host.buf));
@@ -5424,7 +5432,7 @@ yyreduce:
case 384:
/* Line 1792 of yacc.c */
-#line 2036 "conf_parser.y"
+#line 2039 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.bind.buf, yylval.string, sizeof(block_state.bind.buf));
@@ -5433,7 +5441,7 @@ yyreduce:
case 385:
/* Line 1792 of yacc.c */
-#line 2042 "conf_parser.y"
+#line 2045 "conf_parser.y"
{
if (conf_parser_ctx.pass != 2)
break;
@@ -5449,7 +5457,7 @@ yyreduce:
case 386:
/* Line 1792 of yacc.c */
-#line 2055 "conf_parser.y"
+#line 2058 "conf_parser.y"
{
if (conf_parser_ctx.pass != 2)
break;
@@ -5465,7 +5473,7 @@ yyreduce:
case 387:
/* Line 1792 of yacc.c */
-#line 2068 "conf_parser.y"
+#line 2071 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.port.value = (yyvsp[(3) - (4)].number);
@@ -5474,7 +5482,7 @@ yyreduce:
case 388:
/* Line 1792 of yacc.c */
-#line 2074 "conf_parser.y"
+#line 2077 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.aftype.value = AF_INET;
@@ -5483,7 +5491,7 @@ yyreduce:
case 389:
/* Line 1792 of yacc.c */
-#line 2078 "conf_parser.y"
+#line 2081 "conf_parser.y"
{
#ifdef IPV6
if (conf_parser_ctx.pass == 2)
@@ -5494,7 +5502,7 @@ yyreduce:
case 390:
/* Line 1792 of yacc.c */
-#line 2086 "conf_parser.y"
+#line 2089 "conf_parser.y"
{
block_state.flags.value &= CONF_FLAGS_ENCRYPTED;
}
@@ -5502,7 +5510,7 @@ yyreduce:
case 394:
/* Line 1792 of yacc.c */
-#line 2092 "conf_parser.y"
+#line 2095 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= CONF_FLAGS_ALLOW_AUTO_CONN;
@@ -5511,7 +5519,7 @@ yyreduce:
case 395:
/* Line 1792 of yacc.c */
-#line 2096 "conf_parser.y"
+#line 2099 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.flags.value |= CONF_FLAGS_SSL;
@@ -5520,7 +5528,7 @@ yyreduce:
case 396:
/* Line 1792 of yacc.c */
-#line 2102 "conf_parser.y"
+#line 2105 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5534,7 +5542,7 @@ yyreduce:
case 397:
/* Line 1792 of yacc.c */
-#line 2113 "conf_parser.y"
+#line 2116 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.hub.list);
@@ -5543,7 +5551,7 @@ yyreduce:
case 398:
/* Line 1792 of yacc.c */
-#line 2119 "conf_parser.y"
+#line 2122 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
dlinkAdd(xstrdup(yylval.string), make_dlink_node(), &block_state.leaf.list);
@@ -5552,7 +5560,7 @@ yyreduce:
case 399:
/* Line 1792 of yacc.c */
-#line 2125 "conf_parser.y"
+#line 2128 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.class.buf, yylval.string, sizeof(block_state.class.buf));
@@ -5561,7 +5569,7 @@ yyreduce:
case 400:
/* Line 1792 of yacc.c */
-#line 2131 "conf_parser.y"
+#line 2134 "conf_parser.y"
{
#ifdef HAVE_LIBCRYPTO
if (conf_parser_ctx.pass == 2)
@@ -5575,7 +5583,7 @@ yyreduce:
case 401:
/* Line 1792 of yacc.c */
-#line 2146 "conf_parser.y"
+#line 2149 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
reset_block_state();
@@ -5584,7 +5592,7 @@ yyreduce:
case 402:
/* Line 1792 of yacc.c */
-#line 2150 "conf_parser.y"
+#line 2153 "conf_parser.y"
{
struct MaskItem *conf = NULL;
@@ -5645,7 +5653,7 @@ yyreduce:
case 403:
/* Line 1792 of yacc.c */
-#line 2208 "conf_parser.y"
+#line 2211 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.port.value = 0;
@@ -5654,7 +5662,7 @@ yyreduce:
case 407:
/* Line 1792 of yacc.c */
-#line 2215 "conf_parser.y"
+#line 2218 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.port.value = 1;
@@ -5663,7 +5671,7 @@ yyreduce:
case 414:
/* Line 1792 of yacc.c */
-#line 2224 "conf_parser.y"
+#line 2227 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
@@ -5686,7 +5694,7 @@ yyreduce:
case 415:
/* Line 1792 of yacc.c */
-#line 2244 "conf_parser.y"
+#line 2247 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
@@ -5695,7 +5703,7 @@ yyreduce:
case 416:
/* Line 1792 of yacc.c */
-#line 2253 "conf_parser.y"
+#line 2256 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
reset_block_state();
@@ -5704,7 +5712,7 @@ yyreduce:
case 417:
/* Line 1792 of yacc.c */
-#line 2257 "conf_parser.y"
+#line 2260 "conf_parser.y"
{
struct MaskItem *conf = NULL;
@@ -5730,7 +5738,7 @@ yyreduce:
case 423:
/* Line 1792 of yacc.c */
-#line 2283 "conf_parser.y"
+#line 2286 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.addr.buf, yylval.string, sizeof(block_state.addr.buf));
@@ -5739,7 +5747,7 @@ yyreduce:
case 424:
/* Line 1792 of yacc.c */
-#line 2289 "conf_parser.y"
+#line 2292 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
@@ -5748,7 +5756,7 @@ yyreduce:
case 430:
/* Line 1792 of yacc.c */
-#line 2303 "conf_parser.y"
+#line 2306 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -5765,7 +5773,7 @@ yyreduce:
case 431:
/* Line 1792 of yacc.c */
-#line 2320 "conf_parser.y"
+#line 2323 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
reset_block_state();
@@ -5774,7 +5782,7 @@ yyreduce:
case 432:
/* Line 1792 of yacc.c */
-#line 2324 "conf_parser.y"
+#line 2327 "conf_parser.y"
{
struct MaskItem *conf = NULL;
@@ -5818,7 +5826,7 @@ yyreduce:
case 433:
/* Line 1792 of yacc.c */
-#line 2365 "conf_parser.y"
+#line 2368 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.port.value = 0;
@@ -5827,7 +5835,7 @@ yyreduce:
case 437:
/* Line 1792 of yacc.c */
-#line 2372 "conf_parser.y"
+#line 2375 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
block_state.port.value = 1;
@@ -5836,7 +5844,7 @@ yyreduce:
case 444:
/* Line 1792 of yacc.c */
-#line 2381 "conf_parser.y"
+#line 2384 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
@@ -5845,7 +5853,7 @@ yyreduce:
case 445:
/* Line 1792 of yacc.c */
-#line 2387 "conf_parser.y"
+#line 2390 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
@@ -5854,7 +5862,7 @@ yyreduce:
case 499:
/* Line 1792 of yacc.c */
-#line 2432 "conf_parser.y"
+#line 2435 "conf_parser.y"
{
ConfigFileEntry.max_watch = (yyvsp[(3) - (4)].number);
}
@@ -5862,7 +5870,7 @@ yyreduce:
case 500:
/* Line 1792 of yacc.c */
-#line 2437 "conf_parser.y"
+#line 2440 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.glines = yylval.number;
@@ -5871,7 +5879,7 @@ yyreduce:
case 501:
/* Line 1792 of yacc.c */
-#line 2443 "conf_parser.y"
+#line 2446 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.gline_time = (yyvsp[(3) - (4)].number);
@@ -5880,7 +5888,7 @@ yyreduce:
case 502:
/* Line 1792 of yacc.c */
-#line 2449 "conf_parser.y"
+#line 2452 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.gline_request_time = (yyvsp[(3) - (4)].number);
@@ -5889,7 +5897,7 @@ yyreduce:
case 503:
/* Line 1792 of yacc.c */
-#line 2455 "conf_parser.y"
+#line 2458 "conf_parser.y"
{
ConfigFileEntry.gline_min_cidr = (yyvsp[(3) - (4)].number);
}
@@ -5897,7 +5905,7 @@ yyreduce:
case 504:
/* Line 1792 of yacc.c */
-#line 2460 "conf_parser.y"
+#line 2463 "conf_parser.y"
{
ConfigFileEntry.gline_min_cidr6 = (yyvsp[(3) - (4)].number);
}
@@ -5905,7 +5913,7 @@ yyreduce:
case 505:
/* Line 1792 of yacc.c */
-#line 2465 "conf_parser.y"
+#line 2468 "conf_parser.y"
{
ConfigFileEntry.tkline_expire_notices = yylval.number;
}
@@ -5913,7 +5921,7 @@ yyreduce:
case 506:
/* Line 1792 of yacc.c */
-#line 2470 "conf_parser.y"
+#line 2473 "conf_parser.y"
{
ConfigFileEntry.kill_chase_time_limit = (yyvsp[(3) - (4)].number);
}
@@ -5921,7 +5929,7 @@ yyreduce:
case 507:
/* Line 1792 of yacc.c */
-#line 2475 "conf_parser.y"
+#line 2478 "conf_parser.y"
{
ConfigFileEntry.hide_spoof_ips = yylval.number;
}
@@ -5929,7 +5937,7 @@ yyreduce:
case 508:
/* Line 1792 of yacc.c */
-#line 2480 "conf_parser.y"
+#line 2483 "conf_parser.y"
{
ConfigFileEntry.ignore_bogus_ts = yylval.number;
}
@@ -5937,7 +5945,7 @@ yyreduce:
case 509:
/* Line 1792 of yacc.c */
-#line 2485 "conf_parser.y"
+#line 2488 "conf_parser.y"
{
ConfigFileEntry.disable_remote = yylval.number;
}
@@ -5945,7 +5953,7 @@ yyreduce:
case 510:
/* Line 1792 of yacc.c */
-#line 2490 "conf_parser.y"
+#line 2493 "conf_parser.y"
{
ConfigFileEntry.failed_oper_notice = yylval.number;
}
@@ -5953,7 +5961,7 @@ yyreduce:
case 511:
/* Line 1792 of yacc.c */
-#line 2495 "conf_parser.y"
+#line 2498 "conf_parser.y"
{
ConfigFileEntry.anti_nick_flood = yylval.number;
}
@@ -5961,7 +5969,7 @@ yyreduce:
case 512:
/* Line 1792 of yacc.c */
-#line 2500 "conf_parser.y"
+#line 2503 "conf_parser.y"
{
ConfigFileEntry.max_nick_time = (yyvsp[(3) - (4)].number);
}
@@ -5969,7 +5977,7 @@ yyreduce:
case 513:
/* Line 1792 of yacc.c */
-#line 2505 "conf_parser.y"
+#line 2508 "conf_parser.y"
{
ConfigFileEntry.max_nick_changes = (yyvsp[(3) - (4)].number);
}
@@ -5977,7 +5985,7 @@ yyreduce:
case 514:
/* Line 1792 of yacc.c */
-#line 2510 "conf_parser.y"
+#line 2513 "conf_parser.y"
{
ConfigFileEntry.max_accept = (yyvsp[(3) - (4)].number);
}
@@ -5985,7 +5993,7 @@ yyreduce:
case 515:
/* Line 1792 of yacc.c */
-#line 2515 "conf_parser.y"
+#line 2518 "conf_parser.y"
{
ConfigFileEntry.anti_spam_exit_message_time = (yyvsp[(3) - (4)].number);
}
@@ -5993,7 +6001,7 @@ yyreduce:
case 516:
/* Line 1792 of yacc.c */
-#line 2520 "conf_parser.y"
+#line 2523 "conf_parser.y"
{
ConfigFileEntry.ts_warn_delta = (yyvsp[(3) - (4)].number);
}
@@ -6001,7 +6009,7 @@ yyreduce:
case 517:
/* Line 1792 of yacc.c */
-#line 2525 "conf_parser.y"
+#line 2528 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigFileEntry.ts_max_delta = (yyvsp[(3) - (4)].number);
@@ -6010,7 +6018,7 @@ yyreduce:
case 518:
/* Line 1792 of yacc.c */
-#line 2531 "conf_parser.y"
+#line 2534 "conf_parser.y"
{
if (((yyvsp[(3) - (4)].number) > 0) && conf_parser_ctx.pass == 1)
{
@@ -6024,7 +6032,7 @@ yyreduce:
case 519:
/* Line 1792 of yacc.c */
-#line 2542 "conf_parser.y"
+#line 2545 "conf_parser.y"
{
ConfigFileEntry.invisible_on_connect = yylval.number;
}
@@ -6032,7 +6040,7 @@ yyreduce:
case 520:
/* Line 1792 of yacc.c */
-#line 2547 "conf_parser.y"
+#line 2550 "conf_parser.y"
{
ConfigFileEntry.warn_no_nline = yylval.number;
}
@@ -6040,7 +6048,7 @@ yyreduce:
case 521:
/* Line 1792 of yacc.c */
-#line 2552 "conf_parser.y"
+#line 2555 "conf_parser.y"
{
ConfigFileEntry.stats_e_disabled = yylval.number;
}
@@ -6048,7 +6056,7 @@ yyreduce:
case 522:
/* Line 1792 of yacc.c */
-#line 2557 "conf_parser.y"
+#line 2560 "conf_parser.y"
{
ConfigFileEntry.stats_o_oper_only = yylval.number;
}
@@ -6056,7 +6064,7 @@ yyreduce:
case 523:
/* Line 1792 of yacc.c */
-#line 2562 "conf_parser.y"
+#line 2565 "conf_parser.y"
{
ConfigFileEntry.stats_P_oper_only = yylval.number;
}
@@ -6064,7 +6072,7 @@ yyreduce:
case 524:
/* Line 1792 of yacc.c */
-#line 2567 "conf_parser.y"
+#line 2570 "conf_parser.y"
{
ConfigFileEntry.stats_k_oper_only = 2 * yylval.number;
}
@@ -6072,7 +6080,7 @@ yyreduce:
case 525:
/* Line 1792 of yacc.c */
-#line 2570 "conf_parser.y"
+#line 2573 "conf_parser.y"
{
ConfigFileEntry.stats_k_oper_only = 1;
}
@@ -6080,7 +6088,7 @@ yyreduce:
case 526:
/* Line 1792 of yacc.c */
-#line 2575 "conf_parser.y"
+#line 2578 "conf_parser.y"
{
ConfigFileEntry.stats_i_oper_only = 2 * yylval.number;
}
@@ -6088,7 +6096,7 @@ yyreduce:
case 527:
/* Line 1792 of yacc.c */
-#line 2578 "conf_parser.y"
+#line 2581 "conf_parser.y"
{
ConfigFileEntry.stats_i_oper_only = 1;
}
@@ -6096,7 +6104,7 @@ yyreduce:
case 528:
/* Line 1792 of yacc.c */
-#line 2583 "conf_parser.y"
+#line 2586 "conf_parser.y"
{
ConfigFileEntry.pace_wait = (yyvsp[(3) - (4)].number);
}
@@ -6104,7 +6112,7 @@ yyreduce:
case 529:
/* Line 1792 of yacc.c */
-#line 2588 "conf_parser.y"
+#line 2591 "conf_parser.y"
{
ConfigFileEntry.caller_id_wait = (yyvsp[(3) - (4)].number);
}
@@ -6112,7 +6120,7 @@ yyreduce:
case 530:
/* Line 1792 of yacc.c */
-#line 2593 "conf_parser.y"
+#line 2596 "conf_parser.y"
{
ConfigFileEntry.opers_bypass_callerid = yylval.number;
}
@@ -6120,7 +6128,7 @@ yyreduce:
case 531:
/* Line 1792 of yacc.c */
-#line 2598 "conf_parser.y"
+#line 2601 "conf_parser.y"
{
ConfigFileEntry.pace_wait_simple = (yyvsp[(3) - (4)].number);
}
@@ -6128,7 +6136,7 @@ yyreduce:
case 532:
/* Line 1792 of yacc.c */
-#line 2603 "conf_parser.y"
+#line 2606 "conf_parser.y"
{
ConfigFileEntry.short_motd = yylval.number;
}
@@ -6136,7 +6144,7 @@ yyreduce:
case 533:
/* Line 1792 of yacc.c */
-#line 2608 "conf_parser.y"
+#line 2611 "conf_parser.y"
{
ConfigFileEntry.no_oper_flood = yylval.number;
}
@@ -6144,7 +6152,7 @@ yyreduce:
case 534:
/* Line 1792 of yacc.c */
-#line 2613 "conf_parser.y"
+#line 2616 "conf_parser.y"
{
ConfigFileEntry.true_no_oper_flood = yylval.number;
}
@@ -6152,7 +6160,7 @@ yyreduce:
case 535:
/* Line 1792 of yacc.c */
-#line 2618 "conf_parser.y"
+#line 2621 "conf_parser.y"
{
ConfigFileEntry.oper_pass_resv = yylval.number;
}
@@ -6160,7 +6168,7 @@ yyreduce:
case 536:
/* Line 1792 of yacc.c */
-#line 2623 "conf_parser.y"
+#line 2626 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6174,7 +6182,7 @@ yyreduce:
case 537:
/* Line 1792 of yacc.c */
-#line 2634 "conf_parser.y"
+#line 2637 "conf_parser.y"
{
ConfigFileEntry.dots_in_ident = (yyvsp[(3) - (4)].number);
}
@@ -6182,7 +6190,7 @@ yyreduce:
case 538:
/* Line 1792 of yacc.c */
-#line 2639 "conf_parser.y"
+#line 2642 "conf_parser.y"
{
ConfigFileEntry.max_targets = (yyvsp[(3) - (4)].number);
}
@@ -6190,7 +6198,7 @@ yyreduce:
case 539:
/* Line 1792 of yacc.c */
-#line 2644 "conf_parser.y"
+#line 2647 "conf_parser.y"
{
ConfigFileEntry.use_egd = yylval.number;
}
@@ -6198,7 +6206,7 @@ yyreduce:
case 540:
/* Line 1792 of yacc.c */
-#line 2649 "conf_parser.y"
+#line 2652 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6210,7 +6218,7 @@ yyreduce:
case 541:
/* Line 1792 of yacc.c */
-#line 2658 "conf_parser.y"
+#line 2661 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2 && valid_servname(yylval.string))
{
@@ -6222,7 +6230,7 @@ yyreduce:
case 542:
/* Line 1792 of yacc.c */
-#line 2667 "conf_parser.y"
+#line 2670 "conf_parser.y"
{
ConfigFileEntry.ping_cookie = yylval.number;
}
@@ -6230,7 +6238,7 @@ yyreduce:
case 543:
/* Line 1792 of yacc.c */
-#line 2672 "conf_parser.y"
+#line 2675 "conf_parser.y"
{
ConfigFileEntry.disable_auth = yylval.number;
}
@@ -6238,7 +6246,7 @@ yyreduce:
case 544:
/* Line 1792 of yacc.c */
-#line 2677 "conf_parser.y"
+#line 2680 "conf_parser.y"
{
ConfigFileEntry.throttle_time = yylval.number;
}
@@ -6246,7 +6254,7 @@ yyreduce:
case 545:
/* Line 1792 of yacc.c */
-#line 2682 "conf_parser.y"
+#line 2685 "conf_parser.y"
{
ConfigFileEntry.oper_umodes = 0;
}
@@ -6254,7 +6262,7 @@ yyreduce:
case 549:
/* Line 1792 of yacc.c */
-#line 2688 "conf_parser.y"
+#line 2691 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_BOTS;
}
@@ -6262,7 +6270,7 @@ yyreduce:
case 550:
/* Line 1792 of yacc.c */
-#line 2691 "conf_parser.y"
+#line 2694 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_CCONN;
}
@@ -6270,7 +6278,7 @@ yyreduce:
case 551:
/* Line 1792 of yacc.c */
-#line 2694 "conf_parser.y"
+#line 2697 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_CCONN_FULL;
}
@@ -6278,7 +6286,7 @@ yyreduce:
case 552:
/* Line 1792 of yacc.c */
-#line 2697 "conf_parser.y"
+#line 2700 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_DEAF;
}
@@ -6286,7 +6294,7 @@ yyreduce:
case 553:
/* Line 1792 of yacc.c */
-#line 2700 "conf_parser.y"
+#line 2703 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_DEBUG;
}
@@ -6294,7 +6302,7 @@ yyreduce:
case 554:
/* Line 1792 of yacc.c */
-#line 2703 "conf_parser.y"
+#line 2706 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_FULL;
}
@@ -6302,7 +6310,7 @@ yyreduce:
case 555:
/* Line 1792 of yacc.c */
-#line 2706 "conf_parser.y"
+#line 2709 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_HIDDEN;
}
@@ -6310,7 +6318,7 @@ yyreduce:
case 556:
/* Line 1792 of yacc.c */
-#line 2709 "conf_parser.y"
+#line 2712 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SKILL;
}
@@ -6318,7 +6326,7 @@ yyreduce:
case 557:
/* Line 1792 of yacc.c */
-#line 2712 "conf_parser.y"
+#line 2715 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_NCHANGE;
}
@@ -6326,7 +6334,7 @@ yyreduce:
case 558:
/* Line 1792 of yacc.c */
-#line 2715 "conf_parser.y"
+#line 2718 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_REJ;
}
@@ -6334,7 +6342,7 @@ yyreduce:
case 559:
/* Line 1792 of yacc.c */
-#line 2718 "conf_parser.y"
+#line 2721 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_UNAUTH;
}
@@ -6342,7 +6350,7 @@ yyreduce:
case 560:
/* Line 1792 of yacc.c */
-#line 2721 "conf_parser.y"
+#line 2724 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SPY;
}
@@ -6350,7 +6358,7 @@ yyreduce:
case 561:
/* Line 1792 of yacc.c */
-#line 2724 "conf_parser.y"
+#line 2727 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_EXTERNAL;
}
@@ -6358,7 +6366,7 @@ yyreduce:
case 562:
/* Line 1792 of yacc.c */
-#line 2727 "conf_parser.y"
+#line 2730 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_OPERWALL;
}
@@ -6366,7 +6374,7 @@ yyreduce:
case 563:
/* Line 1792 of yacc.c */
-#line 2730 "conf_parser.y"
+#line 2733 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SERVNOTICE;
}
@@ -6374,7 +6382,7 @@ yyreduce:
case 564:
/* Line 1792 of yacc.c */
-#line 2733 "conf_parser.y"
+#line 2736 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_INVISIBLE;
}
@@ -6382,7 +6390,7 @@ yyreduce:
case 565:
/* Line 1792 of yacc.c */
-#line 2736 "conf_parser.y"
+#line 2739 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_WALLOP;
}
@@ -6390,7 +6398,7 @@ yyreduce:
case 566:
/* Line 1792 of yacc.c */
-#line 2739 "conf_parser.y"
+#line 2742 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_SOFTCALLERID;
}
@@ -6398,7 +6406,7 @@ yyreduce:
case 567:
/* Line 1792 of yacc.c */
-#line 2742 "conf_parser.y"
+#line 2745 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_CALLERID;
}
@@ -6406,7 +6414,7 @@ yyreduce:
case 568:
/* Line 1792 of yacc.c */
-#line 2745 "conf_parser.y"
+#line 2748 "conf_parser.y"
{
ConfigFileEntry.oper_umodes |= UMODE_LOCOPS;
}
@@ -6414,7 +6422,7 @@ yyreduce:
case 569:
/* Line 1792 of yacc.c */
-#line 2750 "conf_parser.y"
+#line 2753 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes = 0;
}
@@ -6422,7 +6430,7 @@ yyreduce:
case 573:
/* Line 1792 of yacc.c */
-#line 2756 "conf_parser.y"
+#line 2759 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_BOTS;
}
@@ -6430,7 +6438,7 @@ yyreduce:
case 574:
/* Line 1792 of yacc.c */
-#line 2759 "conf_parser.y"
+#line 2762 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_CCONN;
}
@@ -6438,7 +6446,7 @@ yyreduce:
case 575:
/* Line 1792 of yacc.c */
-#line 2762 "conf_parser.y"
+#line 2765 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_CCONN_FULL;
}
@@ -6446,7 +6454,7 @@ yyreduce:
case 576:
/* Line 1792 of yacc.c */
-#line 2765 "conf_parser.y"
+#line 2768 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_DEAF;
}
@@ -6454,7 +6462,7 @@ yyreduce:
case 577:
/* Line 1792 of yacc.c */
-#line 2768 "conf_parser.y"
+#line 2771 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_DEBUG;
}
@@ -6462,7 +6470,7 @@ yyreduce:
case 578:
/* Line 1792 of yacc.c */
-#line 2771 "conf_parser.y"
+#line 2774 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_FULL;
}
@@ -6470,7 +6478,7 @@ yyreduce:
case 579:
/* Line 1792 of yacc.c */
-#line 2774 "conf_parser.y"
+#line 2777 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SKILL;
}
@@ -6478,7 +6486,7 @@ yyreduce:
case 580:
/* Line 1792 of yacc.c */
-#line 2777 "conf_parser.y"
+#line 2780 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_HIDDEN;
}
@@ -6486,7 +6494,7 @@ yyreduce:
case 581:
/* Line 1792 of yacc.c */
-#line 2780 "conf_parser.y"
+#line 2783 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_NCHANGE;
}
@@ -6494,7 +6502,7 @@ yyreduce:
case 582:
/* Line 1792 of yacc.c */
-#line 2783 "conf_parser.y"
+#line 2786 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_REJ;
}
@@ -6502,7 +6510,7 @@ yyreduce:
case 583:
/* Line 1792 of yacc.c */
-#line 2786 "conf_parser.y"
+#line 2789 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_UNAUTH;
}
@@ -6510,7 +6518,7 @@ yyreduce:
case 584:
/* Line 1792 of yacc.c */
-#line 2789 "conf_parser.y"
+#line 2792 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SPY;
}
@@ -6518,7 +6526,7 @@ yyreduce:
case 585:
/* Line 1792 of yacc.c */
-#line 2792 "conf_parser.y"
+#line 2795 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_EXTERNAL;
}
@@ -6526,7 +6534,7 @@ yyreduce:
case 586:
/* Line 1792 of yacc.c */
-#line 2795 "conf_parser.y"
+#line 2798 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_OPERWALL;
}
@@ -6534,7 +6542,7 @@ yyreduce:
case 587:
/* Line 1792 of yacc.c */
-#line 2798 "conf_parser.y"
+#line 2801 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SERVNOTICE;
}
@@ -6542,7 +6550,7 @@ yyreduce:
case 588:
/* Line 1792 of yacc.c */
-#line 2801 "conf_parser.y"
+#line 2804 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_INVISIBLE;
}
@@ -6550,7 +6558,7 @@ yyreduce:
case 589:
/* Line 1792 of yacc.c */
-#line 2804 "conf_parser.y"
+#line 2807 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_WALLOP;
}
@@ -6558,7 +6566,7 @@ yyreduce:
case 590:
/* Line 1792 of yacc.c */
-#line 2807 "conf_parser.y"
+#line 2810 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_SOFTCALLERID;
}
@@ -6566,7 +6574,7 @@ yyreduce:
case 591:
/* Line 1792 of yacc.c */
-#line 2810 "conf_parser.y"
+#line 2813 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_CALLERID;
}
@@ -6574,7 +6582,7 @@ yyreduce:
case 592:
/* Line 1792 of yacc.c */
-#line 2813 "conf_parser.y"
+#line 2816 "conf_parser.y"
{
ConfigFileEntry.oper_only_umodes |= UMODE_LOCOPS;
}
@@ -6582,7 +6590,7 @@ yyreduce:
case 593:
/* Line 1792 of yacc.c */
-#line 2818 "conf_parser.y"
+#line 2821 "conf_parser.y"
{
ConfigFileEntry.min_nonwildcard = (yyvsp[(3) - (4)].number);
}
@@ -6590,7 +6598,7 @@ yyreduce:
case 594:
/* Line 1792 of yacc.c */
-#line 2823 "conf_parser.y"
+#line 2826 "conf_parser.y"
{
ConfigFileEntry.min_nonwildcard_simple = (yyvsp[(3) - (4)].number);
}
@@ -6598,7 +6606,7 @@ yyreduce:
case 595:
/* Line 1792 of yacc.c */
-#line 2828 "conf_parser.y"
+#line 2831 "conf_parser.y"
{
ConfigFileEntry.default_floodcount = (yyvsp[(3) - (4)].number);
}
@@ -6606,7 +6614,7 @@ yyreduce:
case 614:
/* Line 1792 of yacc.c */
-#line 2851 "conf_parser.y"
+#line 2854 "conf_parser.y"
{
ConfigChannel.disable_fake_channels = yylval.number;
}
@@ -6614,7 +6622,7 @@ yyreduce:
case 615:
/* Line 1792 of yacc.c */
-#line 2856 "conf_parser.y"
+#line 2859 "conf_parser.y"
{
ConfigChannel.restrict_channels = yylval.number;
}
@@ -6622,7 +6630,7 @@ yyreduce:
case 616:
/* Line 1792 of yacc.c */
-#line 2861 "conf_parser.y"
+#line 2864 "conf_parser.y"
{
ConfigChannel.knock_delay = (yyvsp[(3) - (4)].number);
}
@@ -6630,7 +6638,7 @@ yyreduce:
case 617:
/* Line 1792 of yacc.c */
-#line 2866 "conf_parser.y"
+#line 2869 "conf_parser.y"
{
ConfigChannel.knock_delay_channel = (yyvsp[(3) - (4)].number);
}
@@ -6638,7 +6646,7 @@ yyreduce:
case 618:
/* Line 1792 of yacc.c */
-#line 2871 "conf_parser.y"
+#line 2874 "conf_parser.y"
{
ConfigChannel.max_chans_per_user = (yyvsp[(3) - (4)].number);
}
@@ -6646,7 +6654,7 @@ yyreduce:
case 619:
/* Line 1792 of yacc.c */
-#line 2876 "conf_parser.y"
+#line 2879 "conf_parser.y"
{
ConfigChannel.max_chans_per_oper = (yyvsp[(3) - (4)].number);
}
@@ -6654,7 +6662,7 @@ yyreduce:
case 620:
/* Line 1792 of yacc.c */
-#line 2881 "conf_parser.y"
+#line 2884 "conf_parser.y"
{
ConfigChannel.quiet_on_ban = yylval.number;
}
@@ -6662,7 +6670,7 @@ yyreduce:
case 621:
/* Line 1792 of yacc.c */
-#line 2886 "conf_parser.y"
+#line 2889 "conf_parser.y"
{
ConfigChannel.max_bans = (yyvsp[(3) - (4)].number);
}
@@ -6670,7 +6678,7 @@ yyreduce:
case 622:
/* Line 1792 of yacc.c */
-#line 2891 "conf_parser.y"
+#line 2894 "conf_parser.y"
{
ConfigChannel.default_split_user_count = (yyvsp[(3) - (4)].number);
}
@@ -6678,7 +6686,7 @@ yyreduce:
case 623:
/* Line 1792 of yacc.c */
-#line 2896 "conf_parser.y"
+#line 2899 "conf_parser.y"
{
ConfigChannel.default_split_server_count = (yyvsp[(3) - (4)].number);
}
@@ -6686,7 +6694,7 @@ yyreduce:
case 624:
/* Line 1792 of yacc.c */
-#line 2901 "conf_parser.y"
+#line 2904 "conf_parser.y"
{
ConfigChannel.no_create_on_split = yylval.number;
}
@@ -6694,7 +6702,7 @@ yyreduce:
case 625:
/* Line 1792 of yacc.c */
-#line 2906 "conf_parser.y"
+#line 2909 "conf_parser.y"
{
ConfigChannel.no_join_on_split = yylval.number;
}
@@ -6702,7 +6710,7 @@ yyreduce:
case 626:
/* Line 1792 of yacc.c */
-#line 2911 "conf_parser.y"
+#line 2914 "conf_parser.y"
{
GlobalSetOptions.joinfloodcount = yylval.number;
}
@@ -6710,7 +6718,7 @@ yyreduce:
case 627:
/* Line 1792 of yacc.c */
-#line 2916 "conf_parser.y"
+#line 2919 "conf_parser.y"
{
GlobalSetOptions.joinfloodtime = yylval.number;
}
@@ -6718,7 +6726,7 @@ yyreduce:
case 638:
/* Line 1792 of yacc.c */
-#line 2934 "conf_parser.y"
+#line 2937 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.flatten_links = yylval.number;
@@ -6727,7 +6735,7 @@ yyreduce:
case 639:
/* Line 1792 of yacc.c */
-#line 2940 "conf_parser.y"
+#line 2943 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.hide_servers = yylval.number;
@@ -6736,7 +6744,7 @@ yyreduce:
case 640:
/* Line 1792 of yacc.c */
-#line 2946 "conf_parser.y"
+#line 2949 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6748,7 +6756,7 @@ yyreduce:
case 641:
/* Line 1792 of yacc.c */
-#line 2955 "conf_parser.y"
+#line 2958 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
{
@@ -6765,7 +6773,7 @@ yyreduce:
case 642:
/* Line 1792 of yacc.c */
-#line 2969 "conf_parser.y"
+#line 2972 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.hidden = yylval.number;
@@ -6774,7 +6782,7 @@ yyreduce:
case 643:
/* Line 1792 of yacc.c */
-#line 2975 "conf_parser.y"
+#line 2978 "conf_parser.y"
{
if (conf_parser_ctx.pass == 2)
ConfigServerHide.hide_server_ips = yylval.number;
@@ -6783,7 +6791,7 @@ yyreduce:
/* Line 1792 of yacc.c */
-#line 6787 "conf_parser.c"
+#line 6795 "conf_parser.c"
default: break;
}
/* User semantic actions sometimes alter yychar, and that requires
diff --git a/src/conf_parser.y b/src/conf_parser.y
index d71324b..750a200 100644
--- a/src/conf_parser.y
+++ b/src/conf_parser.y
@@ -1710,12 +1710,18 @@ resv_entry: RESV
reset_block_state();
strlcpy(block_state.rpass.buf, CONF_NOREASON, sizeof(block_state.rpass.buf));
-} '{' resv_items '}' ';';
+} '{' resv_items '}' ';'
+{
+ if (IsChanPrefix(block_state.name.buf[0]))
+ create_channel_resv(block_state.name.buf, block_state.rpass.buf, 1);
+ else if (block_state.name.buf[0])
+ create_nick_resv(block_state.name.buf, block_state.rpass.buf, 1);
+};
resv_items: resv_items resv_item | resv_item;
-resv_item: resv_creason | resv_channel | resv_nick | error ';' ;
+resv_item: resv_reason | resv_channel | resv_nick | error ';' ;
-resv_creason: REASON '=' QSTRING ';'
+resv_reason: REASON '=' QSTRING ';'
{
if (conf_parser_ctx.pass == 2)
strlcpy(block_state.rpass.buf, yylval.string, sizeof(block_state.rpass.buf));
@@ -1723,17 +1729,14 @@ resv_creason: REASON '=' QSTRING ';'
resv_channel: CHANNEL '=' QSTRING ';'
{
- if (conf_parser_ctx.pass != 2)
- break;
-
- if (IsChanPrefix(*yylval.string))
- create_channel_resv(yylval.string, block_state.rpass.buf, 1);
+ if (conf_parser_ctx.pass == 2)
+ strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
};
resv_nick: NICK '=' QSTRING ';'
{
if (conf_parser_ctx.pass == 2)
- create_nick_resv(yylval.string, block_state.rpass.buf, 1);
+ strlcpy(block_state.name.buf, yylval.string, sizeof(block_state.name.buf));
};
/***************************************************************************