summaryrefslogtreecommitdiff
path: root/data/example.conf
blob: b9ee1fd1be6eab66bf8ddcd3b04dad29eb2aaf79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
/*
 * Example configuration file for Services. After making the appropriate
 * changes to this file, place it in the Services data directory (as
 * specified in the "configure" script, default /home/username/services/data)
 * under the name "services.conf".
 *
 * The format of this file is fairly simple: three types of comments are supported:
 *  - All text after a '#' on a line is ignored, as in shell scripting
 *  - All text after '//' on a line is ignored, as in C++
 *  - A block of text like this one is ignored, as in C
 *
 * Outside of comments, there are three structures: blocks, keys, and values.
 *
 * A block is a named container, which contains a number of key to value pairs
 * - you may think of this as an array.
 *
 * A block is created like so:
 * foobar
 * {
 *    moo = "cow"
 *    foo = bar
 * }
 *
 * Keys are case insensitive. Values depend on what key - generally, information is
 * given in the key comment. The quoting of values (and most other syntax) is quite
 * flexible, however, please do not forget to quote your strings:
 *
 *   "This is a parameter string with spaces in it"
 *
 * If you need to include a double quote inside a quoted string, precede it
 * by a backslash:
 *
 *   "This string has \"double quotes\" in it"
 *
 * Time parameters can be specified either as an integer representing a
 * number of seconds (e.g. "3600" = 1 hour), or as an integer with a unit
 * specifier: "s" = seconds, "m" = minutes, "h" = hours, "d" = days.
 * Combinations (such as "1h30m") are not permitted. Examples (all of which
 * represent the same length of time, one day):
 *
 *   "86400", "86400s", "1440m", "24h", "1d"
 *
 * CAUTION:
 * Please note that your services might _CRASH_ if you add more format-
 * strings (%s, %d, etc.) to custom messages than Anope needs. Use the
 * default messages to see how many format-strings are needed.
 *
 * In the documentation for each directive, one of the following will be
 * included to indicate whether an option is required:
 *
 * [REQUIRED]
 *     Indicates a directive which must be given. Without it, Services will
 *     not start.
 *
 * [RECOMMENDED]
 *     Indicates a directive which may be omitted, but omitting it may cause
 *     undesirable side effects.
 *
 * [OPTIONAL]
 *     Indicates a directive which is optional. If not given, the feature
 *     will typically be disabled. If this is not the case, more
 *     information will be given in the documentation.
 *
 * [DISCOURAGED]
 *     Indicates a directive which may cause undesirable side effects if
 *     specified.
 *
 * [DEPRECATED]
 *     Indicates a directive which will disappear in a future version of
 *     Services, usually because its functionality has been either
 *     superseded by that of other directives or incorporated into the main
 *     program.
 */


/*
 * [REQUIRED] IRCd Config
 *
 * This section is used to set up Anope to connect to your IRC network.
 * This section can be included multiple times, and Anope will attempt to
 * connect to each server until it finally connects.
 */
uplink
{
	/*
	 * The IP or hostname of the IRC server you wish to connect Services to.
	 * Usually, you will want to connect Services over 127.0.0.1 (aka localhost).
	 *
	 * NOTE: On some shell providers, this will not be an option.
	 */
	host = "localhost"

	/*
	 * Enable if Services should connect using IPv6
	 */
	ipv6 = no

	/*
	 * The port to connect to.
	 * The IRCd *MUST* be configured to listen on this port, and to accept
	 * server connections.
	 *
	 * Refer to your IRCd documentation for how this is to be done.
	 */
	port = 6667

	/*
	 * The password to send to the IRC server for authentication.
	 * This must match the link block on your IRCd.
	 *
	 * Refer to your IRCd documentation for more information on link blocks.
	 */
	password = "mypassword"
}

/*
 * [REQUIRED] Server Information
 *
 * This section contains information about the Services server.
 */
serverinfo
{
	/*
	 * The hostname that Services will be seen as, it must have no conflicts with any
	 * other server names on the rest of your IRC network. Note that it does not have
	 * to be an existing hostname, just one that isn't on your network already. This
	 * can be overridden with the -name command-line option when starting Services.
	 */
	name = "services.localhost.net"

	/*
	 * The text which should appear as the server's information in /whois and similar
	 * queries. This can be overridden by the -desc command-line option when starting
	 * Services.
	 */
	description = "Services for IRC Networks"

	/*
	 * The local address that Services will bind to before connecting to the remote
	 * server. This may be useful for multihomed hosts. If ommited, Services will let
	 * the Operating System choose the local address. This directive is optional.
	 *
	 * If you don't know what this means or don't need to use it, just leave this
	 * directives commented out.
	 */
	#localhost = "nowhere."

	/*
	 * This directive instructs Anope which IRCd Protocol to speak when connecting.
	 * You MUST modify this to match the IRCd you run.
	 *
	 * Supported:
	 *  - inspircd11
	 *  - inspircd12
	 *  - inspircd20
	 *  - ratbox
	 *  - bahamut
	 *  - unreal32
	 */
	type = "inspircd12"

	/*
	 * What Server ID to use for this connection?
	 * Note: This should *ONLY* be used for TS6/P10 IRCds. Refer to your IRCd documentation
	 * to see if this is needed.
	 */
	#id = "00A"

	/*
	 * These identify the ident@hostname which will be used by the Services pesudoclients.
	 * They can be overridden by the -user and -host command-line options when starting
	 * Services.
	 */
	ident = "services"
	hostname = "localhost.net"

	/*
	 * The filename containing the Services process ID. The path is relative to the
	 * services executable. If not given, defaults to "services.pid".
	 */
	pid = "services.pid"

	/*
	 * The filename containing the Message of the Day. The path is relative to the
	 * services executable. If not given, defaults to "services.motd".
	 */
	motd = "services.motd"
}

/*
 * [REQUIRED] Network Information
 *
 * This section contains information about the IRC network that Services will be
 * connecting to.
 */
networkinfo
{
	/*
	 * For the given channel, every user that has or gets op status of the channel
	 * will automatically receive the +h user mode. This directive is optional.
	 */
	helpchannel = "#help"

	/*
	 * If set, Services will output log messages to the given channel. This
	 * directive is optional.
	 *
	 * IMPORTANT: This can be a security risk, so make certain this channel is
	 * sufficiently protected from normal access.
	 */
	#logchannel = "#services"

	/*
	 * If set, Services will output all BotServ chatter to the defined logchannel
	 * above. It shows all uses of BotServ ACT and SAY commands. Note that there
	 * is no logging to the log file. Only works if logchannel is also defined.
	 * This directive is optional.
	 */
	#logbot = yes

	/*
	 * This is the name of the network that Services will be running on.
	 */
	networkname = "LocalNet"

	/*
	 * Set this to the maximum allowed nick length on your network.
	 * Be sure to set this correctly, as setting this wrong can result in
	 * Services being disconnected from the network. This directive is optional,
	 * but recommended.
	 */
	nicklen = 31

	/* Set this to the maximum allowed ident length on your network.
	 * Be sure to set this correctly, as setting this wrong can result in
	 * Services being disconnected from the network. This directive is optional,
	 * but recommended.
	 */
	userlen = 10

	/* Set this to the maximum allowed hostname length on your network.
	 * Be sure to set this correctly, as setting this wrong can result in
	 * Services being disconnected from the network. This directive is optional,
	 * but recommended.
	 */
	hostlen = 64
}

/*
 * [REQUIRED] Services Options
 *
 * This section contains various options which determine how Services will operate.
 */
options
{
	/*
	 * The encryption modules are used when dealing with passwords. This determines how
	 * the passwords are stored in the databases, and does not add any security as
	 * far as transmitting passwords over the network goes.
	 *
	 * When using enc_none, passwords will be stored without encryption in plain
	 * text, allowing for passwords to be recovered later. The other encryption modules
	 * use one-way encryption, so the passwords can not be recovered later if those
	 * are used.
	 *
	 * NOTE: enc_old is Anope's previous (broken) MD5 implementation, if your databases
	 * were made using that module, continue to use it and do not use enc_md5.
	 *
	 * Supported:
	 *  - enc_none (plain text, no encryption)
	 *  - enc_old (old, broken MD5 encryption)
	 *  - enc_md5 (working MD5 encryption)
	 *  - enc_sha1 (SHA1 encryption)
	 *  - enc_sha256 (SHA256 encryption with random salts)
	 *
	 * The first module in this list is the active encryption module. All new passwords are 
	 * encrypted by this module. Old passwords stored in another encryption method are 
	 * automatically re-encrypted by the active encryption module on next identify.
	 * Changing the order of the modules requires the services to restart.
	 */
	encryption = "enc_none enc_sha1 enc_sha256 enc_md5 enc_old"

	/*
	 * The maximum length of passwords
	 */
	passlen = 32

	/*
	 * The database modules are used for saving and loading databases for Anope.
	 *
	 * Supported:
	 *  - db_plain
	 *  - db_mysql_write
	 *  - db_mysql_read
	 *  - db_mysql_execute
	 */
	database = "db_plain"

	/*
	 * These keys are used to initiate the random number generator. These numbers
	 * MUST be random as you want your passcodes to be random. Don't give these
	 * keys to anyone! Keep them private!
	 *
	 * NOTE: If you don't uncomment these or keep their default values, any talented
	 * programmer would be able to easily "guess" random strings used to mask
	 * information. Be safe, and come up with three different 7-digit numbers.
	 *
	 * These directives are optional, but highly recommended.
	 */
	#userkey1 = 9866235
	#userkey2 = 8362013
	#userkey3 = 2362899

	/*
	 * Allows Services to continue file write operations (i.e. database saving)
	 * even if the original file cannot be backed up. Enabling this option may
	 * allow Services to continue operation under conditions where it might
	 * otherwise fail, such as a nearly-full disk.
	 *
	 * NOTE: Enabling this option can cause irrecoverable data loss under some
	 * conditions, so make CERTAIN you know what you're doing when you enable it!
	 *
	 * This directive is optional, and you are discouraged against enabling it.
	 */
	#nobackupokay = yes

	/*
	 * If set, Services will perform more stringent checks on passwords. If this
	 * isn't set, Services will only disallow a password if it is the same as the
	 * entity (nickname or channel name) with which it is associated. When set,
	 * however, Services will also check that the password is at least five
	 * characters long, and in the future will probably check other things
	 * as well. This directive is optional, but recommended.
	 */
	strictpasswords = yes

	/*
	 * Sets the number of invalid password tries before Services removes a user
	 * from the network. If a user enters a number of invalid passwords equal to
	 * the given amount for any Services function or combination of functions
	 * during a single IRC session (subject to badpasstimeout, below), Services
	 * will issues a /KILL for the user. If not given, Services will ignore
	 * failed password attempts (though they will be logged in any case). This
	 * directive is optional, but recommended.
	 */
	badpasslimit = 5

	/*
	 * Sets the time after which invalid passwords are forgotten about. If a user
	 * does not enter any incorrect passwords in this amount of time, the incorrect
	 * password count will reset to zero. If not given, the timeout will be
	 * disabled, and the incorrect password count will never be reset until the user
	 * disconnects. This directive is optional.
	 */
	badpasstimeout = 1h

	/*
	 * Sets the delay between automatic database updates. This time is reset by
	 * the OperServ UPDATE command.
	 */
	updatetimeout = 5m

	/*
	 * Sets the delay between checks for expired nicknames and channels. The
	 * OperServ UPDATE command will also cause a check for expiration and reset
	 * this timer.
	 */
	expiretimeout = 30m

	/*
	 * Sets the timout period for reading from the uplink.
	 */
	readtimeout = 5s

	/*
	 * Sets the interval between sending warning messages for program errors via
	 * WALLOPS/GLOBOPS.
	 */
	warningtimeout = 4h

	/*
	 * Sets the (maximum) frequency at which the timeout list is checked. This,
	 * combined with readtimeout above, determine how accurately timed events,
	 * such as nick kills, occur; it also determines how much CPU time Services
	 * will use doing this. Higher values will cause less accurate timing but
	 * less CPU usage.
	 *
	 * This shouldn't be set any higher than 10 seconds, and 1 second is best
	 * if your system is powerful enough (or your network small enough) to
	 * handle it. 0 will cause the timeout list to be checked every time
	 * through the main loop, which will probably slow down Services too much
	 * to be useful on most networks.
	 *
	 * Note that this value is not an absolute limit on the period between
	 * checks of the timeout list; the previous may be as great as readtimeout
	 * (above) during periods of inactivity.
	 *
	 * If this directive is not given, it will default to 0. See the 2nd paragraph
	 * above for performance impacts if you do this.
	 */
	timeoutcheck = 3s

	/*
	 * Sets the number of days log files are kept. If you don't give it, or if you
	 * set it to 0, logs will be kept indefinitely.
	 *
	 * NOTE: Services must run 24 hours a day for this feature to work.
	 *
	 * This directive is optional, but recommended.
	 */
	keeplogs = 7

	/*
	 * Sets the number of days backups of databases are kept. If you don't give it,
	 * or if you set it to 0, Services won't backup the databases.
	 *
	 * NOTE: Services must run 24 hours a day for this feature to work.
	 *
	 * This directive is optional, but recommended.
	 */
	keepbackups = 3

	/*
	 * If set, Services will require a reason when a FORBID is added, else the
	 * reason is optional. This directive also applies to SUSPENDed channels as
	 * well. This directive is optional.
	 */
	forceforbidreason = yes

	/*
	 * If set, this will allow users to let Services send PRIVMSGs to them
	 * instead of NOTICEs. Also see the defmsg option of nickserv:defaults,
	 * which also toggles the default communication (PRIVMSG or NOTICE) to
	 * use for unregistered users. This directive is optional.
	 *
	 * This is a feature that is against the IRC RFC and should be used ONLY
	 * if absolutely necessary.
	 */
	#useprivmsg = yes

	/*
	 * If set, will force Services to only respond to PRIVMSGs addresses to
	 * Nick@ServerName - e.g. NickServ@localhost.net. This should be used in
	 * conjunction with IRCd aliases. This directive is optional.
	 *
	 * When using Bahamut, this option will NOT work if the uplink server is
	 * configured as a services hub. The serviceshub option is not designed to
	 * be used with Anope.
	 */
	#usestrictprivmsg = yes

	/*
	 * If set, Anope will dump core when a segmentation fault occurs. This is
	 * generally not needed, but if Anope is crashing on your network and you
	 * want to make a bug report, having a core file will be of great help.
	 * This directive is optional.
	 */
	#dumpcore = yes

	/*
	 * If set, Anope will log user connections, disconnections, and nickname
	 * changes. You may have to do so in case you ever need to transmit user
	 * information to your local authorities. This directive is optional.
	 */
	#logusers = yes

	/*
	 * If set, Services will only show /stats o to IRC Operators. This directive
	 * is optional.
	 */
	#hidestatso = yes

	/*
	 * If set, Services will send global messages on starting up and shutting
	 * down/restarting. This directive is optional.
	 */
	#globaloncycle = yes

	/*
	 * This is the global message that will be sent when Services are being
	 * shutdown/restarted. This directive is only required if you enable
	 * globaloncycle above.
	 */
	globaloncycledown = "Services are restarting, they will be back shortly - please be good while we're gone"

	/*
	 * This is the global message that will be sent when Services (re)join the
	 * network. This directive is only required if you enable globaloncycle above.
	 */
	globaloncycleup = "Services are now back online - have a nice day"

	/*
	 * If set, Services will hide the IRC operator's nick in a global
	 * message/notice. This directive is optional.
	 */
	#anonymousglobal = yes

	/*
	 * Prevents users from registering their nick if they are not connected
	 * for at least the given number of seconds. This directive is optional.
	 */
	#nickregdelay = 30

	/*
	 * If set, forbids the registration of nicks that contain an existing
	 * nick with Services access. For example, if Tester is a Services Oper,
	 * you can't register NewTester or Tester123 unless you are an IRC
	 * Operator. This directive is optional.
	 *
	 * NOTE: If you enable this, you will have to be logged in as an IRC
	 * operator in order to register a Services Root nick when setting up
	 * Anope for the first time.
	 */
	#restrictopernicks = yes

	/*
	 * The number of LOGON/OPER news items to display when a user logs on.
	 * This directive is optional, if left out, defaults to 3.
	 */
	#newscount = 3

	/*
	 * A space-separated list of ulined servers on your network, it is assumed that
	 * the servers in this list are allowed to set channel modes and Services will
	 * not attempt to reverse their mode changes. This directive is optional.
	 *
	 * WARNING: Do NOT put your user servers in this directive.
	 */
	ulineservers = "stats.your.network"

	/*
	 * If set, Services will start logging to the log channel immediatly on startup.
	 * This directive is optional, and has no effect if logchannel is not defined.
	 */
	#enablelogchannel = yes

	/*
	 * Default modes for mode lock, these are set on newly registered channels.
	 */
	mlock = "+nrt"

	/*
	 * Modes to set on service bots when they join channels, comment this out for no modes
	 */
	botmodes = "ao"

	/*
 	 * How many times services should attempt to reconnect to the uplink before giving up
	 * Comment this out to never give up.
	 */
	maxretries = 10

	/*
	 * How long to wait between connection retries, in seconds.
	 */
	retrywait = 60
}


/*
 * [RECOMMENDED] Oper Access Config
 *
 * This section is used to set up staff access to restricted oper only commands.
 * You may define groups of commands and privileges, as well as who may use them.
 *
 * The block is recommended, as without it, you will be unable to access most oper commands.
 * It replaces the old ServicesRoot directive, amongst others.
 *
 * Note that third party modules may add additional commands and privileges to this list.
 *
 * Available privileges:
 *  botserv/administration        - Can perform certain BotServ administrative tasks
 *  chanserv/access/modify        - Can modify channel access lists
 *  chanserv/auspex               - Can see any information with /chanserv info
 *  chanserv/no-register-limit    - May register an unlimited number of channels and nicknames
 *  chanserv/set                  - Can modify the settings of any channel (incl. changing of the owner and password!)
 *  memoserv/info                 - Can see any information with /memoserv info
 *  memoserv/set-limit            - Can set the limit of max stored memos on any user and channel
 *  nickserv/confirm              - Can confirm other users nicknames
 *  nickserv/drop                 - Can drop other users nicks
 *
 * Available commands:
 *   botserv/bot/del       botserv/bot/add       botserv/bot/change  botserv/assign/private
 *   botserv/botlist       botserv/set/private   botserv/set/nobot
 *
 *   chanserv/access/list  chanserv/drop         chanserv/forbid     chanserv/getkey
 *   chanserv/list         chanserv/suspend      chanserv/topic      chanserv/set/noexpire
 *   chanserv/status
 *
 *   memoserv/sendall      memoserv/staff
 *
 *   nickserv/getpass      nickserv/sendpass     nickserv/getemail   nickserv/suspend
 *   nickserv/resetpass
 *
 *   hostserv/set - Can add/modify/delete any vhost
 *
 *   operserv/global       operserv/news         operserv/stats      operserv/kick
 *   operserv/mode         operserv/session      operserv/modlist    operserv/ignore
 *   operserv/chankill     operserv/akill        operserv/sqline     operserv/sgline
 *   operserv/szline       operserv/clearmodes   operserv/staff      operserv/defcon
 *   operserv/modload      operserv/jupe         operserv/set        operserv/noop
 *   operserv/quit         operserv/update       operserv/reload     operserv/restart
 *   operserv/shutdown     operserv/svsnick      operserv/oline      operserv/umode
 *
 * First, we define 'opertypes', which are named whatever we want ('Network Administrator', etc).
 * These can contain commands for oper-only strings (see above) which grants access to that specific command,
 * and privileges (which grant access to more general permissions for the named area).
 * Wildcard entries are permitted for both, e.g. 'commands = "operserv/*"' for all OperServ commands.
 *
 * Below are some default example types, but this is by no means exhaustive,
 * and it is recommended that you configure them to your liking.
 */
opertype
{
	// The name of this opertype
	name = "Services Root"

	// What commands (see above) this opertype may use
	commands = "*"

	// What privs (see above) this opertype has
	privs = "*"
}

opertype
{
	name = "Services Administrator"
	commands = "operserv/global operserv/news operserv/stats operserv/kick operserv/mode operserv/session operserv/modlist operserv/ignore operserv/chankill operserv/akill operserv/sqline operserv/sgline operserv/szline operserv/clearmodes operserv/staff operserv/defcon botserv/* chanserv/* nickserv/* memoserv/*"
	privs = "*"
}

opertype
{
	name = "Helper"
	privs = "hostserv/set"
}

/*
 * After defining different types of operators in the above opertype section, we now define who is in these groups
 * through 'oper' blocks, similar to ircd access.
 *
 * The default is to comment these out (so NOBODY will have Services access).
 * You probably want to add yourself and a few other people at minimum.
 *
 * As with all permissions, make sure to only give trustworthy people access to Services.
 */
#oper
#{
#	// The nickname of this services oper
#	name = "DukePyrolator"
#
#	// The opertype this person will have
#	type = "Services Root"
#}#
#
#oper
#{
#	name = "nick1"
#	type = "Services Administrator"
#}#
#
#oper
#{
#	name = "nick2"
#	type = "Helper"
#}

/*
 * [OPTIONAL] Mail Config
 *
 * This section contains settings related to the use of e-mail from Services.
 * If the usemail directive is set to yes, unless specified otherwise, all other
 * directives are required.
 */
mail
{
	/*
	 * If set, this option enables the mail commands in Services. You may choose
	 * to disable it if you have no Sendmail-compatible mailer installed. While
	 * this directive (and entire block) is optional, it is required if the
	 * nickserv:emailregistration is set to yes.
	 */
	usemail = yes

	/*
	 * This is the command-line that will be used to call Sendmail to send an
	 * e-mail. It must be called with all the parameters needed to make it
	 * scan the mail input to find the mail recipient; consult your Sendmail
	 * documentation.
	 *
	 * Postfix users must use the compatible sendmail utility provided with
	 * it; this one usually needs no parameters on the command-line. Most
	 * sendmail applications (or replacements of it) require the -t option
	 * to be used.
	 */
	sendmailpath = "/usr/sbin/sendmail -t"

	/*
	 * This is the e-mail address from which all the e-mails are to be sent from.
	 * It should really exist.
	 */
	sendfrom = "services@localhost.net"

	/*
	 * If set, SENDPASS and RESETPASS will be restricted to IRC operators.
	 * This directive is optional.
	 *
	 * WARNING: If you choose to not enable this option, you should limit the
	 * number of processes that the services user can have at a time (you can
	 * create a special user for this; remember to NEVER launch Services as
	 * root).
	 */
	restrict = yes

	/*
	 * This controls the minimum amount of time an user must wait before sending
	 * another e-mail after they have sent one. It also controls the minimum time
	 * an user must wait before they can receive another e-mail. This directive
	 * is optional, but recommended.
	 *
	 * This feature prevents users from being mail bombed using Services and
	 * it is highly recommended that it be used.
	 */
	delay = 5m

	/*
	 * If set, Services will not attempt to put quotes around the TO: fields
	 * in e-mails. This directive is optional, and as far as we know, it's
	 * only needed if you are using ESMTP or QMail to send out e-mails.
	 */
	#dontquoteaddresses = yes
}

/*
 * [REQUIRED] NickServ Config
 *
 * This section is used to set up the Nickname Registration Service pseudo-client.
 * Unless specified otherwise, all directives are required.
 */
nickserv
{
	/*
	 * The nickname of the NickServ client.
	 */
	nick = "NickServ"

	/*
	 * The description of the NickServ client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	description = "Nickname Registration Service"

	/*
	 * The core modules to load for NickServ. This is a space separated list that corresponds
	 * to the base names of the modules for NickServ. This directive is optional, but highly recommended.
	 */
	modules = "ns_help ns_register ns_group ns_identify ns_access ns_set ns_saset ns_drop ns_recover ns_release ns_sendpass ns_ghost ns_alist ns_info ns_list ns_logout ns_status ns_update ns_getpass ns_getemail ns_forbid ns_suspend ns_resetpass"

	/*
	 * Force users to give an e-mail address when they register a nick. This directive
	 * is recommended to be enabled, and required if the e-mail registration option is
	 * enabled.
	 */
	forceemail = yes

	/*
	 * Require an e-mail to be sent to the user before they can register their nick.
	 */
	#emailregistration = yes

	/*
	 * The default options for newly registered nicks. Note that changing these options
	 * will have no effect on nicks which are already registered. The list must be separated
	 * by spaces.
	 *
	 * The options are:
	 * -         kill: Kill nick if not identified within 60 seconds
	 * -    killquick: Kill nick if not identified within 20 seconds, this one overrides the above
	 *                   option and the above must be specified with this one
	 * -       secure: Enable nickname security, requiring the nick's password before any operations
	 *                   can be done on it
	 * -      private: Hide the nick from NickServ's LIST command
	 * -    hideemail: Hide's the nick's e-mail address from NickServ's INFO command
	 * - hideusermask: Hide's the nick's last or current user@host from NickServ's INFO command
	 * -     hidequit: Hide's the nick's last quit message
	 * -   memosignon: Notify user if they have a new memo when they sign into the nick
	 * -  memoreceive: Notify user if they have a new memo as soon as it's received
	 * -       autoop: User will be automatically opped in channels they enter and have access to
	 * -          msg: Services messages will be sent as PRIVMSGs instead of NOTICEs, requires UsePrivmsg
	 *                   to be enabled as well
	 *
	 * This directive is optional, if left blank, the options will default to secure, memosignon, and
	 * memoreceive. If you really want no defaults, use "none" by itself as the option.
	 */
	defaults="secure private hideemail hideusermask memosignon memoreceive autoop"

	/*
	 * Default language that non- and newly-registered nicks will receive messages in. The number
	 * here is the same as the number in NickServ's SET LANGUAGE help.
	 */
	defaultlanguage = 1

	/*
	 * The minimum length of time between consecutive uses of NickServ's REGISTER command. This
	 * directive is optional, but recommended. If not set, this restriction will be disabled.
	 */
	regdelay = 30s

	/*
	 * The minimum length of time between consecutive uses of NickServ's RESEND command. This
	 * directive is optional, but recommended. If not set, this restriction will be disabled.
	 */
	resenddelay = 90s

	/*
	 * The length of time before a nick registration expires. This directive is optional, but
	 * recommended. If not set, the default is 21 days.
	 */
	expire = 21d

	/*
	 * The length of time a user gets to enter the confirmation code which has been e-mailed
	 * to them before the nick will be released for general use again. This directive is
	 * only required if the e-mail registration option is enabled.
	 */
	#preregexpire = 1d

	/*
	 * The maximum number of nicks allowed in a group. This directive is optional, but
	 * recommended. If not set or set to 0, no limits will be applied.
	 */
	maxaliases = 16

	/*
	 * The maximum number of entries allowed on a nickname's access list.
	 */
	accessmax = 32

	/*
	 * The username (and possibly hostname) used for the fake user created when NickServ collides
	 * a user. Should be in the user@host format. If the host is not given, the one from ServicesUser
	 * is used.
	 */
	enforceruser = "enforcer@localhost.net"
	#enforceruser = "enforcer"

	/*
	 * The delay before a NickServ collided nick is released.
	 */
	releasetimeout = 1m

	/*
	 * Allow the use of the IMMED option in the NickServ SET KILL command. This directive is optional.
	 */
	#allowkillimmed = yes

	/*
	 * If set, the NickServ GROUP command won't allow any group change. This is recommended for
	 * better performance and to protect against nick stealing, however users will have less
	 * flexibility. This directive is optional.
	 */
	#nogroupchange = yes

	/*
	 * Limits the use of the NickServ LIST command to IRC operators. This directive is optional.
	 */
	#listopersonly = yes

	/*
	 * The maximum number of nicks to be returned for a NickServ LIST command.
	 */
	listmax = 50

	/*
	 * When a user's nick is forcibly changed to enforce a "nick kill", their new nick will start
	 * with this value. The rest will be made up of 6 or 7 digits.
	 */
	guestnickprefix = "Guest"

	/*
	 * Prevents the use of the DROP, FORBID, GETPASS, and SET PASSWORD commands by Services Admins
	 * on other Services Admins or the Services Root(s). This directive is optional, but
	 * recommended.
	 */
	secureadmins = yes

	/*
	 * If set, any user wanting to use the privileges of Services Root, Services Admin, or Services
	 * Operator must have been logged as an IRC Operator with the /oper command. This directive is
	 * optional, but recommended.
	 */
	strictprivileges = yes

	/*
	 * If set, Services will set the channel modes a user has access to upon identifying, assuming
	 * they are not already set. This directive is optional.
	 */
	#modeonid = yes

	/*
	 * If set, Services will add the usermask of registering users to the access list of their
	 * newly created account. If not set, users will always have to identify to NickServ before
	 * being recognized, unless they manually add an address to the access list of their account.
	 * This directive is optional.
	 */
	addaccessonreg = yes
}

/*
 * [REQUIRED] ChanServ Config
 *
 * This section is used to set up the Channel Registration Service pseudo-client.
 * Unless specified otherwise, all directives are required.
 */
chanserv
{
	/*
	 * The nickname of the ChanServ client.
	 */
	nick = "ChanServ"

	/*
	 * The description of the ChanServ client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	description = "Channel Registration Service"

	/*
	 * The core modules to load for ChanServ. This is a space separated list that corresponds
	 * to the base names of the modules for ChanServ. This directive is optional, but highly recommended.
	 */
	modules = "cs_help cs_register cs_set cs_xop cs_access cs_akick cs_drop cs_ban cs_clear cs_modes cs_getkey cs_invite cs_kick cs_list cs_topic cs_info forbid cs_suspend cs_status cs_unban"

	/*
	 * The default options for newly registered channels. Note that changing these options
	 * will have no effect on channels which are already registered. The list must be separated
	 * by spaces.
	 *
	 * The options are:
	 * -     keeptopic: Retain topic when the channel is not in use
	 * -      opnotice: Send a notice when OP/DEOP commands are used
	 * -         peace: Disallow users from kicking or removing modes from others who are of the same
	 *                    access level or superior
	 * -       private: Hide the channel from ChanServ's LIST command
	 * -    restricted: Kick/ban users who are restricted from the channel
	 * -        secure: Enable channel security, requiring the user to be identified with NickServ in
	 *                    order to be considered for being on the access list of the channel
	 * -     secureops: Only allow operator status to be given if the user is on the access list
	 * - securefounder: Only allow the real founder of the channel to drop the channel, change it's
	 *                    password, or change the founder or successor
	 * -      signkick: Use of ChanServ's KICK command will cause the user's nick to be signed to the kick.
	 * - signkicklevel: Same as above, but the kick will not be signed if the user is at the same access
	 *                    level or superior to the target
	 * -     topiclock: Disallow the topic to be changed except with ChanServ's TOPIC command
	 * -           xop: Enable use of the xOP system
	 * -       persist: Keep the channel open at all times
	 *
	 * This directive is optional, if left blank, the options will default to keetopic, secure, securefounder,
	 * and signkick. If you really want no defaults, use "none" by itself as the option.
	 */
	defaults="keeptopic peace secure securefounder signkick xop"

	/*
	 * The maximum number of channels which may be registered to a single nickname. This directive is optional,
	 * but recommended. If not set, there will be no restriction on the numbers of channels a single nickname
	 * can have registered.
	 */
	maxregistered = 20

	/*
	 * The length of time before a channel registration expires. This directive is optional, but
	 * recommended. If not set, the default is 14 days.
	 */
	expire = 14d

	/*
	 * The default ban type for newly registered channels (and when importing old databases).
	 *
	 * defbantype can be:
	 *
	 * 0: ban in the form of *!user@host
	 * 1: ban in the form of *!*user@host
	 * 2: ban in the form of *!*@host
	 * 3: ban in the form of *!*user@*.domain
	 */
	defbantype = 2

	/*
	 * The maximum number of entries on a channel's access list.
	 */
	accessmax = 1024

	/*
	 * The maximum number of entries on a channel's autokick list.
	 */
	autokickmax = 32

	/*
	 * The default reason for an autokick if none is given.
	 */
	autokickreason = "User has been banned from the channel"

	/*
	 * The length of time ChanServ stays in a channel after kicking a user from a channel they are not
	 * permitted to be in. This only occurs when the user is the only one in the channel.
	 */
	inhabit = 15s

	/*
	 * Limits the use of the ChanServ LIST command to IRC operators. This directive is optional.
	 */
	#listopersonly = yes

	/*
	 * The maximum number of channels to be returned for a ChanServ LIST command.
	 */
	listmax = 50

	/*
	 * Allow only IRC Operators to use ChanServ. This directive is optional.
	 */
	#opersonly = yes
}

/*
 * [REQUIRED] MemoServ Config
 *
 * This section is used to set up the Memo Service pseudo-client. Unless specified otherwise,
 * all directives are required.
 */
memoserv
{
	/*
	 * The nickname of the MemoServ client.
	 */
	nick = "MemoServ"

	/*
	 * The description of the MemoServ client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	description = "Memo Service"

	/*
	 * The core modules to load for MemoServ. This is a space separated list that corresponds
	 * to the base names of the modules for MemoServ. This directive is optional, but highly recommended.
	 */
	modules = "ms_send ms_cancel ms_list ms_read ms_del ms_set ms_info ms_rsend ms_check ms_staff ms_sendall ms_help"

	/*
	 * The maximum number of memos a user is allowed to keep by default. Normal users may set the
	 * limit anywhere between 0 and this value. Services Admins can change it to any value or
	 * disable it. This directive is optional, but recommended. If not set, the limit is disabled
	 * by default, and normal users can set any limit they want.
	 */
	maxmemos = 20

	/*
	 * The delay between consecutive uses of the MemoServ SEND command. This can help prevent spam
	 * as well as denial-of-service attacks from sending large numbers of memos and filling up disk
	 * space (and memory). The default 3-second wait means a maximum average of 150 bytes of memo
	 * per second per user under the current IRC protocol. This directive is optional, but
	 * recommended.
	 */
	senddelay = 3s

	/*
	 * Should we notify all appropriate users of a new memo? This applies in cases where a memo is
	 * sent to a nick which is in the group of another nick. Note that, unlike before, it is currently
	 * more efficient to enable this. This directive is optional.
	 */
	notifyall = yes

	/*
	 * Allow the use of memo receipts for the following groups:
	 *
	 * 1 - Opers Only
	 * 2 - Everybody
	 *
	 * This directive is optional.
	 */
	#memoreceipt = 1
}

/*
 * [OPTIONAL] BotServ Config
 *
 * This section is used to set up the Bot Service pseudo-client. The block is optional and can be
 * removed if you do not wish to have BotServ on your network. Unless specified otherwise,
 * all directives are required if you do wish to use BotServ.
 */
botserv
{
	/*
	 * The nickname of the BotServ client.
	 */
	nick = "BotServ"

	/*
	 * The description of the BotServ client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	description = "Bot Service"

	/*
	 * The core modules to load for BotServ. This is a space separated list that corresponds
	 * to the base names of the modules for BotServ. This directive is optional, but highly recommended.
	 */
	modules = "bs_help bs_botlist bs_assign bs_set bs_kick bs_badwords bs_act bs_info bs_say bs_unassign bs_bot"

	/*
	 * The default bot options for newly registered channels. Note that changing these options
	 * will have no effect on channels which are already registered. The list must be separated
	 * by spaces.
	 *
	 * The options are:
	 * -    dontkickops: Channel operators will be protected against BotServ kicks
	 * - dontkickvoices: Voiced users will be protected against BotServ kicks
	 * -          greet: The channel's BotServ bot will greet incoming users that have set a greet
	 *                     in their NickServ settings
	 * -        fantasy: Enables the use of BotServ fantasy commands in the channel
	 * -      symbiosis: Causes the BotServ bot to do all actions that would normally have been
	 *                     done by ChanServ
	 *
	 * This directive is optional, if left blank, there will be no defaults.
	 */
	defaults="greet fantasy symbiosis"

	/*
	 * The minimum number of users there must be in a channel before the bot joins it. The best
	 * value for this setting is 1 or 2. This cannot be 0, otherwise topic retention and mode
	 * lock and such other things won't work.
	 */
	minusers = 1

	/*
	 * The maximum number of entries a single bad words list can have. Setting it too high can
	 * reduce performance slightly.
	 */
	badwordsmax = 32

	/*
	 * The amount of time that data for a user is valid in BotServ. If the data exceeds this time,
	 * it is reset or deleted depending on the case. Do not set it too high, otherwise your
	 * resources will be slightly affected.
	 */
	keepdata = 10m

	/*
	 * The bots are currently not affected by any modes or bans when they try to join a channel.
	 * But some people may want to make it act like a real bot, that is, for example, remove all
	 * the bans affecting the bot before joining the channel, remove a ban that affects the bot
	 * set by an user when it is in the channel, and so on. Since it consumes a bit more CPU
	 * time, you should not enable this on larger networks. This directive is optional.
	 */
	#smartjoin = yes

	/*
	 * If set, the bots will use a kick reason that does not state the word when it is kicking.
	 * This is especially useful if you have young people on your network. This directive is
	 * optional.
	 */
	gentlebadwordreason = yes

	/*
	 * If set, BotServ will use case sensitive checking for badwords. This directive is optional.
	 */
	#casesensitive = yes

	/*
	 * Defines the prefix for fantasy commands in channels. This character will have to be prepended
	 * to all fantasy commands. If you choose "!", for example, fantasy commands will be "!kick",
	 * "!op", etc. This directive is optional, if left out, the default fantasy character is "!".
	 */
	#fantasycharacter = "!"
}

/*
 * [OPTIONAL] HostServ Config
 *
 * This section is used to set up the vHost Service pseudo-client. The block is optional and can be
 * removed if you do not wish to have HostServ on your network. Unless specified otherwise,
 * all directives are required if you do wish to use HostServ.
 */
hostserv
{
	/*
	 * The nickname of the HostServ client.
	 */
	nick = "HostServ"

	/*
	 * The description of the HostServ client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	description = "vHost Service"

	/*
	 * The core modules to load for HostServ. This is a space separated list that corresponds
	 * to the base names of the modules for HostServ. This directive is optional, but highly recommended.
	 */
	modules = "hs_help hs_on hs_off hs_group hs_list hs_set hs_setall hs_del hs_delall"
}

/*
 * [REQUIRED] OperServ Config
 *
 * This section is used to set up the Operator Service pseudo-client. Unless specified otherwise,
 * all directives are required.
 */
operserv
{
	/*
	 * The nickname of the OperServ client.
	 */
	nick = "OperServ"

	/*
	 * The description of the OperServ client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	description = "Operator Service"

	/*
	 * The nickname of the Global client.
	 */
	globalnick = "Global"

	/*
	 * The description of the Global client, which will be used as the GECOS (real
	 * name) of the client.
	 */
	globaldescription = "Global Noticer"

	/*
	 * The core modules to load for OperServ. This is a space separated list that corresponds
	 * to the base names of the modules for OperServ. This directive is optional, but highly recommended.
	 */
	modules = "os_help os_global os_stats os_staff os_mode os_kick os_clearmodes os_akill os_sgline os_sqline os_szline os_chanlist os_userlist os_news os_session os_noop os_jupe os_ignore os_set os_reload os_update os_restart os_quit os_shutdown os_defcon os_chankill os_svsnick os_oline os_umode os_modload os_modunload os_modlist os_modinfo"

	/*
	 * If set, Services Admins will be able to use SUPERADMIN [ON|OFF] which will temporarily grant
	 * them extra privileges, such as being a founder on ALL channels, ability to adjust another
	 * users' modes, etc. This directive is optional.
	 */
	#superadmin = yes

	/*
	 * If set, causes Services to write a message to the log every time a new user maximum is set.
	 * This directive is optional.
	 */
	logmaxusers = yes

	/*
	 * These define the default expiration times for, respectively, AKILLs, CHANKILLs, SGLINEs,
	 * SQLINEs, and SZLINEs.
	 */
	autokillexpiry = 30d
	chankillexpiry = 30d
	sglineexpiry = 30d
	sqlineexpiry = 30d
	szlineexpiry = 30d

	/*
	 * If set, this option will make Services send an AKILL command immediately after it has been
	 * added with AKILL ADD. This eliminates the need for killing the user after the AKILL has
	 * been added. This directive is optional.
	 */
	#akillonadd = yes

	/*
	 * If set, this option will make Services send an (SVS)KILL command immediately after SGLINE ADD.
	 * This eliminates the need for killingthe user after the SGLINE has been added. This directive
	 * is optional.
	 */
	#killonsgline = yes

	/*
	 * If set, this option will make Services send an (SVS)KILL command immediately after SQLINE ADD.
	 * This eliminates the need for killingthe user after the SQLINE has been added. This directive
	 * is optional.
	 */
	#killonsqline = yes

	/*
	 * Defines what actions should trigger notifications. The list must be separated by spaces.
	 *
	 * The notifications are:
	 * -            oper: A user has become an IRC operator
	 * -           bados: A non-IRCop attempts to use OperServ
	 * -        osglobal: OperServ's GLOBAL command was used
	 * -          osmode: OperServ's MODE command was used
	 * -    osclearmodes: OperServ's CLEARMODES command was used
	 * -          oskick: OperServ's KICK command was used
	 * -         osakill: OperServ's AKILL command was used
	 * -        ossgline: OperServ's SGLINE command was used
	 * -        ossqline: OperServ's SQLINE command was used
	 * -        osszline: OperServ's SZLINE command was used
	 * -          osnoop: OperServ's NOOP command was used
	 * -          osjupe: OperServ's JUPE command was used
	 * -     akillexpire: An AKILL has expired
	 * -    sglineexpire: An SGLINE has expired
	 * -    sqlineexpire: An SQLINE has expired
	 * -    szlineexpire: An SZLINE has expired
	 * - exceptionexpire: A session exception has expired
	 * -         getpass: NickServ's or ChanServ's GETPASS command was used
	 * -         setpass: A Services Admin has set the password of a nickname or channel they do
	 *                      not normally have access to
	 * -          forbid: NickServ's or ChanServ's FORBID command was used
	 * -            drop: A Services Admin has dropped a nickname or channel they do not normally
	 *                      have access to
	 *
	 * This directive is optional, if left blank, there will be no notifications.
	 */
	notifications="osglobal osmode osclearmodes oskick osakill ossgline ossqline osszline osnoop osjupe getpass setpass forbid drop"

	/*
	 * Enables session limiting. Session limiting prevents users from connecting more than a certain
	 * number of times from the same host at the same time - thus preventing most types of cloning.
	 * Once a host reaches it's session limit, all clients attempting to connect from that host will
	 * be killed. Exceptions to the default session limit can be defined via the exception list. It
	 * should be noted that session limiting, along with a large exception list, can degrade Services'
	 * performance.
	 *
	 * See the source and comments in sessions.c and the online help for more information about
	 * session limiting.
	 *
	 * This directive is optional.
	 */
	limitsessions = yes

	/*
	 * Default session limit per host. Once a host reaches it's session limit, all clients attempting
	 * to connect from that host will be killed. A value of zero means an unlimited session limit.
	 * If not given and session limiting is enabled, it will default to no limit.
	 */
	defaultsessionlimit = 3

	/*
	 * The maximum session limit that may be set for a host in an exception. This directive is only
	 * required if session limiting is enabled.
	 */
	maxsessionlimit = 100

	/*
	 * Sets the default expiry time for session exceptions. This directive is only required if session
	 * limiting is enabled.
	 */
	exceptionexpiry = 1d

	/*
	 * The message that will be NOTICE'd to a user just before they are removed from the network because
	 * their host's session limit has been exceeded. It may be used to give a slightly more descriptive
	 * reason for the impending kill as opposed to simply "Session limit exceeded". This directive is
	 * optional, if not set, nothing will be sent.
	 */
	sessionlimitexceeded = "The session limit for your host %s has been exceeded."

	/*
	 * Same as above, but should be used to provide a website address where users can find out more
	 * about session limits and how to go about applying for an exception. This directive is optional,
	 * if not set, nothing will be sent.
	 *
	 * Note: This directive has been intentionally commented out in an effort to remind you to change
	 * the URL it contains. It is recommended that you supply an address/URL where people can get help
	 * regarding session limits.
	 */
	#sessionlimitdetailsloc = "Please visit http://your.website.url/ for more information about session limits."

	/*
	 * If set and is not 0, this directive tells Services to add an AKILL the number of subsequent kills
	 * for the same host exceeds this value, preventing the network from experiencing KILL floods. This
	 * directive is optional.
	 */
	maxsessionkill = 15

	/*
	 * Sets the expiry time for AKILLs set for hosts exceeding the maxsessionkill directive limit. This
	 * directive is optional, if not set, defaults to 30 minutes.
	 */
	sessionautokillexpiry = 30m

	/*
	 * Adds the nickname of the IRC Operator issuing an AKILL to the kill reason. This directive is
	 * optional.
	 */
	addakiller = yes

	/*
	 * If set, only IRC Operators will be permitted to use OperServ, regardless of module-based command
	 * access restrictions. This directive is optional, but recommended.
	 */
	opersonly = yes
}

/*
 * [OPTIONAL] DefCon Config
 *
 * This section is used to set up the DefCon system of OperServ. The block is optional and can be
 * removed if you wish to disable DefCon in it's entirety. Unless specified otherwise, all directives
 * are required if you do wish to use DefCon.
 */
defcon
{
	/*
	 * Default DefCon level (1-5) to use when starting Services up. Level 5 constitutes normal operation
	 * while level 1 constitutes the most restrictive operation. If this setting is left out or set to
	 * 0, DefCon will be disabled and the rest of this block will be ignored.
	 */
	#defaultlevel = 5

	/*
	 * The following 4 directives define what operations will take place when DefCon is set to levels
	 * 1 through 4. Each level is a list that must be separated by spaces.
	 *
	 * The following operations can be defined at each level:
	 * - nonewchannels: Disables registering new channels
	 * - nonewnicks: Disables registering new nicks
	 * - nomlockchanges: Disables changing MLOCK on registered channels
	 * - forcechanmodes: Forces all channels to have the modes given in the later chanmodes directive
	 * - reducedsessions: Reduces the session limit to the value given in the later sessionlimit directive
	 * - nonewclients: KILL any new clients trying to connect
	 * - operonly: Services will ignore all non-IRCops
	 * - silentoperonly: Services will silently ignore all non-IRCops
	 * - akillnewclients: AKILL any new clients trying to connect
	 * - nonewmemos: No new memos will be sent to block MemoServ attacks
	 */
	level4 = "nonewchannels nonewnicks nomlockchanges reducedsessions"
	level3 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions"
	level2 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly"
	level1 = "nonewchannels nonewnicks nomlockchanges forcechanmodes reducedsessions silentoperonly akillnewclients"

	/*
	 * New session limit to use when a DefCon level is using "reduced" session limiting.
	 */
	#sessionlimit = 2

	/*
	 * Length of time to add an AKILL for when DefCon is preventing new clients from connecting to the
	 * network.
	 */
	#akillexpire = 5m

	/*
	 * The channel modes to set on all channels when the DefCon channel mode system is in use.
	 *
	 * Note 1: Choose these modes carefully, because when DefCon switches to a level which does NOT have
	 * the mode setting selected, Services will set the reverse on all channels, e.g. if this setting
	 * is +RN when DefCon is used, all channels will be set to +RN, when DefCon is removed, all
	 * channels will be set to -RN. You don't want to set this to +k for example, because when DefCon
	 * is removed all channels with -k.
	 * Note 2: MLOCK'd modes will not be lost.
	 */
	#chanmodes = "+R"

	/*
	 * This value can be used to automatically return the network to DefCon level 5 after the specified
	 * time period, just in case any IRC Operator forgets to remove a DefCon setting. This directive is
	 * optional.
	 */
	#timeout = 15m

	/*
	 * If set, Services will send a global message on DefCon level changes. This directive is optional.
	 */
	#globalondefcon = yes

	/*
	 * If set, Services will send the global message defined in the message directive on DefCon level
	 * changes. This directive is optional.
	 */
	#globalondefconmore = yes

	/*
	 * Defines the message that will be sent on DefCon level changes when globalondefconmore is set.
	 * This directive is required only when globalondefconmore is set.
	 */
	#message = "Put your message to send your users here. Dont forget to uncomment globalondefconmore"

	/*
	 * Defines the message that will be sent when DefCon is returned to level 5. This directive is optional,
	 * and will also override globalondefcon and globalondefconmore when set.
	 */
	#offmessage = "Services are now back to normal, sorry for any inconvenience"

	/*
	 * Defines the reason to use when clients are KILLed or AKILLed from the network while the proper
	 * DefCon operation is in effect.
	 */
	#akillreason = "This network is currently not accepting connections, please try again later"
}

/*
 * [OPTIONAL] Non-Core Modules
 *
 * The following single-line blocks are used to load all non-core modules, including 3rd-party modules.
 * Modules can be prevented from loading by commenting out the line, other modules can be added by
 * adding a module block. These modules will be loaded prior to Services connecting to your network.
 */
module { name = "hs_moo" }
module { name = "ircd_defizzer" }
module { name = "os_ignore" }
module { name = "cs_appendtopic" }
module { name = "cs_enforce" }
module { name = "ns_maxemail" }
module { name = "os_info" }
module { name = "hs_request" }

/*
 * [OPTIONAL] Module-Specific Options
 *
 * The following blocks are used for options pertaining to modules and are not part of the core.
 * Unless otherwise stated, most of the options are optional.
 */
db_plain
{
	/*
	 * The database db_plain should use
	 */
	database = "anope.db"
}

hs_request
{
	/*
	 * If set, Services will send a memo to the user requesting a vHost when it's been
	 * approved or rejected.
	 */
	#memouser = yes

	/*
	 * If set, Services will send a memo to all Services staff when a new vHost is requested.
	 */
	#memooper = yes

	/*
	 * If set, Services will send a memo to all Host Setters when a new vHost is requested.
	 */
	#memosetters = yes
}

ns_maxemail
{
	/*
	 * The limit to how many registered nicks can use the same e-mail address. If set to 0 or left
	 * commented, there will be no limit enforced when registering new accounts or using
	 * /msg NickServ SET EMAIL.
	 */
	#maxemails = 1
}