added revoke_mode_a setting
[srvx.git] / srvx.conf.example
1 // services configuration file (example)
2 /* It allows two kinds of comments.  Whitespaces between tokens are
3  * ignored.  All strings (even if they're just numbers) MUST be
4  * enclosed in double quotes.  There must be a semicolon after every
5  * key/value pair.
6  */
7
8 // The "uplinks" section describes what servers we can possibly link
9 // to.  Each subsection describes one server.
10 "uplinks" {
11     "private-network" {
12         // IP address and port the server listens on
13         "address"        "10.0.0.3";
14         "port"           "6660";
15         // What password should we send when we connect?
16         "password"       "passwordtoconnect";
17         // What password should we require our peer to send?
18         // (If it is blank, we do not require a specific password.)
19         "their_password" "passwordtorequire";
20         "enabled"        "1";
21         // How many times should we try to connect before giving up?
22         "max_tries"      "3";
23         // What IP should we bind to?
24         // If you do not specify bind_address, the default is used.
25         // "bind_address"   "192.168.0.10"; // use this ip to link
26     };
27
28     /* unused-uplink is just an example to show you how you can
29      * define more than one uplink (and how you can disable one or
30      * more of them.) */
31     "unused-uplink" {
32         "address"        "10.0.0.4";
33         "port"           "6660";
34         "password"       "passwordtoconnect";
35         "their_password" "passwordtorequire";
36         // If "enabled" is 0, we will not try to use this uplink.
37         "enabled"        "0";
38         "max_tries"      "3";
39     };
40 };
41
42 // The "services" section configures the services that make up srvx.
43 "services" {
44     "nickserv" {
45         "nick" "NickServ";
46         // What user modes do you want this service to have? Please keep in
47         // mind which ircd software you are using here, and that all of the
48         // services need to be at least +o.
49         // "modes" "+iok";
50         // If you want to by have *@* as the default hostmask for all
51         // new accounts, set default_hostmask.  This is discouraged
52         // for security reasons.
53         // "default_hostmask" "1";
54         // do we warn users when someone new auths to their account?
55         "warn_clone_auth" "1";
56         // what is the default maxlogins value?
57         "default_maxlogins" "2";
58         // what is the absolute maxlogins value?
59         "hard_maxlogins" "10";
60         // Which mode should we use for account timestamps?
61         "account_timestamp_mode" "ignore";
62         // This names a file that contains easily guessed passwords.
63         // It always contains "password", "<password>" and the user's
64         // account name.
65         "dict_file" "/usr/share/dict/words";
66         // Minimum number of various types of characters permitted in
67         // a password.
68         "password_min_length" "4";
69         "password_min_digits" "1";
70         "password_min_upper" "0";
71         "password_min_lower" "0";
72         // What should valid account and nicks look like?
73         // If valid_nick_regex is omitted, valid_account_regex is used
74         // for both nicks and accounts.
75         // These look funny because "[][-]" is the only way to write the
76         // character class containing the characters ']', '[' and '-'.
77         "valid_account_regex" "^[][_a-z^`'{}|-][][_a-z0-9^`'{}|-]*$";
78         "valid_nick_regex" "^[-_a-z][-_a-z0-9]*$";
79
80         // Should nick ownership be disabled?
81         "disable_nicks" "0";
82         // One account may only own this many nicks.
83         "nicks_per_account" "4";
84         // Send a warning when someone uses a registered nick?
85         "warn_nick_owned" "0";
86         // What to do when someone uses the NickServ "reclaim" command?
87         // This can be one of "none", "warn", "svsnick", or "kill", but
88         // stock ircu does not support svsnick -- you need Bahamut or a
89         // patch for ircu.  no, don't ask srvx developers for the patch.
90         "reclaim_action" "none";
91         // What (else) to do when someone uses a registered nick?
92         // This can be anything "reclaim_action" can be, but it makes
93         // more sense to use the "warn_nick_owned" instead of "warn".
94         "auto_reclaim_action" "none";
95         // How long to wait before doing the auto_reclaim_action?
96         // This is ignored if "auto_reclaim_action" is "none".
97         "auto_reclaim_delay" "0";
98
99         // access control for who can change account flags
100         "flag_levels" {
101             "g" "800";
102             "lc_h" "800"; // specifically lower case h
103             "uc_H" "800"; // .. and upper case H
104             "S" "999";
105             "b" "800";
106                         "I" "800";
107         };
108         // and for who can change epithets for staff
109         "set_epithet_level" "800";
110         // what opserv access level do you need to set somebody else's level?
111         "modoper_level" "850";
112
113         // how often should accounts be expired?
114         "account_expire_freq" "1d";
115         // how long until an account with access to any channel(s) expires?
116         "account_expire_delay" "35d";
117         // how long until an account with no access to any channels expires?
118         "nochan_account_expire_delay" "14d";
119         // how long must an account be inactive so it can be ounregistered without force?
120         "ounregister_inactive" "1M";
121         // which flags on an account require the ounregister to be used with force?
122         "ounregister_flags" "ShgsfnHbuI";
123         /* "require_qualified" has been removed. It is now
124          * integrated into the modcmd command authorization
125          * and dispatch mechanism.  "/msg OpServ help modcmd"
126          * for details.
127          */
128         // If somebody keeps guessing passwords incorrectly, do we gag them?
129         "autogag_enabled" "1";
130         "autogag_duration" "30m";
131         "auth_policer" {
132             "size" "5";
133             "drain-rate" "0.05";
134         };
135         // How to integrate with email cookies?
136         "email_enabled" "0"; // if set, /mail/enable MUST be set too
137         "email_required" "0"; // ignored unless email_enabled is non-zero
138         "cookie_timeout" "1d"; // how long before we expire cookies?
139         "accounts_per_email" "1"; // you may want to increase this; or not
140         "email_search_level" "600"; // minimum OpServ level to search based on email address
141         "email_visible_level" "800"; // minimum OpServ level to see somebody's email address
142     };
143
144     "opserv" {
145         "nick" "OpServ";
146         // What user modes do you want this service to have? Please keep in
147         // mind which ircd software you are using here, and that all of the
148         // services need to be at least +o.
149         // "modes" "+iok";
150         // should use of this service be limited to global opers?
151         "privileged" "1";
152         // fullname for service
153         "description" "Oper Service Bot";
154         // hostname for service; only used if "description" is also set
155         "hostname" "dances-all-night-with.srvx.net";
156         // what channel should opserv send debug output to?
157         "debug_channel" "#opserv";
158         "debug_channel_modes" "+tinms";
159         // where to send general alerts (e.g. flood alerts)?
160         "alert_channel" "#ircops";
161         "alert_channel_modes" "+tns";
162         // who to tell about staff auths?
163         "staff_auth_channel" "#opserv";
164         "staff_auth_channel_modes" "+tinms";
165         // Force Opers to be in staff_auth_channel
166         // 0 = don't force opers to be in the channel
167         // 1 = force opers to be in the channel
168         // 2 = force opers to be in the channel but kick them if they get mode -o set (deoper)
169         "staff_auth_force_opers" "2";
170         // how many clones to allow from an untrusted host?
171         "untrusted_max" "4";
172         // how long of a g-line should be issued if the max hosts is exceeded?
173         "clone_gline_duration" "1h";
174         // how long to g-line for ?block (or, by default, for ?trace gline)?
175         "block_gline_duration" "1h";
176         // how long to keep an illegal channel locked down (seconds)?
177         "purge_lock_delay" "60";
178         // channel join flood policer params?
179         "join_policer" {
180             "size" "20";
181             "drain-rate" "1";
182         };
183         // automatically moderate join flooded channels?
184         "join_flood_moderate" "1";
185         // Don't moderate and warn channels unless there are more than
186         // join_flood_moderate_threshold users in the channel. the
187         // value 0 will disable the threshold.
188         "join_flood_moderate_threshold" "50";
189         // new user flood policer params
190         "new_user_policer" {
191             "size" "200";
192             "drain-rate" "3";
193         };
194         
195     };
196
197     "chanserv" {
198         // You may disable a service by removing its "nick" config item.
199         // That means: SERVICES WILL ONLY WORK IF YOU DEFINE THEIR NICK.
200         // (This is changed relative srvx-1.0.x, which would use default
201         // unless you specified ".disabled".)
202         "nick" "ChanServ";
203         // What user modes do you want this service to have? Please keep in
204         // mind which ircd software you are using here, and that all of the
205         // services need to be at least +o.
206         // "modes" "+iok";
207         // Does your ircd have off-channel services support? Does it have
208         // a registered channel mode? Does it support services opping themselves?
209         // Bahamut has these things; ircu2.10.11 does not.
210         // This setting takes three numerical values:
211         //   0 = off
212         //   1 = use a registered channel mode, have services op themselves
213         //   2 = all of the above, and a channel setting to have ChanServ not
214         //       idle in the channel
215         "off_channel" "0";
216         // revoke channel mode +a on unregister?
217         "revoke_mode_a" "1";
218         // how long should a person be unseen before resending infoline?
219         "info_delay" "120";
220         // maximum greeting length
221         "max_greetlen" "200";
222         // maximum users in a channel userlist
223         "max_chan_users" "512";
224         // maximum bans on a channel banlist
225         "max_chan_bans" "512";
226         // maximum length of a user's infoline
227         "max_userinfo_length" "400";
228         // If DynLimit is on and there are N users in the channel, ChanServ will
229         // try to keep the limit at N+<adjust_threshold>.
230         "adjust_threshold" "15";
231         // .. but ChanServ will only increment or decrement the limit this often.
232         "adjust_delay" "30";
233         // How often to look for channels that have expired?
234         "chan_expire_freq" "3d";
235         // How long is a channel unvisited (by masters or above) before it can be expired?
236         "chan_expire_delay" "30d";
237         // How often to look for dnrs that have expired?
238         "dnr_expire_freq" "1h";
239         // what !set options should we show when user calls "!set" with no arguments?
240         "set_shows" ("DefaultTopic", "TopicMask", "Greeting", "UserGreeting", "Modes", "PubCmd", "InviteMe", "EnfModes", "EnfTopic", "TopicSnarf", "UserInfo", "GiveVoice", "GiveOps", "EnfOps", "Setters", "CtcpUsers", "CtcpReaction", "Protect", "Toys", "DynLimit", "NoDelete");
241
242         // A list of !8ball responses
243         "8ball" ("Not a chance.",
244                 "In your dreams.",
245                 "Absolutely!",
246                 "Could be, could be.");
247         // channel(s) that support helpers must be in to be helping
248         // if this is a list, any one by itself will do
249         "support_channel" ("#support", "#registration");
250         // maximum number of channels owned by one account before FORCE is required
251         "max_owned" "5";
252         // how long between automatic topic refreshes with TopicRefresh 0
253         "refresh_period" "3h";
254         // how long between two invites of an user
255         "invite_timeout" "10s";
256         // what should !access say for various staff?
257         "irc_operator_epithet" "a megalomaniacal power hungry tyrant";
258         "network_helper_epithet" "a wannabe tyrant";
259         "support_helper_epithet" "a wannabe tyrant";
260         // what should a newly registered channel get as its modes?
261         "default_modes" "+nt";
262         // minimum opserv access to set, clear or override nodelete setting?
263         "nodelete_level" "1";
264         // how long before a new channel owner can give ownership away?
265         "giveownership_timeout" "1w";
266         // message sent to new channels
267         "new_channel_unauthed_join" ""; //only sent if the user is unauthed
268         "new_channel_authed_join" ""; //only sent if the user is authed
269         "new_channel_message" ""; //always after the message above
270         
271     };
272
273     "global" {
274         "nick" "Global";
275         // What user modes do you want this service to have? Please keep in
276         // mind which ircd software you are using here, and that all of the
277         // services need to be at least +o.
278         // "modes" "+iok";
279         // should users get community announcements by default or not?
280         "announcements_default" "on";
281     };
282     
283     "spamserv" {
284         // You may disable a service by removing its "nick" config item.
285         // That means: SERVICES WILL ONLY WORK IF YOU DEFINE THEIR NICK.
286         // (This is changed relative srvx-1.0.x, which would use default
287         // unless you specified ".disabled".)
288         "nick" "SpamServ";
289         "debug_channel" "#spamserv";
290         // url of the network rules. if you don't have network rules, remove this key.
291         "network_rules" "http://www.gamesurge.net/aup";
292         // trigger for spamserv; remove this key to disable the trigger
293         "trigger" "-";
294         // ban duration of a short timedban.
295         "short_ban_duration" "15m";
296         // ban duration of a long timedban.
297         "long_ban_duration" "1h";
298         // duration of a gline. SpamServ will issue it after several violations and a kill.
299         "gline_duration" "1h";
300         // users may add "exception_max" exceptions to the list. IRCOps can override "exception_max".
301         "exception_max" "10";
302         // minimum & maximum length of an exception.
303         "exception_min_len" "4";
304         "exception_max_len" "12";
305         // if someone advertises a channel, which doesn't exist (channel is empty, no users),
306         // SpamServ doesn't punish the user.
307         // enable this setting, if SpamServ has to ignore advertisements of channels, which do not exist.
308         // disable this setting, if SpamServ has to punish the users whenever they advertise.
309         "adv_chan_must_exist" "0";
310         // remove all mirc codes from messages before checking for advertisements.
311         // if this setting is disabled and someone spams a url which
312         // contains a bold char, SpamServ doesn't punish him.
313         "strip_mirc_codes" "1";
314         // enable this, if SpamServ has to "follow" ChanServ, when a channel moves or merges.
315         // disable it, if it shouldn't be possible to move or merge SpamServ with /msg chanserv move|merge.
316         "allow_move_merge" "1";
317     };
318 };
319
320 // The modules section gives configuration information to optional modules.
321 "modules" {
322     "helpserv" {
323         // The description/fullname field
324         "description" "Help Queue Manager";
325         // HelpServ bots log all of their requests to this file, with
326         // details on when they were opened, closed, their contents,
327         // helper, etc. The file is written in saxdb format for easy
328         // parsing by external programs. Please note that you cannot
329         // use ?set to change this value while srvx is running.
330         "reqlogfile" "helpservreq.log";
331         // How long should a helpserv be inactive (no requests assigned)
332         // before it can be unregistered by the expire command?
333         "expiration" "60d";
334     };
335     "sockcheck" {
336         "max_sockets" "64";  // allow 64 concurrent clients to be checked
337         "max_read" "1024"; // don't read more than 1024 bytes from any client
338         "gline_duration" "1h"; // issue G-lines lasting one hour
339         "max_cache_age" "60"; // only cache results for 60 seconds
340         // "bind_address" "192.168.0.10"; // do proxy tests from this address
341     };
342     "snoop" {
343         // Where to send snoop messages?
344         "channel" "#wherever";
345         // Which bot?
346         "bot" "OpServ";
347         // Show new users and joins from net joins?  (off by default)
348         "show_bursts" "0";
349     };
350     "memoserv" {
351         "bot" "NickServ";
352         "message_expiry" "30d"; // age when messages are deleted; set
353                                 // to 0 to disable message expiration
354     };
355     "qserver" {
356         "bind_address" "127.0.0.1";
357         "port" "7702";
358         "password" "hello";
359     };
360     "blacklist" {
361         // File containing blacklisted client addresses.
362         // "file" "blacklist.txt";
363         // Each line in the file should start with an IP or hostname.
364         // If there is whitespace and a message after that, the
365         // message will override this one:
366         "file_reason" "client is blacklisted";
367         // How long should a blacklist G-line last?
368         "gline_duration" "1h";
369         // Bot used to send debug notices
370         "debug_bot" "OpServ";
371         // To which channel should debug output be sent?
372         "debug_channel" "#opserv";
373         "debug_channel_modes" "+tinms";
374         // If you want to use DNS blacklists, add them here:
375         "dnsbl" {
376             // This DNSBL zone does not exist - you'll have to pick your own.
377             "dnsbl.example.org" {
378                 // Send a notice instead of glining blacklisted ips
379                 "debug" "1";
380                 "description" "Example DNSBL entry";
381                 "reason" "busted by a dns blacklist";
382                 "duration" "1h";
383                 // You can stick the client's IP in the G-line message.
384                 "reason_2" "Example DNSBL reported %ip%'s address as 127.0.0.2";
385                 // .. or the contents of a DNS TXT.
386                 "reason_3" "%txt%";
387             };
388         };
389     };
390     "sar" {
391         // You generally will not want to override these defaults.
392         // "resolv_conf" "/etc/resolv.conf";
393         // "services" "/etc/services";
394         // "bind_address" "0.0.0.0";
395         // "bind_port" "0";
396         // The defaults for these are derived from the system config files (above).
397         // "domain" "example.org";
398         // "timeout" "3"; // base timeout for a DNS reply
399         // "retries" "3"; // number of times to retry on different servers or longer timeouts
400         // "ndots" "1";   // number of dots needed in a hostname to bypass search path
401         // "edns0" "0";   // if set, enable EDNS0 extended message sizes
402         // "search" ("example.org", "example.net");
403         // "nameservers" ("127.0.0.1");
404     };
405     "watchdog" {
406         "nick" "Watchdog";
407         "modes" "+iok";
408         "ban_duration" "2h"; //only if the channel is registered with chanserv
409         "gline_duration" "1h";
410         "punishment_reason" "Your message contained a forbidden word.";
411     };
412 };
413
414 "policers" {
415     "commands-luser" {
416         "size" "5";
417         "drain-rate" "0.5";
418     };
419 };
420
421 "rlimits" {
422     "data" "50M";
423     "stack" "6M";
424     "vmem" "100M";
425 };
426
427 "server" {
428     "hostname" "localhost.domain";
429     "description" "Network Services";
430     "network" "GenericNET";
431     "hidden_host" "users.Generic.NET"; // set this if you enabled ircd/Undernet's +x mode
432     /* hidden_host should match the F:HIDDEN_HOST: line in your ircu's ircd.conf;
433      * srvx does not set the host suffix for users, but must know it when making
434      * things like bans, where it should not show the user's real hostname. */
435     "numeric" "10"; // hint: If you get collisions on link, CHANGE THIS.
436     "max_users" "256"; // You can save a little memory by setting this to a lower value.
437     "force_n2k" "1"; // Use extended (5-digit) numnick for self, even if 3 are possible.
438     "ping_freq" "60";
439     "ping_timeout" "90";
440     "max_cycles" "30"; // max uplink cycles before giving up
441     // Admin information is traditionally: location, location, email
442     "admin" ("IRC Network", "Gotham City, GO", "Mr Commissioner <james.gordon@police.gov>");
443     /* the following two settings are for ircu's HEAD_IN_SAND features, and are equivelent to
444      * the F: lines in ircu's ircd.conf. both can be disabled by commenting them out. */
445     "his_servername" "*.Generic.NET"; // hidden server name, shown in remote /whois requests
446     "his_servercomment" "The Generic, Boring IRC Network";
447 };
448
449 // controlling how services (mostly NickServ) send mail
450 "mail" {
451     // These options are the defaults.
452     "enable" "0";
453     "mailer" "/usr/sbin/sendmail";
454     "from_address" "admin@poorly.configured.server";
455     // These are not :>
456     "extra_headers" ("X-Ereet-Services: srvx r reet");
457     "body_prefix_first" ("Welcome to our network.  This prefix is used whenever srvx thinks this may be the first time we send email to your address.");
458     "body_prefix" ("This goes before the mail text.", "Each string here is treated as a separate \"paragraph\" for line wrapping.");
459     "body_suffix_first" ("We care a lot about spam.  If you did not request this email, bitch and moan loudly at our opers, and tell our ISP to gank our connection.");
460     "body_suffix" ("PLEASE DO NOT BE ALARMED.  CALMLY BOARD THE AIRCRAFT, STRAP YOUR ARMS ACROSS YOUR BODY, AND JUMP THE HELL OUT OF THE PLANE.", "Yaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaatta!");
461     // If you are using the smtp mail back-end, you may need to set these:
462     "smtp_server" "localhost";
463     "smtp_service" "smtp";
464     // "smtp_myname" "localhost.domain";
465 };
466
467 // New section in srvx-1.2 to control database locations, etc.
468 // If you leave this section out, each database will be in its own file,
469 // and they will be written out every half hour.
470 "dbs" {
471     // This just illustrates how you can jam every database into one huge ("mondo") file.
472     "ChanServ" { "mondo_section" "ChanServ"; };
473     "gline" { "mondo_section" "gline"; };
474     "Global" { "mondo_section" "Global"; };
475     "HelpServ" { "mondo_section" "HelpServ"; };
476     "modcmd" { "mondo_section" "modcmd"; };
477     "NickServ" { "mondo_section" "NickServ"; };
478     "OpServ" { "mondo_section" "OpServ"; };
479     "sendmail" { "mondo_section" "sendmail"; };
480     "SpamServ" { "mondo_section" "SpamServ"; };
481     "Watchdog" { "mondo_section" "Watchdog"; };
482
483     // These are the options if you want a database to be in its own file.
484     "mondo" {
485         // Where to put it?
486         "filename" "srvx.db";
487         // How often should it be saved?
488         // (You can disable automatic saves by setting this to 0.)
489         "frequency" "30m";
490     };
491 };
492
493 // New section in srvx-1.2 to control log destinations.
494 // If you leave this section out, each service (technically, each log
495 // facility) will be in its own file, just like before.
496 "logs" {
497     // Two kinds of items exist in this section.
498
499     // One is a facility configuration subsection.  These have the
500     // name of a log facility (one of "ChanServ", "Global",
501     // "HelpServ", "NickServ", "OpServ", "ProxyCheck", or "srvx") and
502     // the value is a subsection. The "srvx" log facility is a
503     // catch-all/fall-back facility.
504     "srvx" {
505         // The "max_age" option says how long to keep log audit entries.
506         "max_age" "10m";
507         // The "max_count" option says how many log audit entries to keep.
508         "max_count" "1024";
509         // Audit (command tracking) entries are discarded if they exceed
510         // either limit: for example, if entry 500 is 10 minutes old, it
511         // will be discarded next time any audit command is logged.
512     };
513
514     // The other kind of item is a target list.  The name of each is a
515     // description of facility-and-severity combinations, and the value
516     // is a string (or list of strings) that describe where matching
517     // events should be logged.  As a special case, the facility * will
518     // specify how to log events regardless of their true facility, and
519     // the severity * will match all severities for a facility.
520     // Log targets use a psuedo-URI syntax:  one of "file:filename",
521     // "std:[out|err|n]" where n is a valid file descriptor, or
522     // "irc:#channel" (nicknames or server masks can be used instead
523     // of channel names, but should be used with care).
524     // The severity is one of "replay", "debug", "command", "info",
525     // "override", "staff", "warning", "error", or "fatal".
526     // WARNING: If any severity except "replay" for a facility is left
527     // unspecified, it will use the default target (for example,
528     // "file:chanserv.log").  For "replay" severity, you must ALWAYS
529     // list a target to log it -- this is because it is very rarely
530     // useful.
531     "*.*" ("std:out", "file:everything.log"); // does NOT suppress any defaults
532     "*.override,staff" "irc:#big-brother"; // report all uses of staff commands
533     "ChanServ.*" "file:chanserv.log"; // duplicates the default behavior
534     "ProxyCheck.*" (); // stop it from logging anything
535 };