Split configfiles out of TeX document.
[ach-master.git] / src / configuration / IM / Charybdis / ircd.conf
1 /* doc/example.conf - brief example configuration file
2  *
3  * Copyright (C) 2000-2002 Hybrid Development Team
4  * Copyright (C) 2002-2005 ircd-ratbox development team
5  * Copyright (C) 2005-2006 charybdis development team
6  *
7  * $Id: example.conf 3582 2007-11-17 21:55:48Z jilles $
8  *
9  * See reference.conf for more information.
10  */
11
12 /* Extensions */
13 #loadmodule "extensions/chm_operonly_compat.so";
14 #loadmodule "extensions/chm_quietunreg_compat.so";
15 #loadmodule "extensions/chm_sslonly_compat.so";
16 #loadmodule "extensions/createauthonly.so";
17 #loadmodule "extensions/extb_account.so";
18 #loadmodule "extensions/extb_canjoin.so";
19 #loadmodule "extensions/extb_channel.so";
20 #loadmodule "extensions/extb_extgecos.so";
21 #loadmodule "extensions/extb_oper.so";
22 #loadmodule "extensions/extb_realname.so";
23 #loadmodule "extensions/extb_server.so";
24 loadmodule "extensions/extb_ssl.so";
25 #loadmodule "extensions/hurt.so";
26 #loadmodule "extensions/m_findforwards.so";
27 #loadmodule "extensions/m_identify.so";
28 #loadmodule "extensions/no_oper_invis.so";
29 #loadmodule "extensions/sno_farconnect.so";
30 #loadmodule "extensions/sno_globalkline.so";
31 #loadmodule "extensions/sno_globaloper.so";
32 #loadmodule "extensions/sno_whois.so";
33
34 /*
35  * IP cloaking extensions: use ip_cloaking_4.0
36  * if you're linking 3.2 and later, otherwise use
37  * ip_cloaking.so, for compatibility with older 3.x
38  * releases.
39  */
40
41 #loadmodule "extensions/ip_cloaking_4.0.so";
42 #loadmodule "extensions/ip_cloaking.so";
43
44 serverinfo {
45         name = "hades.arpa";
46         sid = "42X";
47         description = "charybdis test server";
48         network_name = "AthemeNET";
49         network_desc = "Your IRC network.";
50         hub = yes;
51
52         /* On multi-homed hosts you may need the following. These define
53          * the addresses we connect from to other servers. */
54         /* for IPv4 */
55         #vhost = "192.169.0.1";
56         /* for IPv6 */
57         #vhost6 = "3ffe:80e8:546::2";
58         
59         /* ssl_private_key: our ssl private key */
60         ssl_private_key = "etc/test.key";
61
62         /* ssl_cert: certificate for our ssl server */
63         ssl_cert = "etc/test.cert";
64
65         /* ssl_dh_params: DH parameters, generate with openssl dhparam -out dh.pem 1024 */
66         ssl_dh_params = "etc/dh.pem";
67
68         /* ssld_count: number of ssld processes you want to start, if you
69          * have a really busy server, using N-1 where N is the number of
70          * cpu/cpu cores you have might be useful. A number greater than one
71          * can also be useful in case of bugs in ssld and because ssld needs
72          * two file descriptors per SSL connection.
73          */
74         # set ssld_count as number of cores - 1
75         ssld_count = 1;
76
77         /* default max clients: the default maximum number of clients
78          * allowed to connect.  This can be changed once ircd has started by
79          * issuing:
80          *   /quote set maxclients <limit>
81          */
82         default_max_clients = 1024;
83 };
84
85 admin {
86         name = "Lazy admin (lazya)";
87         description = "AthemeNET client server";
88         email = "nobody@127.0.0.1";
89 };
90
91 log {
92         fname_userlog = "/var/log/charybdis/userlog";
93         #fname_fuserlog = "/var/log/charybdis/fuserlog";
94         fname_operlog = "/var/log/charybdis/operlog";
95         #fname_foperlog = "/var/log/charybdis/foperlog";
96         fname_serverlog = "/var/log/charybdis/serverlog";
97         #fname_klinelog = "/var/log/charybdis/klinelog";
98         fname_killlog = "/var/log/charybdis/killlog";
99         fname_operspylog = "/var/log/charybdis/operspylog";
100         #fname_ioerrorlog = "/var/log/charybdis/ioerror";
101 };
102
103 /* class {} blocks MUST be specified before anything that uses them.  That
104  * means they must be defined before auth {} and before connect {}.
105  */
106 class "users" {
107         ping_time = 2 minutes;
108         number_per_ident = 10;
109         number_per_ip = 10;
110         number_per_ip_global = 50;
111         cidr_ipv4_bitlen = 24;
112         cidr_ipv6_bitlen = 64;
113         number_per_cidr = 200;
114         max_number = 3000;
115         sendq = 400 kbytes;
116 };
117
118 class "opers" {
119         ping_time = 5 minutes;
120         number_per_ip = 10;
121         max_number = 1000;
122         sendq = 1 megabyte;
123 };
124
125 class "server" {
126         ping_time = 5 minutes;
127         connectfreq = 5 minutes;
128         max_number = 1;
129         sendq = 4 megabytes;
130 };
131
132 listen {
133         /* If you want to listen on a specific IP only, specify host.
134          * host definitions apply only to the following port line.
135          */
136         #host = "192.169.0.1";
137         port = 5000, 6665 .. 6669;
138         sslport = 6697;
139
140         /* Listen on IPv6 (if you used host= above). */
141         #host = "3ffe:1234:a:b:c::d";
142         #port = 5000, 6665 .. 6669;
143         #sslport = 9999;
144 };
145
146 /* auth {}: allow users to connect to the ircd (OLD I:)
147  * auth {} blocks MUST be specified in order of precedence.  The first one
148  * that matches a user will be used.  So place spoofs first, then specials,
149  * then general access, then restricted.
150  */
151 auth {
152         /* user: the user@host allowed to connect.  Multiple IPv4/IPv6 user
153          * lines are permitted per auth block.  This is matched against the
154          * hostname and IP address (using :: shortening for IPv6 and
155          * prepending a 0 if it starts with a colon) and can also use CIDR
156          * masks.
157          */
158         user = "*@172.16.0.0/12";
159         user = "*@fc00::*";
160
161         /* password: an optional password that is required to use this block.
162          * By default this is not encrypted, specify the flag "encrypted" in
163          * flags = ...; below if it is.
164          */
165         password = "letmein";
166         
167         /* spoof: fake the users user@host to be be this.  You may either
168          * specify a host or a user@host to spoof to.  This is free-form,
169          * just do everyone a favour and dont abuse it. (OLD I: = flag)
170          */
171         spoof = "I.still.hate.packets";
172
173         /* Possible flags in auth:
174          * 
175          * encrypted                  | password is encrypted with mkpasswd
176          * spoof_notice               | give a notice when spoofing hosts
177          * exceed_limit (old > flag)  | allow user to exceed class user limits
178          * kline_exempt (old ^ flag)  | exempt this user from k/g/xlines&dnsbls
179          * dnsbl_exempt               | exempt this user from dnsbls
180          * spambot_exempt             | exempt this user from spambot checks
181          * shide_exempt               | exempt this user from serverhiding
182          * jupe_exempt                | exempt this user from generating
183          *                              warnings joining juped channels
184          * resv_exempt                | exempt this user from resvs
185          * flood_exempt               | exempt this user from flood limits
186          *                                     USE WITH CAUTION.
187          * no_tilde     (old - flag)  | don't prefix ~ to username if no ident
188          * need_ident   (old + flag)  | require ident for user in this class
189          * need_ssl                   | require SSL/TLS for user in this class
190          * need_sasl                  | require SASL id for user in this class
191          */
192         flags = kline_exempt, exceed_limit;
193         
194         /* class: the class the user is placed in */
195         class = "opers";
196 };
197
198 auth {
199         user = "*@*";
200         class = "users";
201 };
202
203 /* privset {} blocks MUST be specified before anything that uses them.  That
204  * means they must be defined before operator {}.
205  */
206 privset "local_op" {
207         privs = oper:local_kill, oper:operwall;
208 };
209
210 privset "server_bot" {
211         extends = "local_op";
212         privs = oper:kline, oper:remoteban, snomask:nick_changes;
213 };
214
215 privset "global_op" {
216         extends = "local_op";
217         privs = oper:global_kill, oper:routing, oper:kline, oper:unkline, oper:xline,
218                 oper:resv, oper:mass_notice, oper:remoteban;
219 };
220
221 privset "admin" {
222         extends = "global_op";
223         privs = oper:admin, oper:die, oper:rehash, oper:spy;
224 };
225
226 operator "god" {
227         /* name: the name of the oper must go above */
228
229         /* user: the user@host required for this operator.  CIDR *is*
230          * supported now. auth{} spoofs work here, other spoofs do not.
231          * multiple user="" lines are supported.
232          */
233         user = "*god@127.0.0.1";
234
235         /* password: the password required to oper.  Unless ~encrypted is
236          * contained in flags = ...; this will need to be encrypted using 
237          * mkpasswd, MD5 is supported
238          */
239         password = "etcnjl8juSU1E";
240
241         /* rsa key: the public key for this oper when using Challenge.
242          * A password should not be defined when this is used, see 
243          * doc/challenge.txt for more information.
244          */
245         #rsa_public_key_file = "/usr/local/ircd/etc/oper.pub";
246
247         /* umodes: the specific umodes this oper gets when they oper.
248          * If this is specified an oper will not be given oper_umodes
249          * These are described above oper_only_umodes in general {};
250          */
251         #umodes = locops, servnotice, operwall, wallop;
252
253         /* fingerprint: if specified, the oper's client certificate
254          * fingerprint will be checked against the specified fingerprint
255          * below.
256          */
257         #fingerprint = "c77106576abf7f9f90cca0f63874a60f2e40a64b";
258
259         /* snomask: specific server notice mask on oper up.
260          * If this is specified an oper will not be given oper_snomask.
261          */
262         snomask = "+Zbfkrsuy";
263
264         /* flags: misc options for the operator.  You may prefix an option
265          * with ~ to disable it, e.g. ~encrypted.
266          *
267          * Default flags are encrypted.
268          *
269          * Available options:
270          *
271          * encrypted:    the password above is encrypted [DEFAULT]
272          * need_ssl:     must be using SSL/TLS to oper up
273          */
274         flags = encrypted;
275
276         /* privset: privileges set to grant */
277         privset = "admin";
278 };
279
280 #connect "irc.uplink.com" {
281 #       host = "192.168.0.1";
282 #       send_password = "password";
283 #       accept_password = "anotherpassword";
284 #       port = 6666;
285 #       hub_mask = "*";
286 #       class = "server";
287 #       flags = compressed, topicburst;
288 #
289 #       /* If the connection is IPv6, uncomment below.
290 #        * Use 0::1, not ::1, for IPv6 localhost. */
291 #       #aftype = ipv6;
292 #};
293 #
294 #connect "ssl.uplink.com" {
295 #       host = "192.168.0.1";
296 #       send_password = "password";
297 #       accept_password = "anotherpassword";
298 #       port = 9999;
299 #       hub_mask = "*";
300 #       class = "server";
301 #       flags = ssl, topicburst;
302 #};
303
304 service {
305         name = "services.int";
306 };
307
308 cluster {
309         name = "*";
310         flags = kline, tkline, unkline, xline, txline, unxline, resv, tresv, unresv;
311 };
312
313 shared {
314         oper = "*@*", "*";
315         flags = all, rehash;
316 };
317
318 /* exempt {}: IPs that are exempt from Dlines and rejectcache. (OLD d:) */
319 exempt {
320         ip = "127.0.0.1";
321 };
322
323 channel {
324         use_invex = yes;
325         use_except = yes;
326         use_knock = yes;
327         use_forward = yes;
328         knock_delay = 5 minutes;
329         knock_delay_channel = 1 minute;
330         max_chans_per_user = 15;
331         max_bans = 100;
332         max_bans_large = 500;
333         default_split_user_count = 0;
334         default_split_server_count = 0;
335         no_create_on_split = no;
336         no_join_on_split = no;
337         burst_topicwho = yes;
338         kick_on_split_riding = no;
339         only_ascii_channels = no;
340         resv_forcepart = yes;
341         channel_target_change = yes;
342 };
343
344 serverhide {
345         flatten_links = yes;
346         links_delay = 5 minutes;
347         hidden = no;
348         disable_hidden = no;
349 };
350
351 /* These are the blacklist settings.
352  * You can have multiple combinations of host and rejection reasons.
353  * They are used in pairs of one host/rejection reason.
354  *
355  * These settings should be adequate for most networks, and are (presently)
356  * required for use on AthemeNet.
357  *
358  * Word to the wise: Do not use blacklists like SPEWS for blocking IRC
359  * connections.
360  *
361  * As of charybdis 2.1.3, you can do some keyword substitution on the rejection
362  * reason. The available keyword substitutions are:
363  *
364  *   ${ip}           - the user's IP
365  *   ${host}         - the user's canonical hostname
366  *   ${dnsbl-host}   - the dnsbl hostname the lookup was done against
367  *   ${nick}         - the user's nickname
368  *   ${network-name} - the name of the network
369  *
370  * Note: AHBL (the providers of the below *.ahbl.org BLs) request that they be
371  * contacted, via email, at admins@2mbit.com before using these BLs.
372  * See <http://www.ahbl.org/services.php> for more information.
373  */
374 blacklist {
375         host = "rbl.efnetrbl.org";
376         reject_reason = "${nick}, your IP (${ip}) is listed in EFnet's RBL. For assistance, see http://efnetrbl.org/?i=${ip}";
377
378 #       host = "ircbl.ahbl.org";
379 #       reject_reason = "${nick}, your IP (${ip}) is listed in ${dnsbl-host} for having an open proxy. In order to protect ${network-name} from abuse, we are not allowing connections with open proxies to connect.";
380 #
381 #       host = "tor.ahbl.org";
382 #       reject_reason = "${nick}, your IP (${ip}) is listed as a TOR exit node. In order to protect ${network-name} from tor-based abuse, we are not allowing TOR exit nodes to connect to our network.";
383 };
384
385 alias "NickServ" {
386         target = "NickServ";
387 };
388
389 alias "ChanServ" {
390         target = "ChanServ";
391 };
392
393 alias "OperServ" {
394         target = "OperServ";
395 };
396
397 alias "MemoServ" {
398         target = "MemoServ";
399 };
400
401 alias "NS" {
402         target = "NickServ";
403 };
404
405 alias "CS" {
406         target = "ChanServ";
407 };
408
409 alias "OS" {
410         target = "OperServ";
411 };
412
413 alias "MS" {
414         target = "MemoServ";
415 };
416
417 general {
418         hide_error_messages = opers;
419         hide_spoof_ips = yes;
420
421         /*
422          * default_umodes: umodes to enable on connect.
423          * If you have enabled the new ip_cloaking_4.0 module, and you want
424          * to make use of it, add +x to this option, i.e.:
425          *      default_umodes = "+ix";
426          *
427          * If you have enabled the old ip_cloaking module, and you want
428          * to make use of it, add +h to this option, i.e.:
429          *      default_umodes = "+ih";
430          */
431         default_umodes = "+i";
432
433         default_operstring = "is an IRC Operator";
434         default_adminstring = "is a Server Administrator";
435         servicestring = "is a Network Service";
436         disable_fake_channels = no;
437         tkline_expire_notices = no;
438         default_floodcount = 10;
439         failed_oper_notice = yes;
440         dots_in_ident=2;
441         min_nonwildcard = 4;
442         min_nonwildcard_simple = 3;
443         max_accept = 100;
444         max_monitor = 100;
445         anti_nick_flood = yes;
446         max_nick_time = 20 seconds;
447         max_nick_changes = 5;
448         anti_spam_exit_message_time = 5 minutes;
449         ts_warn_delta = 30 seconds;
450         ts_max_delta = 5 minutes;
451         client_exit = yes;
452         collision_fnc = yes;
453         global_snotices = yes;
454         dline_with_reason = yes;
455         kline_delay = 0 seconds;
456         kline_with_reason = yes;
457         kline_reason = "K-Lined";
458         identify_service = "NickServ@services.int";
459         identify_command = "IDENTIFY";
460         non_redundant_klines = yes;
461         warn_no_nline = yes;
462         use_propagated_bans = yes;
463         stats_e_disabled = no;
464         stats_c_oper_only=no;
465         stats_h_oper_only=no;
466         stats_y_oper_only=no;
467         stats_o_oper_only=yes;
468         stats_P_oper_only=no;
469         stats_i_oper_only=masked;
470         stats_k_oper_only=masked;
471         map_oper_only = no;
472         operspy_admin_only = no;
473         operspy_dont_care_user_info = no;
474         caller_id_wait = 1 minute;
475         pace_wait_simple = 1 second;
476         pace_wait = 10 seconds;
477         short_motd = no;
478         ping_cookie = no;
479         connect_timeout = 30 seconds;
480         default_ident_timeout = 5;
481         disable_auth = no;
482         no_oper_flood = yes;
483         max_targets = 4;
484         client_flood = 20;
485         use_whois_actually = no;
486         oper_only_umodes = operwall, locops, servnotice;
487         oper_umodes = locops, servnotice, operwall, wallop;
488         oper_snomask = "+s";
489         burst_away = yes;
490         nick_delay = 0 seconds; # 15 minutes if you want to enable this
491         reject_ban_time = 1 minute;
492         reject_after_count = 3;
493         reject_duration = 5 minutes;
494         throttle_duration = 60;
495         throttle_count = 4;
496 };
497
498 modules {
499         path = "modules";
500         path = "modules/autoload";
501 };