From: Michael Poole Date: Sun, 20 Mar 2005 13:35:10 +0000 (+0000) Subject: Remove unused files. Update snomask.html documentation. X-Git-Url: http://git.pk910.de/?p=ircu2.10.12-pk.git;a=commitdiff_plain;h=fcf52c3281ec0807468c78e99bf330dc95d3cdaf Remove unused files. Update snomask.html documentation. git-svn-id: file:///home/klmitch/undernet-ircu/undernet-ircu-svn/ircu2/trunk@1332 c9e4aea6-c8fd-4c43-8297-357d70d61c8c --- diff --git a/ChangeLog b/ChangeLog index 1925f13..87de058 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,22 @@ +2005-03-19 Michael Poole + (Thanks to Reed Loden for pointing these out.) + + * doc/Configure.help: Remove outdated file. + + * doc/exaconf.2: Likewise. + + * doc/snomask.html: Add missing , SNO_AUTO, SNO_DEBUG, and + update SNO_OPERDEFAULT list. + + * tools/mkpasswd.c: Remove outdated file (use ircd/umkpasswd + instead). + + * tools/Makefile.crypt: Remove outdated file. + + * tools/mkpasswd.c: Likewise. + + * tools/transition: Likewise. + 2005-03-19 Michael Poole * ircd/channel.c (sub1_from_channel): Check apass rather than mode diff --git a/doc/Configure.help b/doc/Configure.help deleted file mode 100644 index d66b16e..0000000 --- a/doc/Configure.help +++ /dev/null @@ -1,818 +0,0 @@ -# Format of this file: descriptionvariablehelptext. -# If the question being documented is of type "choice", we list -# only the first occurring config variable. The help texts -# must not contain empty lines. No variable should occur twice; if it -# does, only the first occurrence will be used by Configure. The lines -# in a help text should be indented two positions. Lines starting with -# `#' are ignored. Limit your lines to 78 characters. -# -# If you add a help text to this file, please try to be as gentle as -# possible. Don't use unexplained acronyms and generally write for the -# hypothetical admin who has just downloaded ircu for the first time. -# Tell them what to do if they're unsure. Technical information -# should go in a README in the Documentation directory. Mention all -# the relevant READMEs and HOWTOs in the help text. -# -# All this was shamelessly stolen from several different sources. Many -# thanks to all the contributors. The texts are copyrighted # (c) 1997 -# by Carlo Wood and governed by the GNU Public License. -# - -Do you want to change your previous configuration -CHANGE_CONFIG - You will be presented a series of questions that you have to answer - in order to configure the IRC daemon, prior to compilation. - If you went through this before, then your choices have been stored - in a file '.config'. If you want to use the same stored configuration - now, specify 'n'; this will quickly skip through all questions that - you already answered previously, only prompting you for NEW questions. - Note that NEW questions only can occur when you just upgraded to a - new version. Note also that if you abort by pressing ^C (control-C) - anywhere, then all answers are lost; you must finish it before the - answers are stored. - Pressing a 'c' or 'C' (followed by a return) on any question will - Continue the script in "use_defaults mode", that means that it will - take all default values unless it finds a NEW question (like when you - specify a 'n' here). 'C' will finish everything, but a 'c' will - only finish the current paragraph. - If you are unsure, or if you want to change a previously entered - configuration, specify 'y'. - -Which compiler do you want to use -CC - Here you need to specify the C compiler you want to use. - Using 'gcc' is highly recommended, you might even want to install it - on your machine first. Note that you can specify the full path if you - are not sure if the compiler is in your PATH (or whether or not the right - compiler will be used). An example is: "/usr/ucb/cc". - The package needs an ANSI compiler. Some compilers need an extra option - to compile ANSI C. In those cases you can add these options also here. - For example, on a HPUX-8.x you would use (if you don't have gcc): - "cc -Aa -D_HPUX_SOURCE". - Note that you should not use quotes. - -What flags should I pass to $CC -CFLAGS - These are the compiler flags, used for CC when compiling. - If you are not using gcc, it might be possible that your compiler is not - supporting -g and -O at the same time. The -g option is necessary to be - able to debug the daemon in the case it contains a bug that makes the - ircd core dump. Unless you use a version that is proven to be VERY stable, - it is highly recommended to use this option. All Undernet production servers - are expected to use it in order to help coder-com to track down bugs. - The -O3 will optimize the code - it also makes debugging harder. - If you have plenty of cpu cycles then you can use -O2 instead of -O3: - it will disable inlining which makes it easier to debug or core dump, - the daemon will use a few percent more cpu however. - If you are not running a production server you should remove the -Ox. - Ircd developers can optionally use more options to turn on extra warnings. - Developers (which are using gcc of course ;), should use: - "-g -Wall -pedantic -DGODMODE" - Note that you should not use quotes. - Note that the server uses several non-ANSI (though POSIX.1) function calls. - -Do you need extra include directories -EXTRA_INCLUDEDIRS - If your compiler needs extra include directories, you can specify them - here as a space separated list of directories. Do not use quotes and do - not specify the '-I' prefix. Usually you don't have to specify any - extra include directory, in that case you should specify "none" here. - If unsure, try "none" (without quotes) and see if all the '#include' - header files are found during compilation. - -Which linker flags do you need -LDFLAGS - Here you can specify extra flags that will be passed to the linker. - Usually you will not need to pass any flags and you can therefore - specify "none" here (without the quotes). - SunOS users may want to add "-Bstatic" (but only if you need it). - You can also specify any "-L..." flags here if you need those for - extra libraries. - -Which extra libraries do you need -IRCDLIBS - Some Operating Systems need linking with extra libraries for some of the - functions used by the daemon. In some cases, it is not known which - libraries are needed, even when the Operating System is known. This is - for instance the case with SunOS, some need -lresolv, while others don't. - If you forget to add a library then this will result in 'undefined variables' - during linking. If you do not know which library to add, it might be - helpful to use the unix command `nm', which lists the variables of a - library. For instance, if you get "unknown variable '_res_mkquery'", and you - wonder if this is in /usr/lib/libresolv.so, you can do: - nm /usr/lib/libresolv.so | grep res_mkquery - Do not use the leading '_' in the grep, this underscore is added by the - assembler but is not part of the original variable name and does not show - up in the output of nm. - Most libraries are in /lib or /usr/lib, which are scanned by default. In - some cases you will need to tell the linker where to search for a library. - You can do this by adding an -L... option to IRCDLIBS. For instance: - "-L/usr/ucblib -lucb" will look for 'libucb.so' in /usr/ucblib too. - Here is a list of what you MAYBE need to specify depending on your - Operating System: - OS Specify here - NeXT != 2.0 -lsys_s - Dynix/ptx -lsocket -linet -lnsl -lseq - Dell SVR4 -lsocket -lnsl -lucb - All others Default provided by autoconf - If unsure use the default provided by autoconf. - -Where should I install the ircd binary -BINDIR - After compilation (by typing 'make'), you can install the server with - the command 'make install'. This will install the ircd in the directory - you specify here. The package tries to use a meaningful name by naming - the binary "ircd.", where is the name of the last patch that - was applied by the maintainer. A symbolic link (to be specified next) - will be used to point to this binary. This allows a /RESTART to - immediately start the new version, while keeping the old binary. - Note that you need to have write permissions in this directory during - the install. Please re-check the permissions/owner and group after - installation. - -What should the name of the installed symbolic link to the executable be -SYMLINK - 'make install' installs the binary with an unique name, however it makes - a symbolic link to this newly installed executable which always has the - same name, so you can use /RESTART and/or use this name in scripts that - automatically restart the ircd after a reboot or crash. - Here you can specify the name of that symbolic link. Note that it may - not contain a '/'; it is just the name if the symbolic link and will be - installed in BINDIR. - -Which permissions do you want the binary to have -IRCDMODE - Here you need to specify the octal file mode of the ircd binary. - Recommended is 711 - but you might need setuid or something. - Note that using a setuid and starting the daemon as another user - does prohibit the daemon from core dumping in case of a crash on some - Operating Systems. - -Which owner do you want the binary to have -IRCDOWN -This will be the owner of the ircd binary after installation. - -Which group do you want the binary to have -IRCDGRP -This will be the group of the ircd binary after installation. - -Where should I install the man page -MANDIR - This is the base directory where the manual page of the ircd is installed. - If you are not root on your system, you can change it to your personal - manpath directory (which of course should be in your MANPATH environment - variable then). - -Use inlining for a few crucial functions -FORCEINLINE - This will increases the size of the executable with 7 kb, but it also - speeds up execution a bit :). Your compiler needs to understand the - keyword __inline__ (GNU gcc and egcs do). - If unsure, try if `y' compiles. If it doesn't, you can try using a - C++ compiler (ie, configure CC to be 'g++' instead 'gcc'). - -You have poll(), but do you want to use it -USE_POLL - Some Operating Systems implement select() by calling poll(), others - implement poll() by calling select(). The best performance will be - achieved by calling the lowest (sys)call ourselves of course. - The Undernet Daemon allows you to use select() or poll(). - If you specify 'y' here, the daemon will use poll() directly, otherwise - it will use select(). If you don't know what your Operating System - uses as syscall, you can compile the server with USE_POLL and detach - the running process with 'strace -p ', 'truss -p ' or - 'trace -p ' depending on your Operating System, these UNIX commands - will show you the syscalls and therefore show if you use poll() or select(). - The advantage of using poll() is that you are not bothered by the limits - of select() and fd_set size (ie, the number of clients that connect). - The following Operating Systems seem to use poll(): - Solaris 2.x, SunOS 4.x, AIX, Digital UNIX, and NetBSD. - linux-2.2.x use poll(), but only of your glibc was compiled with that - kernel (and it won't unless you compile it yourself). - The following Operating Systems use select(): - linux-2.0.x. - If unsure, test it (a ./configure check will be added in ircu2.10.06). - -What is the domain name of your network -DOMAINNAME - This define allows you to specify what you consider to be 'local'. - It is only used for statistics. When you issue the IRC command /stats w, - the server will respond with statistics of how many clients have been - connecting to your server in the last minute, hour and day. It will - give these statistics for all connections (including the servers), all - clients (from anywhere) and also for clients whose hostname ends on - the domain you specify here. So if you are an ISP and you want to know - specifically the client load from your own domain, specify that domain - here. If you are unsure what to do, then it isn't really important what - you give here, just don't give an empty string. A good guess is the last - two parts of your own hostname (ie, if your hostname is foo.bar.nowhere.org, - specify 'nowhere.org'). Note that the string you give should NOT start - with a '.' and you should not use quotes. - -Please give a random seed of eight characters -RANDOM_SEED - You should specify exactly eight characters (0-9A-Za-z) here. Do not use - quotes or any other special characters. This value is used to initialize - the random generator of the server which is used to generate PING/PONG - cookies in order to stop spoofing IP-numbers (a PING with a random number is - sent to this IP-number and if the client doesn't respond with the - exact same number, access is denied). In order to make the random - number impossible to guess, it is important that you use your own random - seed here. - -Does your host have a reliable clock -RELIABLE_CLOCK - You should really ONLY specify 'y' here when your system clock is - stable and accurate at all times (within a few seconds). - If you are running ntpdate on a regular basis, or an equivalent - like xntpd, to keep your system clock synchronized over the network, - then you might have an accurate clock. However, this is not guaranteed, - for example, it is known that xntpd gives unstable results on linux - in some cases. Note that an unstable clock is worse then an clock that - has a constant offset, because the servers attempt to correct for a - constant offset, but do not correct jumps of your system clock ! - In general you SHOULD be running ntpdate or equivalent AND make sure it - works when you run a production server on Undernet. Otherwise leave - your clock alone and specify 'n' here. - If unsure specify 'n' ! - -Change root (/) after start of daemon -CHROOTDIR - If you are a security freak and you want to the daemon to run in - its own environment, then you can specify 'y' here. The daemon will - change '/' to 'DPATH' (which you will have to specify later). - If this confuses you or if you are uncertain, specify 'n'. - -Do you want the daemon set its own uid/gid -CONFIG_SETUGID - If you specify 'y' here, then the daemon will attempt to set its - User ID (uid) and Group ID (gid) to the numeric values that you will - have to specify next. This only makes sense if you (have to) start - the server as root. The most secure operation of the server is to - not use setuid stuff (here or by means of setting the file mode) - and to run the server as a special user only (ie 'irc'). Of course - this user must have access to all log and configuration files. - Note that using a setuid and starting the daemon as another user - does prohibit the daemon from core dumping in case of a crash on some - Operating Systems. - This option is actually only necessary when you use the Change Root - option, because otherwise you can use the file mode to set the uid - and gid. Note that the server refuses to run as root. - If unsure, specify 'n'. - -UID of irc daemon -IRC_UID - Ok, if you insist on using this option: Here you must specify the - numeric value of the uid that you want the server to run as. - Note that you need to look in the right /etc/passwd file, which isn't - the same file when you used the Change Root option. - -GID of irc daemon -IRC_GID - Ok, if you insist on using this option: Here you must specify the - numeric value of the gid that you want the server to run as. - Note that you need to look in the right /etc/group file, which isn't - the same file when you used the Change Root option. - -Allow to specify configuration file on command line -CMDLINE_CONFIG - If you specify 'y' here, you will be allowed to specify the ircd.conf - path (the ircd daemon configuration file) on the command line when - starting the daemon (with the -f option). - Note that defining this 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 other users have accounts on the same machine; - when 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. - -Set up a Unix domain socket to connect clients/servers -UNIXPORT - If there are lots of users having an account on the same machine - (which is very unlikely because the server needs all cpu ;), then - using a UNIX domain socket to connect these clients to is more - efficient then letting them connect via TCP/IP. A UNIX domain - socket is a special device that will be created in your File System. - Your client must also support connecting to a UNIX domain socket. - The name of the special device must be specified in the "ircd.conf" - file by means of an extra 'P: line', see doc/example.conf for the - syntax. - If you don't have many IRC-ing users on the same host as the server, - or when your local IRC client doesn't support UNIX domain sockets, - specify 'n' here. Otherwise specify 'y'. - -Do you need virtual hosting -VIRTUAL_HOST - This is only needed when you want to run two or more servers on the - same machine and on the same port (but different devices). - In general you will only need this if you have at least two ethernet - cards in your machine with a different IP-number. - If you specify 'y' here, then you can "bind" a server to one of your - interfaces. You should use the command line option '-w' to tell the - server to which interface to bind to. No error is reported if this - fails, the server will simply not run. - If no '-w' option is given then the server name specified in the - 'M: line' of the "ircd.conf" file of the server is used, provided it - resolves to an IP-number of one of your interfaces. Note that - normally the name does not have to resolve, but when you define this, - it MUST resolve or you must use the -w command line option, or the - "bind" will fail. - If you are unsure, specify 'n'. - -Will you connect to more then one server at a time -HUB - All servers of one IRC "network" are connected in a "tree" (no loops). - Servers that are only connected to one other server (called the - 'uplink') are called "leafs", servers that are connected to more then - one other server are called HUBs. - If you specify 'n' here then your server will prevent itself from acciden- - tally connecting to two servers at once, which is good because this is - generally bad for servers in "leaf" positions (they are net.wise located - too bad to route traffic). Note that on Undernet all newly linked servers - are linked as leafs during their test phase, and should specify 'n' here. - -Send a short message instead of the MOTD to connecting clients -NODEFAULTMOTD - Every time a client connects to your server, the full Message Of - The Day (as specified in its file MPATH) is sent to the client. - Even while many clients allow the user to ignore the message of - the day: the server still sends it. Many users never read the - message of the day anyway, making it a huge waste of bandwidth. - If you specify 'y' here than the server won't send the MOTD by - default to the client, but rather tell the client when the MOTD - was last changed and how to receive the MOTD by typing /MOTD. - If unsure specify 'n'. - -Do you want to enable debugging output -DEBUGMODE - Sometimes things just don't work. This doesn't have to be a crash, - but it is also possible that your server just doesn't want to start - at all, or disallows clients to connect at all, etc. - With all such drastic and REPRODUCIBLE problems, it makes sense to - recompile the server with this option set and then running the - ircd (irc daemon) with the (extra) command line options: -t -x9 - This will make the server run in the foreground and write debug output - to the terminal; in a lot of cases this can give a clue on what is - wrong (although more often it doesn't). - Because defining DEBUGMODE uses a LOT of cpu and is never useful - unless you are debugging a reproducible test case, you should never - specify 'y' here except for the reason just mentioned. - You should certainly NEVER specify 'y' for a server that runs on a - production net. - -Do you want memory- allocation and/or leak checking -DEBUGMALLOC - If you specify 'y' here, then the server will start to do book keeping - on the allocated memory blocks. This uses extra cpu and memory, - so normally you do not want this - unless you are debugging. - This option uses 8 bytes extra per allocated memory block. - The main purpose of this option is to check if a call to free(2) is done - with a valid pointer - if the pointer was not previously returned by - malloc(2), calloc(2) or realloc(2), the server will core dump in a place - that allows the maintainer to get an idea of what went wrong - but only - when the server was compiled with the -g flag of course. - You also need to specify 'y' here if you want to search for memory leaks. - On a production server, specify 'n' - unless you have lots of cpu to - spare and you volunteer to search for memory leaks - contact the - maintainer in this case. - If unsure, specify 'n'. - -Do you want to have boundary checking -MEMMAGICNUMS - One of the most nasty bugs are those where buffer overruns are involved. - In an attempt to catch those in an early stage, this option will add - so called "magic numbers" to the beginning and end of each allocated - memory block. When a block is freed or reallocated, the magic numbers - are checked and the server core dumps when they were corrupted. - This option uses 12 bytes extra per allocated memory block. - It doesn't really use much extra cpu compared to defining DEBUGMALLOC, so - you might as well specify 'y' here, just in case. It only makes sense - though if you compiled the server with compiler option '-g'. - If unsure, specify 'n'. - -Do you want memory leak testing (stats M) -MEMLEAKSTATS - If you specify 'y' here then the server will start to do extra book keeping - on the allocated memory blocks, counting the number of currently allocated - blocks per source code location (file and line number). You will be able - to retrieve these statistics with the command /stats M. - When there is a memory leak, then allocated memory blocks that were allocated - under certain conditions are never freed (however the contents of those - memory blocks are never used anymore); this would result in a (slow?) - increase of the count of allocated memory blocks. This option allows to - find where these blocks were allocated which might give a clue on the memory - leak problem. - This option uses 4 bytes extra per allocated memory block. - If you want to look for memory leaks, specify 'y' - otherwise specify 'n'. - -Do you want extra info on allocated sizes -MEMSIZESTATS - If you specify 'y' here then the server will start to do extra book keeping - on the sizes of the allocated memory blocks. /stats M will not only return - the number of allocated blocks, but also the total number of allocated - bytes involved. If you defined MEMLEAKSTATS to look for memory leaks, it - will give the total number of allocated memory per source code location - (file and line number). - This option uses 4 bytes extra per allocated memory block, unless you already - specified 'y' for MEMMAGICNUMS (boundary checking), because in that case - it was already included (and it doesn't matter what you specify here). - I think you should specify 'y' here, its more fun to see the sizes :). - -Do you want support for a time interval with /stats M -MEMTIMESTATS - If you specify 'y' here then the server will start to do extra book keeping - on the allocated memory blocks, storing the time at which the memory block - was allocated. This especially slows down /stats M (but unless you use - that command frequently, it shouldn't really matter) and uses again 4 bytes - of extra memory per allocated memory block. - This option is especially useful if you are looking for memory leaks - because it allows you to specify a time window with /stats M for which - counted blocks must be returned. This allows to ignore recently allocated - blocks and permanently allocated blocks (since the start of the server). - -Are you testing on a host without DNS -NODNS - If you are playing with the server off-line, and no DNS is available, then - long delays occur before the server starts up because it tries to resolv - the name given on the M:line (which usually isn't given in /etc/hosts) and - for each connecting client. - If you specify 'y' here, then a call to gethostbyname() will be done only - for the real hostname, and the server will not try to resolv clients that - connect to `localhost'. - Note that other calls to gethostbyname() are still done anyway if you - use VIRTUAL_HOST and that the server still tries to resolv clients - that connect to the real IP-number of the server. - -Directory where all ircd stuff sits -DPATH - DPATH is provided so that the other path names may be provided in just - filename form. It is the Default PATH. When the server starts, it - chdir's to DPATH before chroot or any other file operation, making - it the "current directory" for the server. This is where core files - will go if the server core dumps. - Note that you should not include quotes here. - Note also that the command line option "-d " overrides the DPATH - you give here, except for the chroot (if you use that). - -Server configuration file -CPATH - This is the IRC daemon Configuration filename, mostly called "ircd.conf". - If you just specify the filename, the server will read its configuration - file from the Default Path "DPATH", which you specified above. However, - you are also allowed to specify a full path. - Note that you should not include quotes here. - -Server MOTD file -MPATH - MPATH is the filename, relative to DPATH, or the full path, of the - "Message Of The Day" file; mostly called "ircd.motd". The contents - of this file will be sent to every client that connects to the server, - after registration. - Note that you should not include quotes here. - -Server remote MOTD file (3 lines max) -RPATH - RPATH is the filename, relative to DPATH, or the full path, of the - "Remote Message Of The Day" file; mostly called "remote.motd". The - contents of this file will be sent to every remote client that issues - a /MOTD . Only the first three lines are sent, so - you might want to keep it that short ;). - Note that you should not include quotes here. - -File for server pid -PPATH - PPATH is the filename, relative to DPATH, or the full path, of the - "PID file", mostly called "ircd.pid". It is used for storing the - server's PID so a ps(1) isn't necessary. - Note that you should not include quotes here. - -Use crypted passwords for operators -CRYPT_OPER_PASSWORD - In order to allow certain users to become IRC OPERators, they must - authenticate themselves with a password. This password is matched - against an 'O: line' in the "ircd.conf" configuration file, see - doc/example.conf for more details. If you specify 'y' here, you are - allowed to use the DES encrypted form of these passwords in your - "ircd.conf" file (even more, your Opers don't have to tell you their - real password, they can provide the DES encrypted form themselves). - Since it has happened often in the past that the "ircd.conf" file - was compromised somehow, you are highly encouraged to specify 'y' here - and use the DES encrypted form. You can find a program 'mkpasswd' in - the ircd/crypt directory that will allow you to generate the encrypted - form. - -Max size of the total of of all sendqs (bytes) -BUFFERPOOL - This specifies the maximum amount of RAM that your server will allocate - for buffering sendQ's. Small leafs can use a value as little as 1000000, - while large HUBs need to specify a value as high as 20000000. - If you run out of memory, clients and/or servers are dropped with the - error "Buffer allocation error". Then you will have to up this number - (and install more RAM if appropriate). - If you want a more educated guess for this value then realize that any - value is good if you _really_ rather want to drop servers and clients - then allocate more memory; this will be the case when there is the - danger to run out memory for other allocations. - Even if you run the daemon on a dedicated machine, then specifying the - maximum of the RAM you have is a Bad Thing because really running out - of memory is a lot worse then dropping clients in a controlled way: - if possible you should have memory left for all the internal structures - (channels, clients, banlists, receive buffers) at all times. - On average, clients seem to use 150 bytes of sendQ, but at peak moments - this can easily increase to 2032 bytes per client (sendQs are allocated - in chunks of 2032 bytes). - The maximum possible ammount that can be allocated for sendQs is the - number of connected clients times whatever you specified as maximum - sendQ in your Y: lines in the ircd.conf file. Likely, that value will - be larger then the ammount of RAM you have. - The educated guess I talked about earlier would be 'number of clients' - times * 2048 bytes + 'size of net.burst' * n, where `n' is 1 for leafs - and up till 5 for HUB's. The 'size of net.burst' is about 125 bytes - per online client (on the total network). - For large HUBs with 4000 clients on undernet (30,000 users), this results - in 27 Mb. Leafs could use 12 Mb. Of course you can use less when you - have less than 4000 local clients. - Don't forget to specify this value in bytes. - -Aggressively empty the sendqpool (Read Help!) -HAS_FERGUSON_FLUSHER - Instead of dropping clients with 'Buffer Allocation Error', try to send - data to clients to try and drop the sendq buffer size as a last resort - before dropping clients. This doesn't get rid of the problem, it just - tries hard to limit it's impact. - WARNING: *THIS PANICS UNCONFIGURED FREEBSD MACHINES*, make sure you've - read doc/freebsd.txt before enabling this feature on a FreeBSD machine. - -Max receive queue for clients (bytes) -CLIENT_FLOOD - Currently, everything that a client sends to a server is read by the server - and stored in a buffer (the clients receive queue). The server will - process messages from this queue one by one (running over all clients - each time). When a client sends new messages faster they get processed, - and the size of its receive buffer reaches this value, the client is - dropped with the error "Excess flood". A reasonable value is 1024 bytes. - The maximum size is 8000 bytes. - -Maximum number of network connections (23 - (FD_SETSIZE-4)) -MAXCONNECTIONS - This specifies the maximum number of network connections the server - will use. You also need some non-network connects (log files etc), so - the maximum value is "FD_SETSIZE-4". The minimum value is 23. - The only benefit of using a small value is that your server uses less - memory - but *only* when you really have a small (client) load. - Routing server that hardly take clients can use 128 here for instance. - Servers that are always full should just specify the maximum amount - that still works (which might be less then FD_SETSIZE-4, some OS need - kernel hacking to allow more then 1024 fds per process). The only max. - value that is guaranteed to work is 252 ;). Note that if the value of - FD_SETSIZE is for instance 1024, then that doesn't mean you can't - connect MORE clients - but in this case you certainly need kernel - hacking. Find an experienced admin with the same Operating System and - ask him what the maximum is and how to achieve it. - -Nickname history length -NICKNAMEHISTORYLENGTH - This value specifies the length of the nick name history list, which - is only used for /WHOWAS. It uses about 300 to 400 bytes per entry. - Note that at a net.break so many client disappear that the whole - "whowas" list refreshed a few times (unless you make it as big as - 20,000 of course - but you shouldn't because thats a waste of ram - and cpu). A reasonable value is 'total number of clients' / 25. - -Allow Opers to see (dis)connects of local clients -ALLOW_SNO_CONNEXIT - If you specify 'y' here, you will be allowed to see all client connects and - disconnects as a server notice. The historical reason for adding this - option was to detect clone bots that connected to your server. However, - on a large IRC network like Undernet, the number of clients that connect - are so huge that it is not possible to keep an eye on this and everyone - has been filtering these notices out anyway. Next to that it turned out - to use no less then 10% of the total cpu usage last time I measured it - (this has been improved after that, but still). - Unless you insist on seeing those notices you should specify 'n' here. - Note that in the meantime Undernet has a LOT of other (semi- and fully- - automated) ways to detect clone bots, which work a LOT better for this - purpose. - -Show IP address in client connection notices -SNO_CONNEXIT_IP - Usually when showing a client connection, a nick, userid and hostname are - displayed. Selecting 'y' here will also display the numeric IP and connection - class of the connecting client. This can be useful for detecting spoofed DNS and - virtual hosted clones. This does use extra CPU though and is generally not needed, - however if a connection monitor bot is the only client that looks at these - notices, it is more efficient than sending USERIP for every connection. This - option makes the server compatible with Hybrid tcm bots. - -Do you want to use R: lines in your configuration file -R_LINES - If you specify 'y' here you will be allowed to use R:lines in the "ircd.conf". - This allows more freedom in restricting connections to your server by - calling an external program to determine whether to allow the connection. - It also uses a lot of overhead however, and can bog things down, so you should - consider whether you really need them, and if you can handle the extra load. - If unsure, specify 'n'. - -Process R: lines every rehash -R_LINES_REHASH - You may not want to have the R: lines checks everywhere since this can - cost a lot of time and delays. If you specify 'y' here, then R: lines are - checked whenever the "ircd.conf" file is reloaded (when the REHASH command - is used, or a signal SIGHUP is received by the daemon). This shouldn't be - too much of a drain on the system if the R:lines programs are short. - -Process R: lines always -R_LINES_OFTEN - If you specify 'y' here then R: lines will be checked as often as K: lines. - Note that this is -very- likely to cause a severe drain on your resources. - Use at your own risk, specify 'n' unless your really sure. - -Do you want to have a default LIST parameter -CONFIG_LIST - Pre-Undernet, the LIST command could either be given with one channel - name, or without any parameter. In the last case it would simply list - all channels. In time the IRC networks grew big, until the output of - the LIST command always filled up the sendQ of the client (and dis- - connected it). This was fixed by Carlo Wood (Run@IRC) on request of a - Dutch ISP whose users complained about this: The LIST output is now - generated in small chunks, generating more each time when there is room - in the clients sendQ. However, then it turned out that LIST (now it - worked) used 50% of all cpu (not even mentioning the bandwidth)... - This was unacceptable and the mentioned patch was disabled. On the - other hand we wanted LIST to work at least partly, so a few new - parameters have been added to LIST: <,>,C<,C>,T<,T> each followed by - a number they filter respectively the number of users on the channel, - the creation time of the channel (or age, depended on the value of - the number) and the topic set time. - If you specify 'y' here, then each time a "/LIST" (without parameter) - is issued by a client, a default parameter is used. Note that when - a parameter is used, the client can still max. sendq out - the send - flood control only works without any parameter. - If you specify 'n' here then a "/LIST" without parameters will list - all channels (and work), but as just said: it uses a LOT of cpu and - bandwidth on a large net.work. - If you specify 'y' you will be prompted for the default parameter. - -Give default LIST parameter -DEFAULT_LIST - Here you need to specify the default LIST parameter which is used - when the server receives a LIST without any parameter. - You should use something that limits the output to a maximum of a - few hundred channels; for instance "T<10" (topic is set less then - 10 seconds ago) or ">10" (more then 10 users on the channel) or even - a combination of this. Note that you should not include quotes here. - -K: line comments treated as a file -COMMENT_IS_FILE - If you specify 'y' here, then K: line comments (see doc/example.conf - for more details on the K: line syntax) will be treated as a filename - by default. The file needs to exist and will be written to clients - that match that K: line. - If you specify 'n' here, then K: line comments will be treated as - a comments by default. - In both cases you can override the default by prepending a filename - with a '!' or enclose a comment between double quotes. - If unsure, use the default. - -Only nullify idle-time on PRIVMSG -IDLE_FROM_MSG - The IRC command WHOIS gives an idle time for clients. If you want that - this idle time is set to zero only when the clients send a PRIVMSG, - then you should specify a 'y' here. - If you specify a 'n' then the idle time will be nullified on all messages - except the server PING/PONG. - -Check clone limit (2!) -CHECK_CLONE_LIMIT - Set this to 2. - -Check clone period (20!) -CHECK_CLONE_PERIOD - Set this to 20. - -Check clone delay (600!) -CHECK_CLONE_DELAY - Set this to 600. - -Max auto connects per class (1!) -MAXIMUM_LINKS - Set this to 1. - -Enable message logging -MSGLOG_ENABLED - Define this if you want the server to log received messages in static memory - at parsing time. -This is for debugging purposes only-. You might want to - redefine LOG_MASK_TYPE in s_debug.h and LOG_MASK_LEVEL in s_debug.c too. - The default is to log all messages that change some status in server's data - structures. Select 'n' unless you are debugging the server code. - DO NOT SELECT THIS ON PRODUCTION SERVERS! - -Message log size -MSGLOG_SIZE - Number of messages to log. Keep this low as raising it to 1024 will use 800k - of _static_ memory! Recommended value is 128. You must include this even if - you selected 'n' for MSGLOG_ENABLED. - -Max server idle time (60) -TIMESEC - This is the maximum idle time for the server. If no messages are received - in TIMSEC seconds, PINGFREQUENCY and CONNECTFREQUENCY are checked. - Recommended value is 60 seconds. - -KILL nick chase time limit (30) -KILLCHASETIMELIMIT - This is the maximum amount of time a KILL command will automatically change - to the current nick of a user that has just changed nicks from the one given - with the original KILL. Don't change this unless you really need to. - -Max number of channels per user (recommended: 5) -MAXCHANNELSPERUSER - This is the maximum number of channels a user can be in at a time. - The "mandatory" value on Undernet is currently 10. Since it only - influences the local server when you decrease it, its up to you to decide - if you want to use a smaller value. Do not use a larger value however, - because it DOES cost more memory and bandwidth on all other servers - when you allow users to join more channels simultaneously. - One of the most important reasons to choose a smaller value is the fact - that the now-a-days 'GUI' clients tend to stay on every channel they - join (they aren't bothered by flooding in other channels). It DOES take - your bandwidth however to send all those messages for 10 different - channels to all your users. - -Max number of silence masks (15!) -MAXSILES - This is the maximum number of masks a user can silence at a time. - The silence command allows users to filter messages directed at them - from certain users or domains, at the source server. Increasing this - number allows users to use up more memory with inefficient use of the - command. If your not sure, don't change this. - -Expected average banmask length (40!) -AVBANLEN - This is the expected average banmask length. Leave it at 40. - -Use .config of THIS source tree as your upgrade default -CONFIG_NEW - Each source tree keeps its *own* config/.config file with the default - values for all questions (those that you gave the last time you did a - 'make config'). Whenever you do 'make config' again in this source tree, - you will get these defaults. - However, when you *upgrade* to a new version (and get a NEW source tree), - it doesn't have a .config yet and will (try to) use a .config of one of - your previous source trees. - If you specify 'y' here, then the last defaults of THIS source tree will - be used in your next upgrade. Note that any changes you make later to - config/.config (by running 'make config' again) will also take effect - on this later upgrade. - You can always change this by making a new hard link from .config -> - ircu2.10.xx/config/.config in the directory where you keep the source - trees. - If unsure, and you are not currently installing a test source tree, - specify 'y'. If this is a second source tree that you will only be - experimenting with, specify 'n'. - -Class 0 ping frequency (120) -PINGFREQUENCY - If the daemon doesn't receive anything from any of its links within - PINGFREQUENCY seconds, then the it 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. This value is overridden by - a Y:line in "ircd.conf" if the connections I/C/N: line in "ircd.conf" assigns - a specific class to the connection (recommended). - -Class 0 connect frequency (600) -CONNECTFREQUENCY - This is the default frequency that the server attempts to reconnect with - its uplink server if it is set to auto connect to it. Note that this value - is overridden by a Y:line in ircd.conf if the C/N:lines in ircd.conf - assigns a specific class to the connection (recommended). - -Min time before a link is good (300) -HANGONGOODLINK - Often the net breaks for a short time and its useful to reestablish the - same connection faster than CONNECTFREQUENCY would allow, but to keep - from trying again on a bad connection, we require that the connection be - open for a certain minimum time. The recommended value is 300 seconds. - -Wait before reconnecting to good link (10!) -HANGONRETRYDELAY - When attempting to quickly reestablish a connection to a good link, we - give the net a few seconds to steady. This time must be long enough for - the other end to notice it broke too. The recommended value is 10 seconds. - -connect(2) timeout (90!) -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 - lookup to complete. It is recommended you don't change this value, but if - you do, consider the fact that users whose clients do not support NOSPOOF - will have to type /QUOTE PING before registration. - -Max send queue (40000) -DEFAULTMAXSENDQLENGTH - This is the default value of the "max. sendq length" of Y: line classes - (see doc/example.conf for details on Y: lines). You will probably - always override this value in your "ircd.conf" with the Y: lines. - The given value used to be an often used value for client sendqs. diff --git a/doc/exaconf.2 b/doc/exaconf.2 deleted file mode 100644 index 6e8ece2..0000000 --- a/doc/exaconf.2 +++ /dev/null @@ -1,211 +0,0 @@ -# Set the name of the server, its numeric, and the server info field -serverinfo { - name "test.server.undernet.org"; - capacity 6124; - numeric 18; - description "A test server for the next generation"; - - # this is an optional parameter to specify where outbound - # connections should originate from - addr "18.177.0.118"; -} - -# Select a seed from /dev/random or the appropriate local alternative. -# If /dev/random doesn't exist, use a seed -# Note: on Linux, /dev/urandom should probably be used--it won't block. -seedfile "/dev/random"; - -# Let's set up some logging -logging { - syslog daemon; # set the syslog facility to daemon - - logpath "/home/irc/logs" # path prepended to log file names - - log kill syslog notice; # log kills to syslog at priority "notice" - log squit syslog notice; - log connect syslog debug; - - log oper file "opers.log"; # log /opers to file "opers.log" - log gline file "gline.log"; - - nolog users; # turn off logging for users (default, but illustrative) - - pid "ircd.pid"; -} - -binpath "/home/irc/bin/ircd"; # binary to exec() when we /restart -libpath "/home/irc/lib"; # directory to chdir() to on start-up - -# Here's an authorization record--defines who is permitted on the server -# and what special information needs to be remembered about them. -auth everyone { - host "*@*"; # hosts this auth record matches - maxusers 1200; # Max users for this auth record - perhost 2; # Maximum of 2 users per host on this server - global 3; # Maximum of 2 users per host on the entire network - ping 120; # ping them once every 120 seconds if link inactive - sendq 270000; # max sendq for everyone in the auth record -} - -# Here's another one for miters people -auth miters { - host "*@*.mit.edu"; - host "*@18.*"; - maxusers 1200; - perhost 1; - global 1; - ping 300; - sendq 120000; -} - -# And here's a back door for my operators--perhaps to be used in an emergency -auth opers { - host "*@*"; - unset ident; # no identd - unset banable; # no denial rules - unset limit; # ignore any limits - set ipspoof; # hostname is spoofed to protect the guilty - password "MybacKd004!"; # password-only access - motd "opers.motd"; # a special MOTD for opers -} - -port { - accept opers; # auth records are tried in order listed - accept miters; - accept everyone; - - port 6660-6669 "18.177.0.118"; # ports to open - port 6660-6669 "18.177.0.119"; -} - -port { - set hide; - - accept opers; - - port 7000; # IP is optional and defaults to 0.0.0.0 -} - -port { - set hide; - set serveronly; - - port 4400 "18.177.0.118"; -} - -# allow channel hacks and glines -server uworld.undernet.org { - set channelhack; - set gline; -} - -server uworld2.undernet.org { - set channelhack; - set gline; -} - -server uworld.eu.undernet.org { - set channelhack; - set gline; -} - -# allow channel hacks only -server channels.undernet.org { - set channelhack; -} - -server channels2.undernet.org { - set channelhack; -} - -# here's some link class definitions for servers (only) -class hubs { - limit 2; # Max connection attempts per class - freq 600; # Connect frequency - ping 300; # how often to ping them - sendq 2700000; # sendq -} - -# Here's a hub link -server santaclara.ca.us.undernet.org { - class hubs; # this is in the hubs link class - - link 4400 "205.158.23.3"; # link address - password "toysrus"; # link password - set auto; # we'll auto to it - set hub; # it's a hub -} - -server dallas-r.tx.us.undernet.org { - class hubs; - - link 4400 "204.178.73.175"; - password "areyouready?"; - set auto; - set hub; - - deny "linked(santaclara.ca.us.undernet.org)"; # a d-line -} - -# here's a leaf -server vancouver.bc.ca.undernet.org { - link 4400 "199.60.228.129"; - password "toylink"; - set auto; - - denyoper "linked(santaclara.ca.us.undernet.org)"; # a D-line -} - -# here's a set of default flags for opers -# -# the part before the '.' specifies the namespace the flags are from-- -# not necessary inside the user record itself, but we don't otherwise -# know the namespace here. The part after the '.' is a label. -flagset user.oper { - set kill; # allow kills... - set kline; # allow kline/unkline - set gline; # allow local glines - set rehash; # can use /rehash - set restart; # can use /restart - set die; # can use /die - set wallops; # can use /wallops - set connect; # can use /connect and /squit - set stats; # can use /stats - set info; # can use /info - set opernotice; # can see oper-only notices - set massmsg; # can use mass messages -} - -# here's an operator -user Kev { - default oper; # a set of flags for the user - cryptpass "J/7oDe78NhQ+/"; # password must be given to activate - host "*.mit.edu"; # must be from the listed hosts - host "*.ne.mediaone.net"; - host "18.*"; - host "168.159.*"; -} - -# nick jupes -user Uworld { - set juped; -} - -user Uworld2 { - set juped; -} - -user EUworld { - set juped; -} - -user X { - set juped; -} - -user W { - set juped; -} - -# File deny records are kept in; this can be modified from online -denyfile "klines.conf"; diff --git a/doc/snomask.html b/doc/snomask.html index 3fef184..8abc768 100644 --- a/doc/snomask.html +++ b/doc/snomask.html @@ -113,16 +113,30 @@ Usage: 0x1000 /* host throttle add/remove notices */ + 8192 SNO_OLDREALOP 0x2000 /* old oper-only messages */ + 16384 SNO_CONNEXIT 0x4000 /* client connect/exit (ugh) */ + +32768 +SNO_AUTO +0x8000 +/* AUTO G-Lines */ + + +65536 +SNO_DEBUG +0x10000 +/* debugging messages (DEBUGMODE only) */ + @@ -135,7 +149,7 @@ Usage: standard +s when +o/O -SNO_DEFAULT | SNO_HACK2 | SNO_HACK4 | SNO_OLDSNO) +SNO_DEFAULT | SNO_HACK2 | SNO_HACK4 | SNO_THROTTLE | SNO_OLDSNO) only opers may set diff --git a/tools/Makefile.crypt b/tools/Makefile.crypt deleted file mode 100644 index 4270bed..0000000 --- a/tools/Makefile.crypt +++ /dev/null @@ -1,37 +0,0 @@ -#************************************************************************ -#* IRC - Internet Relay Chat -#* Copyright (C) 1991 Darren Reed -#* -#* 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. -#*/ -# -# Change this to the path of your local ircd.conf file -# -IRCDCONF = /usr/local/lib/irc/ircd.conf - -LIBS = -lcrypt - -all: mkpasswd -crypt: install - -mkpasswd: mkpasswd.c - gcc -Wall -O2 mkpasswd.c -o mkpasswd ${LIBS} - -install: - crypter ${IRCDCONF} - @echo 'done.' - -clean: - /bin/rm -f mkpasswd diff --git a/tools/README b/tools/README deleted file mode 100644 index 8547bd5..0000000 --- a/tools/README +++ /dev/null @@ -1,63 +0,0 @@ -/************************************************************************ - * IRC - Internet Relay Chat, tools/README - * Copyright (C) 1991 Nelson Minar - * - * 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. - */ - -The change implemented here is that the operator password in irc.conf -is no longer stored in plaintext form, but is encrypted the same way -that user passwords are encrypted on normal UNIX systems. Ie, instead -of having - - O:*:goodboy:Nelson - -in your ircd.conf file, you have - - O:*:sCnvYRmbFJ7oI:Nelson - -You still type "/oper Nelson goodboy" to become operator. However, if -someone gets ahold of your ircd.conf file, they can no longer figure -out what the password is from reading it. There are still other -security holes, namely server-server passwords, but this closes one -obvious problem. - -So, how do you generate these icky looking strings for passwords? -There's a simple program called mkpasswd to do that for you. To -compile mkpasswd, just "make -f Makefile.crypt" in this directory. After it -compiles, just run mkpasswd, and at the prompt type in your plaintext passwor\ -d. -It will spit out the encrypted password, which you should then just copy -into your ircd.conf file. This should be done only when adding new passwords -to your ircd.conf file. Crypting of oper passwords is automatically done -with the new F:lines so there is nothing to enable to be able to use -crypted oper passwords. All you have to do is edit the Makefile.crypt in this -directory and change "IRCDCONF = /usr/local/lib/irc/ircd.conf" to the full -path to your ircd.conf file. Then "make -f Makefile.crypt install" in this -directory to replace all the operator passwords in your ircd.conf file -with the encrypted format. - -Choose your passwords carefully. Do not choose something in a -dictionary, make sure its at least 5 characters. Anything past 8 -characters is ignored. - -One thing to note about crypt() passwords - for every plaintext, there -are 4096 different passwords. Some valid encryptions of "goodboy" -include t1Ub2RhRQHd4g sCnvYRmbFJ7oI and Xr4Z.Kg5tcdy6. The first -two characters (the "salt") determine which of the 4096 passwords -you will get. mkpasswd chooses the salt randomly, or alternately -will let you specify one on the command line. - -see also - crypt(3) diff --git a/tools/mkpasswd.c b/tools/mkpasswd.c deleted file mode 100644 index a36493a..0000000 --- a/tools/mkpasswd.c +++ /dev/null @@ -1,40 +0,0 @@ -/* simple password generator by Nelson Minar (minar@reed.edu) - * copyright 1991, all rights reserved. - * You can use this code as long as my name stays with it. - * $Id$ - */ -#define _XOPEN_SOURCE -#define _XOPEN_VERSION 4 -#define _XOPEN_SOURCE_EXTENDED -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) -{ - static char saltChars[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789./"; - char salt[3]; - char * plaintext; - - if (argc < 2) { - srandom(time(0)); /* may not be the BEST salt, but its close */ - salt[0] = saltChars[random() % 64]; - salt[1] = saltChars[random() % 64]; - salt[2] = 0; - } - else { - salt[0] = argv[1][0]; - salt[1] = argv[1][1]; - salt[2] = '\0'; - if ((strchr(saltChars, salt[0]) == NULL) || (strchr(saltChars, salt[1]) == NULL)) - fprintf(stderr, "illegal salt %s\n", salt), exit(1); - } - - plaintext = getpass("plaintext: "); - - printf("%s\n", crypt(plaintext, salt)); - return 0; -} - diff --git a/tools/transition b/tools/transition deleted file mode 100755 index a2aee89..0000000 --- a/tools/transition +++ /dev/null @@ -1,481 +0,0 @@ -#!/bin/sh -# -# IRC - Internet Relay Chat, tools/transition -# Copyright (C) 2001 Kevin L. Mitchell -# -# 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. -# -# $Id: transition,v 1.1 2001-06-21 23:28:53 kev Exp $ - -# Better than having evals all over the place -setvar () { - eval $1=\$2 -} -getvar () { - eval echo \$$1 -} - -# Set up an echo that doesn't newline-terminate -if test x`echo -n` = x-n; then - echo_n () { - echo "$@"'\c' - } -else - echo_n () { - echo -n "$@" - } -fi - -# Debugging notices, enabled only if $DEBUG has something in it -if test x"$DEBUG" = x; then - deb () { - : - } - deb_n () { - : - } -else - deb () { - echo "$@" - } - deb_n () { - echo_n "$@" - } -fi - -# Get base directory; first step, how were we called? -case $0 in -*/*) - basedir=`echo $0 | sed -e 's@/[^/]*@@g'` - ;; - -*) - basedir=`pwd` - ;; -esac - -# Now locate the ircd subdirectory -if test -d $basedir/ircd; then - : -elif test -d $basedir/../ircd; then - basedir=$basedir/.. -elif test -d ./ircd; then - basedir=`pwd` -else - echo "Cannot find base ircd directory!" >&2 - exit 1 -fi - -# Finally, canonicalize it -cwd=`pwd` -cd $basedir -basedir=`pwd` -cd $cwd - -deb "Base directory: $basedir" - -# This is where our ./configure-parsable results will go -cache_file=$basedir/config.cache - -# Now locate .config and config.cache -config_in= -config_cache_in= - -# If the config subdirectory isn't there anymore, don't bother checking there -if test -d $basedir/config; then - if test -r $basedir/config/.config; then - config_in=$basedir/config/.config - fi - - if test -r $basedir/config/config.cache; then - config_cache_in=$basedir/config/config.cache - fi -fi - -# Last ditch effort...try ../.config -if test x"$config_in" = x; then - if test -r $basedir/../.config; then - config_in=$basedir/../.config - else - echo "Cannot find original .config file!" >&2 - exit 2 - fi -fi - -# Last ditch effort...try ../.config.cache -if test x"$config_cache_in" = x; then - if test -r $basedir/../.config.cache; then - config_cache_in=$basedir/../.config.cache - else - echo "Cannot find original config.cache file!" >&2 - exit 3 - fi -fi - -# Now load the two data files -echo "Loading old config.cache file $config_cache_in" -. $config_cache_in -echo "Loading old .config file $config_in" -. $config_in - -# Now we have to track down the defaults so we will know what to generate -# F-lines for -if test ! -r $basedir/ircd/ircd_features.c; then - echo "Cannot find default features!" >&2 - exit 4 -fi - -echo_n "Loading feature default values; please be patient... " -deb "" -features= -exec 4<$basedir/ircd/ircd_features.c -while read line <&4; do - # if a line has '(' but not ')', then we hang them until we find the - # matching ')'; this is not robust! - if test x"$hangline" != x; then - line="$hangline $line" - hangline= - fi - - if test x"`echo "$line" | grep '(' 2>/dev/null`" != x -a \ - x"`echo "$line" | grep ')' 2>/dev/null`" = x; then - hangline=$line - continue - fi - - # Now we process the line we read... - case $line in - \#*) # We want to ignore the #define, since it's a false positive - ;; - - F_[NIBS]*) # Found one of the feature define macros - type=`echo "$line" | sed -e 's/^F_\([NIBS]\).*$/\1/g'` - arglist=`echo "$line" | sed -e 's/^F_[NIBS](\(.*\)),.*/\1/g' \ - -e 's/ | /|/g'` - - # Now we must parse the arguments - tIFS=$IFS - IFS=,$IFS - name= - value= - argnum=0 - for arg in $arglist; do - case $type$argnum in - [NIBS]0) # First argument is always the name of the feature - name=$arg - ;; - - I2) # Second argument of F_I() is the numerical value - value=$arg - ;; - - B2) # Second argument of F_B() is a numerical value - # We must convert this numerical value to "y" or "n" - if test x"$arg" = x0; then - value=n - else - value=y - fi - ;; - - [ST]2) # Second argument of F_S() is a string value; must - # take into account unquoted possibilities, though - dequote=`echo "$arg" | sed -e 's/^"\(.*\)"$/\1/g'` - if test x"$dequote" = x"$arg"; then - type=T - value=$arg - else - value=$dequote - fi - ;; - esac - - # Next time through, we'll be testing the next argument - argnum=`expr $argnum + 1` - done - IFS=$tIFS - - deb "Loaded feature \"$name\" of type \"$type\"; default: \"$value\"" - - # Store the information we extracted - setvar type_$name $type - setvar def_$name "$value" - - # Keep a list of features we've checked - features="$features $name" - ;; - esac -done -exec 4<&- -echo "done" - -echo "Converting some options that are still compile-time" - -unet_cv_prefix=`echo $SPATH | sed -e 's@/bin/ircd@@g'` -deb "Installation directory (derived from SPATH)... $unet_cv_prefix" - -deb_n "Enable debugging (DEBUGMODE)... " -if test x"$DEBUGMODE" = xy; then - unet_cv_enable_debug=yes -else - unet_cv_enable_debug=no -fi -deb "$unet_cv_enable_debug" - -deb_n "Enable assertion checking (CONFIG_NDEBUG)... " -if test x"$CONFIG_NDEBUG" = xy; then - unet_cv_enable_asserts=yes -else - unet_cv_enable_asserts=no -fi -deb "$unet_cv_enable_asserts" - -deb_n "Force inlining of some critical functions (FORCEINLINE)... " -if test x"$FORCEINLINE" = xy; then - unet_cv_enable_inlines=yes -else - unet_cv_enable_inlines=no -fi -deb "$unet_cv_enable_inlines" - -unet_cv_with_symlink=$SYMLINK -deb "Symlink name (SYMLINK)... $unet_cv_with_symlink" - -unet_cv_with_mode=$IRCDMODE -deb "Binary permissions (IRCDMODE)... $unet_cv_with_mode" - -unet_cv_with_owner=$IRCDOWN -deb "Binary owner (IRCDOWN)... $unet_cv_with_owner" - -unet_cv_with_group=$IRCDGRP -deb "Binary group owner (IRCDGRP)... $unet_cv_with_group" - -unet_cv_with_domain=$DOMAINNAME -deb "Local domain name (DOMAINNAME)... $unet_cv_with_domain" - -deb_n "Enable CHROOT operation (CHROOTDIR)... " -if test x"$CHROOTDIR" = xy; then - deb_n "yes, path " - unet_cv_with_chroot=$DPATH -else - unet_cv_with_chroot=no -fi -deb "$unet_cv_with_chroot" - -unet_cv_with_dpath=$DPATH -deb "Data path (DPATH)... $unet_cv_with_dpath" - -unet_cv_with_cpath=$CPATH -deb "Configuration file (CPATH)... $unet_cv_with_cpath" - -# LPATH may not be set; if it's not, we'll just ignore it here and let -# ./configure fill it in appropriately -if test x"$LPATH" != x; then - unet_cv_with_lpath=$LPATH - deb "Debug log file (LPATH)... $unet_cv_with_lpath" -fi - -unet_cv_with_maxcon=$MAXCONNECTIONS -deb "Maximum number of connections (MAXCONNECTIONS)... $unet_cv_with_maxcon" - -# Shouldn't run ./configure before the transition script, but we can deal -if test -r "$cache_file"; then - echo "WARNING: Destroying new config.cache file $cache_file" >&2 - rm $cache_file -fi - -# Create the cache file... -echo "Creating new config.cache file $cache_file" -> $cache_file - -# This section is copied from a GNU autoconf-generated configure script -############################################################################### -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache -############################################################################### - -# If they ran ./configure before, there'll be a config.status hanging around; -# if so, we can run that to integrate the config.cache we just generated. -if test -x $basedir/config.status; then - echo "Running $basedir/config.status to update configuration" - cwd=`pwd` - cd $basedir - # Have to run it twice to get the Makefile recreated - ./config.status --recheck - ./config.status - cd $cwd -fi - -# Now we need to track down ircd.conf so we can add the F-lines. -echo_n "Locating IRCD configuration file... " -case $unet_cv_with_cpath in -/*) # CPATH is absolute - conf_file=$unet_cv_with_cpath - ;; - -*) # CPATH is relative to DPATH - conf_file=$unet_cv_with_dpath/$unet_cv_with_cpath - ;; -esac -# suppress duplicate '/' -conf_file=`echo "$conf_file" | sed -e 's@//*@/@g'` -echo "$conf_file" - -# if we can't find the .conf, use "flines.conf" in the base directory (so -# they'll be easy to find). -if test ! -r $conf_file; then - fline_conf=yes - conf_file=$basedir/flines.conf - if test ! -r $conf_file; then - > $conf_file - fi - echo "WARNING: Unable to read ircd.conf; you will need to add the" >&2 - echo " F-lines manually. For your convenience, they will be" >&2 - echo " placed in $conf_file." >&2 -fi - -# here's where we take the old .config and compare it to the feature defaults -echo_n "Building feature table... " -for feature in $features; do - defval=`getvar def_$feature` - value=`getvar $feature` - - if test x"$value" = x -o x"$value" = x"$defval"; then - setvar FEAT_$feature $defval - else - setvar FEAT_$feature $value - fi -done - -# We won't add an F-line for DOMAINNAME, since (hopefully) the right one is -# already compiled in -FEAT_DOMAINNAME=DOMAINNAME - -# Have to make sure we have a RANDOM_SEED to enhance randomness... -FEAT_RANDOM_SEED=$RANDOM_SEED - -# This feature changed names to be consistent... -FEAT_OPER_LBADCHAN=$LOCAL_BADCHAN - -# DEFAULT_LIST_PARAM is perhaps the most complicated to transition, but -# this'll do the trick... -if test x"$CONFIG_LIST" = xy; then - FEAT_DEFAULT_LIST_PARAM=$DEFAULT_LIST_PARAM -else - FEAT_DEFAULT_LIST_PARAM=0 -fi - -echo "done" - -# Now we just generate the F-lines -echo_n "Generating F-lines... " -exec 4>>$conf_file - -# The various log files are set up first--these are all that were defined -# in u2.10.10.pl15 -if test x"$CONFIG_LOG_WHOX" = xy; then - echo "F:LOG:WHO:FILE:$WPATH" >&4 -fi -if test x"$CONFIG_LOG_GLINES" = xy; then - echo "F:LOG:GLINE:FILE:$GPATH" >&4 -fi -if test x"$CONFIG_LOG_USERS" = xy; then - echo "F:LOG:USER:FILE:$FNAME_USERLOG" >&4 -fi -if test x"$CONFIG_LOG_OPERS" = xy; then - echo "F:LOG:OPER:FILE:$FNAME_OPERLOG" >&4 -fi - -# Now we traverse the entire feature table and compare values with their -# defaults -for feature in $features; do - type=`getvar type_$feature` - defval=`getvar def_$feature` - value=`getvar FEAT_$feature` - - if test x"$defval" != x"$value"; then - if test x"$type" = xB; then - # Must map booleans yet again; I prefer TRUE/FALSE - if test x"$value" = xy; then - value=TRUE - else - value=FALSE - fi - fi - - # Write the F-line - echo "F:$feature:$value" >&4 - fi -done -exec 4>&- -echo "done" - -echo_n "Transition is complete." -if test ! -r $basedir/config.status; then - echo_n " You should now run ./configure." -fi - -echo "" - -if test x"$fline_conf" = xyes; then - echo "Don't forget to add the F-lines to your ircd.conf. They can be" - echo "found in $conf_file." -else - echo "Don't forget to verify the F-lines in your ircd.conf!" -fi