Files
ircu2.9.32/include/config.h
2023-12-26 16:40:53 -05:00

728 lines
23 KiB
C

/************************************************************************
* 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.
*/
#ifndef __config_include__
#define __config_include__
#include "setup.h"
/* Type of host. These should be made redundant somehow. -avalon */
/* BSD Nothing Needed 4.{2,3} BSD, SunOS 3.x, 4.x */
/* HPUX Nothing needed (A.08/A.09) */
/* ULTRIX Nothing needed (4.2) */
/* OSF Nothing needed (1.2) */
#undef AIX /* IBM ugly so-called Unix, AIX */
#undef MIPS /* MIPS Unix */
/* SGI Nothing needed (IRIX 4.0.4) */
#undef SVR3 /* SVR3 stuff - being worked on where poss. */
#undef DYNIXPTX /* Sequents Brain-dead Posix implement. */
#undef SOL20 /* Solaris2 */
#undef ESIX /* ESIX */
#undef NEXT /* NeXTStep */
#undef SVR4
/*
* NOTE: It is important to set this to the correct "domain" for your server.
* Define this for the correct "domain" that your server is in. This
* is important for certain stats. -mlv
*/
#define DOMAINNAME "iastate.edu"
/* Random Number Generator Seed
*
* Set this to an 8-character random text string.
* Do not use the default text.
* If people are able to defeat the IP-spoofing protection on your
* server, consider changing the value and recompiling.
*/
#define RANDOM_SEED "12345678"
/*
* Define this if you'd like to run two or more servers on the same port
* of one machine, using IP aliasing. --Jamey
*
*/
#undef VIRTUAL_HOST
/*
** Define this to prevent mixed case userids that clonebots use.
** It is strongly advised to define this, unless you have a known reason
** not to.
*/
#define DISALLOW_MIXED_CASE
/*
** The mixed case patch can optionally notify opers when an invalid uid
** is received by the server. However, this can get to be very annoying
** when auto connect bots with invalid ids try connecting. Define at
** your own discretion
*/
#define NOTIFY_OPS_INVALID_UID
/*
** Clone bot detection on registration.
** This feature blocks connections if more than CHECK_CLONE_LIMIT
** clients connect from the same host within CHECK_CLONE_PERIOD seconds.
**
** The feature is enabled CHECK_CLONE_DELAY seconds after the server
** is started.
**
** Define CHECK_CLONE is you want this feature.
*/
#define CHECK_CLONE
#define CHECK_CLONE_LIMIT 5 /* recommended value 5 */
#define CHECK_CLONE_PERIOD 20 /* recommended value 20 */
#define CHECK_CLONE_DELAY 120 /* 120 secs should be ok */
/*
** Nick flood limit
** Minimum time between nick changes.
** (The first two changes are allowed quickly after another however).
**
** Define NICK_DELAY if you want this feature.
*/
#define NICK_DELAY 30 /* recommended value 30 */
/*
** Default LIST command parameters.
** Undefine if you like having your server flooded by mIRC users.
*/
#define DEFAULT_LIST_PARAM "T<10"
/*
** Define this if you wish to output a *file* to a K lined client rather
** than the K line comment (the comment field is treated as a filename)
*/
#undef COMMENT_IS_FILE
/* Do these work? I dunno... */
#undef VMS /* Should work for IRC client, not server */
#undef MAIL50 /* If you're running VMS 5.0 */
#undef PCS /* PCS Cadmus MUNIX, use with BSD flag! */
/*
* NOTE: On some systems, valloc() causes many problems.
*/
#undef VALLOC /* Define this if you have valloc(3) */
#ifdef APOLLO
#define RESTARTING_SYSTEMCALLS
#endif /* read/write are restarted after signals
defining this 1, gets siginterrupt call
compiled, which attempts to remove this
behaviour (apollo sr10.1/bsd4.3 needs
this) */
/*
* If your host supports varargs and has vsprintf(), vprintf() and vscanf()
* C calls in its library, then you can define USE_VARARGS to use varargs
* instead of imitation variable arg passing.
*/
#define USE_VARARGS
/*
* Define this if you want to find an existing bug.
* It makes your server EAT cpu time though...
* NEVER define this unless you are debugging a reproducable problem
* under test circumstances.
*/
#undef DEBUGMODE /* define DEBUGMODE to enable debugging mode.*/
/*
* defining FORCE_CORE will automatically "unlimit core", forcing the
* server to dump a core file whenever it has a fatal error. -mlv
*/
#define FORCE_CORE
/*
* NPATH is path to backup file for NOTE.
*/
/* #define NPATH "/usr/lib/irc/.ircdnote" */
/*
* Full pathnames and defaults of irc system's support files. Please note that
* these are only the recommened names and paths. Change as needed.
* You must define these to something, even if you don't really want them.
*/
#define DPATH "/usr/local/lib/ircd" /* dir where all ircd stuff is */
#define SPATH "/usr/local/bin/ircd" /* path to server executeable */
#define CPATH "ircd.conf" /* server configuration file */
#define MPATH "ircd.motd" /* server MOTD file */
#define LPATH "/tmp/ircd.log" /* Where the debug file lives, if DEBUGMODE */
#define PPATH "ircd.pid" /* file for server pid */
/* Define this if you want to keep a log of all G-lines that have been added
* and the changes that are made by U-lined servers or local operators. Do
* this; you can simply append this log to your ircd.conf to add the G-lines
* as K-lines!
*/
#define GPATH "gline.log"
/*
* 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.
*/
#define FNAME_USERLOG "/usr/local/lib/ircd/users" /* */
/* #define FNAME_OPERLOG "/usr/local/lib/ircd/opers" /* */
/* CHROOTDIR
*
* Define for value added security if you are a rooter.
*
* 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
/* RELIABLE_CLOCK
*
* Define this if your host has an externally controlled system clock,
* like running xntp.
* If nobody defines this, it still works: The clock will be used of the
* server that was started first.
*/
#undef RELIABLE_CLOCK
/* ENABLE_SUMMON
*
* The SUMMON command requires the ircd to be run as group tty in order
* to work properly in many cases. If you are on a machine where it
* won't work, or simply don't want local users to be summoned, undefine
* this.
*/
#undef ENABLE_SUMMON /* local summon */
#undef ENABLE_USERS /* enables local /users (same as who/finger output) */
/* SHOW_ALL_INVISIBLE_USERS
*
* If this is defined operators on your server will see *ALL* +i users on the
* net. This can be advantagous when tracking clones. (Chaos)
* Only O:'s are affected, for o:'s (local operators) invisible users on
* other servers still have their privacy... -- Niels
*/
#define SHOW_ALL_INVISIBLE_USERS
/* SHOW_INVISIBLE_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.
* (This will get defined for you if you're using userload (stats w). -mlv)
*/
#define SHOW_INVISIBLE_LUSERS
/* OPER_KILL
*
* If you dont believe operators should be allowed to use the /KILL command
* or believe it is uncessary for them to use it, then leave OPER_KILL
* undefined. This will not affect other operators or servers issuing KILL
* commands however. OPER_REHASH and OPER_RESTART allow operators to
* issue the REHASH and RESTART commands when connected to your server.
* Left undefined they increase the security of your server from wayward
* operators and accidents. Defining OPER_REMOTE removes the restriction
* that O-lines only become fully effective for people on the 'same network'
* as the server. Undefined, it increases the secrity of the server by
* placing restrictions on where people can use operator powers from.
* The 'LOCOP_' #defines are for making the respective commands available
* to 'local' operators.
*/
#define OPER_KILL
#define OPER_REHASH
#define OPER_RESTART
#define OPER_DIE
#define OPER_REMOTE
#define LOCOP_REHASH
#undef LOCOP_RESTART
#undef LOCOP_DIE
/* MAXIMUM LINKS
*
* This define is useful for leaf nodes and gateways. It keeps you from
* connecting to too many places. It works by keeping you from
* connecting to more than "n" nodes which you have C:blah::blah:6667
* lines for.
*
* Note that any number of nodes can still connect to you. This only
* limits the number that you actively reach out to connect to.
*
* Leaf nodes are nodes which are on the edge of the tree. If you want
* to have a backup link, then sometimes you end up connected to both
* your primary and backup, routing traffic between them. To prevent
* this, #define MAXIMUM_LINKS 1 and set up both primary and
* secondary with C:blah::blah:6667 lines. THEY SHOULD NOT TRY TO
* CONNECT TO YOU, YOU SHOULD CONNECT TO THEM.
*
* Gateways such as the server which connects Australia to the US can
* do a similar thing. Put the American nodes you want to connect to
* in with C:blah::blah:6667 lines, and the Australian nodes with
* C:blah::blah lines. Have the Americans put you in with C:blah::blah
* lines. Then you will only connect to one of the Americans.
*
* 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).
*
*/
#define MAXIMUM_LINKS 1
/*
* 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.
*/
#undef HUB
/* R_LINES: The conf file now allows the existence of R lines, or
* restrict lines. These allow more freedom in the ability to restrict
* who is to sign on and when. What the R line does is call an outside
* program which returns a reply indicating whether to let the person on.
* Because there is another program involved, Delays and overhead could
* result. It is for this reason that there is a line in config.h to
* decide whether it is something you want or need. -Hoppie
*
* The default is no R_LINES as most people probably don't need it. --Jto
*/
#undef R_LINES
#ifdef R_LINES
/* Also, even if you have R lines defined, you might not want them to be
checked everywhere, since it could cost lots of time and delay. Therefore,
The following two options are also offered: R_LINES_REHASH rechecks for
R lines after a rehash, and R_LINES_OFTEN, which rechecks it as often
as it does K lines. Note that R_LINES_OFTEN is *very* likely to cause
a resource drain, use at your own risk. R_LINES_REHASH shouldn't be too
bad, assuming the programs are fairly short. */
#define R_LINES_REHASH
#define R_LINES_OFTEN
#endif
/*
* 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. Note also that defining this is
* a major security hole if your ircd goes down and some other user
* starts up the server with a new conf file that has some extra
* O-lines. So don't use this unless you're debugging.
*/
#undef CMDLINE_CONFIG /* allow conf-file to be specified on command line */
/*
* To use m4 as a preprocessor on the ircd.conf file, define M4_PREPROC.
* The server will then call m4 each time it reads the ircd.conf file,
* reading m4 output as the server's ircd.conf file.
*/
#undef M4_PREPROC
/*
* 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
/*
* If you use syslog above, you may want to turn some (none) of the
* spurious log messages for KILL/SQUIT 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 */
/*
* If you want to log to a different facility than DAEMON, change
* this define.
*/
#define LOG_FACILITY LOG_DAEMON
#endif /* USE_SYSLOG */
/*
* define this if you want to use crypted passwords for operators in your
* ircd.conf file. See ircd/crypt/README for more details on this.
*/
#define CRYPT_OPER_PASSWORD
/*
* 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 hte opposite end has the
* right password in the opposite line. See INSTALL doc for more details.
*/
#undef CRYPT_LINK_PASSWORD
/*
* define this if you enable summon and if you want summon to look for the
* least idle tty a user is logged in on.
*/
#define LEAST_IDLE
/*
* IDLE_FROM_MSG
*
* Idle-time nullified only from privmsg, if undefined idle-time
* is nullified from everything except ping/pong.
* Added 3.8.1992, kny@cs.hut.fi (nam)
*/
#define IDLE_FROM_MSG
/*
* Max amount of internal send buffering when socket is stuck (bytes)
*/
#define MAXSENDQLENGTH 2000000 /* Recommended value: 300000 for leaves */
/* 2000000 for backbones */
/*
* BUFFERPOOL is the maximum size of the total of all sendq's.
* Recommended value is leaves: 3 * MAXSENDQLENGTH, for hubs: 5 - 7 *.
*/
#define BUFFERPOOL (6 * MAXSENDQLENGTH)
/*
* use these to setup a Unix domain socket to connect clients/servers to.
*/
#define UNIXPORT
/*
* IRC_UID
*
* 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
#ifdef notdef
#define IRC_UID 65534 /* eg for what to do to enable this feature */
#define IRC_GID 65534
#endif
/*
* CLIENT_FLOOD
*
* 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 1024
/* Define this if you want the server to accomplish ircII standard */
/* Sends an extra NOTICE in the beginning of client connection */
#undef IRCII_KLUDGE
/* 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. */
#ifdef OPER_KILL
/* LOCAL_KILL_ONLY
*
* To be used, OPER_KILL must be defined.
* LOCAL_KILL_ONLY restricts KILLs to clients which are connected to the
* server the Operator is connected to (ie lets them deal with local
* problem users or 'ghost' clients
*
* NOTE: #define'ing this on an IRC net with servers which have a version
* earlier than 2.7 is prohibited. Such an action and subsequent use
* of KILL for non-local clients should be punished by removal of the
* server's links (if only for ignoring this warning!).
*/
#undef LOCAL_KILL_ONLY
#endif
/*
* Port where ircd resides. NOTE: This *MUST* be greater than 1024 if you
* plan to run ircd under any other uid than root.
*/
#define PORTNUM 6667 /* Recommended values: 6667 or 6666 */
/*
* Maximum number of network connections your server will allow. This should
* never exceed max. number of open file descrpitors and wont increase this.
* Should remain LOW as possible. Most sites will usually have under 30 or so
* connections. A busy hub or server may need this to be as high as 50 or 60.
* Making it over 100 decreases any performance boost gained from it being low.
* if you have a lot of server connections, it may be worth splitting the load
* over 2 or more servers.
* 1 server = 1 connection, 1 user = 1 connection.
* This should be at *least* 3: 1 listen port, 1 dns port + 1 client
*/
#define MAXCONNECTIONS 254
/*
* 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.
* The following sizes are recommended:
* 8MB or less core memory : 500 (at least 1/4 of max users)
* 8MB-16MB core memory : 500-750 (1/4 -> 1/2 of max users)
* 16MB-32MB core memory : 750-1000 (1/2 -> 3/4 of max users)
* 32MB or more core memory : 1000+ (> 3/4 if max users)
* where max users is the expected maximum number of users.
* (100 nicks/users ~ 25k)
* NOTE: this is directly related to the amount of memory ircd will use whilst
* resident and running - it hardly ever gets swapped to disk! You can
* ignore these recommendations- they only are meant to serve as a guide
*/
#define NICKNAMEHISTORYLENGTH 800
/*
* Time interval to wait and if no messages have been received, then check for
* PINGFREQUENCY and CONNECTFREQUENCY
*/
#define TIMESEC 60 /* Recommended value: 60 */
/*
* 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 */
/*
* If the connection to to uphost is down, then attempt to reconnect every
* CONNECTFREQUENCY seconds.
*/
#define CONNECTFREQUENCY 600 /* Recommended value: 600 */
/*
* 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.
*/
#define HANGONRETRYDELAY 10 /* Recommended value: 10 seconds */
#define HANGONGOODLINK 300 /* Recommended value: 5 minutes */
/*
* Number of seconds to wait for write to complete if stuck.
*/
#define WRITEWAITDELAY 15 /* Recommended value: 15 */
/*
* 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.
* This value should consider the fact that users whose clients do not
* support NOSPOOF will have to type /QUOTE PING <bignumber> before
* registration.
*/
#define CONNECTTIMEOUT 90 /* Recommended value: 90 */
/*
* 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 */
/*
* Max number of channels a user is allowed to join.
*/
#define MAXCHANNELSPERUSER 10 /* Recommended value: 10 */
/*
* Maximum number of silences a user may set; recommended value: 15
*/
#define MAXSILES 15
/*
* 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
/* ------------------------- END CONFIGURATION SECTION -------------------- */
#define MOTD MPATH
#define MYNAME SPATH
#define CONFIGFILE CPATH
#define IRCD_PIDFILE PPATH
#ifdef __osf__
#define OSF
/* OSF defines BSD to be its version of BSD */
#undef BSD
#include <sys/param.h>
#ifndef BSD
#define BSD
#endif
#endif
#ifdef _SEQUENT_ /* Dynix 1.4 or 2.0 Generic Define.. */
#undef BSD
#define SYSV /* Also #define SYSV */
#endif
#ifdef ultrix
#define ULTRIX
#endif
#ifdef __hpux
#define HPUX
#endif
#ifdef sgi
#define SGI
#endif
#ifdef DEBUGMODE
extern void debug();
# define Debug(x) debug x
# define LOGFILE LPATH
#else
# define Debug(x) ;
# if VMS
# define LOGFILE "NLA0:"
# else
# define LOGFILE "/dev/null"
# endif
#endif
#ifndef ENABLE_SUMMON
# undef LEAST_IDLE
#endif
#if defined(mips) || defined(PCS)
#undef SYSV
#endif
#ifdef MIPS
#undef BSD
#define BSD 1 /* mips only works in bsd43 environment */
#endif
#ifdef sequent /* Dynix (sequent OS) */
#define SEQ_NOFILE 128 /* set to your current kernel impl, */
#endif /* max number of socket connections */
#ifdef _SEQUENT_
#define DYNIXPTX
#endif
#ifdef BSD_RELIABLE_SIGNALS
# if defined(SYSV_UNRELIABLE_SIGNALS) || defined(POSIX_SIGNALS)
error You stuffed up config.h signals #defines use only one.
# endif
#define HAVE_RELIABLE_SIGNALS
#endif
#ifdef SYSV_UNRELIABLE_SIGNALS
# ifdef POSIX_SIGNALS
error You stuffed up config.h signals #defines use only one.
# endif
#undef HAVE_RELIABLE_SIGNALS
#endif
#ifdef POSIX_SIGNALS
#define HAVE_RELIABLE_SIGNALS
#endif
/*
* safety margin so we can always have one spare fd, for motd/authd or
* whatever else. -4 allows "safety" margin of 1 and space reserved.
*/
#define MAXCLIENTS (MAXCONNECTIONS-4)
#ifdef HAVECURSES
# define DOCURSES
#else
# undef DOCURSES
#endif
#ifdef HAVETERMCAP
# define DOTERMCAP
#else
# undef DOTERMCAP
#endif
#ifndef UNIXPORT
#undef UNIXPORTPATH
#endif
#if defined(CLIENT_FLOOD)
# if (CLIENT_FLOOD > 8000) || (CLIENT_FLOOD < 512)
error CLIENT_FLOOD needs redefining.
# endif
#else
error CLIENT_FLOOD undefined
#endif
/*
* Some ugliness for AIX platforms.
*/
#ifdef AIX
# include <sys/machine.h>
# if BYTE_ORDER == BIG_ENDIAN
# define BIT_ZERO_ON_LEFT
# endif
# if BYTE_ORDER == LITTLE_ENDIAN
# define BIT_ZERO_ON_RIGHT
# endif
/*
* this one is used later in sys/types.h (or so i believe). -avalon
*/
# define BSD_INCLUDES
#endif
#define Reg1 register
#define Reg2 register
#define Reg3 register
#define Reg4 register
#define Reg5 register
#define Reg6 register
#define Reg7 register
#define Reg8 register
#define Reg9 register
#define Reg10 register
#endif /* __config_include__ */