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
|
/****** Hey, emacs! This is a -*- C -*- file ****************************
* IRC - Internet Relay Chat, include/config.h
* Copyright (C) 1990 Jarkko Oikarinen
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 1, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* PLEASE READ SECTION:
*
* I have commented out WHOIS_NOTICE and STATS_NOTICE
* Personally, I feel opers do not need to know the information
* returned by having those two defines defined, it is an invasion
* of privacy. The original need/use of showing STATS_NOTICE
* it seems to me, was to find stats flooders. They no longer
* can do much damage with stats flooding, so why show it?
* whois notice is just an invasion of privacy. Who cares?
* I personally hope you agree with me, and leave these undef'ed
* but at least you have been warned.
*
*/
/* Challenge/Response patch v1
*
* Challenge & Response makes the server link authentication use an
* md5 based hash to securly auhtenticate with the remote server.
*
* The C/N lines passwords are used to generate the hashes used and it
* is adviceable to use a diffrent pass for C and N.
*
* To accept PASS (although never send it) define CHALLENGERESPONSE_FALLBACK
*
*/
#define CHALLENGERESPONSE
#define CHALLENGERESPONSE_FALLBACK
#if defined(__CYGWIN__)
#undef HARD_FDLIMIT_
#define HARD_FDLIMIT_ 25
#undef INIT_MAXCLIENTS
#define INIT_MAXCLIENTS 20
#undef MAX_BUFFER
#define MAX_BUFFER 10
#endif /* __CYGWIN__ */
/* NICKNAMEHISTORYLENGTH - size of WHOWAS array
* this defines the length of the nickname history. each time a user changes
* nickname or signs off, their old nickname is added to the top of the list.
* NOTE: this is directly related to the amount of memory ircd will use whilst
* resident and running - it hardly ever gets swapped to disk! Memory
* will be preallocated for the entire whowas array when ircd is started.
* You will want to crank this down if you are on a small net.
*/
#define NICKNAMEHISTORYLENGTH 15000
/* Don't change this... */
#define HARD_FDLIMIT (HARD_FDLIMIT_ - 10)
#define MASTER_MAX (HARD_FDLIMIT - MAX_BUFFER)
/*******************************************************************/
/* HIDE_OPS
* Define this to prevent non chanops from seeing what ops a channel has
* NOT ADEQUATELY TESTED YET, DON'T USE ON PRODUCTION NETWORK --Rodder
*/
/* #undef HIDE_OPS */
/* SERVERHIDE
* Define this to prevent users from seeing what server a user is on.
* It also hide IP address in STATS commands and various notices, disables
* TRACE and LTRACE, and prevents hunting by nickname for nonopers.
* NOT ADEQUATELY TESTED YET, DON'T USE ON PRODUCTION NETWORK --Rodder
*/
#define SERVERHIDE
#define HIDE_SERVER_IPS
/* HIDE_SERVERS_IPS
* Define this to prevent opers from seeing the IP of a server.
* This will not show IPs of any server to anyone, to protect hidden
* hubs from untrustable opers.
*/
#define HIDE_SERVERS_IPS
/* HIDE_ERROR_MESSAGES
* ERROR messages coming from servers can sometimes have IPs in them.
* This will not show any error messages that are received, a
* consequence being you may not see squit reasons..
*/
#define HIDE_ERROR_MESSAGES
/* OPERHIDE
* Define this to prevent non-operators from seeing that somebody is
* oper'ed in /whois and /who.
*/
#define OPERHIDE
/* NETWORK_NAME
* Displayed in place of the servername when SERVERHIDE is enabled
*/
#define NETWORK_NAME "irc.freenode.net"
/* NETWORK_REALNAME
* Displayed in RPL_WELCOME (at least). Don't put punctuation in here.
*/
#define NETWORK_REALNAME "freenode IRC"
/* NETWORK_DESC
* Displayed in place of the server info when SERVERHIDE is enabled
*/
#define NETWORK_DESC "http://freenode.net/"
/* USE_SERVICES
* Defines whether or not you're using services on your network
*/
#define USE_SERVICES
#ifdef USE_SERVICES
/* SERVICES_NAME and ????SERV
* names for your services pseudo-users
*/
#define CHANSERV "ChanServ"
#define NICKSERV "NickServ"
#define MEMOSERV "MemoServ"
#define OPERSERV "OperServ"
#define STATSERV "StatServ"
#define HELPSERV "HelpServ"
#define SEENSERV "SeenServ"
#define GLOBALNOTICE "GlobalNotice"
#endif
/* TS_MAX_DELTA and TS_WARN_DELTA - allowed delta for TS when another
* server connects.
*
* If the difference between my clock and the other server's clock is
* greater than TS_MAX_DELTA, I send out a warning and drop the links.
*
* If the difference is less than TS_MAX_DELTA, I just sends out a warning
* but don't drop the link.
*
* TS_MAX_DELTA currently set to 30 minutes to deal with older timedelta
* implementation. Once pre-hybrid5.2 servers are eradicated, we can drop
* this down to 90 seconds or so. --Rodder
*/
#define TS_MAX_DELTA 10 /* seconds */
#define TS_WARN_DELTA 2 /* seconds */
/* FNAME_USERLOG and FNAME_OPERLOG - logs of local USERS and OPERS
* Define this filename to maintain a list of persons who log
* into this server. Logging will stop when the file does not exist.
* Logging will be disable also if you do not define this.
* FNAME_USERLOG just logs user connections, FNAME_OPERLOG logs every
* successful use of /oper. These are either full paths or files within DPATH.
*
* These need to be defined if you want to use SYSLOG logging, too.
*/
#define FNAME_USERLOG "log/user.log"
#define FNAME_OPERLOG "log/oper.log"
/* SAVE_MAXCLIENT - store the max local and global client connections
* into the file specified by MXPATH at the interval specified by
* SAVE_TIME
*/
#define SAVE_MAXCLIENT
#ifdef SAVE_MAXCLIENT
# define SAVE_TIME 3600
#endif
/* RFC1035_ANAL
* Defining this causes ircd to reject hostnames with non-compliant chars.
* undef'ing it will allow hostnames with _ or / to connect
*/
#define RFC1035_ANAL
/* EIGHTBIT_CHANNEL
*
* Defining this will permit characters with the eighth bit set to be
* used in channel names. This may be desirable if you want to code
* non-ascii characters, or undesirable if you don't want there to be
* channels whose names you cannot interpret.
*/
#undef EIGHTBIT_CHANNEL
/* STRIP_MISC
*
* Defining this will cause topics, quit messages, part messages, and
* similar to be colour stripped. If it is undefined, they will be
* passed through unchanged.
*/
#define STRIP_MISC
/* ALLOW_DOT_IN_IDENT
* Defining this will allow periods in ident replies. Use of this is
* strongly discouraged on public networks
*/
#undef ALLOW_DOT_IN_IDENT
/* SANE_CASE_CONVERSION
* This causes {, }, |, and ~ to be considered different characters to [, ], \, and ^
*/
#define SANE_CASE_CONVERSION
/* INVEX
* Defining this will allow you to use the invite extention capab.
* This extension allows you to maintain a list of hostmasks which don't
* require an invite for +i channels.
*/
#define INVEX
/* MAX_MULTI_MESSAGES
* Maximum number of recipients to a PRIVMSG. Any more than MAX_MULTI_MESSAGES
* will not be sent. If MAX_MULTI_MESSAGES is 1, then any PRIVMSG with a ',' in
* the target will be rejected
*/
#define MAX_MULTI_MESSAGES 1
/* NO_DUPE_MULTI_MESSAGES
* Define this to check for duplicate recipients in PRIVMSG, at the expense
* of noticeable CPU cycles.
*/
#define NO_DUPE_MULTI_MESSAGES
/* WARN_NO_NLINE
* Define this if you want ops to get noticed about "things" trying to
* connect as servers that don't have N: lines. Twits with misconfigured
* servers can get really annoying with this enabled.
*/
#define WARN_NO_NLINE
/* TIDY_PART
* This surrounds all user-provided part messages with [ and ], and strips
* all colours
*/
#define TIDY_PART
/* MAX_PART_LENGTH
* This is the maximum length of a PART reason
*/
#define MAX_PART_LENGTH 128
/* TIDY_QUIT
* This surrounds all user-provided quit messages with [ and ], and strips
* all colours
*/
#define TIDY_QUIT
/* MAX_QUIT_LENGTH
* This is the maximum length of a QUIT reason
*/
#define MAX_QUIT_LENGTH MAX_PART_LENGTH
/* CUSTOM_ERR - colorful notice/error/messages
* Defining this will use custom notice/error/messages from
* src/messages.tab instead of stock ones in src/messages_cust.tab
* If you prefer the "colorful" messages that Hybrid was known for,
* or if you wish to customize the messages, define this.
* Otherwise leave it undef'd for plain ole boring messages.
*/
#define CUSTOM_ERR
/* FAILED_OPER_NOTICE - send a notice to all opers when someone
* tries to /oper and uses an incorrect password.
*/
#define FAILED_OPER_NOTICE
/* SHOW_FAILED_OPER_ID - if FAILED_OPER_NOTICE is defined, also notify when
* a client fails to oper because of a identity mismatch (wrong host or nick)
*/
#define SHOW_FAILED_OPER_ID
/* SHOW_FAILED_OPER_PASSWD - if FAILED_OPER_NOTICE is defined, also show the
* attempted passwd
*/
#undef SHOW_FAILED_OPER_PASSWD
/* CLIENT_SERVER - Don't be so fascist about idle clients ;)
* changes behaviour of HTM code to make clients lag less.
*/
#define CLIENT_SERVER
/* BAN_INFO - Shows you who and when someone did a ban
*/
#define BAN_INFO
/* USE_UH - include user@host for BAN_INFO
* define this if you want to use n!u@h for BAN_INFO
*/
#define USE_UH
/* TOPIC_INFO - Shows you who and when someone set the topic
*/
#define TOPIC_INFO
/* ANTI_NICK_FLOOD - prevents nick flooding
* define if you want to block local clients from nickflooding
*/
#define ANTI_NICK_FLOOD
/* defaults allow 5 nick changes in 20 seconds */
#define MAX_NICK_TIME 20
#define MAX_NICK_CHANGES 2
/* DO_IDENTD - check identd
* if you undefine this, ircd will never check identd regardless of
* @'s in I:lines. You must still use @'s in your I: lines to get
* ircd to do ident lookup even if you define this.
*/
#define DO_IDENTD
/* KLINE_WITH_REASON - show comment to client on exit
* define this if you want users to exit with the kline/dline reason
* (i.e. instead of "You have been K-lined" they will see the reason
* and to see the kline/dline reason when they try to connect
* It's a neat feature except for one thing... If you use a TCM
* and it shows the nick of the oper doing the kline (as it does by default)
* Your opers can be hit with retaliation... Or if your opers use
* scripts that stick an ID into the comment field. etc. It's up to you
* whether you want to use it or not.
*/
#define KLINE_WITH_REASON
/*
* If KLINE_WITH_CONNECTION_CLOSED is defined and KLINE_WITH_REASON
* above is undefined then the signoff reason will be "Connection
* closed". This prevents other users seeing the client disconnect
* from harassing the IRCops.
* However, the client will still see the real reason upon connect attempts.
*/
#undef KLINE_WITH_CONNECTION_CLOSED
/* BOTCHECK - rudimentary bot checking
*/
#define BOTCHECK
/* x_LINES_OPER_ONLY - Allow only local opers to see these stats
*
* Any one with an F line can almost always get on the server, as
* some file descriptors are reserved for people with this F line
* especially useful for your opers
*
* Note that B, E, and F lines are no longer explicit lines in the
* ircd.conf file, but rather flags in the I line. The
* B/E/F_LINES_OPER_ONLY defines block non-opers from seeing I: lines
* with those flags
*
* P_LINES_OPER_ONLY blocks STATS P (Capital P, NOT lower case p) from
* non-opers, denying them permission to see configured ports
*
* U_LINES_OPER_ONLY only applies to STATS U (capital U, not lowercase).
* U-lines are used to share K/D-lines between servers.
*/
#define B_LINES_OPER_ONLY
#define E_LINES_OPER_ONLY
#define F_LINES_OPER_ONLY
#define I_LINES_OPER_ONLY
#define K_LINES_OPER_ONLY
#define O_LINES_OPER_ONLY
#define P_LINES_OPER_ONLY
/* SPOOF_FREEFORM
* Allow custom spoofed I lines.
*/
#define SPOOF_FREEFORM
/* SPOOF_NOTICE - See a notice when a user connects with a
* spoofed I: line
*/
#define SPOOF_NOTICE
/* STATS_NOTICE - See a notice when a user does a /stats
*
* This is left on by default.
* Members of the development team were split on supporting the
* default here.
*/
#undef STATS_NOTICE
/* STATS_P_NOTICE - See STATS p requests only, when STATS_NOTICE
* is undefined. This allows opers to see requests by users for
* assistance, while not violating their privacy by spying on other
* STATS requests.
*/
#undef STATS_P_NOTICE
/* WHOIS_NOTICE - Shows a notice to an oper when a user does a
* /whois on them
* Why do opers need this at all? Its an invasion of privacy. bah.
* you don't need this. -Dianora
*/
#undef WHOIS_NOTICE
/* CHANNEL_CREATION_NOTICE - Shows a notice when someone creates
* a new channel
*/
#define CHANNEL_CREATION_NOTICE
/* WHOIS_WAIT - minimum seconds between remote use of WHOIS before
* max use count is reset
*/
#define WHOIS_WAIT 1
/* PACE_WAIT - minimum seconds between use of MOTD, INFO, HELP, LINKS, TRACE
* -Dianora
*/
#define PACE_WAIT 3
/* KNOCK_DELAY 5 minutes per each KNOCK should be enough
*/
#define KNOCK_DELAY 300
/* If you are an admin that does not think operwall/wallops
* should be used instead of a channel, define this.
*/
/* #define PACE_WALLOPS
#define WALLOPS_WAIT 5 */
/* SHORT_MOTD
* There are client ignoring the FORCE_MOTD MOTD numeric, there is
* no point forcing MOTD on connecting clients IMO. Give them a short
* NOTICE telling them they should read the motd, and leave it at that.
*/
#undef SHORT_MOTD
/* NO_OPER_FLOOD - disable flood control for opers
* define this to remove flood control for opers
*/
#define NO_OPER_FLOOD
/* TRUE_NO_OPER_FLOOD - absolutely remove all flood
* control for opered clients. for this to work, the above define
* must be enabled as well. typically we delay oper floods after
* an initial burst, this removes such a delay. BE CAREFUL WITH
* THIS.
*/
#undef TRUE_NO_OPER_FLOOD
/* SHOW_INVISIBLE_LUSERS - show invisible clients in LUSERS
* As defined this will show the correct invisible count for anyone who does
* LUSERS on your server. On a large net this doesnt mean much, but on a
* small net it might be an advantage to undefine it.
*/
#define SHOW_INVISIBLE_LUSERS
/* ZIP_LINKS - Compress server-to-server links
* Use c: lines in the conf to specify a zipped connection.
*
* Note that you may have to increase your sendQ size between server
* if you have problems during particularly heavy bursts
*/
#ifdef HAVE_LIBZ
#define ZIP_LINKS
#endif
/* NO_DEFAULT_INVISIBLE - clients not +i by default
* When defined, your users will not automatically be attributed with user
* mode "i" (i == invisible). Invisibility means people dont showup in
* WHO or NAMES unless they are on the same channel as you.
*/
#undef NO_DEFAULT_INVISIBLE
/* DEFAULT_WALLOP - clients +w by default
*/
#define DEFAULT_WALLOP
/*
* The compression level used for zipped links. (Suggested values: 1 to 5)
* Above 4 will only give a rather marginal increase in compression for a
* large increase in CPU usage.
*/
#define ZIP_LEVEL 4
/* MAXIMUM LINKS - max links for class 0 if no Y: line configured
*
* This value is only used if you don't have server classes defined, and
* a server is in class 0 (the default class if none is set).
*
* The Hybrid team STRONGLY recommends configuring proper Y: lines
*
*/
#define MAXIMUM_LINKS 1
/* HUB - enable server-server routing
* If your server is running as a a HUB Server then define this.
* A HUB Server has many servers connect to it at the same as opposed
* to a leaf which just has 1 server (typically the uplink). Define this
* correctly for performance reasons.
*/
#define HUB
/* CMDLINE_CONFIG - allow conf-file to be specified on command line
* NOTE: defining CMDLINE_CONFIG and installing ircd SUID or SGID is a MAJOR
* security problem - they can use the "-f" option to read any files
* that the 'new' access lets them.
*/
#define CMDLINE_CONFIG
/* INIT_LOG_LEVEL - what level of information is logged to ircd.log
* options are:
* L_CRIT, L_ERROR, L_WARN, L_NOTICE, L_TRACE, L_INFO, L_DEBUG
*/
#define INIT_LOG_LEVEL L_NOTICE
/* USE_LOGFILE - log errors and such to LPATH
* If you wish to have the server send 'vital' messages about server
* to a logfile, define USE_LOGFILE.
*/
#define USE_LOGFILE
/* USE_SYSLOG - log errors and such to syslog()
* If you wish to have the server send 'vital' messages about server
* through syslog, define USE_SYSLOG. Only system errors and events critical
* to the server are logged although if this is defined with FNAME_USERLOG,
* syslog() is used instead of the above file. It is not recommended that
* this option is used unless you tell the system administrator beforehand
* and obtain their permission to send messages to the system log files.
*/
#undef USE_SYSLOG
#ifdef USE_SYSLOG
/* SYSLOG_KILL SYSLOG_SQUIT SYSLOG_CONNECT SYSLOG_USERS SYSLOG_OPER
* If you use syslog above, you may want to turn some (none) of the
* spurious log messages for KILL,SQUIT,etc off.
*/
#undef SYSLOG_KILL /* log all operator kills to syslog */
#undef SYSLOG_SQUIT /* log all remote squits for all servers to syslog */
#undef SYSLOG_CONNECT /* log remote connect messages for other all servs */
#undef SYSLOG_USERS /* send userlog stuff to syslog */
#undef SYSLOG_OPER /* log all users who successfully become an Op */
#undef SYSLOG_BLOCK_ALLOCATOR /* debug block allocator */
/* LOG_FACILITY - facility to use for syslog()
* Define the facility you want to use for syslog(). Ask your
* sysadmin which one you should use.
*/
#define LOG_FACILITY LOG_LOCAL4
#endif /* USE_SYSLOG */
/* CRYPT_OPER_PASSWORD - use crypted oper passwords in the ircd.conf
* define this if you want to use crypted passwords for operators in your
* ircd.conf file.
*/
#define CRYPT_OPER_PASSWORD
/* CRYPT_LINK_PASSWORD - use crypted N-line passwords in the ircd.conf
* If you want to store encrypted passwords in N-lines for server links,
* define this. For a C/N pair in your ircd.conf file, the password
* need not be the same for both, as long as the opposite end has the
* right password in the opposite line.
*/
#define CRYPT_LINK_PASSWORD
/* CRYPT_I_PASSWORD - use crypted I-line passwords in the ircd.conf
* define this if you want to use crypted passwords for connecting users
* in your ircd.conf file.
*/
#define CRYPT_I_PASSWORD
/* IDLE_FROM_MSG - Idle-time reset only from privmsg
* Idle-time reset only from privmsg, if undefined idle-time
* is reset from everything except ping/pong.
*
*/
#define IDLE_FROM_MSG
/* MAXSENDQLENGTH - Max amount of internal send buffering
* Max amount of internal send buffering when socket is stuck (bytes)
*/
#define MAXSENDQLENGTH 9000000 /* Recommended value: 9000000 for EFnet */
/* BUFFERPOOL - the maximum size of the total of all sendq's.
* Recommended value is 4 times MAXSENDQLENGTH.
*/
#define BUFFERPOOL (MAXSENDQLENGTH * 4)
/* IRC_UID IRC_GID - user and group id ircd should switch to if run as root
* If you start the server as root but wish to have it run as another user,
* define IRC_UID to that UID. This should only be defined if you are running
* as root and even then perhaps not.
*/
#undef IRC_UID
#undef IRC_GID
/* CLIENT_FLOOD - client excess flood threshold
* this controls the number of bytes the server will allow a client to
* send to the server without processing before disconnecting the client for
* flooding it. Values greater than 8000 make no difference to the server.
*/
#define CLIENT_FLOOD 1500 /* was 2560 */
/* NOISY_HTM - should HTM be noisy by default
* should be YES or NO
*/
#define NOISY_HTM YES
/*
* LITTLE_I_LINE support
* clients with a little i instead of an I in their I line
* can be chanopped, but cannot chanop anyone else.
*/
#define LITTLE_I_LINES
/*
* define either NO_CHANOPS_ON_SPLIT or NO_JOIN_ON_SPLIT
*
* choose =one= only or undef on small networks
*
*/
/* NO_CHANOPS_ON_SPLIT
*
* When this is defined, users will not be chanopped on empty channels
* if there are no servers presently connected to this server
* opers are not affected.
*/
#define NO_CHANOPS_ON_SPLIT
/* NO_JOIN_ON_SPLIT
*
* When this is defined, users will not be allowed to join channels
* while the server is split.
*/
#undef NO_JOIN_ON_SPLIT
/*
* SPLIT_SMALLNET_SIZE defines what constitutes a split from
* the net. for a leaf, 2 is fine. If the number of servers seen
* on the net gets less than 2, a split is deemed to have happened.
*/
#define SPLIT_SMALLNET_SIZE 10
/*
* SPLIT_SMALLNET_USER_SIZE defines how many global users on the
* net constitute a "normal" net size. It's used in conjunction
* with SPLIT_SMALLNET_SIZE to help determine the end of a split.
* if number of server seen on net > SPLIT_SMALLNET_SIZE &&
* number of users seen on net > SPLIT_SMALLNET_USER_SIZE start
* counting down the SERVER_SPLIT_RECOVERY_TIME
*/
#define SPLIT_SMALLNET_USER_SIZE 500 /* was 10000 */
/*
* SPLIT_PONG will send a PING to a server after the connect burst.
* It will stay in "split" mode until it receives a PONG in addition
* to meeting the other conditions. This is very useful for true
* leafs, less useful for "clustered" servers. If this is enabled,
* you should be able to crank DEFAULT_SERVER_SPLIT_RECOVERY_TIME
* down to 1.
*/
#define SPLIT_PONG
/*
* DEFAULT_SERVER_SPLIT_RECOVERY_TIME - determines how long to delay split
* status after resyncing
*/
#define DEFAULT_SERVER_SPLIT_RECOVERY_TIME 1
/* LIMIT_UH
* If this is defined, Y line limit is made against the actual
* username not the ip. i.e. if you limit the connect frequency line
* to 1, that allows only 1 username to connect instead of 1 client per ip
* i.e. you can have 10 clients all with different usernames, but each user
* can only connect once. Each non-idented client counts as the same user
* i.e. ~a and ~b result in a count of two.
*/
#undef LIMIT_UH
/* SEND_FAKE_KILL_TO_CLIENT - make the client think it's being /KILL'ed
*
* This was originally intended to prevent clients from reconnecting to the
* server after being dropped for idleness. It can probably be used for
* other events too.
*
* This really only works if the
* client was compiled with QUIT_ON_OPERATOR_KILL which was mandatory policy
* on UMich.Edu hosts.
*/
#define SEND_FAKE_KILL_TO_CLIENT
/*
* Limited Trace - Reports only link and oper traces even when O:line is
* active.
*
* Displays only Oper, Serv, Link, and Class reports even if the O-line is
* active. Useful for just showing pertinent info of a specific server.
* Note however that if the target server is not running this option then
* you will still receive a normal trace output.
*/
#undef LTRACE
/*
* Define this to enable WintrHawk "styling"
* Currently this shows the actual quit message on the Client exiting
* notice, rather than the error or "Client Quit"
*/
#define WINTRHAWK
/*
* comstud and I have both noted that solaris 2.5 at least, takes a hissy
* fit if you don't read a fd that becomes ready right away. Unfortunately
* the dog3 priority code relies upon not having to read a ready fd right away.
* If you have HTM mode set low as it is normally, the server will
* eventually grind to a halt.
* Don't complain if Solaris lags if you don't define this. I warned you.
*
* -Dianora
*/
#undef NO_PRIORITY
/*
* NCTCP - a usermode to block CTCP messages
*/
#define NCTCP
/*
* SILENCE - ?
*/
#define SILENCE
/*
* If this is defined operse sending notices to range of addresses will
* be forced to specify at least the TLD
*/
#undef NEED_TLD_FOR_MASS_NOTICE
/*
* Allow +c channel mode to block messages containing colour codes
*/
#define NOCOLOUR_MODE
/*
* Include the code and data to calculate TSDELTA on request
*/
#define TSDELTA
/*
* How long to keep UNKLINEs in the anti-split cache for? (default: 24 hours)
*/
#define UNKLINE_CACHE_TIME (3600 * 24)
/*
* Do a regular match()-based search on STATS K, not a complex domain lookup thing
*/
#define RAW_MATCH_STATS_K
/*
* MIN_USERS_FOR_LIST is the minimum number of users that need to be in a channel before
* it will show up in /list
*/
#define MIN_USERS_FOR_LIST 4
/* USE_KNOCK
* KNOCK allows users to send a "knock" to a +i channel.
*/
#define USE_KNOCK
/* SPOOF_LIMIT_HOST
* Sets the hostname which can be spoofed to by users without UMODE_FREESPOOF
*/
#define SPOOF_LIMIT_HOST "cloaked.fn"
/* NICK_ILINES
* Define this to make the 4th field of an I:line nick@host instead of user@host
*/
#define NICK_ILINES
/* MAX_IDLE_DESYNC
* This defines the maximum base discrepency between idle times different servers
* have stored, not counting that added by server-server latency, in seconds.
* Higher values can give larger desyncs, lower values cause more network traffic.
* 120 seems like a sensible place to start.
*/
#define MAX_IDLE_DESYNC 120
/* EXPIRED_KLINE_DELAY
* Length of time, in seconds, to keep expired K:lines
* 24 hours
*/
#define EXPIRED_KLINE_DELAY (3600 * 24)
/* STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP STOP */
/* You shouldn't change anything below this line, unless absolutely needed. */
/* INITIAL_DBUFS - how many dbufs to preallocate
*/
#define INITIAL_DBUFS 4000 /* preallocate 16 megs of dbufs */
/* MAXBUFFERS - increase socket buffers
*
* Increase send & receive socket buffer up to 64k,
* keeps clients at 8K and only raises servers to 64K
*/
#define MAXBUFFERS
/* PORTNUM - default port that ircd uses to connect to remote servers, if
* a port is not specified in the M: line.
*/
#define PORTNUM 9000
/* MAXCONNECTIONS - don't touch - change the HARD_FDLIMIT_ instead
* Maximum number of network connections your server will allow. This should
* never exceed max. number of open file descriptors and wont increase this.
*/
/* change the HARD_FDLIMIT_ instead */
#define MAXCONNECTIONS HARD_FDLIMIT
/* TIMESEC - Time interval to wait and if no messages have been received,
* then check for PINGFREQUENCY and CONNECTFREQUENCY
*/
#define TIMESEC 5 /* Recommended value: 5 */
/* PINGFREQUENCY - ping frequency for idle connections
* If daemon doesn't receive anything from any of its links within
* PINGFREQUENCY seconds, then the server will attempt to check for
* an active link with a PING message. If no reply is received within
* (PINGFREQUENCY * 2) seconds, then the connection will be closed.
*/
#define PINGFREQUENCY 120 /* Recommended value: 120 */
/* CONNECTFREQUENCY - time to wait before auto-reconencting
* If the connection to to uphost is down, then attempt to reconnect every
* CONNECTFREQUENCY seconds.
*/
#define CONNECTFREQUENCY 60 /* Recommended value: 600 */
/* HANGONGOODLINK and HANGONGOODLINK
* Often net breaks for a short time and it's useful to try to
* establishing the same connection again faster than CONNECTFREQUENCY
* would allow. But, to keep trying on bad connection, we require
* that connection has been open for certain minimum time
* (HANGONGOODLINK) and we give the net few seconds to steady
* (HANGONRETRYDELAY). This latter has to be long enough that the
* other end of the connection has time to notice it broke too.
* 1997/09/18 recommended values by ThemBones for modern Efnet
*/
#define HANGONRETRYDELAY 60 /* Recommended value: 30-60 seconds */
#define HANGONGOODLINK 3600 /* Recommended value: 30-60 minutes */
/* WRITEWAITDELAY - Number of seconds to wait for write to
* complete if stuck.
*/
#define WRITEWAITDELAY 15 /* Recommended value: 15 */
/* CONNECTTIMEOUT -
* Number of seconds to wait for a connect(2) call to complete.
* NOTE: this must be at *LEAST* 10. When a client connects, it has
* CONNECTTIMEOUT - 10 seconds for its host to respond to an ident lookup
* query and for a DNS answer to be retrieved.
*/
#define CONNECTTIMEOUT 30 /* Recommended value: 30 */
/* KILLCHASETIMELIMIT -
* Max time from the nickname change that still causes KILL
* automaticly to switch for the current nick of that user. (seconds)
*/
#define KILLCHASETIMELIMIT 90 /* Recommended value: 90 */
/* MAXCHANNELSPERUSER -
* Max number of channels a user is allowed to join.
*/
#define MAXCHANNELSPERUSER 20 /* Recommended value: 20 */
/* MAXCHANNELSPERUSER_LARGE -
* Max number of channels a user with umode +u is allowed to join.
*/
#define MAXCHANNELSPERUSER_LARGE 100
/* SENDQ_ALWAYS - should always be defined.
* SendQ-Always causes the server to put all outbound data into the sendq and
* flushing the sendq at the end of input processing. This should cause more
* efficient write's to be made to the network.
* There *shouldn't* be any problems with this method.
* -avalon
*/
#define SENDQ_ALWAYS
/* FLUD - CTCP Flood Detection and Protection
*
* This enables server CTCP flood detection and protection for local clients.
* It works well against fludnets and flood clones. The effect of this code
* on server CPU and memory usage is minimal, however you may not wish to
* take the risk, or be fundamentally opposed to checking the contents of
* PRIVMSG's (though no privacy is breached). This code is not useful for
* routing only servers (ie, HUB's with little or no local client base), and
* the hybrid team strongly recommends that you do not use FLUD with HUB.
* The following default thresholds may be tweaked, but these seem to work
* well.
*/
#undef FLUD
/* DEATHFLUD - excess FLUD is lethal, resulting in KILL
*/
#ifdef FLUD
#define DEATHFLUD
#endif
/* ANTI_DRONE_FLOOD - anti flooding code for drones
* This code adds server side ignore for a client who gets
* messaged more than drone_count times within drone_time seconds
* unfortunately, its a great DOS, but at least the client won't flood off.
* I have no idea what to use for values here, trying 8 privmsgs
* within 1 seconds. (I'm told it is usually that fast)
* I'll do better next time, this is a Q&D -Dianora
*/
#define ANTI_DRONE_FLOOD
#define DEFAULT_DRONE_TIME 1
#define DEFAULT_DRONE_COUNT 8
/* JUPE_CHANNEL - jupes a channel from being joined on this server only
* if added to Q lines e.g. Q:\#packet_channel:Tired of packets
*
* No, changed semantics completely. +p users can set +j on a channel to
* jupe it. This makes the channel unavailable across the network.
*
* Q:line jupes are only allowed if Q_LINE_JUPE_CHANNEL is defined
* until somebody goes over exactly what this does and if it really can
* desync. I'm not convinced about it's behaviour right now.
* -- asuffield
*/
#define JUPE_CHANNEL
#undef Q_LINE_JUPE_CHANNEL
/*
* ANTI_SPAMBOT
* if ANTI_SPAMBOT is defined try to discourage spambots
* The defaults =should= be fine for the timers/counters etc.
* but you can play with them. -Dianora
*
* Defining this also does a quick check whether the client sends
* us a "user foo x x :foo" where x is just a single char. More
* often than not, it's a bot if it did. -ThemBones
*/
#define ANTI_SPAMBOT
/* ANTI_SPAMBOT parameters, don't touch these if you don't
* understand what is going on.
*
* if a client joins MAX_JOIN_LEAVE_COUNT channels in a row,
* but spends less than MIN_JOIN_LEAVE_TIME seconds
* on each one, flag it as a possible spambot.
* disable JOIN for it and PRIVMSG but give no indication to the client
* that this is happening.
* every time it tries to JOIN OPER_SPAM_COUNTDOWN times, flag
* all opers on local server.
* If a client doesn't LEAVE a channel for at least 2 minutes
* the join/leave counter is decremented each time a LEAVE is done
*
*/
#define MIN_JOIN_LEAVE_TIME 60
#define MAX_JOIN_LEAVE_COUNT 15 /* was 25 */
#define OPER_SPAM_COUNTDOWN 5
#define JOIN_LEAVE_COUNT_EXPIRE_TIME 120
/*
* If ANTI_SPAMBOT_WARN_ONLY is #define'd
* Warn opers about possible spambots only, do not disable
* JOIN and PRIVMSG if possible spambot is noticed
* Depends on your policies.
*/
#undef ANTI_SPAMBOT_WARN_ONLY
/* ANTI_SPAM_EXIT_MESSAGE
*
* If this is defined, do not allow the clients exit message to be
* sent to a channel if the client has been on for less than
* ANTI_SPAM_EXIT_MESSAGE_TIME.
* The idea is, some spambots exit with their spam, thus advertising
* this way.
* (idea due to ThaDragon, I just couldn't find =his= code)
* - Dianora
*/
#define ANTI_SPAM_EXIT_MESSAGE
/* 300 is five minutes, seems reasonable */
#define ANTI_SPAM_EXIT_MESSAGE_TIME 300
#ifdef FLUD
#define FLUD_NUM 2 /* Number of flud messages to trip alarm */
#define FLUD_TIME 5 /* Seconds in which FLUD_NUM msgs must occur */
#define FLUD_BLOCK 20 /* Seconds to block fluds */
#endif
/* REJECT_HOLD
* clients that reconnect but are k-lined will have their connections
* "held" for REJECT_HOLD_TIME seconds, they cannot PRIVMSG. The idea
* is to keep a reconnecting client from forcing the ircd to re-scan
* mtrie_conf.
*
*/
#undef REJECT_HOLD
#define REJECT_HOLD_TIME 30
/* maximum number of fd's that will be used for reject holding */
#define REJECT_HELD_MAX 25
/*
* OLD_Y_LIMIT
*
* #define this if you prefer the old behaviour of I lines
* the default behaviour is to limit the total number of clients
* using the max client limit in the corresponding Y line (class)
* The old behaviour was to limit the client count per I line
* without regard to the total class limit. Each have advantages
* and disadvantages. In an open I line server, the default behaviour
* i.e. #undef OLD_Y_LIMIT makes more sense, because you can limit
* the total number of clients in a class. In a closed I line server
* The old behaviour can make more sense.
*
* -Dianora
*/
#undef OLD_Y_LIMIT
/*
* If the OS has SOMAXCONN use that value, otherwise
* Use the value in HYBRID_SOMAXCONN for the listen(); backlog
* try 5 or 25. 5 for AIX and SUNOS, 25 should work better for other OS's
*/
#define HYBRID_SOMAXCONN 25
/* DEBUGMODE is used mostly for internal development, it is likely
* to make your client server very sluggish.
* You usually shouldn't need this. -Dianora
*/
#undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
/* ----------------- archaic and/or broken section -------------------- */
/* SETUID_ROOT - plock - keep the ircd from being swapped out.
* BSD swapping criteria do not match the requirements of ircd.
* Note that the server needs to be setuid root for this to work.
* The result of this is that the text segment of the ircd will be
* locked in core; thus swapper cannot touch it and the behavior
* noted above will not occur. This probably doesn't work right
* anymore. IRCD_UID MUST be defined correctly if SETUID_ROOT.
*/
#undef SETUID_ROOT
/* SUN_GSO_BUG support removed
*
* if you still have a machine with this bug, it doesn't belong on EFnet
*/
/* CHROOTDIR - chroot() before reading conf
* Define for value added security if you are paranoid.
* All files you access must be in the directory you define as DPATH.
* (This may effect the PATH locations above, though you can symlink it)
*
* You may want to define IRC_UID and IRC_GID
*/
#undef CHROOTDIR
/* ------------------------- END CONFIGURATION SECTION -------------------- */
#define MAX_CLIENTS INIT_MAXCLIENTS
#if defined(CLIENT_FLOOD) && ((CLIENT_FLOOD > 8000) || (CLIENT_FLOOD < 512))
#error CLIENT_FLOOD needs redefining.
#endif
#if !defined(CLIENT_FLOOD)
#error CLIENT_FLOOD undefined.
#endif
#if defined(DEBUGMODE)
# define Debug(x) debug x
# define LOGFILE LPATH
#else
# define Debug(x) ;
# define LOGFILE "/dev/null"
#endif
#undef MALLOC_LOG
#define REPORT_DLINE_TO_USER
#ifdef NO_JOIN_ON_SPLIT
#define NO_CHANOPS_ON_SPLIT
#endif
#if defined(NO_CHANOPS_ON_SPLIT) || defined(NO_JOIN_ON_SPLIT)
#define NEED_SPLITCODE
#endif
#ifdef ANTI_SPAMBOT
#define MIN_SPAM_NUM 5
#define MIN_SPAM_TIME 60
#endif
/* MAX_MAP_NODES - maximum number of nodes for /MAP command
* if there actual nodes than this, then command returns
* without MAP results.
*/
#define MAX_MAP_DEPTH 30
#define INVITE_CHANNEL_FORWARDING
#ifdef BAN_INFO
#define BAN_CHANNEL_FORWARDING /* Ban channel forwarding is dependant on BAN_INFO structure */
#endif
#if defined(INVITE_CHANNEL_FORWARDING) || defined(BAN_CHANNEL_FORWARDING)
/* MAX_FORWARDING_RECURSION - when using channel forwarding for bans or
* on invite only channels (channel mode +f) this sets the maximum
* level of forwarding that will take place on a join before a normal
* invite only message is returned. ex.: With the chain A->B->C->D->E the
* recursion level of 3 will return an invite only if joining A but
* will chain to E if joining B.
* [ for ban forwarding: /mode +b <nick>!<host>!<forwarding channel> ]
*/
#define MAX_FORWARDING_RECURSION 3
#endif
#ifdef NEED_VA_COPY
#define va_copy(A,B) ((A) = (B))
#endif
#ifdef HAVE_ATTRIBUTE
#define printf_attribute(A,B) __attribute__((format(printf,A,B)))
#else
#define printf_attribute(A,B)
#endif
#define CONFIG_H_LEVEL_6_1
|