]> jfr.im git - irc/evilnet/x3.git/blob - x3.conf.example
help tweak and tab cleanup
[irc/evilnet/x3.git] / x3.conf.example
1 /* vim:syntax=c:ts=4
2 * *****************************************************************
3 * X3 Services Example Configuration file.
4 *
5 * Copy it to your x3 runtime dir, and edit to taste.
6 *
7 * This file allows two kinds of comments. Whitespaces between
8 * tokens are ignored. All strings (even if they're just numbers)
9 * MUST be enclosed in double quotes. There must be a semicolon
10 * after every * key/value pair.
11 */
12
13 /* UPLINKS (servers we connect to) *********************************
14 * Each subsection describes one server. X3 will try to connect to
15 * each in turn maxtries times, and then will quit.
16 */
17 "uplinks" {
18 // This first entry connects to an ircd on teh same server an X3..
19 "Hub" { // This can be any string, just used here for your conveniance
20 "address" "127.0.0.1"; // The IP address of the server
21 "port" "8888"; // What TCP port to connect to
22 "password" "laoo,rpe"; // Both of these passwords must match
23 "their_password" "laoo,rpe"; // the one in the ircd C line for X3.
24 "enabled" "1"; // Set to 0 to disable connecting to this server
25 "max_tries" "10"; // How many times to attemt reconnect before quitting
26 "bind_address" "127.0.0.1"; // LOCAL IP address we want to connect FROM
27 };
28 // This next one connects to an ircd on another server
29 "Hub-west" {
30 // IP address and port the server listens on
31 "address" "192.168.234.123"; // IP of remote server
32 "port" "8888";
33 "password" "ekrpat"; // C line passwords
34 "their_password" "ekrpat"; // Set same as above
35 "enabled" "0"; // Set this to 1 to use this server..
36 "max_tries" "1";
37 "bind_address" "192.168.1.10";
38 };
39 };
40
41 /* SERVER (Details about our existance) **********************************
42 */
43 "server" {
44 "hostname" "X3.AfterNET.Services"; // The servers name. (Use this in the ircd's C line)
45 "description" "AfterNET Network Services"; // Shows up in /links.
46 "network" "AfterNET";
47 "hidden_host" "Users.AfterNET.Org"; // set this if you enabled Nefarious' +x mode
48 /* hidden_host should match the F:HIDDEN_HOST: line in your ircu's ircd.conf;
49 * x3 does not set the host suffix for users, but must know it when making
50 * things like bans, where it should not show the user's real hostname. */
51 "numeric" "51"; // hint: If you get collisions on link, CHANGE THIS.
52 "max_users" "256"; // You can save a little memory by setting this to a lower value.
53 "force_n2k" "1"; // Use extended (5-digit) numnick for self, even if 3 are possible.
54 "ping_freq" "60";
55 "ping_timeout" "90";
56 "max_cycles" "30"; // max uplink cycles before giving up
57 // Admin information is traditionally: location, location, email
58 // This shows up on a /admin x3.afternet.services command.
59 "admin" (
60 "AfterNET IRC Network",
61 "www.afternet.org",
62 "Support Staff <support@afternet.org>"
63 );
64 /* the following two settings are for ircu's HEAD_IN_SAND features, and are equivelent to
65 * the F: lines in ircu's ircd.conf. both can be disabled by commenting them out. */
66 //"his_servername" "*.AfterNET.org"; // hidden server name, shown in remote /whois requests
67 //"his_servercomment" "AfterNET IRC Network";
68 };
69
70 /* SERVICES (Bot nicknames) *******************************************
71 * Each section describes one service nickname and the details of that
72 * bot's features
73 * You may disable a service by commenting out its "nick" config item.
74 */
75 "services" {
76 /* Nickserv is the bot you register with and auth to.
77 * Afternet uses the name "Authserv" without the nickname reservation
78 * features enabled. Some nets call it Nickserv and configure it to
79 * reserve nicks.
80 */
81 "nickserv" {
82 "nick" "AuthServ"; // The bots nick on IRC
83
84 // If you want to have *@* as the default hostmask, set
85 // default_hostmask. I highly reccomend this, and its required
86 // for login-on-connect to work.
87 "default_hostmask" "1";
88
89 // do we warn users when someone new auths to their account?
90 "warn_clone_auth" "1"; // -X3- warning: foobar has authed to your account
91
92 // default max number of logins allowed on new accounts. Users can set it
93 // to something different using authserv commands.
94 "default_maxlogins" "3";
95
96 // hard_maxlogins is the ammount the user cant override.
97 "hard_maxlogins" "10";
98
99 // This names a file that contains easily guessed passwords.
100 // It always contains "password", "<password>" and the user's
101 // account name.
102 // uncomment if you have a dict file.
103 //"dict_file" "/usr/share/dict/words";
104
105 // Minimum number of various types of characters permitted in
106 // a password. Authserv will enforce these.
107 "password_min_length" "4";
108 "password_min_digits" "0";
109 "password_min_upper" "0";
110 "password_min_lower" "0";
111
112 // What should valid account and nicks look like?
113 // If valid_nick_regex is omitted, valid_account_regex is used
114 // for both nicks and accounts.
115 // Be very carefull changing these. This default is
116 // basically limited to letters, numbers, dash and underscore.
117 "valid_account_regex" "^[-_a-z0-9A-Z]{2,15}$";
118 "valid_nick_regex" "^[-_a-z][-_a-z0-9]*$";
119
120 // "Nickserv" networks, set this to 0. "Authserv" networks,
121 // set it to 1.
122 "disable_nicks" "1";
123 // One account may only own this many nicks.
124 "nicks_per_account" "4";
125
126 // Send a warning when someone uses a registered nick?
127 "warn_nick_owned" "0";
128
129 // What to do when someone uses the NickServ "reclaim" command?
130 // This can be one of "none", "warn", "svsnick", or "kill", but
131 // stock ircu does not support svsnick -- you need Bahamut or
132 // nefarious.
133 "reclaim_action" "none";
134
135 // What (else) to do when someone uses a registered nick?
136 // This can be anything "reclaim_action" can be, but it makes
137 // more sense to use the "warn_nick_owned" instead of "warn".
138 "auto_reclaim_action" "none";
139
140 // How long to wait before doing the auto_reclaim_action?
141 // This is ignored if "auto_reclaim_action" is "none".
142 "auto_reclaim_delay" "0";
143
144 // access control for who can change account flags
145 // See /msg authserv help account flags
146 "flag_levels" {
147 "g" "800"; // God mode
148 "lc_h" "800"; // support helper (lower case h)
149 "uc_H" "800"; // net helper (upper case H)
150 "S" "999"; // O3 access suspended
151 "b" "1"; // Bot (not sure what it does tho)
152 };
153
154 // and for who can change epithets for staff
155 // epithets show up in /whois as another line about the person.
156 "set_epithet_level" "800";
157
158 // what opserv access level do you need to set somebody else's level?
159 "modoper_level" "850";
160
161 // how often should accounts be expired?
162 "account_expire_freq" "1d";
163
164 // how long until an account with access to any channel(s) expires?
165 "account_expire_delay" "900d";
166
167 // how long until an account with no access to any channels expires?
168 "nochan_account_expire_delay" "365d";
169
170 // If somebody keeps guessing passwords incorrectly, do we gag them?
171 "autogag_enabled" "1";
172 "autogag_duration" "30m";
173 "auth_policer" {
174 "size" "5";
175 "drain-rate" "0.05";
176 };
177
178
179 // How to integrate with email cookies?
180 // In order to use mail, mail must be enabled and configured
181 // down below in the mail section of this config file.
182 "email_enabled" "1"; // Allow account verification and password reset by email.
183 "email_required" "1"; // if above is 1, require verification to authenticate.
184 "cookie_timeout" "2d"; // how long before we expire cookies?
185 "accounts_per_email" "1"; // How many people can use the same email account.
186
187 "email_search_level" "600"; // minimum OpServ level to search based on email address (search print email *foo*)
188 "email_visible_level" "800"; // minimum OpServ level to see somebody's email address
189 "titlehost_suffix" "AfterNET.Org"; // 'USET title' sets a fake hostname of name.title.titlehost on a user.
190 "set_title_level" "900"; // Access to use 'uset title'.
191 "set_fakehost_level" "1000"; //Access to set a freeform fakehost. (uset fakehost)
192
193 // This is a hacked in feature which exports every account change to a file sync.log. Afternet uses this and
194 // a bunch of custom PHP scripts to make our websites SQL user db the same as authserv, every 5 minutes.
195 // You have to be a pretty handy person with the shell commands and programming to make use of this..
196 "sync_log" "0"; // Log account changes to a file for syncing w/ a website?
197 };
198
199 /*
200 * OpServ is the bot opers use to do glines, look at info etc.
201 * Afternet uses the nickname "O3" for this as its easier to type.
202 */
203 "opserv" {
204 "nick" "O3";
205 // should use of this service be limited to global opers?
206 "privileged" "1";
207
208 // fullname for service
209 "description" "Oper Service Bot"; // (for /whois)
210
211 // hostname for service; only used if "description" is also set
212 "hostname" "X3.AfterNET.Services"; // (for /whois)
213
214 // What channel should opserv send debug output to?
215 // I don't have any idea what debug info goes here. You can configure
216 // debugging logs in the log section to go to any channel.
217 // Probably safest to set to your oper channel.
218 "debug_channel" "#TheOps"; // Bot will join this channel, also.
219 "debug_channel_modes" "+tnOS"; // Modes get set every time X3 starts up
220
221 // where to send general alerts (e.g. flood alerts)?
222 "alert_channel" "#TheOps"; // Bot will join this channel, also.
223 "alert_channel_modes" "+"; // Modes get set every time X3 starts up
224
225 // who to tell about staff auths?
226 "staff_auth_channel" "#OperServ"; // Bot will join this channel, also.
227 "staff_auth_channel_modes" "+tnOs"; // modes get set every time X3 starts up
228
229 // how many clones to allow from an untrusted host?
230 // Use this carefully, users with half the # of clones will trigger this
231 // when a server pings out and they reconnect before the old connection is noticed
232 // to be dead by the server.. so set it at about twice the # you want to allow to
233 // avoid false positives.
234 "untrusted_max" "6"; // 3 connections and 3 ghosts, 7th connection causes a gline.
235
236 // how long of a g-line should be issued if the max hosts is exceeded?
237 "clone_gline_duration" "2h"; // durations are smhdmy
238
239 // how long to g-line for ?block (or, by default, for trace gline)?
240 "block_gline_duration" "12h";
241
242 // When a user joins an illegal channel, O3 joins it and locks it down.
243 // how long to keep an illegal channel locked down (seconds)?
244 "purge_lock_delay" "60";
245
246 // The join-flood policer code goes off all the time when a server
247 // goes down (and everyone reconnects) so i don't reccomend using it.
248 // Automatically moderate join flooded channels?
249 "join_flood_moderate" "0";
250 // channel join flood policer params?
251 "join_policer" {
252 "size" "20";
253 "drain-rate" "1";
254 };
255 // Don't moderate and warn channels unless there are more than
256 // join_flood_moderate_threshold users in the channel. the
257 // value 0 will disable the threshold.
258 "join_flood_moderate_threshold" "50";
259 // new user flood policer params
260 "new_user_policer" {
261 "size" "200";
262 "drain-rate" "3";
263 };
264 };
265
266 "chanserv" {
267 "nick" "X3";
268 // Does your ircd have off-channel services support?
269 // Bahamut has it, Nefarious has it, but its inharently flawed and will cause desynch, so don't use it.
270 "off_channel" "no";
271
272 // Infolines are sent when channel users join the channel. Users set them with USET INFO in X3.
273 // how long should a person be unseen before resending infoline?
274 "info_delay" "120";
275
276 // Greetings can be configured by the channel manager(s) and sent to users who join the channel.
277 // Many people (rightly) find this annoying, so keep them short.
278 // maximum greeting length
279 "max_greetlen" "120";
280
281 // maximum users in a channel userlist
282 "max_chan_users" "512";
283 // maximum bans on a channel banlist
284 "max_chan_bans" "512";
285 // maximum length of a user's infoline
286 "max_userinfo_length" "400"; // for god sake lower this. 80 seems good.
287
288 // If SET DynLimit is on and there are N users in the channel, ChanServ will
289 // try to keep the limit at N+<adjust_threshold>. This makes the channel
290 // somewhat protected from clone attacks.
291 "adjust_threshold" "5";
292 // .. but ChanServ will only increment or decrement the limit this often.
293 "adjust_delay" "30"; // (seconds)
294
295 // How often to look for expired bans?
296 "ban_timeout_freq" "2m";
297
298 // How often to look for channels that have expired?
299 "chan_expire_freq" "1d";
300
301 // How long is a channel unvisited (by masters or above) before it can be expired?
302 "chan_expire_delay" "30d";
303
304 // what !set options should we show when user calls "!set" with no arguments?
305 "set_shows" ("DefaultTopic", "TopicMask", "Greeting", "UserGreeting", "Modes", "PubCmd", "InviteMe", "UserInfo", "EnfOps", "EnfModes", "EnfTopic", "TopicSnarf", "Setters", "CtcpReaction", "Voice", "Protect", "Toys", "DynLimit", "NoDelete");
306
307 // A list of !8ball responses
308 "8ball" (
309 "Are you out of your MIND?",
310 "It won't happen, not a chance, definitely no.",
311 "Outlook seems bleak.",
312 "My sources say no.",
313 "You bet!",
314 "It is decidedly so.",
315 "It's hard to be sure.",
316 "Most definitely.",
317 "In your dreams...",
318 "If the prophets wish it...",
319 "Forecast hazy, try again later.",
320 "I don't know!",
321 "Absolutely!",
322 "Never.",
323 "Yes.",
324 "No.",
325 "Maybe.");
326
327 // channel(s) that support helpers must be in to be helping
328 // if this is a list, any one by itself will do
329 "support_channel" ("#Operations", "#Help");
330
331 // maximum number of channels a user may have. ( FORCE can override )
332 "max_owned" "2";
333
334 // how long between automatic topic refreshes with TopicRefresh 0
335 "refresh_period" "99d"; // Nefarious sync's topics so we'll practically disable this..
336
337 // what should !access say for various staff?
338 "irc_operator_epithet" "AfterNET IRC Operator";
339 "network_helper_epithet" "AfterNET Network Helper";
340 "support_helper_epithet" "AfterNET Support Helper";
341
342 // what should a newly registered channel get as its modes?
343 "default_modes" "+nt";
344
345 // minimum opserv access to set, clear or override channel nodelete setting?
346 "nodelete_level" "1";
347 };
348
349 /* Global is a service bot that can send out network-wide messages for you. I
350 * like to set ours' nick to 'AfterNET', but some people use 'Global'
351 */
352 "global" {
353 "nick" "Global";
354 // should users get community announcements by default or not?
355 // community announcements are a type of global that users may
356 // opt into (or out of, depending on this setting)
357 "announcements_default" "on";
358 };
359 };
360
361 /* MODULES (optional components) *************************************************
362 * These must be explicitly compiled in (see ./configure --help)
363 * When enabled, they are configured here..
364 */
365 "modules" {
366 /* Helpserv is a help-queue tracker module for your #support channels, if
367 * they are busy. It issues users tickets, and tracks the next available helper.
368 */
369 "helpserv" {
370 // The description/fullname field
371 "description" "Help Queue Manager"; // (for whois)
372
373 // HelpServ bots log all of their requests to this file, with
374 // details on when they were opened, closed, their contents,
375 // helper, etc. The file is written in saxdb format for easy
376 // parsing by external programs. Please note that you cannot
377 // use ?set to change this value while x3 is running.
378 "reqlogfile" "helpservreq.log";
379
380 // How long should a helpserv be inactive (no requests assigned)
381 // before it can be unregistered by the expire command?
382 "expiration" "60d";
383 };
384 /* SockCheck reads sockcheck.conf and can do configurable scans
385 * to probe for open relays in an attempt to stop drones from using
386 * the network. DO NOT enable this unless you have permission from
387 * your ISP.. the probes will show up as attacks on everyones firewalls
388 * and you will get a lot of complaints.
389 */
390 "sockcheck" {
391 // disabling this hopefully
392 "max_sockets" "0"; // 64 is a good # of concurrent clients to be checked
393 "max_read" "1024"; // don't read more than 1024 bytes from any client
394 "gline_duration" "1d"; // issue G-lines lasting one hour
395 "max_cache_age" "60"; // only cache results for 60 seconds
396 "address" "192.168.1.10"; // do proxy tests from this address
397 };
398 /* Snoop sends connect, quit, join, and part messages for every user
399 * on the network, and helps in finding drones. Put it somewhere secure
400 * so your users privacy is honored.
401 */
402 "snoop" {
403 // Where to send snoop messages?
404 "channel" "#MrSnoopy";
405 // Which bot?
406 "bot" "O3";
407 // Show new users and joins from net joins? (off by default)
408 "show_bursts" "0";
409 };
410 /* Memoserv lets users send messages to other users accounts.
411 */
412 "memoserv" {
413 "bot" "MemoServ";
414 "message_expiry" "30d"; // age when messages are deleted; set
415 // to 0 to disable message expiration
416 };
417 };
418
419 "policers" {
420 "commands-luser" {
421 "size" "5";
422 "drain-rate" "0.5";
423 };
424 };
425
426 "rlimits" {
427 "data" "50M";
428 "stack" "6M";
429 "vmem" "100M";
430 };
431
432 /* MAIL (if and how X3 sends mail ) *********************************
433 * Mainly Authserv/Nickserv send mail, See the Nickserv
434 * section for additional mail settings also.
435 */
436 "mail" {
437 "enable" "1";
438 "mailer" "/usr/sbin/sendmail";
439 // OR Afternet uses a custom script to keep the services IP hidden:
440 // "mailer" "/home/x3user/x3/sendmail.sh";
441 "from_address" "supportrobot@afternet.org";
442 "extra_headers" ("AfterNET-Services: x3");
443 "body_prefix_first" ("Welcome to AfterNET, looks like this is your first email from us.");
444 "body_prefix" ("AfterNET Support - User and Channel registration system");
445 "body_suffix_first" ("", "AfterNET IRC Network", "http://www.afternet.org");
446 "body_suffix" ("", "AfterNET IRC Network", "http://www.afternet.org", "support@afternet.org","irc://irc.afternet.org/afternet");
447 };
448
449 /* DBS (Databases) *************************************************
450 * let you configure what databases go in what files.
451 *
452 * This default sets up everything in one big x3.db file.
453 *
454 * If you leave this section out, each database will be in its own file,
455 * and they will be written out every half hour.
456 */
457 "dbs" {
458 // This just illustrates how you can jam every database into one huge ("mondo") file.
459 "ChanServ" { "mondo_section" "ChanServ"; };
460 "gline" { "mondo_section" "gline"; };
461 "Global" { "mondo_section" "Global"; };
462 "HelpServ" { "mondo_section" "HelpServ"; };
463 "modcmd" { "mondo_section" "modcmd"; };
464 "NickServ" { "mondo_section" "NickServ"; };
465 "OpServ" { "mondo_section" "OpServ"; };
466 "sendmail" { "mondo_section" "sendmail"; };
467
468 // These are the options if you want a database to be in its own file.
469 "mondo" {
470 // Where to put it?
471 "filename" "x3.db";
472 // How often should it be saved?
473 // (You can disable automatic saves by setting this to 0.)
474 "frequency" "30m";
475 };
476 };
477
478 /* LOGS (If and how X3 logs data ) ***********************************
479 * LOGS sets up where X3 logs various kinds of info to.
480 */
481 "logs" {
482 // Two kinds of items exist in this section.
483
484 // One is a facility configuration subsection. These have the
485 // name of a log facility (one of "ChanServ", "Global",
486 // "HelpServ", "NickServ", "OpServ", "ProxyCheck", or "x3") and
487 // the value is a subsection. The "x3" log facility is a
488 // catch-all/fall-back facility.
489 "x3" {
490 // The "max_age" option says how long to keep log audit entries.
491 "max_age" "10h";
492 // The "max_count" option says how many log audit entries to keep.
493 "max_count" "1024";
494 // Audit (command tracking) entries are discarded if they exceed
495 // either limit: for example, if entry 500 is 10 minutes old, it
496 // will be discarded next time any audit command is logged.
497 };
498
499 // The other kind of item is a target list. The name of each is a
500 // description of facility-and-severity combinations, and the value
501 // is a string (or list of strings) that describe where matching
502 // events should be logged. As a special case, the facility * will
503 // specify how to log events regardless of their true facility, and
504 // the severity * will match all severities for a facility.
505 // Log targets use a psuedo-URI syntax: one of "file:filename",
506 // "std:[out|err|n]" where n is a valid file descriptor, or
507 // "irc:#channel" (nicknames or server masks can be used instead
508 // of channel names, but should be used with care).
509 // The severity is one of "replay", "debug", "command", "info",
510 // "override", "staff", "warning", "error", or "fatal".
511 // WARNING: If any severity except "replay" for a facility is left
512 // unspecified, it will use the default target (for example,
513 // "file:chanserv.log"). For "replay" severity, you must ALWAYS
514 // list a target to log it -- this is because it is very rarely
515 // useful.
516 "*.*" ("std:out", "file:everything.log"); // does NOT suppress any defaults
517 "*.override,error,fatal" "irc:#TheOps"; // report all uses of staff commands
518 "*.staff" "irc:#MrSnoopy"; // report all uses of staff commands
519 "ChanServ.*" "file:chanserv.log"; // duplicates the default behavior
520 "ProxyCheck.*" (); // stop it from logging anything
521 };