mirror of
				https://github.com/osmarks/ngircd.git
				synced 2025-10-25 19:17:38 +00:00 
			
		
		
		
	Compare commits
	
		
			65 Commits
		
	
	
		
			rel-0-8-2
			...
			branch-0-7
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|   | 807da1356c | ||
|   | 024c58435e | ||
|   | e72b817ae6 | ||
|   | 47d1cf9b55 | ||
|   | aaaca987cd | ||
|   | a34d8ae59f | ||
|   | d917f06af8 | ||
|   | 715e5532a9 | ||
|   | 64a8f8a3fd | ||
|   | 7c2d0f20ed | ||
|   | e75f23cfe8 | ||
|   | c31167572b | ||
|   | dc49d040c2 | ||
|   | 473feb44bb | ||
|   | 1ea7b10a82 | ||
|   | 29d430edd5 | ||
|   | 2b8052b03a | ||
|   | d155ed17c8 | ||
|   | 0b114e814b | ||
|   | d72811c9af | ||
|   | 4aa0fa7119 | ||
|   | ad22b3087f | ||
|   | c3c4f32145 | ||
|   | d72b14b9c8 | ||
|   | 6d7de626c8 | ||
|   | 73fc65a35f | ||
|   | 01929c161d | ||
|   | b0ea5b7d04 | ||
|   | f0653cdf24 | ||
|   | 0b95570a80 | ||
|   | ef907632b8 | ||
|   | 810127e2a8 | ||
|   | 3045ce06ef | ||
|   | 3b17c66068 | ||
|   | 25a947f0dd | ||
|   | e765124c25 | ||
|   | 8186e930aa | ||
|   | ae683b294f | ||
|   | 9295fce7cf | ||
|   | 9dfe74ffe2 | ||
|   | 10577f8e36 | ||
|   | fbead4a15c | ||
|   | 322d3ebaec | ||
|   | bbfeaa953b | ||
|   | 26790e960f | ||
|   | 4b1711a614 | ||
|   | 3630e840e5 | ||
|   | bcd6db9016 | ||
|   | 0e7970cfe6 | ||
|   | 9a9b4617aa | ||
|   | 434a6887f0 | ||
|   | a9a605ddb9 | ||
|   | 99ab8607c9 | ||
|   | 14b1ae7aea | ||
|   | 2517c2cb99 | ||
|   | 75fb85d029 | ||
|   | 1e599eb535 | ||
|   | 36bd5d3ad6 | ||
|   | 0be9053c17 | ||
|   | cd7d28d743 | ||
|   | f04a2ce2b4 | ||
|   | 4d7a5df0e2 | ||
|   | 7ba1bde408 | ||
|   | a7d00cd7b1 | ||
|   | 3585e2bc50 | 
							
								
								
									
										6
									
								
								AUTHORS
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								AUTHORS
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
|  | ||||
|                      ngIRCd - Next Generation IRC Server | ||||
|  | ||||
|                         (c)2001-2005 Alexander Barton, | ||||
|                       (c)2001-2004 by Alexander Barton, | ||||
|                     alex@barton.de, http://www.barton.de/ | ||||
|  | ||||
|                ngIRCd is free software and published under the | ||||
| @@ -19,9 +19,7 @@ Contributors | ||||
| ~~~~~~~~~~~~ | ||||
| Goetz Hoffart, <goetz@hoffart.de> (goetz) | ||||
| Ilja Osthoff, <i.osthoff@gmx.net> (ilja) | ||||
| Benjamin Pineau, <ben@zouh.org> | ||||
| Sean Reifschneider, <jafo-rpms@tummy.com> | ||||
| Florian Westphal, <westphal@foo.fh-furtwangen.de> | ||||
|  | ||||
|  | ||||
| Code snippets | ||||
| @@ -32,4 +30,4 @@ Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: AUTHORS,v 1.8.2.2 2005/01/26 13:26:41 alex Exp $ | ||||
| $Id: AUTHORS,v 1.5.2.2 2004/02/03 16:01:29 alex Exp $ | ||||
|   | ||||
							
								
								
									
										65
									
								
								ChangeLog
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								ChangeLog
									
									
									
									
									
								
							| @@ -1,7 +1,7 @@ | ||||
|  | ||||
|                      ngIRCd - Next Generation IRC Server | ||||
|  | ||||
|                        (c)2001-2005 Alexander Barton, | ||||
|                       (c)2001-2004 by Alexander Barton, | ||||
|                     alex@barton.de, http://www.barton.de/ | ||||
|  | ||||
|                ngIRCd is free software and published under the | ||||
| @@ -10,67 +10,6 @@ | ||||
|                                -- ChangeLog -- | ||||
|  | ||||
|  | ||||
| ngircd 0.8.2 (2005-01-26) | ||||
|  | ||||
|   - Added doc/SSL.txt to distribution. | ||||
|   - Fixed a buffer overflow that could cause the daemon to crash. Bug found | ||||
|     by Florian Westphal, <westphal@foo.fh-furtwangen.de>. | ||||
|   - Fixed a possible buffer underrun when reading the MOTD file. Thanks | ||||
|     to Florian Westphal, <westphal@foo.fh-furtwangen.de>. | ||||
|   - Fixed detection of IRC lines which are too long to send. Detected by | ||||
|     Florian Westphal, <westphal@foo.fh-furtwangen.de>. | ||||
|   - Fixed return values of our own implementation of strlcpy(). The code has | ||||
|     been taken from rsync and they fixed it, but we didn't until today :-/ | ||||
|     It has only been used when the system didn't implement strlcpy by itself, | ||||
|     not on "modern" systems. Florian Westphal, <westphal@foo.fh-furtwangen.de>. | ||||
|  | ||||
| ngircd 0.8.1 (2004-12-25) | ||||
|  | ||||
|   - Autoconf: Updated config.guess and config.sub | ||||
|   - Added some more debug code ... | ||||
|   - Fixed wrong variable names in output of "ngircd --configtest". | ||||
|   - Debian: Fxied the name of the "default file" in the init script for | ||||
|     ngircd-full packages. And do the test if the binary is executable after | ||||
|     reading this file. | ||||
|   - Enhanced the "test suite": please have a look at src/testsuite/README! | ||||
|  | ||||
| ngircd 0.8.0 (2004-06-26) | ||||
|  | ||||
|   - Fixed wrong buffer size calculation for results of the resolver. | ||||
|  | ||||
|   ngircd 0.8.0-pre2 (2004-05-16) | ||||
|   - Enhanced logging to console when running in "no-detached mode": added | ||||
|     PID and log messages of resolver sub-processes. | ||||
|   - Fixed host name lookups when using IDENT user lookups. | ||||
|   - "make clean" and "make maintainer-clean" remove more files mow. | ||||
|  | ||||
|   ngIRCd 0.8.0-pre1 (2004-05-07) | ||||
|   - Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to | ||||
|     Benjamin Pineau <ben@zouh.org>. Now you can force the daemon to change | ||||
|     its root and working directory to something "safe". MotdPhrase is used | ||||
|     to define an "MOTD string" instead of a whole file, useful if the | ||||
|     "real" MOTD file would be outside the "jail". | ||||
|   - INVITE- and BAN-lists become synchronized between IRC+ servers when | ||||
|     establishing new connections, if the peer supports this as well. | ||||
|   - Reorganized autogen.sh and configure scripts. | ||||
|   - Fixed a wrong assert() which could cause the daemon to exit spuriously | ||||
|     when closing down connections. | ||||
|   - Better logging of decompression errors returned by zlib. | ||||
|   - Servers other than the destination server didn't clean up the invite | ||||
|     list of an "invite-only" channel properly when an INVITE'd user joined. | ||||
|   - Changed the reply of the MODE command to match the syntax of the | ||||
|     original ircd exactly: the unnecessary but missing ":" before the last | ||||
|     parameter has been added. | ||||
|   - Fixed TRACE: don't output "Serv" lines for ourself; display more info. | ||||
|   - Results of the resolver (hostnames and IDENT names) are discarded after | ||||
|     the client is successfully registered with the server. | ||||
|   - Better logging while establishing and shutting down connections. | ||||
|   - The type of service (TOS) of all sockets is set to "interactive" now. | ||||
|   - Added short command line option "-t" as alternative to "--configtest". | ||||
|   - Added optional support for "IDENT" lookups on incoming connections. You | ||||
|     have to enable this function with the ./configure switch "--with-ident". | ||||
|     The default is not to do IDENT lookups. | ||||
|  | ||||
| ngIRCd 0.7.7 (2004-02-05) | ||||
|  | ||||
|   - The info text ("real name") of users is set to "-" if none has been | ||||
| @@ -554,4 +493,4 @@ ngIRCd 0.0.1, 31.12.2001 | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: ChangeLog,v 1.233.2.17 2005/01/26 22:05:26 alex Exp $ | ||||
| $Id: ChangeLog,v 1.188.2.24 2004/02/05 13:33:24 alex Exp $ | ||||
|   | ||||
							
								
								
									
										23
									
								
								INSTALL
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								INSTALL
									
									
									
									
									
								
							| @@ -46,20 +46,6 @@ files (using a distribution archive or CVS) is as following: | ||||
|   3) make | ||||
|   4) make install | ||||
|  | ||||
| (Please see details below!) | ||||
|  | ||||
| Now the newly compiled executable "ngircd" is installed in its standard | ||||
| location, /usr/local/sbin/. | ||||
|  | ||||
| The next step is to configure and afterwards starting the daemon. Please | ||||
| have a look at the ngircd(8) and ngircd.conf(5) manual pages for details | ||||
| and all possible options. | ||||
|  | ||||
| If no previous version of the configuration file exists (the standard name | ||||
| is /usr/local/etc/ngircd.conf), a sample configuration file containing all | ||||
| possible options will be installed there. You'll find its template in the | ||||
| doc/ directory: sample-ngircd.conf. | ||||
|  | ||||
|  | ||||
| 1): "autogen.sh" | ||||
|  | ||||
| @@ -89,11 +75,6 @@ In addition, you can pass some command line options to "configure" to enable | ||||
| and/or disable some features of ngIRCd. All these options are shown using | ||||
| "./configure --help", too. | ||||
|  | ||||
| Compiling a static binary will avoid you the hassle of feeding a chroot dir | ||||
| (if you want use the chroot feature). Just do something like: | ||||
|   CFLAGS=-static ./configure [--your-options ...] | ||||
| Then you can use a void directory as ChrootDir (like OpenSSH's /var/empty). | ||||
|  | ||||
|  | ||||
| 3): "make" | ||||
|  | ||||
| @@ -167,7 +148,7 @@ These parameters could be passed to the ngIRCd: | ||||
| -p, --passive | ||||
| 	Server-links won't be automatically established. | ||||
|  | ||||
| -t, --configtest | ||||
| --configtest | ||||
| 	Reads, validates and dumps the configuration file as interpreted | ||||
| 	by the server. Then exits. | ||||
|  | ||||
| @@ -177,4 +158,4 @@ number. In both cases the server exits after the output. | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: INSTALL,v 1.18.2.2 2004/09/03 20:02:02 alex Exp $ | ||||
| $Id: INSTALL,v 1.15.2.2 2004/02/03 16:01:29 alex Exp $ | ||||
|   | ||||
							
								
								
									
										21
									
								
								MacOSX/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								MacOSX/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,21 @@ | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen | ||||
| # der GNU General Public License (GPL), wie von der Free Software Foundation | ||||
| # herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 | ||||
| # der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. | ||||
| # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste | ||||
| # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.4 2002/03/12 14:37:51 alex Exp $ | ||||
| # | ||||
|  | ||||
| SUBDIRS = ngircd.pbproj | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile Makefile.in | ||||
| 	rm -rf build | ||||
|  | ||||
| # -eof- | ||||
							
								
								
									
										20
									
								
								MacOSX/ngircd.pbproj/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								MacOSX/ngircd.pbproj/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,20 @@ | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen | ||||
| # der GNU General Public License (GPL), wie von der Free Software Foundation | ||||
| # herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2 | ||||
| # der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version. | ||||
| # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste | ||||
| # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.3 2002/03/12 14:37:51 alex Exp $ | ||||
| # | ||||
|  | ||||
| EXTRA_DIST = project.pbxproj | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile Makefile.in | ||||
|  | ||||
| # -eof- | ||||
							
								
								
									
										1623
									
								
								MacOSX/ngircd.pbproj/project.pbxproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1623
									
								
								MacOSX/ngircd.pbproj/project.pbxproj
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										10
									
								
								Makefile.am
									
									
									
									
									
								
							
							
						
						
									
										10
									
								
								Makefile.am
									
									
									
									
									
								
							| @@ -8,21 +8,18 @@ | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.14.2.1 2004/05/11 00:38:17 alex Exp $ | ||||
| # $Id: Makefile.am,v 1.10.4.2 2003/07/09 21:14:08 alex Exp $ | ||||
| # | ||||
|  | ||||
| AUTOMAKE_OPTIONS = gnu | ||||
|  | ||||
| SUBDIRS = doc src man contrib | ||||
|  | ||||
| clean-local: | ||||
| 	rm -f build-stamp* | ||||
| SUBDIRS = doc MacOSX src man contrib debian | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -rf autom4te.cache | ||||
| 	rm -f Makefile.in Makefile aclocal.m4 configure | ||||
| 	rm -f mkinstalldirs missing depcomp install-sh | ||||
| 	rm -f config.log debian | ||||
| 	rm -f config.log | ||||
|  | ||||
| lint: | ||||
| 	make -C src/ngircd lint | ||||
| @@ -31,7 +28,6 @@ rpm: distcheck | ||||
| 	rpm -ta ngircd-*.tar.gz | ||||
|  | ||||
| deb: | ||||
| 	[ -f debian/rules ] || ln -s contrib/Debian debian | ||||
| 	dpkg-buildpackage -rfakeroot | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
							
								
								
									
										19
									
								
								NEWS
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								NEWS
									
									
									
									
									
								
							| @@ -10,21 +10,6 @@ | ||||
|                                   -- NEWS -- | ||||
|  | ||||
|  | ||||
| ngIRCd 0.8.0 (2004-06-26) | ||||
|  | ||||
|   - Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to | ||||
|     Benjamin Pineau <ben@zouh.org>. Now you can force the daemon to change | ||||
|     its root and working directory to something "safe". MotdPhrase is used | ||||
|     to define an "MOTD string" instead of a whole file, useful if the | ||||
|     "real" MOTD file would be outside the "jail". | ||||
|   - INVITE- and BAN-lists become synchronized between IRC+ servers when | ||||
|     establishing new connections, if the peer supports this as well. | ||||
|   - The type of service (TOS) of all sockets is set to "interactive" now. | ||||
|   - Added short command line option "-t" as alternative to "--configtest". | ||||
|   - Added optional support for "IDENT" lookups on incoming connections. You | ||||
|     have to enable this function with the ./configure switch "--with-ident". | ||||
|     The default is not to do IDENT lookups. | ||||
|  | ||||
| ngIRCd 0.7.5 (2003-07-11) | ||||
|  | ||||
|   - New configuration variable "MaxConnectionsIP" to limit the number of | ||||
| @@ -33,7 +18,7 @@ ngIRCd 0.7.5 (2003-07-11) | ||||
|     (DoS), the default is 5 connections per client IP. | ||||
|   - Added new configuration variable "Listen" to bind all listening | ||||
|     sockets of the server to a single IP address. | ||||
|         | ||||
|  | ||||
| ngIRCd 0.7.1 (2003-07-18) | ||||
|  | ||||
|   - Added support for GNU/Hurd. | ||||
| @@ -189,4 +174,4 @@ ngIRCd 0.0.1, 31.12.2001 | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: NEWS,v 1.64.2.3 2004/06/26 09:12:38 alex Exp $ | ||||
| $Id: NEWS,v 1.53.2.6 2004/02/03 16:01:29 alex Exp $ | ||||
|   | ||||
							
								
								
									
										5
									
								
								README
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								README
									
									
									
									
									
								
							| @@ -45,8 +45,7 @@ III. Features (or: why use ngIRCd?) | ||||
| - ngIRCd will be developed on in the future. | ||||
| - supported platforms (tested versions): AIX (3.2.5), A/UX (3.0.1), FreeBSD | ||||
|   (4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD | ||||
|   (1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), Windows with Cygwin, and | ||||
|   OpenBSD (3.4/i386). | ||||
|   (1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin. | ||||
|  | ||||
|  | ||||
| IV. Documentation | ||||
| @@ -84,4 +83,4 @@ mail to: <alex@barton.de> or <alex@arthur.ath.cx> | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: README,v 1.18.2.1 2004/05/07 11:24:17 alex Exp $ | ||||
| $Id: README,v 1.17.2.1 2004/02/03 16:01:29 alex Exp $ | ||||
|   | ||||
							
								
								
									
										182
									
								
								autogen.sh
									
									
									
									
									
								
							
							
						
						
									
										182
									
								
								autogen.sh
									
									
									
									
									
								
							| @@ -1,183 +1,15 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001-2004 Alexander Barton <alex@barton.de> | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: autogen.sh,v 1.12 2004/04/05 12:02:21 alex Exp $ | ||||
| # $Id: autogen.sh,v 1.6.2.1 2003/04/22 10:18:41 alex Exp $ | ||||
| # | ||||
|  | ||||
| # | ||||
| # Usage: [VAR=<value>] ./autogen.sh [<configure-args>] | ||||
| # | ||||
| # This script generates the ./configure script using GNU automake and | ||||
| # GNU autoconf. It tries to be smart in finding the correct/usable/available | ||||
| # installed versions of these tools on your system. | ||||
| # | ||||
| # The following strategy is used for each of aclocal, autoheader, automake, | ||||
| # and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf" | ||||
| # or "automake") is checked. If this fails, "tool<major><minor>" (for example | ||||
| # "automake16") and "tool-<major>.<minor>" (e. g. "autoconf-2.54") are tried | ||||
| # with <major> being 2 for tool of GNU autoconf and 1 for tools of automake; | ||||
| # <minor> is tried from 99 to 0. The first occurrence will be used. | ||||
| # | ||||
| # When you pass <configure-args> to autogen.sh it will call the generated | ||||
| # ./configure script on success and pass these parameters to it. | ||||
| # | ||||
| # You can tweak the behaviour using these environment variables: | ||||
| # | ||||
| # - ACLOCAL=<cmd>, AUTOHEADER=<cmd>, AUTOMAKE=<cmd>, AUTOCONF=<cmd> | ||||
| #   Name and optionally path to the particular tool. | ||||
| # - PREFIX=<path> | ||||
| #   Search the GNU autoconf and GNU automake tools in <path> first. If the | ||||
| #   generated ./configure script will be called, pass "--prefix=<path>" to it. | ||||
| # - EXIST=<tool> | ||||
| #   Use <tool> to test for aclocal, autoheader etc. pp. ... | ||||
| #   When not specified, either "type" or "which" is used. | ||||
| # - VERBOSE=1 | ||||
| #   Output the detected names of the GNU automake and GNU autoconf tools. | ||||
| # - GO=1 | ||||
| #   Call ./configure even if no arguments have been passed to autogen.sh. | ||||
| # | ||||
| # Examples: | ||||
| # | ||||
| # - ./autogen.sh | ||||
| #   Generates the ./configure script. | ||||
| # - GO=1 ./autogen.sh | ||||
| #   Generates the ./configure script and runs it as "./configure". | ||||
| # - VERBOSE=1 ./autogen.sh --with-ident | ||||
| #   Show tool names, generates the ./configure script, and runs it with | ||||
| #   these arguments: "./configure --with-ident". | ||||
| # - ACLOCAL=aclocal-1.6 GO=1 PREFIX=$HOME ./autogen.sh | ||||
| #   Uses "aclocal-1.6" as aclocal tool, generates the ./configure script, | ||||
| #   and runs it with these arguments: "./configure --prefix=$HOME". | ||||
| # | ||||
|  | ||||
| Search() | ||||
| { | ||||
| 	[ $# -eq 2 ] || exit 1 | ||||
|  | ||||
| 	searchlist="$1" | ||||
| 	major="$2" | ||||
| 	minor=99 | ||||
|  | ||||
| 	[ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist" | ||||
|  | ||||
| 	for name in $searchlist; do | ||||
| 		$EXIST "${name}" >/dev/null 2>&1 | ||||
| 		if [ $? -eq 0 ]; then | ||||
| 			echo "${name}" | ||||
| 			return 0 | ||||
| 		fi | ||||
| 	done | ||||
|  | ||||
| 	while [ $minor -ge 0 ]; do | ||||
| 		for name in $searchlist; do | ||||
| 			$EXIST "${name}${major}${minor}" >/dev/null 2>&1 | ||||
| 			if [ $? -eq 0 ]; then | ||||
| 				echo "${name}${major}${minor}" | ||||
| 				return 0 | ||||
| 			fi | ||||
| 			$EXIST "${name}-${major}.${minor}" >/dev/null 2>&1 | ||||
| 			if [ $? -eq 0 ]; then | ||||
| 				echo "${name}-${major}.${minor}" >/dev/null 2>&1 | ||||
| 				return 0 | ||||
| 			fi | ||||
| 		done | ||||
| 		minor=`expr $minor - 1` | ||||
| 	done | ||||
| 	return 1 | ||||
| } | ||||
|  | ||||
| Notfound() | ||||
| { | ||||
| 	echo "Error: $* not found!" | ||||
| 	echo "Please install recent versions of GNU autoconf and GNU automake." | ||||
| 	exit 1 | ||||
| } | ||||
|  | ||||
| # Reset locale settings to suppress warning messages of Perl | ||||
| unset LC_ALL | ||||
| unset LANG | ||||
|  | ||||
| # Which command should be used to detect the automake/autoconf tools? | ||||
| [ -z "$EXIST" ] && existlist="type which" || existlist="$EXIST" | ||||
| EXIST="" | ||||
| for t in $existlist; do | ||||
| 	$t /bin/ls >/dev/null 2>&1 | ||||
| 	if [ $? -eq 0 ]; then | ||||
| 		rm -f /tmp/test.$$ | ||||
| 		$t /tmp/test.$$ >/dev/null 2>&1 | ||||
| 		[ $? -ne 0 ] && EXIST="$t" | ||||
| 	fi | ||||
| 	[ -n "$EXIST" ] && break | ||||
| done | ||||
| if [ -z "$EXIST" ]; then | ||||
| 	echo "Didn't detect a working command to test for the autoconf/automake tools!" | ||||
| 	echo "Searchlist: $existlist" | ||||
| 	exit 1 | ||||
| fi | ||||
| [ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools." | ||||
|  | ||||
| # We want to use GNU automake 1.7, if available (WANT_AUTOMAKE is used by | ||||
| # the wrapper scripts of Gentoo Linux): | ||||
| WANT_AUTOMAKE=1.7 | ||||
| WANT_AUTOMAKE=1.6 | ||||
| export WANT_AUTOMAKE | ||||
|  | ||||
| # Try to detect the needed tools when no environment variable already | ||||
| # spezifies one: | ||||
| echo "Searching tools ..." | ||||
| [ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1` | ||||
| [ "$VERBOSE" = "1" ] && echo "ACLOCAL=$ACLOCAL" | ||||
| [ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2` | ||||
| [ "$VERBOSE" = "1" ] && echo "AUTOHEADER=$AUTOHEADER" | ||||
| [ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1` | ||||
| [ "$VERBOSE" = "1" ] && echo "AUTOMAKE=$AUTOMAKE" | ||||
| [ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2` | ||||
| [ "$VERBOSE" = "1" ] && echo "AUTOCONF=$AUTOCONF" | ||||
|  | ||||
| # Call ./configure when parameters have been passed to this script and | ||||
| # GO isn't already defined. | ||||
| [ -z "$GO" -a $# -gt 0 ] && GO=1 | ||||
|  | ||||
| # Verify that all tools have been found | ||||
| [ -z "$AUTOCONF" ] && Notfound autoconf | ||||
| [ -z "$AUTOHEADER" ] && Notfound autoheader | ||||
| [ -z "$AUTOMAKE" ] && Notfound automake | ||||
| [ -z "$AUTOCONF" ] && Notfound autoconf | ||||
|  | ||||
| export AUTOCONF AUTOHEADER AUTOMAKE AUTOCONF | ||||
|  | ||||
| # Generate files | ||||
| echo "Generating files ..." | ||||
| $ACLOCAL && \ | ||||
| 	$AUTOHEADER && \ | ||||
| 	$AUTOMAKE --add-missing && \ | ||||
| 	$AUTOCONF | ||||
|  | ||||
| if [ $? -eq 0 -a -x ./configure ]; then | ||||
| 	# Success: if we got some parameters we call ./configure and pass | ||||
| 	# all of them to it. | ||||
| 	if [ "$GO" = "1" ]; then | ||||
| 		[ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p="" | ||||
| 		[ -n "$*" ] && a=" $*" || a="" | ||||
| 		c="./configure${p}${a}" | ||||
| 		echo "Calling \"$c\" ..." | ||||
| 		$c | ||||
| 		exit $? | ||||
| 	else | ||||
| 		echo "Okay, autogen.sh done; now run the \"configure\" script." | ||||
| 		exit 0 | ||||
| 	fi | ||||
| else | ||||
| 	# Failure!? | ||||
| 	echo "Error! Check your installation of GNU automake and autoconf!" | ||||
| 	exit 1 | ||||
| fi | ||||
| aclocal && \ | ||||
|  autoheader && \ | ||||
|  automake --add-missing && \ | ||||
|  autoconf && \ | ||||
|  echo "Okay, autogen.sh done." | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
							
								
								
									
										104
									
								
								config.guess
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								config.guess
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,9 @@ | ||||
| #! /bin/sh | ||||
| # Attempt to guess a canonical system name. | ||||
| #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | ||||
| #   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. | ||||
| #   2000, 2001, 2002, 2003 Free Software Foundation, Inc. | ||||
|  | ||||
| timestamp='2004-08-13' | ||||
| timestamp='2003-10-07' | ||||
|  | ||||
| # This file is free software; you can redistribute it and/or modify it | ||||
| # under the terms of the GNU General Public License as published by | ||||
| @@ -53,7 +53,7 @@ version="\ | ||||
| GNU config.guess ($timestamp) | ||||
|  | ||||
| Originally written by Per Bothner. | ||||
| Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 | ||||
| Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | ||||
| Free Software Foundation, Inc. | ||||
|  | ||||
| This is free software; see the source for copying conditions.  There is NO | ||||
| @@ -197,21 +197,15 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | ||||
| 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. | ||||
| 	echo "${machine}-${os}${release}" | ||||
| 	exit 0 ;; | ||||
|     amd64:OpenBSD:*:*) | ||||
| 	echo x86_64-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     amiga:OpenBSD:*:*) | ||||
| 	echo m68k-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     cats:OpenBSD:*:*) | ||||
| 	echo arm-unknown-openbsd${UNAME_RELEASE} | ||||
|     arc:OpenBSD:*:*) | ||||
| 	echo mipsel-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     hp300:OpenBSD:*:*) | ||||
| 	echo m68k-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     luna88k:OpenBSD:*:*) | ||||
|     	echo m88k-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     mac68k:OpenBSD:*:*) | ||||
| 	echo m68k-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
| @@ -227,33 +221,25 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | ||||
|     mvmeppc:OpenBSD:*:*) | ||||
| 	echo powerpc-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     pmax:OpenBSD:*:*) | ||||
| 	echo mipsel-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     sgi:OpenBSD:*:*) | ||||
| 	echo mips64-unknown-openbsd${UNAME_RELEASE} | ||||
| 	echo mipseb-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     sun3:OpenBSD:*:*) | ||||
| 	echo m68k-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     wgrisc:OpenBSD:*:*) | ||||
| 	echo mipsel-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:OpenBSD:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:ekkoBSD:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     macppc:MirBSD:*:*) | ||||
| 	echo powerppc-unknown-mirbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:MirBSD:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     alpha:OSF1:*:*) | ||||
| 	case $UNAME_RELEASE in | ||||
| 	*4.0) | ||||
| 	if test $UNAME_RELEASE = "V4.0"; then | ||||
| 		UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` | ||||
| 		;; | ||||
| 	*5.*) | ||||
| 	        UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` | ||||
| 		;; | ||||
| 	esac | ||||
| 	fi | ||||
| 	# According to Compaq, /usr/sbin/psrinfo has been available on | ||||
| 	# OSF/1 and Tru64 systems produced since 1995.  I hope that | ||||
| 	# covers most systems running today.  This code pipes the CPU | ||||
| @@ -291,12 +277,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | ||||
| 	    "EV7.9 (21364A)") | ||||
| 		UNAME_MACHINE="alphaev79" ;; | ||||
| 	esac | ||||
| 	# A Pn.n version is a patched version. | ||||
| 	# A Vn.n version is a released version. | ||||
| 	# A Tn.n version is a released field test version. | ||||
| 	# A Xn.n version is an unreleased experimental baselevel. | ||||
| 	# 1.2 uses "1.2" for uname -r. | ||||
| 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` | ||||
| 	echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` | ||||
| 	exit 0 ;; | ||||
|     Alpha*:OpenVMS:*:*) | ||||
| 	echo alpha-hp-vms | ||||
| 	exit 0 ;; | ||||
|     Alpha\ *:Windows_NT*:*) | ||||
| 	# How do we know it's Interix rather than the generic POSIX subsystem? | ||||
| @@ -319,9 +307,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | ||||
|     *:OS/390:*:*) | ||||
| 	echo i370-ibm-openedition | ||||
| 	exit 0 ;; | ||||
|     *:OS400:*:*) | ||||
|         echo powerpc-ibm-os400 | ||||
| 	exit 0 ;; | ||||
|     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) | ||||
| 	echo arm-acorn-riscix${UNAME_RELEASE} | ||||
| 	exit 0;; | ||||
| @@ -414,9 +399,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in | ||||
|     *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) | ||||
|         echo m68k-unknown-mint${UNAME_RELEASE} | ||||
|         exit 0 ;; | ||||
|     m68k:machten:*:*) | ||||
| 	echo m68k-apple-machten${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     powerpc:machten:*:*) | ||||
| 	echo powerpc-apple-machten${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
| @@ -752,7 +734,7 @@ EOF | ||||
| 	echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||||
| 	exit 0 ;; | ||||
|     *:UNICOS/mp:*:*) | ||||
| 	echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||||
| 	echo nv1-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' | ||||
| 	exit 0 ;; | ||||
|     F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) | ||||
| 	FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` | ||||
| @@ -760,11 +742,6 @@ EOF | ||||
|         FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` | ||||
|         echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | ||||
|         exit 0 ;; | ||||
|     5000:UNIX_System_V:4.*:*) | ||||
|         FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` | ||||
|         FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` | ||||
|         echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" | ||||
| 	exit 0 ;; | ||||
|     i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) | ||||
| 	echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
| @@ -775,7 +752,21 @@ EOF | ||||
| 	echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:FreeBSD:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` | ||||
| 	# Determine whether the default compiler uses glibc. | ||||
| 	eval $set_cc_for_build | ||||
| 	sed 's/^	//' << EOF >$dummy.c | ||||
| 	#include <features.h> | ||||
| 	#if __GLIBC__ >= 2 | ||||
| 	LIBC=gnu | ||||
| 	#else | ||||
| 	LIBC= | ||||
| 	#endif | ||||
| EOF | ||||
| 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=` | ||||
| 	# GNU/KFreeBSD systems have a "k" prefix to indicate we are using | ||||
| 	# FreeBSD's kernel, but not the complete OS. | ||||
| 	case ${LIBC} in gnu) kernel_only='k' ;; esac | ||||
| 	echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC} | ||||
| 	exit 0 ;; | ||||
|     i*:CYGWIN*:*) | ||||
| 	echo ${UNAME_MACHINE}-pc-cygwin | ||||
| @@ -827,9 +818,6 @@ EOF | ||||
|     ia64:Linux:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-linux-gnu | ||||
| 	exit 0 ;; | ||||
|     m32r*:Linux:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-linux-gnu | ||||
| 	exit 0 ;; | ||||
|     m68*:Linux:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-linux-gnu | ||||
| 	exit 0 ;; | ||||
| @@ -998,9 +986,6 @@ EOF | ||||
|     i*86:atheos:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-atheos | ||||
| 	exit 0 ;; | ||||
| 	i*86:syllable:*:*) | ||||
| 	echo ${UNAME_MACHINE}-pc-syllable | ||||
| 	exit 0 ;; | ||||
|     i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) | ||||
| 	echo i386-unknown-lynxos${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
| @@ -1070,9 +1055,9 @@ EOF | ||||
|     M680?0:D-NIX:5.3:*) | ||||
| 	echo m68k-diab-dnix | ||||
| 	exit 0 ;; | ||||
|     M68*:*:R3V[5678]*:*) | ||||
|     M68*:*:R3V[567]*:*) | ||||
| 	test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;; | ||||
|     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) | ||||
|     3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0) | ||||
| 	OS_REL='' | ||||
| 	test -r /etc/.relid \ | ||||
| 	&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` | ||||
| @@ -1170,10 +1155,9 @@ EOF | ||||
| 	echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:Darwin:*:*) | ||||
| 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown | ||||
| 	case $UNAME_PROCESSOR in | ||||
| 	case `uname -p` in | ||||
| 	    *86) UNAME_PROCESSOR=i686 ;; | ||||
| 	    unknown) UNAME_PROCESSOR=powerpc ;; | ||||
| 	    powerpc) UNAME_PROCESSOR=powerpc ;; | ||||
| 	esac | ||||
| 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
| @@ -1188,7 +1172,7 @@ EOF | ||||
|     *:QNX:*:4*) | ||||
| 	echo i386-pc-qnx | ||||
| 	exit 0 ;; | ||||
|     NSR-?:NONSTOP_KERNEL:*:*) | ||||
|     NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*) | ||||
| 	echo nsr-tandem-nsk${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:NonStop-UX:*:*) | ||||
| @@ -1232,16 +1216,6 @@ EOF | ||||
|     SEI:*:*:SEIUX) | ||||
|         echo mips-sei-seiux${UNAME_RELEASE} | ||||
| 	exit 0 ;; | ||||
|     *:DragonFly:*:*) | ||||
| 	echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` | ||||
| 	exit 0 ;; | ||||
|     *:*VMS:*:*) | ||||
|     	UNAME_MACHINE=`(uname -p) 2>/dev/null` | ||||
| 	case "${UNAME_MACHINE}" in | ||||
| 	    A*) echo alpha-dec-vms && exit 0 ;; | ||||
| 	    I*) echo ia64-dec-vms && exit 0 ;; | ||||
| 	    V*) echo vax-dec-vms && exit 0 ;; | ||||
| 	esac | ||||
| esac | ||||
|  | ||||
| #echo '(No uname command or uname output not recognized.)' 1>&2 | ||||
|   | ||||
							
								
								
									
										90
									
								
								config.sub
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										90
									
								
								config.sub
									
									
									
									
										vendored
									
									
								
							| @@ -1,9 +1,9 @@ | ||||
| #! /bin/sh | ||||
| # Configuration validation subroutine script. | ||||
| #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, | ||||
| #   2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. | ||||
| #   2000, 2001, 2002, 2003 Free Software Foundation, Inc. | ||||
|  | ||||
| timestamp='2004-06-24' | ||||
| timestamp='2003-10-07' | ||||
|  | ||||
| # This file is (in principle) common to ALL GNU software. | ||||
| # The presence of a machine in this file suggests that SOME GNU software | ||||
| @@ -70,7 +70,7 @@ Report bugs and patches to <config-patches@gnu.org>." | ||||
| version="\ | ||||
| GNU config.sub ($timestamp) | ||||
|  | ||||
| Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 | ||||
| Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 | ||||
| Free Software Foundation, Inc. | ||||
|  | ||||
| This is free software; see the source for copying conditions.  There is NO | ||||
| @@ -118,8 +118,7 @@ esac | ||||
| # Here we must recognize all the valid KERNEL-OS combinations. | ||||
| maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` | ||||
| case $maybe_os in | ||||
|   nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ | ||||
|   kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) | ||||
|   nto-qnx* | linux-gnu* | linux-dietlibc | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) | ||||
|     os=-$maybe_os | ||||
|     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` | ||||
|     ;; | ||||
| @@ -145,7 +144,7 @@ case $os in | ||||
| 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ | ||||
| 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ | ||||
| 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ | ||||
| 	-apple | -axis | -knuth | -cray) | ||||
| 	-apple | -axis) | ||||
| 		os= | ||||
| 		basic_machine=$1 | ||||
| 		;; | ||||
| @@ -237,7 +236,7 @@ case $basic_machine in | ||||
| 	| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | ||||
| 	| i370 | i860 | i960 | ia64 \ | ||||
| 	| ip2k | iq2000 \ | ||||
| 	| m32r | m32rle | m68000 | m68k | m88k | mcore \ | ||||
| 	| m32r | m68000 | m68k | m88k | mcore \ | ||||
| 	| mips | mipsbe | mipseb | mipsel | mipsle \ | ||||
| 	| mips16 \ | ||||
| 	| mips64 | mips64el \ | ||||
| @@ -262,7 +261,7 @@ case $basic_machine in | ||||
| 	| pyramid \ | ||||
| 	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ | ||||
| 	| sh64 | sh64le \ | ||||
| 	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ | ||||
| 	| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \ | ||||
| 	| strongarm \ | ||||
| 	| tahoe | thumb | tic4x | tic80 | tron \ | ||||
| 	| v850 | v850e \ | ||||
| @@ -300,7 +299,7 @@ case $basic_machine in | ||||
| 	| avr-* \ | ||||
| 	| bs2000-* \ | ||||
| 	| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | ||||
| 	| clipper-* | craynv-* | cydra-* \ | ||||
| 	| clipper-* | cydra-* \ | ||||
| 	| d10v-* | d30v-* | dlx-* \ | ||||
| 	| elxsi-* \ | ||||
| 	| f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ | ||||
| @@ -308,7 +307,7 @@ case $basic_machine in | ||||
| 	| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | ||||
| 	| i*86-* | i860-* | i960-* | ia64-* \ | ||||
| 	| ip2k-* | iq2000-* \ | ||||
| 	| m32r-* | m32rle-* \ | ||||
| 	| m32r-* \ | ||||
| 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | ||||
| 	| m88110-* | m88k-* | mcore-* \ | ||||
| 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | ||||
| @@ -326,9 +325,8 @@ case $basic_machine in | ||||
| 	| mipsisa64sb1-* | mipsisa64sb1el-* \ | ||||
| 	| mipsisa64sr71k-* | mipsisa64sr71kel-* \ | ||||
| 	| mipstx39-* | mipstx39el-* \ | ||||
| 	| mmix-* \ | ||||
| 	| msp430-* \ | ||||
| 	| none-* | np1-* | ns16k-* | ns32k-* \ | ||||
| 	| none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ | ||||
| 	| orion-* \ | ||||
| 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | ||||
| 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | ||||
| @@ -337,7 +335,7 @@ case $basic_machine in | ||||
| 	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ | ||||
| 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | ||||
| 	| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ | ||||
| 	| sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | ||||
| 	| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ | ||||
| 	| tahoe-* | thumb-* \ | ||||
| 	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | ||||
| 	| tron-* \ | ||||
| @@ -364,9 +362,6 @@ case $basic_machine in | ||||
| 		basic_machine=a29k-amd | ||||
| 		os=-udi | ||||
| 		;; | ||||
|     	abacus) | ||||
| 		basic_machine=abacus-unknown | ||||
| 		;; | ||||
| 	adobe68k) | ||||
| 		basic_machine=m68010-adobe | ||||
| 		os=-scout | ||||
| @@ -384,9 +379,6 @@ case $basic_machine in | ||||
| 	amd64) | ||||
| 		basic_machine=x86_64-pc | ||||
| 		;; | ||||
| 	amd64-*) | ||||
| 		basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` | ||||
| 		;; | ||||
| 	amdahl) | ||||
| 		basic_machine=580-amdahl | ||||
| 		os=-sysv | ||||
| @@ -446,24 +438,12 @@ case $basic_machine in | ||||
| 		basic_machine=j90-cray | ||||
| 		os=-unicos | ||||
| 		;; | ||||
| 	craynv) | ||||
| 		basic_machine=craynv-cray | ||||
| 		os=-unicosmp | ||||
| 		;; | ||||
| 	cr16c) | ||||
| 		basic_machine=cr16c-unknown | ||||
| 		os=-elf | ||||
| 		;; | ||||
| 	crds | unos) | ||||
| 		basic_machine=m68k-crds | ||||
| 		;; | ||||
| 	cris | cris-* | etrax*) | ||||
| 		basic_machine=cris-axis | ||||
| 		;; | ||||
| 	crx) | ||||
| 		basic_machine=crx-unknown | ||||
| 		os=-elf | ||||
| 		;; | ||||
| 	da30 | da30-*) | ||||
| 		basic_machine=m68k-da30 | ||||
| 		;; | ||||
| @@ -664,6 +644,10 @@ case $basic_machine in | ||||
| 	mips3*) | ||||
| 		basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown | ||||
| 		;; | ||||
| 	mmix*) | ||||
| 		basic_machine=mmix-knuth | ||||
| 		os=-mmixware | ||||
| 		;; | ||||
| 	monitor) | ||||
| 		basic_machine=m68k-rom68k | ||||
| 		os=-coff | ||||
| @@ -744,6 +728,10 @@ case $basic_machine in | ||||
| 	np1) | ||||
| 		basic_machine=np1-gould | ||||
| 		;; | ||||
| 	nv1) | ||||
| 		basic_machine=nv1-cray | ||||
| 		os=-unicosmp | ||||
| 		;; | ||||
| 	nsr-tandem) | ||||
| 		basic_machine=nsr-tandem | ||||
| 		;; | ||||
| @@ -755,10 +743,6 @@ case $basic_machine in | ||||
| 		basic_machine=or32-unknown | ||||
| 		os=-coff | ||||
| 		;; | ||||
| 	os400) | ||||
| 		basic_machine=powerpc-ibm | ||||
| 		os=-os400 | ||||
| 		;; | ||||
| 	OSE68000 | ose68000) | ||||
| 		basic_machine=m68000-ericsson | ||||
| 		os=-ose | ||||
| @@ -979,10 +963,6 @@ case $basic_machine in | ||||
| 	tower | tower-32) | ||||
| 		basic_machine=m68k-ncr | ||||
| 		;; | ||||
| 	tpf) | ||||
| 		basic_machine=s390x-ibm | ||||
| 		os=-tpf | ||||
| 		;; | ||||
| 	udi29k) | ||||
| 		basic_machine=a29k-amd | ||||
| 		os=-udi | ||||
| @@ -1056,9 +1036,6 @@ case $basic_machine in | ||||
| 	romp) | ||||
| 		basic_machine=romp-ibm | ||||
| 		;; | ||||
| 	mmix) | ||||
| 		basic_machine=mmix-knuth | ||||
| 		;; | ||||
| 	rs6000) | ||||
| 		basic_machine=rs6000-ibm | ||||
| 		;; | ||||
| @@ -1081,7 +1058,7 @@ case $basic_machine in | ||||
| 	sh64) | ||||
| 		basic_machine=sh64-unknown | ||||
| 		;; | ||||
| 	sparc | sparcv8 | sparcv9 | sparcv9b) | ||||
| 	sparc | sparcv9 | sparcv9b) | ||||
| 		basic_machine=sparc-sun | ||||
| 		;; | ||||
| 	cydra) | ||||
| @@ -1154,20 +1131,19 @@ case $os in | ||||
| 	      | -aos* \ | ||||
| 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | ||||
| 	      | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | ||||
| 	      | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ | ||||
| 	      | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | ||||
| 	      | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | ||||
| 	      | -hiux* | -386bsd* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \ | ||||
| 	      | -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | ||||
| 	      | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | ||||
| 	      | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | ||||
| 	      | -chorusos* | -chorusrdb* \ | ||||
| 	      | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | ||||
| 	      | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ | ||||
| 	      | -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \ | ||||
| 	      | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | ||||
| 	      | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | ||||
| 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | ||||
| 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | ||||
| 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | ||||
| 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) | ||||
| 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei*) | ||||
| 	# Remember, each alternative MUST END IN *, to match a version number. | ||||
| 		;; | ||||
| 	-qnx*) | ||||
| @@ -1206,9 +1182,6 @@ case $os in | ||||
| 	-opened*) | ||||
| 		os=-openedition | ||||
| 		;; | ||||
|         -os400*) | ||||
| 		os=-os400 | ||||
| 		;; | ||||
| 	-wince*) | ||||
| 		os=-wince | ||||
| 		;; | ||||
| @@ -1230,9 +1203,6 @@ case $os in | ||||
| 	-atheos*) | ||||
| 		os=-atheos | ||||
| 		;; | ||||
| 	-syllable*) | ||||
| 		os=-syllable | ||||
| 		;; | ||||
| 	-386bsd) | ||||
| 		os=-bsd | ||||
| 		;; | ||||
| @@ -1255,9 +1225,6 @@ case $os in | ||||
| 	-sinix*) | ||||
| 		os=-sysv4 | ||||
| 		;; | ||||
|         -tpf*) | ||||
| 		os=-tpf | ||||
| 		;; | ||||
| 	-triton*) | ||||
| 		os=-sysv3 | ||||
| 		;; | ||||
| @@ -1374,9 +1341,6 @@ case $basic_machine in | ||||
| 	*-ibm) | ||||
| 		os=-aix | ||||
| 		;; | ||||
|     	*-knuth) | ||||
| 		os=-mmixware | ||||
| 		;; | ||||
| 	*-wec) | ||||
| 		os=-proelf | ||||
| 		;; | ||||
| @@ -1509,15 +1473,9 @@ case $basic_machine in | ||||
| 			-mvs* | -opened*) | ||||
| 				vendor=ibm | ||||
| 				;; | ||||
| 			-os400*) | ||||
| 				vendor=ibm | ||||
| 				;; | ||||
| 			-ptx*) | ||||
| 				vendor=sequent | ||||
| 				;; | ||||
| 			-tpf*) | ||||
| 				vendor=ibm | ||||
| 				;; | ||||
| 			-vxsim* | -vxworks* | -windiss*) | ||||
| 				vendor=wrs | ||||
| 				;; | ||||
|   | ||||
							
								
								
									
										164
									
								
								configure.in
									
									
									
									
									
								
							
							
						
						
									
										164
									
								
								configure.in
									
									
									
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001-2005 Alexander Barton <alex@barton.de> | ||||
| # Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 | ||||
| @@ -8,19 +8,19 @@ | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: configure.in,v 1.102.2.6 2005/01/26 22:05:26 alex Exp $ | ||||
| # $Id: configure.in,v 1.89.2.16 2004/02/05 13:33:24 alex Exp $ | ||||
| # | ||||
|  | ||||
| # -- Initialisation -- | ||||
| # -- Initialisierung -- | ||||
|  | ||||
| AC_PREREQ(2.50) | ||||
| AC_INIT(ngircd, 0.8.2) | ||||
| AC_INIT(ngircd, 0.7.7) | ||||
| AC_CONFIG_SRCDIR(src/ngircd/ngircd.c) | ||||
| AC_CANONICAL_TARGET | ||||
| AM_INIT_AUTOMAKE(1.6) | ||||
| AM_CONFIG_HEADER(src/config.h) | ||||
|  | ||||
| # -- Templates for config.h -- | ||||
| # -- Templates fuer config.h -- | ||||
|  | ||||
| AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled]) | ||||
| AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists]) | ||||
| @@ -31,7 +31,6 @@ AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled]) | ||||
| AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used]) | ||||
| AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used]) | ||||
| AH_TEMPLATE([RENDEZVOUS], [Define if Rendezvous support should be included]) | ||||
| AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests]) | ||||
|  | ||||
| AH_TEMPLATE([TARGET_OS], [Target operating system name]) | ||||
| AH_TEMPLATE([TARGET_VENDOR], [Target system vendor]) | ||||
| @@ -41,7 +40,7 @@ AH_TEMPLATE([TARGET_CPU], [Target CPU name]) | ||||
|  | ||||
| AC_PROG_CC | ||||
|  | ||||
| # -- Helper programs -- | ||||
| # -- Hilfsprogramme -- | ||||
|  | ||||
| AC_PROG_AWK | ||||
| AC_PROG_INSTALL | ||||
| @@ -51,33 +50,47 @@ AC_PROG_RANLIB | ||||
|  | ||||
| # -- Compiler Features -- | ||||
|  | ||||
| AC_LANG_C | ||||
|  | ||||
| AM_C_PROTOTYPES | ||||
| AC_C_CONST | ||||
|  | ||||
| # -- Hard coded system and compiler dependencies/features/options ... -- | ||||
| # -- Defines -- | ||||
|  | ||||
| if test "$GCC" = "yes"; then | ||||
| 	# We are using the GNU C compiler. Good! | ||||
| 	CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes" | ||||
| os=`uname` | ||||
|  | ||||
| if test "$os" = "Linux" -o $os = "GNU"; then | ||||
| 	# define _POSIX_SOURCE, _GNU_SOURCE and _BSD_SOURCE when compiling | ||||
| 	# on Linux or Hurd (glibc-based systems): | ||||
| 	AC_MSG_RESULT([detected ${os}, defining _POSIX_SOURCE, _GNU_SOURCE and _BSD_SOURCE]) | ||||
| 	add_DEFINES="-D_POSIX_SOURCE -D_GNU_SOURCE -D_BSD_SOURCE $add_DEFINES" | ||||
| fi | ||||
|  | ||||
| case "$target_os" in | ||||
| 	hpux*) | ||||
| 		# This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED | ||||
| 		# (tested with HP/UX 11.11) | ||||
| 		CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED" | ||||
| 		;; | ||||
| esac | ||||
| if test "$os" = "A/UX"; then | ||||
| 	# define _POSIX_SOURCE when compiling on A/UX: | ||||
| 	AC_MSG_RESULT([detected A/UX, defining _POSIX_SOURCE]) | ||||
| 	add_DEFINES="-D_POSIX_SOURCE $add_DEFINES" | ||||
| fi | ||||
|  | ||||
| # Add additional CFLAGS, eventually specified on the command line: | ||||
| test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD" | ||||
| if test "$os" = "HP-UX"; then | ||||
| 	# define _XOPEN_SOURCE_EXTENDED when compiling on HP-UX (11.11): | ||||
| 	AC_MSG_RESULT([detected HP-UX, defining _XOPEN_SOURCE_EXTENDED]) | ||||
| 	add_DEFINES="-D_XOPEN_SOURCE_EXTENDED $add_DEFINES" | ||||
| fi | ||||
|  | ||||
| CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'" | ||||
| if test "$os" = "SunOS"; then | ||||
| 	# define _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED=1 and __EXTENSIONS__ | ||||
| 	# when compiling on SunOS (tested with 5.6): | ||||
| 	AC_MSG_RESULT([detected SunOS, defining _XOPEN_SOURCE, _XOPEN_SOURCE_EXTENDED=1 and __EXTENSIONS__]) | ||||
| 	add_DEFINES="-D_XOPEN_SOURCE -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__ $add_DEFINES" | ||||
| fi | ||||
|  | ||||
| # -- Headers -- | ||||
| # -- Header -- | ||||
|  | ||||
| AC_HEADER_STDC | ||||
|  | ||||
| AC_HEADER_TIME | ||||
|  | ||||
| AC_HEADER_SYS_WAIT | ||||
|  | ||||
| AC_CHECK_HEADERS([ \ | ||||
| @@ -87,7 +100,7 @@ AC_CHECK_HEADERS([ \ | ||||
|  | ||||
| AC_CHECK_HEADERS([arpa/inet.h ctype.h malloc.h stdint.h varargs.h]) | ||||
|  | ||||
| # -- Datatypes -- | ||||
| # -- Datentypen -- | ||||
|  | ||||
| AC_MSG_CHECKING(whether socklen_t exists) | ||||
| AC_TRY_COMPILE([ | ||||
| @@ -103,6 +116,7 @@ AC_TRY_COMPILE([ | ||||
| ]) | ||||
|  | ||||
| AC_TYPE_SIGNAL | ||||
|  | ||||
| AC_TYPE_SIZE_T | ||||
|  | ||||
| # -- Libraries -- | ||||
| @@ -111,15 +125,18 @@ AC_CHECK_LIB(UTIL,memmove) | ||||
| AC_CHECK_LIB(socket,bind) | ||||
| AC_CHECK_LIB(nsl,gethostent) | ||||
|  | ||||
| # -- Functions -- | ||||
| # -- Funktionen -- | ||||
|  | ||||
| AC_FUNC_MALLOC | ||||
|  | ||||
| AC_FUNC_FORK | ||||
|  | ||||
| AC_FUNC_STRFTIME | ||||
|  | ||||
| AC_CHECK_FUNCS([ \ | ||||
| 	bind gethostbyaddr gethostbyname gethostname inet_ntoa malloc memmove \ | ||||
| 	memset realloc setsid setsockopt socket strcasecmp strchr strerror \ | ||||
| 	strstr waitpid],,AC_MSG_ERROR([required function missing!])) | ||||
| 	bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \ | ||||
| 	memset setsockopt socket strcasecmp strchr strerror strstr waitpid \ | ||||
| 	],,AC_MSG_ERROR([required function missing!])) | ||||
|  | ||||
| AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf strlcpy strlcat) | ||||
|  | ||||
| @@ -127,7 +144,7 @@ AC_CHECK_FUNCS(select,[AC_CHECK_HEADERS(sys/select.h)], | ||||
| 	AC_MSG_ERROR([required function select() is missing!]) | ||||
| ) | ||||
|  | ||||
| # -- Configuration options -- | ||||
| # -- Konfigurationsoptionen -- | ||||
|  | ||||
| x_syslog_on=no | ||||
| AC_ARG_WITH(syslog, | ||||
| @@ -206,22 +223,6 @@ if test "$x_rendezvous_on" = "yes"; then | ||||
| 	AC_CHECK_HEADERS(DNSServiceDiscovery/DNSServiceDiscovery.h mach/port.h) | ||||
| fi | ||||
|  | ||||
| x_identauth_on=no | ||||
| AC_ARG_WITH(ident, | ||||
| 	[  --with-ident            enable "IDENT" ("AUTH") protocol support], | ||||
| 	[	if test "$withval" = "yes"; then | ||||
| 			AC_CHECK_LIB(ident, ident_id) | ||||
| 			AC_CHECK_FUNCS(ident_id, x_identauth_on=yes, | ||||
| 				AC_MSG_ERROR([Can't enable IDENT support!]) | ||||
| 			) | ||||
| 		fi | ||||
| 	] | ||||
| ) | ||||
| if test "$x_identauth_on" = "yes"; then | ||||
| 	AC_DEFINE(IDENTAUTH, 1) | ||||
| 	AC_CHECK_HEADERS(ident.h) | ||||
| fi | ||||
|  | ||||
| x_ircplus_on=yes | ||||
| AC_ARG_ENABLE(ircplus, | ||||
| 	[  --disable-ircplus       disable IRC+ protocol], | ||||
| @@ -246,7 +247,6 @@ AC_ARG_ENABLE(debug, | ||||
| ) | ||||
| if test "$x_debug_on" = "yes"; then | ||||
| 	AC_DEFINE(DEBUG, 1) | ||||
| 	test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS" | ||||
| fi | ||||
|  | ||||
| x_strict_rfc_on=no | ||||
| @@ -258,21 +258,59 @@ AC_ARG_ENABLE(strict-rfc, | ||||
| 	fi | ||||
| ) | ||||
|  | ||||
| # -- Definitions -- | ||||
| # -- Definitionen -- | ||||
|  | ||||
| AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" ) | ||||
| AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" ) | ||||
| AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" ) | ||||
|  | ||||
| # Add additional CFLAGS, eventually specified on the command line, but after | ||||
| # running this configure script. Useful for "-Werror" for example. | ||||
| test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END" | ||||
| # -- Variablen -- | ||||
|  | ||||
| # -- Generate files -- | ||||
| if test "$GCC" = "yes"; then | ||||
| 	the_CFLAGS="-Wmissing-declarations -Wpointer-arith -Wstrict-prototypes" | ||||
| 	ansi=" -ansi" | ||||
| 	pedantic=" -pedantic" | ||||
|  | ||||
| 	$CC --version | grep 20020420 >/dev/null 2>&1 | ||||
| 	if test $? -eq 0; then | ||||
| 		# Mac OS X (and Darwin?) ship with a slightly broken | ||||
| 		# prerelease of GCC 3.1 which don't like -pedantic: | ||||
| 		AC_MSG_RESULT([detected broken GNU C compiler, disabling "-pedantic"]) | ||||
| 		pedantic="" | ||||
| 	fi | ||||
|  | ||||
| 	$CC --version | grep 20030304 >/dev/null 2>&1 | ||||
| 	if test $? -eq 0; then | ||||
| 		# Mac OS X 10.3 (and Darwin 7.0?) have a strange gcc (or | ||||
| 		# system header files?) which produces lots of errors when | ||||
| 		# using -ansi; so we don't =:-) | ||||
| 		AC_MSG_RESULT([detected broken GNU C compiler, disabling "-ansi"]) | ||||
| 		ansi="" | ||||
| 	fi | ||||
|  | ||||
| 	uname | grep "CYGWIN" >/dev/null 2>&1 | ||||
| 	if test $? -eq 0; then | ||||
| 		# The include files of Cygwin don't like -ansi, | ||||
| 		# so we disable it: | ||||
| 		AC_MSG_RESULT([detected Cygwin, disabling "-ansi"]) | ||||
| 		ansi="" | ||||
| 	fi | ||||
|  | ||||
| 	add_CFLAGS="-pipe -Wall -W${ansi}${pedantic} $CFLAGS $CFLAGS_ADD" | ||||
| else | ||||
| 	the_CFLAGS="$CFLAGS" | ||||
| 	add_CFLAGS="$CFLAGS_ADD" | ||||
| fi | ||||
|  | ||||
| CFLAGS="$the_CFLAGS $add_CFLAGS $add_DEFINES -DSYSCONFDIR='\"\$(sysconfdir)\"'" | ||||
|  | ||||
| # -- Ausgabe der Dateien -- | ||||
|  | ||||
| AC_OUTPUT([ \ | ||||
| 	Makefile \ | ||||
| 	doc/Makefile \ | ||||
| 	MacOSX/Makefile \ | ||||
| 	MacOSX/ngircd.pbproj/Makefile \ | ||||
| 	src/Makefile \ | ||||
| 	src/portab/Makefile \ | ||||
| 	src/tool/Makefile \ | ||||
| @@ -280,18 +318,9 @@ AC_OUTPUT([ \ | ||||
| 	src/testsuite/Makefile \ | ||||
| 	man/Makefile \ | ||||
| 	contrib/Makefile \ | ||||
| 	contrib/Debian/Makefile \ | ||||
| 	contrib/MacOSX/Makefile \ | ||||
| 	debian/Makefile \ | ||||
| ]) | ||||
|  | ||||
| type dpkg >/dev/null 2>&1 | ||||
| if test $? -eq 0; then | ||||
| 	# Generate debian/ link if the dpkg command exists | ||||
| 	# (read: if we are running on a debian compatible system) | ||||
| 	echo "creating Debian-specific links ..." | ||||
| 	test -f debian/rules || ln -s contrib/Debian debian | ||||
| fi | ||||
|  | ||||
| # -- Result -- | ||||
|  | ||||
| echo | ||||
| @@ -305,10 +334,11 @@ C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}` | ||||
| M=`eval echo ${mandir}` ; M=`eval echo ${M}` | ||||
| D=`eval echo ${datadir}/doc/${PACKAGE}` ; D=`eval echo ${D}` | ||||
|  | ||||
| echo "             Target: ${target}" | ||||
| test "$target" != "$host" && echo "               Host: ${host}" | ||||
| echo "               Host: ${host}" | ||||
| echo "           Compiler: ${CC}" | ||||
| test -n "$CFLAGS"	&& echo "     Compiler flags: ${CFLAGS}" | ||||
| echo "     Compiler flags: ${the_CFLAGS}" | ||||
| test -n "$add_CFLAGS"	&& echo "                     ${add_CFLAGS}" | ||||
| test -n "$add_DEFINES"	&& echo "                     ${add_DEFINES}" | ||||
| test -n "$CPPFLAGS"	&& echo " Preprocessor flags: ${CPPFLAGS}" | ||||
| test -n "$LDFLAGS"	&& echo "       Linker flags: ${LDFLAGS}" | ||||
| test -n "$LIBS"		&& echo "          Libraries: ${LIBS}" | ||||
| @@ -354,12 +384,6 @@ echo $ECHO_N "      IRC+ protocol: $ECHO_C" | ||||
| test "$x_ircplus_on" = "yes" \ | ||||
| 	&& echo "yes" \ | ||||
| 	|| echo "no" | ||||
|  | ||||
| echo $ECHO_N "      IDENT support: $ECHO_C" | ||||
| test "$x_identauth_on" = "yes" \ | ||||
| 	&& echo $ECHO_N "yes $ECHO_C" \ | ||||
| 	|| echo $ECHO_N "no  $ECHO_C" | ||||
|  | ||||
| echo; echo | ||||
| echo | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
| @@ -1,28 +0,0 @@ | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.3.2.1 2004/05/11 00:38:17 alex Exp $ | ||||
| # | ||||
|  | ||||
| EXTRA_DIST = rules changelog compat control copyright \ | ||||
| 	ngircd.init ngircd.postinst | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile Makefile.in | ||||
|  | ||||
| clean-local: | ||||
| 	rm -f ngircd.postinst.debhelper ngircd.postrm.debhelper \ | ||||
| 	 ngircd.prerm.debhelper ngircd.substvars | ||||
| 	rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \ | ||||
| 	 ngircd-full.prerm.debhelper ngircd-full.substvars | ||||
| 	rm -rf ngircd ngircd-full | ||||
| 	rm -f files | ||||
|  | ||||
| # -eof- | ||||
| @@ -1,149 +0,0 @@ | ||||
| ngircd (0.8.2-0ab1) unstable; urgency=high | ||||
|  | ||||
|   * New "upstream release", including security fixes. | ||||
|  | ||||
|  -- alex <alex@Arthur.Ath.CX>  Wed, 26 Jan 2005 23:14:12 +0100 | ||||
|  | ||||
| ngircd (0.8.1-0ab1) unstable; urgency=low | ||||
|  | ||||
|   * New "upstream release". | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 25 Dec 2004 01:18:32 +0100 | ||||
|  | ||||
| ngircd (0.8.0-0ab2) unstable; urgency=low | ||||
|  | ||||
|   * Added missing commas to debian control file, fixes bug #56. | ||||
|     Thanks to Kevin Otte. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Thu, 15 Jul 2004 10:53:39 +0200 | ||||
|  | ||||
| ngircd (0.8.0-0ab1) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 26 Jun 2004 11:25:59 +0200 | ||||
|  | ||||
| ngircd (0.7.7+HEAD-0ab5) unstable; urgency=low | ||||
|  | ||||
|   * Updates from CVS HEAD branch, most notably: "INVITE- and BAN-lists | ||||
|     become synchronized between IRC+ servers when establishing new | ||||
|     connections, if the peer supports this as well." | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Mon, 26 Apr 2004 01:53:15 +0200 | ||||
|  | ||||
| ngircd (0.7.7+HEAD-0ab4) unstable; urgency=low | ||||
|  | ||||
|   * This version includes fixes for INVITE command and the handling of the | ||||
|     invite and ban lists from CVS-HEAD. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  9 Apr 2004 23:55:13 +0200 | ||||
|  | ||||
| ngircd (0.7.7+HEAD-0ab3) unstable; urgency=low | ||||
|  | ||||
|   * Included MODE fix from CVS-HEAD branch. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Mon,  5 Apr 2004 13:09:24 +0200 | ||||
|  | ||||
| ngircd (0.7.7+HEAD-0ab2) unstable; urgency=low | ||||
|  | ||||
|   * Incorporated more fixes and enhancements of CVS-HEAD version, | ||||
|     e. g. better connection logging and fixed TRACE command. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 28 Feb 2004 03:20:32 +0100 | ||||
|  | ||||
| ngircd (0.7.7+HEAD-0ab1) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version. This debian package includes all features of | ||||
|     ngIRCd 0.7.7 and changes of the CVS-HEAD development tree. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Thu,  5 Feb 2004 15:23:22 +0100 | ||||
|  | ||||
| ngircd (0.7.6+HEAD-0ab2) unstable; urgency=low | ||||
|  | ||||
|   * Included new fixes and additions from the CVS-HEAD upstream branch, | ||||
|     e. g. the setting of type of service (TOS) on sockets. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Mon, 26 Jan 2004 04:05:41 +0100 | ||||
|  | ||||
| ngircd (0.7.6+HEAD-0ab1) unstable; urgency=low | ||||
|  | ||||
|   * Included all changes from the CVS-HEAD upstream version. | ||||
|   * Restructured debian packaging system: now there are two packages, a | ||||
|     "standard" version that includes all the default options and a "full" | ||||
|     version that additionally includes support for TCP wrappers and IDENT | ||||
|     lookups. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Thu,  1 Jan 2004 23:12:11 +0100 | ||||
|  | ||||
| ngircd (0.7.6-0ab1) unstable; urgency=medium | ||||
|  | ||||
|   * New upstream version. | ||||
|   * Changed version numvering scheme of debian package. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  5 Dec 2003 14:26:41 +0100 | ||||
|  | ||||
| ngircd (0.7.5-0.2ab) unstable; urgency=low | ||||
|  | ||||
|   * Updated RPM and Debian package description and configuration. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 29 Nov 2003 21:24:32 +0100 | ||||
|  | ||||
| ngircd (0.7.5-0.1ab) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  7 Nov 2003 21:59:58 +0100 | ||||
|  | ||||
| ngircd (0.7.1-0.1ab) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version :-) | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri, 18 Jul 2003 22:53:02 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.7ab) unstable; urgency=low | ||||
|  | ||||
|   * Fixed up post installation script (added interpreter, fixed chmod call). | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sun, 13 Jul 2003 00:52:38 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.6ab) unstable; urgency=low | ||||
|  | ||||
|   * Added /etc/default/ngircd. | ||||
|   * Included own post installation script. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 12 Jul 2003 20:31:09 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.5ab) unstable; urgency=low | ||||
|  | ||||
|   * Enhanced init script. | ||||
|   * Included NJOIN fix from actual CVS "HEAD" branch. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Wed,  9 Jul 2003 22:40:49 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.4ab) unstable; urgency=low | ||||
|  | ||||
|   * Reverted use of dh_installexamples. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Thu, 22 May 2003 00:15:03 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.3ab) unstable; urgency=low | ||||
|  | ||||
|   * Removed "debian/docs" and "debian/conffiles"; debhelper takes care of | ||||
|     this for us automagically. | ||||
|   * Excluded "etc/ngircd.conf" from dh_fixperms. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Wed, 21 May 2003 23:25:05 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.2ab) unstable; urgency=low | ||||
|  | ||||
|   * Fixed wrong variable substitution in init script. | ||||
|   * Added some CVS "Id-Tags" (but not checked in, yet). | ||||
|   * Removed own "Provides:" from control file. | ||||
|  | ||||
|  -- Alexander Barton <alex@barton.de>  Wed, 21 May 2003 12:32:34 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.1ab) unstable; urgency=low | ||||
|  | ||||
|   * Initial Release. | ||||
|  | ||||
|  -- Alexander Barton <alex@barton.de>  Wed, 21 May 2003 02:36:52 +0200 | ||||
| @@ -1,47 +0,0 @@ | ||||
| Source: ngircd | ||||
| Section: net | ||||
| Priority: optional | ||||
| Maintainer: Alexander Barton <alex@barton.de> | ||||
| Build-Depends: debhelper (>> 4.0.0), libz-dev, libwrap-dev, libident-dev | ||||
| Standards-Version: 3.5.8 | ||||
|  | ||||
| Package: ngircd | ||||
| Architecture: any | ||||
| Depends: ${shlibs:Depends}, ${misc:Depends} | ||||
| Description: A lightweight daemon for the Internet Relay Chat (IRC) | ||||
|  ngIRCd is a free open source daemon for the Internet Relay Chat (IRC) | ||||
|  network. It is written from scratch and is not based upon the original | ||||
|  IRCd like many others. | ||||
|  . | ||||
|  This package contains the "standard distribution", including support for | ||||
|  syslog logging and compressed server-links using zlib. | ||||
|  . | ||||
|  Advantages of ngIRCd: | ||||
|   - no problems with servers using changing/non-static IP addresses. | ||||
|   - small and lean configuration file. | ||||
|   - free, modern and open source C code. | ||||
|   - still under active development. | ||||
|  . | ||||
|  ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run | ||||
|  mixed networks. | ||||
|  | ||||
| Package: ngircd-full | ||||
| Architecture: any | ||||
| Depends: ${shlibs:Depends}, ${misc:Depends} | ||||
| Conflicts: ngircd | ||||
| Description: A lightweight daemon for the Internet Relay Chat (IRC) | ||||
|  ngIRCd is a free open source daemon for the Internet Relay Chat (IRC) | ||||
|  network. It is written from scratch and is not based upon the original | ||||
|  IRCd like many others. | ||||
|  . | ||||
|  This package includes support for TCP wrappers and IDENT requests in | ||||
|  addition to the features of the "standard package". | ||||
|  . | ||||
|  Advantages of ngIRCd: | ||||
|   - no problems with servers using changing/non-static IP addresses. | ||||
|   - small and lean configuration file. | ||||
|   - free, modern and open source C code. | ||||
|   - still under active development. | ||||
|  . | ||||
|  ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run | ||||
|  mixed networks. | ||||
| @@ -1,156 +0,0 @@ | ||||
| #!/usr/bin/make -f | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # debian/rules for ngIRCd | ||||
| # | ||||
| # $Id: rules,v 1.2 2004/01/01 22:24:48 alex Exp $ | ||||
| # | ||||
| # Based on the sample debian/rules that uses debhelper, | ||||
| # GNU copyright 1997 to 1999 by Joey Hess. | ||||
| # | ||||
|  | ||||
| # Uncomment this to turn on verbose mode. | ||||
| #export DH_VERBOSE=1 | ||||
|  | ||||
| # These are used for cross-compiling and for saving the configure script | ||||
| # from having to guess our platform (since we know it already) | ||||
| DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) | ||||
| DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) | ||||
|  | ||||
| CFLAGS = -Wall -g | ||||
|  | ||||
| ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) | ||||
| 	CFLAGS += -O0 | ||||
| else | ||||
| 	CFLAGS += -O2 | ||||
| endif | ||||
| ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) | ||||
| 	INSTALL_PROGRAM += -s | ||||
| endif | ||||
|  | ||||
| configure-ngircd: configure | ||||
| 	dh_testdir | ||||
|  | ||||
| 	# configure "standard" variant: | ||||
| 	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ | ||||
| 	  --prefix=/usr \ | ||||
| 	  --sysconfdir=/etc/ngircd \ | ||||
| 	  --mandir=\$${prefix}/share/man \ | ||||
| 	  --with-syslog --with-zlib | ||||
|  | ||||
| configure-ngircd-full: configure | ||||
| 	dh_testdir | ||||
|  | ||||
| 	# configure "full" variant: | ||||
| 	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ | ||||
| 	  --prefix=/usr \ | ||||
| 	  --sysconfdir=/etc/ngircd \ | ||||
| 	  --mandir=\$${prefix}/share/man \ | ||||
| 	  --with-syslog --with-zlib --with-tcp-wrappers --with-ident | ||||
|  | ||||
| build: | ||||
| 	dh_clean -k | ||||
|  | ||||
| build-ngircd: build-stamp-ngircd | ||||
| build-stamp-ngircd: configure-ngircd | ||||
| 	dh_testdir | ||||
| 	rm -f build-stamp-* | ||||
|  | ||||
| 	# Add here commands to compile the "standard" package: | ||||
| 	$(MAKE) | ||||
|  | ||||
| 	touch build-stamp-ngircd | ||||
|  | ||||
| build-ngircd-full: build-stamp-ngircd-full | ||||
| build-stamp-ngircd-full: configure-ngircd-full | ||||
| 	dh_testdir | ||||
| 	rm -f build-stamp-* | ||||
|  | ||||
| 	# Add here commands to compile the "full" package: | ||||
| 	$(MAKE) | ||||
|  | ||||
| 	touch build-stamp-ngircd-full | ||||
|  | ||||
| clean: | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	rm -f build-stamp* | ||||
| 	rm -f $(CURDIR)/debian/ngircd-full.default | ||||
| 	rm -f $(CURDIR)/debian/ngircd-full.init | ||||
| 	rm -f $(CURDIR)/debian/ngircd-full.postinst | ||||
|  | ||||
| 	# Add here commands to clean up after the build process: | ||||
| 	-$(MAKE) clean | ||||
|  | ||||
| ifneq "$(wildcard /usr/share/misc/config.sub)" "" | ||||
| 	cp -f /usr/share/misc/config.sub config.sub | ||||
| endif | ||||
| ifneq "$(wildcard /usr/share/misc/config.guess)" "" | ||||
| 	cp -f /usr/share/misc/config.guess config.guess | ||||
| endif | ||||
| 	dh_clean | ||||
|  | ||||
| install: install-ngircd install-ngircd-full | ||||
|  | ||||
| install-ngircd: build-ngircd | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	dh_installdirs | ||||
|  | ||||
| 	# Add here commands to install the "standard" package into debian/ngircd: | ||||
| 	$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd | ||||
| 	rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/INSTALL* | ||||
| 	rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING* | ||||
|  | ||||
| install-ngircd-full: build-ngircd-full | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	dh_installdirs | ||||
|  | ||||
| 	# Add here commands to install the "full" package into debian/ngircd-full: | ||||
| 	$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full | ||||
| 	rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/INSTALL* | ||||
| 	rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/COPYING* | ||||
| 	mv $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd \ | ||||
| 	 $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full | ||||
|  | ||||
| # Build architecture-independent files here. | ||||
| binary-indep: | ||||
| 	# We have nothing to do by default. | ||||
|  | ||||
| # Build architecture-dependent files here. | ||||
| binary-arch: build install | ||||
| 	ln -s $(CURDIR)/debian/ngircd.default \ | ||||
| 	 $(CURDIR)/debian/ngircd-full.default | ||||
| 	ln -s $(CURDIR)/debian/ngircd.init \ | ||||
| 	 $(CURDIR)/debian/ngircd-full.init | ||||
| 	ln -s $(CURDIR)/debian/ngircd.postinst \ | ||||
| 	 $(CURDIR)/debian/ngircd-full.postinst | ||||
| 	 | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	dh_installchangelogs -a -A ChangeLog | ||||
| 	dh_installdocs -a | ||||
| 	dh_installinit -a | ||||
| 	dh_strip -a | ||||
| 	dh_compress -a | ||||
| 	dh_fixperms -a | ||||
| 	dh_installdeb -a | ||||
| 	dh_shlibdeps -a | ||||
| 	dh_gencontrol -a | ||||
| 	dh_md5sums -a | ||||
| 	dh_builddeb -a | ||||
|  | ||||
| binary: binary-indep binary-arch | ||||
|  | ||||
| .PHONY: build clean binary-indep binary-arch binary install  | ||||
|  | ||||
| # -eof- | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -1,6 +1,6 @@ | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001-2004 Alexander Barton <alex@barton.de> | ||||
| # Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen | ||||
| # der GNU General Public License (GPL), wie von der Free Software Foundation | ||||
| @@ -9,12 +9,10 @@ | ||||
| # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste | ||||
| # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.4 2004/04/28 12:18:02 alex Exp $ | ||||
| # $Id: Makefile.am,v 1.1 2002/10/01 09:57:08 alex Exp $ | ||||
| # | ||||
|  | ||||
| SUBDIRS = Debian MacOSX | ||||
|  | ||||
| EXTRA_DIST = README ngircd.spec systrace.policy | ||||
| EXTRA_DIST = ngircd.spec | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile Makefile.in | ||||
|   | ||||
| @@ -1,27 +0,0 @@ | ||||
|  | ||||
|                      ngIRCd - Next Generation IRC Server | ||||
|  | ||||
|                       (c)2001-2004 by Alexander Barton, | ||||
|                     alex@barton.de, http://www.barton.de/ | ||||
|  | ||||
|                ngIRCd is free software and published under the | ||||
|                    terms of the GNU General Public License. | ||||
|  | ||||
|                             -- Contributions -- | ||||
|  | ||||
|  | ||||
| MacOSX/ | ||||
|  - Project file for XCode "project builder" of Mac OS X. | ||||
|  | ||||
| Debian/ | ||||
|  - Various files for building Debian packages. | ||||
|  | ||||
| ngircd.spec | ||||
|  - RPM "spec" file. | ||||
|  | ||||
| systrace.policy | ||||
|  - Systrace policy file for OpenBSD (and probably NetBSD). | ||||
|  | ||||
|  | ||||
| -- | ||||
| $Id: README,v 1.1 2004/04/28 12:18:50 alex Exp $ | ||||
| @@ -1,5 +1,5 @@ | ||||
| %define name    ngircd | ||||
| %define version 0.8.2 | ||||
| %define version 0.7.7 | ||||
| %define release 1 | ||||
| %define prefix  %{_prefix} | ||||
|  | ||||
|   | ||||
| @@ -1,77 +0,0 @@ | ||||
| # | ||||
| # Sample systrace policy for ngIRCd on OpenBSD | ||||
| # Author: Benjamin Pineau <ben@zouh.org> | ||||
| # | ||||
| # $Id: systrace.policy,v 1.1 2004/04/28 12:16:59 alex Exp $ | ||||
| # | ||||
| # Tune me, put me in /etc/systrace/usr_local_bin_ngircd and start ngIRCd | ||||
| # (with root privileges) as: | ||||
| # | ||||
| #   systrace -a /usr/local/bin/ngircd | ||||
| # | ||||
| # I didn't tried this on NetBSD, but it should work as is. | ||||
| # | ||||
| # On systems with pf, it can be supplemented by strict firewall rules: | ||||
| # for a ngircd running as '$ircuser', binding on '$ircport' and accepting | ||||
| # 30 connections: | ||||
| # | ||||
| #   block out log quick proto tcp from any port $ircport to any \ | ||||
| #    user != $ircuser | ||||
| #   pass in inet proto tcp from any to any port $ircport user $ircuser \ | ||||
| #    keep state (max 30) flags S/SA | ||||
| # | ||||
|  | ||||
| Policy: /usr/local/bin/ngircd, Emulation: native | ||||
| 	native-__sysctl: permit | ||||
| 	native-fsread: filename eq "/etc/malloc.conf" then permit | ||||
| 	native-fsread: filename sub "/usr/share/zoneinfo/" then permit | ||||
| 	native-fsread: filename eq "/usr/local/etc/ngircd.conf" then permit | ||||
| 	native-fsread: filename eq "/usr/local/etc/ngircd.motd" then permit | ||||
| 	native-fsread: filename eq "/etc/ngircd.conf" then permit | ||||
| 	native-fsread: filename eq "/etc/ngircd.motd" then permit | ||||
| 	native-fsread: filename eq "/etc/spwd.db" then deny[eperm] | ||||
| 	native-fsread: filename eq "/etc/group" then permit | ||||
| 	native-fsread: filename eq "/etc/resolv.conf" then permit | ||||
| 	native-fsread: filename eq "/etc/localtime" then permit | ||||
| 	native-fsread: filename eq "/etc/hosts" then permit | ||||
| 	native-fsread: filename sub "<non-existent filename>" then deny[enoent] | ||||
| 	native-socket: sockdom eq "AF_UNIX" and socktype eq "SOCK_DGRAM" then permit | ||||
| 	native-socket: sockdom eq "AF_INET" and socktype eq "SOCK_STREAM" then permit | ||||
| 	native-bind: sockaddr match "inet-*:6667" then permit, if user != root | ||||
| 	native-connect: sockaddr eq "/dev/log" then permit, if user != root | ||||
| 	native-connect: sockaddr match "inet-*:53" then permit, if user != root | ||||
| 	native-setsockopt: permit, if user != root | ||||
| 	native-listen: permit, if user != root | ||||
| 	native-accept: permit, if user != root | ||||
| 	native-sendto: true then permit, if user != root | ||||
| 	native-recvfrom: permit, if user != root | ||||
| 	native-read: permit | ||||
| 	native-pread: permit | ||||
| 	native-write: permit, if user != root | ||||
| 	native-mmap: permit | ||||
| 	native-munmap: permit | ||||
| 	native-mprotect: permit | ||||
| 	native-break: permit | ||||
| 	native-umask: permit | ||||
| 	native-fork: permit | ||||
| 	native-setsid: permit | ||||
| 	native-chdir: permit | ||||
| 	native-chroot: permit | ||||
| 	native-setgid: gid neq "0" then permit | ||||
| 	native-setuid: uid neq "0" and uname neq "root" then permit | ||||
| 	native-getuid: permit | ||||
| 	native-getgid: permit | ||||
| 	native-gettimeofday: permit | ||||
| 	native-getpid: permit | ||||
| 	native-select: permit | ||||
| 	native-fcntl: permit | ||||
| 	native-fstat: permit | ||||
| 	native-issetugid: permit | ||||
| 	native-sigaction: permit | ||||
| 	native-pipe: permit | ||||
| 	native-sigreturn: permit | ||||
| 	native-close: permit | ||||
| 	native-exit: permit | ||||
| 	native-fswrite: deny[eperm] | ||||
|  | ||||
| # -eof- | ||||
| @@ -1,6 +1,6 @@ | ||||
| #
 | ||||
| # ngIRCd -- The Next Generation IRC Daemon
 | ||||
| # Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
 | ||||
| # Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
 | ||||
| #
 | ||||
| # 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
 | ||||
| @@ -8,11 +8,11 @@ | ||||
| # (at your option) any later version.
 | ||||
| # Please read the file COPYING, README and AUTHORS for more information.
 | ||||
| #
 | ||||
| # $Id: Makefile.am,v 1.1.2.1 2004/05/11 00:38:17 alex Exp $
 | ||||
| # $Id: Makefile.am,v 1.1.2.2 2003/12/05 13:31:22 alex Exp $
 | ||||
| #
 | ||||
| 
 | ||||
| clean-local: | ||||
| 	rm -rf build | ||||
| EXTRA_DIST = rules changelog compat control copyright \
 | ||||
| 	ngircd.init ngircd.postinst | ||||
| 
 | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile Makefile.in | ||||
							
								
								
									
										78
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								debian/changelog
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,78 @@ | ||||
| ngircd (0.7.7-0ab1) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Thu,  5 Feb 2004 14:11:08 +0100 | ||||
|  | ||||
| ngircd (0.7.6-0ab1) unstable; urgency=medium | ||||
|  | ||||
|   * New upstream version. | ||||
|   * Changed version numvering scheme of debian package. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  5 Dec 2003 14:26:41 +0100 | ||||
|  | ||||
| ngircd (0.7.5-0.2ab) unstable; urgency=low | ||||
|  | ||||
|   * Updated RPM and Debian package description and configuration. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 29 Nov 2003 21:24:32 +0100 | ||||
|  | ||||
| ngircd (0.7.5-0.1ab) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri,  7 Nov 2003 21:59:58 +0100 | ||||
|  | ||||
| ngircd (0.7.1-0.1ab) unstable; urgency=low | ||||
|  | ||||
|   * New upstream version :-) | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Fri, 18 Jul 2003 22:53:02 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.7ab) unstable; urgency=low | ||||
|  | ||||
|   * Fixed up post installation script (added interpreter, fixed chmod call). | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sun, 13 Jul 2003 00:52:38 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.6ab) unstable; urgency=low | ||||
|  | ||||
|   * Added /etc/default/ngircd. | ||||
|   * Included own post installation script. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Sat, 12 Jul 2003 20:31:09 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.5ab) unstable; urgency=low | ||||
|  | ||||
|   * Enhanced init script. | ||||
|   * Included NJOIN fix from actual CVS "HEAD" branch. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Wed,  9 Jul 2003 22:40:49 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.4ab) unstable; urgency=low | ||||
|  | ||||
|   * Reverted use of dh_installexamples. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Thu, 22 May 2003 00:15:03 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.3ab) unstable; urgency=low | ||||
|  | ||||
|   * Removed "debian/docs" and "debian/conffiles"; debhelper takes care of | ||||
|     this for us automagically. | ||||
|   * Excluded "etc/ngircd.conf" from dh_fixperms. | ||||
|  | ||||
|  -- Alexander Barton <alex@Arthur.Ath.CX>  Wed, 21 May 2003 23:25:05 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.2ab) unstable; urgency=low | ||||
|  | ||||
|   * Fixed wrong variable substitution in init script. | ||||
|   * Added some CVS "Id-Tags" (but not checked in, yet). | ||||
|   * Removed own "Provides:" from control file. | ||||
|  | ||||
|  -- Alexander Barton <alex@barton.de>  Wed, 21 May 2003 12:32:34 +0200 | ||||
|  | ||||
| ngircd (0.7.0-0.1ab) unstable; urgency=low | ||||
|  | ||||
|   * Initial Release. | ||||
|  | ||||
|  -- Alexander Barton <alex@barton.de>  Wed, 21 May 2003 02:36:52 +0200 | ||||
							
								
								
									
										0
									
								
								contrib/Debian/compat → debian/compat
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								contrib/Debian/compat → debian/compat
									
									
									
									
										vendored
									
									
								
							
							
								
								
									
										23
									
								
								debian/control
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								debian/control
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,23 @@ | ||||
| Source: ngircd | ||||
| Section: net | ||||
| Priority: optional | ||||
| Maintainer: Alexander Barton <alex@barton.de> | ||||
| Build-Depends: debhelper (>> 4.0.0), libz-dev | ||||
| Standards-Version: 3.5.8 | ||||
|  | ||||
| Package: ngircd | ||||
| Architecture: any | ||||
| Depends: ${shlibs:Depends} ${misc:Depends} | ||||
| Description: A lightweight daemon for the Internet Relay Chat (IRC) | ||||
|  ngIRCd is a free open source daemon for the Internet Relay Chat (IRC) | ||||
|  network. It is written from scratch and is not based upon the original | ||||
|  IRCd like many others. | ||||
|  . | ||||
|  Advantages: | ||||
|   - no problems with servers using changing/non-static IP addresses. | ||||
|   - small and lean configuration file. | ||||
|   - free, modern and open source C code. | ||||
|   - still under active development. | ||||
|  . | ||||
|  ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run | ||||
|  mixed networks. | ||||
| @@ -1,7 +1,7 @@ | ||||
| # | ||||
| # Defaults for ngIRCd start and stop script | ||||
| # | ||||
| # $Id: ngircd.default,v 1.1 2003/12/31 17:20:11 alex Exp $ | ||||
| # $Id: ngircd.default,v 1.1.2.1 2003/07/12 18:23:24 alex Exp $ | ||||
| # | ||||
| 
 | ||||
| # Parameters to pass to the ngircd daemon on startup, see ngircd(8) for | ||||
							
								
								
									
										7
									
								
								contrib/Debian/ngircd.init → debian/ngircd.init
									
									
									
									
										vendored
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										7
									
								
								contrib/Debian/ngircd.init → debian/ngircd.init
									
									
									
									
										vendored
									
									
										
										
										Executable file → Normal file
									
								
							| @@ -2,20 +2,19 @@ | ||||
| # | ||||
| # ngIRCd start and stop script for Debian-based systems | ||||
| # | ||||
| # $Id: ngircd.init,v 1.1.2.1 2004/09/06 00:36:49 alex Exp $ | ||||
| # $Id: ngircd.init,v 1.1.2.1 2003/07/09 21:12:00 alex Exp $ | ||||
| # | ||||
| 
 | ||||
| PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin | ||||
| DAEMON=/usr/sbin/ngircd | ||||
| NAME=ngIRCd | ||||
| BASENAME=`basename $0` | ||||
| DESC="IRC daemon" | ||||
| PARAMS="" | ||||
| 
 | ||||
| test -f /etc/default/$BASENAME && . /etc/default/$BASENAME | ||||
| 
 | ||||
| test -x $DAEMON || exit 0 | ||||
| 
 | ||||
| test -f /etc/default/ngircd && . /etc/default/ngircd | ||||
| 
 | ||||
| Check_Config() | ||||
| { | ||||
| 	$DAEMON --configtest >/dev/null 2>&1 | ||||
							
								
								
									
										2
									
								
								contrib/Debian/ngircd.postinst → debian/ngircd.postinst
									
									
									
									
										vendored
									
									
										
										
										Executable file → Normal file
									
								
							
							
						
						
									
										2
									
								
								contrib/Debian/ngircd.postinst → debian/ngircd.postinst
									
									
									
									
										vendored
									
									
										
										
										Executable file → Normal file
									
								
							| @@ -1,7 +1,7 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # Debian post-installation script | ||||
| # $Id: ngircd.postinst,v 1.1 2003/12/31 17:20:11 alex Exp $ | ||||
| # $Id: ngircd.postinst,v 1.1.2.4 2003/11/29 20:29:02 alex Exp $ | ||||
| # | ||||
| 
 | ||||
| if [ -f /etc/ngircd/ngircd.conf ]; then | ||||
							
								
								
									
										110
									
								
								debian/rules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								debian/rules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,110 @@ | ||||
| #!/usr/bin/make -f | ||||
| # | ||||
| # ngIRCd -- The Next Generation IRC Daemon | ||||
| # Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # debian/rules for ngIRCd | ||||
| # | ||||
| # $Id: rules,v 1.1.2.2 2003/11/29 20:29:02 alex Exp $ | ||||
| # | ||||
| # Based on the sample debian/rules that uses debhelper, | ||||
| # GNU copyright 1997 to 1999 by Joey Hess. | ||||
| # | ||||
|  | ||||
| # Uncomment this to turn on verbose mode. | ||||
| #export DH_VERBOSE=1 | ||||
|  | ||||
| # These are used for cross-compiling and for saving the configure script | ||||
| # from having to guess our platform (since we know it already) | ||||
| DEB_HOST_GNU_TYPE  ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) | ||||
| DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) | ||||
|  | ||||
| CFLAGS = -Wall -g | ||||
|  | ||||
| ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) | ||||
| 	CFLAGS += -O0 | ||||
| else | ||||
| 	CFLAGS += -O2 | ||||
| endif | ||||
| ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) | ||||
| 	INSTALL_PROGRAM += -s | ||||
| endif | ||||
|  | ||||
| config.status: configure | ||||
| 	dh_testdir | ||||
|  | ||||
| 	# Add here commands to configure the package. | ||||
| 	./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \ | ||||
| 	  --prefix=/usr \ | ||||
| 	  --sysconfdir=/etc/ngircd \ | ||||
| 	  --mandir=\$${prefix}/share/man \ | ||||
| 	  --with-syslog --with-zlib | ||||
|  | ||||
| build: build-stamp | ||||
|  | ||||
| build-stamp: config.status | ||||
| 	dh_testdir | ||||
|  | ||||
| 	# Add here commands to compile the package. | ||||
| 	$(MAKE) | ||||
|  | ||||
| 	touch build-stamp | ||||
|  | ||||
| clean: | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	rm -f build-stamp  | ||||
|  | ||||
| 	# Add here commands to clean up after the build process. | ||||
| 	-$(MAKE) distclean | ||||
|  | ||||
| ifneq "$(wildcard /usr/share/misc/config.sub)" "" | ||||
| 	cp -f /usr/share/misc/config.sub config.sub | ||||
| endif | ||||
| ifneq "$(wildcard /usr/share/misc/config.guess)" "" | ||||
| 	cp -f /usr/share/misc/config.guess config.guess | ||||
| endif | ||||
| 	dh_clean | ||||
|  | ||||
| install: build | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	dh_clean -k | ||||
| 	dh_installdirs | ||||
|  | ||||
| 	# Add here commands to install the package into debian/ngircd. | ||||
| 	$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd | ||||
| 	rm -f $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/INSTALL* | ||||
| 	rm -f $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING* | ||||
|  | ||||
| # Build architecture-independent files here. | ||||
| binary-indep: build install | ||||
| 	# We have nothing to do by default. | ||||
|  | ||||
| # Build architecture-dependent files here. | ||||
| binary-arch: build install | ||||
| 	dh_testdir | ||||
| 	dh_testroot | ||||
| 	dh_installchangelogs ChangeLog | ||||
| 	dh_installdocs | ||||
| 	dh_installinit | ||||
| 	dh_strip | ||||
| 	dh_compress | ||||
| 	dh_fixperms | ||||
| 	dh_installdeb | ||||
| 	dh_shlibdeps | ||||
| 	dh_gencontrol | ||||
| 	dh_md5sums | ||||
| 	dh_builddeb | ||||
|  | ||||
| binary: binary-indep binary-arch | ||||
|  | ||||
| .PHONY: build clean binary-indep binary-arch binary install  | ||||
|  | ||||
| # -eof- | ||||
| @@ -64,4 +64,4 @@ A: Please file a bug report at <http://arthur.ath.cx/bugzilla/ngircd/>! | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: FAQ.txt,v 1.7 2003/11/07 21:32:15 alex Exp $ | ||||
| $Id: FAQ.txt,v 1.5.2.1 2003/04/29 13:45:09 alex Exp $ | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste | ||||
| # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.17 2003/04/22 23:50:18 alex Exp $ | ||||
| # $Id: Makefile.am,v 1.16.2.1 2003/04/22 23:52:48 alex Exp $ | ||||
| # | ||||
|  | ||||
| EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt Platforms.txt \ | ||||
|   | ||||
| @@ -1,7 +1,7 @@ | ||||
|  | ||||
|                      ngIRCd - Next Generation IRC Server | ||||
|  | ||||
|                         (c)2001-2004 Alexander Barton | ||||
|                       (c)2001-2003 by Alexander Barton, | ||||
|                     alex@barton.de, http://www.barton.de/ | ||||
|  | ||||
|                ngIRCd is free software and published under the | ||||
| @@ -26,38 +26,31 @@ list can be updated. Thanks for your help! | ||||
|                                                                     | | | | | ||||
| Platform                    Compiler     ngIRCd     Date     Tester C M T R See | ||||
| --------------------------- ------------ ---------- -------- ------ - - - - --- | ||||
| hppa/unknown/openbsd3.5     gcc 2.95.3   CVSHEAD    04-05-25 alex   Y Y Y Y | ||||
| hppa1.1/unknown/linux-gnu   gcc 3.3.3    0.8.0      04-05-30 alex   Y Y Y Y | ||||
| i386/pc/solaris2.9          gcc 3.2.2    CVSHEAD    04-02-24 alex   Y Y Y Y | ||||
| i386/unknown/freebsd5.2.1   gcc 3.3.3    0.8.0      04-05-30 alex   Y Y Y Y | ||||
| i386/unknown/gnu0.3         gcc 3.3.3    0.8.0      04-05-30 alex   Y Y n Y | ||||
| i386/unknown/netbsdelf1.6.1 gcc 2.95.3   CVSHEAD    04-02-24 alex   Y Y Y Y | ||||
| i686/pc/cygwin              gcc 3.3.1    0.8.0      04-05-30 alex   Y Y n Y | ||||
| i686/pc/linux-gnu           gcc 2.95.4   0.8.0      04-05-30 alex   Y Y Y Y (1) | ||||
| i686/pc/linux-gnu           gcc 3.3.3    0.8.0      04-05-30 alex   Y Y Y Y (1) | ||||
| i386/pc/solaris2.9          gcc 3.2.2    0.7.x-CVS  03-04-28 alex   Y Y Y Y | ||||
| i386/unknown/freebsd5.0     gcc 3.2.1    0.7.0      03-05-15 alex   Y Y Y Y | ||||
| i386/unknown/gnu0.3         gcc 3.2.3    CVSHEAD    03-05-05 alex   Y Y n Y | ||||
| i386/unknown/netbsdelf1.6.1 gcc 2.95.3   0.7.x-CVS  03-04-23 alex   Y Y Y Y | ||||
| i686/pc/cygwin              gcc 3.2      0.7.x-CVS  03-04-24 alex   Y Y n Y | ||||
| i686/pc/linux-gnu           gcc 2.95/3.x 0.7.0      03-05-15 alex   Y Y Y Y (1) | ||||
| m68k/apple/aux3.1.1         Orig. A/UX   0.7.x-CVS  03-04-22 alex   Y Y Y Y (2) | ||||
| m68k/hp/hp-ux9.10           Orig. HPUX   0.7.x-CVS  03-04-30 goetz  Y Y Y Y | ||||
| m88k/dg/dgux5.4R3.10        gcc 2.5.8    CVSHEAD    04-03-15 alex   Y Y ? ? | ||||
| powerpc/apple/darwin6.5     gcc 3.1      0.7.x-CVS  03-04-23 alex   Y Y Y Y | ||||
| powerpc/apple/darwin7.4.0   gcc 3.3      0.8.0      04-05-30 alex   Y Y Y Y | ||||
| powerpc/unknown/linux-gnu   gcc 3.3.3    0.8.0      04-05-30 alex   Y Y Y Y | ||||
| sparc/sun/solaris2.6        gcc 2.95.3   0.7.x-CVS  03-04-22 alex   Y Y Y Y | ||||
| sparc/sun/solaris2.7        gcc 3.3      0.8.0      04-05-30 alex   Y Y Y Y | ||||
| sparc/unkn./netbsdelf1.6.1  gcc 2.95.3   0.8.0      04-05-30 alex   Y Y Y Y | ||||
| sparc/sun/solaris2.7        gcc 3.3      CVSHEAD    03-07-06 alex   Y Y Y Y | ||||
|  | ||||
|  | ||||
| Notes | ||||
| ~~~~~ | ||||
| (1) i686/pc/linux-gnu: | ||||
|     ngIRCd has been tested with various Linux distributions, such as SuSE, | ||||
|     RedHat, Debian, and Gentoo using Kernels 2.2.x, 2.4.x and 2.6.x with | ||||
|     various versions of the GNU C compiler (2.95.3, 3.0, 3.2, and 3.3). The | ||||
|     eldest glibc used was glibc-2.0.7. ngIRCd compiled and run on all these | ||||
|     systems without problems. | ||||
|     RedHat, Debian, and Gentoo using Kernels 2.2.x or 2.4.x and various | ||||
|     versions of the GNU C compiler (2.95.3, 3.0, 3.2 and 3.3). The eldest | ||||
|     glibc used was glibc-2.0.7. ngIRCd compiled and run on all these systems | ||||
|     without problems. | ||||
|  | ||||
| (2) This compiler is an pre-ANSI C compiler, therefore the source code is | ||||
|     automatically converted using the included ansi2knr tool while building. | ||||
| 			 | ||||
|  | ||||
| --  | ||||
| $Id: Platforms.txt,v 1.11.2.1 2004/11/09 10:58:01 alex Exp $ | ||||
| $Id: Platforms.txt,v 1.1.2.5 2003/07/18 20:48:20 alex Exp $ | ||||
|   | ||||
| @@ -75,10 +75,6 @@ The following <serverflags> are defined at the moment: | ||||
|  | ||||
| - C: The server supports the CHANINFO command. | ||||
|  | ||||
| - L: INVITE- and BAN-lists should be synchronized between servers: if the | ||||
|      peer understands this flag, it will send "MODE +I" and "MODE +b" | ||||
|      commands after the server link has been established. | ||||
|  | ||||
| - o: IRC operators are allowed to change channel- and channel-user-modes | ||||
|      even if they aren't channel-operator of the affected channel. | ||||
|  | ||||
| @@ -115,4 +111,4 @@ channel mode). In this case <limit> should be "0". | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: Protocol.txt,v 1.12 2004/04/25 15:44:10 alex Exp $ | ||||
| $Id: Protocol.txt,v 1.9.2.2 2003/12/08 14:24:13 alex Exp $ | ||||
|   | ||||
| @@ -50,4 +50,4 @@ mir in Verbindung setzen (alex@barton.de), ich maile gerne meine Patches zu. | ||||
| Fuer eine Aenderung im CVS ist es aber meiner Meinung nach noch zu frueh ... | ||||
|  | ||||
| --  | ||||
| $Id: README-BeOS.txt,v 1.7 2003/05/15 21:47:57 alex Exp $ | ||||
| $Id: README-BeOS.txt,v 1.6.2.1 2003/07/18 20:48:20 alex Exp $ | ||||
|   | ||||
							
								
								
									
										58
									
								
								doc/SSL.txt
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								doc/SSL.txt
									
									
									
									
									
								
							| @@ -1,58 +0,0 @@ | ||||
|  | ||||
|                      ngIRCd - Next Generation IRC Server | ||||
|  | ||||
|                       (c)2001-2004 by Alexander Barton, | ||||
|                     alex@barton.de, http://www.barton.de/ | ||||
|  | ||||
|                ngIRCd is free software and published under the | ||||
|                    terms of the GNU General Public License. | ||||
|  | ||||
|                                  -- SSL.txt -- | ||||
|  | ||||
|  | ||||
| ngIRCd actually doesn't support secure connections for client-server or | ||||
| server-server links using SSL, the Secure Socket Layer, by itself. But you can | ||||
| use the stunnel(8) command to make this work. | ||||
|  | ||||
|   <http://stunnel.mirt.net/> | ||||
|   <http://www.stunnel.org/> | ||||
|  | ||||
| Stefan Sperling (stefan at binarchy dot net) mailed me the following text as a | ||||
| short "how-to", thanks Stefan! | ||||
|  | ||||
|  | ||||
| === snip === | ||||
|     ! This guide applies to stunnel 4.x ! | ||||
|  | ||||
|     Put this in your stunnel.conf: | ||||
|  | ||||
|         [ircs] | ||||
|         accept = 6667 | ||||
|         connect = 6668 | ||||
|  | ||||
|     This makes stunnel listen for incoming connections | ||||
|     on port 6667 and forward decrypted data to port 6668. | ||||
|     We call the connection 'ircs'. Stunnel will use this | ||||
|     name when logging connection attempts via syslog. | ||||
|     You can also use the name in /etc/hosts.{allow,deny} | ||||
|     if you run tcp-wrappers. | ||||
|  | ||||
|     To make sure ngircd is listening on the port where | ||||
|     the decrypted data arrives, set | ||||
|  | ||||
|         Ports = 6668 | ||||
|  | ||||
|     in your ngircd.conf. | ||||
|  | ||||
|     Start stunnel and restart ngircd. | ||||
|  | ||||
|     That's it. | ||||
|     Don't forget to activate ssl support in your irc client ;) | ||||
| === snip === | ||||
|  | ||||
|  | ||||
| Probably ngIRCd will include support for SSL in the future ... | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: SSL.txt,v 1.2.2.1 2005/01/26 21:47:47 alex Exp $ | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: sample-ngircd.conf,v 1.25.2.1 2004/05/07 11:24:17 alex Exp $ | ||||
| # $Id: sample-ngircd.conf,v 1.20.2.4 2003/12/19 14:30:49 alex Exp $ | ||||
|  | ||||
| # | ||||
| # This is a sample configuration file for the ngIRCd, which must be adepted | ||||
| @@ -23,7 +23,7 @@ | ||||
| 	# Info text of the server. This will be shown by WHOIS and | ||||
| 	# LINKS requests for example. | ||||
| 	Info = Server Info Text | ||||
|  | ||||
| 	 | ||||
| 	# Global password for all users needed to connect to the server | ||||
| 	;Password = abc | ||||
| 	 | ||||
| @@ -45,10 +45,6 @@ | ||||
| 	# be shown to all users connecting to the server: | ||||
| 	;MotdFile = /usr/local/etc/ngircd.motd | ||||
|  | ||||
| 	# A simple Phrase (<256 chars) if you don't want to use a motd file. | ||||
| 	# If it is set no MotdFile will be read at all. | ||||
| 	;MotdPhrase = "Hello world!" | ||||
|  | ||||
| 	# User ID under which the server should run; you can use the name | ||||
| 	# of the user or the numerical ID. ATTENTION: For this to work the | ||||
| 	# server must have been started with root privileges! In addition, | ||||
| @@ -61,13 +57,6 @@ | ||||
| 	# server must have been started with root privileges! | ||||
| 	;ServerGID = 65534 | ||||
|  | ||||
| 	# A directory to chroot in when everything is initialized. It | ||||
| 	# doesn't need to be populated if ngIRCd is compiled as a static | ||||
| 	# binary. By default ngIRCd won't use the chroot() feature. | ||||
| 	# ATTENTION: For this to work the server must have been started | ||||
| 	# with root privileges! | ||||
| 	;ChrootDir = /var/empty | ||||
|  | ||||
| 	# After <PingTimeout> seconds of inactivity the server will send a | ||||
| 	# PING to the peer to test whether it is alive or not. | ||||
| 	;PingTimeout = 120 | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| .\" | ||||
| .\" $Id: ngircd.8,v 1.9 2004/04/05 10:59:10 alex Exp $ | ||||
| .\" $Id: ngircd.8,v 1.8 2003/03/10 00:58:06 alex Exp $ | ||||
| .\" | ||||
| .TH ngircd 8 "March 2003" ngircd "ngIRCd Manual" | ||||
| .SH NAME | ||||
| @@ -36,6 +36,9 @@ controlling terminal and to wait for clients. | ||||
| .PP | ||||
| You can use these options to modify this default: | ||||
| .TP | ||||
| \fB\-\-configtest\fR | ||||
| Read, validate and display the configuration; then exit. | ||||
| .TP | ||||
| \fB\-f\fR \fIfile\fR, \fB\-\-config\fR \fIfile\fR | ||||
| Use | ||||
| .I file | ||||
| @@ -49,9 +52,6 @@ All log messages go to the console. | ||||
| Disable automatic connections to other servers. You can use the IRC command | ||||
| CONNECT later on as IRC Operator to link this ngIRCd to other servers. | ||||
| .TP | ||||
| \fB\-t\fR, \fB\-\-configtest\fR | ||||
| Read, validate and display the configuration; then exit. | ||||
| .TP | ||||
| \fB\-\-version\fR | ||||
| Output version information and exit. | ||||
| .TP | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| .\" | ||||
| .\" $Id: ngircd.conf.5,v 1.12.2.1 2004/05/07 11:24:18 alex Exp $ | ||||
| .\" $Id: ngircd.conf.5,v 1.9.2.2 2003/11/07 20:51:10 alex Exp $ | ||||
| .\" | ||||
| .TH ngircd.conf 5 "Mai 2003" ngircd "ngIRCd Manual" | ||||
| .SH NAME | ||||
| @@ -75,10 +75,6 @@ the server listens on all configured ip addresses and interfaces. | ||||
| Text file with the "message of the day" (MOTD). This message will be shown | ||||
| to all users connecting to the server. | ||||
| .TP | ||||
| \fBMotdPhrase\fR | ||||
| A simple Phrase (<256 chars) if you don't want to use a motd file. | ||||
| If it is set no MotdFile will be read at all. | ||||
| .TP | ||||
| \fBServerUID\fR | ||||
| User ID under which the server should run; you can use the name of the user | ||||
| or the numerical ID. | ||||
| @@ -102,18 +98,6 @@ For this to work the server must have | ||||
| been started with root privileges! | ||||
| .RE | ||||
| .TP | ||||
| \fBChrootDir\fR | ||||
| A directory to chroot in when everything is initialized. It doesn't need | ||||
| to be populated if ngIRCd is compiled as a static binary. By default ngIRCd | ||||
| won't use the chroot() feature. | ||||
| .PP | ||||
| .RS | ||||
| .B Attention: | ||||
| .br | ||||
| For this to work the server must have | ||||
| been started with root privileges! | ||||
| .RE | ||||
| .TP | ||||
| \fBPingTimeout\fR | ||||
| After <PingTimeout> seconds of inactivity the server will send a PING to | ||||
| the peer to test whether it is alive or not. Default: 120. | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.42 2003/12/04 14:05:16 alex Exp $ | ||||
| # $Id: Makefile.am,v 1.39.2.3 2003/12/04 14:13:42 alex Exp $ | ||||
| # | ||||
|  | ||||
| AUTOMAKE_OPTIONS = ../portab/ansi2knr | ||||
|   | ||||
| @@ -17,13 +17,12 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: channel.c,v 1.45 2004/03/11 22:16:31 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: channel.c,v 1.42.2.1 2003/11/07 20:51:10 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
|  | ||||
| #include "conn-func.h" | ||||
| #include "client.h" | ||||
| @@ -708,7 +707,7 @@ Channel_Create( CHAR *Name ) | ||||
|  | ||||
| 	assert( Name != NULL ); | ||||
| 	 | ||||
| 	c = (CHANNEL *)malloc( sizeof( CHANNEL )); | ||||
| 	c = malloc( sizeof( CHANNEL )); | ||||
| 	if( ! c ) | ||||
| 	{ | ||||
| 		Log( LOG_EMERG, "Can't allocate memory! [New_Chan]" ); | ||||
| @@ -760,7 +759,7 @@ Add_Client( CHANNEL *Chan, CLIENT *Client ) | ||||
| 	assert( Client != NULL ); | ||||
|  | ||||
| 	/* neue CL2CHAN-Struktur anlegen */ | ||||
| 	cl2chan = (CL2CHAN *)malloc( sizeof( CL2CHAN )); | ||||
| 	cl2chan = malloc( sizeof( CL2CHAN )); | ||||
| 	if( ! cl2chan ) | ||||
| 	{ | ||||
| 		Log( LOG_EMERG, "Can't allocate memory! [Add_Client]" ); | ||||
|   | ||||
| @@ -17,7 +17,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: client.c,v 1.76 2004/03/11 22:16:31 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: client.c,v 1.74 2003/03/31 15:54:21 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -25,7 +25,6 @@ static char UNUSED id[] = "$Id: client.c,v 1.76 2004/03/11 22:16:31 alex Exp $"; | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
| #include <netdb.h> | ||||
|  | ||||
| #include "conn.h" | ||||
| @@ -1024,7 +1023,7 @@ New_Client_Struct( VOID ) | ||||
| 	 | ||||
| 	CLIENT *c; | ||||
| 	 | ||||
| 	c = (CLIENT *)malloc( sizeof( CLIENT )); | ||||
| 	c = malloc( sizeof( CLIENT )); | ||||
| 	if( ! c ) | ||||
| 	{ | ||||
| 		Log( LOG_EMERG, "Can't allocate memory! [New_Client_Struct]" ); | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: conf.c,v 1.63.2.2 2004/09/27 11:30:52 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: conf.c,v 1.57.2.4 2003/12/19 14:30:49 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -23,7 +23,6 @@ static char UNUSED id[] = "$Id: conf.c,v 1.63.2.2 2004/09/27 11:30:52 alex Exp $ | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
| #include <unistd.h> | ||||
| #include <pwd.h> | ||||
| #include <grp.h> | ||||
| @@ -107,15 +106,13 @@ Conf_Test( VOID ) | ||||
| 	else puts( "Ok, dump of your server configuration follows:\n" ); | ||||
|  | ||||
| 	puts( "[GLOBAL]" ); | ||||
| 	printf( "  Name = %s\n", Conf_ServerName ); | ||||
| 	printf( "  Info = %s\n", Conf_ServerInfo ); | ||||
| 	printf( "  ServerName = %s\n", Conf_ServerName ); | ||||
| 	printf( "  ServerInfo = %s\n", Conf_ServerInfo ); | ||||
| 	printf( "  Password = %s\n", Conf_ServerPwd ); | ||||
| 	printf( "  AdminInfo1 = %s\n", Conf_ServerAdmin1 ); | ||||
| 	printf( "  AdminInfo2 = %s\n", Conf_ServerAdmin2 ); | ||||
| 	printf( "  AdminEMail = %s\n", Conf_ServerAdminMail ); | ||||
| 	printf( "  MotdFile = %s\n", Conf_MotdFile ); | ||||
| 	printf( "  MotdPhrase = %s\n", Conf_MotdPhrase ); | ||||
| 	printf( "  ChrootDir= %s\n", Conf_Chroot ); | ||||
| 	printf( "  Ports = " ); | ||||
| 	for( i = 0; i < Conf_ListenPorts_Count; i++ ) | ||||
| 	{ | ||||
| @@ -345,10 +342,6 @@ Set_Defaults( BOOLEAN InitServers ) | ||||
| 	strlcpy( Conf_MotdFile, SYSCONFDIR, sizeof( Conf_MotdFile )); | ||||
| 	strlcat( Conf_MotdFile, MOTD_FILE, sizeof( Conf_MotdFile )); | ||||
|  | ||||
| 	strlcpy( Conf_MotdPhrase, MOTD_PHRASE, sizeof( Conf_MotdPhrase )); | ||||
|  | ||||
| 	strlcpy( Conf_Chroot, CHROOT_DIR, sizeof( Conf_Chroot )); | ||||
|  | ||||
| 	Conf_ListenPorts_Count = 0; | ||||
| 	strcpy( Conf_ListenAddress, "" ); | ||||
|  | ||||
| @@ -619,18 +612,6 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 		if( strlcpy( Conf_MotdFile, Arg, sizeof( Conf_MotdFile )) >= sizeof( Conf_MotdFile )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MotdFile\" too long!", NGIRCd_ConfFile, Line ); | ||||
| 		return; | ||||
| 	} | ||||
| 	if( strcasecmp( Var, "MotdPhrase" ) == 0 ) | ||||
| 	{ | ||||
| 		/* "Message of the day" phrase (instead of file) */ | ||||
| 		if( strlcpy( Conf_MotdPhrase, Arg, sizeof( Conf_MotdPhrase )) >= sizeof( Conf_MotdPhrase )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MotdPhrase\" too long!", NGIRCd_ConfFile, Line ); | ||||
| 		return; | ||||
| 	} | ||||
| 	if( strcasecmp( Var, "ChrootDir" ) == 0 ) | ||||
| 	{ | ||||
| 		/* directory for chroot() */ | ||||
| 		if( strlcpy( Conf_Chroot, Arg, sizeof( Conf_Chroot )) >= sizeof( Conf_Chroot )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ChrootDir\" too long!", NGIRCd_ConfFile, Line ); | ||||
| 		return; | ||||
| 	} | ||||
| 	if( strcasecmp( Var, "ServerUID" ) == 0 ) | ||||
| 	{ | ||||
| 		/* UID the daemon should switch to */ | ||||
| @@ -639,7 +620,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 		else | ||||
| 		{ | ||||
| #ifdef HAVE_ISDIGIT | ||||
| 			if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ServerUID\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 			if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ServerUID\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 			else | ||||
| #endif | ||||
| 			Conf_UID = (UINT)atoi( Arg ); | ||||
| @@ -654,7 +635,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 		else | ||||
| 		{ | ||||
| #ifdef HAVE_ISDIGIT | ||||
| 			if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ServerGID\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 			if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ServerGID\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 			else | ||||
| #endif | ||||
| 			Conf_GID = (UINT)atoi( Arg ); | ||||
| @@ -707,7 +688,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 	{ | ||||
| 		/* Maximum number of connections. Values <= 0 are equal to "no limit". */ | ||||
| #ifdef HAVE_ISDIGIT | ||||
| 		if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnections\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnections\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		else | ||||
| #endif | ||||
| 		Conf_MaxConnections = atol( Arg ); | ||||
| @@ -717,7 +698,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 	{ | ||||
| 		/* Maximum number of simoultanous connections from one IP. Values <= 0 are equal to "no limit". */ | ||||
| #ifdef HAVE_ISDIGIT | ||||
| 		if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnectionsIP\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnectionsIP\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		else | ||||
| #endif | ||||
| 		Conf_MaxConnectionsIP = atoi( Arg ); | ||||
| @@ -727,7 +708,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 	{ | ||||
| 		/* Maximum number of channels a user can join. Values <= 0 are equal to "no limit". */ | ||||
| #ifdef HAVE_ISDIGIT | ||||
| 		if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxJoins\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxJoins\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		else | ||||
| #endif | ||||
| 		Conf_MaxJoins = atoi( Arg ); | ||||
| @@ -820,7 +801,7 @@ Handle_SERVER( INT Line, CHAR *Var, CHAR *Arg ) | ||||
| 	{ | ||||
| 		/* Server group */ | ||||
| #ifdef HAVE_ISDIGIT | ||||
| 		if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Group\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Group\" is not a number!", NGIRCd_ConfFile, Line ); | ||||
| 		else | ||||
| #endif | ||||
| 		New_Server.group = atoi( Arg ); | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: conf.h,v 1.28.2.1 2004/05/07 11:24:18 alex Exp $ | ||||
|  * $Id: conf.h,v 1.26.2.1 2003/11/07 20:51:11 alex Exp $ | ||||
|  * | ||||
|  * Configuration management (header) | ||||
|  */ | ||||
| @@ -72,9 +72,6 @@ GLOBAL CHAR Conf_ServerAdminMail[CLIENT_INFO_LEN]; | ||||
| /* File with MOTD text */ | ||||
| GLOBAL CHAR Conf_MotdFile[FNAME_LEN]; | ||||
|  | ||||
| /* Phrase with MOTD text */ | ||||
| GLOBAL CHAR Conf_MotdPhrase[LINE_LEN]; | ||||
|  | ||||
| /* Ports the server should listen on */ | ||||
| GLOBAL UINT Conf_ListenPorts[MAX_LISTEN_PORTS]; | ||||
| GLOBAL INT Conf_ListenPorts_Count; | ||||
| @@ -86,9 +83,6 @@ GLOBAL CHAR Conf_ListenAddress[16]; | ||||
| GLOBAL UINT Conf_UID; | ||||
| GLOBAL UINT Conf_GID; | ||||
|  | ||||
| /* A directory to chroot() in */ | ||||
| GLOBAL CHAR Conf_Chroot[FNAME_LEN]; | ||||
|  | ||||
| /* Timeouts for PING and PONG */ | ||||
| GLOBAL INT Conf_PingTimeout; | ||||
| GLOBAL INT Conf_PongTimeout; | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: conn-func.c,v 1.3 2003/12/26 15:55:07 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: conn-func.c,v 1.1.2.2 2003/12/26 16:16:48 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
|   | ||||
| @@ -19,7 +19,7 @@ | ||||
|  | ||||
| #ifdef ZLIB | ||||
|  | ||||
| static char UNUSED id[] = "$Id: conn-zip.c,v 1.5 2004/04/25 13:55:36 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: conn-zip.c,v 1.3.2.1 2003/12/26 16:16:48 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -161,7 +161,7 @@ Unzip_Buffer( CONN_ID Idx ) | ||||
| 	result = inflate( in, Z_SYNC_FLUSH ); | ||||
| 	if( result != Z_OK ) | ||||
| 	{ | ||||
| 		Log( LOG_ALERT, "Decompression error: %s (code=%d, ni=%d, ai=%d, no=%d, ao=%d)!?", in->msg, result, in->next_in, in->avail_in, in->next_out, in->avail_out ); | ||||
| 		Log( LOG_ALERT, "Decompression error: code %d (ni=%d, ai=%d, no=%d, ao=%d)!?", result, in->next_in, in->avail_in, in->next_out, in->avail_out ); | ||||
| 		Conn_Close( Idx, "Decompression error!", NULL, FALSE ); | ||||
| 		return FALSE; | ||||
| 	} | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: conn-zip.h,v 1.2 2003/12/26 15:55:07 alex Exp $ | ||||
|  * $Id: conn-zip.h,v 1.1.2.1 2003/12/26 16:16:48 alex Exp $ | ||||
|  * | ||||
|  * Connection compression using ZLIB (header) | ||||
|  */ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2004 Alexander Barton <alex@barton.de> | ||||
|  * Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -16,7 +16,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: conn.c,v 1.134.2.4 2005/01/19 23:35:42 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: conn.c,v 1.122.2.4 2004/02/03 13:54:36 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -33,22 +33,18 @@ static char UNUSED id[] = "$Id: conn.c,v 1.134.2.4 2005/01/19 23:35:42 alex Exp | ||||
| #include <time.h> | ||||
| #include <netinet/in.h> | ||||
|  | ||||
| #ifdef HAVE_NETINET_IP_H | ||||
| # include <netinet/ip.h> | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_ARPA_INET_H | ||||
| # include <arpa/inet.h> | ||||
| #include <arpa/inet.h> | ||||
| #else | ||||
| # define PF_INET AF_INET | ||||
| #define PF_INET AF_INET | ||||
| #endif | ||||
|  | ||||
| #ifdef HAVE_STDINT_H | ||||
| # include <stdint.h>			/* e.g. for Mac OS X */ | ||||
| #include <stdint.h>			/* e.g. for Mac OS X */ | ||||
| #endif | ||||
|  | ||||
| #ifdef TCPWRAP | ||||
| # include <tcpd.h>			/* for TCP Wrappers */ | ||||
| #include <tcpd.h>			/* for TCP Wrappers */ | ||||
| #endif | ||||
|  | ||||
| #include "defines.h" | ||||
| @@ -68,7 +64,7 @@ static char UNUSED id[] = "$Id: conn.c,v 1.134.2.4 2005/01/19 23:35:42 alex Exp | ||||
| #include "tool.h" | ||||
|  | ||||
| #ifdef RENDEZVOUS | ||||
| # include "rendezvous.h" | ||||
| #include "rendezvous.h" | ||||
| #endif | ||||
|  | ||||
| #include "exp.h" | ||||
| @@ -117,7 +113,7 @@ Conn_Init( VOID ) | ||||
| 		/* konfiguriertes Limit beachten */ | ||||
| 		if( Pool_Size > Conf_MaxConnections ) Pool_Size = Conf_MaxConnections; | ||||
| 	} | ||||
| 	My_Connections = (CONNECTION *)malloc( sizeof( CONNECTION ) * Pool_Size ); | ||||
| 	My_Connections = malloc( sizeof( CONNECTION ) * Pool_Size ); | ||||
| 	if( ! My_Connections ) | ||||
| 	{ | ||||
| 		/* Speicher konnte nicht alloziert werden! */ | ||||
| @@ -525,7 +521,7 @@ va_dcl | ||||
| #else | ||||
| 	va_start( ap ); | ||||
| #endif | ||||
| 	if( vsnprintf( buffer, COMMAND_LEN - 2, Format, ap ) >= COMMAND_LEN - 2 ) | ||||
| 	if( vsnprintf( buffer, COMMAND_LEN - 2, Format, ap ) == COMMAND_LEN - 2 ) | ||||
| 	{ | ||||
| 		Log( LOG_CRIT, "Text too long to send (connection %d)!", Idx ); | ||||
| 		Conn_Close( Idx, "Text too long to send!", NULL, FALSE ); | ||||
| @@ -614,7 +610,6 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ) | ||||
| 	 * sub-processes are closed down. */ | ||||
|  | ||||
| 	CLIENT *c; | ||||
| 	CHAR *txt; | ||||
| 	DOUBLE in_k, out_k; | ||||
| #ifdef ZLIB | ||||
| 	DOUBLE in_z_k, out_z_k; | ||||
| @@ -622,28 +617,18 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ) | ||||
| #endif | ||||
|  | ||||
| 	assert( Idx > NONE ); | ||||
| 	assert( My_Connections[Idx].sock > NONE ); | ||||
|  | ||||
| 	/* Is this link already shutting down? */ | ||||
| 	if( My_Connections[Idx].options & CONN_ISCLOSING ) | ||||
| 	{ | ||||
| 		/* Conn_Close() has been called recursively for this link; | ||||
| 		 * probabe reason: Try_Write() failed  -- see below. */ | ||||
| #ifdef DEBUG | ||||
| 		Log( LOG_DEBUG, "Recursive request to close connection: %d", Idx ); | ||||
| #endif | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	assert( My_Connections[Idx].sock > NONE ); | ||||
|  | ||||
| 	/* Mark link as "closing" */ | ||||
| 	My_Connections[Idx].options |= CONN_ISCLOSING; | ||||
| 		 | ||||
| 	if( LogMsg ) txt = LogMsg; | ||||
| 	else txt = FwdMsg; | ||||
| 	if( ! txt ) txt = "Reason unknown"; | ||||
|  | ||||
| 	Log( LOG_INFO, "Shutting down connection %d (%s) with %s:%d ...", Idx, LogMsg ? LogMsg : FwdMsg, My_Connections[Idx].host, ntohs( My_Connections[Idx].addr.sin_port )); | ||||
|  | ||||
| 	/* Search client, if any */ | ||||
| 	c = Client_GetFromConn( Idx ); | ||||
| @@ -662,6 +647,7 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ) | ||||
| 		/* Send ERROR to client (see RFC!) */ | ||||
| 		if( FwdMsg ) Conn_WriteStr( Idx, "ERROR :%s", FwdMsg ); | ||||
| 		else Conn_WriteStr( Idx, "ERROR :Closing connection." ); | ||||
| 		if( My_Connections[Idx].sock == NONE ) return; | ||||
| 	} | ||||
|  | ||||
| 	/* Try to write out the write buffer */ | ||||
| @@ -726,10 +712,6 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ) | ||||
|  | ||||
| 	/* Clean up connection structure (=free it) */ | ||||
| 	Init_Conn_Struct( Idx ); | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	Log( LOG_DEBUG, "Shutdown of connection %d completed.", Idx ); | ||||
| #endif | ||||
| } /* Conn_Close */ | ||||
|  | ||||
|  | ||||
| @@ -886,9 +868,11 @@ Handle_Write( CONN_ID Idx ) | ||||
|  | ||||
| 			return FALSE; | ||||
| 		} | ||||
| 		Log( LOG_INFO, "Connection %d with \"%s:%d\" established. Now logging in ...", Idx, My_Connections[Idx].host, Conf_Server[Conf_GetServer( Idx )].port ); | ||||
| #ifdef DEBUG | ||||
| 		Log( LOG_DEBUG, "Connection %d with \"%s:%d\" established, now sendig PASS and SERVER ...", Idx, My_Connections[Idx].host, Conf_Server[Conf_GetServer( Idx )].port ); | ||||
| #endif | ||||
|  | ||||
| 		/* Send PASS and SERVER command to peer */ | ||||
| 		/* PASS und SERVER verschicken */ | ||||
| 		Conn_WriteStr( Idx, "PASS %s %s", Conf_Server[Conf_GetServer( Idx )].pwd_out, NGIRCd_ProtoID ); | ||||
| 		return Conn_WriteStr( Idx, "SERVER %s :%s", Conf_ServerName, Conf_ServerInfo ); | ||||
| 	} | ||||
| @@ -1011,11 +995,11 @@ New_Connection( INT Sock ) | ||||
| 		/* zunaechst realloc() versuchen; wenn das scheitert, malloc() versuchen | ||||
| 		 * und Daten ggf. "haendisch" umkopieren. (Haesslich! Eine wirklich | ||||
| 		 * dynamische Verwaltung waere wohl _deutlich_ besser ...) */ | ||||
| 		ptr = (POINTER *)realloc( My_Connections, sizeof( CONNECTION ) * new_size ); | ||||
| 		ptr = realloc( My_Connections, sizeof( CONNECTION ) * new_size ); | ||||
| 		if( ! ptr ) | ||||
| 		{ | ||||
| 			/* realloc() ist fehlgeschlagen. Nun malloc() probieren: */ | ||||
| 			ptr = (POINTER *)malloc( sizeof( CONNECTION ) * new_size ); | ||||
| 			ptr = malloc( sizeof( CONNECTION ) * new_size ); | ||||
| 			if( ! ptr ) | ||||
| 			{ | ||||
| 				/* Offenbar steht kein weiterer Sepeicher zur Verfuegung :-( */ | ||||
| @@ -1037,7 +1021,7 @@ New_Connection( INT Sock ) | ||||
| #endif | ||||
|  | ||||
| 		/* Adjust pointer to new block */ | ||||
| 		My_Connections = (CONNECTION *)ptr; | ||||
| 		My_Connections = ptr; | ||||
|  | ||||
| 		/* Initialize new items */ | ||||
| 		for( idx = Pool_Size; idx < new_size; idx++ ) Init_Conn_Struct( idx ); | ||||
| @@ -1071,11 +1055,7 @@ New_Connection( INT Sock ) | ||||
| 	/* Hostnamen ermitteln */ | ||||
| 	strlcpy( My_Connections[idx].host, inet_ntoa( new_addr.sin_addr ), sizeof( My_Connections[idx].host )); | ||||
| 	Client_SetHostname( c, My_Connections[idx].host ); | ||||
| #ifdef IDENTAUTH | ||||
| 	s = Resolve_Addr( &new_addr, My_Connections[idx].sock ); | ||||
| #else | ||||
| 	s = Resolve_Addr( &new_addr ); | ||||
| #endif | ||||
| 	if( s ) | ||||
| 	{ | ||||
| 		/* Sub-Prozess wurde asyncron gestartet */ | ||||
| @@ -1279,20 +1259,22 @@ Handle_Buffer( CONN_ID Idx ) | ||||
| 				/* Mit dem letzten Befehl wurde Socket-Kompression aktiviert. | ||||
| 				 * Evtl. schon vom Socket gelesene Daten in den Unzip-Puffer | ||||
| 				 * umkopieren, damit diese nun zunaechst entkomprimiert werden */ | ||||
| 				if( My_Connections[Idx].rdatalen > ZREADBUFFER_LEN ) | ||||
| 				{ | ||||
| 					/* Hupsa! Soviel Platz haben wir aber gar nicht! */ | ||||
| 					Log( LOG_ALERT, "Can't move read buffer: No space left in unzip buffer (need %d bytes)!", My_Connections[Idx].rdatalen ); | ||||
| 					return FALSE; | ||||
| 				} | ||||
| 				memcpy( My_Connections[Idx].zip.rbuf, My_Connections[Idx].rbuf, My_Connections[Idx].rdatalen ); | ||||
| 				My_Connections[Idx].zip.rdatalen = My_Connections[Idx].rdatalen; | ||||
| 				My_Connections[Idx].rdatalen = 0; | ||||
| 					if( My_Connections[Idx].rdatalen > ZREADBUFFER_LEN ) | ||||
| 					{ | ||||
| 						/* Hupsa! Soviel Platz haben wir aber gar nicht! */ | ||||
| 						Log( LOG_ALERT, "Can't move read buffer: No space left in unzip buffer (need %d bytes)!", My_Connections[Idx].rdatalen ); | ||||
| 						return FALSE; | ||||
| 					} | ||||
| 					memcpy( My_Connections[Idx].zip.rbuf, My_Connections[Idx].rbuf, My_Connections[Idx].rdatalen ); | ||||
| 					My_Connections[Idx].zip.rdatalen = My_Connections[Idx].rdatalen; | ||||
| 					My_Connections[Idx].rdatalen = 0; | ||||
| #ifdef DEBUG | ||||
| 				Log( LOG_DEBUG, "Moved already received data (%d bytes) to uncompression buffer.", My_Connections[Idx].zip.rdatalen ); | ||||
| #endif /* DEBUG */ | ||||
| 					Log( LOG_DEBUG, "Moved already received data (%d bytes) to uncompression buffer.", My_Connections[Idx].zip.rdatalen ); | ||||
| #endif | ||||
| 				} | ||||
| 			} | ||||
| #endif /* ZLIB */ | ||||
| #endif | ||||
| 		} | ||||
|  | ||||
| 		if( action ) result = TRUE; | ||||
| @@ -1564,40 +1546,24 @@ Init_Conn_Struct( CONN_ID Idx ) | ||||
| LOCAL BOOLEAN | ||||
| Init_Socket( INT Sock ) | ||||
| { | ||||
| 	/* Initialize socket (set options) */ | ||||
| 	/* Socket-Optionen setzen */ | ||||
|  | ||||
| 	INT value; | ||||
| 	INT on = 1; | ||||
|  | ||||
| #ifdef O_NONBLOCK	/* unknown on A/UX */ | ||||
| #ifdef O_NONBLOCK	/* A/UX kennt das nicht? */ | ||||
| 	if( fcntl( Sock, F_SETFL, O_NONBLOCK ) != 0 ) | ||||
| 	{ | ||||
| 		Log( LOG_CRIT, "Can't enable non-blocking mode for socket: %s!", strerror( errno )); | ||||
| 		Log( LOG_CRIT, "Can't enable non-blocking mode: %s!", strerror( errno )); | ||||
| 		close( Sock ); | ||||
| 		return FALSE; | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	/* Don't block this port after socket shutdown */ | ||||
| 	value = 1; | ||||
| 	if( setsockopt( Sock, SOL_SOCKET, SO_REUSEADDR, &value, (socklen_t)sizeof( value )) != 0 ) | ||||
| 	if( setsockopt( Sock, SOL_SOCKET, SO_REUSEADDR, &on, (socklen_t)sizeof( on )) != 0) | ||||
| 	{ | ||||
| 		Log( LOG_ERR, "Can't set socket option SO_REUSEADDR: %s!", strerror( errno )); | ||||
| 		/* ignore this error */ | ||||
| 		Log( LOG_ERR, "Can't set socket options: %s!", strerror( errno )); | ||||
| 		/* dieser Fehler kann ignoriert werden. */ | ||||
| 	} | ||||
|  | ||||
| 	/* Set type of service (TOS) */ | ||||
| #if defined(IP_TOS) && defined(IPTOS_LOWDELAY) | ||||
| 	value = IPTOS_LOWDELAY; | ||||
| #ifdef DEBUG | ||||
| 	Log( LOG_DEBUG, "Setting option IP_TOS on socket %d to IPTOS_LOWDELAY (%d).", Sock, value ); | ||||
| #endif | ||||
| 	if( setsockopt( Sock, SOL_IP, IP_TOS, &value, (socklen_t)sizeof( value )) != 0 ) | ||||
| 	{ | ||||
| 		Log( LOG_ERR, "Can't set socket option IP_TOS: %s!", strerror( errno )); | ||||
| 		/* ignore this error */ | ||||
| 	} | ||||
| #endif | ||||
|  | ||||
| 	return TRUE; | ||||
| } /* Init_Socket */ | ||||
|  | ||||
| @@ -1605,28 +1571,35 @@ Init_Socket( INT Sock ) | ||||
| LOCAL VOID | ||||
| Read_Resolver_Result( INT r_fd ) | ||||
| { | ||||
| 	/* Read result of resolver sub-process from pipe and update the | ||||
| 	 * apropriate connection/client structure(s): hostname and/or | ||||
| 	 * IDENT user name.*/ | ||||
| 	/* Ergebnis von Resolver Sub-Prozess aus Pipe lesen | ||||
| 	 * und entsprechende Connection aktualisieren */ | ||||
|  | ||||
| 	CHAR result[HOST_LEN]; | ||||
| 	CLIENT *c; | ||||
| 	INT len, i, n; | ||||
| 	RES_STAT *s; | ||||
| 	CHAR *ptr; | ||||
|  | ||||
| 	/* Search associated connection ... */ | ||||
| 	FD_CLR( r_fd, &Resolver_FDs ); | ||||
|  | ||||
| 	/* Anfrage vom Parent lesen */ | ||||
| 	len = read( r_fd, result, HOST_LEN - 1 ); | ||||
| 	if( len < 0 ) | ||||
| 	{ | ||||
| 		/* Fehler beim Lesen aus der Pipe */ | ||||
| 		close( r_fd ); | ||||
| 		Log( LOG_CRIT, "Resolver: Can't read result: %s!", strerror( errno )); | ||||
| 		return; | ||||
| 	} | ||||
| 	result[len] = '\0'; | ||||
|  | ||||
| 	/* zugehoerige Connection suchen */ | ||||
| 	for( i = 0; i < Pool_Size; i++ ) | ||||
| 	{ | ||||
| 		if(( My_Connections[i].sock != NONE ) | ||||
| 		  && ( My_Connections[i].res_stat != NULL ) | ||||
| 		  && ( My_Connections[i].res_stat->pipe[0] == r_fd )) | ||||
| 			break; | ||||
| 		if(( My_Connections[i].sock != NONE ) && ( My_Connections[i].res_stat ) && ( My_Connections[i].res_stat->pipe[0] == r_fd )) break; | ||||
| 	} | ||||
| 	if( i >= Pool_Size ) | ||||
| 	{ | ||||
| 		/* Ops, none found? Probably the connection has already | ||||
| 		 * been closed!? We'll ignore that ... */ | ||||
| 		FD_CLR( r_fd, &Resolver_FDs ); | ||||
| 		/* Opsa! Keine passende Connection gefunden!? Vermutlich | ||||
| 		 * wurde sie schon wieder geschlossen. */ | ||||
| 		close( r_fd ); | ||||
| #ifdef DEBUG | ||||
| 		Log( LOG_DEBUG, "Resolver: Got result for unknown connection!?" ); | ||||
| @@ -1634,103 +1607,33 @@ Read_Resolver_Result( INT r_fd ) | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	/* Get resolver structure */ | ||||
| 	s = My_Connections[i].res_stat; | ||||
| 	assert( s != NULL ); | ||||
|  | ||||
| 	/* Read result from pipe */ | ||||
| 	len = read( r_fd, s->buffer + s->bufpos, sizeof( s->buffer ) - s->bufpos - 1 ); | ||||
| 	if( len < 0 ) | ||||
| 	{ | ||||
| 		/* Error! */ | ||||
| 		close( r_fd ); | ||||
| 		Log( LOG_CRIT, "Resolver: Can't read result: %s!", strerror( errno )); | ||||
| 		return; | ||||
| 	} | ||||
| 	s->bufpos += len; | ||||
| 	s->buffer[s->bufpos] = '\0'; | ||||
|  | ||||
| 	/* If the result string is incomplete, return to main loop and | ||||
| 	 * wait until we can read in more bytes. */ | ||||
| #ifdef IDENTAUTH | ||||
| try_resolve: | ||||
| #endif | ||||
| 	ptr = strchr( s->buffer, '\n' ); | ||||
| 	if( ! ptr ) return; | ||||
| 	*ptr = '\0'; | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	Log( LOG_DEBUG, "Got result from resolver: \"%s\" (%d bytes), stage %d.", s->buffer, len, s->stage ); | ||||
| 	Log( LOG_DEBUG, "Resolver: %s is \"%s\".", My_Connections[i].host, result ); | ||||
| #endif | ||||
|  | ||||
| 	/* Okay, we got a complete result: this is a host name for outgoing | ||||
| 	 * connections and a host name or IDENT user name (if enabled) for | ||||
| 	 * incoming conneciions.*/ | ||||
| 	if( My_Connections[i].sock > NONE ) | ||||
| 	{ | ||||
| 		/* Incoming connection */ | ||||
|  | ||||
| 		/* Search client ... */ | ||||
| 		c = Client_GetFromConn( i ); | ||||
| 		assert( c != NULL ); | ||||
|  | ||||
| 		/* Only update client information of unregistered clients */ | ||||
| 		if( Client_Type( c ) == CLIENT_UNKNOWN ) | ||||
| 		{ | ||||
| 			if( s->stage == 0 ) | ||||
| 			{ | ||||
| 				/* host name */ | ||||
| 				strlcpy( My_Connections[i].host, s->buffer, sizeof( My_Connections[i].host )); | ||||
| 				Client_SetHostname( c, s->buffer ); | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| 				/* clean up buffer for IDENT result */ | ||||
| 				len = strlen( s->buffer ) + 1; | ||||
| 				memmove( s->buffer, s->buffer + len, sizeof( s->buffer ) - len ); | ||||
| 				s->bufpos -= len; | ||||
|  | ||||
| 				/* Don't close pipe and clean up, but | ||||
| 				 * instead wait for IDENT result */ | ||||
| 				s->stage = 1; | ||||
| 				goto try_resolve; | ||||
| 			} | ||||
| 			else if( s->stage == 1 ) | ||||
| 			{ | ||||
| 				/* IDENT user name */ | ||||
| 				if( s->buffer[0] ) | ||||
| 				{ | ||||
| 					Log( LOG_INFO, "IDENT lookup for connection %ld: \"%s\".", i, s->buffer ); | ||||
| 					Client_SetUser( c, s->buffer, TRUE ); | ||||
| 				} | ||||
| 				else Log( LOG_INFO, "IDENT lookup for connection %ld: no result.", i ); | ||||
| #endif | ||||
| 			} | ||||
| 			else Log( LOG_ERR, "Resolver: got result for unknown stage %d!?", s->stage ); | ||||
| 		} | ||||
| #ifdef DEBUG | ||||
| 		else Log( LOG_DEBUG, "Resolver: discarding result for already registered connection %d.", i ); | ||||
| #endif | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		/* Outgoing connection (server link): set the IP address | ||||
| 		 * so that we can connect to it in the main loop. */ | ||||
|  | ||||
| 		/* Search server ... */ | ||||
| 		n = Conf_GetServer( i ); | ||||
| 		assert( n > NONE ); | ||||
|  | ||||
| 		strlcpy( Conf_Server[n].ip, s->buffer, sizeof( Conf_Server[n].ip )); | ||||
| 	} | ||||
|  | ||||
| 	/* Clean up ... */ | ||||
| 	FD_CLR( r_fd, &Resolver_FDs ); | ||||
| 	/* Aufraeumen */ | ||||
| 	close( My_Connections[i].res_stat->pipe[0] ); | ||||
| 	close( My_Connections[i].res_stat->pipe[1] ); | ||||
| 	free( My_Connections[i].res_stat ); | ||||
| 	My_Connections[i].res_stat = NULL; | ||||
|  | ||||
| 	/* Reset penalty time */ | ||||
| 	if( My_Connections[i].sock > NONE ) | ||||
| 	{ | ||||
| 		/* Eingehende Verbindung: Hostnamen setzen */ | ||||
| 		c = Client_GetFromConn( i ); | ||||
| 		assert( c != NULL ); | ||||
| 		strlcpy( My_Connections[i].host, result, sizeof( My_Connections[i].host )); | ||||
| 		Client_SetHostname( c, result ); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		/* Ausgehende Verbindung (=Server): IP setzen */ | ||||
| 		n = Conf_GetServer( i ); | ||||
| 		if( n > NONE ) strlcpy( Conf_Server[n].ip, result, sizeof( Conf_Server[n].ip )); | ||||
| 		else Log( LOG_ERR, "Got resolver result for non-configured server!?" ); | ||||
| 	} | ||||
|  | ||||
| 	/* Penalty-Zeit zurueck setzen */ | ||||
| 	Conn_ResetPenalty( i ); | ||||
| } /* Read_Resolver_Result */ | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: conn.h,v 1.32 2003/12/26 15:55:07 alex Exp $ | ||||
|  * $Id: conn.h,v 1.31.2.1 2003/12/26 16:16:48 alex Exp $ | ||||
|  * | ||||
|  * Connection management (header) | ||||
|  */ | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: defines.h,v 1.45.2.1 2004/05/07 11:24:18 alex Exp $ | ||||
|  * $Id: defines.h,v 1.42.2.2 2003/12/26 16:16:48 alex Exp $ | ||||
|  * | ||||
|  * Global defines of ngIRCd. | ||||
|  */ | ||||
| @@ -67,7 +67,7 @@ | ||||
| #define PROTOIRCPLUS "-IRC+"		/* Protokoll-Suffix f<>r IRC+-Protokoll */ | ||||
|  | ||||
| #ifdef IRCPLUS | ||||
| # define IRCPLUSFLAGS "CL"		/* IRC+-Flags, die immer zutreffen */ | ||||
| # define IRCPLUSFLAGS "C"		/* IRC+-Flags, die immer zutreffen */ | ||||
| #endif | ||||
|  | ||||
| #define STARTUP_DELAY 1			/* Erst n Sek. nach Start zu anderen Servern verbinden */ | ||||
| @@ -83,8 +83,6 @@ | ||||
|  | ||||
| #define CONFIG_FILE "/ngircd.conf" | ||||
| #define MOTD_FILE "/ngircd.motd" | ||||
| #define MOTD_PHRASE "" | ||||
| #define CHROOT_DIR "" | ||||
|  | ||||
| #define ERROR_DIR "/tmp" | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-channel.c,v 1.27 2004/04/09 20:46:48 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-channel.c,v 1.25 2003/01/08 22:04:05 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -68,7 +68,7 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) | ||||
| 	channame = strtok( Req->argv[0], "," ); | ||||
| 	while( channame ) | ||||
| 	{ | ||||
| 		chan = NULL; flags = NULL; | ||||
| 		chan = flags = NULL; | ||||
|  | ||||
| 		/* wird der Channel neu angelegt? */ | ||||
| 		if( Channel_Search( channame )) is_new_chan = FALSE; | ||||
| @@ -86,7 +86,7 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		/* Local client? */ | ||||
| 		/* Lokaler Client? */ | ||||
| 		if( Client_Type( Client ) == CLIENT_USER ) | ||||
| 		{ | ||||
| 			/* Test if the user has reached his maximum channel count */ | ||||
| @@ -159,16 +159,6 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req ) | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		else | ||||
| 		{ | ||||
| 			/* Remote server: we don't need to know whether the | ||||
| 			 * client is invited or not, but we have to make sure | ||||
| 			 * that the "one shot" entries (generated by INVITE | ||||
| 			 * commands) in this list become deleted when a user | ||||
| 			 * joins a channel this way. */ | ||||
| 			chan = Channel_Search( channame ); | ||||
| 			if( chan != NULL ) (VOID)Lists_CheckInvited( target, chan ); | ||||
| 		} | ||||
|  | ||||
| 		/* Channel joinen (und ggf. anlegen) */ | ||||
| 		if( ! Channel_Join( target, channame )) | ||||
|   | ||||
| @@ -14,14 +14,13 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-info.c,v 1.21.2.2 2005/01/24 14:22:30 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-info.c,v 1.16.2.4 2003/12/26 16:16:48 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| #include <errno.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
|  | ||||
| #include "ngircd.h" | ||||
| #include "cvs-version.h" | ||||
| @@ -770,17 +769,9 @@ IRC_Show_MOTD( CLIENT *Client ) | ||||
| 	BOOLEAN ok; | ||||
| 	CHAR line[127]; | ||||
| 	FILE *fd; | ||||
| 	UINT line_len; | ||||
|  | ||||
| 	assert( Client != NULL ); | ||||
|  | ||||
| 	if( Conf_MotdPhrase[0] ) | ||||
| 	{ | ||||
| 		if( ! IRC_WriteStrClient( Client, RPL_MOTDSTART_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )))) return DISCONNECTED; | ||||
| 		if( ! IRC_WriteStrClient( Client, RPL_MOTD_MSG, Client_ID( Client ), Conf_MotdPhrase )) return DISCONNECTED; | ||||
| 		return IRC_WriteStrClient( Client, RPL_ENDOFMOTD_MSG, Client_ID( Client )); | ||||
| 	} | ||||
|  | ||||
| 	fd = fopen( Conf_MotdFile, "r" ); | ||||
| 	if( ! fd ) | ||||
| 	{ | ||||
| @@ -788,15 +779,11 @@ IRC_Show_MOTD( CLIENT *Client ) | ||||
| 		return IRC_WriteStrClient( Client, ERR_NOMOTD_MSG, Client_ID( Client ) ); | ||||
| 	} | ||||
|  | ||||
| 	if( ! IRC_WriteStrClient( Client, RPL_MOTDSTART_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )))) return DISCONNECTED; | ||||
| 	IRC_WriteStrClient( Client, RPL_MOTDSTART_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( ))); | ||||
| 	while( TRUE ) | ||||
| 	{ | ||||
| 		if( ! fgets( line, sizeof( line ), fd )) break; | ||||
|  | ||||
| 		line_len = strlen( line ); | ||||
| 		if( line_len > 0 ) line_len--; | ||||
| 		if( line[line_len] == '\n' ) line[line_len] = '\0'; | ||||
|  | ||||
| 		if( ! fgets( line, 126, fd )) break; | ||||
| 		if( line[strlen( line ) - 1] == '\n' ) line[strlen( line ) - 1] = '\0'; | ||||
| 		if( ! IRC_WriteStrClient( Client, RPL_MOTD_MSG, Client_ID( Client ), line )) | ||||
| 		{ | ||||
| 			fclose( fd ); | ||||
|   | ||||
| @@ -14,14 +14,13 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-login.c,v 1.40 2004/03/11 22:16:31 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-login.c,v 1.34.2.3 2004/02/04 20:04:54 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
|  | ||||
| #include "ngircd.h" | ||||
| #include "resolve.h" | ||||
| @@ -286,10 +285,6 @@ IRC_NICK( CLIENT *Client, REQUEST *Req ) | ||||
| GLOBAL BOOLEAN | ||||
| IRC_USER( CLIENT *Client, REQUEST *Req ) | ||||
| { | ||||
| #ifdef IDENTAUTH | ||||
| 	CHAR *ptr; | ||||
| #endif | ||||
|  | ||||
| 	assert( Client != NULL ); | ||||
| 	assert( Req != NULL ); | ||||
|  | ||||
| @@ -303,15 +298,11 @@ IRC_USER( CLIENT *Client, REQUEST *Req ) | ||||
| 		if( Req->argc != 4 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command ); | ||||
|  | ||||
| 		/* User name */ | ||||
| #ifdef IDENTAUTH | ||||
| 		ptr = Client_User( Client ); | ||||
| 		if( ! ptr || ! *ptr || *ptr == '~' ) Client_SetUser( Client, Req->argv[0], FALSE ); | ||||
| #else | ||||
| 		Client_SetUser( Client, Req->argv[0], FALSE ); | ||||
| #endif | ||||
|  | ||||
| 		/* "Real name" or user info text: Don't set it to the empty string, the original ircd | ||||
| 		 * can't deal with such "real names" (e. g. "USER user * * :") ... */ | ||||
| 		/* "Real name" or user info text: Don't set it to the empty | ||||
| 		 * string, the original ircd can't deal with such "real names" | ||||
| 		 * (e. g. "USER user * * :") ... */ | ||||
| 		if( *Req->argv[3] ) Client_SetInfo( Client, Req->argv[3] ); | ||||
| 		else Client_SetInfo( Client, "-" ); | ||||
|  | ||||
| @@ -509,7 +500,7 @@ Kill_Nick( CHAR *Nick, CHAR *Reason ) | ||||
| 	assert( Nick != NULL ); | ||||
| 	assert( Reason != NULL ); | ||||
|  | ||||
| 	r.prefix = (CHAR *)Client_ThisServer( ); | ||||
| 	r.prefix = Client_ThisServer( ); | ||||
| 	r.argv[0] = Nick; | ||||
| 	r.argv[1] = Reason; | ||||
| 	r.argc = 2; | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-mode.c,v 1.35 2004/04/25 15:42:05 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-mode.c,v 1.31.2.1 2003/11/07 20:51:11 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -225,7 +225,7 @@ client_exit: | ||||
| 		else | ||||
| 		{ | ||||
| 			/* Send reply to client and inform other servers */ | ||||
| 			ok = IRC_WriteStrClientPrefix( Client, Origin, "MODE %s :%s", Client_ID( Target ), the_modes ); | ||||
| 			ok = IRC_WriteStrClientPrefix( Client, Origin, "MODE %s %s", Client_ID( Target ), the_modes ); | ||||
| 			IRC_WriteStrServersPrefix( Client, Origin, "MODE %s :%s", Client_ID( Target ), the_modes ); | ||||
| 		} | ||||
| 		Log( LOG_DEBUG, "User \"%s\": Mode change, now \"%s\".", Client_Mask( Target ), Client_Modes( Target )); | ||||
| @@ -635,7 +635,6 @@ LOCAL BOOLEAN | ||||
| Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) | ||||
| { | ||||
| 	CHAR *mask; | ||||
| 	BOOLEAN already; | ||||
|  | ||||
| 	assert( Client != NULL ); | ||||
| 	assert( Channel != NULL ); | ||||
| @@ -643,12 +642,7 @@ Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) | ||||
|  | ||||
| 	mask = Lists_MakeMask( Pattern ); | ||||
|  | ||||
| 	already = Lists_IsInviteEntry( mask, Channel ); | ||||
| 	 | ||||
| 	if( ! Lists_AddInvited( mask, Channel, FALSE )) return CONNECTED; | ||||
| 	 | ||||
| 	if(( Client_Type( Prefix ) == CLIENT_SERVER ) && ( already == TRUE )) return CONNECTED; | ||||
|  | ||||
| 	if( ! Lists_AddInvited( Prefix, mask, Channel, FALSE )) return CONNECTED; | ||||
| 	return Send_ListChange( "+I", Prefix, Client, Channel, mask ); | ||||
| } /* Add_Invite */ | ||||
|  | ||||
| @@ -657,7 +651,6 @@ LOCAL BOOLEAN | ||||
| Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) | ||||
| { | ||||
| 	CHAR *mask; | ||||
| 	BOOLEAN already; | ||||
|  | ||||
| 	assert( Client != NULL ); | ||||
| 	assert( Channel != NULL ); | ||||
| @@ -665,12 +658,7 @@ Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern ) | ||||
|  | ||||
| 	mask = Lists_MakeMask( Pattern ); | ||||
|  | ||||
| 	already = Lists_IsBanEntry( mask, Channel ); | ||||
|  | ||||
| 	if( ! Lists_AddBanned( mask, Channel )) return CONNECTED; | ||||
|  | ||||
| 	if(( Client_Type( Prefix ) == CLIENT_SERVER ) && ( already == TRUE )) return CONNECTED; | ||||
|  | ||||
| 	if( ! Lists_AddBanned( Prefix, mask, Channel )) return CONNECTED; | ||||
| 	return Send_ListChange( "+b", Prefix, Client, Channel, mask ); | ||||
| } /* Add_Ban */ | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-op.c,v 1.13 2004/04/09 21:41:52 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-op.c,v 1.11.4.1 2003/12/05 13:33:12 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -104,7 +104,7 @@ IRC_INVITE( CLIENT *Client, REQUEST *Req ) | ||||
| 		if( remember ) | ||||
| 		{ | ||||
| 			/* We must memember this invite */ | ||||
| 			if( ! Lists_AddInvited( Client_Mask( target ), chan, TRUE )) return CONNECTED; | ||||
| 			if( ! Lists_AddInvited( from, Client_Mask( target ), chan, TRUE )) return CONNECTED; | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -14,16 +14,14 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-server.c,v 1.36.2.1 2004/05/15 23:52:17 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-server.c,v 1.32.2.2 2003/12/26 16:16:48 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| #include <stdio.h> | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
|  | ||||
| #include "defines.h" | ||||
| #include "resolve.h" | ||||
| #include "conn.h" | ||||
| #include "conn-zip.h" | ||||
| @@ -31,7 +29,6 @@ static char UNUSED id[] = "$Id: irc-server.c,v 1.36.2.1 2004/05/15 23:52:17 alex | ||||
| #include "client.h" | ||||
| #include "channel.h" | ||||
| #include "irc-write.h" | ||||
| #include "lists.h" | ||||
| #include "log.h" | ||||
| #include "messages.h" | ||||
| #include "parse.h" | ||||
| @@ -185,9 +182,6 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req ) | ||||
| 			/* Send CHANINFO if the peer supports it */ | ||||
| 			if( strchr( Client_Flags( Client ), 'C' )) | ||||
| 			{ | ||||
| #ifdef DEBUG | ||||
| 				Log( LOG_DEBUG, "Sending CHANINFO commands ..." ); | ||||
| #endif | ||||
| 				modes = Channel_Modes( chan ); | ||||
| 				topic = Channel_Topic( chan ); | ||||
|  | ||||
| @@ -244,18 +238,6 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req ) | ||||
| 				if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED; | ||||
| 			} | ||||
|  | ||||
| #ifdef IRCPLUS | ||||
| 			if( strchr( Client_Flags( Client ), 'L' )) | ||||
| 			{ | ||||
| #ifdef DEBUG | ||||
| 				Log( LOG_DEBUG, "Synchronizing INVITE- and BAN-lists ..." ); | ||||
| #endif | ||||
| 				/* Synchronize INVITE- and BAN-lists */ | ||||
| 				if( ! Lists_SendInvites( Client )) return DISCONNECTED; | ||||
| 				if( ! Lists_SendBans( Client )) return DISCONNECTED; | ||||
| 			} | ||||
| #endif | ||||
|  | ||||
| 			/* naechsten Channel suchen */ | ||||
| 			chan = Channel_Next( chan ); | ||||
| 		} | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc-write.c,v 1.15 2003/11/05 23:24:48 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc-write.c,v 1.14.2.1 2003/11/07 20:51:11 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: irc-write.h,v 1.6 2003/11/05 23:24:48 alex Exp $ | ||||
|  * $Id: irc-write.h,v 1.5.4.1 2003/11/07 20:51:11 alex Exp $ | ||||
|  * | ||||
|  * Sending IRC commands over the network (header) | ||||
|  */ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2004 Alexander Barton <alex@barton.de> | ||||
|  * Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: irc.c,v 1.124 2004/02/28 02:18:16 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: irc.c,v 1.120.2.3 2003/12/26 16:16:48 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -210,7 +210,6 @@ IRC_TRACE( CLIENT *Client, REQUEST *Req ) | ||||
| { | ||||
| 	CLIENT *from, *target, *c; | ||||
| 	CONN_ID idx, idx2; | ||||
| 	CHAR user[CLIENT_USER_LEN]; | ||||
|  | ||||
| 	assert( Client != NULL ); | ||||
| 	assert( Req != NULL ); | ||||
| @@ -252,9 +251,7 @@ IRC_TRACE( CLIENT *Client, REQUEST *Req ) | ||||
| 			if( Client_Type( c ) == CLIENT_SERVER ) | ||||
| 			{ | ||||
| 				/* Server link */ | ||||
| 				strlcpy( user, Client_User( c ), sizeof( user )); | ||||
| 				if( user[0] == '~' ) strlcpy( user, "unknown", sizeof( user )); | ||||
| 				if( ! IRC_WriteStrClient( from, RPL_TRACESERVER_MSG, Client_ID( from ), Client_ID( c ), user, Client_Hostname( c ), Client_Mask( Client_ThisServer( )), Option_String( Client_Conn( c )))) return DISCONNECTED; | ||||
| 				if( ! IRC_WriteStrClient( from, RPL_TRACESERVER_MSG, Client_ID( from ), Client_ID( c ), Client_Mask( c ), Option_String( Client_Conn( c )))) return DISCONNECTED; | ||||
| 			} | ||||
| 			if(( Client_Type( c ) == CLIENT_USER ) && ( strchr( Client_Modes( c ), 'o' ))) | ||||
| 			{ | ||||
| @@ -265,6 +262,9 @@ IRC_TRACE( CLIENT *Client, REQUEST *Req ) | ||||
| 		c = Client_Next( c ); | ||||
| 	} | ||||
|  | ||||
| 	/* Some information about us */ | ||||
| 	if( ! IRC_WriteStrClient( from, RPL_TRACESERVER_MSG, Client_ID( from ), Conf_ServerName, Client_Mask( Client_ThisServer( )), Option_String( Client_Conn( Client )))) return DISCONNECTED; | ||||
|  | ||||
| 	IRC_SetPenalty( Client, 3 ); | ||||
| 	return IRC_WriteStrClient( from, RPL_TRACEEND_MSG, Client_ID( from ), Conf_ServerName, PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_DebugLevel ); | ||||
| } /* IRC_TRACE */ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2005 Alexander Barton (alex@barton.de) | ||||
|  * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: lists.c,v 1.15.2.1 2005/01/26 13:27:01 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: lists.c,v 1.11 2002/12/26 16:25:43 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -30,7 +30,6 @@ static char UNUSED id[] = "$Id: lists.c,v 1.15.2.1 2005/01/26 13:27:01 alex Exp | ||||
|  | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
|  | ||||
| #include "exp.h" | ||||
| #include "lists.h" | ||||
| @@ -102,24 +101,19 @@ Lists_CheckInvited( CLIENT *Client, CHANNEL *Chan ) | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_IsInviteEntry( CHAR *Mask, CHANNEL *Chan ) | ||||
| { | ||||
| 	assert( Mask != NULL ); | ||||
| 	assert( Chan != NULL ); | ||||
| 	 | ||||
| 	return Already_Registered( My_Invites, Mask, Chan ); | ||||
| } /* Lists_IsInviteEntry */ | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_AddInvited( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ) | ||||
| Lists_AddInvited( CLIENT *From, CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ) | ||||
| { | ||||
| 	C2C *c2c; | ||||
|  | ||||
| 	assert( Mask != NULL ); | ||||
| 	assert( Chan != NULL ); | ||||
|  | ||||
| 	if( Already_Registered( My_Invites, Mask, Chan )) return TRUE; | ||||
| 	if( Already_Registered( My_Invites, Mask, Chan )) | ||||
| 	{ | ||||
| 		/* Eintrag ist bereits vorhanden */ | ||||
| 		IRC_WriteStrClient( From, RPL_INVITELIST_MSG, Client_ID( From ), Channel_Name( Chan ), Mask ); | ||||
| 		return FALSE; | ||||
| 	} | ||||
| 	 | ||||
| 	c2c = New_C2C( Mask, Chan, OnlyOnce ); | ||||
| 	if( ! c2c ) | ||||
| @@ -186,40 +180,6 @@ Lists_ShowInvites( CLIENT *Client, CHANNEL *Channel ) | ||||
| } /* Lists_ShowInvites */ | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_SendInvites( CLIENT *Client ) | ||||
| { | ||||
| 	C2C *c2c; | ||||
| 	 | ||||
| 	assert( Client != NULL ); | ||||
| 	 | ||||
| 	c2c = My_Invites; | ||||
| 	while( c2c ) | ||||
| 	{ | ||||
| 		if( ! IRC_WriteStrClient( Client, "MODE %s +I %s", Channel_Name( c2c->channel ), c2c->mask )) return DISCONNECTED; | ||||
| 		c2c = c2c->next; | ||||
| 	} | ||||
| 	return CONNECTED; | ||||
| } /* Lists_SendInvites */ | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_SendBans( CLIENT *Client ) | ||||
| { | ||||
| 	C2C *c2c; | ||||
| 	 | ||||
| 	assert( Client != NULL ); | ||||
| 	 | ||||
| 	c2c = My_Bans; | ||||
| 	while( c2c ) | ||||
| 	{ | ||||
| 		if( ! IRC_WriteStrClient( Client, "MODE %s +b %s", Channel_Name( c2c->channel ), c2c->mask )) return DISCONNECTED; | ||||
| 		c2c = c2c->next; | ||||
| 	} | ||||
| 	return CONNECTED; | ||||
| } /* Lists_SendBans */ | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_CheckBanned( CLIENT *Client, CHANNEL *Chan ) | ||||
| { | ||||
| @@ -228,24 +188,19 @@ Lists_CheckBanned( CLIENT *Client, CHANNEL *Chan ) | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_IsBanEntry( CHAR *Mask, CHANNEL *Chan ) | ||||
| { | ||||
| 	assert( Mask != NULL ); | ||||
| 	assert( Chan != NULL ); | ||||
| 	 | ||||
| 	return Already_Registered( My_Bans, Mask, Chan ); | ||||
| } /* Lists_IsBanEntry */ | ||||
|  | ||||
|  | ||||
| GLOBAL BOOLEAN | ||||
| Lists_AddBanned( CHAR *Mask, CHANNEL *Chan ) | ||||
| Lists_AddBanned( CLIENT *From, CHAR *Mask, CHANNEL *Chan ) | ||||
| { | ||||
| 	C2C *c2c; | ||||
|  | ||||
| 	assert( Mask != NULL ); | ||||
| 	assert( Chan != NULL ); | ||||
|  | ||||
| 	if( Already_Registered( My_Bans, Mask, Chan )) return TRUE; | ||||
| 	if( Already_Registered( My_Bans, Mask, Chan )) | ||||
| 	{ | ||||
| 		/* Eintrag ist bereits vorhanden */ | ||||
| 		IRC_WriteStrClient( From, RPL_BANLIST_MSG, Client_ID( From ), Channel_Name( Chan ), Mask ); | ||||
| 		return FALSE; | ||||
| 	} | ||||
|  | ||||
| 	c2c = New_C2C( Mask, Chan, FALSE ); | ||||
| 	if( ! c2c ) | ||||
| @@ -360,10 +315,9 @@ Lists_DeleteChannel( CHANNEL *Chan ) | ||||
| GLOBAL CHAR * | ||||
| Lists_MakeMask( CHAR *Pattern ) | ||||
| { | ||||
| 	/* This function generats a valid IRC mask of "any" string. This | ||||
| 	 * mask is only valid until the next call to Lists_MakeMask(), | ||||
| 	 * because a single global buffer is used. You have to copy the | ||||
| 	 * generated mask to some sane location yourself! */ | ||||
| 	/* Hier wird aus einem "beliebigen" Pattern eine gueltige IRC-Mask erzeugt. | ||||
| 	 * Diese ist aber nur bis zum naechsten Aufruf von Lists_MakeMask() gueltig, | ||||
| 	 * da ein einziger globaler Puffer verwendet wird. ->Umkopieren!*/ | ||||
|  | ||||
| 	STATIC CHAR TheMask[MASK_LEN]; | ||||
| 	CHAR *excl, *at; | ||||
| @@ -377,7 +331,7 @@ Lists_MakeMask( CHAR *Pattern ) | ||||
|  | ||||
| 	if(( ! at ) && ( ! excl )) | ||||
| 	{ | ||||
| 		/* Neither "!" nor "@" found: use string as nick name */ | ||||
| 		/* weder ! noch @ vorhanden: als Nick annehmen */ | ||||
| 		strlcpy( TheMask, Pattern, sizeof( TheMask ) - 5 ); | ||||
| 		strlcat( TheMask, "!*@*", sizeof( TheMask )); | ||||
| 		return TheMask; | ||||
| @@ -385,7 +339,7 @@ Lists_MakeMask( CHAR *Pattern ) | ||||
|  | ||||
| 	if(( ! at ) && ( excl )) | ||||
| 	{ | ||||
| 		/* Domain part is missing */ | ||||
| 		/* Domain fehlt */ | ||||
| 		strlcpy( TheMask, Pattern, sizeof( TheMask ) - 3 ); | ||||
| 		strlcat( TheMask, "@*", sizeof( TheMask )); | ||||
| 		return TheMask; | ||||
| @@ -393,15 +347,15 @@ Lists_MakeMask( CHAR *Pattern ) | ||||
|  | ||||
| 	if(( at ) && ( ! excl )) | ||||
| 	{ | ||||
| 		/* User name is missing */ | ||||
| 		/* User fehlt */ | ||||
| 		*at = '\0'; at++; | ||||
| 		strlcpy( TheMask, Pattern, sizeof( TheMask ) - 5 ); | ||||
| 		strlcpy( TheMask, Pattern, sizeof( TheMask ) - strlen( at ) - 4 ); | ||||
| 		strlcat( TheMask, "!*@", sizeof( TheMask )); | ||||
| 		strlcat( TheMask, at, sizeof( TheMask )); | ||||
| 		return TheMask; | ||||
| 	} | ||||
|  | ||||
| 	/* All parts (nick, user and domain name) are given */ | ||||
| 	/* alle Teile vorhanden */ | ||||
| 	strlcpy( TheMask, Pattern, sizeof( TheMask )); | ||||
| 	return TheMask; | ||||
| } /* Lists_MakeMask */ | ||||
| @@ -416,7 +370,7 @@ New_C2C( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ) | ||||
| 	assert( Chan != NULL ); | ||||
|  | ||||
| 	/* Speicher fuer Eintrag anfordern */ | ||||
| 	c2c = (C2C *)malloc( sizeof( C2C )); | ||||
| 	c2c = malloc( sizeof( C2C )); | ||||
| 	if( ! c2c ) | ||||
| 	{ | ||||
| 		Log( LOG_EMERG, "Can't allocate memory! [New_C2C]" ); | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: lists.h,v 1.11 2004/04/25 15:40:19 alex Exp $ | ||||
|  * $Id: lists.h,v 1.9 2002/12/12 12:23:43 alex Exp $ | ||||
|  * | ||||
|  * Management of IRC lists: ban, invite, ... (header) | ||||
|  */ | ||||
| @@ -22,18 +22,14 @@ GLOBAL VOID Lists_Init PARAMS(( VOID )); | ||||
| GLOBAL VOID Lists_Exit PARAMS(( VOID )); | ||||
|  | ||||
| GLOBAL BOOLEAN Lists_CheckInvited PARAMS(( CLIENT *Client, CHANNEL *Chan )); | ||||
| GLOBAL BOOLEAN Lists_AddInvited PARAMS(( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce )); | ||||
| GLOBAL BOOLEAN Lists_AddInvited PARAMS(( CLIENT *From, CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce )); | ||||
| GLOBAL VOID Lists_DelInvited PARAMS(( CHAR *Mask, CHANNEL *Chan )); | ||||
| GLOBAL BOOLEAN Lists_ShowInvites PARAMS(( CLIENT *Client, CHANNEL *Channel )); | ||||
| GLOBAL BOOLEAN Lists_SendInvites PARAMS(( CLIENT *Client )); | ||||
| GLOBAL BOOLEAN Lists_IsInviteEntry PARAMS(( CHAR *Mask, CHANNEL *Chan )); | ||||
|  | ||||
| GLOBAL BOOLEAN Lists_CheckBanned PARAMS(( CLIENT *Client, CHANNEL *Chan )); | ||||
| GLOBAL BOOLEAN Lists_AddBanned PARAMS(( CHAR *Mask, CHANNEL *Chan )); | ||||
| GLOBAL BOOLEAN Lists_AddBanned PARAMS(( CLIENT *From, CHAR *Mask, CHANNEL *Chan )); | ||||
| GLOBAL VOID Lists_DelBanned PARAMS(( CHAR *Mask, CHANNEL *Chan )); | ||||
| GLOBAL BOOLEAN Lists_ShowBans PARAMS(( CLIENT *Client, CHANNEL *Channel )); | ||||
| GLOBAL BOOLEAN Lists_SendBans PARAMS(( CLIENT *Client )); | ||||
| GLOBAL BOOLEAN Lists_IsBanEntry PARAMS(( CHAR *Mask, CHANNEL *Chan )); | ||||
|  | ||||
| GLOBAL VOID Lists_DeleteChannel PARAMS(( CHANNEL *Chan )); | ||||
|  | ||||
|   | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: log.c,v 1.44.2.3 2004/06/26 09:06:27 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: log.c,v 1.43.2.1 2003/12/26 16:16:48 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -85,8 +85,6 @@ Log_Init( VOID ) | ||||
| 	} | ||||
| #endif | ||||
| 	if( Init_Txt[0] ) Log( LOG_INFO, "Activating: %s.", Init_Txt ); | ||||
|  | ||||
| 	Error_File[0] = '\0'; | ||||
| } /* Log_Init */ | ||||
|  | ||||
|  | ||||
| @@ -124,11 +122,8 @@ Log_Exit( VOID ) | ||||
| 	if( NGIRCd_SignalRestart ) Log( LOG_NOTICE, "%s done (restarting).", PACKAGE_NAME ); | ||||
| 	else Log( LOG_NOTICE, "%s done.", PACKAGE_NAME ); | ||||
|  | ||||
| 	if( Error_File[0] ) | ||||
| 	{ | ||||
| 		/* Error-File (stderr) loeschen */ | ||||
| 		if( unlink( Error_File ) != 0 ) Log( LOG_ERR, "Can't delete \"%s\": %s", Error_File, strerror( errno )); | ||||
| 	} | ||||
| 	/* Error-File (stderr) loeschen */ | ||||
| 	if( unlink( Error_File ) != 0 ) Log( LOG_ERR, "Can't delete \"%s\": %s", Error_File, strerror( errno )); | ||||
|  | ||||
| #ifdef SYSLOG | ||||
| 	/* syslog abmelden */ | ||||
| @@ -182,7 +177,7 @@ va_dcl | ||||
| 	if( NGIRCd_NoDaemon ) | ||||
| 	{ | ||||
| 		/* auf Konsole ausgeben */ | ||||
| 		fprintf( stdout, "[%d:%d] %s\n", (INT)getpid( ), Level, msg ); | ||||
| 		fprintf( stdout, "[%d] %s\n", Level, msg ); | ||||
| 		fflush( stdout ); | ||||
| 	} | ||||
| #ifdef SYSLOG | ||||
| @@ -214,14 +209,12 @@ Log_Init_Resolver( VOID ) | ||||
| #ifdef SYSLOG | ||||
| 	openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 ); | ||||
| #endif | ||||
| 	Log_Resolver( LOG_DEBUG, "Resolver sub-process starting, PID %d.", getpid( )); | ||||
| } /* Log_Init_Resolver */ | ||||
|  | ||||
|  | ||||
| GLOBAL VOID | ||||
| Log_Exit_Resolver( VOID ) | ||||
| { | ||||
| 	Log_Resolver( LOG_DEBUG, "Resolver sub-process %d done.", getpid( )); | ||||
| #ifdef SYSLOG | ||||
| 	closelog( ); | ||||
| #endif | ||||
| @@ -241,11 +234,17 @@ va_dcl | ||||
| { | ||||
| 	/* Eintrag des Resolver in Logfile(s) schreiben */ | ||||
|  | ||||
| #ifndef SYSLOG | ||||
| 	return; | ||||
| #else | ||||
|  | ||||
| 	CHAR msg[MAX_LOG_MSG_LEN]; | ||||
| 	va_list ap; | ||||
|  | ||||
| 	assert( Format != NULL ); | ||||
|  | ||||
| 	if( NGIRCd_NoDaemon ) return; | ||||
|  | ||||
| #ifdef DEBUG | ||||
| 	if(( Level == LOG_DEBUG ) && ( ! NGIRCd_Debug )) return; | ||||
| #else | ||||
| @@ -261,15 +260,9 @@ va_dcl | ||||
| 	vsnprintf( msg, MAX_LOG_MSG_LEN, Format, ap ); | ||||
| 	va_end( ap ); | ||||
|  | ||||
| 	/* Output */ | ||||
| 	if( NGIRCd_NoDaemon ) | ||||
| 	{ | ||||
| 		/* Output to console */ | ||||
| 		fprintf( stdout, "[%d:%d] %s\n", (INT)getpid( ), Level, msg ); | ||||
| 		fflush( stdout ); | ||||
| 	} | ||||
| #ifdef SYSLOG | ||||
| 	else syslog( Level, msg ); | ||||
| 	/* ... und ausgeben */ | ||||
| 	syslog( Level, msg ); | ||||
|  | ||||
| #endif | ||||
| } /* Log_Resolver */ | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: log.h,v 1.14 2003/12/26 15:55:07 alex Exp $ | ||||
|  * $Id: log.h,v 1.13.4.1 2003/12/26 16:16:48 alex Exp $ | ||||
|  * | ||||
|  * Logging functions (header) | ||||
|  */ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2004 Alexander Barton <alex@barton.de> | ||||
|  * Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: messages.h,v 1.66 2004/02/28 02:18:16 alex Exp $ | ||||
|  * $Id: messages.h,v 1.64.2.1 2003/12/26 16:16:48 alex Exp $ | ||||
|  * | ||||
|  * IRC numerics (Header) | ||||
|  */ | ||||
| @@ -26,7 +26,7 @@ | ||||
|  | ||||
| #define RPL_TRACELINK_MSG		"200 %s Link %s-%s %s %s V%s %ld %d %d" | ||||
| #define RPL_TRACEOPERATOR_MSG		"204 %s Oper 2 :%s" | ||||
| #define RPL_TRACESERVER_MSG		"206 %s Serv 1 0S 0C %s[%s@%s] *!*@%s :V%s" | ||||
| #define RPL_TRACESERVER_MSG		"206 %s Serv 1 0S 0C %s *!*@%s :V%s" | ||||
| #define RPL_STATSLINKINFO_MSG		"211 %s %s %d %ld %ld %ld %ld :%ld" | ||||
| #define RPL_STATSCOMMANDS_MSG		"212 %s %s %ld %ld %ld" | ||||
| #define RPL_ENDOFSTATS_MSG		"219 %s %c :End of STATS report" | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2005 by Alexander Barton (alex@barton.de) | ||||
|  * Copyright (c)2001-2004 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: ngircd.c,v 1.83.2.3 2005/01/26 22:02:36 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: ngircd.c,v 1.76.2.3 2004/01/02 19:24:46 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -24,20 +24,20 @@ static char UNUSED id[] = "$Id: ngircd.c,v 1.83.2.3 2005/01/26 22:02:36 alex Exp | ||||
| #include <signal.h> | ||||
| #include <string.h> | ||||
| #include <unistd.h> | ||||
| #include <time.h> | ||||
| #include <sys/types.h> | ||||
| #include <sys/stat.h> | ||||
| #include <sys/wait.h> | ||||
| #include <time.h> | ||||
| #include <pwd.h> | ||||
| #include <grp.h> | ||||
|  | ||||
| #include "defines.h" | ||||
| #include "resolve.h" | ||||
| #include "conn.h" | ||||
| #include "client.h" | ||||
| #include "channel.h" | ||||
| #include "conf.h" | ||||
| #include "cvs-version.h" | ||||
| #include "defines.h" | ||||
| #include "lists.h" | ||||
| #include "log.h" | ||||
| #include "parse.h" | ||||
| @@ -183,11 +183,6 @@ main( int argc, const char *argv[] ) | ||||
| 					ok = TRUE; | ||||
| 				} | ||||
| #endif | ||||
| 				if( argv[i][n] == 't' ) | ||||
| 				{ | ||||
| 					configtest = TRUE; | ||||
| 					ok = TRUE; | ||||
| 				} | ||||
|  | ||||
| 				if( ! ok ) | ||||
| 				{ | ||||
| @@ -228,38 +223,6 @@ main( int argc, const char *argv[] ) | ||||
| 	 | ||||
| 	while( ! NGIRCd_SignalQuit ) | ||||
| 	{ | ||||
| 		/* Initialize global variables */ | ||||
| 		NGIRCd_Start = time( NULL ); | ||||
| 		(VOID)strftime( NGIRCd_StartStr, 64, "%a %b %d %Y at %H:%M:%S (%Z)", localtime( &NGIRCd_Start )); | ||||
|  | ||||
| 		NGIRCd_SignalRehash = FALSE; | ||||
| 		NGIRCd_SignalRestart = FALSE; | ||||
| 		NGIRCd_SignalQuit = FALSE; | ||||
|  | ||||
| 		/* Initialize modules, part I */ | ||||
| 		Log_Init( ); | ||||
| 		Conf_Init( ); | ||||
|  | ||||
| 		if( Conf_Chroot[0] ) | ||||
| 		{ | ||||
| 			/* Chroot */ | ||||
| 			if( chdir( Conf_Chroot ) != 0 ) Log( LOG_ERR, "Can't chdir() in ChrootDir (%s): %s", Conf_Chroot, strerror( errno )); | ||||
|  | ||||
| 			if( chroot( Conf_Chroot ) != 0 ) Log( LOG_ERR, "Can't change root directory to \"%s\": %s", Conf_Chroot, strerror( errno )); | ||||
| 			else Log( LOG_INFO, "Changed root and working directory to \"%s\".", Conf_Chroot ); | ||||
| 		} | ||||
|  | ||||
| 		if( Conf_GID != 0 ) | ||||
| 		{ | ||||
| 			/* Set new group ID */ | ||||
| 			if( setgid( Conf_GID ) != 0 ) Log( LOG_ERR, "Can't change group ID to %u: %s", Conf_GID, strerror( errno )); | ||||
| 		} | ||||
| 		if( Conf_UID != 0 ) | ||||
| 		{ | ||||
| 			/* Set new user ID */ | ||||
| 			if( setuid( Conf_UID ) != 0 ) Log( LOG_ERR, "Can't change user ID to %u: %s", Conf_UID, strerror( errno )); | ||||
| 		} | ||||
|  | ||||
| 		/* In der Regel wird ein Sub-Prozess ge-fork()'t, der | ||||
| 		 * nicht mehr mit dem Terminal verbunden ist. Mit der | ||||
| 		 * Option "--nodaemon" kann dies (z.B. zum Debuggen) | ||||
| @@ -284,10 +247,18 @@ main( int argc, const char *argv[] ) | ||||
| 			(VOID)setsid( ); | ||||
| 			chdir( "/" ); | ||||
| 		} | ||||
| 	 | ||||
| 		/* Globale Variablen initialisieren */ | ||||
| 		NGIRCd_Start = time( NULL ); | ||||
| 		(VOID)strftime( NGIRCd_StartStr, 64, "%a %b %d %Y at %H:%M:%S (%Z)", localtime( &NGIRCd_Start )); | ||||
| 		NGIRCd_SignalRehash = FALSE; | ||||
| 		NGIRCd_SignalRestart = FALSE; | ||||
| 		NGIRCd_SignalQuit = FALSE; | ||||
|  | ||||
| 		/* Initialize modules, part II: these functions are eventually | ||||
| 		 * called with already dropped privileges ... */ | ||||
| 		/* Module initialisieren */ | ||||
| 		Log_Init( ); | ||||
| 		Resolve_Init( ); | ||||
| 		Conf_Init( ); | ||||
| 		Lists_Init( ); | ||||
| 		Channel_Init( ); | ||||
| 		Client_Init( ); | ||||
| @@ -296,15 +267,28 @@ main( int argc, const char *argv[] ) | ||||
| #endif | ||||
| 		Conn_Init( ); | ||||
|  | ||||
| 		/* Show user, group, and PID of the running daemon */ | ||||
| 		/* Wenn als root ausgefuehrt und eine andere UID | ||||
| 		 * konfiguriert ist, jetzt zu dieser wechseln */ | ||||
| 		if( getuid( ) == 0 ) | ||||
| 		{ | ||||
| 			if( Conf_GID != 0 ) | ||||
| 			{ | ||||
| 				/* Neue Group-ID setzen */ | ||||
| 				if( setgid( Conf_GID ) != 0 ) Log( LOG_ERR, "Can't change Group-ID to %u: %s", Conf_GID, strerror( errno )); | ||||
| 			} | ||||
| 			if( Conf_UID != 0 ) | ||||
| 			{ | ||||
| 				/* Neue User-ID setzen */ | ||||
| 				if( setuid( Conf_UID ) != 0 ) Log( LOG_ERR, "Can't change User-ID to %u: %s", Conf_UID, strerror( errno )); | ||||
| 			} | ||||
| 		} | ||||
| 		 | ||||
| 		/* User, Gruppe und Prozess-ID des Daemon ausgeben */ | ||||
| 		pwd = getpwuid( getuid( )); grp = getgrgid( getgid( )); | ||||
| 		Log( LOG_INFO, "Running as user %s(%ld), group %s(%ld), with PID %ld.", pwd ? pwd->pw_name : "unknown", (LONG)getuid( ), grp ? grp->gr_name : "unknown", (LONG)getgid( ), (LONG)getpid( )); | ||||
|  | ||||
| 		/* Redirect stderr handle to "error file" for debugging. | ||||
| 		 * But don't try to write in the chroot jail, since it's more  | ||||
| 		 * secure to have a chroot dir not writable by the daemon. | ||||
| 		 */ | ||||
| 		if( ! Conf_Chroot[0] ) Log_InitErrorfile( ); | ||||
| 		/* stderr in "Error-File" umlenken */ | ||||
| 		Log_InitErrorfile( ); | ||||
|  | ||||
| 		/* Signal-Handler initialisieren */ | ||||
| 		Initialize_Signal_Handler( ); | ||||
| @@ -393,10 +377,6 @@ NGIRCd_VersionAddition( VOID ) | ||||
| 	if( txt[0] ) strcat( txt, "+" ); | ||||
| 	strcat( txt, "RENDEZVOUS" ); | ||||
| #endif | ||||
| #ifdef IDENTAUTH | ||||
| 	if( txt[0] ) strcat( txt, "+" ); | ||||
| 	strcat( txt, "IDENT" ); | ||||
| #endif | ||||
| #ifdef DEBUG | ||||
| 	if( txt[0] ) strcat( txt, "+" ); | ||||
| 	strcat( txt, "DEBUG" ); | ||||
| @@ -433,26 +413,30 @@ NGIRCd_Rehash( VOID ) | ||||
| 	Log( LOG_NOTICE|LOG_snotice, "Re-reading configuration NOW!" ); | ||||
| 	NGIRCd_SignalRehash = FALSE; | ||||
|  | ||||
| 	/* Close down all listening sockets */ | ||||
| 	/* Alle Listen-Sockets schliessen */ | ||||
| 	Conn_ExitListeners( ); | ||||
|  | ||||
| 	/* Remember old server name */ | ||||
| 	/* Alten Server-Namen merken */ | ||||
| #ifdef DEBUG | ||||
| 	assert( sizeof( old_name ) == sizeof( Conf_ServerName )); | ||||
| #endif | ||||
| 	strcpy( old_name, Conf_ServerName ); | ||||
|  | ||||
| 	/* Re-read configuration ... */ | ||||
| 	/* Konfiguration neu lesen ... */ | ||||
| 	Conf_Rehash( ); | ||||
|  | ||||
| 	/* Recover old server name: it can't be changed during run-time */ | ||||
| 	/* Alten Server-Namen wiederherstellen: dieser | ||||
| 	 * kann nicht zur Laufzeit geaendert werden ... */ | ||||
| 	if( strcmp( old_name, Conf_ServerName ) != 0 ) | ||||
| 	{ | ||||
| 		strcpy( Conf_ServerName, old_name ); | ||||
| 		Log( LOG_ERR, "Can't change \"ServerName\" on runtime! Ignored new name." ); | ||||
| 	} | ||||
|  | ||||
| 	/* Create new pre-defined channels */ | ||||
| 	/* neue pre-defined Channel anlegen: */ | ||||
| 	Channel_InitPredefined( ); | ||||
| 	 | ||||
| 	/* Start listening on sockets */ | ||||
| 	/* Listen-Sockets neu anlegen: */ | ||||
| 	Conn_InitListeners( ); | ||||
|  | ||||
| 	/* Sync configuration with established connections */ | ||||
| @@ -545,7 +529,7 @@ LOCAL VOID | ||||
| Show_Version( VOID ) | ||||
| { | ||||
| 	puts( NGIRCd_Version( )); | ||||
| 	puts( "Copyright (c)2001-2005 by Alexander Barton (<alex@barton.de>)." ); | ||||
| 	puts( "Copyright (c)2001-2004 by Alexander Barton (<alex@barton.de>)." ); | ||||
| 	puts( "Homepage: <http://arthur.ath.cx/~alex/ngircd/>\n" ); | ||||
| 	puts( "This is free software; see the source for copying conditions. There is NO" ); | ||||
| 	puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." ); | ||||
| @@ -564,7 +548,7 @@ Show_Help( VOID ) | ||||
| #ifdef SNIFFER | ||||
| 	puts( "  -s, --sniffer      enable network sniffer and display all IRC traffic" ); | ||||
| #endif | ||||
| 	puts( "  -t, --configtest   read, validate and display configuration; then exit" ); | ||||
| 	puts( "      --configtest   read, validate and display configuration; then exit" ); | ||||
|  	puts( "      --version      output version information and exit" ); | ||||
| 	puts( "      --help         display this help and exit" ); | ||||
| } /* Show_Help */ | ||||
|   | ||||
| @@ -14,14 +14,13 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: parse.c,v 1.60 2004/01/17 03:17:49 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: parse.c,v 1.59 2003/01/15 13:49:20 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| #include <stdlib.h> | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <strings.h> | ||||
|  | ||||
| #include "ngircd.h" | ||||
| #include "defines.h" | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
|  * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -14,7 +14,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: resolve.c,v 1.8.2.1 2004/05/15 23:52:17 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: resolve.c,v 1.6 2003/04/21 10:52:51 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <assert.h> | ||||
| @@ -27,12 +27,6 @@ static char UNUSED id[] = "$Id: resolve.c,v 1.8.2.1 2004/05/15 23:52:17 alex Exp | ||||
| #include <arpa/inet.h> | ||||
| #include <netdb.h> | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| #ifdef HAVE_IDENT_H | ||||
| #include <ident.h> | ||||
| #endif | ||||
| #endif | ||||
|  | ||||
| #include "conn.h" | ||||
| #include "defines.h" | ||||
| #include "log.h" | ||||
| @@ -41,12 +35,7 @@ static char UNUSED id[] = "$Id: resolve.c,v 1.8.2.1 2004/05/15 23:52:17 alex Exp | ||||
| #include "resolve.h" | ||||
|  | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| LOCAL VOID Do_ResolveAddr PARAMS(( struct sockaddr_in *Addr, INT Sock, INT w_fd )); | ||||
| #else | ||||
| LOCAL VOID Do_ResolveAddr PARAMS(( struct sockaddr_in *Addr, INT w_fd )); | ||||
| #endif | ||||
|  | ||||
| LOCAL VOID Do_ResolveName PARAMS(( CHAR *Host, INT w_fd )); | ||||
|  | ||||
| #ifdef h_errno | ||||
| @@ -57,35 +46,31 @@ LOCAL CHAR *Get_Error PARAMS(( INT H_Error )); | ||||
| GLOBAL VOID | ||||
| Resolve_Init( VOID ) | ||||
| { | ||||
| 	/* Initialize module */ | ||||
| 	/* Modul initialisieren */ | ||||
|  | ||||
| 	FD_ZERO( &Resolver_FDs ); | ||||
| } /* Resolve_Init */ | ||||
|  | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| GLOBAL RES_STAT * | ||||
| Resolve_Addr( struct sockaddr_in *Addr, int Sock ) | ||||
| #else | ||||
| GLOBAL RES_STAT * | ||||
| Resolve_Addr( struct sockaddr_in *Addr ) | ||||
| #endif | ||||
| { | ||||
| 	/* Resolve IP (asynchronous!). On errors, e.g. if the child process | ||||
| 	 * can't be forked, this functions returns NULL. */ | ||||
| 	/* IP (asyncron!) aufloesen. Bei Fehler, z.B. wenn der | ||||
| 	 * Child-Prozess nicht erzeugt werden kann, wird NULL geliefert. | ||||
| 	 * Der Host kann dann nicht aufgeloest werden. */ | ||||
|  | ||||
| 	RES_STAT *s; | ||||
| 	INT pid; | ||||
|  | ||||
| 	/* Allocate memory */ | ||||
| 	s = (RES_STAT *)malloc( sizeof( RES_STAT )); | ||||
| 	/* Speicher anfordern */ | ||||
| 	s = malloc( sizeof( RES_STAT )); | ||||
| 	if( ! s ) | ||||
| 	{ | ||||
| 		Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Addr]" ); | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	/* Initialize pipe for result */ | ||||
| 	/* Pipe fuer Antwort initialisieren */ | ||||
| 	if( pipe( s->pipe ) != 0 ) | ||||
| 	{ | ||||
| 		free( s ); | ||||
| @@ -93,34 +78,28 @@ Resolve_Addr( struct sockaddr_in *Addr ) | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	/* For sub-process */ | ||||
| 	/* Sub-Prozess erzeugen */ | ||||
| 	pid = fork( ); | ||||
| 	if( pid > 0 ) | ||||
| 	{ | ||||
| 		/* Main process */ | ||||
| 		/* Haupt-Prozess */ | ||||
| 		Log( LOG_DEBUG, "Resolver for %s created (PID %d).", inet_ntoa( Addr->sin_addr ), pid ); | ||||
| 		FD_SET( s->pipe[0], &Resolver_FDs ); | ||||
| 		if( s->pipe[0] > Conn_MaxFD ) Conn_MaxFD = s->pipe[0]; | ||||
| 		s->pid = pid; | ||||
| 		s->stage = 0; | ||||
| 		s->bufpos = 0; | ||||
| 		return s; | ||||
| 	} | ||||
| 	else if( pid == 0 ) | ||||
| 	{ | ||||
| 		/* Sub process */ | ||||
| 		/* Sub-Prozess */ | ||||
| 		Log_Init_Resolver( ); | ||||
| #ifdef IDENTAUTH | ||||
| 		Do_ResolveAddr( Addr, Sock, s->pipe[1] ); | ||||
| #else | ||||
| 		Do_ResolveAddr( Addr, s->pipe[1] ); | ||||
| #endif | ||||
| 		Log_Exit_Resolver( ); | ||||
| 		exit( 0 ); | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		/* Error! */ | ||||
| 		/* Fehler */ | ||||
| 		free( s ); | ||||
| 		Log( LOG_CRIT, "Resolver: Can't fork: %s!", strerror( errno )); | ||||
| 		return NULL; | ||||
| @@ -131,21 +110,22 @@ Resolve_Addr( struct sockaddr_in *Addr ) | ||||
| GLOBAL RES_STAT * | ||||
| Resolve_Name( CHAR *Host ) | ||||
| { | ||||
| 	/* Resolve hostname (asynchronous!). On errors, e.g. if the child | ||||
| 	 * process can't be forked, this functions returns NULL. */ | ||||
| 	/* Hostnamen (asyncron!) aufloesen. Bei Fehler, z.B. wenn der | ||||
| 	 * Child-Prozess nicht erzeugt werden kann, wird NULL geliefert. | ||||
| 	 * Der Host kann dann nicht aufgeloest werden. */ | ||||
|  | ||||
| 	RES_STAT *s; | ||||
| 	INT pid; | ||||
|  | ||||
| 	/* Allocate memory */ | ||||
| 	s = (RES_STAT *)malloc( sizeof( RES_STAT )); | ||||
| 	/* Speicher anfordern */ | ||||
| 	s = malloc( sizeof( RES_STAT )); | ||||
| 	if( ! s ) | ||||
| 	{ | ||||
| 		Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Name]" ); | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	/* Initialize the pipe for the result */ | ||||
| 	/* Pipe fuer Antwort initialisieren */ | ||||
| 	if( pipe( s->pipe ) != 0 ) | ||||
| 	{ | ||||
| 		free( s ); | ||||
| @@ -153,22 +133,20 @@ Resolve_Name( CHAR *Host ) | ||||
| 		return NULL; | ||||
| 	} | ||||
|  | ||||
| 	/* Fork sub-process */ | ||||
| 	/* Sub-Prozess erzeugen */ | ||||
| 	pid = fork( ); | ||||
| 	if( pid > 0 ) | ||||
| 	{ | ||||
| 		/* Main process */ | ||||
| 		/* Haupt-Prozess */ | ||||
| 		Log( LOG_DEBUG, "Resolver for \"%s\" created (PID %d).", Host, pid ); | ||||
| 		FD_SET( s->pipe[0], &Resolver_FDs ); | ||||
| 		if( s->pipe[0] > Conn_MaxFD ) Conn_MaxFD = s->pipe[0]; | ||||
| 		s->pid = pid; | ||||
| 		s->stage = 0; | ||||
| 		s->bufpos = 0; | ||||
| 		return s; | ||||
| 	} | ||||
| 	else if( pid == 0 ) | ||||
| 	{ | ||||
| 		/* Sub process */ | ||||
| 		/* Sub-Prozess */ | ||||
| 		Log_Init_Resolver( ); | ||||
| 		Do_ResolveName( Host, s->pipe[1] ); | ||||
| 		Log_Exit_Resolver( ); | ||||
| @@ -176,7 +154,7 @@ Resolve_Name( CHAR *Host ) | ||||
| 	} | ||||
| 	else | ||||
| 	{ | ||||
| 		/* Error! */ | ||||
| 		/* Fehler */ | ||||
| 		free( s ); | ||||
| 		Log( LOG_CRIT, "Resolver: Can't fork: %s!", strerror( errno )); | ||||
| 		return NULL; | ||||
| @@ -184,26 +162,17 @@ Resolve_Name( CHAR *Host ) | ||||
| } /* Resolve_Name */ | ||||
|  | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| LOCAL VOID | ||||
| Do_ResolveAddr( struct sockaddr_in *Addr, int Sock, INT w_fd ) | ||||
| #else | ||||
| LOCAL VOID | ||||
| Do_ResolveAddr( struct sockaddr_in *Addr, INT w_fd ) | ||||
| #endif | ||||
| { | ||||
| 	/* Resolver sub-process: resolve IP address and write result into | ||||
| 	 * pipe to parent. */ | ||||
| 	/* Resolver Sub-Prozess: IP aufloesen und Ergebnis in Pipe schreiben. */ | ||||
|  | ||||
| 	CHAR hostname[HOST_LEN]; | ||||
| 	struct hostent *h; | ||||
| 	INT len; | ||||
| #ifdef IDENTAUTH | ||||
| 	CHAR *res; | ||||
| #endif | ||||
|  | ||||
| 	/* Resolve IP address */ | ||||
| 	Log_Resolver( LOG_DEBUG, "Now resolving %s ...", inet_ntoa( Addr->sin_addr )); | ||||
|  | ||||
| 	/* Namen aufloesen */ | ||||
| 	h = gethostbyaddr( (CHAR *)&Addr->sin_addr, sizeof( Addr->sin_addr ), AF_INET ); | ||||
| 	if( h ) strlcpy( hostname, h->h_name, sizeof( hostname )); | ||||
| 	else | ||||
| @@ -215,52 +184,31 @@ Do_ResolveAddr( struct sockaddr_in *Addr, INT w_fd ) | ||||
| #endif	 | ||||
| 		strlcpy( hostname, inet_ntoa( Addr->sin_addr ), sizeof( hostname )); | ||||
| 	} | ||||
| 	Log_Resolver( LOG_DEBUG, "Ok, translated %s to \"%s\".", inet_ntoa( Addr->sin_addr ), hostname ); | ||||
|  | ||||
| 	/* Write resolver result into pipe to parent */ | ||||
| 	len = strlen( hostname );  | ||||
| 	hostname[len] = '\n'; len++; | ||||
| 	if( (size_t)write( w_fd, hostname, len ) != (size_t)len ) | ||||
| 	/* Antwort an Parent schreiben */ | ||||
| 	if( (size_t)write( w_fd, hostname, strlen( hostname ) + 1 ) != (size_t)( strlen( hostname ) + 1 )) | ||||
| 	{ | ||||
| 		Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno )); | ||||
| 		close( w_fd ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| 	/* Do "IDENT" (aka "AUTH") lookup and write result to parent */ | ||||
| 	Log_Resolver( LOG_DEBUG, "Doing IDENT lookup on socket %d ...", Sock ); | ||||
| 	res = ident_id( Sock, 10 ); | ||||
| 	Log_Resolver( LOG_DEBUG, "Ok, IDENT lookup on socket %d done: \"%s\"", Sock, res ? res : "" ); | ||||
|  | ||||
| 	/* Write IDENT result into pipe to parent */ | ||||
| 	len = strlen( res ? res : "" ); | ||||
| 	if( res != NULL ) res[len] = '\n'; | ||||
| 	len++; | ||||
| 	if( (size_t)write( w_fd, res ? res : "\n", len ) != (size_t)len ) | ||||
| 	{ | ||||
| 		Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent (IDENT): %s!", strerror( errno )); | ||||
| 		close( w_fd ); | ||||
| 	} | ||||
| 	free( res ); | ||||
| #endif | ||||
| 	Log_Resolver( LOG_DEBUG, "Ok, translated %s to \"%s\".", inet_ntoa( Addr->sin_addr ), hostname ); | ||||
| } /* Do_ResolveAddr */ | ||||
|  | ||||
|  | ||||
| LOCAL VOID | ||||
| Do_ResolveName( CHAR *Host, INT w_fd ) | ||||
| { | ||||
| 	/* Resolver sub-process: resolve name and write result into pipe | ||||
| 	 * to parent. */ | ||||
| 	/* Resolver Sub-Prozess: Name aufloesen und Ergebnis in Pipe schreiben. */ | ||||
|  | ||||
| 	CHAR ip[16]; | ||||
| 	struct hostent *h; | ||||
| 	struct in_addr *addr; | ||||
| 	INT len; | ||||
|  | ||||
| 	Log_Resolver( LOG_DEBUG, "Now resolving \"%s\" ...", Host ); | ||||
|  | ||||
| 	/* Resolve hostname */ | ||||
| 	/* Namen aufloesen */ | ||||
| 	h = gethostbyname( Host ); | ||||
| 	if( h ) | ||||
| 	{ | ||||
| @@ -276,16 +224,16 @@ Do_ResolveName( CHAR *Host, INT w_fd ) | ||||
| #endif | ||||
| 		strcpy( ip, "" ); | ||||
| 	} | ||||
| 	if( ip[0] ) Log_Resolver( LOG_DEBUG, "Ok, translated \"%s\" to %s.", Host, ip ); | ||||
|  | ||||
| 	/* Write result into pipe to parent */ | ||||
| 	len = strlen( ip ); | ||||
| 	ip[len] = '\n'; len++; | ||||
| 	if( (size_t)write( w_fd, ip, len ) != (size_t)len ) | ||||
| 	/* Antwort an Parent schreiben */ | ||||
| 	if( (size_t)write( w_fd, ip, strlen( ip ) + 1 ) != (size_t)( strlen( ip ) + 1 )) | ||||
| 	{ | ||||
| 		Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno )); | ||||
| 		close( w_fd ); | ||||
| 		return; | ||||
| 	} | ||||
|  | ||||
| 	if( ip[0] ) Log_Resolver( LOG_DEBUG, "Ok, translated \"%s\" to %s.", Host, ip ); | ||||
| } /* Do_ResolveName */ | ||||
|  | ||||
|  | ||||
| @@ -294,7 +242,7 @@ Do_ResolveName( CHAR *Host, INT w_fd ) | ||||
| LOCAL CHAR * | ||||
| Get_Error( INT H_Error ) | ||||
| { | ||||
| 	/* Get error message for H_Error */ | ||||
| 	/* Fehlerbeschreibung fuer H_Error liefern */ | ||||
|  | ||||
| 	switch( H_Error ) | ||||
| 	{ | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| /* | ||||
|  * ngIRCd -- The Next Generation IRC Daemon | ||||
|  * Copyright (c)2001-2003 by Alexander Barton (alex@barton.de) | ||||
|  * Copyright (c)2001,2002 by Alexander Barton (alex@barton.de) | ||||
|  * | ||||
|  * 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 | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: resolve.h,v 1.6.2.1 2004/05/15 23:52:17 alex Exp $ | ||||
|  * $Id: resolve.h,v 1.5 2003/04/21 10:53:10 alex Exp $ | ||||
|  * | ||||
|  * Asynchronous resolver (header) | ||||
|  */ | ||||
| @@ -29,9 +29,6 @@ typedef struct _Res_Stat | ||||
| { | ||||
| 	INT pid;			/* PID des Child-Prozess */ | ||||
| 	INT pipe[2];			/* Pipe fuer IPC */ | ||||
| 	INT stage;			/* Hostname/IP(0) or IDENT(1)? */ | ||||
| 	INT bufpos;			/* Position in buffer */ | ||||
| 	CHAR buffer[HOST_LEN];		/* Buffer */ | ||||
| } RES_STAT; | ||||
|  | ||||
|  | ||||
| @@ -40,12 +37,7 @@ GLOBAL fd_set Resolver_FDs; | ||||
|  | ||||
| GLOBAL VOID Resolve_Init PARAMS(( VOID )); | ||||
|  | ||||
| #ifdef IDENTAUTH | ||||
| GLOBAL RES_STAT *Resolve_Addr PARAMS(( struct sockaddr_in *Addr, int Sock )); | ||||
| #else | ||||
| GLOBAL RES_STAT *Resolve_Addr PARAMS(( struct sockaddr_in *Addr )); | ||||
| #endif | ||||
|  | ||||
| GLOBAL RES_STAT *Resolve_Name PARAMS(( CHAR *Host )); | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -8,7 +8,7 @@ | ||||
|  * (at your option) any later version. | ||||
|  * Please read the file COPYING, README and AUTHORS for more information. | ||||
|  * | ||||
|  * $Id: portab.h,v 1.17 2004/03/15 19:26:39 alex Exp $ | ||||
|  * $Id: portab.h,v 1.15 2003/03/31 19:01:02 alex Exp $ | ||||
|  * | ||||
|  * Portability functions and declarations (header for libngbportab). | ||||
|  */ | ||||
| @@ -21,13 +21,13 @@ | ||||
| #include "config.h" | ||||
|  | ||||
| #ifdef HAVE_SYS_TYPES_H | ||||
| # include <sys/types.h> | ||||
| #include <sys/types.h> | ||||
| #endif | ||||
|  | ||||
|  | ||||
| /* compiler features */ | ||||
|  | ||||
| #if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7)) | ||||
| #ifdef __GNUC__ | ||||
| # define PUNUSED(x) __attribute__ ((unused)) x | ||||
| # define UNUSED     __attribute__ ((unused)) | ||||
| #else | ||||
|   | ||||
| @@ -19,7 +19,7 @@ | ||||
|  | ||||
| #include "portab.h" | ||||
|  | ||||
| static char UNUSED id[] = "$Id: strlcpy.c,v 1.2.4.1 2005/01/18 09:09:05 alex Exp $"; | ||||
| static char UNUSED id[] = "$Id: strlcpy.c,v 1.2 2002/12/26 14:34:11 alex Exp $"; | ||||
|  | ||||
| #include "imp.h" | ||||
| #include <string.h> | ||||
| @@ -61,13 +61,12 @@ strlcpy( CHAR *dst, CONST CHAR *src, size_t size ) | ||||
| 	 * always null terminates. */ | ||||
|  | ||||
| 	size_t len = strlen( src ); | ||||
| 	size_t ret = len; | ||||
|  | ||||
| 	if( size <= 0 ) return 0; | ||||
| 	if( size <= 0 ) return len; | ||||
| 	if( len >= size ) len = size - 1; | ||||
| 	memcpy( dst, src, len ); | ||||
| 	dst[len] = 0; | ||||
| 	return ret; | ||||
| 	return len; | ||||
| } /* strlcpy */ | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -9,7 +9,7 @@ | ||||
| # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste | ||||
| # der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS. | ||||
| # | ||||
| # $Id: Makefile.am,v 1.9.6.3 2004/09/08 09:45:53 alex Exp $ | ||||
| # $Id: Makefile.am,v 1.9 2002/11/10 14:28:06 alex Exp $ | ||||
| # | ||||
|  | ||||
| AUTOMAKE_OPTIONS = ../portab/ansi2knr | ||||
| @@ -17,15 +17,12 @@ AUTOMAKE_OPTIONS = ../portab/ansi2knr | ||||
| INCLUDES = -I$(srcdir)/../portab | ||||
|  | ||||
| EXTRA_DIST = \ | ||||
| 	README functions.inc getpid.sh \ | ||||
| 	getpid.sh \ | ||||
| 	start-server.sh stop-server.sh tests.sh stress-server.sh \ | ||||
| 	test-loop.sh wait-tests.sh \ | ||||
| 	connect-test.e channel-test.e mode-test.e \ | ||||
| 	stress-A.e stress-B.e check-idle.e \ | ||||
| 	ngircd-test.conf | ||||
|  | ||||
| all: | ||||
|  | ||||
| clean-local: | ||||
| 	rm -rf logs tests *-test ngircd-test.log ngircd-test.motd \ | ||||
| 	 T-ngircd procs.tmp  | ||||
|   | ||||
| @@ -1,72 +0,0 @@ | ||||
|  | ||||
|                      ngIRCd - Next Generation IRC Server | ||||
|  | ||||
|                       (c)2001-2004 by Alexander Barton, | ||||
|                     alex@barton.de, http://www.barton.de/ | ||||
|  | ||||
|                ngIRCd is free software and published under the | ||||
|                    terms of the GNU General Public License. | ||||
|  | ||||
| 		       -- README for the Test Suite -- | ||||
|  | ||||
|  | ||||
| I. Overview | ||||
| ~~~~~~~~~~~ | ||||
|  | ||||
| The purpose of the "test suite" contained in this directory is to detect | ||||
| bugs and incompatibilities in ngIRCd introduced during coding and after | ||||
| building ngIRCd on a specific platform. | ||||
|  | ||||
| To run the "standard" tests call "make check". It will build ngIRCd (if | ||||
| required) and run some tests on it. These tests should be portable and run | ||||
| on all supported platforms without errors. | ||||
|  | ||||
| Please note: most tests of this suite depend on the external tools expect(1) | ||||
| and telnet(1), so make sure you have them installed. If not, the tests will | ||||
| not fail but simply be skipped. | ||||
|  | ||||
|  | ||||
| II. Shell Scripts | ||||
| ~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| getpid.sh <name> | ||||
|  | ||||
| 	This script is used to detect the PID of the running process with | ||||
| 	the given name in a portable manner. The result is echoed on the | ||||
| 	console. It is a helper script for some other scripts of this suite. | ||||
|  | ||||
| start-server.sh | ||||
|  | ||||
| 	start-server.sh starts up the test binary, "T-ngircd". It makes sure | ||||
| 	that getpid.sh is available and working, and that no other instance | ||||
| 	of the test binary is already running. | ||||
| 	The exit code is 0 if the test binary could be started. | ||||
|  | ||||
| stop-server.sh | ||||
|  | ||||
| 	This script uses getpid.sh to detect a running test binary "T-ngircd" | ||||
| 	and then shuts it down using the TERM signal. | ||||
| 	The exit code is 0 if the test binary could be stopped. | ||||
|  | ||||
| stress-server.sh | ||||
|  | ||||
| 	... | ||||
|  | ||||
| tests.sh | ||||
|  | ||||
| 	... | ||||
|  | ||||
|  | ||||
| III. Scripts for expect(1) | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
|  | ||||
| channel-test.e | ||||
| check-idle.e | ||||
| connect-test.e | ||||
| mode-test.e | ||||
| stress-A.e | ||||
| stress-B.e | ||||
|  | ||||
|  | ||||
| --  | ||||
| $Id: README,v 1.1.2.1 2004/09/04 20:49:36 alex Exp $ | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: channel-test.e,v 1.3 2003/12/27 13:01:12 alex Exp $ | ||||
| # $Id: channel-test.e,v 1.2 2002/09/09 21:26:00 alex Exp $ | ||||
|  | ||||
| spawn telnet localhost 6789 | ||||
| expect { | ||||
| @@ -16,7 +16,7 @@ expect { | ||||
| send "join #channel\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* JOIN :#channel" | ||||
| 	":nick!~user@* JOIN :#channel" | ||||
| } | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| @@ -26,17 +26,13 @@ expect { | ||||
| send "topic #channel :Test-Topic\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* TOPIC #channel :Test-Topic" | ||||
| 	":nick!~user@* TOPIC #channel :Test-Topic" | ||||
| } | ||||
|  | ||||
| send "who #channel\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"352 nick #channel" | ||||
| } | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"* nick H@ :0 User" | ||||
| 	"352 nick #channel ~user * nick H@ :0 User" | ||||
| } | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| @@ -66,7 +62,7 @@ expect { | ||||
| send "part #channel\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* PART #channel :nick" | ||||
| 	":nick!~user@* PART #channel :nick" | ||||
| } | ||||
|  | ||||
| send "quit\r" | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: check-idle.e,v 1.1.8.1 2004/09/04 20:49:36 alex Exp $ | ||||
| # $Id: check-idle.e,v 1.1 2002/09/09 22:56:07 alex Exp $ | ||||
|  | ||||
| spawn telnet localhost 6789 | ||||
| expect { | ||||
| @@ -10,7 +10,6 @@ send "nick IdleTest\r" | ||||
| send "user idle . . :Idle-Test\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"433 * IdleTest :Nickname already in use" { exit 99 } | ||||
| 	"376" | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,28 +0,0 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # ngIRCd Test Suite | ||||
| # Copyright (c)2002-2004 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: functions.inc,v 1.1.2.1 2004/09/06 22:07:26 alex Exp $ | ||||
| # | ||||
|  | ||||
| # test how to call echo to get output without newline | ||||
| echo -n | grep -- -n >/dev/null 2>&1 | ||||
| if [ $? -eq 0 ]; then | ||||
| 	ECHO_N=""; ECHO_C="\c" | ||||
| else | ||||
| 	ECHO_N="-n"; ECHO_C="" | ||||
| fi | ||||
|  | ||||
| echo_n() | ||||
| { | ||||
| 	echo $ECHO_N "$*$ECHO_C" | ||||
| } | ||||
|  | ||||
| # -eof- | ||||
| @@ -1,6 +1,6 @@ | ||||
| #!/bin/sh | ||||
| # ngIRCd Test Suite | ||||
| # $Id: getpid.sh,v 1.4 2003/08/22 11:31:18 alex Exp $ | ||||
| # $Id: getpid.sh,v 1.2.4.2 2003/11/07 20:51:11 alex Exp $ | ||||
|  | ||||
| # did we get a name? | ||||
| [ $# -ne 1 ] && exit 1 | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: mode-test.e,v 1.6 2004/03/10 20:40:06 alex Exp $ | ||||
| # $Id: mode-test.e,v 1.4 2002/12/15 15:52:34 alex Exp $ | ||||
|  | ||||
| spawn telnet localhost 6789 | ||||
| expect { | ||||
| @@ -16,7 +16,7 @@ expect { | ||||
| send "mode nick +i\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE nick :+i" | ||||
| 	":nick!~user@* MODE nick +i" | ||||
| } | ||||
|  | ||||
| send "mode nick\r" | ||||
| @@ -28,7 +28,7 @@ expect { | ||||
| send "mode nick -i\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE nick :-i" | ||||
| 	":nick!~user@* MODE nick -i" | ||||
| } | ||||
|  | ||||
| send "oper TestOp 123\r" | ||||
| @@ -50,7 +50,7 @@ expect { | ||||
| send "join #channel\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* JOIN :#channel" | ||||
| 	":nick!~user@* JOIN :#channel" | ||||
| } | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| @@ -60,7 +60,7 @@ expect { | ||||
| send "mode #channel +tn\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE #channel +tn" | ||||
| 	":nick!~user@* MODE #channel +tn" | ||||
| } | ||||
|  | ||||
| send "mode #channel\r" | ||||
| @@ -72,31 +72,31 @@ expect { | ||||
| send "mode #channel +v nick\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE #channel +v nick" | ||||
| 	":nick!~user@* MODE #channel +v nick" | ||||
| } | ||||
|  | ||||
| send "mode #channel +I nick1\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE #channel +I nick1!*@*" | ||||
| 	":nick!~user@* MODE #channel +I nick1!*@*" | ||||
| } | ||||
|  | ||||
| send "mode #channel +b nick2@domain\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE #channel +b nick2!*@domain" | ||||
| 	":nick!~user@* MODE #channel +b nick2!*@domain" | ||||
| } | ||||
|  | ||||
| send "mode #channel +I nick3!user\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE #channel +I nick3!user@*" | ||||
| 	":nick!~user@* MODE #channel +I nick3!user@*" | ||||
| } | ||||
|  | ||||
| send "mode #channel -vo nick nick\r" | ||||
| expect { | ||||
| 	timeout { exit 1 } | ||||
| 	"@* MODE #channel -vo nick nick" | ||||
| 	":nick!~user@* MODE #channel -vo nick nick" | ||||
| } | ||||
|  | ||||
| send "quit\r" | ||||
|   | ||||
| @@ -1,4 +1,4 @@ | ||||
| # $Id: ngircd-test.conf,v 1.4 2003/11/05 23:31:43 alex Exp $ | ||||
| # $Id: ngircd-test.conf,v 1.3.4.1 2003/11/07 20:51:11 alex Exp $ | ||||
|  | ||||
| [Global] | ||||
| 	Name = ngircd.test.server | ||||
|   | ||||
| @@ -1,13 +1,10 @@ | ||||
| #!/bin/sh | ||||
| # ngIRCd Test Suite | ||||
| # $Id: start-server.sh,v 1.11.2.2 2004/09/06 22:07:26 alex Exp $ | ||||
| # $Id: start-server.sh,v 1.10.4.1 2003/11/07 20:51:11 alex Exp $ | ||||
|  | ||||
| [ -z "$srcdir" ] && srcdir=`dirname $0` | ||||
|  | ||||
| # read in functions | ||||
| . ${srcdir}/functions.inc | ||||
|  | ||||
| echo_n "      starting server ..." | ||||
| echo "      starting server ..." | ||||
|  | ||||
| # remove old logfiles | ||||
| rm -rf logs *.log | ||||
| @@ -16,14 +13,14 @@ rm -rf logs *.log | ||||
| # test-server, because we won't be able to kill it at the end of the test. | ||||
| ./getpid.sh sh > /dev/null 2>&1 | ||||
| if [ $? -ne 0 ]; then | ||||
|   echo " getpid.sh failed!" | ||||
|   echo "      error: getpid.sh FAILED!" | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| # check if there is a test-server already running | ||||
| ./getpid.sh T-ngircd > /dev/null 2>&1 | ||||
| if [ $? -eq 0 ]; then | ||||
|   echo " failure: test-server already running!" | ||||
|   echo "      error: test-server already running!" | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| @@ -31,14 +28,11 @@ fi | ||||
| echo "This is an ngIRCd Test Server" > ngircd-test.motd | ||||
|  | ||||
| # starting up test-server ... | ||||
| ./T-ngircd -np -f ${srcdir}/ngircd-test.conf $* > ngircd-test.log 2>&1 & | ||||
| ./T-ngircd -np -f ${srcdir}/ngircd-test.conf > ngircd-test.log 2>&1 & | ||||
| sleep 1 | ||||
|  | ||||
| # validate running test-server | ||||
| pid=`./getpid.sh T-ngircd` | ||||
| [ -n "$pid" ] && kill -0 $pid > /dev/null 2>&1; r=$? | ||||
|  | ||||
| [ $r -eq 0 ] && echo " ok." || echo " failure!" | ||||
| exit  | ||||
| [ -n "$pid" ] && kill -0 $pid > /dev/null 2>&1 || exit 1 | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
| @@ -1,32 +1,25 @@ | ||||
| #!/bin/sh | ||||
| # ngIRCd Test Suite | ||||
| # $Id: stop-server.sh,v 1.10.2.3 2004/09/06 22:07:26 alex Exp $ | ||||
| # $Id: stop-server.sh,v 1.9.4.1 2003/11/07 20:51:11 alex Exp $ | ||||
|  | ||||
| [ -z "$srcdir" ] && srcdir=`dirname $0` | ||||
|  | ||||
| # read in functions | ||||
| . ${srcdir}/functions.inc | ||||
|  | ||||
| echo_n "      stopping server ..." | ||||
| echo "      stopping server ..." | ||||
|  | ||||
| # stop test-server ... | ||||
| pid=`./getpid.sh T-ngircd` | ||||
| if [ -z "$pid" ]; then | ||||
|   echo " failure: no running server found!?" | ||||
|   echo "      no running server found!?" | ||||
|   exit 1 | ||||
| fi | ||||
| kill $pid > /dev/null 2>&1 || exit 1 | ||||
|  | ||||
| # waiting ... | ||||
| for i in 1 2 3 4 5; do | ||||
|   kill -0 $pid > /dev/null 2>&1; r=$? | ||||
|   if [ $r -ne 0 ]; then | ||||
|     echo " ok". | ||||
|     exit 0 | ||||
|   fi | ||||
|   kill -0 $pid > /dev/null 2>&1 || exit 0 | ||||
|   sleep 1 | ||||
| done | ||||
| echo " failure: server still running!?" | ||||
| echo "      server still running!?" | ||||
| exit 1 | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
| @@ -1,31 +1,15 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # ngIRCd Test Suite | ||||
| # Copyright (c)2002-2004 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: stress-server.sh,v 1.8.2.2 2004/09/06 22:07:26 alex Exp $ | ||||
| # | ||||
| # $Id: stress-server.sh,v 1.6.4.2 2003/11/07 20:51:11 alex Exp $ | ||||
|  | ||||
| # detect source directory | ||||
| [ -z "$srcdir" ] && srcdir=`dirname $0` | ||||
|  | ||||
| # parse command line | ||||
| [ "$1" -gt 0 ] 2> /dev/null && CLIENTS="$1" || CLIENTS=5 | ||||
| [ "$2" -gt 0 ] 2> /dev/null && MAX="$2" || MAX=-1 | ||||
|  | ||||
| # get our name | ||||
| name=`basename $0` | ||||
|  | ||||
| # create directories | ||||
| test=`echo ${name} | cut -d '.' -f 1` | ||||
| mkdir -p logs tests | ||||
|  | ||||
| # test for required external tools | ||||
| type expect > /dev/null 2>&1 | ||||
| if [ $? -ne 0 ]; then | ||||
|   echo "      ${name}: \"expect\" not found.";  exit 77 | ||||
| @@ -35,13 +19,7 @@ if [ $? -ne 0 ]; then | ||||
|   echo "      ${name}: \"telnet\" not found.";  exit 77 | ||||
| fi | ||||
|  | ||||
| # hello world! :-) | ||||
| echo "      stressing server with $CLIENTS clients (be patient!):" | ||||
|  | ||||
| # read in functions | ||||
| . ${srcdir}/functions.inc | ||||
|  | ||||
| # create scripts for expect(1) | ||||
| echo "      stressing server with $CLIENTS clients (be patient!) ..." | ||||
| no=0 | ||||
| while [ ${no} -lt $CLIENTS ]; do | ||||
|   cat ${srcdir}/stress-A.e > tests/${no}.e | ||||
| @@ -49,31 +27,20 @@ while [ ${no} -lt $CLIENTS ]; do | ||||
|   cat ${srcdir}/stress-B.e >> tests/${no}.e | ||||
|   no=`expr ${no} + 1` | ||||
| done | ||||
|  | ||||
| no=0 | ||||
| while [ ${no} -lt $CLIENTS ]; do | ||||
|   expect tests/${no}.e > logs/stress-${no}.log 2> /dev/null & | ||||
|  | ||||
|   no=`expr ${no} + 1` | ||||
|   echo "      started client $no/$CLIENTS." | ||||
|  | ||||
|   [ $MAX -gt 0 ] && $srcdir/wait-tests.sh $MAX | ||||
| done | ||||
|  | ||||
| echo_n "      waiting for clients to complete: ." | ||||
| touch logs/check-idle.log | ||||
| while true; do | ||||
|   expect ${srcdir}/check-idle.e >> logs/check-idle.log; res=$? | ||||
|   expect ${srcdir}/check-idle.e >> logs/check-idle.log | ||||
|   res=$? | ||||
|   [ $res -eq 0 ] && exit 0 | ||||
|   [ $res -eq 1 ] && exit 1 | ||||
|   sleep 1 | ||||
|   echo "====================" >> logs/check-idle.log | ||||
|   [ $res -ne 99 ] && break | ||||
|  | ||||
|   # there are still clients connected. Wait ... | ||||
|   sleep 3 | ||||
|   echo_n "." | ||||
| done | ||||
|  | ||||
| [ $res -eq 0 ] && echo " ok." || echo " failure!" | ||||
|  | ||||
| exit $res | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
| @@ -1,37 +0,0 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # ngIRCd Test Suite | ||||
| # Copyright (c)2002-2004 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: test-loop.sh,v 1.2.2.1 2004/09/04 20:49:36 alex Exp $ | ||||
| # | ||||
|  | ||||
| # detect source directory | ||||
| [ -z "$srcdir" ] && srcdir=`dirname $0` | ||||
|  | ||||
| # parse command line | ||||
| [ "$1" -gt 0 ] 2> /dev/null && LOOPS="$1" || LOOPS=5 | ||||
| [ "$2" -gt 0 ] 2> /dev/null && WAIT="$2" || WAIT=5 | ||||
|  | ||||
| loop=0 | ||||
| while [ ${loop} -lt $LOOPS ]; do | ||||
|   loop=`expr ${loop} + 1` | ||||
|   echo "      loop $loop/$LOOPS starting:" | ||||
|   for s in $srcdir/*-test; do | ||||
|     sh $s; r=$? | ||||
|     [ $r -ne 0 ] && exit $r | ||||
|     sleep 1 | ||||
|   done | ||||
|   if [ ${loop} -lt $LOOPS ]; then | ||||
|     echo "      waiting $WAIT seconds ..." | ||||
|     sleep $WAIT | ||||
|   fi | ||||
| done | ||||
|  | ||||
| # -eof- | ||||
| @@ -1,22 +1,11 @@ | ||||
| #!/bin/sh | ||||
| # ngIRCd Test Suite | ||||
| # $Id: tests.sh,v 1.4.2.2 2004/09/06 22:07:26 alex Exp $ | ||||
|  | ||||
| # detect source directory | ||||
| [ -z "$srcdir" ] && srcdir=`dirname $0` | ||||
| # $Id: tests.sh,v 1.3.6.1 2003/11/07 20:51:11 alex Exp $ | ||||
|  | ||||
| name=`basename $0` | ||||
| test=`echo ${name} | cut -d '.' -f 1` | ||||
| mkdir -p logs | ||||
|  | ||||
| if [ ! -r "$test" ]; then | ||||
|   echo "      ${name}: test \"$test\" not found!";  exit 77 | ||||
|   exit 1 | ||||
| fi | ||||
|  | ||||
| # read in functions | ||||
| . ${srcdir}/functions.inc | ||||
|  | ||||
| type expect > /dev/null 2>&1 | ||||
| if [ $? -ne 0 ]; then | ||||
|   echo "      ${name}: \"expect\" not found.";  exit 77 | ||||
| @@ -26,10 +15,7 @@ if [ $? -ne 0 ]; then | ||||
|   echo "      ${name}: \"telnet\" not found.";  exit 77 | ||||
| fi | ||||
|  | ||||
| echo_n "      running ${test} ..." | ||||
| expect ${srcdir}/${test}.e > logs/${test}.log 2>&1; r=$? | ||||
| [ $r -eq 0 ] && echo " ok." || echo " failure!" | ||||
|  | ||||
| exit $r | ||||
| echo "      doing ${test} ..." | ||||
| expect ${srcdir}/${test}.e > logs/${test}.log | ||||
|  | ||||
| # -eof- | ||||
|   | ||||
| @@ -1,44 +0,0 @@ | ||||
| #!/bin/sh | ||||
| # | ||||
| # ngIRCd Test Suite | ||||
| # Copyright (c)2002-2004 by Alexander Barton (alex@barton.de) | ||||
| # | ||||
| # 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 2 of the License, or | ||||
| # (at your option) any later version. | ||||
| # Please read the file COPYING, README and AUTHORS for more information. | ||||
| # | ||||
| # $Id: wait-tests.sh,v 1.3.2.2 2004/09/06 22:07:26 alex Exp $ | ||||
| # | ||||
|  | ||||
| [ "$1" -gt 0 ] 2> /dev/null && MAX="$1" || MAX=5 | ||||
|  | ||||
| PS_FLAGS="-f" | ||||
| ps $PS_FLAGS >/dev/null 2>&1 | ||||
| [ $? -ne 0 ] && PS_FLAGS="a" | ||||
|  | ||||
| # read in functions | ||||
| . ${srcdir}/functions.inc | ||||
|  | ||||
| msg=0 | ||||
| while true; do | ||||
|   count=`ps $PS_FLAGS | grep "expect " | wc -l` | ||||
|   count=`expr $count - 1` | ||||
|  | ||||
|   [ $count -le $MAX ] && break | ||||
|  | ||||
|   if [ $msg -lt 1 ]; then | ||||
|     echo_n "      waiting for processes to settle: " | ||||
|     msg=1 | ||||
|   fi | ||||
|  | ||||
|   # there are still clients connected. Wait ... | ||||
|   echo_n "$count>$MAX " | ||||
|   sleep 1 | ||||
| done | ||||
|  | ||||
| [ $msg -gt 0 ] && echo "done: $count" | ||||
| exit 0 | ||||
|  | ||||
| # -eof- | ||||
		Reference in New Issue
	
	Block a user