1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-10-11 12:47:40 +00:00

Compare commits

..

65 Commits

Author SHA1 Message Date
Alexander Barton
807da1356c Version 0.7.7 2004-02-05 13:33:24 +00:00
Alexander Barton
024c58435e The info text ("real name") of users is set to "-" if none has been specified
using the USER command (e. g. "USER user * * :"). Reason: the original ircd
doesn't like empty ones and would KILL such users.  (from HEAD)
2004-02-04 20:04:54 +00:00
Alexander Barton
e72b817ae6 Updated some copyright notices -- welcome 2004! ;-) 2004-02-03 16:01:29 +00:00
Alexander Barton
47d1cf9b55 Fixed (optional) TCP Wrapper test which was broken and could result in
false results. Thanks to Fuminori Tanizaki <tany@mcnet.ad.jp>!
2004-02-03 13:54:36 +00:00
Alexander Barton
aaaca987cd Adjusted copyright notice to include 2004. 2004-01-02 19:24:46 +00:00
Alexander Barton
a34d8ae59f Removed "USE_" prefixes of configuration #defines (from HEAD). 2003-12-26 16:16:48 +00:00
Alexander Barton
d917f06af8 Fixed error messages related to server name configuration; updated
sample configuration file.
2003-12-19 14:30:49 +00:00
Alexander Barton
715e5532a9 Changed version number back to "0.7-CVS" for this branch. 2003-12-19 14:01:14 +00:00
Alexander Barton
64a8f8a3fd Updated documentation. (from HEAD) 2003-12-08 14:24:13 +00:00
Alexander Barton
7c2d0f20ed Version 0.7.6 2003-12-05 13:40:24 +00:00
Alexander Barton
e75f23cfe8 Fixed abort() ("server crash") when INVITE'ing users to nonexistent
channels. Bug found by <hiddenx@wp.pl>. (from HEAD)
2003-12-05 13:33:12 +00:00
Alexander Barton
c31167572b Added missing file ngircd.postinst to distribution list. 2003-12-05 13:31:22 +00:00
Alexander Barton
dc49d040c2 Changed version number back to "0.7-CVS" for this branch. 2003-12-04 14:20:08 +00:00
Alexander Barton
473feb44bb Extended version reporting of CVS builds. (from HEAD) 2003-12-04 14:13:42 +00:00
Alexander Barton
1ea7b10a82 Updated RPM and Debian package description and configuration. 2003-11-29 20:29:02 +00:00
Alexander Barton
29d430edd5 Release 0.7.5, debian release 0.7.6-0.1ab. 2003-11-07 21:05:15 +00:00
Alexander Barton
2b8052b03a New upstream version. 2003-11-07 21:04:21 +00:00
Alexander Barton
d155ed17c8 Backported all changes up to now from HEAD. 2003-11-07 20:51:08 +00:00
Alexander Barton
0b114e814b Version 0.7.1 2003-07-18 20:55:10 +00:00
Alexander Barton
d72811c9af Updated documentation. 2003-07-18 20:54:47 +00:00
Alexander Barton
4aa0fa7119 Fixed compiler warning. [from HEAD] 2003-07-18 20:50:05 +00:00
Alexander Barton
ad22b3087f Enhanced VERSION command when using debug builds. [from HEAD] 2003-07-18 20:49:35 +00:00
Alexander Barton
c3c4f32145 Made Makefile compatible with parallel builds (make -j). [from HEAD] 2003-07-18 20:49:05 +00:00
Alexander Barton
d72b14b9c8 Updated documentation. [from HEAD] 2003-07-18 20:48:20 +00:00
Alexander Barton
6d7de626c8 Made configure script more portable; added test for GNU Hurd. [from HEAD]. 2003-07-18 20:47:59 +00:00
Alexander Barton
73fc65a35f Updated documentation. 2003-07-18 20:47:08 +00:00
Alexander Barton
01929c161d Fixed up post installation script. 2003-07-12 22:57:00 +00:00
Alexander Barton
b0ea5b7d04 Added interpreter ... 2003-07-12 18:48:17 +00:00
Alexander Barton
f0653cdf24 Added Debian post installation script. 2003-07-12 18:29:19 +00:00
Alexander Barton
0b95570a80 Added /etc/default/ngircd to Debian package. 2003-07-12 18:23:24 +00:00
Alexander Barton
ef907632b8 Updated documentation. 2003-07-09 21:19:40 +00:00
Alexander Barton
810127e2a8 Fixed minor typo. 2003-07-09 21:14:08 +00:00
Alexander Barton
3045ce06ef Included debian packaging files from CVS HEAD. 2003-07-09 21:12:00 +00:00
Alexander Barton
3b17c66068 Added Makefile.am for debian/-subdirectory. 2003-07-09 21:08:55 +00:00
Alexander Barton
25a947f0dd Included debian/-subdirectory in build system. 2003-07-09 21:05:25 +00:00
Alexander Barton
e765124c25 Updated config.guess and config.sub. 2003-07-09 21:04:42 +00:00
Alexander Barton
8186e930aa Changed version number to "0.7-CVS" for this branch. 2003-07-09 18:57:20 +00:00
Alexander Barton
ae683b294f NJOIN propagates user channel modes correctly again. Backport from HEAD. 2003-07-09 18:53:08 +00:00
Alexander Barton
9295fce7cf Version 0.7.0 2003-05-01 10:15:02 +00:00
Alexander Barton
9dfe74ffe2 New FAQ: "why should I use ngIRCd?". [from HEAD] 2003-04-29 13:45:09 +00:00
Alexander Barton
10577f8e36 Fixed spelling, thanks Goetz! [from HEAD] 2003-04-29 13:42:24 +00:00
Alexander Barton
fbead4a15c "ServerName" is checked better now: a dot (".") is required. 2003-04-29 12:37:17 +00:00
Alexander Barton
322d3ebaec The KILL comand verifies and logs more parameters. [from HEAD] 2003-04-29 12:20:14 +00:00
Alexander Barton
bbfeaa953b Updated documentation. 2003-04-28 00:14:04 +00:00
Alexander Barton
26790e960f ngIRCd 0.7.0-pre2 2003-04-27 18:33:26 +00:00
Alexander Barton
4b1711a614 Added missing "Password" variable in "[Global]" section. 2003-04-27 11:50:32 +00:00
Alexander Barton
3630e840e5 Updated documentation. 2003-04-27 11:49:32 +00:00
Alexander Barton
bcd6db9016 Fixed --configtest: There is no variable "ServerPwd", it's "Password". 2003-04-27 11:48:53 +00:00
Alexander Barton
0e7970cfe6 Updated documentation. 2003-04-25 16:59:28 +00:00
Alexander Barton
9a9b4617aa Updated documentation. 2003-04-25 16:51:39 +00:00
Alexander Barton
434a6887f0 The server tried to connect to other servers only once when DNS or socket
failures occured. [from HEAD].
2003-04-25 16:50:53 +00:00
Alexander Barton
a9a605ddb9 Updated documentation. 2003-04-25 15:06:01 +00:00
Alexander Barton
99ab8607c9 Disabling "-ansi" on Cygwin: system headers are incompatible. 2003-04-25 15:02:15 +00:00
Alexander Barton
14b1ae7aea Updated documentation: added i686/pc/cygwin platform. 2003-04-23 23:32:24 +00:00
Alexander Barton
2517c2cb99 Updated documentation. 2003-04-23 01:15:37 +00:00
Alexander Barton
75fb85d029 Check for broken GCC (on Mac OS X) and disable "-pedantic" in this case. [HEAD] 2003-04-23 01:15:20 +00:00
Alexander Barton
1e599eb535 Updated documentation. [from HEAD] 2003-04-23 01:14:40 +00:00
Alexander Barton
36bd5d3ad6 Updated documentation. 2003-04-22 23:53:33 +00:00
Alexander Barton
0be9053c17 New documentation file "Platforms.txt". [from HEAD] 2003-04-22 23:52:48 +00:00
Alexander Barton
cd7d28d743 Made scripts more portable (run on SunOS 5.6 now). [from HEAD] 2003-04-22 20:01:23 +00:00
Alexander Barton
f04a2ce2b4 Updated documentation. 2003-04-22 20:00:32 +00:00
Alexander Barton
4d7a5df0e2 Added defines for SunOS (5.6). [from HEAD] 2003-04-22 20:00:19 +00:00
Alexander Barton
7ba1bde408 Updated documentation. 2003-04-22 10:21:33 +00:00
Alexander Barton
a7d00cd7b1 Made setting of WANT_AUTOMAKE more portable [backport from HEAD]. 2003-04-22 10:18:41 +00:00
Alexander Barton
3585e2bc50 Updated version number to 0.7.0-pre1. 2003-04-21 22:49:45 +00:00
85 changed files with 2398 additions and 3902 deletions

View File

@@ -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 $

View File

@@ -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,74 +10,6 @@
-- ChangeLog --
ngIRCd 0.8.3 (2005-02-03)
- Fixed a bug that could case a root exploit when the daemon is compiled
to do IDENT lookups and is logging to syslog. Bug discovered by CoKi,
<coki@nosystem.com.ar>, thanks a lot!
(http://www.nosystem.com.ar/advisories/advisory-11.txt)
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>.
nIRCd 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
@@ -561,4 +493,4 @@ ngIRCd 0.0.1, 31.12.2001
--
$Id: ChangeLog,v 1.233.2.20 2005/02/03 10:16:25 alex Exp $
$Id: ChangeLog,v 1.188.2.24 2004/02/05 13:33:24 alex Exp $

23
INSTALL
View File

@@ -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
View 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-

View 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-

File diff suppressed because it is too large Load Diff

View File

@@ -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
View File

@@ -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
View File

@@ -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 $

View File

@@ -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-

118
config.guess vendored
View File

@@ -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-11-12'
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,12 +307,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:OS/390:*:*)
echo i370-ibm-openedition
exit 0 ;;
*:z/VM:*:*)
echo s390-ibm-zvmoe
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;;
@@ -345,7 +327,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
DRS?6000:unix:4.0:6*)
echo sparc-icl-nx6
exit 0 ;;
DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
DRS?6000:UNIX_SV:4.2*:7*)
case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7 && exit 0 ;;
esac ;;
@@ -417,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 ;;
@@ -755,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'`
@@ -763,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 ;;
@@ -778,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,18 +815,9 @@ EOF
cris:Linux:*:*)
echo cris-axis-linux-gnu
exit 0 ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-gnu
exit 0 ;;
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit 0 ;;
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 ;;
@@ -1007,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 ;;
@@ -1079,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`
@@ -1179,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 ;;
@@ -1197,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:*:*)
@@ -1241,19 +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 ;;
*:XENIX:*:SysV)
echo i386-pc-xenix
exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2

110
config.sub vendored
View File

@@ -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-11-30'
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,12 +261,12 @@ 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 \
| we32k \
| x86 | xscale | xscalee[bl] | xstormy16 | xtensa \
| x86 | xscale | xstormy16 | xtensa \
| z8k)
basic_machine=$basic_machine-unknown
;;
@@ -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,14 +335,14 @@ 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-* \
| v850-* | v850e-* | vax-* \
| we32k-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \
| xstormy16-* | xtensa-* \
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
| xtensa-* \
| ymp-* \
| z8k-*)
;;
@@ -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,27 +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
;;
crisv32 | crisv32-* | etraxfs*)
basic_machine=crisv32-axis
;;
cris | cris-* | etrax*)
basic_machine=cris-axis
;;
crx)
basic_machine=crx-unknown
os=-elf
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
@@ -489,10 +466,6 @@ case $basic_machine in
basic_machine=m88k-motorola
os=-sysv3
;;
djgpp)
basic_machine=i586-pc
os=-msdosdjgpp
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
@@ -671,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
@@ -751,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
;;
@@ -762,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
@@ -986,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
@@ -1033,10 +1006,6 @@ case $basic_machine in
basic_machine=hppa1.1-winbond
os=-proelf
;;
xbox)
basic_machine=i686-pc
os=-mingw32
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
@@ -1067,9 +1036,6 @@ case $basic_machine in
romp)
basic_machine=romp-ibm
;;
mmix)
basic_machine=mmix-knuth
;;
rs6000)
basic_machine=rs6000-ibm
;;
@@ -1092,7 +1058,7 @@ case $basic_machine in
sh64)
basic_machine=sh64-unknown
;;
sparc | sparcv8 | sparcv9 | sparcv9b)
sparc | sparcv9 | sparcv9b)
basic_machine=sparc-sun
;;
cydra)
@@ -1165,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*)
@@ -1217,9 +1182,6 @@ case $os in
-opened*)
os=-openedition
;;
-os400*)
os=-os400
;;
-wince*)
os=-wince
;;
@@ -1241,9 +1203,6 @@ case $os in
-atheos*)
os=-atheos
;;
-syllable*)
os=-syllable
;;
-386bsd)
os=-bsd
;;
@@ -1266,9 +1225,6 @@ case $os in
-sinix*)
os=-sysv4
;;
-tpf*)
os=-tpf
;;
-triton*)
os=-sysv3
;;
@@ -1305,9 +1261,6 @@ case $os in
-kaos*)
os=-kaos
;;
-zvmoe)
os=-zvmoe
;;
-none)
;;
*)
@@ -1388,9 +1341,6 @@ case $basic_machine in
*-ibm)
os=-aix
;;
*-knuth)
os=-mmixware
;;
*-wec)
os=-proelf
;;
@@ -1523,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
;;

View File

@@ -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.7 2005/02/03 10:16:25 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.3)
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-

View File

@@ -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-

View File

@@ -1,155 +0,0 @@
ngircd (0.8.3-0ab1) unstable; urgency=high
* New "upstream release", including security fixes.
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 3 Feb 2005 10:41:55 +0100
ngircd (0.8.2-0ab1) unstable; urgency=high
* New "upstream release", including security fixes.
-- Alexander Barton <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

View File

@@ -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.

View File

@@ -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

View File

@@ -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

View File

@@ -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 $

View File

@@ -1,5 +1,5 @@
%define name ngircd
%define version 0.8.3
%define version 0.7.7
%define release 1
%define prefix %{_prefix}

View File

@@ -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-

View File

@@ -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
View 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

23
debian/control vendored Normal file
View 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.

View File

@@ -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
View 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
View 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
View 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-

View File

@@ -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 $

View File

@@ -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 \

View File

@@ -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 $

View File

@@ -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 $

View File

@@ -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 $

View File

@@ -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 $

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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

View File

@@ -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]" );

View File

@@ -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]" );

View File

@@ -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 );

View File

@@ -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;

View File

@@ -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>

View File

@@ -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;
}

View File

@@ -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)
*/

View File

@@ -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 */

View File

@@ -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)
*/

View File

@@ -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"

View File

@@ -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 ))

View File

@@ -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 );

View File

@@ -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;

View File

@@ -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 */

View File

@@ -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;
}
}

View File

@@ -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 );
}

View File

@@ -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>

View File

@@ -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)
*/

View File

@@ -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 */

View File

@@ -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]" );

View File

@@ -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 ));

View File

@@ -14,7 +14,7 @@
#include "portab.h"
static char UNUSED id[] = "$Id: log.c,v 1.44.2.4 2005/02/03 09:27:09 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, "%s", msg );
/* ... und ausgeben */
syslog( Level, msg );
#endif
} /* Log_Resolver */

View File

@@ -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)
*/

View File

@@ -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"

View File

@@ -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 */

View File

@@ -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"

View File

@@ -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 )
{

View File

@@ -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 ));

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 $

View File

@@ -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"

View File

@@ -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"
}

View File

@@ -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-

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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-

View File

@@ -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-

View File

@@ -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-

View File

@@ -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-

View File

@@ -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-

View File

@@ -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-