summaryrefslogtreecommitdiff
path: root/conf/inspircd.conf.example
blob: ede4a5d4e27ab86ac554d2d9d2e46fde3a3b4f77 (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
########################################################################
#                                                                      #
#               ___                ___ ____   ____    _                #
#              |_ _|_ __  ___ _ __|_ _|  _ \ / ___|__| |               #
#               | || '_ \/ __| '_ \| || |_) | |   / _` |               #
#               | || | | \__ \ |_) | ||  _ <| |__| (_| |               #
#              |___|_| |_|___/ .__/___|_| \_\\____\__,_|               #
#                            |_|                                       #
#      ____             __ _                       _   _               #
#     / ___|___  _ __  / _(_) __ _ _   _ _ __ __ _| |_(_) ___  _ __    #
#    | |   / _ \| '_ \| |_| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \   #
#    | |__| (_) | | | |  _| | (_| | |_| | | | (_| | |_| | (_) | | | |  #
#     \____\___/|_| |_|_| |_|\__, |\__,_|_|  \__,_|\__|_|\___/|_| |_|  #
#                            |___/                                     #
#                                                                      #
##################################||####################################
                                 #||#                                   
##################################||####################################
#                                                                      #
#         This is an example of the config file for InspIRCd.          #
#             Change the options to suit your network                  #
#                                                                      #
#     $Id$     #
#                                                                      #
# If you would like more detailed options, but a slightly more         #
# painful configuration, please see inspircd.conf.example.old	       #
#								       #
#    ____                _   _____ _     _       ____  _ _   _         #
#   |  _ \ ___  __ _  __| | |_   _| |__ (_)___  | __ )(_) |_| |        #
#   | |_) / _ \/ _` |/ _` |   | | | '_ \| / __| |  _ \| | __| |        #
#   |  _ <  __/ (_| | (_| |   | | | | | | \__ \ | |_) | | |_|_|        #
#   |_| \_\___|\__,_|\__,_|   |_| |_| |_|_|___/ |____/|_|\__(_)        #
#                                                                      #
#   Lines prefixed with READ THIS BIT, as shown above, are IMPORTANT   #
#   lines, and you REALLY SHOULD READ THEM. Yes, THIS MEANS YOU. Even  #
#   if you've configured InspIRCd before, these probably indicate      #
#   something new or different to this version and you SHOULD READ IT. #
#                                                                      #
########################################################################
#                                                                      #
#         Unalphabeticalise the modules list at your own risk          #
#                                                                      #
########################################################################

#-#-#-#-#-#-#-#-#-#  INCLUDE CONFIGURATION  #-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# This optional tag allows you to include another config file         #
# allowing you to keep your configuration tidy. The configuration     #
# file you include will be treated as part of the configuration file  #
# which includes it, in simple terms the inclusion is transparent.    #
#                                                                     #
# All paths to config files are relative to the directory of the main #
# config file inspircd.conf, unless the filename starts with a forward#
# slash (/) in which case it is treated as an absolute path.          #
#                                                                     #
# You may also include an executable file, in which case if you do so #
# the output of the executable on the standard output will be added   #
# to your config at the point of the include tag.                     #
#                                                                     #
# Syntax is as follows:                                               #
#<include file="file.conf">                                           #
#<include executable="/path/to/executable parameters">                #
#                                                                     #


#-#-#-#-#-#-#-#-#-#-#-#-  SERVER DESCRIPTION  -#-#-#-#-#-#-#-#-#-#-#-#-
#                                                                     #
#   Here is where you enter the information about your server.        #
#                                                                     #

<server 
        # name: Hostname of your server. Does not need to be valid.
        name="penguin.omega.org.za"

        # description: Server description. Spaces are allowed.
        description="Waddle World"

        # network: Network name given on connect to clients.
        # Should be the same on all servers on the network and
        # not contain spaces.
        network="Omega">


#-#-#-#-#-#-#-#-#-#-#-#-   ADMIN INFORMATION   -#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   Describes the Server Administrator's real name (optionally),      #
#   nick, and email address.                                          #
#                                                                     #
#  Syntax is as follows:                                              #
#       <admin name="real name"                                       #
#              nick="nick name"                                       #
#              email="email@address.com">                             #
#                                                                     #

<admin name="Johnny English"
       nick="MI5"
       email="MI5@the.best.secret.agent">


#-#-#-#-#-#-#-#-#-#-#-#-   PORT CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-
#                                                                     #
#   Enter the port and address bindings here.                         #
#                                                                     #
#  bind address - Specifies which address ports bind to. Leaving this #
#                 field blank binds the port to all IP's available.   #
#                                                                     #
#  port         - The port number to bind to. You may specify a port  #
#                 range here, e.g. "6667-6669,7000,7001". If you do   #
#                 this, the server will count each port within your   #
#                 range as a separate binding, making the above       #
#                 example equivalent to five separate bind tags.      #
#                 A failure on one port in the range does not prevent #
#                 the entire range from being bound, just that one    #
#                 port number.                                        #
#                                                                     #
#  type         - Can be 'clients' or 'servers'. The clients type is  #
#                 a standard TCP based socket, the servers type is a  #
#                 also a TCP based connection but of a different      #
#                 format. SSL support is provided by modules, to      #
#                 enable SSL support, please read the module section  #
#                 of this configuration file.                         #
#                                                                     #
#  ssl          - When using m_ssl_gnutls.so or m_ssl_openssl.so      #
#                 modules, you must define this value to use ssl on   #
#                 that port. Valid values are 'gnutls' or 'openssl'   #
#                 respectively. If the module is not loaded, this     #
#                 setting is ignored.                                 #
#                                                                     #
#  transport    - If you have m_spanningtree.so loaded, along with    #
#                 either one of the SSL modules (m_ssl_gnutls or      #
#                 m_ssl_openssl) or m_ziplinks.so, then you may make  #
#                 use of this value.                                  #
#                 Setting it to 'openssl' or 'gnutls' or 'zip'        #
#                 indicates that the port should accept connections   #
#                 using the given transport name. Transports are      #
#                 layers which sit on top of a socket and change the  #
#                 way data is sent and received, e.g. encryption,     #
#                 compression, and other such things. Because this    #
#                 may not be limited in use to just encryption,       #
#                 the 'ssl' value used for client ports does not      #
#                 exist for servers, and this value is used instead.  #
#    ____                _   _____ _     _       ____  _ _   _        #
#   |  _ \ ___  __ _  __| | |_   _| |__ (_)___  | __ )(_) |_| |       #
#   | |_) / _ \/ _` |/ _` |   | | | '_ \| / __| |  _ \| | __| |       #
#   |  _ <  __/ (_| | (_| |   | | | | | | \__ \ | |_) | | |_|_|       #
#   |_| \_\___|\__,_|\__,_|   |_| |_| |_|_|___/ |____/|_|\__(_)       #
#                                                                     #
#  If you want to link servers to InspIRCd you must load the          #
#  m_spanningtree.so module! Please see the modules list below for    #
#  information on how to load this module! If you do not load this    #
#  module, server ports will NOT be bound!                            #
#                                                                     #
#  Leaving address empty binds to all available interfaces            #
#                                                                     #
#  Syntax is as follows:                                              #
#                                                                     #
# <bind address="ip address" port="port" type="clients">              #
# <bind address="ip address" port="port" type="servers">              #
#                                                                     #
# If InspIRCd is built for IPv6, and you wish to accept IPv4 clients, #
# then you can specify IPv4 ip addresses here to bind. You may also   #
# use the 4in6 notation, ::ffff:1.2.3.4, where 1.2.3.4 is the IPv4    #
# address to bind the port, but as of InspIRCd 1.1.1, this is not     #
# required.                                                           #
#                                                                     #
# ------------------------------------------------------------------- #
#                                                                     #
# PLEASE NOTE: If you have build InspIRCd as an IPv6 server, and you  #
# specify an empty bind address, the binding will be bound to ALL THE #
# IPv6 IP ADDRESSES, and not the IPv4 addresses. If you are using an  #
# IPv6 enabled InspIRCd and want to bind to multiple IPv4 addresses   #
# in this way, you must specify them by hand. If you have built the   #
# server for IPv4 connections only, then specifying an empty bind     #
# address binds the port to all IPv4 IP addresses, as expected.       #
#                                                                     #

<bind address="" port="6000" type="clients">
<bind address="" port="6660-6669" type="clients" ssl="gnutls">

# When linking servers, the openssl and gnutls transports are largely
# link-compatible and can be used alongside each other or either/or
# on each end of the link without any significant issues.

<bind address="" port="7000,7001" type="servers">
<bind address="1.2.3.4" port="7005" type="servers" transport="openssl">


#-#-#-#-#-#-#-#-#-#-  DIE/RESTART CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-
#                                                                     #
#   You can configure the passwords here which you wish to use for    #
#   the die and restart commands. Only trusted IRCop's who will       #
#   need this ability should know the die and restart password.       #
#                                                                     #
#  Syntax is as follows:                                              #
#       <power diepass="die password" restartpass="restart password"  #
#        pause="secs before dying">                                   #
#                                                                     #

<power diepass="" restartpass="" pause="2">


#-#-#-#-#-#-#-#-#-#-  CONNECTIONS CONFIGURATION  -#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   This is where you can configure which connections are allowed     #
#   and denied access onto your server. The password is optional.     #
#   You may have as many of these as you require. To allow/deny all   #
#   connections, use a '*' or 0.0.0.0/0.                              #
#                                                                     #
#  Syntax is as follows:                                              #
#                                                                     #
#       <connect name="myallow" allow="1.2.3.0/24" limit="5"          #
#                password="blahblah" timeout="10" timeout="blah"      #
#                flood="5" threshold="8" pingfreq="120" sendq="99999" #
#                revcq="696969" localmax="3" globalmax="3"            #
#                port="6660" maxchans="50" limit="999">               #
#                                                                     #
#       <connect name="blocked" deny="127.0.0.1" port="6667">         #
#                                                                     #
#       <connect name="something" parent="myallow" pingfreq="60">     #
#                                                                     #
#   IP masks may be specified in CIDR format or wildcard format,      #
#   for IPv4 and IPv6. You *cannot* use hostnames in the allow or     #
#   deny field, as the state is applied before the user's DNS has     #
#   been resolved.                                                    #
#                                                                     #
#   You can optionally name your connect allow/deny tags. If you do   #
#   this, you may reference this connect tag as the parent of another #
#   connect tag with the <connect:parent> option as shown above. If   #
#   you do this, any options not explicitly specified in the tag will #
#   be copied from the parent.                                        #
#                                                                     #
#   If the value maxchans is included, this overrides all other max   #
#   channels related settings, including the separate oper maximum.   #
#   You may set this to any (sane) value you wish and it applies to   #
#   all users within this connect tag.                                #
#                                                                     #
#   You may optionally include timeout="x" on any allow line, which   #
#   specifies the amount of time given before an unknown connection   #
#   is closed if USER/NICK/PASS are not given. This value is in secs. #
#                                                                     #
#   You may optionally limit the number of clients that are matched   #
#   by a single <connect> tag by specifying the maximum in the limit  #
#   parameter. If set to 0, there is no limit, which is the default.  #
#                                                                     #
#   You should also include a flood="x" line which indicates          #
#   the number of lines a user may place into their buffer at once    #
#   before they are disconnected for excess flood. This feature can   #
#   not be disabled, however it can be set to extremely high values,  #
#   rendering it effectively disabled. A recommended value is 10.     #
#   A counter is maintained for each user which is reset every        #
#   'threshold' seconds and specifying this threshold value with      #
#   threshold="X" indicates how often the counter is reset. For       #
#   example, with flood="5" and threshold="8", the user may not send  #
#   more than 5 lines in 8 secs.                                      #
#                                                                     #
#   You may optionally specify the sendq size and ping frequency of   #
#   each connect:allow line using the pingfreq="X" and sendq="X"      #
#   settings as shown in the full example below.                      #
#   The ping frequency is specified in seconds, and the sendq size    #
#   in bytes. It is recommended, although not enforced, that you      #
#   should never set your sendq size to less than 8K. Send Queues are #
#   dynamically allocated and can grow as needed up to the maximum    #
#   size specified.                                                   #
#                                                                     #
#   The optional recvq value is the maximum size which users in this  #
#   group may grow their receive queue to. This is recommended to be  #
#   kept pretty low compared to the sendq, as users will always       #
#   receive more than they send in normal circumstances. The default  #
#   if not specified is 4096.                                         #
#                                                                     #
#   The sendq is the data waiting to be sent TO THE USER.             #
#   The recvq is the data being received FROM THE USER.               #
#   The names sendq and recvq are from the SERVER'S PERSPECTIVE not   #
#   that of the user... Just to clear up any confusion or complaints  #
#   that these are backwards :p                                       #
#                                                                     #
#   The localmax and globalmax values can be used to enforce local    #
#   and global session limits on connections. The session limits are  #
#   counted against all users, but applied only to users within the   #
#   class. For example, if you had a class 'A' which has a session    #
#   limit of 3, and a class 'B' which has a session limit of 5, and   #
#   somehow, two users managed to get into class B which also match   #
#   class A, there is only one connection left for this IP now in A,  #
#   but if they can connect again to B, there are three. You get the  #
#   idea (i hope).                                                    #
#                                                                     #
#   NOTE NOTE NOTE NOTE NOTE NOTE!                                    #
#    The maximum limits by default apply to individual IP addresses   #
#    This *MAY* be changed by modifying the <cidr> block, in order    #
#    to detect cloning across an ISP.                                 #
#                                                                     #
#   The optional port value determines which port the connect tag is  #
#   handling. If left out the connect tag covers all bound ports else #
#   only incoming connections on the specified port will match. Port  #
#   tags may be used on connect allow and connect deny tags.          #
#                                                                     #
#   The limit value determines the maximum number of users which may  #
#   be in this class. Combine this with CIDR masks for various ISP    #
#   subnets to limit the number of users which may connect at any one #
#   time from a certain ISP. Omit this value to not limit the tag.    #
#                                                                     #

<connect allow="196.12.*"  password="secret" port="6667">

<connect allow="*"
         timeout="60"
         flood="20"
         threshold="1"
         pingfreq="120"
         sendq="262144"
         recvq="8192"
         localmax="3"
         globalmax="3"
	 limit="5000">

<connect deny="69.254.*">
<connect deny="3ffe::0/32">

#-#-#-#-#-#-#-#-#-#-#-#-  CIDR CONFIGURATION   -#-#-#-#-#-#-#-#-#-#-#-
#                                                                     #
# CIDR configuration allows detection of clones and applying of       #
# throttle limits across a CIDR range. (A CIDR range is a group of    #
# IPs, for example, the CIDR range 192.168.1.0-192.168.1.255 may be   #
# represented as 192.168.1.0/24). This means that abuse across an ISP #
# is detected and curtailed much easier.                              #
#                                                                     #
# ipv4clone:                                                          #
#  This specifies how many bits of an IP address should be checked    #
#  against cloning in the <connect> tags, for example, if <connect>   #
#  tags specified a limit of 2 (low!), and three users attempted to   #
#  connect in the IP range 192.168.1.0-192.168.1.255, and ipv4clone   #
#  was set to '24', the third connection would be disconnected.       #
#                                                                     #
#  Valid values are 0-32, but you *don't* want 0. Using values which  #
#  are not multiples of 8 can give confusing behaviour.               #
#  For more info, see: http://www.inspircd.org/wiki/CIDR_Tutorial     #
#                                                                     #
# ipv6clone works in the same way, except for ipv6 addresses. Valid   #
# range is 0-128, but you *don't* want anything too small.            #
#                                                                     #
# Setting these to their maximum value (32, 128) will result in       #
# no actual CIDR checking being done, and clone checking will only be #
# done across individual IPs. This is the default behaviour.          #

<cidr
	ipv4clone="32"
	ipv6clone="128">

# This file has all the information about oper classes, types and o:lines.
# You *MUST* edit it.
<include file="opers.conf.example">

# This file has all the information about server links and ulined servers.
# You *MUST* edit it if you intend to link servers.
<include file="links.conf.example">

#-#-#-#-#-#-#-#-#-#-  MISCELLANEOUS CONFIGURATION  -#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   These options let you define the path to your motd and rules      #
#   files. If these are relative paths, they are relative to the      #
#   configuration directory.                                           #
#                                                                     #

<files motd="inspircd.motd.example"
       rules="inspircd.rules.example">

#-#-#-#-#-#-#-#-#-#-#-# MAXIMUM CHANNELS -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# This optional configuration tag lets you define the maximum number  #
# of channels that both opers and users may be on at any one time.    #
# The default is 20 for users and 60 for opers if this tag is not     #
# defined. Remote users are not restricted in any manner.             #
#                                                                     #

<channels users="20"
          opers="60">

#-#-#-#-#-#-#-#-#-#-#-#-#-#-# DNS SERVER -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# Define your DNS server address here. InspIRCd has its own resolver. #
# If you do not define this value, then InspIRCd will attempt to      #
# determine your DNS server from your operating system. On POSIX      #
# platforms, InspIRCd will read /etc/resolv.conf, and populate this   #
# value with the first DNS server address found. On Windows platforms #
# InspIRCd will check the registry, and use the DNS server of the     #
# first active network interface, if one exists.                      #
# If a DNS server cannot be determined from these checks, the default #
# value '127.0.0.1' is used instead. The timeout value is in seconds. #
#                                                                     #
#    ____                _   _____ _     _       ____  _ _   _        #
#   |  _ \ ___  __ _  __| | |_   _| |__ (_)___  | __ )(_) |_| |       #
#   | |_) / _ \/ _` |/ _` |   | | | '_ \| / __| |  _ \| | __| |       #
#   |  _ <  __/ (_| | (_| |   | | | | | | \__ \ | |_) | | |_|_|       #
#   |_| \_\___|\__,_|\__,_|   |_| |_| |_|_|___/ |____/|_|\__(_)       #
#                                                                     #
# When choosing a server, be sure to choose one which will do a       #
# RECURSIVE LOOKUP. InspIRCd's resolver does not currently do these   #
# recursive lookups itself, to save time and resources. The DNS       #
# server recommended by the InspIRCd team is bind, available from the #
# ISC website. If your DNS server does not do a recursive lookup, you #
# will be able to notice this by the fact that none of your users are #
# resolving even though the DNS server appears to be up! Most ISP and #
# hosting provider DNS servers support recursive lookups.             #
#                                                                     #
# ------------------------------------------------------------------- #
#                                                                     #
# NOTE: If you have built InspIRCd with IPv6 support, then both       #
# IPv6 and IPv4 addresses are allowed here, and also in the system    #
# resolv.conf file. Remember that an IPv4 DNS server can still        #
# resolve IPv6 addresses, and vice versa.                             #
#                                                                     #

<dns server="127.0.0.1" timeout="5">

# An example of using an IPv6 nameserver
#<dns server="::1" timeout="5">

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#  PID FILE  -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# Define the path to the PID file here. The PID file can be used to   #
# rehash the ircd from the shell or to terminate the ircd from the    #
# shell using shell scripts, perl scripts, etc... and to monitor the  #
# ircd's state via cron jobs. If this is a relative path, it will be  #
# relative to the configuration directory, and if it is not defined,  #
# the default of 'inspircd.pid' is used.                              #
#                                                                     #

#<pid file="/path/to/inspircd.pid">

#-#-#-#-#-#-#-#-#-#-#-#-#- BANLIST LIMITS #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# Use these tags to customise the ban limits on a per channel basis.  #
# The tags are read from top to bottom, and any tag found which       #
# matches the channels name applies the banlimit to that channel.     #
# It is advisable to put an entry with the channel as '*' at the      #
# bottom of the list. If none are specified or no maxbans tag is      #
# matched, the banlist size defaults to 64 entries.                   #
#                                                                     #

<banlist chan="#morons" limit="128">
<banlist chan="*" limit="69">

#-#-#-#-#-#-#-#-#-#-#-  DISABLED FEATURES  -#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# This tag is optional, and specifies one or more features which are  #
# not available to non-operators.                                     #
#                                                                     #
# For example you may wish to disable NICK and prevent non-opers from #
# changing their nicknames.                                           #
# Note that any disabled commands take effect only after the user has #
# 'registered' (e.g. after the initial USER/NICK/PASS on connection)  #
# so for example disabling NICK will not cripple your network.        #
#                                                                     #
# `fakenonexistant' will make the ircd pretend that nonexistant       #
# commands simply don't exist to non-opers ("no such command").       #
#                                                                     #
#<disabled commands="TOPIC MODE" usermodes="" chanmodes="" fakenonexistant="yes">


#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-  RTFM LINE  -#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   Just remove this... Its here to make you read ALL of the config   #
#   file options ;)                                                   #

<die value="You should probably edit your config *PROPERLY* and try again.">



#-#-#-#-#-#-#-#-#-#-#-#-#-  SERVER OPTIONS   -#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   Settings to define which features are usable on your server.      #
#                                                                     #
#  prefixquit    - A prefix to be placed on the start of a client's   #
#                  quit message                                       #
#                                                                     #
#  suffixquit    - A suffix to be placed on the end of a client's     #
#                  quit message.                                      #
#                                                                     #
#  fixedquit     - A fixed quit message to display for all client     #
#                  QUITS. If specified, overrides both prefixquit     #
#                  and suffixquit options.                            #
#                                                                     #
#  prefixpart    - A prefix to be placed on the start of a client's   #
#                  part message                                       #
#                                                                     #
#  suffixpart    - A suffix to be placed on the end of a client's     #
#                  part message.                                      #
#                                                                     #
#  fixedpart     - A fixed part message to display for all client     #
#                  parts. If specified, overrides both prefixpart     #
#                  and suffixpart options.                            #
#                                                                     #
#  allowhalfop   - Allows the +h channel mode                         #
#                                                                     #
#  noservices    - If noservices is true, yes, or 1, then the first   #
#                  user into a channel gets founder status. This is   #
#                  only useful on networks running the m_chanprotect  #
#                  module without services.                           #
#                                                                     #
#  qprefix       - qprefix is used by the chanprotect module to give  #
#                  a visible prefix to users set +q (founder) in chan #
#                  It should be set to something sensible like ~ or ! #
#                  If not set, no prefix is applied to users with +q  #
#                                                                     #
#  aprefix       - aprefix is the same as qprefix, except it is for   #
#                  giving users with mode +a (protected) a prefix     #
#                                                                     #
#  deprotectself - If this value is set to yes, true, or 1, then any  #
#                  user with +q or +a may remove the +q or +a from    #
#                  themselves. The default setting is to not enable   #
#                  this feature, which stops even the founder taking  #
#                  away their founder status without using services.  #
#                                                                     #
#  deprotectothers-If this value is set to yes, true, or 1, then any  #
#                  user with +q or +a may remove the +q or +a from    #
#                  other users. The default setting is to not enable  #
#                  this feature, so that only +q may remove +a, and   #
#                  nothing but services may remove +q.                #
#                                                                     #
#  cyclehosts    - If this is set to true, yes or 1, then when a      #
#                  user's hostname changes, they will appear to quit  #
#                  and then rejoin with their new host. This prevents #
#                  clients from being confused by host changes,       #
#                  especially in the case of bots, and it is          #
#                  recommended that this option is enabled.           #
#                                                                     #
#  moduledir     - This optional value indicates a runtime change of  #
#                  the location where modules are to be found. This   #
#                  does not add a supplementary directory. There can  #
#                  only be one module path.                           #
#                                                                     #
#  syntaxhints   - If set to yes, true or 1, when a user does not     #
#                  give enough parameters for a command, a syntax     #
#                  hint will be given (using the RPL_TEXT numeric)    #
#                  as well as the standard ERR_NEEDMOREPARAMS.        #
#                                                                     #
#  announcets    - If this value is defined to yes, true, or 1, then  #
#                  a channels' timestamp is updated, the users on     #
#                  the channel will be informed of the change via     #
#                  a server notice to the channel with the old and    #
#                  new TS values in the timestamp. If you think this  #
#                  is just pointless noise, define the value to 0.    #
#                                                                     #
#  ircumsgprefix - Use undernet style message prefix for channel      #
#                  NOTICE and PRIVMSG adding the prefix to the line   #
#                  of text sent out. Eg. NOTICE @#test :@ testing     #
#                  vs. the off setting: NOTICE @#test :testing        #
#                                                                     #
#  hostintopic   - If this is set to yes (the default) then the full  #
#                  nick!user@host is shown for who set a TOPIC last.  #
#                  if set to no, then only the nickname is shown.     #
#                                                                     #
#  serverpingfreq- This value, when set, allows you to change the     #
#                  frequency of server to server PING messages. This  #
#                  can help if you are having certain network issues. #
#                                                                     #
#  pingwarning   - This should be set to a number between 1 and 59 if #
#                  defined, and if it is defined will cause the server#
#                  to send out a warning via snomask +l if a server   #
#                  does not answer to PING after this many seconds.   #
#                  This can be useful for finding servers which are   #
#                  at risk of pinging out due to network issues.      #
#                                                                     #
#  defaultmodes  - The default modes to be given to each channel on   #
#                  creation. Defaults to 'nt'. There should be no +   #
#                  or - symbols in this sequence, if you add them     #
#                  they will be ignored. You may add parameters for   #
#                  modes which take them.                             #
#                                                                     #
#  moronbanner   - The NOTICE to show to users who are glined, zlined #
#                  klined or qlined when they are disconnected. This  #
#                  is totally freeform, you may place any text here   #
#                  you wish.                                          #
#                                                                     #
#  exemptchanops - This option allows channel operators to be exempted#
#                  from certain channel modes.                        #
#                  Supported modes are +SfFgNc. Defaults to off.      #
#                                                                     #
#  invitebypassmodes - This option allows /invite to bypass modes     #
#    other than +i.                                                   #
#                                                                     #
#                                                                     #

<options prefixquit="Quit: "
         suffixquit=""
         prefixpart="\""
         suffixpart="\""
         noservices="no"
         qprefix="~"
         aprefix="&"
         deprotectself="no"
         deprotectothers="no"
         syntaxhints="no"
         cyclehosts="yes"
         ircumsgprefix="no"
         announcets="yes"
         hostintopic="yes"
         pingwarning="15"
         serverpingfreq="60"
         allowhalfop="yes"
         defaultmodes="nt"
         moronbanner="You're banned! Email haha@abuse.com with the ERROR line below for help."
         exemptchanops=""
	 invitebypassmodes="yes">


#-#-#-#-#-#-#-#-#-#-#-# PERFORMANCE CONFIGURATION #-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#  maxwho        - The maximum number of results returned by a /WHO   #
#                  query. This is to prevent /WHO being used as a     #
#                  spam vector or means of flooding an ircd. The      #
#                  default is 128, it is not recommended to raise it  #
#                  above 1024. Values up to 65535 are permitted. If   #
#                  this value is omitted, any size WHO is allowed by  #
#                  anyone.                                            #
#                                                                     #
#  somaxconn     - The maximum number of sockets that may be waiting  #
#                  in the accept queue. This usually allows the ircd  #
#                  to soak up more connections in a shorter space of  #
#                  time when increased but please be aware there is a #
#                  system defined maximum value to this, the same way #
#                  there is a system defined maximum number of file   #
#                  descriptors. Some systems may only allow this to   #
#                  be up to 5 (ugh) while others such as FreeBSD will #
#                  default to a much nicer 128.                       #
#                                                                     #
#  softlimit     - This optional feature allows a defined softlimit.  #
#                  if defined sets a soft maxconnections value, has   #
#                  to be less than the ./configure maxclients         #
#                                                                     #
#  nouserdns     - If set to yes, true or 1, no user DNS lookups      #
#                  will be performed for connecting users. This can   #
#                  save a lot of resources on very busy IRC servers.  #
#                                                                     #
#  quietbursts   - When synching or splitting from the network, a     #
#                  server can generate a lot of connect and quit      #
#                  snotices to the +C and +Q snomasks. Setting this   #
#                  value to yes squelches those messages, which can   #
#                  make them more useful for opers, however it will   #
#                  degrade their use by certain third party programs  #
#                  such as BOPM which rely on them to scan users when #
#                  a split heals in certain configurations.           #
#                                                                     #
#  netbuffersize - Size of the buffer used to receive data from       #
#                  clients. The ircd may only read() this amount      #
#                  of text in one go at any time. (OPTIONAL)          #
#                                                                     #

<performance netbuffersize="10240"
             maxwho="128"
             somaxconn="128"
             softlimit="12800"
             quietbursts="yes"
             nouserdns="no">

#-#-#-#-#-#-#-#-#-#-#-# SECURITY CONFIGURATION  #-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# announceinvites                                                     #
#                - If this option is set, then invites are announced  #
#                  to the channel when a user invites another user.   #
#                  If you consider this to be unnecessary noise,      #
#                  set this to 'none'. To announce to all ops, set    #
#                  this to 'ops' and to announce to all users set the #
#                  value to 'all'.                                    #
#                                                                     #
#                  The value 'dynamic' varies between 'ops' and 'all' #
#                  settings depending on if the channel is +i or not. #
#                  When the channel is +i, messages go only to ops,   #
#                  and when the channel is not +i, messages go to     #
#                  everyone. In short, the messages will go to every  #
#                  user who has power of INVITE on the channel. This  #
#                  is the recommended setting.                        #
#                                                                     #
#  disablehmac   - If you are linking your InspIRCd to older versions #
#                  then you can specify this option and set it to     #
#                  yes. 1.1.6 and above support HMAC and challenge-   #
#                  response for password authentication. These can    #
#                  greatly enhance security of your server to server  #
#                  connections when you are not using SSL (as is the  #
#                  case with a lot of larger networks). Linking to    #
#                  older versions of InspIRCd should not *usually* be #
#                  a problem, but if you have problems with HMAC      #
#                  authentication, this option can be used to turn it #
#                  off.                                               #
#                                                                     #
#  hidemodes     - If this option is enabled, then the listmodes      #
#                  given (e.g. +eI), will be hidden from users below  #
#                  halfop. This is not recommended to be set on mode  #
#                  +b, as it may break some features in popular       #
#                  clients such as mIRC.                              #
#                                                                     #
#  hidesplits    - When set to 'yes', will hide split server names    #
#                  from non-opers. Non-opers will see '*.net *.split' #
#                  instead of the server names in the quit message,   #
#                  identical to the way IRCu displays them.           #
#                                                                     #
#  hidebans      - When set to 'yes', will hide gline, kline, zline   #
#                  and qline quit messages from non-opers. For        #
#                  example, user A who is not an oper will just see   #
#                  (G-Lined) while user B who is an oper will see the #
#                  text (G-Lined: Reason here) instead.               #
#                                                                     #
#  hidewhois     - When defined with a non-empty value, the given     #
#                  text will be used in place of the user's server    #
#                  in WHOIS, when a user is WHOISed by a non-oper.    #
#                  For example, most nets will want to set this to    #
#                  something like '*.netname.net' to conceal the      #
#                  actual server the user is on.                      #
#                                                                     #
#  flatlinks     - When you are using m_spanningtree.so, and this     #
#                  value is set to yes, true or 1, /MAP and /LINKS    #
#                  will be flattened when shown to a non-opers.       #
#                                                                     #
#  hideulines    - When you are using m_spanningtree.so, and this     #
#                  value is set to yes, true or 1, then U-lined       #
#                  servers will be hidden in /LINKS and /MAP for non  #
#                  opers. Please be aware that this will also hide    #
#                  any leaf servers of a U-lined server, e.g. jupes.  #
#                                                                     #
#  userstats     - The userstats field is optional and specifies      #
#                  which stats characters in /STATS may be requested  #
#                  by non-operators. Stats characters in this field   #
#                  are case sensitive and are allowed to users        #
#                  independent of if they are in a module or the core #
#                                                                     #
#  operspywhois  - If this is set then when an IRC operator uses      #
#                  /WHOIS on a user they will see all channels, even  #
#                  ones if channels are secret (+s), private (+p) or  #
#                  if the target user is invisible +i.                #
#                                                                     #
#  customversion - If you specify this configuration item, and it is  #
#                  not set to an empty value, then when a user does   #
#                  a /VERSION command on the ircd, this string will   #
#                  be displayed as the second portion of the output,  #
#                  replacing the system 'uname', compile flags and    #
#                  socket engine/dns engine names. You may use this   #
#                  to enhance security, or simply for vanity.         #
#                                                                     #
#  maxtargets    - The maxtargets field is optional, and if not       #
#                  defined, defaults to 20. It indicates the maximum  #
#                  number of targets which may be given to commands   #
#                  such as PRIVMSG, KICK etc.                         #
#                                                                     #
#  hidekills     - The hidekills value, if set, replaces the source   #
#                  of all oper-generated kills to be the given text   #
#                  to provide anonimity to your opers.                #
#                                                                     #

<security announceinvites="dynamic"
          hidemodes="eI"
          disablehmac="no"
          hideulines="no"
          flatlinks="no"
          hidewhois=""
          hidebans="no"
          hidekills=""
          hidesplits="no"
          maxtargets="20"
          customversion=""
          operspywhois="no"
          userstats="Pu">

#-#-#-#-#-#-#-#-#-#-#-#-# LIMITS CONFIGURATION  #-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# This configuration tag defines the maximum sizes of various types   #
# on IRC, such as the maximum length of a channel name, and the       #
# maximum length of a channel. Note that with the exception of the    #
# identmax value all values given here are the exact values you would #
# expect to see on IRC. This contrasts with the older InspIRCd        #
# releases where these values would be one character shorter than     #
# defined to account for a null terminator on the end of the text.    #
#                                                                     #
# The identmax value has special meaning, as it may grow one          #
# character longer than you specify, to accomodate for a ~ character  #
# when m_ident is loaded.                                             #
#                                                                     #
# These values should match network-wide, otherwise you may end up    #
# with desyncs, and confusing your users by being able to use a nick  #
# of a certain length on one server but not on another. Servers will  #
# link with mismatched values, but this is NOT recommended as a long  #
# term measure!                                                       #
#                                                                     #
# Values here should be self explanitory:                             #
#                                                                     #
# maxnick         - The maximum length of a nickname                  #
# maxchan         - The maximum length of a channel name              #
# maxmodes        - The maximum number of parameterized mode changes  #
#                   per line                                          #
# maxident        - The maximum length of an ident/username value     #
# maxquit         - The maximum length of a quit message              #
# maxtopic        - The maximum length of a channel topic             #
# maxkick         - The maximum length of a kick message              #
# maxgecos        - The maximum length of a GECOS (real name)         #
# maxaway         - The maximum length of an away message             #
#                                                                     #

<limits maxnick="31"
        maxchan="64"
        maxmodes="20"
        maxident="11"
        maxquit="255"
        maxtopic="307"
        maxkick="255"
        maxgecos="128"
        maxaway="200">


#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
# Logging
# -------
#
# Logging is covered with the <log> tag, which you may use to change
# the behaviour of the logging of the IRCd.
#
# In InspIRCd as of 1.2, logging is pluggable and very extensible.
# Different files can log the same thing, different 'types' of log can
# go to different places, and modules can even extend the log tag
# to do what they want.
#
# An example log tag would be:
#	<log method="file" type="OPER" level="default" target="opers.log">
# which  would log all information on /oper (failed and successful) to
# a file called opers.log.
#
# There are many different types which may be used, and modules may
# generate their own. A list of useful types:
#	- USERS - information relating to user connection and disconnection
#	- CHANNELS - information relating to joining and parting of channels.
# XXX someone doc more on this
#
# You may also log *everything* by using a type of *, and subtract things out
# of that by using -TYPE - for example "* -USERINPUT -USEROUTPUT".
#
# The following log tag is highly default and uncustomised. It is recommended you
# sort out your own log tags. This is just here so you get some output.
<log method="file" type="* -USERINPUT -USEROUTPUT -m_spanningtree" level="default" target="ircd.log">

#-#-#-#-#-#-#-#-#-#-#-#-#-  WHOWAS OPTIONS   -#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# This tag lets you define the behaviour of the /whowas command of    #
# your server.                                                        #
#                                                                     #
# groupsize      - Controls the maximum entries per nick shown when   #
#                  performing a /whowas nick. Setting this to 0 dis-  #
#                  ables whowas completely.                           #
#                                                                     #
# maxgroups      - The maximum number of nickgroups that can be added #
#                  to the list. If max is reached, oldest group will  #
#                  be deleted first like a FIFO. A groupsize of 3 and #
#                  a maxgroups of 5000 will allow for 5000 nicks to   #
#                  be stored with a history of 3, thus giving a total #
#                  of 3 * 5000 = 15000 entries. A setting of 0 dis-   #
#                  ables whowas completely.                           #
#                                                                     #
# maxkeep        - The maximum time a nick is kept in the whowas list #
#                  before being pruned. Time may be specified in      #
#                  seconds, or in the following format: 1y2w3d4h5m6s  #
#                  meaning one year, two weeks, three days, 4 hours,  #
#                  5 minutes and 6 seconds. All fields in this format #
#                  are optional. Minimum is 1 hour, if less InspIRCd  #
#                  will default back to 1 hour.                       #
#                                                                     #
#<whowas groupsize="10"                                               #
#        maxgroups="100000"                                           #
#        maxkeep="3d">                                                #

#-#-#-#-#-#-#-#-#-#-#-#-#-#-  BAN OPTIONS  -#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# The ban tags define nick masks, host masks and ip ranges which are  #
# banned from your server. All details in these tags are local to     #
# Your server.                                                        #
#                                                                     #
#                                                                     #
# badip lines ban an ip range (same as a zline)                       #
#                                                                     #
# ipmask       -          The ip range to ban (wildcards possible)    #
#                         CIDR is supported in the IP mask.           #
# reason       -          Reason to display when disconnected         #
#                                                                     #
# badnick lines ban a nick mask (same as a qline)                     #
#                                                                     #
# nick         -          Nick mask to ban (wildcards possible)       #
# reason       -          Reason to display on /NICK                  #
#                                                                     #
# badhost lines ban a user@host mask (same as a kline)                #
#                                                                     #
# host         -          ident@hostname (wildcards possible)         #
#                         If you specify an IP, CIDR is supported.    #
# reason       -          Reason to display on disconnection          #
#                                                                     #
# exception lines define a hostmask that is excempt from [kzg]lines   #
#                                                                     #
# host         -          ident@hostname (wildcards possible)         #
#                         If you specify an IP, CIDR is supported.    #
# reason       -          Reason, shown only in /stats e              #
#                                                                     #

<badip ipmask="69.69.69.69" reason="No porn here thanks.">

<badnick nick="ChanServ" reason="Reserved For Services">
<badnick nick="NickServ" reason="Reserved For Services">
<badnick nick="OperServ" reason="Reserved For Services">
<badnick nick="MemoServ" reason="Reserved For Services">

<badhost host="*@hundredz.n.hundredz.o.1337.kiddies.com" reason="Too many 1337 kiddiots">
<badhost host="*@localhost" reason="No irc from localhost!">
<badhost host="*@172.32.0.0/16" reason="This subnet is bad.">

<exception host="*@ircop.host.com" reason="Opers hostname">

#-#-#-#-#-#-#-#-#-#-#- INSANE BAN OPTIONS  -#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
# This optional tag allows you to specify how wide a gline, eline,    #
# kline, zline or qline can be before it is forbidden from being      #
# set. By setting hostmasks="yes", you can allow all G, K, E lines,   #
# no matter how many users the ban would cover. This is not           #
# recommended! By setting ipmasks="yes", you can allow all Z lines,   #
# no matter how many users these cover too. Needless to say we        #
# don't recommend you do this, or, set nickmasks="yes", which will    #
# allow any qline.                                                    #
#                                                                     #
# The trigger value indicates how wide any mask will be before it is  #
# prevented from being set. The default value is 95.5% if this tag is #
# not defined in your configuration file, meaning that if your        #
# network has 1000 users, a gline matching over 955 of them will be   #
# prevented from being added.                                         #
#                                                                     #
# Please note that remote servers (and services) are exempt from      #
# these restrictions and expected to enforce their own policies       #
# locally!                                                            #
#                                                                     #

<insane hostmasks="no" ipmasks="no" nickmasks="no" trigger="95.5">


#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- YAWN  -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#                                                                     #
#   You should already know what to do here :)                        #

<die value="User error. Insert new user and press any key. (you didn't edit your config properly.)">

#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-# MODULES #-#-#-#-#-#-#-#-#-#-#-#-#-#-#
#    ____                _   _____ _     _       ____  _ _   _        #
#   |  _ \ ___  __ _  __| | |_   _| |__ (_)___  | __ )(_) |_| |       #
#   | |_) / _ \/ _` |/ _` |   | | | '_ \| / __| |  _ \| | __| |       #
#   |  _ <  __/ (_| | (_| |   | | | | | | \__ \ | |_) | | |_|_|       #
#   |_| \_\___|\__,_|\__,_|   |_| |_| |_|_|___/ |____/|_|\__(_)       #
#                                                                     #
# Well done, you've reached the end of the basic configuration, your  #
# ircd should now start if you want to try it out! (./inspircd start) #                      
#                                                                     #
# We now suggest you read and edit modules.conf, as modules are what  #
# provide almost all the features of InspIRCd. :)                     #
#                                                                     #
# The default does nothing -- we include it for simplicity for you.   #
<include file="modules.conf">


#########################################################################
#                                                                       #
#                     - InspIRCd Development Team -                     #
#                        http://www.inspircd.org                        #
#                                                                       #
#########################################################################