mirror of
https://github.com/osmarks/ngircd.git
synced 2025-11-03 07:22:59 +00:00
Compare commits
142 Commits
branch-0-7
...
rel-0-8-0
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f7c63e9237 | ||
|
|
0958133a0a | ||
|
|
205fea28b3 | ||
|
|
8cd18eb6b4 | ||
|
|
7f66fd908e | ||
|
|
3c33a41fe8 | ||
|
|
0d0cdf4831 | ||
|
|
030fef4a8a | ||
|
|
15d31d31db | ||
|
|
2a3ec21702 | ||
|
|
9f9576ce31 | ||
|
|
7281b8dd4d | ||
|
|
39fc76c4e4 | ||
|
|
a6d51c3a9e | ||
|
|
18b2227a0a | ||
|
|
47701feb08 | ||
|
|
59b903f3bb | ||
|
|
d433eb3896 | ||
|
|
c1e9841118 | ||
|
|
dd59820051 | ||
|
|
967476799f | ||
|
|
6b1e322865 | ||
|
|
1d8da4b525 | ||
|
|
292c7bd4c0 | ||
|
|
558fe6b453 | ||
|
|
bed119c9e5 | ||
|
|
64d330b726 | ||
|
|
cc25c52048 | ||
|
|
233210b906 | ||
|
|
f68e92eb9a | ||
|
|
b225081c2b | ||
|
|
30bbc5e1e1 | ||
|
|
0c07eb71a7 | ||
|
|
0b1202cd9e | ||
|
|
8212662d9d | ||
|
|
f697923c48 | ||
|
|
af77ce70b6 | ||
|
|
507a9e9cb3 | ||
|
|
779446298c | ||
|
|
cb76d96efb | ||
|
|
de1489b39b | ||
|
|
5155e1c67a | ||
|
|
1e9a958324 | ||
|
|
56227abc5e | ||
|
|
f9e651b333 | ||
|
|
bdaf53e799 | ||
|
|
33f4e6763b | ||
|
|
eaa550d690 | ||
|
|
f275c66e95 | ||
|
|
17fffea873 | ||
|
|
1e3363d2a4 | ||
|
|
6667bb6b77 | ||
|
|
b90bedbcb2 | ||
|
|
c2a154a33e | ||
|
|
6bbc086760 | ||
|
|
bb98fd8c85 | ||
|
|
e9b0ec9148 | ||
|
|
c53903eb3f | ||
|
|
57c7e23622 | ||
|
|
cdb694aeb3 | ||
|
|
6cafa16a56 | ||
|
|
5589ebd9c3 | ||
|
|
f645e5b62e | ||
|
|
ad07c94c8d | ||
|
|
5a9c04619f | ||
|
|
ed94d5d5cd | ||
|
|
ea076a28f2 | ||
|
|
c9ccb66944 | ||
|
|
cb6279f102 | ||
|
|
b79b315dd4 | ||
|
|
c40592d2ce | ||
|
|
05170bc94c | ||
|
|
07ad774f0a | ||
|
|
a8da1afe05 | ||
|
|
ff2c1efae8 | ||
|
|
05e2c0f048 | ||
|
|
d329a961bd | ||
|
|
606cdb69bf | ||
|
|
a5695e7ef8 | ||
|
|
2978b5edff | ||
|
|
be79fabcbf | ||
|
|
ec2f16fa16 | ||
|
|
7b6e26628a | ||
|
|
2981fe9eb7 | ||
|
|
20d002e155 | ||
|
|
cfe6356531 | ||
|
|
e33ab90379 | ||
|
|
d8f3c2b42b | ||
|
|
3debe00581 | ||
|
|
eb6113fc33 | ||
|
|
166c610957 | ||
|
|
b9f16c9635 | ||
|
|
1ed708ef39 | ||
|
|
5e4124d38d | ||
|
|
0d00ce6e38 | ||
|
|
057df41a9b | ||
|
|
5eb89619d6 | ||
|
|
6e03626eed | ||
|
|
d9efbe80e1 | ||
|
|
da9456dbca | ||
|
|
ac9390f08c | ||
|
|
3f602e5a25 | ||
|
|
6647da58fc | ||
|
|
225a338139 | ||
|
|
bfdf17ff32 | ||
|
|
260b8e5f36 | ||
|
|
9a009b24da | ||
|
|
83765a5a34 | ||
|
|
bdc08ae28e | ||
|
|
34ede2a91a | ||
|
|
0424747e95 | ||
|
|
8d5e170091 | ||
|
|
68ee133f87 | ||
|
|
27cd1e0d05 | ||
|
|
3dc4c92553 | ||
|
|
188e95f680 | ||
|
|
c5f4e9d095 | ||
|
|
e541da2a8f | ||
|
|
e55399c667 | ||
|
|
e7102559b9 | ||
|
|
32f8eb46ee | ||
|
|
0e01a37a69 | ||
|
|
927e626f03 | ||
|
|
277a048f4f | ||
|
|
dd0b37690b | ||
|
|
83194a23a3 | ||
|
|
a1ff081b8a | ||
|
|
e1c70a3c93 | ||
|
|
c43d47d69c | ||
|
|
bbf978dbcf | ||
|
|
090756523e | ||
|
|
8497d28fba | ||
|
|
cef95681ff | ||
|
|
52a24c4bbd | ||
|
|
e2968dd98d | ||
|
|
79b9592f27 | ||
|
|
0551f688f6 | ||
|
|
c74ac55832 | ||
|
|
b4dc216db3 | ||
|
|
cbf87971a4 | ||
|
|
4d656d12e9 | ||
|
|
da78dc4785 |
3
AUTHORS
3
AUTHORS
@@ -19,6 +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>
|
||||
|
||||
|
||||
@@ -30,4 +31,4 @@ Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
|
||||
|
||||
|
||||
--
|
||||
$Id: AUTHORS,v 1.5.2.2 2004/02/03 16:01:29 alex Exp $
|
||||
$Id: AUTHORS,v 1.8.2.1 2004/05/07 11:24:17 alex Exp $
|
||||
|
||||
39
ChangeLog
39
ChangeLog
@@ -10,6 +10,43 @@
|
||||
-- ChangeLog --
|
||||
|
||||
|
||||
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
|
||||
@@ -493,4 +530,4 @@ ngIRCd 0.0.1, 31.12.2001
|
||||
|
||||
|
||||
--
|
||||
$Id: ChangeLog,v 1.188.2.24 2004/02/05 13:33:24 alex Exp $
|
||||
$Id: ChangeLog,v 1.233.2.5 2004/06/26 09:12:38 alex Exp $
|
||||
|
||||
9
INSTALL
9
INSTALL
@@ -75,6 +75,11 @@ 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"
|
||||
|
||||
@@ -148,7 +153,7 @@ These parameters could be passed to the ngIRCd:
|
||||
-p, --passive
|
||||
Server-links won't be automatically established.
|
||||
|
||||
--configtest
|
||||
-t, --configtest
|
||||
Reads, validates and dumps the configuration file as interpreted
|
||||
by the server. Then exits.
|
||||
|
||||
@@ -158,4 +163,4 @@ number. In both cases the server exits after the output.
|
||||
|
||||
|
||||
--
|
||||
$Id: INSTALL,v 1.15.2.2 2004/02/03 16:01:29 alex Exp $
|
||||
$Id: INSTALL,v 1.18.2.1 2004/05/07 11:24:17 alex Exp $
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
#
|
||||
# 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-
|
||||
@@ -1,20 +0,0 @@
|
||||
#
|
||||
# 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
10
Makefile.am
10
Makefile.am
@@ -8,18 +8,21 @@
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.10.4.2 2003/07/09 21:14:08 alex Exp $
|
||||
# $Id: Makefile.am,v 1.14.2.1 2004/05/11 00:38:17 alex Exp $
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
SUBDIRS = doc MacOSX src man contrib debian
|
||||
SUBDIRS = doc src man contrib
|
||||
|
||||
clean-local:
|
||||
rm -f build-stamp*
|
||||
|
||||
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
|
||||
rm -f config.log debian
|
||||
|
||||
lint:
|
||||
make -C src/ngircd lint
|
||||
@@ -28,6 +31,7 @@ rpm: distcheck
|
||||
rpm -ta ngircd-*.tar.gz
|
||||
|
||||
deb:
|
||||
[ -f debian/rules ] || ln -s contrib/Debian debian
|
||||
dpkg-buildpackage -rfakeroot
|
||||
|
||||
# -eof-
|
||||
|
||||
19
NEWS
19
NEWS
@@ -10,6 +10,21 @@
|
||||
-- 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
|
||||
@@ -18,7 +33,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.
|
||||
@@ -174,4 +189,4 @@ ngIRCd 0.0.1, 31.12.2001
|
||||
|
||||
|
||||
--
|
||||
$Id: NEWS,v 1.53.2.6 2004/02/03 16:01:29 alex Exp $
|
||||
$Id: NEWS,v 1.64.2.3 2004/06/26 09:12:38 alex Exp $
|
||||
|
||||
5
README
5
README
@@ -45,7 +45,8 @@ 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), and Windows with Cygwin.
|
||||
(1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), Windows with Cygwin, and
|
||||
OpenBSD (3.4/i386).
|
||||
|
||||
|
||||
IV. Documentation
|
||||
@@ -83,4 +84,4 @@ mail to: <alex@barton.de> or <alex@arthur.ath.cx>
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.17.2.1 2004/02/03 16:01:29 alex Exp $
|
||||
$Id: README,v 1.18.2.1 2004/05/07 11:24:17 alex Exp $
|
||||
|
||||
182
autogen.sh
182
autogen.sh
@@ -1,15 +1,183 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $Id: autogen.sh,v 1.6.2.1 2003/04/22 10:18:41 alex Exp $
|
||||
# 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 $
|
||||
#
|
||||
|
||||
WANT_AUTOMAKE=1.6
|
||||
#
|
||||
# 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
|
||||
export WANT_AUTOMAKE
|
||||
|
||||
aclocal && \
|
||||
autoheader && \
|
||||
automake --add-missing && \
|
||||
autoconf && \
|
||||
echo "Okay, autogen.sh done."
|
||||
# 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
|
||||
|
||||
# -eof-
|
||||
|
||||
21
config.guess
vendored
21
config.guess
vendored
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2003-10-07'
|
||||
timestamp='2004-01-05'
|
||||
|
||||
# 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
|
||||
@@ -221,6 +221,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
mvmeppc:OpenBSD:*:*)
|
||||
echo powerpc-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pegasos:OpenBSD:*:*)
|
||||
echo powerpc-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
pmax:OpenBSD:*:*)
|
||||
echo mipsel-unknown-openbsd${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
@@ -307,6 +310,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
||||
*:OS/390:*:*)
|
||||
echo i370-ibm-openedition
|
||||
exit 0 ;;
|
||||
*:OS400:*:*)
|
||||
echo powerpc-ibm-os400
|
||||
exit 0 ;;
|
||||
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
|
||||
echo arm-acorn-riscix${UNAME_RELEASE}
|
||||
exit 0;;
|
||||
@@ -742,6 +748,11 @@ 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 ;;
|
||||
@@ -986,6 +997,9 @@ 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 ;;
|
||||
@@ -1172,7 +1186,7 @@ EOF
|
||||
*:QNX:*:4*)
|
||||
echo i386-pc-qnx
|
||||
exit 0 ;;
|
||||
NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*)
|
||||
NSR-?:NONSTOP_KERNEL:*:*)
|
||||
echo nsr-tandem-nsk${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:NonStop-UX:*:*)
|
||||
@@ -1216,6 +1230,9 @@ EOF
|
||||
SEI:*:*:SEIUX)
|
||||
echo mips-sei-seiux${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
*:DRAGONFLY:*:*)
|
||||
echo ${UNAME_MACHINE}-unknown-dragonfly${UNAME_RELEASE}
|
||||
exit 0 ;;
|
||||
esac
|
||||
|
||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||
|
||||
35
config.sub
vendored
35
config.sub
vendored
@@ -3,7 +3,7 @@
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2003-10-07'
|
||||
timestamp='2004-01-05'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -118,7 +118,8 @@ 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 | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \
|
||||
kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
@@ -379,6 +380,9 @@ 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
|
||||
@@ -743,6 +747,10 @@ 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
|
||||
@@ -963,6 +971,10 @@ 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
|
||||
@@ -1137,13 +1149,13 @@ case $os in
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -mingw32* | -linux-gnu* | -linux-uclibc* | -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*)
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
@@ -1182,6 +1194,9 @@ case $os in
|
||||
-opened*)
|
||||
os=-openedition
|
||||
;;
|
||||
-os400*)
|
||||
os=-os400
|
||||
;;
|
||||
-wince*)
|
||||
os=-wince
|
||||
;;
|
||||
@@ -1203,6 +1218,9 @@ case $os in
|
||||
-atheos*)
|
||||
os=-atheos
|
||||
;;
|
||||
-syllable*)
|
||||
os=-syllable
|
||||
;;
|
||||
-386bsd)
|
||||
os=-bsd
|
||||
;;
|
||||
@@ -1225,6 +1243,9 @@ case $os in
|
||||
-sinix*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-tpf*)
|
||||
os=-tpf
|
||||
;;
|
||||
-triton*)
|
||||
os=-sysv3
|
||||
;;
|
||||
@@ -1473,9 +1494,15 @@ case $basic_machine in
|
||||
-mvs* | -opened*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-os400*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-ptx*)
|
||||
vendor=sequent
|
||||
;;
|
||||
-tpf*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-vxsim* | -vxworks* | -windiss*)
|
||||
vendor=wrs
|
||||
;;
|
||||
|
||||
164
configure.in
164
configure.in
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
# 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
|
||||
@@ -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.89.2.16 2004/02/05 13:33:24 alex Exp $
|
||||
# $Id: configure.in,v 1.102.2.3 2004/06/26 09:19:58 alex Exp $
|
||||
#
|
||||
|
||||
# -- Initialisierung --
|
||||
# -- Initialisation --
|
||||
|
||||
AC_PREREQ(2.50)
|
||||
AC_INIT(ngircd, 0.7.7)
|
||||
AC_INIT(ngircd, 0.8.0)
|
||||
AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
|
||||
AC_CANONICAL_TARGET
|
||||
AM_INIT_AUTOMAKE(1.6)
|
||||
AM_CONFIG_HEADER(src/config.h)
|
||||
|
||||
# -- Templates fuer config.h --
|
||||
# -- Templates for config.h --
|
||||
|
||||
AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
|
||||
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
|
||||
@@ -31,6 +31,7 @@ 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])
|
||||
@@ -40,7 +41,7 @@ AH_TEMPLATE([TARGET_CPU], [Target CPU name])
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
# -- Hilfsprogramme --
|
||||
# -- Helper programs --
|
||||
|
||||
AC_PROG_AWK
|
||||
AC_PROG_INSTALL
|
||||
@@ -50,47 +51,33 @@ AC_PROG_RANLIB
|
||||
|
||||
# -- Compiler Features --
|
||||
|
||||
AC_LANG_C
|
||||
|
||||
AM_C_PROTOTYPES
|
||||
AC_C_CONST
|
||||
|
||||
# -- Defines --
|
||||
# -- Hard coded system and compiler dependencies/features/options ... --
|
||||
|
||||
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"
|
||||
if test "$GCC" = "yes"; then
|
||||
# We are using the GNU C compiler. Good!
|
||||
CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
|
||||
fi
|
||||
|
||||
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
|
||||
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" = "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
|
||||
# Add additional CFLAGS, eventually specified on the command line:
|
||||
test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
|
||||
|
||||
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
|
||||
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
|
||||
|
||||
# -- Header --
|
||||
# -- Headers --
|
||||
|
||||
AC_HEADER_STDC
|
||||
|
||||
AC_HEADER_TIME
|
||||
|
||||
AC_HEADER_SYS_WAIT
|
||||
|
||||
AC_CHECK_HEADERS([ \
|
||||
@@ -100,7 +87,7 @@ AC_CHECK_HEADERS([ \
|
||||
|
||||
AC_CHECK_HEADERS([arpa/inet.h ctype.h malloc.h stdint.h varargs.h])
|
||||
|
||||
# -- Datentypen --
|
||||
# -- Datatypes --
|
||||
|
||||
AC_MSG_CHECKING(whether socklen_t exists)
|
||||
AC_TRY_COMPILE([
|
||||
@@ -116,7 +103,6 @@ AC_TRY_COMPILE([
|
||||
])
|
||||
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
AC_TYPE_SIZE_T
|
||||
|
||||
# -- Libraries --
|
||||
@@ -125,18 +111,15 @@ AC_CHECK_LIB(UTIL,memmove)
|
||||
AC_CHECK_LIB(socket,bind)
|
||||
AC_CHECK_LIB(nsl,gethostent)
|
||||
|
||||
# -- Funktionen --
|
||||
|
||||
AC_FUNC_MALLOC
|
||||
# -- Functions --
|
||||
|
||||
AC_FUNC_FORK
|
||||
|
||||
AC_FUNC_STRFTIME
|
||||
|
||||
AC_CHECK_FUNCS([ \
|
||||
bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
|
||||
memset setsockopt socket strcasecmp strchr strerror strstr waitpid \
|
||||
],,AC_MSG_ERROR([required function missing!]))
|
||||
bind gethostbyaddr gethostbyname gethostname inet_ntoa malloc memmove \
|
||||
memset realloc setsid setsockopt socket strcasecmp strchr strerror \
|
||||
strstr waitpid],,AC_MSG_ERROR([required function missing!]))
|
||||
|
||||
AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf strlcpy strlcat)
|
||||
|
||||
@@ -144,7 +127,7 @@ AC_CHECK_FUNCS(select,[AC_CHECK_HEADERS(sys/select.h)],
|
||||
AC_MSG_ERROR([required function select() is missing!])
|
||||
)
|
||||
|
||||
# -- Konfigurationsoptionen --
|
||||
# -- Configuration options --
|
||||
|
||||
x_syslog_on=no
|
||||
AC_ARG_WITH(syslog,
|
||||
@@ -223,6 +206,22 @@ 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],
|
||||
@@ -247,6 +246,7 @@ 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,59 +258,21 @@ AC_ARG_ENABLE(strict-rfc,
|
||||
fi
|
||||
)
|
||||
|
||||
# -- Definitionen --
|
||||
# -- Definitions --
|
||||
|
||||
AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
|
||||
AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
|
||||
AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
|
||||
|
||||
# -- Variablen --
|
||||
# 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"
|
||||
|
||||
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 --
|
||||
# -- Generate files --
|
||||
|
||||
AC_OUTPUT([ \
|
||||
Makefile \
|
||||
doc/Makefile \
|
||||
MacOSX/Makefile \
|
||||
MacOSX/ngircd.pbproj/Makefile \
|
||||
src/Makefile \
|
||||
src/portab/Makefile \
|
||||
src/tool/Makefile \
|
||||
@@ -318,9 +280,18 @@ AC_OUTPUT([ \
|
||||
src/testsuite/Makefile \
|
||||
man/Makefile \
|
||||
contrib/Makefile \
|
||||
debian/Makefile \
|
||||
contrib/Debian/Makefile \
|
||||
contrib/MacOSX/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
|
||||
@@ -334,11 +305,10 @@ 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 " Host: ${host}"
|
||||
echo " Target: ${target}"
|
||||
test "$target" != "$host" && echo " Host: ${host}"
|
||||
echo " Compiler: ${CC}"
|
||||
echo " Compiler flags: ${the_CFLAGS}"
|
||||
test -n "$add_CFLAGS" && echo " ${add_CFLAGS}"
|
||||
test -n "$add_DEFINES" && echo " ${add_DEFINES}"
|
||||
test -n "$CFLAGS" && echo " Compiler flags: ${CFLAGS}"
|
||||
test -n "$CPPFLAGS" && echo " Preprocessor flags: ${CPPFLAGS}"
|
||||
test -n "$LDFLAGS" && echo " Linker flags: ${LDFLAGS}"
|
||||
test -n "$LIBS" && echo " Libraries: ${LIBS}"
|
||||
@@ -384,6 +354,12 @@ echo $ECHO_N " IRC+ protocol: $ECHO_C"
|
||||
test "$x_ircplus_on" = "yes" \
|
||||
&& echo "yes" \
|
||||
|| echo "no"
|
||||
echo
|
||||
|
||||
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
|
||||
|
||||
# -eof-
|
||||
|
||||
28
contrib/Debian/Makefile.am
Normal file
28
contrib/Debian/Makefile.am
Normal file
@@ -0,0 +1,28 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.3.2.1 2004/05/11 00:38:17 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = rules changelog compat control copyright \
|
||||
ngircd.init ngircd.postinst
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
clean-local:
|
||||
rm -f ngircd.postinst.debhelper ngircd.postrm.debhelper \
|
||||
ngircd.prerm.debhelper ngircd.substvars
|
||||
rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \
|
||||
ngircd-full.prerm.debhelper ngircd-full.substvars
|
||||
rm -rf ngircd ngircd-full
|
||||
rm -f files
|
||||
|
||||
# -eof-
|
||||
@@ -1,8 +1,60 @@
|
||||
ngircd (0.7.7-0ab1) unstable; urgency=low
|
||||
ngircd (0.8.0-0ab1) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 5 Feb 2004 14:11:08 +0100
|
||||
-- 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
|
||||
|
||||
47
contrib/Debian/control
Normal file
47
contrib/Debian/control
Normal file
@@ -0,0 +1,47 @@
|
||||
Source: ngircd
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: Alexander Barton <alex@barton.de>
|
||||
Build-Depends: debhelper (>> 4.0.0), libz-dev, libwrap-dev, libident-dev
|
||||
Standards-Version: 3.5.8
|
||||
|
||||
Package: ngircd
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends} ${misc:Depends}
|
||||
Description: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
|
||||
network. It is written from scratch and is not based upon the original
|
||||
IRCd like many others.
|
||||
.
|
||||
This package contains the "standard distribution", including support for
|
||||
syslog logging and compressed server-links using zlib.
|
||||
.
|
||||
Advantages of ngIRCd:
|
||||
- no problems with servers using changing/non-static IP addresses.
|
||||
- small and lean configuration file.
|
||||
- free, modern and open source C code.
|
||||
- still under active development.
|
||||
.
|
||||
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||
mixed networks.
|
||||
|
||||
Package: ngircd-full
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends} ${misc:Depends}
|
||||
Conflicts: ngircd
|
||||
Description: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
|
||||
network. It is written from scratch and is not based upon the original
|
||||
IRCd like many others.
|
||||
.
|
||||
This package includes support for TCP wrappers and IDENT requests in
|
||||
addition to the features of the "standard package".
|
||||
.
|
||||
Advantages of ngIRCd:
|
||||
- no problems with servers using changing/non-static IP addresses.
|
||||
- small and lean configuration file.
|
||||
- free, modern and open source C code.
|
||||
- still under active development.
|
||||
.
|
||||
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||
mixed networks.
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Defaults for ngIRCd start and stop script
|
||||
#
|
||||
# $Id: ngircd.default,v 1.1.2.1 2003/07/12 18:23:24 alex Exp $
|
||||
# $Id: ngircd.default,v 1.1 2003/12/31 17:20:11 alex Exp $
|
||||
#
|
||||
|
||||
# Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
|
||||
2
debian/ngircd.init → contrib/Debian/ngircd.init
Normal file → Executable file
2
debian/ngircd.init → contrib/Debian/ngircd.init
Normal file → Executable file
@@ -2,7 +2,7 @@
|
||||
#
|
||||
# ngIRCd start and stop script for Debian-based systems
|
||||
#
|
||||
# $Id: ngircd.init,v 1.1.2.1 2003/07/09 21:12:00 alex Exp $
|
||||
# $Id: ngircd.init,v 1.1 2003/12/31 17:20:11 alex Exp $
|
||||
#
|
||||
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
2
debian/ngircd.postinst → contrib/Debian/ngircd.postinst
Normal file → Executable file
2
debian/ngircd.postinst → contrib/Debian/ngircd.postinst
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Debian post-installation script
|
||||
# $Id: ngircd.postinst,v 1.1.2.4 2003/11/29 20:29:02 alex Exp $
|
||||
# $Id: ngircd.postinst,v 1.1 2003/12/31 17:20:11 alex Exp $
|
||||
#
|
||||
|
||||
if [ -f /etc/ngircd/ngircd.conf ]; then
|
||||
156
contrib/Debian/rules
Executable file
156
contrib/Debian/rules
Executable file
@@ -0,0 +1,156 @@
|
||||
#!/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-
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
# 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
|
||||
@@ -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.2 2003/12/05 13:31:22 alex Exp $
|
||||
# $Id: Makefile.am,v 1.1.2.1 2004/05/11 00:38:17 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = rules changelog compat control copyright \
|
||||
ngircd.init ngircd.postinst
|
||||
clean-local:
|
||||
rm -rf build
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
1871
contrib/MacOSX/ngIRCd.xcode/project.pbxproj
Normal file
1871
contrib/MacOSX/ngIRCd.xcode/project.pbxproj
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
# Copyright (c)2001-2004 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,10 +9,12 @@
|
||||
# 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.1 2002/10/01 09:57:08 alex Exp $
|
||||
# $Id: Makefile.am,v 1.4 2004/04/28 12:18:02 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = ngircd.spec
|
||||
SUBDIRS = Debian MacOSX
|
||||
|
||||
EXTRA_DIST = README ngircd.spec systrace.policy
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
27
contrib/README
Normal file
27
contrib/README
Normal file
@@ -0,0 +1,27 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2004 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Contributions --
|
||||
|
||||
|
||||
MacOSX/
|
||||
- Project file for XCode "project builder" of Mac OS X.
|
||||
|
||||
Debian/
|
||||
- Various files for building Debian packages.
|
||||
|
||||
ngircd.spec
|
||||
- RPM "spec" file.
|
||||
|
||||
systrace.policy
|
||||
- Systrace policy file for OpenBSD (and probably NetBSD).
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.1 2004/04/28 12:18:50 alex Exp $
|
||||
@@ -1,5 +1,5 @@
|
||||
%define name ngircd
|
||||
%define version 0.7.7
|
||||
%define version 0.8.0
|
||||
%define release 1
|
||||
%define prefix %{_prefix}
|
||||
|
||||
|
||||
77
contrib/systrace.policy
Normal file
77
contrib/systrace.policy
Normal file
@@ -0,0 +1,77 @@
|
||||
#
|
||||
# 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-
|
||||
23
debian/control
vendored
23
debian/control
vendored
@@ -1,23 +0,0 @@
|
||||
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.
|
||||
110
debian/rules
vendored
110
debian/rules
vendored
@@ -1,110 +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.1.2.2 2003/11/29 20:29:02 alex Exp $
|
||||
#
|
||||
# Based on the sample debian/rules that uses debhelper,
|
||||
# GNU copyright 1997 to 1999 by Joey Hess.
|
||||
#
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
# These are used for cross-compiling and for saving the configure script
|
||||
# from having to guess our platform (since we know it already)
|
||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
||||
|
||||
CFLAGS = -Wall -g
|
||||
|
||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
||||
CFLAGS += -O0
|
||||
else
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
INSTALL_PROGRAM += -s
|
||||
endif
|
||||
|
||||
config.status: configure
|
||||
dh_testdir
|
||||
|
||||
# Add here commands to configure the package.
|
||||
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc/ngircd \
|
||||
--mandir=\$${prefix}/share/man \
|
||||
--with-syslog --with-zlib
|
||||
|
||||
build: build-stamp
|
||||
|
||||
build-stamp: config.status
|
||||
dh_testdir
|
||||
|
||||
# Add here commands to compile the package.
|
||||
$(MAKE)
|
||||
|
||||
touch build-stamp
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-stamp
|
||||
|
||||
# Add here commands to clean up after the build process.
|
||||
-$(MAKE) distclean
|
||||
|
||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
||||
cp -f /usr/share/misc/config.sub config.sub
|
||||
endif
|
||||
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
|
||||
cp -f /usr/share/misc/config.guess config.guess
|
||||
endif
|
||||
dh_clean
|
||||
|
||||
install: build
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_clean -k
|
||||
dh_installdirs
|
||||
|
||||
# Add here commands to install the package into debian/ngircd.
|
||||
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd
|
||||
rm -f $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/INSTALL*
|
||||
rm -f $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING*
|
||||
|
||||
# Build architecture-independent files here.
|
||||
binary-indep: build install
|
||||
# We have nothing to do by default.
|
||||
|
||||
# Build architecture-dependent files here.
|
||||
binary-arch: build install
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installchangelogs ChangeLog
|
||||
dh_installdocs
|
||||
dh_installinit
|
||||
dh_strip
|
||||
dh_compress
|
||||
dh_fixperms
|
||||
dh_installdeb
|
||||
dh_shlibdeps
|
||||
dh_gencontrol
|
||||
dh_md5sums
|
||||
dh_builddeb
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
|
||||
.PHONY: build clean binary-indep binary-arch binary install
|
||||
|
||||
# -eof-
|
||||
@@ -64,4 +64,4 @@ A: Please file a bug report at <http://arthur.ath.cx/bugzilla/ngircd/>!
|
||||
|
||||
|
||||
--
|
||||
$Id: FAQ.txt,v 1.5.2.1 2003/04/29 13:45:09 alex Exp $
|
||||
$Id: FAQ.txt,v 1.7 2003/11/07 21:32:15 alex Exp $
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.16.2.1 2003/04/22 23:52:48 alex Exp $
|
||||
# $Id: Makefile.am,v 1.17 2003/04/22 23:50:18 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt Platforms.txt \
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2003 by Alexander Barton,
|
||||
(c)2001-2004 Alexander Barton
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
@@ -26,31 +26,34 @@ list can be updated. Thanks for your help!
|
||||
| | | |
|
||||
Platform Compiler ngIRCd Date Tester C M T R See
|
||||
--------------------------- ------------ ---------- -------- ------ - - - - ---
|
||||
i386/pc/solaris2.9 gcc 3.2.2 0.7.x-CVS 03-04-28 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.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
|
||||
i386/unknown/netbsdelf1.6.1 gcc 2.95.3 CVSHEAD 04-02-24 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)
|
||||
i686/pc/linux-gnu gcc 2.95 0.7.0 03-05-15 alex Y Y Y Y (1)
|
||||
i686/pc/linux-gnu gcc 3.3.3 CVSHEAD 04-02-22 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.2.0 gcc 3.3 CVSHEAD 04-02-22 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 CVSHEAD 03-07-06 alex Y Y Y Y
|
||||
sparc/sun/solaris2.7 gcc 3.3 CVSHEAD 04-02-24 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 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.
|
||||
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.
|
||||
|
||||
(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.1.2.5 2003/07/18 20:48:20 alex Exp $
|
||||
$Id: Platforms.txt,v 1.11 2004/04/05 11:11:05 alex Exp $
|
||||
|
||||
@@ -75,6 +75,10 @@ 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.
|
||||
|
||||
@@ -111,4 +115,4 @@ channel mode). In this case <limit> should be "0".
|
||||
|
||||
|
||||
--
|
||||
$Id: Protocol.txt,v 1.9.2.2 2003/12/08 14:24:13 alex Exp $
|
||||
$Id: Protocol.txt,v 1.12 2004/04/25 15:44:10 alex Exp $
|
||||
|
||||
@@ -50,4 +50,4 @@ mir in Verbindung setzen (alex@barton.de), ich maile gerne meine Patches zu.
|
||||
Fuer eine Aenderung im CVS ist es aber meiner Meinung nach noch zu frueh ...
|
||||
|
||||
--
|
||||
$Id: README-BeOS.txt,v 1.6.2.1 2003/07/18 20:48:20 alex Exp $
|
||||
$Id: README-BeOS.txt,v 1.7 2003/05/15 21:47:57 alex Exp $
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: sample-ngircd.conf,v 1.20.2.4 2003/12/19 14:30:49 alex Exp $
|
||||
# $Id: sample-ngircd.conf,v 1.25.2.1 2004/05/07 11:24:17 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,6 +45,10 @@
|
||||
# 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,
|
||||
@@ -57,6 +61,13 @@
|
||||
# server must have been started with root privileges!
|
||||
;ServerGID = 65534
|
||||
|
||||
# A directory to chroot in when everything is initialized. It
|
||||
# doesn't need to be populated if ngIRCd is compiled as a static
|
||||
# binary. By default ngIRCd won't use the chroot() feature.
|
||||
# ATTENTION: For this to work the server must have been started
|
||||
# with root privileges!
|
||||
;ChrootDir = /var/empty
|
||||
|
||||
# After <PingTimeout> seconds of inactivity the server will send a
|
||||
# PING to the peer to test whether it is alive or not.
|
||||
;PingTimeout = 120
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.\"
|
||||
.\" $Id: ngircd.8,v 1.8 2003/03/10 00:58:06 alex Exp $
|
||||
.\" $Id: ngircd.8,v 1.9 2004/04/05 10:59:10 alex Exp $
|
||||
.\"
|
||||
.TH ngircd 8 "March 2003" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
@@ -36,9 +36,6 @@ 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
|
||||
@@ -52,6 +49,9 @@ All log messages go to the console.
|
||||
Disable automatic connections to other servers. You can use the IRC command
|
||||
CONNECT later on as IRC Operator to link this ngIRCd to other servers.
|
||||
.TP
|
||||
\fB\-t\fR, \fB\-\-configtest\fR
|
||||
Read, validate and display the configuration; then exit.
|
||||
.TP
|
||||
\fB\-\-version\fR
|
||||
Output version information and exit.
|
||||
.TP
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
.\"
|
||||
.\" $Id: ngircd.conf.5,v 1.9.2.2 2003/11/07 20:51:10 alex Exp $
|
||||
.\" $Id: ngircd.conf.5,v 1.12.2.1 2004/05/07 11:24:18 alex Exp $
|
||||
.\"
|
||||
.TH ngircd.conf 5 "Mai 2003" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
@@ -75,6 +75,10 @@ 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.
|
||||
@@ -98,6 +102,18 @@ For this to work the server must have
|
||||
been started with root privileges!
|
||||
.RE
|
||||
.TP
|
||||
\fBChrootDir\fR
|
||||
A directory to chroot in when everything is initialized. It doesn't need
|
||||
to be populated if ngIRCd is compiled as a static binary. By default ngIRCd
|
||||
won't use the chroot() feature.
|
||||
.PP
|
||||
.RS
|
||||
.B Attention:
|
||||
.br
|
||||
For this to work the server must have
|
||||
been started with root privileges!
|
||||
.RE
|
||||
.TP
|
||||
\fBPingTimeout\fR
|
||||
After <PingTimeout> seconds of inactivity the server will send a PING to
|
||||
the peer to test whether it is alive or not. Default: 120.
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.39.2.3 2003/12/04 14:13:42 alex Exp $
|
||||
# $Id: Makefile.am,v 1.42 2003/12/04 14:05:16 alex Exp $
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
|
||||
@@ -17,12 +17,13 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: channel.c,v 1.42.2.1 2003/11/07 20:51:10 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: channel.c,v 1.45 2004/03/11 22:16:31 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
|
||||
#include "conn-func.h"
|
||||
#include "client.h"
|
||||
@@ -707,7 +708,7 @@ Channel_Create( CHAR *Name )
|
||||
|
||||
assert( Name != NULL );
|
||||
|
||||
c = malloc( sizeof( CHANNEL ));
|
||||
c = (CHANNEL *)malloc( sizeof( CHANNEL ));
|
||||
if( ! c )
|
||||
{
|
||||
Log( LOG_EMERG, "Can't allocate memory! [New_Chan]" );
|
||||
@@ -759,7 +760,7 @@ Add_Client( CHANNEL *Chan, CLIENT *Client )
|
||||
assert( Client != NULL );
|
||||
|
||||
/* neue CL2CHAN-Struktur anlegen */
|
||||
cl2chan = malloc( sizeof( CL2CHAN ));
|
||||
cl2chan = (CL2CHAN *)malloc( sizeof( CL2CHAN ));
|
||||
if( ! cl2chan )
|
||||
{
|
||||
Log( LOG_EMERG, "Can't allocate memory! [Add_Client]" );
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: client.c,v 1.74 2003/03/31 15:54:21 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: client.c,v 1.76 2004/03/11 22:16:31 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -25,6 +25,7 @@ static char UNUSED id[] = "$Id: client.c,v 1.74 2003/03/31 15:54:21 alex Exp $";
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <netdb.h>
|
||||
|
||||
#include "conn.h"
|
||||
@@ -1023,7 +1024,7 @@ New_Client_Struct( VOID )
|
||||
|
||||
CLIENT *c;
|
||||
|
||||
c = malloc( sizeof( CLIENT ));
|
||||
c = (CLIENT *)malloc( sizeof( CLIENT ));
|
||||
if( ! c )
|
||||
{
|
||||
Log( LOG_EMERG, "Can't allocate memory! [New_Client_Struct]" );
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: conf.c,v 1.57.2.4 2003/12/19 14:30:49 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: conf.c,v 1.63.2.1 2004/05/07 11:24:18 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -23,6 +23,7 @@ static char UNUSED id[] = "$Id: conf.c,v 1.57.2.4 2003/12/19 14:30:49 alex Exp $
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
#include <unistd.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
@@ -113,6 +114,8 @@ Conf_Test( VOID )
|
||||
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++ )
|
||||
{
|
||||
@@ -342,6 +345,10 @@ 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, "" );
|
||||
|
||||
@@ -612,6 +619,18 @@ 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 */
|
||||
@@ -620,7 +639,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg )
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_ISDIGIT
|
||||
if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ServerUID\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
if( ! isdigit( (INT)*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 );
|
||||
@@ -635,7 +654,7 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg )
|
||||
else
|
||||
{
|
||||
#ifdef HAVE_ISDIGIT
|
||||
if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"ServerGID\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
if( ! isdigit( (INT)*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 );
|
||||
@@ -688,7 +707,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( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnections\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnections\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
else
|
||||
#endif
|
||||
Conf_MaxConnections = atol( Arg );
|
||||
@@ -698,7 +717,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( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnectionsIP\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxConnectionsIP\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
else
|
||||
#endif
|
||||
Conf_MaxConnectionsIP = atoi( Arg );
|
||||
@@ -708,7 +727,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( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxJoins\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"MaxJoins\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
else
|
||||
#endif
|
||||
Conf_MaxJoins = atoi( Arg );
|
||||
@@ -801,7 +820,7 @@ Handle_SERVER( INT Line, CHAR *Var, CHAR *Arg )
|
||||
{
|
||||
/* Server group */
|
||||
#ifdef HAVE_ISDIGIT
|
||||
if( ! isdigit( *Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Group\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
if( ! isdigit( (INT)*Arg )) Config_Error( LOG_WARNING, "%s, line %d: Value of \"Group\" is not a number!", NGIRCd_ConfFile, Line );
|
||||
else
|
||||
#endif
|
||||
New_Server.group = atoi( Arg );
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conf.h,v 1.26.2.1 2003/11/07 20:51:11 alex Exp $
|
||||
* $Id: conf.h,v 1.28.2.1 2004/05/07 11:24:18 alex Exp $
|
||||
*
|
||||
* Configuration management (header)
|
||||
*/
|
||||
@@ -72,6 +72,9 @@ 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;
|
||||
@@ -83,6 +86,9 @@ GLOBAL CHAR Conf_ListenAddress[16];
|
||||
GLOBAL UINT Conf_UID;
|
||||
GLOBAL UINT Conf_GID;
|
||||
|
||||
/* A directory to chroot() in */
|
||||
GLOBAL CHAR Conf_Chroot[FNAME_LEN];
|
||||
|
||||
/* Timeouts for PING and PONG */
|
||||
GLOBAL INT Conf_PingTimeout;
|
||||
GLOBAL INT Conf_PongTimeout;
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: conn-func.c,v 1.1.2.2 2003/12/26 16:16:48 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: conn-func.c,v 1.3 2003/12/26 15:55:07 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
|
||||
#ifdef ZLIB
|
||||
|
||||
static char UNUSED id[] = "$Id: conn-zip.c,v 1.3.2.1 2003/12/26 16:16:48 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: conn-zip.c,v 1.5 2004/04/25 13:55:36 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: code %d (ni=%d, ai=%d, no=%d, ao=%d)!?", result, in->next_in, in->avail_in, in->next_out, in->avail_out );
|
||||
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 );
|
||||
Conn_Close( Idx, "Decompression error!", NULL, FALSE );
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conn-zip.h,v 1.1.2.1 2003/12/26 16:16:48 alex Exp $
|
||||
* $Id: conn-zip.h,v 1.2 2003/12/26 15:55:07 alex Exp $
|
||||
*
|
||||
* Connection compression using ZLIB (header)
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
* 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
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: conn.c,v 1.122.2.4 2004/02/03 13:54:36 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: conn.c,v 1.134.2.2 2004/05/30 16:24:21 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -33,18 +33,22 @@ static char UNUSED id[] = "$Id: conn.c,v 1.122.2.4 2004/02/03 13:54:36 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"
|
||||
@@ -64,7 +68,7 @@ static char UNUSED id[] = "$Id: conn.c,v 1.122.2.4 2004/02/03 13:54:36 alex Exp
|
||||
#include "tool.h"
|
||||
|
||||
#ifdef RENDEZVOUS
|
||||
#include "rendezvous.h"
|
||||
# include "rendezvous.h"
|
||||
#endif
|
||||
|
||||
#include "exp.h"
|
||||
@@ -113,7 +117,7 @@ Conn_Init( VOID )
|
||||
/* konfiguriertes Limit beachten */
|
||||
if( Pool_Size > Conf_MaxConnections ) Pool_Size = Conf_MaxConnections;
|
||||
}
|
||||
My_Connections = malloc( sizeof( CONNECTION ) * Pool_Size );
|
||||
My_Connections = (CONNECTION *)malloc( sizeof( CONNECTION ) * Pool_Size );
|
||||
if( ! My_Connections )
|
||||
{
|
||||
/* Speicher konnte nicht alloziert werden! */
|
||||
@@ -610,6 +614,7 @@ 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;
|
||||
@@ -617,7 +622,6 @@ 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 )
|
||||
@@ -627,8 +631,16 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
|
||||
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 );
|
||||
@@ -647,7 +659,6 @@ 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 */
|
||||
@@ -868,11 +879,9 @@ Handle_Write( CONN_ID Idx )
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
#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
|
||||
Log( LOG_INFO, "Connection %d with \"%s:%d\" established. Now logging in ...", Idx, My_Connections[Idx].host, Conf_Server[Conf_GetServer( Idx )].port );
|
||||
|
||||
/* PASS und SERVER verschicken */
|
||||
/* Send PASS and SERVER command to peer */
|
||||
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 );
|
||||
}
|
||||
@@ -995,11 +1004,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 = realloc( My_Connections, sizeof( CONNECTION ) * new_size );
|
||||
ptr = (POINTER *)realloc( My_Connections, sizeof( CONNECTION ) * new_size );
|
||||
if( ! ptr )
|
||||
{
|
||||
/* realloc() ist fehlgeschlagen. Nun malloc() probieren: */
|
||||
ptr = malloc( sizeof( CONNECTION ) * new_size );
|
||||
ptr = (POINTER *)malloc( sizeof( CONNECTION ) * new_size );
|
||||
if( ! ptr )
|
||||
{
|
||||
/* Offenbar steht kein weiterer Sepeicher zur Verfuegung :-( */
|
||||
@@ -1021,7 +1030,7 @@ New_Connection( INT Sock )
|
||||
#endif
|
||||
|
||||
/* Adjust pointer to new block */
|
||||
My_Connections = ptr;
|
||||
My_Connections = (CONNECTION *)ptr;
|
||||
|
||||
/* Initialize new items */
|
||||
for( idx = Pool_Size; idx < new_size; idx++ ) Init_Conn_Struct( idx );
|
||||
@@ -1055,7 +1064,11 @@ 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 */
|
||||
@@ -1546,24 +1559,40 @@ Init_Conn_Struct( CONN_ID Idx )
|
||||
LOCAL BOOLEAN
|
||||
Init_Socket( INT Sock )
|
||||
{
|
||||
/* Socket-Optionen setzen */
|
||||
/* Initialize socket (set options) */
|
||||
|
||||
INT on = 1;
|
||||
INT value;
|
||||
|
||||
#ifdef O_NONBLOCK /* A/UX kennt das nicht? */
|
||||
#ifdef O_NONBLOCK /* unknown on A/UX */
|
||||
if( fcntl( Sock, F_SETFL, O_NONBLOCK ) != 0 )
|
||||
{
|
||||
Log( LOG_CRIT, "Can't enable non-blocking mode: %s!", strerror( errno ));
|
||||
Log( LOG_CRIT, "Can't enable non-blocking mode for socket: %s!", strerror( errno ));
|
||||
close( Sock );
|
||||
return FALSE;
|
||||
}
|
||||
#endif
|
||||
if( setsockopt( Sock, SOL_SOCKET, SO_REUSEADDR, &on, (socklen_t)sizeof( on )) != 0)
|
||||
|
||||
/* Don't block this port after socket shutdown */
|
||||
value = 1;
|
||||
if( setsockopt( Sock, SOL_SOCKET, SO_REUSEADDR, &value, (socklen_t)sizeof( value )) != 0 )
|
||||
{
|
||||
Log( LOG_ERR, "Can't set socket options: %s!", strerror( errno ));
|
||||
/* dieser Fehler kann ignoriert werden. */
|
||||
Log( LOG_ERR, "Can't set socket option SO_REUSEADDR: %s!", strerror( errno ));
|
||||
/* ignore this error */
|
||||
}
|
||||
|
||||
/* 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 */
|
||||
|
||||
@@ -1571,35 +1600,28 @@ Init_Socket( INT Sock )
|
||||
LOCAL VOID
|
||||
Read_Resolver_Result( INT r_fd )
|
||||
{
|
||||
/* Ergebnis von Resolver Sub-Prozess aus Pipe lesen
|
||||
* und entsprechende Connection aktualisieren */
|
||||
/* Read result of resolver sub-process from pipe and update the
|
||||
* apropriate connection/client structure(s): hostname and/or
|
||||
* IDENT user name.*/
|
||||
|
||||
CHAR result[HOST_LEN];
|
||||
CLIENT *c;
|
||||
INT len, i, n;
|
||||
RES_STAT *s;
|
||||
CHAR *ptr;
|
||||
|
||||
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 */
|
||||
/* Search associated connection ... */
|
||||
for( i = 0; i < Pool_Size; i++ )
|
||||
{
|
||||
if(( My_Connections[i].sock != NONE ) && ( My_Connections[i].res_stat ) && ( My_Connections[i].res_stat->pipe[0] == r_fd )) break;
|
||||
if(( My_Connections[i].sock != NONE )
|
||||
&& ( My_Connections[i].res_stat != NULL )
|
||||
&& ( My_Connections[i].res_stat->pipe[0] == r_fd ))
|
||||
break;
|
||||
}
|
||||
if( i >= Pool_Size )
|
||||
{
|
||||
/* Opsa! Keine passende Connection gefunden!? Vermutlich
|
||||
* wurde sie schon wieder geschlossen. */
|
||||
/* Ops, none found? Probably the connection has already
|
||||
* been closed!? We'll ignore that ... */
|
||||
FD_CLR( r_fd, &Resolver_FDs );
|
||||
close( r_fd );
|
||||
#ifdef DEBUG
|
||||
Log( LOG_DEBUG, "Resolver: Got result for unknown connection!?" );
|
||||
@@ -1607,33 +1629,103 @@ 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, "Resolver: %s is \"%s\".", My_Connections[i].host, result );
|
||||
Log( LOG_DEBUG, "Got result from resolver: \"%s\" (%d bytes), stage %d.", s->buffer, len, s->stage );
|
||||
#endif
|
||||
|
||||
/* Aufraeumen */
|
||||
/* 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 );
|
||||
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;
|
||||
|
||||
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 */
|
||||
/* Reset penalty time */
|
||||
Conn_ResetPenalty( i );
|
||||
} /* Read_Resolver_Result */
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conn.h,v 1.31.2.1 2003/12/26 16:16:48 alex Exp $
|
||||
* $Id: conn.h,v 1.32 2003/12/26 15:55:07 alex Exp $
|
||||
*
|
||||
* Connection management (header)
|
||||
*/
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: defines.h,v 1.42.2.2 2003/12/26 16:16:48 alex Exp $
|
||||
* $Id: defines.h,v 1.45.2.1 2004/05/07 11:24:18 alex Exp $
|
||||
*
|
||||
* Global defines of ngIRCd.
|
||||
*/
|
||||
@@ -67,7 +67,7 @@
|
||||
#define PROTOIRCPLUS "-IRC+" /* Protokoll-Suffix f<>r IRC+-Protokoll */
|
||||
|
||||
#ifdef IRCPLUS
|
||||
# define IRCPLUSFLAGS "C" /* IRC+-Flags, die immer zutreffen */
|
||||
# define IRCPLUSFLAGS "CL" /* IRC+-Flags, die immer zutreffen */
|
||||
#endif
|
||||
|
||||
#define STARTUP_DELAY 1 /* Erst n Sek. nach Start zu anderen Servern verbinden */
|
||||
@@ -83,6 +83,8 @@
|
||||
|
||||
#define CONFIG_FILE "/ngircd.conf"
|
||||
#define MOTD_FILE "/ngircd.motd"
|
||||
#define MOTD_PHRASE ""
|
||||
#define CHROOT_DIR ""
|
||||
|
||||
#define ERROR_DIR "/tmp"
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-channel.c,v 1.25 2003/01/08 22:04:05 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-channel.c,v 1.27 2004/04/09 20:46:48 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 = flags = NULL;
|
||||
chan = NULL; 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 )
|
||||
}
|
||||
}
|
||||
|
||||
/* Lokaler Client? */
|
||||
/* Local client? */
|
||||
if( Client_Type( Client ) == CLIENT_USER )
|
||||
{
|
||||
/* Test if the user has reached his maximum channel count */
|
||||
@@ -159,6 +159,16 @@ IRC_JOIN( CLIENT *Client, REQUEST *Req )
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Remote server: we don't need to know whether the
|
||||
* client is invited or not, but we have to make sure
|
||||
* that the "one shot" entries (generated by INVITE
|
||||
* commands) in this list become deleted when a user
|
||||
* joins a channel this way. */
|
||||
chan = Channel_Search( channame );
|
||||
if( chan != NULL ) (VOID)Lists_CheckInvited( target, chan );
|
||||
}
|
||||
|
||||
/* Channel joinen (und ggf. anlegen) */
|
||||
if( ! Channel_Join( target, channame ))
|
||||
|
||||
@@ -14,13 +14,14 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-info.c,v 1.16.2.4 2003/12/26 16:16:48 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-info.c,v 1.21.2.1 2004/05/07 11:24:18 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"
|
||||
@@ -772,6 +773,13 @@ IRC_Show_MOTD( CLIENT *Client )
|
||||
|
||||
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 )
|
||||
{
|
||||
@@ -779,7 +787,7 @@ IRC_Show_MOTD( CLIENT *Client )
|
||||
return IRC_WriteStrClient( Client, ERR_NOMOTD_MSG, Client_ID( Client ) );
|
||||
}
|
||||
|
||||
IRC_WriteStrClient( Client, RPL_MOTDSTART_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )));
|
||||
if( ! IRC_WriteStrClient( Client, RPL_MOTDSTART_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )))) return DISCONNECTED;
|
||||
while( TRUE )
|
||||
{
|
||||
if( ! fgets( line, 126, fd )) break;
|
||||
|
||||
@@ -14,13 +14,14 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-login.c,v 1.34.2.3 2004/02/04 20:04:54 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-login.c,v 1.40 2004/03/11 22:16:31 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"
|
||||
@@ -285,6 +286,10 @@ 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 );
|
||||
|
||||
@@ -298,11 +303,15 @@ 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, "-" );
|
||||
|
||||
@@ -500,7 +509,7 @@ Kill_Nick( CHAR *Nick, CHAR *Reason )
|
||||
assert( Nick != NULL );
|
||||
assert( Reason != NULL );
|
||||
|
||||
r.prefix = Client_ThisServer( );
|
||||
r.prefix = (CHAR *)Client_ThisServer( );
|
||||
r.argv[0] = Nick;
|
||||
r.argv[1] = Reason;
|
||||
r.argc = 2;
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-mode.c,v 1.31.2.1 2003/11/07 20:51:11 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-mode.c,v 1.35 2004/04/25 15:42:05 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,6 +635,7 @@ LOCAL BOOLEAN
|
||||
Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
|
||||
{
|
||||
CHAR *mask;
|
||||
BOOLEAN already;
|
||||
|
||||
assert( Client != NULL );
|
||||
assert( Channel != NULL );
|
||||
@@ -642,7 +643,12 @@ Add_Invite( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
|
||||
|
||||
mask = Lists_MakeMask( Pattern );
|
||||
|
||||
if( ! Lists_AddInvited( Prefix, mask, Channel, FALSE )) return CONNECTED;
|
||||
already = Lists_IsInviteEntry( mask, Channel );
|
||||
|
||||
if( ! Lists_AddInvited( mask, Channel, FALSE )) return CONNECTED;
|
||||
|
||||
if(( Client_Type( Prefix ) == CLIENT_SERVER ) && ( already == TRUE )) return CONNECTED;
|
||||
|
||||
return Send_ListChange( "+I", Prefix, Client, Channel, mask );
|
||||
} /* Add_Invite */
|
||||
|
||||
@@ -651,6 +657,7 @@ LOCAL BOOLEAN
|
||||
Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
|
||||
{
|
||||
CHAR *mask;
|
||||
BOOLEAN already;
|
||||
|
||||
assert( Client != NULL );
|
||||
assert( Channel != NULL );
|
||||
@@ -658,7 +665,12 @@ Add_Ban( CLIENT *Prefix, CLIENT *Client, CHANNEL *Channel, CHAR *Pattern )
|
||||
|
||||
mask = Lists_MakeMask( Pattern );
|
||||
|
||||
if( ! Lists_AddBanned( Prefix, mask, Channel )) return CONNECTED;
|
||||
already = Lists_IsBanEntry( mask, Channel );
|
||||
|
||||
if( ! Lists_AddBanned( mask, Channel )) return CONNECTED;
|
||||
|
||||
if(( Client_Type( Prefix ) == CLIENT_SERVER ) && ( already == TRUE )) return CONNECTED;
|
||||
|
||||
return Send_ListChange( "+b", Prefix, Client, Channel, mask );
|
||||
} /* Add_Ban */
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-op.c,v 1.11.4.1 2003/12/05 13:33:12 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-op.c,v 1.13 2004/04/09 21:41:52 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( from, Client_Mask( target ), chan, TRUE )) return CONNECTED;
|
||||
if( ! Lists_AddInvited( Client_Mask( target ), chan, TRUE )) return CONNECTED;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,14 +14,16 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-server.c,v 1.32.2.2 2003/12/26 16:16:48 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-server.c,v 1.36.2.1 2004/05/15 23:52:17 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"
|
||||
@@ -29,6 +31,7 @@ static char UNUSED id[] = "$Id: irc-server.c,v 1.32.2.2 2003/12/26 16:16:48 alex
|
||||
#include "client.h"
|
||||
#include "channel.h"
|
||||
#include "irc-write.h"
|
||||
#include "lists.h"
|
||||
#include "log.h"
|
||||
#include "messages.h"
|
||||
#include "parse.h"
|
||||
@@ -182,6 +185,9 @@ 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 );
|
||||
|
||||
@@ -238,6 +244,18 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
|
||||
if( ! IRC_WriteStrClient( Client, "%s", str )) return DISCONNECTED;
|
||||
}
|
||||
|
||||
#ifdef IRCPLUS
|
||||
if( strchr( Client_Flags( Client ), 'L' ))
|
||||
{
|
||||
#ifdef DEBUG
|
||||
Log( LOG_DEBUG, "Synchronizing INVITE- and BAN-lists ..." );
|
||||
#endif
|
||||
/* Synchronize INVITE- and BAN-lists */
|
||||
if( ! Lists_SendInvites( Client )) return DISCONNECTED;
|
||||
if( ! Lists_SendBans( Client )) return DISCONNECTED;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* naechsten Channel suchen */
|
||||
chan = Channel_Next( chan );
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc-write.c,v 1.14.2.1 2003/11/07 20:51:11 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc-write.c,v 1.15 2003/11/05 23:24:48 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: irc-write.h,v 1.5.4.1 2003/11/07 20:51:11 alex Exp $
|
||||
* $Id: irc-write.h,v 1.6 2003/11/05 23:24:48 alex Exp $
|
||||
*
|
||||
* Sending IRC commands over the network (header)
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
* 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
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: irc.c,v 1.120.2.3 2003/12/26 16:16:48 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: irc.c,v 1.124 2004/02/28 02:18:16 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -210,6 +210,7 @@ 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 );
|
||||
@@ -251,7 +252,9 @@ IRC_TRACE( CLIENT *Client, REQUEST *Req )
|
||||
if( Client_Type( c ) == CLIENT_SERVER )
|
||||
{
|
||||
/* Server link */
|
||||
if( ! IRC_WriteStrClient( from, RPL_TRACESERVER_MSG, Client_ID( from ), Client_ID( c ), Client_Mask( c ), Option_String( Client_Conn( c )))) return DISCONNECTED;
|
||||
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(( Client_Type( c ) == CLIENT_USER ) && ( strchr( Client_Modes( c ), 'o' )))
|
||||
{
|
||||
@@ -262,9 +265,6 @@ 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 */
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: lists.c,v 1.11 2002/12/26 16:25:43 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: lists.c,v 1.15 2004/04/25 15:40:19 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -30,6 +30,7 @@ static char UNUSED id[] = "$Id: lists.c,v 1.11 2002/12/26 16:25:43 alex Exp $";
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
|
||||
#include "exp.h"
|
||||
#include "lists.h"
|
||||
@@ -101,19 +102,24 @@ Lists_CheckInvited( CLIENT *Client, CHANNEL *Chan )
|
||||
|
||||
|
||||
GLOBAL BOOLEAN
|
||||
Lists_AddInvited( CLIENT *From, CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce )
|
||||
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 )
|
||||
{
|
||||
C2C *c2c;
|
||||
|
||||
assert( Mask != NULL );
|
||||
assert( Chan != NULL );
|
||||
|
||||
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;
|
||||
}
|
||||
if( Already_Registered( My_Invites, Mask, Chan )) return TRUE;
|
||||
|
||||
c2c = New_C2C( Mask, Chan, OnlyOnce );
|
||||
if( ! c2c )
|
||||
@@ -180,6 +186,40 @@ 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 )
|
||||
{
|
||||
@@ -188,19 +228,24 @@ Lists_CheckBanned( CLIENT *Client, CHANNEL *Chan )
|
||||
|
||||
|
||||
GLOBAL BOOLEAN
|
||||
Lists_AddBanned( CLIENT *From, CHAR *Mask, CHANNEL *Chan )
|
||||
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 )
|
||||
{
|
||||
C2C *c2c;
|
||||
|
||||
assert( Mask != NULL );
|
||||
assert( Chan != NULL );
|
||||
|
||||
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;
|
||||
}
|
||||
if( Already_Registered( My_Bans, Mask, Chan )) return TRUE;
|
||||
|
||||
c2c = New_C2C( Mask, Chan, FALSE );
|
||||
if( ! c2c )
|
||||
@@ -370,7 +415,7 @@ New_C2C( CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce )
|
||||
assert( Chan != NULL );
|
||||
|
||||
/* Speicher fuer Eintrag anfordern */
|
||||
c2c = malloc( sizeof( C2C ));
|
||||
c2c = (C2C *)malloc( sizeof( C2C ));
|
||||
if( ! c2c )
|
||||
{
|
||||
Log( LOG_EMERG, "Can't allocate memory! [New_C2C]" );
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: lists.h,v 1.9 2002/12/12 12:23:43 alex Exp $
|
||||
* $Id: lists.h,v 1.11 2004/04/25 15:40:19 alex Exp $
|
||||
*
|
||||
* Management of IRC lists: ban, invite, ... (header)
|
||||
*/
|
||||
@@ -22,14 +22,18 @@ 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(( CLIENT *From, CHAR *Mask, CHANNEL *Chan, BOOLEAN OnlyOnce ));
|
||||
GLOBAL BOOLEAN Lists_AddInvited PARAMS(( 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(( CLIENT *From, CHAR *Mask, CHANNEL *Chan ));
|
||||
GLOBAL BOOLEAN Lists_AddBanned PARAMS(( CHAR *Mask, CHANNEL *Chan ));
|
||||
GLOBAL VOID Lists_DelBanned PARAMS(( CHAR *Mask, CHANNEL *Chan ));
|
||||
GLOBAL BOOLEAN Lists_ShowBans PARAMS(( CLIENT *Client, CHANNEL *Channel ));
|
||||
GLOBAL BOOLEAN Lists_SendBans PARAMS(( CLIENT *Client ));
|
||||
GLOBAL BOOLEAN Lists_IsBanEntry PARAMS(( CHAR *Mask, CHANNEL *Chan ));
|
||||
|
||||
GLOBAL VOID Lists_DeleteChannel PARAMS(( CHANNEL *Chan ));
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: log.c,v 1.43.2.1 2003/12/26 16:16:48 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: log.c,v 1.44.2.3 2004/06/26 09:06:27 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -85,6 +85,8 @@ Log_Init( VOID )
|
||||
}
|
||||
#endif
|
||||
if( Init_Txt[0] ) Log( LOG_INFO, "Activating: %s.", Init_Txt );
|
||||
|
||||
Error_File[0] = '\0';
|
||||
} /* Log_Init */
|
||||
|
||||
|
||||
@@ -122,8 +124,11 @@ Log_Exit( VOID )
|
||||
if( NGIRCd_SignalRestart ) Log( LOG_NOTICE, "%s done (restarting).", PACKAGE_NAME );
|
||||
else Log( LOG_NOTICE, "%s done.", PACKAGE_NAME );
|
||||
|
||||
/* Error-File (stderr) loeschen */
|
||||
if( unlink( Error_File ) != 0 ) Log( LOG_ERR, "Can't delete \"%s\": %s", Error_File, strerror( errno ));
|
||||
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 ));
|
||||
}
|
||||
|
||||
#ifdef SYSLOG
|
||||
/* syslog abmelden */
|
||||
@@ -177,7 +182,7 @@ va_dcl
|
||||
if( NGIRCd_NoDaemon )
|
||||
{
|
||||
/* auf Konsole ausgeben */
|
||||
fprintf( stdout, "[%d] %s\n", Level, msg );
|
||||
fprintf( stdout, "[%d:%d] %s\n", (INT)getpid( ), Level, msg );
|
||||
fflush( stdout );
|
||||
}
|
||||
#ifdef SYSLOG
|
||||
@@ -209,12 +214,14 @@ 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
|
||||
@@ -234,17 +241,11 @@ 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
|
||||
@@ -260,9 +261,15 @@ va_dcl
|
||||
vsnprintf( msg, MAX_LOG_MSG_LEN, Format, ap );
|
||||
va_end( ap );
|
||||
|
||||
/* ... und ausgeben */
|
||||
syslog( Level, msg );
|
||||
|
||||
/* Output */
|
||||
if( NGIRCd_NoDaemon )
|
||||
{
|
||||
/* Output to console */
|
||||
fprintf( stdout, "[%d:%d] %s\n", (INT)getpid( ), Level, msg );
|
||||
fflush( stdout );
|
||||
}
|
||||
#ifdef SYSLOG
|
||||
else syslog( Level, msg );
|
||||
#endif
|
||||
} /* Log_Resolver */
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: log.h,v 1.13.4.1 2003/12/26 16:16:48 alex Exp $
|
||||
* $Id: log.h,v 1.14 2003/12/26 15:55:07 alex Exp $
|
||||
*
|
||||
* Logging functions (header)
|
||||
*/
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
* 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
|
||||
@@ -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.64.2.1 2003/12/26 16:16:48 alex Exp $
|
||||
* $Id: messages.h,v 1.66 2004/02/28 02:18:16 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 :V%s"
|
||||
#define RPL_TRACESERVER_MSG "206 %s Serv 1 0S 0C %s[%s@%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"
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: ngircd.c,v 1.76.2.3 2004/01/02 19:24:46 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: ngircd.c,v 1.83.2.2 2004/05/15 23:52:17 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -24,20 +24,20 @@ static char UNUSED id[] = "$Id: ngircd.c,v 1.76.2.3 2004/01/02 19:24:46 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,6 +183,11 @@ main( int argc, const char *argv[] )
|
||||
ok = TRUE;
|
||||
}
|
||||
#endif
|
||||
if( argv[i][n] == 't' )
|
||||
{
|
||||
configtest = TRUE;
|
||||
ok = TRUE;
|
||||
}
|
||||
|
||||
if( ! ok )
|
||||
{
|
||||
@@ -223,6 +228,38 @@ 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)
|
||||
@@ -247,18 +284,10 @@ 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;
|
||||
|
||||
/* Module initialisieren */
|
||||
Log_Init( );
|
||||
/* Initialize modules, part II: these functions are eventually
|
||||
* called with already dropped privileges ... */
|
||||
Resolve_Init( );
|
||||
Conf_Init( );
|
||||
Lists_Init( );
|
||||
Channel_Init( );
|
||||
Client_Init( );
|
||||
@@ -267,28 +296,15 @@ main( int argc, const char *argv[] )
|
||||
#endif
|
||||
Conn_Init( );
|
||||
|
||||
/* 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 */
|
||||
/* Show user, group, and PID of the running daemon */
|
||||
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( ));
|
||||
|
||||
/* stderr in "Error-File" umlenken */
|
||||
Log_InitErrorfile( );
|
||||
/* 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( );
|
||||
|
||||
/* Signal-Handler initialisieren */
|
||||
Initialize_Signal_Handler( );
|
||||
@@ -377,6 +393,10 @@ 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" );
|
||||
@@ -413,30 +433,26 @@ NGIRCd_Rehash( VOID )
|
||||
Log( LOG_NOTICE|LOG_snotice, "Re-reading configuration NOW!" );
|
||||
NGIRCd_SignalRehash = FALSE;
|
||||
|
||||
/* Alle Listen-Sockets schliessen */
|
||||
/* Close down all listening sockets */
|
||||
Conn_ExitListeners( );
|
||||
|
||||
/* Alten Server-Namen merken */
|
||||
#ifdef DEBUG
|
||||
assert( sizeof( old_name ) == sizeof( Conf_ServerName ));
|
||||
#endif
|
||||
/* Remember old server name */
|
||||
strcpy( old_name, Conf_ServerName );
|
||||
|
||||
/* Konfiguration neu lesen ... */
|
||||
/* Re-read configuration ... */
|
||||
Conf_Rehash( );
|
||||
|
||||
/* Alten Server-Namen wiederherstellen: dieser
|
||||
* kann nicht zur Laufzeit geaendert werden ... */
|
||||
/* Recover old server name: it can't be changed during run-time */
|
||||
if( strcmp( old_name, Conf_ServerName ) != 0 )
|
||||
{
|
||||
strcpy( Conf_ServerName, old_name );
|
||||
Log( LOG_ERR, "Can't change \"ServerName\" on runtime! Ignored new name." );
|
||||
}
|
||||
|
||||
/* neue pre-defined Channel anlegen: */
|
||||
/* Create new pre-defined channels */
|
||||
Channel_InitPredefined( );
|
||||
|
||||
/* Listen-Sockets neu anlegen: */
|
||||
/* Start listening on sockets */
|
||||
Conn_InitListeners( );
|
||||
|
||||
/* Sync configuration with established connections */
|
||||
@@ -548,7 +564,7 @@ Show_Help( VOID )
|
||||
#ifdef SNIFFER
|
||||
puts( " -s, --sniffer enable network sniffer and display all IRC traffic" );
|
||||
#endif
|
||||
puts( " --configtest read, validate and display configuration; then exit" );
|
||||
puts( " -t, --configtest read, validate and display configuration; then exit" );
|
||||
puts( " --version output version information and exit" );
|
||||
puts( " --help display this help and exit" );
|
||||
} /* Show_Help */
|
||||
|
||||
@@ -14,13 +14,14 @@
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: parse.c,v 1.59 2003/01/15 13:49:20 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: parse.c,v 1.60 2004/01/17 03:17:49 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <strings.h>
|
||||
|
||||
#include "ngircd.h"
|
||||
#include "defines.h"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by 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: resolve.c,v 1.6 2003/04/21 10:52:51 alex Exp $";
|
||||
static char UNUSED id[] = "$Id: resolve.c,v 1.8.2.1 2004/05/15 23:52:17 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
@@ -27,6 +27,12 @@ static char UNUSED id[] = "$Id: resolve.c,v 1.6 2003/04/21 10:52:51 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"
|
||||
@@ -35,7 +41,12 @@ static char UNUSED id[] = "$Id: resolve.c,v 1.6 2003/04/21 10:52:51 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
|
||||
@@ -46,31 +57,35 @@ LOCAL CHAR *Get_Error PARAMS(( INT H_Error ));
|
||||
GLOBAL VOID
|
||||
Resolve_Init( VOID )
|
||||
{
|
||||
/* Modul initialisieren */
|
||||
/* Initialize module */
|
||||
|
||||
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
|
||||
{
|
||||
/* 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. */
|
||||
/* Resolve IP (asynchronous!). On errors, e.g. if the child process
|
||||
* can't be forked, this functions returns NULL. */
|
||||
|
||||
RES_STAT *s;
|
||||
INT pid;
|
||||
|
||||
/* Speicher anfordern */
|
||||
s = malloc( sizeof( RES_STAT ));
|
||||
/* Allocate memory */
|
||||
s = (RES_STAT *)malloc( sizeof( RES_STAT ));
|
||||
if( ! s )
|
||||
{
|
||||
Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Addr]" );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Pipe fuer Antwort initialisieren */
|
||||
/* Initialize pipe for result */
|
||||
if( pipe( s->pipe ) != 0 )
|
||||
{
|
||||
free( s );
|
||||
@@ -78,28 +93,34 @@ Resolve_Addr( struct sockaddr_in *Addr )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Sub-Prozess erzeugen */
|
||||
/* For sub-process */
|
||||
pid = fork( );
|
||||
if( pid > 0 )
|
||||
{
|
||||
/* Haupt-Prozess */
|
||||
/* Main process */
|
||||
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-Prozess */
|
||||
/* Sub process */
|
||||
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
|
||||
{
|
||||
/* Fehler */
|
||||
/* Error! */
|
||||
free( s );
|
||||
Log( LOG_CRIT, "Resolver: Can't fork: %s!", strerror( errno ));
|
||||
return NULL;
|
||||
@@ -110,22 +131,21 @@ Resolve_Addr( struct sockaddr_in *Addr )
|
||||
GLOBAL RES_STAT *
|
||||
Resolve_Name( CHAR *Host )
|
||||
{
|
||||
/* 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. */
|
||||
/* Resolve hostname (asynchronous!). On errors, e.g. if the child
|
||||
* process can't be forked, this functions returns NULL. */
|
||||
|
||||
RES_STAT *s;
|
||||
INT pid;
|
||||
|
||||
/* Speicher anfordern */
|
||||
s = malloc( sizeof( RES_STAT ));
|
||||
/* Allocate memory */
|
||||
s = (RES_STAT *)malloc( sizeof( RES_STAT ));
|
||||
if( ! s )
|
||||
{
|
||||
Log( LOG_EMERG, "Resolver: Can't allocate memory! [Resolve_Name]" );
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Pipe fuer Antwort initialisieren */
|
||||
/* Initialize the pipe for the result */
|
||||
if( pipe( s->pipe ) != 0 )
|
||||
{
|
||||
free( s );
|
||||
@@ -133,20 +153,22 @@ Resolve_Name( CHAR *Host )
|
||||
return NULL;
|
||||
}
|
||||
|
||||
/* Sub-Prozess erzeugen */
|
||||
/* Fork sub-process */
|
||||
pid = fork( );
|
||||
if( pid > 0 )
|
||||
{
|
||||
/* Haupt-Prozess */
|
||||
/* Main process */
|
||||
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-Prozess */
|
||||
/* Sub process */
|
||||
Log_Init_Resolver( );
|
||||
Do_ResolveName( Host, s->pipe[1] );
|
||||
Log_Exit_Resolver( );
|
||||
@@ -154,7 +176,7 @@ Resolve_Name( CHAR *Host )
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Fehler */
|
||||
/* Error! */
|
||||
free( s );
|
||||
Log( LOG_CRIT, "Resolver: Can't fork: %s!", strerror( errno ));
|
||||
return NULL;
|
||||
@@ -162,17 +184,26 @@ 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-Prozess: IP aufloesen und Ergebnis in Pipe schreiben. */
|
||||
/* Resolver sub-process: resolve IP address and write result into
|
||||
* pipe to parent. */
|
||||
|
||||
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
|
||||
@@ -184,31 +215,52 @@ 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 );
|
||||
|
||||
/* Antwort an Parent schreiben */
|
||||
if( (size_t)write( w_fd, hostname, strlen( hostname ) + 1 ) != (size_t)( strlen( hostname ) + 1 ))
|
||||
/* 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 )
|
||||
{
|
||||
Log_Resolver( LOG_CRIT, "Resolver: Can't write to parent: %s!", strerror( errno ));
|
||||
close( w_fd );
|
||||
return;
|
||||
}
|
||||
|
||||
Log_Resolver( LOG_DEBUG, "Ok, translated %s to \"%s\".", inet_ntoa( Addr->sin_addr ), hostname );
|
||||
#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
|
||||
} /* Do_ResolveAddr */
|
||||
|
||||
|
||||
LOCAL VOID
|
||||
Do_ResolveName( CHAR *Host, INT w_fd )
|
||||
{
|
||||
/* Resolver Sub-Prozess: Name aufloesen und Ergebnis in Pipe schreiben. */
|
||||
/* Resolver sub-process: resolve name and write result into pipe
|
||||
* to parent. */
|
||||
|
||||
CHAR ip[16];
|
||||
struct hostent *h;
|
||||
struct in_addr *addr;
|
||||
INT len;
|
||||
|
||||
Log_Resolver( LOG_DEBUG, "Now resolving \"%s\" ...", Host );
|
||||
|
||||
/* Namen aufloesen */
|
||||
/* Resolve hostname */
|
||||
h = gethostbyname( Host );
|
||||
if( h )
|
||||
{
|
||||
@@ -224,16 +276,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 );
|
||||
|
||||
/* Antwort an Parent schreiben */
|
||||
if( (size_t)write( w_fd, ip, strlen( ip ) + 1 ) != (size_t)( strlen( ip ) + 1 ))
|
||||
/* Write result into pipe to parent */
|
||||
len = strlen( ip );
|
||||
ip[len] = '\n'; len++;
|
||||
if( (size_t)write( w_fd, ip, len ) != (size_t)len )
|
||||
{
|
||||
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 */
|
||||
|
||||
|
||||
@@ -242,7 +294,7 @@ Do_ResolveName( CHAR *Host, INT w_fd )
|
||||
LOCAL CHAR *
|
||||
Get_Error( INT H_Error )
|
||||
{
|
||||
/* Fehlerbeschreibung fuer H_Error liefern */
|
||||
/* Get error message for H_Error */
|
||||
|
||||
switch( H_Error )
|
||||
{
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by 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: resolve.h,v 1.5 2003/04/21 10:53:10 alex Exp $
|
||||
* $Id: resolve.h,v 1.6.2.1 2004/05/15 23:52:17 alex Exp $
|
||||
*
|
||||
* Asynchronous resolver (header)
|
||||
*/
|
||||
@@ -29,6 +29,9 @@ 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;
|
||||
|
||||
|
||||
@@ -37,7 +40,12 @@ GLOBAL fd_set Resolver_FDs;
|
||||
|
||||
GLOBAL VOID Resolve_Init PARAMS(( VOID ));
|
||||
|
||||
#ifdef IDENTAUTH
|
||||
GLOBAL RES_STAT *Resolve_Addr PARAMS(( struct sockaddr_in *Addr, int Sock ));
|
||||
#else
|
||||
GLOBAL RES_STAT *Resolve_Addr PARAMS(( struct sockaddr_in *Addr ));
|
||||
#endif
|
||||
|
||||
GLOBAL RES_STAT *Resolve_Name PARAMS(( CHAR *Host ));
|
||||
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: portab.h,v 1.15 2003/03/31 19:01:02 alex Exp $
|
||||
* $Id: portab.h,v 1.17 2004/03/15 19:26:39 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 */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#if (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 7))
|
||||
# define PUNUSED(x) __attribute__ ((unused)) x
|
||||
# define UNUSED __attribute__ ((unused))
|
||||
#else
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: channel-test.e,v 1.2 2002/09/09 21:26:00 alex Exp $
|
||||
# $Id: channel-test.e,v 1.3 2003/12/27 13:01:12 alex Exp $
|
||||
|
||||
spawn telnet localhost 6789
|
||||
expect {
|
||||
@@ -16,7 +16,7 @@ expect {
|
||||
send "join #channel\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* JOIN :#channel"
|
||||
"@* JOIN :#channel"
|
||||
}
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
@@ -26,13 +26,17 @@ expect {
|
||||
send "topic #channel :Test-Topic\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* TOPIC #channel :Test-Topic"
|
||||
"@* TOPIC #channel :Test-Topic"
|
||||
}
|
||||
|
||||
send "who #channel\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
"352 nick #channel ~user * nick H@ :0 User"
|
||||
"352 nick #channel"
|
||||
}
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
"* nick H@ :0 User"
|
||||
}
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
@@ -62,7 +66,7 @@ expect {
|
||||
send "part #channel\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* PART #channel :nick"
|
||||
"@* PART #channel :nick"
|
||||
}
|
||||
|
||||
send "quit\r"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Test Suite
|
||||
# $Id: getpid.sh,v 1.2.4.2 2003/11/07 20:51:11 alex Exp $
|
||||
# $Id: getpid.sh,v 1.4 2003/08/22 11:31:18 alex Exp $
|
||||
|
||||
# did we get a name?
|
||||
[ $# -ne 1 ] && exit 1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: mode-test.e,v 1.4 2002/12/15 15:52:34 alex Exp $
|
||||
# $Id: mode-test.e,v 1.6 2004/03/10 20:40:06 alex Exp $
|
||||
|
||||
spawn telnet localhost 6789
|
||||
expect {
|
||||
@@ -16,7 +16,7 @@ expect {
|
||||
send "mode nick +i\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE nick +i"
|
||||
"@* MODE nick :+i"
|
||||
}
|
||||
|
||||
send "mode nick\r"
|
||||
@@ -28,7 +28,7 @@ expect {
|
||||
send "mode nick -i\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE nick -i"
|
||||
"@* MODE nick :-i"
|
||||
}
|
||||
|
||||
send "oper TestOp 123\r"
|
||||
@@ -50,7 +50,7 @@ expect {
|
||||
send "join #channel\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* JOIN :#channel"
|
||||
"@* JOIN :#channel"
|
||||
}
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
@@ -60,7 +60,7 @@ expect {
|
||||
send "mode #channel +tn\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE #channel +tn"
|
||||
"@* MODE #channel +tn"
|
||||
}
|
||||
|
||||
send "mode #channel\r"
|
||||
@@ -72,31 +72,31 @@ expect {
|
||||
send "mode #channel +v nick\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE #channel +v nick"
|
||||
"@* MODE #channel +v nick"
|
||||
}
|
||||
|
||||
send "mode #channel +I nick1\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE #channel +I nick1!*@*"
|
||||
"@* MODE #channel +I nick1!*@*"
|
||||
}
|
||||
|
||||
send "mode #channel +b nick2@domain\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE #channel +b nick2!*@domain"
|
||||
"@* MODE #channel +b nick2!*@domain"
|
||||
}
|
||||
|
||||
send "mode #channel +I nick3!user\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE #channel +I nick3!user@*"
|
||||
"@* MODE #channel +I nick3!user@*"
|
||||
}
|
||||
|
||||
send "mode #channel -vo nick nick\r"
|
||||
expect {
|
||||
timeout { exit 1 }
|
||||
":nick!~user@* MODE #channel -vo nick nick"
|
||||
"@* MODE #channel -vo nick nick"
|
||||
}
|
||||
|
||||
send "quit\r"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: ngircd-test.conf,v 1.3.4.1 2003/11/07 20:51:11 alex Exp $
|
||||
# $Id: ngircd-test.conf,v 1.4 2003/11/05 23:31:43 alex Exp $
|
||||
|
||||
[Global]
|
||||
Name = ngircd.test.server
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Test Suite
|
||||
# $Id: start-server.sh,v 1.10.4.1 2003/11/07 20:51:11 alex Exp $
|
||||
# $Id: start-server.sh,v 1.11 2003/08/22 11:31:18 alex Exp $
|
||||
|
||||
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Test Suite
|
||||
# $Id: stop-server.sh,v 1.9.4.1 2003/11/07 20:51:11 alex Exp $
|
||||
# $Id: stop-server.sh,v 1.10 2003/08/22 11:31:18 alex Exp $
|
||||
|
||||
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Test Suite
|
||||
# $Id: stress-server.sh,v 1.6.4.2 2003/11/07 20:51:11 alex Exp $
|
||||
# $Id: stress-server.sh,v 1.8 2003/08/22 11:31:18 alex Exp $
|
||||
|
||||
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Test Suite
|
||||
# $Id: tests.sh,v 1.3.6.1 2003/11/07 20:51:11 alex Exp $
|
||||
# $Id: tests.sh,v 1.4 2003/08/22 11:31:18 alex Exp $
|
||||
|
||||
name=`basename $0`
|
||||
test=`echo ${name} | cut -d '.' -f 1`
|
||||
|
||||
Reference in New Issue
Block a user