mirror of
https://github.com/osmarks/ngircd.git
synced 2025-11-13 12:07:10 +00:00
Compare commits
18 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
807da1356c | ||
|
|
024c58435e | ||
|
|
e72b817ae6 | ||
|
|
47d1cf9b55 | ||
|
|
aaaca987cd | ||
|
|
a34d8ae59f | ||
|
|
d917f06af8 | ||
|
|
715e5532a9 | ||
|
|
64a8f8a3fd | ||
|
|
7c2d0f20ed | ||
|
|
e75f23cfe8 | ||
|
|
c31167572b | ||
|
|
dc49d040c2 | ||
|
|
473feb44bb | ||
|
|
1ea7b10a82 | ||
|
|
29d430edd5 | ||
|
|
2b8052b03a | ||
|
|
d155ed17c8 |
17
AUTHORS
17
AUTHORS
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
ngIRCd - Next Generation IRC Server
|
ngIRCd - Next Generation IRC Server
|
||||||
|
|
||||||
(c)2001-2003 by Alexander Barton,
|
(c)2001-2004 by Alexander Barton,
|
||||||
alex@barton.de, http://www.barton.de/
|
alex@barton.de, http://www.barton.de/
|
||||||
|
|
||||||
ngIRCd is free software and published under the
|
ngIRCd is free software and published under the
|
||||||
@@ -12,15 +12,22 @@
|
|||||||
|
|
||||||
Main Authors
|
Main Authors
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
Alexander Barton, <alex@barton.de>, "alex"
|
Alexander Barton, <alex@barton.de> (alex)
|
||||||
|
|
||||||
|
|
||||||
Contributors
|
Contributors
|
||||||
~~~~~~~~~~~~
|
~~~~~~~~~~~~
|
||||||
Goetz Hoffart, <goetz@hoffart.de>
|
Goetz Hoffart, <goetz@hoffart.de> (goetz)
|
||||||
Ilja Osthoff, <i.osthoff@gmx.net>
|
Ilja Osthoff, <i.osthoff@gmx.net> (ilja)
|
||||||
Sean Reifschneider, <jafo-rpms@tummy.com>
|
Sean Reifschneider, <jafo-rpms@tummy.com>
|
||||||
|
|
||||||
|
|
||||||
|
Code snippets
|
||||||
|
~~~~~~~~~~~~~
|
||||||
|
J. Kercheval: pattern matching functions
|
||||||
|
Patrick Powell, <papowell@astart.com>: snprintf()-function
|
||||||
|
Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
|
||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: AUTHORS,v 1.5 2003/04/21 21:33:18 alex Exp $
|
$Id: AUTHORS,v 1.5.2.2 2004/02/03 16:01:29 alex Exp $
|
||||||
|
|||||||
39
ChangeLog
39
ChangeLog
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
ngIRCd - Next Generation IRC Server
|
ngIRCd - Next Generation IRC Server
|
||||||
|
|
||||||
(c)2001-2003 by Alexander Barton,
|
(c)2001-2004 by Alexander Barton,
|
||||||
alex@barton.de, http://www.barton.de/
|
alex@barton.de, http://www.barton.de/
|
||||||
|
|
||||||
ngIRCd is free software and published under the
|
ngIRCd is free software and published under the
|
||||||
@@ -10,6 +10,41 @@
|
|||||||
-- ChangeLog --
|
-- ChangeLog --
|
||||||
|
|
||||||
|
|
||||||
|
ngIRCd 0.7.7 (2004-02-05)
|
||||||
|
|
||||||
|
- The info text ("real name") of users is set to "-" if none has been
|
||||||
|
specified using the USER command (e. g. "USER user * * :"). Reason:
|
||||||
|
the original ircd doesn't like empty ones and would KILL such users.
|
||||||
|
- Fixed (optional) TCP Wrapper test which was broken and could result in
|
||||||
|
false results. Thanks to Fuminori Tanizaki <tany@mcnet.ad.jp>!
|
||||||
|
- Removed "USE_" prefixes of configuration #defines.
|
||||||
|
|
||||||
|
ngIRCd 0.7.6 (2003-12-05)
|
||||||
|
|
||||||
|
- Fixed abort() ("server crash") when INVITE'ing users to nonexistent
|
||||||
|
channels. Bug found by <hiddenx@wp.pl>.
|
||||||
|
- Extended version numbering of CVS versions (added date).
|
||||||
|
- Enhanced/fixed doc/Protocol.txt;
|
||||||
|
|
||||||
|
ngIRCd 0.7.5 (2003-11-07)
|
||||||
|
|
||||||
|
- Fixed ban behavior: users which are banned from a channel can't no
|
||||||
|
longer send PRIVMSG's to this channel (fixes Bug #47).
|
||||||
|
- Fixed and enhanced the "penalty handling" of the server: commands that
|
||||||
|
require more resources block the client for a short time.
|
||||||
|
- Changed the internal time resolution to one second.
|
||||||
|
- New configuration variable "MaxConnectionsIP" to limit the number of
|
||||||
|
simultaneous connections from a single IP that the server will accept.
|
||||||
|
This configuration options lowers the risk of denial of service attacks
|
||||||
|
(DoS), the default is 5 connections per client IP.
|
||||||
|
- Fixed build problems under Mac OS X 10.3.
|
||||||
|
- Use "-pipe" when compiling with gcc, speeds things up a little :-)
|
||||||
|
- Added new configuration variable "Listen" to bind all listening
|
||||||
|
sockets of the server to a single IP address.
|
||||||
|
- Suppress misleading error message of diff during make run.
|
||||||
|
- Enhanced test-suite and made it work on GNU/Hurd.
|
||||||
|
- Fixed minor typo in debug output :-)
|
||||||
|
|
||||||
ngIRCd 0.7.1 (2003-07-18)
|
ngIRCd 0.7.1 (2003-07-18)
|
||||||
|
|
||||||
- Included files to build Debian packages (located in "debian/").
|
- Included files to build Debian packages (located in "debian/").
|
||||||
@@ -458,4 +493,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: ChangeLog,v 1.188.2.17 2003/07/18 20:54:47 alex Exp $
|
$Id: ChangeLog,v 1.188.2.24 2004/02/05 13:33:24 alex Exp $
|
||||||
|
|||||||
4
INSTALL
4
INSTALL
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
ngIRCd - Next Generation IRC Server
|
ngIRCd - Next Generation IRC Server
|
||||||
|
|
||||||
(c)2001-2003 by Alexander Barton,
|
(c)2001-2004 by Alexander Barton,
|
||||||
alex@barton.de, http://www.barton.de/
|
alex@barton.de, http://www.barton.de/
|
||||||
|
|
||||||
ngIRCd is free software and published under the
|
ngIRCd is free software and published under the
|
||||||
@@ -158,4 +158,4 @@ number. In both cases the server exits after the output.
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: INSTALL,v 1.15.2.1 2003/04/22 20:00:32 alex Exp $
|
$Id: INSTALL,v 1.15.2.2 2004/02/03 16:01:29 alex Exp $
|
||||||
|
|||||||
@@ -218,7 +218,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = Products;
|
name = Products;
|
||||||
refType = 4;
|
path = "";
|
||||||
|
refType = 2;
|
||||||
};
|
};
|
||||||
//1A0
|
//1A0
|
||||||
//1A1
|
//1A1
|
||||||
@@ -421,10 +422,10 @@
|
|||||||
};
|
};
|
||||||
F51F791401DFD0DE01D13771 = {
|
F51F791401DFD0DE01D13771 = {
|
||||||
children = (
|
children = (
|
||||||
FA550F3103D59CB300A85B04,
|
|
||||||
F5263AEF01E2A9B801CE8F8F,
|
F5263AEF01E2A9B801CE8F8F,
|
||||||
F51F791501DFD0DE01D13771,
|
F51F791501DFD0DE01D13771,
|
||||||
F5E9447D02C9EE2801A85B04,
|
F5E9447D02C9EE2801A85B04,
|
||||||
|
FA0B193305060CB800A85B04,
|
||||||
F5B565290325412B01A85B04,
|
F5B565290325412B01A85B04,
|
||||||
F5E9447E02C9EE2801A85B04,
|
F5E9447E02C9EE2801A85B04,
|
||||||
F5E9447F02C9EE2801A85B04,
|
F5E9447F02C9EE2801A85B04,
|
||||||
@@ -433,8 +434,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = doc;
|
name = doc;
|
||||||
path = /Users/alex/Develop/ngircd/doc;
|
path = ../doc;
|
||||||
refType = 0;
|
refType = 2;
|
||||||
};
|
};
|
||||||
F51F791501DFD0DE01D13771 = {
|
F51F791501DFD0DE01D13771 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -477,8 +478,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = testsuite;
|
name = testsuite;
|
||||||
path = /Users/alex/Develop/ngircd/src/testsuite;
|
path = ../src/testsuite;
|
||||||
refType = 0;
|
refType = 2;
|
||||||
};
|
};
|
||||||
F520AEA90335E29001A85B04 = {
|
F520AEA90335E29001A85B04 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -593,8 +594,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = man;
|
name = man;
|
||||||
path = /Users/alex/Develop/ngircd/man;
|
path = ../man;
|
||||||
refType = 0;
|
refType = 2;
|
||||||
};
|
};
|
||||||
F520AF180335F1B801A85B04 = {
|
F520AF180335F1B801A85B04 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -691,8 +692,9 @@
|
|||||||
F576ABFE01D61D7401A85B03,
|
F576ABFE01D61D7401A85B03,
|
||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
path = ngircd;
|
name = ngircd;
|
||||||
refType = 4;
|
path = ../src/ngircd;
|
||||||
|
refType = 2;
|
||||||
};
|
};
|
||||||
F52162BB01C7B904012300F4 = {
|
F52162BB01C7B904012300F4 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -1034,7 +1036,7 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
path = ngircd.pbproj;
|
path = ngircd.pbproj;
|
||||||
refType = 4;
|
refType = 2;
|
||||||
};
|
};
|
||||||
F56D8BA101E0BFA00155ADA7 = {
|
F56D8BA101E0BFA00155ADA7 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -1275,7 +1277,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = contrib;
|
name = contrib;
|
||||||
refType = 4;
|
path = "";
|
||||||
|
refType = 2;
|
||||||
};
|
};
|
||||||
F5D3536203892AD201A85B04 = {
|
F5D3536203892AD201A85B04 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -1377,8 +1380,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = portab;
|
name = portab;
|
||||||
path = /Users/alex/Develop/ngircd/src;
|
path = ../src/portab;
|
||||||
refType = 0;
|
refType = 2;
|
||||||
};
|
};
|
||||||
F5F18133023EC63701A85B04 = {
|
F5F18133023EC63701A85B04 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -1443,6 +1446,13 @@
|
|||||||
//FA2
|
//FA2
|
||||||
//FA3
|
//FA3
|
||||||
//FA4
|
//FA4
|
||||||
|
FA0B193305060CB800A85B04 = {
|
||||||
|
fileEncoding = 5;
|
||||||
|
isa = PBXFileReference;
|
||||||
|
name = Platforms.txt;
|
||||||
|
path = ../doc/Platforms.txt;
|
||||||
|
refType = 2;
|
||||||
|
};
|
||||||
FA42C8AD03C0A00B00A85B04 = {
|
FA42C8AD03C0A00B00A85B04 = {
|
||||||
fileEncoding = 4;
|
fileEncoding = 4;
|
||||||
isa = PBXFileReference;
|
isa = PBXFileReference;
|
||||||
@@ -1503,7 +1513,8 @@
|
|||||||
);
|
);
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
name = tool;
|
name = tool;
|
||||||
refType = 4;
|
path = ../src;
|
||||||
|
refType = 2;
|
||||||
};
|
};
|
||||||
FA550F2A03D59C8200A85B04 = {
|
FA550F2A03D59C8200A85B04 = {
|
||||||
fileEncoding = 5;
|
fileEncoding = 5;
|
||||||
@@ -1550,93 +1561,6 @@
|
|||||||
settings = {
|
settings = {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
FA550F3103D59CB300A85B04 = {
|
|
||||||
children = (
|
|
||||||
FA550F3503D59CD800A85B04,
|
|
||||||
FA550F3403D59CD800A85B04,
|
|
||||||
FA550F3703D59CD800A85B04,
|
|
||||||
FA550F3203D59CD800A85B04,
|
|
||||||
FA550F3303D59CD800A85B04,
|
|
||||||
FA550F3603D59CD800A85B04,
|
|
||||||
FA550F3803D59CD800A85B04,
|
|
||||||
FA550F3903D59CD800A85B04,
|
|
||||||
FA550F3A03D59CD800A85B04,
|
|
||||||
FA550F3B03D59CD800A85B04,
|
|
||||||
);
|
|
||||||
isa = PBXGroup;
|
|
||||||
name = de;
|
|
||||||
refType = 4;
|
|
||||||
};
|
|
||||||
FA550F3203D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = CVS.txt;
|
|
||||||
path = ../doc/de/CVS.txt;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3303D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = FAQ.txt;
|
|
||||||
path = ../doc/de/FAQ.txt;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3403D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = INSTALL;
|
|
||||||
path = ../doc/de/INSTALL;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3503D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = Makefile.am;
|
|
||||||
path = ../doc/de/Makefile.am;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3603D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = Protocol.txt;
|
|
||||||
path = ../doc/de/Protocol.txt;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3703D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = README;
|
|
||||||
path = ../doc/de/README;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3803D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = "README-AUX.txt";
|
|
||||||
path = "../doc/de/README-AUX.txt";
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3903D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = "README-BeOS.txt";
|
|
||||||
path = "../doc/de/README-BeOS.txt";
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3A03D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = RFC.txt;
|
|
||||||
path = ../doc/de/RFC.txt;
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FA550F3B03D59CD800A85B04 = {
|
|
||||||
fileEncoding = 5;
|
|
||||||
isa = PBXFileReference;
|
|
||||||
name = "sample-ngircd.conf";
|
|
||||||
path = "../doc/de/sample-ngircd.conf";
|
|
||||||
refType = 2;
|
|
||||||
};
|
|
||||||
FAC0383C03BB318400A85B04 = {
|
FAC0383C03BB318400A85B04 = {
|
||||||
fileRef = F51044520297ABF80173DE11;
|
fileRef = F51044520297ABF80173DE11;
|
||||||
isa = PBXBuildFile;
|
isa = PBXBuildFile;
|
||||||
|
|||||||
13
NEWS
13
NEWS
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
ngIRCd - Next Generation IRC Server
|
ngIRCd - Next Generation IRC Server
|
||||||
|
|
||||||
(c)2001-2003 by Alexander Barton,
|
(c)2001-2004 by Alexander Barton,
|
||||||
alex@barton.de, http://www.barton.de/
|
alex@barton.de, http://www.barton.de/
|
||||||
|
|
||||||
ngIRCd is free software and published under the
|
ngIRCd is free software and published under the
|
||||||
@@ -10,6 +10,15 @@
|
|||||||
-- NEWS --
|
-- NEWS --
|
||||||
|
|
||||||
|
|
||||||
|
ngIRCd 0.7.5 (2003-07-11)
|
||||||
|
|
||||||
|
- New configuration variable "MaxConnectionsIP" to limit the number of
|
||||||
|
simultaneous connections from a single IP that the server will accept.
|
||||||
|
This configuration options lowers the risk of denial of service attacks
|
||||||
|
(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)
|
ngIRCd 0.7.1 (2003-07-18)
|
||||||
|
|
||||||
- Added support for GNU/Hurd.
|
- Added support for GNU/Hurd.
|
||||||
@@ -165,4 +174,4 @@ ngIRCd 0.0.1, 31.12.2001
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: NEWS,v 1.53.2.4 2003/07/18 20:54:47 alex Exp $
|
$Id: NEWS,v 1.53.2.6 2004/02/03 16:01:29 alex Exp $
|
||||||
|
|||||||
4
README
4
README
@@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
ngIRCd - Next Generation IRC Server
|
ngIRCd - Next Generation IRC Server
|
||||||
|
|
||||||
(c)2001-2003 by Alexander Barton,
|
(c)2001-2004 by Alexander Barton,
|
||||||
alex@barton.de, http://www.barton.de/
|
alex@barton.de, http://www.barton.de/
|
||||||
|
|
||||||
ngIRCd is free software and published under the
|
ngIRCd is free software and published under the
|
||||||
@@ -83,4 +83,4 @@ mail to: <alex@barton.de> or <alex@arthur.ath.cx>
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: README,v 1.17 2003/03/09 22:03:58 alex Exp $
|
$Id: README,v 1.17.2.1 2004/02/03 16:01:29 alex Exp $
|
||||||
|
|||||||
38
config.guess
vendored
38
config.guess
vendored
@@ -3,7 +3,7 @@
|
|||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2003-05-19'
|
timestamp='2003-10-07'
|
||||||
|
|
||||||
# This file is free software; you can redistribute it and/or modify it
|
# 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
|
# under the terms of the GNU General Public License as published by
|
||||||
@@ -106,6 +106,7 @@ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ;
|
|||||||
: ${TMPDIR=/tmp} ;
|
: ${TMPDIR=/tmp} ;
|
||||||
{ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
|
{ tmp=`(umask 077 && mktemp -d -q "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } ||
|
||||||
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
|
{ test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } ||
|
||||||
|
{ tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } ||
|
||||||
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
|
{ echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ;
|
||||||
dummy=$tmp/dummy ;
|
dummy=$tmp/dummy ;
|
||||||
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
|
tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ;
|
||||||
@@ -282,6 +283,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
# 1.2 uses "1.2" for uname -r.
|
# 1.2 uses "1.2" for uname -r.
|
||||||
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
Alpha*:OpenVMS:*:*)
|
||||||
|
echo alpha-hp-vms
|
||||||
|
exit 0 ;;
|
||||||
Alpha\ *:Windows_NT*:*)
|
Alpha\ *:Windows_NT*:*)
|
||||||
# How do we know it's Interix rather than the generic POSIX subsystem?
|
# How do we know it's Interix rather than the generic POSIX subsystem?
|
||||||
# Should we change UNAME_MACHINE based on the output of uname instead
|
# Should we change UNAME_MACHINE based on the output of uname instead
|
||||||
@@ -320,6 +324,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
|
|||||||
NILE*:*:*:dcosx)
|
NILE*:*:*:dcosx)
|
||||||
echo pyramid-pyramid-svr4
|
echo pyramid-pyramid-svr4
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
DRS?6000:unix:4.0:6*)
|
||||||
|
echo sparc-icl-nx6
|
||||||
|
exit 0 ;;
|
||||||
DRS?6000:UNIX_SV:4.2*:7*)
|
DRS?6000:UNIX_SV:4.2*:7*)
|
||||||
case `/usr/bin/uname -p` in
|
case `/usr/bin/uname -p` in
|
||||||
sparc) echo sparc-icl-nx7 && exit 0 ;;
|
sparc) echo sparc-icl-nx7 && exit 0 ;;
|
||||||
@@ -744,7 +751,7 @@ EOF
|
|||||||
*:BSD/OS:*:*)
|
*:BSD/OS:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
*:FreeBSD:*:*|*:GNU/FreeBSD:*:*)
|
*:FreeBSD:*:*)
|
||||||
# Determine whether the default compiler uses glibc.
|
# Determine whether the default compiler uses glibc.
|
||||||
eval $set_cc_for_build
|
eval $set_cc_for_build
|
||||||
sed 's/^ //' << EOF >$dummy.c
|
sed 's/^ //' << EOF >$dummy.c
|
||||||
@@ -756,7 +763,10 @@ EOF
|
|||||||
#endif
|
#endif
|
||||||
EOF
|
EOF
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
||||||
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
|
# GNU/KFreeBSD systems have a "k" prefix to indicate we are using
|
||||||
|
# FreeBSD's kernel, but not the complete OS.
|
||||||
|
case ${LIBC} in gnu) kernel_only='k' ;; esac
|
||||||
|
echo ${UNAME_MACHINE}-unknown-${kernel_only}freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`${LIBC:+-$LIBC}
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
i*:CYGWIN*:*)
|
i*:CYGWIN*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-cygwin
|
echo ${UNAME_MACHINE}-pc-cygwin
|
||||||
@@ -767,8 +777,8 @@ EOF
|
|||||||
i*:PW*:*)
|
i*:PW*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-pw32
|
echo ${UNAME_MACHINE}-pc-pw32
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
x86:Interix*:3*)
|
x86:Interix*:[34]*)
|
||||||
echo i586-pc-interix3
|
echo i586-pc-interix${UNAME_RELEASE}|sed -e 's/\..*//'
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
[345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*)
|
||||||
echo i${UNAME_MACHINE}-pc-mks
|
echo i${UNAME_MACHINE}-pc-mks
|
||||||
@@ -789,8 +799,13 @@ EOF
|
|||||||
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
*:GNU:*:*)
|
*:GNU:*:*)
|
||||||
|
# the GNU system
|
||||||
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
*:GNU/*:*:*)
|
||||||
|
# other systems with GNU libc and userland
|
||||||
|
echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
|
||||||
|
exit 0 ;;
|
||||||
i*86:Minix:*:*)
|
i*86:Minix:*:*)
|
||||||
echo ${UNAME_MACHINE}-pc-minix
|
echo ${UNAME_MACHINE}-pc-minix
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
@@ -878,6 +893,9 @@ EOF
|
|||||||
s390:Linux:*:* | s390x:Linux:*:*)
|
s390:Linux:*:* | s390x:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-ibm-linux
|
echo ${UNAME_MACHINE}-ibm-linux
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
sh64*:Linux:*:*)
|
||||||
|
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||||
|
exit 0 ;;
|
||||||
sh*:Linux:*:*)
|
sh*:Linux:*:*)
|
||||||
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
echo ${UNAME_MACHINE}-unknown-linux-gnu
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
@@ -935,6 +953,9 @@ EOF
|
|||||||
LIBC=gnuaout
|
LIBC=gnuaout
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef __dietlibc__
|
||||||
|
LIBC=dietlibc
|
||||||
|
#endif
|
||||||
EOF
|
EOF
|
||||||
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^LIBC=`
|
||||||
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
|
test x"${LIBC}" != x && echo "${UNAME_MACHINE}-pc-linux-${LIBC}" && exit 0
|
||||||
@@ -1036,7 +1057,7 @@ EOF
|
|||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
M68*:*:R3V[567]*:*)
|
M68*:*:R3V[567]*:*)
|
||||||
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
|
||||||
3[34]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
|
3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0)
|
||||||
OS_REL=''
|
OS_REL=''
|
||||||
test -r /etc/.relid \
|
test -r /etc/.relid \
|
||||||
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
|
||||||
@@ -1151,7 +1172,7 @@ EOF
|
|||||||
*:QNX:*:4*)
|
*:QNX:*:4*)
|
||||||
echo i386-pc-qnx
|
echo i386-pc-qnx
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
NSR-[DGKLNPTVW]:NONSTOP_KERNEL:*:*)
|
NSR-[DGKLNPTVWY]:NONSTOP_KERNEL:*:*)
|
||||||
echo nsr-tandem-nsk${UNAME_RELEASE}
|
echo nsr-tandem-nsk${UNAME_RELEASE}
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
*:NonStop-UX:*:*)
|
*:NonStop-UX:*:*)
|
||||||
@@ -1192,6 +1213,9 @@ EOF
|
|||||||
*:ITS:*:*)
|
*:ITS:*:*)
|
||||||
echo pdp10-unknown-its
|
echo pdp10-unknown-its
|
||||||
exit 0 ;;
|
exit 0 ;;
|
||||||
|
SEI:*:*:SEIUX)
|
||||||
|
echo mips-sei-seiux${UNAME_RELEASE}
|
||||||
|
exit 0 ;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
#echo '(No uname command or uname output not recognized.)' 1>&2
|
#echo '(No uname command or uname output not recognized.)' 1>&2
|
||||||
|
|||||||
46
config.sub
vendored
46
config.sub
vendored
@@ -3,7 +3,7 @@
|
|||||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||||
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
# 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||||
|
|
||||||
timestamp='2003-05-09'
|
timestamp='2003-10-07'
|
||||||
|
|
||||||
# This file is (in principle) common to ALL GNU software.
|
# This file is (in principle) common to ALL GNU software.
|
||||||
# The presence of a machine in this file suggests that SOME GNU software
|
# The presence of a machine in this file suggests that SOME GNU software
|
||||||
@@ -118,7 +118,7 @@ esac
|
|||||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||||
case $maybe_os in
|
case $maybe_os in
|
||||||
nto-qnx* | linux-gnu* | freebsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
nto-qnx* | linux-gnu* | linux-dietlibc | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*)
|
||||||
os=-$maybe_os
|
os=-$maybe_os
|
||||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||||
;;
|
;;
|
||||||
@@ -228,13 +228,14 @@ case $basic_machine in
|
|||||||
| a29k \
|
| a29k \
|
||||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||||
|
| am33_2.0 \
|
||||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
||||||
| clipper \
|
| c4x | clipper \
|
||||||
| d10v | d30v | dlx | dsp16xx \
|
| d10v | d30v | dlx | dsp16xx \
|
||||||
| fr30 | frv \
|
| fr30 | frv \
|
||||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||||
| i370 | i860 | i960 | ia64 \
|
| i370 | i860 | i960 | ia64 \
|
||||||
| ip2k \
|
| ip2k | iq2000 \
|
||||||
| m32r | m68000 | m68k | m88k | mcore \
|
| m32r | m68000 | m68k | m88k | mcore \
|
||||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||||
| mips16 \
|
| mips16 \
|
||||||
@@ -247,6 +248,7 @@ case $basic_machine in
|
|||||||
| mipsisa32 | mipsisa32el \
|
| mipsisa32 | mipsisa32el \
|
||||||
| mipsisa32r2 | mipsisa32r2el \
|
| mipsisa32r2 | mipsisa32r2el \
|
||||||
| mipsisa64 | mipsisa64el \
|
| mipsisa64 | mipsisa64el \
|
||||||
|
| mipsisa64r2 | mipsisa64r2el \
|
||||||
| mipsisa64sb1 | mipsisa64sb1el \
|
| mipsisa64sb1 | mipsisa64sb1el \
|
||||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||||
| mipstx39 | mipstx39el \
|
| mipstx39 | mipstx39el \
|
||||||
@@ -261,7 +263,7 @@ case $basic_machine in
|
|||||||
| sh64 | sh64le \
|
| sh64 | sh64le \
|
||||||
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
|
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
|
||||||
| strongarm \
|
| strongarm \
|
||||||
| tahoe | thumb | tic80 | tron \
|
| tahoe | thumb | tic4x | tic80 | tron \
|
||||||
| v850 | v850e \
|
| v850 | v850e \
|
||||||
| we32k \
|
| we32k \
|
||||||
| x86 | xscale | xstormy16 | xtensa \
|
| x86 | xscale | xstormy16 | xtensa \
|
||||||
@@ -304,7 +306,7 @@ case $basic_machine in
|
|||||||
| h8300-* | h8500-* \
|
| h8300-* | h8500-* \
|
||||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||||
| i*86-* | i860-* | i960-* | ia64-* \
|
| i*86-* | i860-* | i960-* | ia64-* \
|
||||||
| ip2k-* \
|
| ip2k-* | iq2000-* \
|
||||||
| m32r-* \
|
| m32r-* \
|
||||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||||
| m88110-* | m88k-* | mcore-* \
|
| m88110-* | m88k-* | mcore-* \
|
||||||
@@ -319,6 +321,7 @@ case $basic_machine in
|
|||||||
| mipsisa32-* | mipsisa32el-* \
|
| mipsisa32-* | mipsisa32el-* \
|
||||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||||
| mipsisa64-* | mipsisa64el-* \
|
| mipsisa64-* | mipsisa64el-* \
|
||||||
|
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||||
| mipstx39-* | mipstx39el-* \
|
| mipstx39-* | mipstx39el-* \
|
||||||
@@ -771,18 +774,24 @@ case $basic_machine in
|
|||||||
pentiumpro | p6 | 6x86 | athlon | athlon_*)
|
pentiumpro | p6 | 6x86 | athlon | athlon_*)
|
||||||
basic_machine=i686-pc
|
basic_machine=i686-pc
|
||||||
;;
|
;;
|
||||||
pentiumii | pentium2)
|
pentiumii | pentium2 | pentiumiii | pentium3)
|
||||||
basic_machine=i686-pc
|
basic_machine=i686-pc
|
||||||
;;
|
;;
|
||||||
|
pentium4)
|
||||||
|
basic_machine=i786-pc
|
||||||
|
;;
|
||||||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
||||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
pentiumii-* | pentium2-*)
|
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
||||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
;;
|
;;
|
||||||
|
pentium4-*)
|
||||||
|
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||||
|
;;
|
||||||
pn)
|
pn)
|
||||||
basic_machine=pn-gould
|
basic_machine=pn-gould
|
||||||
;;
|
;;
|
||||||
@@ -841,6 +850,10 @@ case $basic_machine in
|
|||||||
sb1el)
|
sb1el)
|
||||||
basic_machine=mipsisa64sb1el-unknown
|
basic_machine=mipsisa64sb1el-unknown
|
||||||
;;
|
;;
|
||||||
|
sei)
|
||||||
|
basic_machine=mips-sei
|
||||||
|
os=-seiux
|
||||||
|
;;
|
||||||
sequent)
|
sequent)
|
||||||
basic_machine=i386-sequent
|
basic_machine=i386-sequent
|
||||||
;;
|
;;
|
||||||
@@ -848,6 +861,9 @@ case $basic_machine in
|
|||||||
basic_machine=sh-hitachi
|
basic_machine=sh-hitachi
|
||||||
os=-hms
|
os=-hms
|
||||||
;;
|
;;
|
||||||
|
sh64)
|
||||||
|
basic_machine=sh64-unknown
|
||||||
|
;;
|
||||||
sparclite-wrs | simso-wrs)
|
sparclite-wrs | simso-wrs)
|
||||||
basic_machine=sparclite-wrs
|
basic_machine=sparclite-wrs
|
||||||
os=-vxworks
|
os=-vxworks
|
||||||
@@ -922,10 +938,6 @@ case $basic_machine in
|
|||||||
basic_machine=t90-cray
|
basic_machine=t90-cray
|
||||||
os=-unicos
|
os=-unicos
|
||||||
;;
|
;;
|
||||||
tic4x | c4x*)
|
|
||||||
basic_machine=tic4x-unknown
|
|
||||||
os=-coff
|
|
||||||
;;
|
|
||||||
tic54x | c54x*)
|
tic54x | c54x*)
|
||||||
basic_machine=tic54x-unknown
|
basic_machine=tic54x-unknown
|
||||||
os=-coff
|
os=-coff
|
||||||
@@ -1119,7 +1131,7 @@ case $os in
|
|||||||
| -aos* \
|
| -aos* \
|
||||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
| -hiux* | -386bsd* | -knetbsd* | -netbsd* | -openbsd* | -kfreebsd* | -freebsd* | -riscix* \
|
||||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||||
@@ -1131,7 +1143,7 @@ case $os in
|
|||||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||||
| -powermax* | -dnix*)
|
| -powermax* | -dnix* | -nx6 | -nx7 | -sei*)
|
||||||
# Remember, each alternative MUST END IN *, to match a version number.
|
# Remember, each alternative MUST END IN *, to match a version number.
|
||||||
;;
|
;;
|
||||||
-qnx*)
|
-qnx*)
|
||||||
@@ -1155,6 +1167,9 @@ case $os in
|
|||||||
-mac*)
|
-mac*)
|
||||||
os=`echo $os | sed -e 's|mac|macos|'`
|
os=`echo $os | sed -e 's|mac|macos|'`
|
||||||
;;
|
;;
|
||||||
|
-linux-dietlibc)
|
||||||
|
os=-linux-dietlibc
|
||||||
|
;;
|
||||||
-linux*)
|
-linux*)
|
||||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||||
;;
|
;;
|
||||||
@@ -1277,6 +1292,9 @@ case $basic_machine in
|
|||||||
arm*-semi)
|
arm*-semi)
|
||||||
os=-aout
|
os=-aout
|
||||||
;;
|
;;
|
||||||
|
c4x-* | tic4x-*)
|
||||||
|
os=-coff
|
||||||
|
;;
|
||||||
# This must come before the *-dec entry.
|
# This must come before the *-dec entry.
|
||||||
pdp10-*)
|
pdp10-*)
|
||||||
os=-tops20
|
os=-tops20
|
||||||
|
|||||||
31
configure.in
31
configure.in
@@ -8,13 +8,13 @@
|
|||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
# Please read the file COPYING, README and AUTHORS for more information.
|
# Please read the file COPYING, README and AUTHORS for more information.
|
||||||
#
|
#
|
||||||
# $Id: configure.in,v 1.89.2.10 2003/07/18 20:55:10 alex Exp $
|
# $Id: configure.in,v 1.89.2.16 2004/02/05 13:33:24 alex Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
# -- Initialisierung --
|
# -- Initialisierung --
|
||||||
|
|
||||||
AC_PREREQ(2.50)
|
AC_PREREQ(2.50)
|
||||||
AC_INIT(ngircd, 0.7.1)
|
AC_INIT(ngircd, 0.7.7)
|
||||||
AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
|
AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
|
||||||
AC_CANONICAL_TARGET
|
AC_CANONICAL_TARGET
|
||||||
AM_INIT_AUTOMAKE(1.6)
|
AM_INIT_AUTOMAKE(1.6)
|
||||||
@@ -26,9 +26,9 @@ AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
|
|||||||
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
|
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
|
||||||
AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
|
AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
|
||||||
AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
|
AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
|
||||||
AH_TEMPLATE([USE_SYSLOG], [Define if syslog should be used for logging])
|
AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
|
||||||
AH_TEMPLATE([USE_ZLIB], [Define if zlib compression should be enabled])
|
AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
|
||||||
AH_TEMPLATE([USE_TCPWRAP], [Define if TCP wrappers should be used])
|
AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
|
||||||
AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol 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([RENDEZVOUS], [Define if Rendezvous support should be included])
|
||||||
|
|
||||||
@@ -162,7 +162,7 @@ AC_ARG_WITH(syslog,
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
if test "$x_syslog_on" = "yes"; then
|
if test "$x_syslog_on" = "yes"; then
|
||||||
AC_DEFINE(USE_SYSLOG, 1)
|
AC_DEFINE(SYSLOG, 1)
|
||||||
AC_CHECK_HEADERS(syslog.h)
|
AC_CHECK_HEADERS(syslog.h)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -181,7 +181,7 @@ AC_ARG_WITH(zlib,
|
|||||||
]
|
]
|
||||||
)
|
)
|
||||||
if test "$x_zlib_on" = "yes"; then
|
if test "$x_zlib_on" = "yes"; then
|
||||||
AC_DEFINE(USE_ZLIB, 1)
|
AC_DEFINE(ZLIB, 1)
|
||||||
AC_CHECK_HEADERS(zlib.h)
|
AC_CHECK_HEADERS(zlib.h)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -198,7 +198,7 @@ AC_ARG_WITH(tcp-wrappers,
|
|||||||
ptr = hosts_access;
|
ptr = hosts_access;
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT(yes)
|
AC_MSG_RESULT(yes)
|
||||||
AC_DEFINE(USE_TCPWRAP, 1)
|
AC_DEFINE(TCPWRAP, 1)
|
||||||
x_tcpwrap_on=yes
|
x_tcpwrap_on=yes
|
||||||
],[
|
],[
|
||||||
AC_MSG_RESULT(no)
|
AC_MSG_RESULT(no)
|
||||||
@@ -271,7 +271,7 @@ if test "$GCC" = "yes"; then
|
|||||||
ansi=" -ansi"
|
ansi=" -ansi"
|
||||||
pedantic=" -pedantic"
|
pedantic=" -pedantic"
|
||||||
|
|
||||||
$CC --version | grep 20020420 > /dev/null 2>&1
|
$CC --version | grep 20020420 >/dev/null 2>&1
|
||||||
if test $? -eq 0; then
|
if test $? -eq 0; then
|
||||||
# Mac OS X (and Darwin?) ship with a slightly broken
|
# Mac OS X (and Darwin?) ship with a slightly broken
|
||||||
# prerelease of GCC 3.1 which don't like -pedantic:
|
# prerelease of GCC 3.1 which don't like -pedantic:
|
||||||
@@ -279,7 +279,16 @@ if test "$GCC" = "yes"; then
|
|||||||
pedantic=""
|
pedantic=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
uname | grep "CYGWIN" > /dev/null 2>&1
|
$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
|
if test $? -eq 0; then
|
||||||
# The include files of Cygwin don't like -ansi,
|
# The include files of Cygwin don't like -ansi,
|
||||||
# so we disable it:
|
# so we disable it:
|
||||||
@@ -287,7 +296,7 @@ if test "$GCC" = "yes"; then
|
|||||||
ansi=""
|
ansi=""
|
||||||
fi
|
fi
|
||||||
|
|
||||||
add_CFLAGS="-Wall -W${ansi}${pedantic} $CFLAGS $CFLAGS_ADD"
|
add_CFLAGS="-pipe -Wall -W${ansi}${pedantic} $CFLAGS $CFLAGS_ADD"
|
||||||
else
|
else
|
||||||
the_CFLAGS="$CFLAGS"
|
the_CFLAGS="$CFLAGS"
|
||||||
add_CFLAGS="$CFLAGS_ADD"
|
add_CFLAGS="$CFLAGS_ADD"
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
%define name ngircd
|
%define name ngircd
|
||||||
%define version 0.7.1
|
%define version 0.7.7
|
||||||
%define release 1
|
%define release 1
|
||||||
%define prefix %{_prefix}
|
%define prefix %{_prefix}
|
||||||
|
|
||||||
Summary: Next Generation Internet Relay Chat Daemon
|
Summary: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||||
Name: %{name}
|
Name: %{name}
|
||||||
Version: %{version}
|
Version: %{version}
|
||||||
Release: %{release}
|
Release: %{release}
|
||||||
@@ -15,17 +15,18 @@ Packager: Sean Reifschneider <jafo-rpms@tummy.com>
|
|||||||
BuildRoot: /var/tmp/%{name}-root
|
BuildRoot: /var/tmp/%{name}-root
|
||||||
|
|
||||||
%description
|
%description
|
||||||
ngIRCd is a free open source daemon for Internet Relay Chat (IRC),
|
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC),
|
||||||
developed under the GNU General Public License (GPL). It's written from
|
developed under the GNU General Public License (GPL). It's written from
|
||||||
scratch and is not based upon the original IRCd like many others.
|
scratch and is not based upon the original IRCd like many others.
|
||||||
|
|
||||||
Why should you use ngIRCd? Because ...
|
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.
|
||||||
|
|
||||||
* ... there are no problems with servers on changing or non-static IP
|
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||||
addresses.
|
mixed networks.
|
||||||
* ... there is a small and lean configuration file.
|
|
||||||
* ... there is a free, modern and open source C source code.
|
|
||||||
* ... it is still under active development.
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup
|
%setup
|
||||||
|
|||||||
5
debian/Makefile.am
vendored
5
debian/Makefile.am
vendored
@@ -8,10 +8,11 @@
|
|||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
# Please read the file COPYING, README and AUTHORS for more information.
|
# Please read the file COPYING, README and AUTHORS for more information.
|
||||||
#
|
#
|
||||||
# $Id: Makefile.am,v 1.1.2.1 2003/07/09 21:08:55 alex Exp $
|
# $Id: Makefile.am,v 1.1.2.2 2003/12/05 13:31:22 alex Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
EXTRA_DIST = changelog compat control copyright ngircd.init rules
|
EXTRA_DIST = rules changelog compat control copyright \
|
||||||
|
ngircd.init ngircd.postinst
|
||||||
|
|
||||||
maintainer-clean-local:
|
maintainer-clean-local:
|
||||||
rm -f Makefile Makefile.in
|
rm -f Makefile Makefile.in
|
||||||
|
|||||||
25
debian/changelog
vendored
25
debian/changelog
vendored
@@ -1,3 +1,28 @@
|
|||||||
|
ngircd (0.7.7-0ab1) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream version.
|
||||||
|
|
||||||
|
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 5 Feb 2004 14:11:08 +0100
|
||||||
|
|
||||||
|
ngircd (0.7.6-0ab1) unstable; urgency=medium
|
||||||
|
|
||||||
|
* New upstream version.
|
||||||
|
* Changed version numvering scheme of debian package.
|
||||||
|
|
||||||
|
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 5 Dec 2003 14:26:41 +0100
|
||||||
|
|
||||||
|
ngircd (0.7.5-0.2ab) unstable; urgency=low
|
||||||
|
|
||||||
|
* Updated RPM and Debian package description and configuration.
|
||||||
|
|
||||||
|
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 29 Nov 2003 21:24:32 +0100
|
||||||
|
|
||||||
|
ngircd (0.7.5-0.1ab) unstable; urgency=low
|
||||||
|
|
||||||
|
* New upstream version.
|
||||||
|
|
||||||
|
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 7 Nov 2003 21:59:58 +0100
|
||||||
|
|
||||||
ngircd (0.7.1-0.1ab) unstable; urgency=low
|
ngircd (0.7.1-0.1ab) unstable; urgency=low
|
||||||
|
|
||||||
* New upstream version :-)
|
* New upstream version :-)
|
||||||
|
|||||||
10
debian/control
vendored
10
debian/control
vendored
@@ -9,14 +9,14 @@ Package: ngircd
|
|||||||
Architecture: any
|
Architecture: any
|
||||||
Depends: ${shlibs:Depends} ${misc:Depends}
|
Depends: ${shlibs:Depends} ${misc:Depends}
|
||||||
Description: A lightweight daemon for the Internet Relay Chat (IRC)
|
Description: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||||
The ngIRCd is a free open source daemon for Internet Relay Chat (IRC),
|
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
|
||||||
developed under the GNU General Public License (GPL). It's written from
|
network. It is written from scratch and is not based upon the original
|
||||||
scratch and is not based upon the original IRCd like many others.
|
IRCd like many others.
|
||||||
.
|
.
|
||||||
Advantages:
|
Advantages:
|
||||||
- no problems with servers on changing or non-static IP addresses.
|
- no problems with servers using changing/non-static IP addresses.
|
||||||
- small and lean configuration file.
|
- small and lean configuration file.
|
||||||
- free, modern and open source C source code.
|
- free, modern and open source C code.
|
||||||
- still under active development.
|
- still under active development.
|
||||||
.
|
.
|
||||||
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||||
|
|||||||
2
debian/copyright
vendored
2
debian/copyright
vendored
@@ -3,7 +3,7 @@ Tue, 20 May 2003 15:47:40 +0200.
|
|||||||
|
|
||||||
It was downloaded from ftp://Arthur.Ath.CX/pub/Users/alex/ngircd/
|
It was downloaded from ftp://Arthur.Ath.CX/pub/Users/alex/ngircd/
|
||||||
|
|
||||||
Upstream Author(s): Alexander Barton <alex@barton.de>
|
Upstream Author: Alexander Barton <alex@barton.de>
|
||||||
|
|
||||||
This software is copyright (c) 1999-2003 by Alexander Barton.
|
This software is copyright (c) 1999-2003 by Alexander Barton.
|
||||||
|
|
||||||
|
|||||||
12
debian/ngircd.postinst
vendored
12
debian/ngircd.postinst
vendored
@@ -1,7 +1,7 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
#
|
#
|
||||||
# Debian post-installation script
|
# Debian post-installation script
|
||||||
# $Id: ngircd.postinst,v 1.1.2.3 2003/07/12 22:57:00 alex Exp $
|
# $Id: ngircd.postinst,v 1.1.2.4 2003/11/29 20:29:02 alex Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
if [ -f /etc/ngircd/ngircd.conf ]; then
|
if [ -f /etc/ngircd/ngircd.conf ]; then
|
||||||
@@ -9,14 +9,6 @@ if [ -f /etc/ngircd/ngircd.conf ]; then
|
|||||||
chmod o= /etc/ngircd/ngircd.conf
|
chmod o= /etc/ngircd/ngircd.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -x "/etc/init.d/ngircd" ]; then
|
#DEBHELPER#
|
||||||
# setup init scripts and startup ngircd
|
|
||||||
update-rc.d ngircd defaults >/dev/null
|
|
||||||
if [ -x /usr/sbin/invoke-rc.d ]; then
|
|
||||||
invoke-rc.d ngircd start
|
|
||||||
else
|
|
||||||
/etc/init.d/ngircd start
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
|
|
||||||
# -eof-
|
# -eof-
|
||||||
|
|||||||
32
debian/rules
vendored
32
debian/rules
vendored
@@ -1,7 +1,17 @@
|
|||||||
#!/usr/bin/make -f
|
#!/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
|
# debian/rules for ngIRCd
|
||||||
#
|
#
|
||||||
# $Id: rules,v 1.1.2.1 2003/07/09 21:12:00 alex Exp $
|
# $Id: rules,v 1.1.2.2 2003/11/29 20:29:02 alex Exp $
|
||||||
#
|
#
|
||||||
# Based on the sample debian/rules that uses debhelper,
|
# Based on the sample debian/rules that uses debhelper,
|
||||||
# GNU copyright 1997 to 1999 by Joey Hess.
|
# GNU copyright 1997 to 1999 by Joey Hess.
|
||||||
@@ -12,8 +22,8 @@
|
|||||||
|
|
||||||
# These are used for cross-compiling and for saving the configure script
|
# These are used for cross-compiling and for saving the configure script
|
||||||
# from having to guess our platform (since we know it already)
|
# from having to guess our platform (since we know it already)
|
||||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
||||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
||||||
|
|
||||||
CFLAGS = -Wall -g
|
CFLAGS = -Wall -g
|
||||||
|
|
||||||
@@ -28,14 +38,17 @@ endif
|
|||||||
|
|
||||||
config.status: configure
|
config.status: configure
|
||||||
dh_testdir
|
dh_testdir
|
||||||
|
|
||||||
# Add here commands to configure the package.
|
# Add here commands to configure the package.
|
||||||
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
|
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
|
||||||
--prefix=/usr --sysconfdir=/etc/ngircd --mandir=\$${prefix}/share/man \
|
--prefix=/usr \
|
||||||
|
--sysconfdir=/etc/ngircd \
|
||||||
|
--mandir=\$${prefix}/share/man \
|
||||||
--with-syslog --with-zlib
|
--with-syslog --with-zlib
|
||||||
|
|
||||||
build: build-stamp
|
build: build-stamp
|
||||||
|
|
||||||
build-stamp: config.status
|
build-stamp: config.status
|
||||||
dh_testdir
|
dh_testdir
|
||||||
|
|
||||||
# Add here commands to compile the package.
|
# Add here commands to compile the package.
|
||||||
@@ -50,6 +63,7 @@ clean:
|
|||||||
|
|
||||||
# Add here commands to clean up after the build process.
|
# Add here commands to clean up after the build process.
|
||||||
-$(MAKE) distclean
|
-$(MAKE) distclean
|
||||||
|
|
||||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
||||||
cp -f /usr/share/misc/config.sub config.sub
|
cp -f /usr/share/misc/config.sub config.sub
|
||||||
endif
|
endif
|
||||||
@@ -66,11 +80,12 @@ install: build
|
|||||||
|
|
||||||
# Add here commands to install the package into debian/ngircd.
|
# Add here commands to install the package into debian/ngircd.
|
||||||
$(MAKE) install DESTDIR=$(CURDIR)/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.
|
# Build architecture-independent files here.
|
||||||
binary-indep: build install
|
binary-indep: build install
|
||||||
# We have nothing to do by default.
|
# We have nothing to do by default.
|
||||||
|
|
||||||
# Build architecture-dependent files here.
|
# Build architecture-dependent files here.
|
||||||
binary-arch: build install
|
binary-arch: build install
|
||||||
@@ -81,7 +96,7 @@ binary-arch: build install
|
|||||||
dh_installinit
|
dh_installinit
|
||||||
dh_strip
|
dh_strip
|
||||||
dh_compress
|
dh_compress
|
||||||
dh_fixperms -Xetc/ngircd.conf
|
dh_fixperms
|
||||||
dh_installdeb
|
dh_installdeb
|
||||||
dh_shlibdeps
|
dh_shlibdeps
|
||||||
dh_gencontrol
|
dh_gencontrol
|
||||||
@@ -89,6 +104,7 @@ binary-arch: build install
|
|||||||
dh_builddeb
|
dh_builddeb
|
||||||
|
|
||||||
binary: binary-indep binary-arch
|
binary: binary-indep binary-arch
|
||||||
|
|
||||||
.PHONY: build clean binary-indep binary-arch binary install
|
.PHONY: build clean binary-indep binary-arch binary install
|
||||||
|
|
||||||
# -eof-
|
# -eof-
|
||||||
|
|||||||
@@ -22,9 +22,10 @@ in all details. But because the ngIRCd should be a fully compatible
|
|||||||
replacement for this server ("ircd") it tries to emulate these differences.
|
replacement for this server ("ircd") it tries to emulate these differences.
|
||||||
|
|
||||||
If you don't like this behavior please ./configure the ngIRCd using the
|
If you don't like this behavior please ./configure the ngIRCd using the
|
||||||
"--enable-strict-rfc" command line option. But please note: not all IRC
|
"--enable-strict-rfc" command line option. But keep in mind: not all IRC
|
||||||
clients are compatible with such an server, some can't even connect at all!
|
clients are compatible with a server configured that way, some can't even
|
||||||
Therefore this option isn't desired for "normal operation".
|
connect at all! Therefore this option usually isn't desired for "normal
|
||||||
|
server operation".
|
||||||
|
|
||||||
|
|
||||||
II. The IRC+ Protocol
|
II. The IRC+ Protocol
|
||||||
@@ -35,8 +36,8 @@ as defined in RFC 2810-2813. This enhanced protocol is named "IRC+". It is
|
|||||||
backwards compatible to the "plain" IRC protocol and will only be used by
|
backwards compatible to the "plain" IRC protocol and will only be used by
|
||||||
the ngIRCd if it detects that the peer supports it as well.
|
the ngIRCd if it detects that the peer supports it as well.
|
||||||
|
|
||||||
The "PASSV" command is used to detect the protocol and peer versions (see
|
The "PASS" command is used to detect the protocol and peer versions see
|
||||||
RFC 2813, section 4.1.1).
|
RFC 2813 (section 4.1.1) and below.
|
||||||
|
|
||||||
|
|
||||||
II.1 Register new server link
|
II.1 Register new server link
|
||||||
@@ -57,9 +58,11 @@ The following optional(!) 10 bytes contain an implementation-dependent
|
|||||||
version number. Servers supporting the IRC+ protocol as defined in this
|
version number. Servers supporting the IRC+ protocol as defined in this
|
||||||
document provide the string "-IRC+" here.
|
document provide the string "-IRC+" here.
|
||||||
|
|
||||||
|
Example for <version>: "0210-IRC+".
|
||||||
|
|
||||||
<flags> consists of two parts separated with the character "|" and is at
|
<flags> consists of two parts separated with the character "|" and is at
|
||||||
most 100 bytes long. The first part contains the name of the implementation
|
most 100 bytes long. The first part contains the name of the implementation
|
||||||
(ngIRCd sets this to "ngIRCd", the original ircd to "IRC", e.g.). The second
|
(ngIRCd sets this to "ngircd", the original ircd to "IRC", e.g.). The second
|
||||||
part is implementation-dependent and should only be parsed if the peer
|
part is implementation-dependent and should only be parsed if the peer
|
||||||
supports the IRC+ protocol as well. In this case the following syntax is
|
supports the IRC+ protocol as well. In this case the following syntax is
|
||||||
used: "<serverversion>[:<serverflags>]".
|
used: "<serverversion>[:<serverflags>]".
|
||||||
@@ -68,15 +71,19 @@ used: "<serverversion>[:<serverflags>]".
|
|||||||
number, <serverflags> indicates the supported IRC+ protocol extensions (and
|
number, <serverflags> indicates the supported IRC+ protocol extensions (and
|
||||||
may be empty!).
|
may be empty!).
|
||||||
|
|
||||||
The optional parameter <options> is used to propagate server options as
|
|
||||||
defined in RFC 2813, section 4.1.1.
|
|
||||||
|
|
||||||
The following <serverflags> are defined at the moment:
|
The following <serverflags> are defined at the moment:
|
||||||
|
|
||||||
|
- C: The server supports the CHANINFO command.
|
||||||
|
|
||||||
- o: IRC operators are allowed to change channel- and channel-user-modes
|
- o: IRC operators are allowed to change channel- and channel-user-modes
|
||||||
even if they aren't channel-operator of the affected channel.
|
even if they aren't channel-operator of the affected channel.
|
||||||
|
|
||||||
- C: The server supports the CHANINFO command.
|
- Z: Compressed server links are supported by the server.
|
||||||
|
|
||||||
|
Example for a complete <flags> string: "ngircd|0.7.5:CZ".
|
||||||
|
|
||||||
|
The optional parameter <options> is used to propagate server options as
|
||||||
|
defined in RFC 2813, section 4.1.1.
|
||||||
|
|
||||||
|
|
||||||
II.2 Exchange channel-modes, topics, and persistent channels
|
II.2 Exchange channel-modes, topics, and persistent channels
|
||||||
@@ -104,4 +111,4 @@ channel mode). In this case <limit> should be "0".
|
|||||||
|
|
||||||
|
|
||||||
--
|
--
|
||||||
$Id: Protocol.txt,v 1.9.2.1 2003/04/29 13:42:24 alex Exp $
|
$Id: Protocol.txt,v 1.9.2.2 2003/12/08 14:24:13 alex Exp $
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
# $Id: sample-ngircd.conf,v 1.20.2.2 2003/04/29 12:37:17 alex Exp $
|
# $Id: sample-ngircd.conf,v 1.20.2.4 2003/12/19 14:30:49 alex Exp $
|
||||||
|
|
||||||
#
|
#
|
||||||
# This is a sample configuration file for the ngIRCd, which must adept to
|
# This is a sample configuration file for the ngIRCd, which must be adepted
|
||||||
# the local preferences and needs.
|
# to the local preferences and needs.
|
||||||
#
|
#
|
||||||
# Comments are started with "#" or ";".
|
# Comments are started with "#" or ";".
|
||||||
#
|
#
|
||||||
# Author: Alexander Barton, <alex@barton.de>
|
# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
|
||||||
# Initial translation by Ilja Osthoff, <ilja@glide.ath.cx>
|
# server interpreted the configuration file as expected!
|
||||||
#
|
#
|
||||||
|
|
||||||
[Global]
|
[Global]
|
||||||
@@ -17,7 +17,7 @@
|
|||||||
# on which the server should be listening.
|
# on which the server should be listening.
|
||||||
|
|
||||||
# Server name in the IRC network, must contain at least one dot
|
# Server name in the IRC network, must contain at least one dot
|
||||||
# (".") and be unique in the IRC network.
|
# (".") and be unique in the IRC network. Required!
|
||||||
Name = irc.the.net
|
Name = irc.the.net
|
||||||
|
|
||||||
# Info text of the server. This will be shown by WHOIS and
|
# Info text of the server. This will be shown by WHOIS and
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
;Password = abc
|
;Password = abc
|
||||||
|
|
||||||
# Information about the server and the administrator, used by the
|
# Information about the server and the administrator, used by the
|
||||||
# ADMIN command.
|
# ADMIN command. Not required by server but by RFC!
|
||||||
;AdminInfo1 = Description
|
;AdminInfo1 = Description
|
||||||
;AdminInfo2 = Location
|
;AdminInfo2 = Location
|
||||||
;AdminEMail = admin@irc.server
|
;AdminEMail = admin@irc.server
|
||||||
@@ -37,6 +37,10 @@
|
|||||||
# one port, separated with ";". (Default: 6667)
|
# one port, separated with ";". (Default: 6667)
|
||||||
;Ports = 6667, 6668, 66694
|
;Ports = 6667, 6668, 66694
|
||||||
|
|
||||||
|
# IP address on which the server should listen. (Default: empty,
|
||||||
|
# so the server listens on all IP addresses of the system)
|
||||||
|
;Listen = 1.2.3.4
|
||||||
|
|
||||||
# Text file with the "message of the day" (MOTD). This message will
|
# Text file with the "message of the day" (MOTD). This message will
|
||||||
# be shown to all users connecting to the server:
|
# be shown to all users connecting to the server:
|
||||||
;MotdFile = /usr/local/etc/ngircd.motd
|
;MotdFile = /usr/local/etc/ngircd.motd
|
||||||
@@ -73,6 +77,10 @@
|
|||||||
# to accept (<=0: unlimited):
|
# to accept (<=0: unlimited):
|
||||||
;MaxConnections = -1
|
;MaxConnections = -1
|
||||||
|
|
||||||
|
# Maximum number of simultaneous connections from a single IP address
|
||||||
|
# the server will accept (<=0: unlimited):
|
||||||
|
;MaxConnectionsIP = 5
|
||||||
|
|
||||||
# Maximum number of channels a user can be member of (<=0: no limit):
|
# Maximum number of channels a user can be member of (<=0: no limit):
|
||||||
;MaxJoins = 10
|
;MaxJoins = 10
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
.\"
|
.\"
|
||||||
.\" $Id: ngircd.conf.5,v 1.9.2.1 2003/07/18 20:48:20 alex Exp $
|
.\" $Id: ngircd.conf.5,v 1.9.2.2 2003/11/07 20:51:10 alex Exp $
|
||||||
.\"
|
.\"
|
||||||
.TH ngircd.conf 5 "Mai 2003" ngircd "ngIRCd Manual"
|
.TH ngircd.conf 5 "Mai 2003" ngircd "ngIRCd Manual"
|
||||||
.SH NAME
|
.SH NAME
|
||||||
@@ -67,6 +67,10 @@ command.
|
|||||||
Ports on which the server should listen. There may be more than one port,
|
Ports on which the server should listen. There may be more than one port,
|
||||||
separated with ';'. Default: 6667.
|
separated with ';'. Default: 6667.
|
||||||
.TP
|
.TP
|
||||||
|
\fBListen\fR
|
||||||
|
The ip address on which the server should listen. Default is empty, so
|
||||||
|
the server listens on all configured ip addresses and interfaces.
|
||||||
|
.TP
|
||||||
\fBMotdFile\fR
|
\fBMotdFile\fR
|
||||||
Text file with the "message of the day" (MOTD). This message will be shown
|
Text file with the "message of the day" (MOTD). This message will be shown
|
||||||
to all users connecting to the server.
|
to all users connecting to the server.
|
||||||
@@ -114,6 +118,11 @@ not(!) channel-operators? Default: no.
|
|||||||
Maximum number of simultaneous connection the server is allowed to accept
|
Maximum number of simultaneous connection the server is allowed to accept
|
||||||
(<=0: unlimited). Default: -1.
|
(<=0: unlimited). Default: -1.
|
||||||
.TP
|
.TP
|
||||||
|
\fBMaxConnectionsIP\fR
|
||||||
|
Maximum number of simultaneous connections from a single IP address that
|
||||||
|
the server will accept (<=0: unlimited). This configuration options lowers
|
||||||
|
the risk of denial of service attacks (DoS). Default: 5.
|
||||||
|
.TP
|
||||||
\fBMaxJoins\fR
|
\fBMaxJoins\fR
|
||||||
Maximum number of channels a user can be member of (<=0: no limit).
|
Maximum number of channels a user can be member of (<=0: no limit).
|
||||||
Default: 10.
|
Default: 10.
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
# (at your option) any later version.
|
# (at your option) any later version.
|
||||||
# Please read the file COPYING, README and AUTHORS for more information.
|
# Please read the file COPYING, README and AUTHORS for more information.
|
||||||
#
|
#
|
||||||
# $Id: Makefile.am,v 1.39.2.1 2003/07/18 20:49:05 alex Exp $
|
# $Id: Makefile.am,v 1.39.2.3 2003/12/04 14:13:42 alex Exp $
|
||||||
#
|
#
|
||||||
|
|
||||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||||
@@ -63,6 +63,10 @@ lint:
|
|||||||
|
|
||||||
ngircd.c: cvs-version.h
|
ngircd.c: cvs-version.h
|
||||||
|
|
||||||
|
irc-login.c: cvs-version.h
|
||||||
|
|
||||||
|
irc-info.c: cvs-version.h
|
||||||
|
|
||||||
cvs-version.h: cvs-date
|
cvs-version.h: cvs-date
|
||||||
|
|
||||||
cvs-date:
|
cvs-date:
|
||||||
@@ -71,7 +75,8 @@ cvs-date:
|
|||||||
| $(AWK) "{ print \$$9 }" | sort | tail -1 \
|
| $(AWK) "{ print \$$9 }" | sort | tail -1 \
|
||||||
| sed -e "s/\//-/g" )\"" > cvs-version.new \
|
| sed -e "s/\//-/g" )\"" > cvs-version.new \
|
||||||
|| echo "" > cvs-version.new
|
|| echo "" > cvs-version.new
|
||||||
diff cvs-version.h cvs-version.new || cp cvs-version.new cvs-version.h
|
diff cvs-version.h cvs-version.new 2>/dev/null \
|
||||||
|
|| cp cvs-version.new cvs-version.h
|
||||||
|
|
||||||
TESTS = check-version check-help
|
TESTS = check-version check-help
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: channel.c,v 1.42 2002/12/30 17:15:42 alex Exp $";
|
static char UNUSED id[] = "$Id: channel.c,v 1.42.2.1 2003/11/07 20:51:10 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -669,7 +669,7 @@ Channel_Write( CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text )
|
|||||||
{
|
{
|
||||||
BOOLEAN is_member, has_voice, is_op, ok;
|
BOOLEAN is_member, has_voice, is_op, ok;
|
||||||
|
|
||||||
/* Okay, Ziel ist ein Channel */
|
/* Okay, target is a channel */
|
||||||
is_member = has_voice = is_op = FALSE;
|
is_member = has_voice = is_op = FALSE;
|
||||||
if( Channel_IsMemberOf( Chan, From ))
|
if( Channel_IsMemberOf( Chan, From ))
|
||||||
{
|
{
|
||||||
@@ -678,14 +678,21 @@ Channel_Write( CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text )
|
|||||||
if( strchr( Channel_UserModes( Chan, From ), 'o' )) is_op = TRUE;
|
if( strchr( Channel_UserModes( Chan, From ), 'o' )) is_op = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* pruefen, ob Client in Channel schreiben darf */
|
/* Check weather client is allowed to write to channel */
|
||||||
ok = TRUE;
|
ok = TRUE;
|
||||||
if( strchr( Channel_Modes( Chan ), 'n' ) && ( ! is_member )) ok = FALSE;
|
if( strchr( Channel_Modes( Chan ), 'n' ) && ( ! is_member )) ok = FALSE;
|
||||||
if( strchr( Channel_Modes( Chan ), 'm' ) && ( ! is_op ) && ( ! has_voice )) ok = FALSE;
|
if( strchr( Channel_Modes( Chan ), 'm' ) && ( ! is_op ) && ( ! has_voice )) ok = FALSE;
|
||||||
|
|
||||||
|
/* Is the client banned? */
|
||||||
|
if( Lists_CheckBanned( From, Chan ))
|
||||||
|
{
|
||||||
|
/* Client is banned, bus is he channel operator or has voice? */
|
||||||
|
if(( ! has_voice ) && ( ! is_op )) ok = FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
if( ! ok ) return IRC_WriteStrClient( From, ERR_CANNOTSENDTOCHAN_MSG, Client_ID( From ), Channel_Name( Chan ));
|
if( ! ok ) return IRC_WriteStrClient( From, ERR_CANNOTSENDTOCHAN_MSG, Client_ID( From ), Channel_Name( Chan ));
|
||||||
|
|
||||||
/* Text senden */
|
/* Send text */
|
||||||
if( Client_Conn( From ) > NONE ) Conn_UpdateIdle( Client_Conn( From ));
|
if( Client_Conn( From ) > NONE ) Conn_UpdateIdle( Client_Conn( From ));
|
||||||
return IRC_WriteStrChannelPrefix( Client, Chan, From, TRUE, "PRIVMSG %s :%s", Channel_Name( Chan ), Text );
|
return IRC_WriteStrChannelPrefix( Client, Chan, From, TRUE, "PRIVMSG %s :%s", Channel_Name( Chan ), Text );
|
||||||
} /* Channel_Write */
|
} /* Channel_Write */
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: conf.c,v 1.57.2.2 2003/04/29 12:37:18 alex Exp $";
|
static char UNUSED id[] = "$Id: conf.c,v 1.57.2.4 2003/12/19 14:30:49 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -120,6 +120,7 @@ Conf_Test( VOID )
|
|||||||
printf( "%u", Conf_ListenPorts[i] );
|
printf( "%u", Conf_ListenPorts[i] );
|
||||||
}
|
}
|
||||||
puts( "" );
|
puts( "" );
|
||||||
|
printf( " Listen = %s\n", Conf_ListenAddress );
|
||||||
pwd = getpwuid( Conf_UID );
|
pwd = getpwuid( Conf_UID );
|
||||||
if( pwd ) printf( " ServerUID = %s\n", pwd->pw_name );
|
if( pwd ) printf( " ServerUID = %s\n", pwd->pw_name );
|
||||||
else printf( " ServerUID = %ld\n", (LONG)Conf_UID );
|
else printf( " ServerUID = %ld\n", (LONG)Conf_UID );
|
||||||
@@ -132,6 +133,8 @@ Conf_Test( VOID )
|
|||||||
printf( " OperCanUseMode = %s\n", Conf_OperCanMode == TRUE ? "yes" : "no" );
|
printf( " OperCanUseMode = %s\n", Conf_OperCanMode == TRUE ? "yes" : "no" );
|
||||||
if( Conf_MaxConnections > 0 ) printf( " MaxConnections = %ld\n", Conf_MaxConnections );
|
if( Conf_MaxConnections > 0 ) printf( " MaxConnections = %ld\n", Conf_MaxConnections );
|
||||||
else printf( " MaxConnections = -1\n" );
|
else printf( " MaxConnections = -1\n" );
|
||||||
|
if( Conf_MaxConnectionsIP > 0 ) printf( " MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP );
|
||||||
|
else printf( " MaxConnectionsIP = -1\n" );
|
||||||
if( Conf_MaxJoins > 0 ) printf( " MaxJoins = %d\n", Conf_MaxJoins );
|
if( Conf_MaxJoins > 0 ) printf( " MaxJoins = %d\n", Conf_MaxJoins );
|
||||||
else printf( " MaxJoins = -1\n" );
|
else printf( " MaxJoins = -1\n" );
|
||||||
puts( "" );
|
puts( "" );
|
||||||
@@ -340,6 +343,7 @@ Set_Defaults( BOOLEAN InitServers )
|
|||||||
strlcat( Conf_MotdFile, MOTD_FILE, sizeof( Conf_MotdFile ));
|
strlcat( Conf_MotdFile, MOTD_FILE, sizeof( Conf_MotdFile ));
|
||||||
|
|
||||||
Conf_ListenPorts_Count = 0;
|
Conf_ListenPorts_Count = 0;
|
||||||
|
strcpy( Conf_ListenAddress, "" );
|
||||||
|
|
||||||
Conf_UID = Conf_GID = 0;
|
Conf_UID = Conf_GID = 0;
|
||||||
|
|
||||||
@@ -354,6 +358,7 @@ Set_Defaults( BOOLEAN InitServers )
|
|||||||
Conf_OperCanMode = FALSE;
|
Conf_OperCanMode = FALSE;
|
||||||
|
|
||||||
Conf_MaxConnections = -1;
|
Conf_MaxConnections = -1;
|
||||||
|
Conf_MaxConnectionsIP = 5;
|
||||||
Conf_MaxJoins = 10;
|
Conf_MaxJoins = 10;
|
||||||
|
|
||||||
/* Initialize server configuration structures */
|
/* Initialize server configuration structures */
|
||||||
@@ -689,6 +694,16 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg )
|
|||||||
Conf_MaxConnections = atol( Arg );
|
Conf_MaxConnections = atol( Arg );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if( strcasecmp( Var, "MaxConnectionsIP" ) == 0 )
|
||||||
|
{
|
||||||
|
/* 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 );
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
Conf_MaxConnectionsIP = atoi( Arg );
|
||||||
|
return;
|
||||||
|
}
|
||||||
if( strcasecmp( Var, "MaxJoins" ) == 0 )
|
if( strcasecmp( Var, "MaxJoins" ) == 0 )
|
||||||
{
|
{
|
||||||
/* Maximum number of channels a user can join. Values <= 0 are equal to "no limit". */
|
/* Maximum number of channels a user can join. Values <= 0 are equal to "no limit". */
|
||||||
@@ -699,6 +714,15 @@ Handle_GLOBAL( INT Line, CHAR *Var, CHAR *Arg )
|
|||||||
Conf_MaxJoins = atoi( Arg );
|
Conf_MaxJoins = atoi( Arg );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if( strcasecmp( Var, "Listen" ) == 0 )
|
||||||
|
{
|
||||||
|
/* IP-Address to bind sockets */
|
||||||
|
if( strlcpy( Conf_ListenAddress, Arg, sizeof( Conf_ListenAddress )) >= sizeof( Conf_ListenAddress ))
|
||||||
|
{
|
||||||
|
Config_Error( LOG_WARNING, "%s, line %d: Value of \"Listen\" too long!", NGIRCd_ConfFile, Line );
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Config_Error( LOG_ERR, "%s, line %d (section \"Global\"): Unknown variable \"%s\"!", NGIRCd_ConfFile, Line, Var );
|
Config_Error( LOG_ERR, "%s, line %d (section \"Global\"): Unknown variable \"%s\"!", NGIRCd_ConfFile, Line, Var );
|
||||||
} /* Handle_GLOBAL */
|
} /* Handle_GLOBAL */
|
||||||
@@ -830,7 +854,7 @@ Validate_Config( BOOLEAN Configtest )
|
|||||||
if( ! Conf_ServerName[0] )
|
if( ! Conf_ServerName[0] )
|
||||||
{
|
{
|
||||||
/* No server name configured! */
|
/* No server name configured! */
|
||||||
Config_Error( LOG_ALERT, "No server name configured in \"%s\" ('ServerName')!", NGIRCd_ConfFile );
|
Config_Error( LOG_ALERT, "No server name configured in \"%s\" (section 'Global': 'Name')!", NGIRCd_ConfFile );
|
||||||
if( ! Configtest )
|
if( ! Configtest )
|
||||||
{
|
{
|
||||||
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
|
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
|
||||||
@@ -838,10 +862,10 @@ Validate_Config( BOOLEAN Configtest )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if( ! strchr( Conf_ServerName, '.' ))
|
if( Conf_ServerName[0] && ! strchr( Conf_ServerName, '.' ))
|
||||||
{
|
{
|
||||||
/* No dot in server name! */
|
/* No dot in server name! */
|
||||||
Config_Error( LOG_ALERT, "Invalid server name configured in \"%s\" ('ServerName'): Dot missing!", NGIRCd_ConfFile );
|
Config_Error( LOG_ALERT, "Invalid server name configured in \"%s\" (section 'Global': 'Name'): Dot missing!", NGIRCd_ConfFile );
|
||||||
if( ! Configtest )
|
if( ! Configtest )
|
||||||
{
|
{
|
||||||
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
|
Config_Error( LOG_ALERT, "%s exiting due to fatal errors!", PACKAGE_NAME );
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: conf.h,v 1.26 2002/12/31 16:12:50 alex Exp $
|
* $Id: conf.h,v 1.26.2.1 2003/11/07 20:51:11 alex Exp $
|
||||||
*
|
*
|
||||||
* Configuration management (header)
|
* Configuration management (header)
|
||||||
*/
|
*/
|
||||||
@@ -76,6 +76,9 @@ GLOBAL CHAR Conf_MotdFile[FNAME_LEN];
|
|||||||
GLOBAL UINT Conf_ListenPorts[MAX_LISTEN_PORTS];
|
GLOBAL UINT Conf_ListenPorts[MAX_LISTEN_PORTS];
|
||||||
GLOBAL INT Conf_ListenPorts_Count;
|
GLOBAL INT Conf_ListenPorts_Count;
|
||||||
|
|
||||||
|
/* Address to which the socket should be bound or empty (=all) */
|
||||||
|
GLOBAL CHAR Conf_ListenAddress[16];
|
||||||
|
|
||||||
/* User and group ID the server should run with */
|
/* User and group ID the server should run with */
|
||||||
GLOBAL UINT Conf_UID;
|
GLOBAL UINT Conf_UID;
|
||||||
GLOBAL UINT Conf_GID;
|
GLOBAL UINT Conf_GID;
|
||||||
@@ -107,6 +110,9 @@ GLOBAL LONG Conf_MaxConnections;
|
|||||||
/* Maximum number of channels a user can join */
|
/* Maximum number of channels a user can join */
|
||||||
GLOBAL INT Conf_MaxJoins;
|
GLOBAL INT Conf_MaxJoins;
|
||||||
|
|
||||||
|
/* Maximum number of connections per IP address */
|
||||||
|
GLOBAL INT Conf_MaxConnectionsIP;
|
||||||
|
|
||||||
|
|
||||||
GLOBAL VOID Conf_Init PARAMS((VOID ));
|
GLOBAL VOID Conf_Init PARAMS((VOID ));
|
||||||
GLOBAL VOID Conf_Rehash PARAMS((VOID ));
|
GLOBAL VOID Conf_Rehash PARAMS((VOID ));
|
||||||
|
|||||||
@@ -16,10 +16,11 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: conn-func.c,v 1.1 2002/12/30 17:14:28 alex Exp $";
|
static char UNUSED id[] = "$Id: conn-func.c,v 1.1.2.2 2003/12/26 16:16:48 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <log.h>
|
||||||
|
|
||||||
#include "conn.h"
|
#include "conn.h"
|
||||||
|
|
||||||
@@ -197,7 +198,7 @@ Conn_SendQ( CONN_ID Idx )
|
|||||||
/* Laenge der Daten im Schreibbuffer liefern */
|
/* Laenge der Daten im Schreibbuffer liefern */
|
||||||
|
|
||||||
assert( Idx > NONE );
|
assert( Idx > NONE );
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( My_Connections[Idx].options & CONN_ZIP ) return My_Connections[Idx].zip.wdatalen;
|
if( My_Connections[Idx].options & CONN_ZIP ) return My_Connections[Idx].zip.wdatalen;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
@@ -231,7 +232,7 @@ Conn_RecvQ( CONN_ID Idx )
|
|||||||
/* Laenge der Daten im Lesebuffer liefern */
|
/* Laenge der Daten im Lesebuffer liefern */
|
||||||
|
|
||||||
assert( Idx > NONE );
|
assert( Idx > NONE );
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( My_Connections[Idx].options & CONN_ZIP ) return My_Connections[Idx].zip.rdatalen;
|
if( My_Connections[Idx].options & CONN_ZIP ) return My_Connections[Idx].zip.rdatalen;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -17,9 +17,9 @@
|
|||||||
#define CONN_MODULE
|
#define CONN_MODULE
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: conn-zip.c,v 1.3 2003/04/21 10:52:26 alex Exp $";
|
static char UNUSED id[] = "$Id: conn-zip.c,v 1.3.2.1 2003/12/26 16:16:48 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|||||||
@@ -8,13 +8,13 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: conn-zip.h,v 1.1 2002/12/30 16:07:23 alex Exp $
|
* $Id: conn-zip.h,v 1.1.2.1 2003/12/26 16:16:48 alex Exp $
|
||||||
*
|
*
|
||||||
* Connection compression using ZLIB (header)
|
* Connection compression using ZLIB (header)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
|
|
||||||
#ifndef __conn_zip_h__
|
#ifndef __conn_zip_h__
|
||||||
#define __conn_zip_h__
|
#define __conn_zip_h__
|
||||||
@@ -32,7 +32,7 @@ GLOBAL LONG Zip_RecvBytes PARAMS(( CONN_ID Idx ));
|
|||||||
|
|
||||||
#endif /* __conn_zip_h__ */
|
#endif /* __conn_zip_h__ */
|
||||||
|
|
||||||
#endif /* USE_ZLIB */
|
#endif /* ZLIB */
|
||||||
|
|
||||||
|
|
||||||
/* -eof- */
|
/* -eof- */
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: conn.c,v 1.122.2.1 2003/04/25 16:50:53 alex Exp $";
|
static char UNUSED id[] = "$Id: conn.c,v 1.122.2.4 2004/02/03 13:54:36 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -43,7 +43,7 @@ static char UNUSED id[] = "$Id: conn.c,v 1.122.2.1 2003/04/25 16:50:53 alex Exp
|
|||||||
#include <stdint.h> /* e.g. for Mac OS X */
|
#include <stdint.h> /* e.g. for Mac OS X */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_TCPWRAP
|
#ifdef TCPWRAP
|
||||||
#include <tcpd.h> /* for TCP Wrappers */
|
#include <tcpd.h> /* for TCP Wrappers */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -87,12 +87,13 @@ LOCAL BOOLEAN Init_Socket PARAMS(( INT Sock ));
|
|||||||
LOCAL VOID New_Server PARAMS(( INT Server, CONN_ID Idx ));
|
LOCAL VOID New_Server PARAMS(( INT Server, CONN_ID Idx ));
|
||||||
LOCAL VOID Read_Resolver_Result PARAMS(( INT r_fd ));
|
LOCAL VOID Read_Resolver_Result PARAMS(( INT r_fd ));
|
||||||
LOCAL VOID Simple_Message PARAMS(( INT Sock, CHAR *Msg ));
|
LOCAL VOID Simple_Message PARAMS(( INT Sock, CHAR *Msg ));
|
||||||
|
LOCAL INT Count_Connections PARAMS(( struct sockaddr_in addr ));
|
||||||
|
|
||||||
LOCAL fd_set My_Listeners;
|
LOCAL fd_set My_Listeners;
|
||||||
LOCAL fd_set My_Sockets;
|
LOCAL fd_set My_Sockets;
|
||||||
LOCAL fd_set My_Connects;
|
LOCAL fd_set My_Connects;
|
||||||
|
|
||||||
#ifdef USE_TCPWRAP
|
#ifdef TCPWRAP
|
||||||
INT allow_severity = LOG_INFO;
|
INT allow_severity = LOG_INFO;
|
||||||
INT deny_severity = LOG_ERR;
|
INT deny_severity = LOG_ERR;
|
||||||
#endif
|
#endif
|
||||||
@@ -119,7 +120,9 @@ Conn_Init( VOID )
|
|||||||
Log( LOG_EMERG, "Can't allocate memory! [Conn_Init]" );
|
Log( LOG_EMERG, "Can't allocate memory! [Conn_Init]" );
|
||||||
exit( 1 );
|
exit( 1 );
|
||||||
}
|
}
|
||||||
Log( LOG_DEBUG, "Allocted connection pool for %d items (%ld bytes).", Pool_Size, sizeof( CONNECTION ) * Pool_Size );
|
#ifdef DEBUG
|
||||||
|
Log( LOG_DEBUG, "Allocated connection pool for %d items (%ld bytes).", Pool_Size, sizeof( CONNECTION ) * Pool_Size );
|
||||||
|
#endif
|
||||||
|
|
||||||
/* zu Beginn haben wir keine Verbindungen */
|
/* zu Beginn haben wir keine Verbindungen */
|
||||||
FD_ZERO( &My_Listeners );
|
FD_ZERO( &My_Listeners );
|
||||||
@@ -146,7 +149,9 @@ Conn_Exit( VOID )
|
|||||||
CONN_ID idx;
|
CONN_ID idx;
|
||||||
INT i;
|
INT i;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Shutting down all connections ..." );
|
Log( LOG_DEBUG, "Shutting down all connections ..." );
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef RENDEZVOUS
|
#ifdef RENDEZVOUS
|
||||||
Rendezvous_UnregisterListeners( );
|
Rendezvous_UnregisterListeners( );
|
||||||
@@ -164,12 +169,16 @@ Conn_Exit( VOID )
|
|||||||
if( FD_ISSET( i, &My_Listeners ))
|
if( FD_ISSET( i, &My_Listeners ))
|
||||||
{
|
{
|
||||||
close( i );
|
close( i );
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Listening socket %d closed.", i );
|
Log( LOG_DEBUG, "Listening socket %d closed.", i );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if( FD_ISSET( i, &My_Connects ))
|
else if( FD_ISSET( i, &My_Connects ))
|
||||||
{
|
{
|
||||||
close( i );
|
close( i );
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Connection %d closed during creation (socket %d).", idx, i );
|
Log( LOG_DEBUG, "Connection %d closed during creation (socket %d).", idx, i );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
else if( idx < Pool_Size )
|
else if( idx < Pool_Size )
|
||||||
{
|
{
|
||||||
@@ -224,7 +233,9 @@ Conn_ExitListeners( VOID )
|
|||||||
if( FD_ISSET( i, &My_Sockets ) && FD_ISSET( i, &My_Listeners ))
|
if( FD_ISSET( i, &My_Sockets ) && FD_ISSET( i, &My_Listeners ))
|
||||||
{
|
{
|
||||||
close( i );
|
close( i );
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Listening socket %d closed.", i );
|
Log( LOG_DEBUG, "Listening socket %d closed.", i );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} /* Conn_ExitListeners */
|
} /* Conn_ExitListeners */
|
||||||
@@ -236,6 +247,7 @@ Conn_NewListener( CONST UINT Port )
|
|||||||
/* Create new listening socket on specified port */
|
/* Create new listening socket on specified port */
|
||||||
|
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
|
struct in_addr inaddr;
|
||||||
INT sock;
|
INT sock;
|
||||||
#ifdef RENDEZVOUS
|
#ifdef RENDEZVOUS
|
||||||
CHAR name[CLIENT_ID_LEN], *info;
|
CHAR name[CLIENT_ID_LEN], *info;
|
||||||
@@ -243,9 +255,24 @@ Conn_NewListener( CONST UINT Port )
|
|||||||
|
|
||||||
/* Server-"Listen"-Socket initialisieren */
|
/* Server-"Listen"-Socket initialisieren */
|
||||||
memset( &addr, 0, sizeof( addr ));
|
memset( &addr, 0, sizeof( addr ));
|
||||||
|
memset( &inaddr, 0, sizeof( inaddr ));
|
||||||
addr.sin_family = AF_INET;
|
addr.sin_family = AF_INET;
|
||||||
addr.sin_port = htons( Port );
|
addr.sin_port = htons( Port );
|
||||||
addr.sin_addr.s_addr = htonl( INADDR_ANY );
|
if( Conf_ListenAddress[0] )
|
||||||
|
{
|
||||||
|
#ifdef HAVE_INET_ATON
|
||||||
|
if( inet_aton( Conf_ListenAddress, &inaddr ) == 0 )
|
||||||
|
#else
|
||||||
|
inaddr.s_addr = inet_addr( Conf_ListenAddress );
|
||||||
|
if( inaddr.s_addr == (unsigned)-1 )
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
Log( LOG_CRIT, "Can't listen on %s:%u: can't convert ip address %s!", Conf_ListenAddress, Port, Conf_ListenAddress );
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else inaddr.s_addr = htonl( INADDR_ANY );
|
||||||
|
addr.sin_addr = inaddr;
|
||||||
|
|
||||||
/* Socket erzeugen */
|
/* Socket erzeugen */
|
||||||
sock = socket( PF_INET, SOCK_STREAM, 0);
|
sock = socket( PF_INET, SOCK_STREAM, 0);
|
||||||
@@ -279,7 +306,8 @@ Conn_NewListener( CONST UINT Port )
|
|||||||
|
|
||||||
if( sock > Conn_MaxFD ) Conn_MaxFD = sock;
|
if( sock > Conn_MaxFD ) Conn_MaxFD = sock;
|
||||||
|
|
||||||
Log( LOG_INFO, "Now listening on port %d (socket %d).", Port, sock );
|
if( Conf_ListenAddress[0]) Log( LOG_INFO, "Now listening on %s:%d (socket %d).", Conf_ListenAddress, Port, sock );
|
||||||
|
else Log( LOG_INFO, "Now listening on 0.0.0.0:%d (socket %d).", Port, sock );
|
||||||
|
|
||||||
#ifdef RENDEZVOUS
|
#ifdef RENDEZVOUS
|
||||||
/* Get best server description text */
|
/* Get best server description text */
|
||||||
@@ -350,10 +378,13 @@ Conn_Handler( VOID )
|
|||||||
Check_Servers( );
|
Check_Servers( );
|
||||||
Check_Connections( );
|
Check_Connections( );
|
||||||
|
|
||||||
|
t = time( NULL );
|
||||||
|
|
||||||
/* noch volle Lese-Buffer suchen */
|
/* noch volle Lese-Buffer suchen */
|
||||||
for( i = 0; i < Pool_Size; i++ )
|
for( i = 0; i < Pool_Size; i++ )
|
||||||
{
|
{
|
||||||
if(( My_Connections[i].sock > NONE ) && ( My_Connections[i].rdatalen > 0 ))
|
if(( My_Connections[i].sock > NONE ) && ( My_Connections[i].rdatalen > 0 ) &&
|
||||||
|
( My_Connections[i].delaytime < t ))
|
||||||
{
|
{
|
||||||
/* Kann aus dem Buffer noch ein Befehl extrahiert werden? */
|
/* Kann aus dem Buffer noch ein Befehl extrahiert werden? */
|
||||||
if( Handle_Buffer( i )) timeout = FALSE;
|
if( Handle_Buffer( i )) timeout = FALSE;
|
||||||
@@ -364,7 +395,7 @@ Conn_Handler( VOID )
|
|||||||
FD_ZERO( &write_sockets );
|
FD_ZERO( &write_sockets );
|
||||||
for( i = 0; i < Pool_Size; i++ )
|
for( i = 0; i < Pool_Size; i++ )
|
||||||
{
|
{
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if(( My_Connections[i].sock > NONE ) && (( My_Connections[i].wdatalen > 0 ) || ( My_Connections[i].zip.wdatalen > 0 )))
|
if(( My_Connections[i].sock > NONE ) && (( My_Connections[i].wdatalen > 0 ) || ( My_Connections[i].zip.wdatalen > 0 )))
|
||||||
#else
|
#else
|
||||||
if(( My_Connections[i].sock > NONE ) && ( My_Connections[i].wdatalen > 0 ))
|
if(( My_Connections[i].sock > NONE ) && ( My_Connections[i].wdatalen > 0 ))
|
||||||
@@ -382,7 +413,6 @@ Conn_Handler( VOID )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* von welchen Sockets koennte gelesen werden? */
|
/* von welchen Sockets koennte gelesen werden? */
|
||||||
t = time( NULL );
|
|
||||||
read_sockets = My_Sockets;
|
read_sockets = My_Sockets;
|
||||||
for( i = 0; i < Pool_Size; i++ )
|
for( i = 0; i < Pool_Size; i++ )
|
||||||
{
|
{
|
||||||
@@ -413,7 +443,7 @@ Conn_Handler( VOID )
|
|||||||
|
|
||||||
/* Timeout initialisieren */
|
/* Timeout initialisieren */
|
||||||
tv.tv_usec = 0;
|
tv.tv_usec = 0;
|
||||||
if( timeout ) tv.tv_sec = TIME_RES;
|
if( timeout ) tv.tv_sec = 1;
|
||||||
else tv.tv_sec = 0;
|
else tv.tv_sec = 0;
|
||||||
|
|
||||||
/* Auf Aktivitaet warten */
|
/* Auf Aktivitaet warten */
|
||||||
@@ -527,7 +557,9 @@ Conn_Write( CONN_ID Idx, CHAR *Data, INT Len )
|
|||||||
* In diesem Fall wird hier einfach ein Fehler geliefert. */
|
* In diesem Fall wird hier einfach ein Fehler geliefert. */
|
||||||
if( My_Connections[Idx].sock <= NONE )
|
if( My_Connections[Idx].sock <= NONE )
|
||||||
{
|
{
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Skipped write on closed socket (connection %d).", Idx );
|
Log( LOG_DEBUG, "Skipped write on closed socket (connection %d).", Idx );
|
||||||
|
#endif
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -549,7 +581,7 @@ Conn_Write( CONN_ID Idx, CHAR *Data, INT Len )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( My_Connections[Idx].options & CONN_ZIP )
|
if( My_Connections[Idx].options & CONN_ZIP )
|
||||||
{
|
{
|
||||||
/* Daten komprimieren und in Puffer kopieren */
|
/* Daten komprimieren und in Puffer kopieren */
|
||||||
@@ -579,7 +611,7 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
|
|||||||
|
|
||||||
CLIENT *c;
|
CLIENT *c;
|
||||||
DOUBLE in_k, out_k;
|
DOUBLE in_k, out_k;
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
DOUBLE in_z_k, out_z_k;
|
DOUBLE in_z_k, out_z_k;
|
||||||
INT in_p, out_p;
|
INT in_p, out_p;
|
||||||
#endif
|
#endif
|
||||||
@@ -641,7 +673,7 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
|
|||||||
/* Calculate statistics and log information */
|
/* Calculate statistics and log information */
|
||||||
in_k = (DOUBLE)My_Connections[Idx].bytes_in / 1024;
|
in_k = (DOUBLE)My_Connections[Idx].bytes_in / 1024;
|
||||||
out_k = (DOUBLE)My_Connections[Idx].bytes_out / 1024;
|
out_k = (DOUBLE)My_Connections[Idx].bytes_out / 1024;
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( My_Connections[Idx].options & CONN_ZIP )
|
if( My_Connections[Idx].options & CONN_ZIP )
|
||||||
{
|
{
|
||||||
in_z_k = (DOUBLE)My_Connections[Idx].zip.bytes_in / 1024;
|
in_z_k = (DOUBLE)My_Connections[Idx].zip.bytes_in / 1024;
|
||||||
@@ -669,7 +701,7 @@ Conn_Close( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient )
|
|||||||
/* Servers: Modify time of next connect attempt? */
|
/* Servers: Modify time of next connect attempt? */
|
||||||
Conf_UnsetServer( Idx );
|
Conf_UnsetServer( Idx );
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
/* Clean up zlib, if link was compressed */
|
/* Clean up zlib, if link was compressed */
|
||||||
if( Conn_Options( Idx ) & CONN_ZIP )
|
if( Conn_Options( Idx ) & CONN_ZIP )
|
||||||
{
|
{
|
||||||
@@ -730,7 +762,7 @@ Try_Write( CONN_ID Idx )
|
|||||||
assert( My_Connections[Idx].sock > NONE );
|
assert( My_Connections[Idx].sock > NONE );
|
||||||
|
|
||||||
/* sind ueberhaupt Daten vorhanden? */
|
/* sind ueberhaupt Daten vorhanden? */
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if(( ! My_Connections[Idx].wdatalen > 0 ) && ( ! My_Connections[Idx].zip.wdatalen )) return TRUE;
|
if(( ! My_Connections[Idx].wdatalen > 0 ) && ( ! My_Connections[Idx].zip.wdatalen )) return TRUE;
|
||||||
#else
|
#else
|
||||||
if( ! My_Connections[Idx].wdatalen > 0 ) return TRUE;
|
if( ! My_Connections[Idx].wdatalen > 0 ) return TRUE;
|
||||||
@@ -836,14 +868,16 @@ Handle_Write( CONN_ID Idx )
|
|||||||
|
|
||||||
return FALSE;
|
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 );
|
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
|
||||||
|
|
||||||
/* PASS und SERVER verschicken */
|
/* PASS und SERVER verschicken */
|
||||||
Conn_WriteStr( Idx, "PASS %s %s", Conf_Server[Conf_GetServer( Idx )].pwd_out, NGIRCd_ProtoID );
|
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 );
|
return Conn_WriteStr( Idx, "SERVER %s :%s", Conf_ServerName, Conf_ServerInfo );
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
/* Schreibpuffer leer, aber noch Daten im Kompressionsbuffer?
|
/* Schreibpuffer leer, aber noch Daten im Kompressionsbuffer?
|
||||||
* Dann muss dieser nun geflushed werden! */
|
* Dann muss dieser nun geflushed werden! */
|
||||||
if( My_Connections[Idx].wdatalen == 0 ) Zip_Flush( Idx );
|
if( My_Connections[Idx].wdatalen == 0 ) Zip_Flush( Idx );
|
||||||
@@ -878,7 +912,7 @@ New_Connection( INT Sock )
|
|||||||
/* Neue Client-Verbindung von Listen-Socket annehmen und
|
/* Neue Client-Verbindung von Listen-Socket annehmen und
|
||||||
* CLIENT-Struktur anlegen. */
|
* CLIENT-Struktur anlegen. */
|
||||||
|
|
||||||
#ifdef USE_TCPWRAP
|
#ifdef TCPWRAP
|
||||||
struct request_info req;
|
struct request_info req;
|
||||||
#endif
|
#endif
|
||||||
struct sockaddr_in new_addr;
|
struct sockaddr_in new_addr;
|
||||||
@@ -887,7 +921,7 @@ New_Connection( INT Sock )
|
|||||||
CONN_ID idx;
|
CONN_ID idx;
|
||||||
CLIENT *c;
|
CLIENT *c;
|
||||||
POINTER *ptr;
|
POINTER *ptr;
|
||||||
LONG new_size;
|
LONG new_size, cnt;
|
||||||
|
|
||||||
assert( Sock > NONE );
|
assert( Sock > NONE );
|
||||||
|
|
||||||
@@ -900,9 +934,10 @@ New_Connection( INT Sock )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_TCPWRAP
|
#ifdef TCPWRAP
|
||||||
/* Validate socket using TCP Wrappers */
|
/* Validate socket using TCP Wrappers */
|
||||||
request_init( &req, RQ_DAEMON, PACKAGE_NAME, RQ_FILE, new_sock, RQ_CLIENT_SIN, &new_addr, NULL );
|
request_init( &req, RQ_DAEMON, PACKAGE_NAME, RQ_FILE, new_sock, RQ_CLIENT_SIN, &new_addr, NULL );
|
||||||
|
fromhost(&req);
|
||||||
if( ! hosts_access( &req ))
|
if( ! hosts_access( &req ))
|
||||||
{
|
{
|
||||||
/* Access denied! */
|
/* Access denied! */
|
||||||
@@ -916,6 +951,17 @@ New_Connection( INT Sock )
|
|||||||
/* Socket initialisieren */
|
/* Socket initialisieren */
|
||||||
Init_Socket( new_sock );
|
Init_Socket( new_sock );
|
||||||
|
|
||||||
|
/* Check IP-based connection limit */
|
||||||
|
cnt = Count_Connections( new_addr );
|
||||||
|
if(( Conf_MaxConnectionsIP > 0 ) && ( cnt >= Conf_MaxConnectionsIP ))
|
||||||
|
{
|
||||||
|
/* Access denied, too many connections from this IP! */
|
||||||
|
Log( LOG_ERR, "Refused connection from %s: too may connections (%ld) from this IP!", inet_ntoa( new_addr.sin_addr ), cnt);
|
||||||
|
Simple_Message( new_sock, "ERROR :Connection refused, too many connections from your IP!" );
|
||||||
|
close( new_sock );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* Freie Connection-Struktur suchen */
|
/* Freie Connection-Struktur suchen */
|
||||||
for( idx = 0; idx < Pool_Size; idx++ ) if( My_Connections[idx].sock == NONE ) break;
|
for( idx = 0; idx < Pool_Size; idx++ ) if( My_Connections[idx].sock == NONE ) break;
|
||||||
if( idx >= Pool_Size )
|
if( idx >= Pool_Size )
|
||||||
@@ -966,9 +1012,13 @@ New_Connection( INT Sock )
|
|||||||
/* Struktur umkopieren ... */
|
/* Struktur umkopieren ... */
|
||||||
memcpy( ptr, My_Connections, sizeof( CONNECTION ) * Pool_Size );
|
memcpy( ptr, My_Connections, sizeof( CONNECTION ) * Pool_Size );
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Allocated new connection pool for %ld items (%ld bytes). [malloc()/memcpy()]", new_size, sizeof( CONNECTION ) * new_size );
|
Log( LOG_DEBUG, "Allocated new connection pool for %ld items (%ld bytes). [malloc()/memcpy()]", new_size, sizeof( CONNECTION ) * new_size );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
else Log( LOG_DEBUG, "Allocated new connection pool for %ld items (%ld bytes). [realloc()]", new_size, sizeof( CONNECTION ) * new_size );
|
else Log( LOG_DEBUG, "Allocated new connection pool for %ld items (%ld bytes). [realloc()]", new_size, sizeof( CONNECTION ) * new_size );
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Adjust pointer to new block */
|
/* Adjust pointer to new block */
|
||||||
My_Connections = ptr;
|
My_Connections = ptr;
|
||||||
@@ -1032,7 +1082,9 @@ Socket2Index( INT Sock )
|
|||||||
{
|
{
|
||||||
/* die Connection wurde vermutlich (wegen eines
|
/* die Connection wurde vermutlich (wegen eines
|
||||||
* Fehlers) bereits wieder abgebaut ... */
|
* Fehlers) bereits wieder abgebaut ... */
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Socket2Index: can't get connection for socket %d!", Sock );
|
Log( LOG_DEBUG, "Socket2Index: can't get connection for socket %d!", Sock );
|
||||||
|
#endif
|
||||||
return NONE;
|
return NONE;
|
||||||
}
|
}
|
||||||
else return idx;
|
else return idx;
|
||||||
@@ -1046,7 +1098,7 @@ Read_Request( CONN_ID Idx )
|
|||||||
* Tritt ein Fehler auf, so wird der Socket geschlossen. */
|
* Tritt ein Fehler auf, so wird der Socket geschlossen. */
|
||||||
|
|
||||||
INT len, bsize;
|
INT len, bsize;
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
CLIENT *c;
|
CLIENT *c;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -1056,12 +1108,12 @@ Read_Request( CONN_ID Idx )
|
|||||||
/* wenn noch nicht registriert: maximal mit ZREADBUFFER_LEN arbeiten,
|
/* wenn noch nicht registriert: maximal mit ZREADBUFFER_LEN arbeiten,
|
||||||
* ansonsten koennen Daten ggf. nicht umkopiert werden. */
|
* ansonsten koennen Daten ggf. nicht umkopiert werden. */
|
||||||
bsize = READBUFFER_LEN;
|
bsize = READBUFFER_LEN;
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
c = Client_GetFromConn( Idx );
|
c = Client_GetFromConn( Idx );
|
||||||
if(( Client_Type( c ) != CLIENT_USER ) && ( Client_Type( c ) != CLIENT_SERVER ) && ( Client_Type( c ) != CLIENT_SERVICE ) && ( bsize > ZREADBUFFER_LEN )) bsize = ZREADBUFFER_LEN;
|
if(( Client_Type( c ) != CLIENT_USER ) && ( Client_Type( c ) != CLIENT_SERVER ) && ( Client_Type( c ) != CLIENT_SERVICE ) && ( bsize > ZREADBUFFER_LEN )) bsize = ZREADBUFFER_LEN;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if(( bsize - My_Connections[Idx].rdatalen - 1 < 1 ) || ( ZREADBUFFER_LEN - My_Connections[Idx].zip.rdatalen < 1 ))
|
if(( bsize - My_Connections[Idx].rdatalen - 1 < 1 ) || ( ZREADBUFFER_LEN - My_Connections[Idx].zip.rdatalen < 1 ))
|
||||||
#else
|
#else
|
||||||
if( bsize - My_Connections[Idx].rdatalen - 1 < 1 )
|
if( bsize - My_Connections[Idx].rdatalen - 1 < 1 )
|
||||||
@@ -1073,7 +1125,7 @@ Read_Request( CONN_ID Idx )
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( My_Connections[Idx].options & CONN_ZIP )
|
if( My_Connections[Idx].options & CONN_ZIP )
|
||||||
{
|
{
|
||||||
len = recv( My_Connections[Idx].sock, My_Connections[Idx].zip.rbuf + My_Connections[Idx].zip.rdatalen, ( ZREADBUFFER_LEN - My_Connections[Idx].zip.rdatalen ), 0 );
|
len = recv( My_Connections[Idx].sock, My_Connections[Idx].zip.rbuf + My_Connections[Idx].zip.rdatalen, ( ZREADBUFFER_LEN - My_Connections[Idx].zip.rdatalen ), 0 );
|
||||||
@@ -1128,14 +1180,17 @@ Handle_Buffer( CONN_ID Idx )
|
|||||||
CHAR *ptr;
|
CHAR *ptr;
|
||||||
INT len, delta;
|
INT len, delta;
|
||||||
BOOLEAN action, result;
|
BOOLEAN action, result;
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
BOOLEAN old_z;
|
BOOLEAN old_z;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
result = FALSE;
|
result = FALSE;
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
#ifdef USE_ZLIB
|
/* Check penalty */
|
||||||
|
if( My_Connections[Idx].delaytime > time( NULL )) return result;
|
||||||
|
|
||||||
|
#ifdef ZLIB
|
||||||
/* ggf. noch unkomprimiete Daten weiter entpacken */
|
/* ggf. noch unkomprimiete Daten weiter entpacken */
|
||||||
if( My_Connections[Idx].options & CONN_ZIP )
|
if( My_Connections[Idx].options & CONN_ZIP )
|
||||||
{
|
{
|
||||||
@@ -1181,7 +1236,7 @@ Handle_Buffer( CONN_ID Idx )
|
|||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
/* merken, ob Stream bereits komprimiert wird */
|
/* merken, ob Stream bereits komprimiert wird */
|
||||||
old_z = My_Connections[Idx].options & CONN_ZIP;
|
old_z = My_Connections[Idx].options & CONN_ZIP;
|
||||||
#endif
|
#endif
|
||||||
@@ -1198,7 +1253,7 @@ Handle_Buffer( CONN_ID Idx )
|
|||||||
My_Connections[Idx].rdatalen -= len;
|
My_Connections[Idx].rdatalen -= len;
|
||||||
memmove( My_Connections[Idx].rbuf, My_Connections[Idx].rbuf + len, My_Connections[Idx].rdatalen );
|
memmove( My_Connections[Idx].rbuf, My_Connections[Idx].rbuf + len, My_Connections[Idx].rdatalen );
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if(( ! old_z ) && ( My_Connections[Idx].options & CONN_ZIP ) && ( My_Connections[Idx].rdatalen > 0 ))
|
if(( ! old_z ) && ( My_Connections[Idx].options & CONN_ZIP ) && ( My_Connections[Idx].rdatalen > 0 ))
|
||||||
{
|
{
|
||||||
/* Mit dem letzten Befehl wurde Socket-Kompression aktiviert.
|
/* Mit dem letzten Befehl wurde Socket-Kompression aktiviert.
|
||||||
@@ -1214,7 +1269,9 @@ Handle_Buffer( CONN_ID Idx )
|
|||||||
memcpy( My_Connections[Idx].zip.rbuf, My_Connections[Idx].rbuf, My_Connections[Idx].rdatalen );
|
memcpy( My_Connections[Idx].zip.rbuf, My_Connections[Idx].rbuf, My_Connections[Idx].rdatalen );
|
||||||
My_Connections[Idx].zip.rdatalen = My_Connections[Idx].rdatalen;
|
My_Connections[Idx].zip.rdatalen = My_Connections[Idx].rdatalen;
|
||||||
My_Connections[Idx].rdatalen = 0;
|
My_Connections[Idx].rdatalen = 0;
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Moved already received data (%d bytes) to uncompression buffer.", My_Connections[Idx].zip.rdatalen );
|
Log( LOG_DEBUG, "Moved already received data (%d bytes) to uncompression buffer.", My_Connections[Idx].zip.rdatalen );
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -1251,14 +1308,18 @@ Check_Connections( VOID )
|
|||||||
if( My_Connections[i].lastping < time( NULL ) - Conf_PongTimeout )
|
if( My_Connections[i].lastping < time( NULL ) - Conf_PongTimeout )
|
||||||
{
|
{
|
||||||
/* Timeout */
|
/* Timeout */
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Connection %d: Ping timeout: %d seconds.", i, Conf_PongTimeout );
|
Log( LOG_DEBUG, "Connection %d: Ping timeout: %d seconds.", i, Conf_PongTimeout );
|
||||||
|
#endif
|
||||||
Conn_Close( i, NULL, "Ping timeout", TRUE );
|
Conn_Close( i, NULL, "Ping timeout", TRUE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( My_Connections[i].lastdata < time( NULL ) - Conf_PingTimeout )
|
else if( My_Connections[i].lastdata < time( NULL ) - Conf_PingTimeout )
|
||||||
{
|
{
|
||||||
/* es muss ein PING gesendet werden */
|
/* es muss ein PING gesendet werden */
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Connection %d: sending PING ...", i );
|
Log( LOG_DEBUG, "Connection %d: sending PING ...", i );
|
||||||
|
#endif
|
||||||
My_Connections[i].lastping = time( NULL );
|
My_Connections[i].lastping = time( NULL );
|
||||||
Conn_WriteStr( i, "PING :%s", Client_ID( Client_ThisServer( )));
|
Conn_WriteStr( i, "PING :%s", Client_ID( Client_ThisServer( )));
|
||||||
}
|
}
|
||||||
@@ -1269,7 +1330,9 @@ Check_Connections( VOID )
|
|||||||
if( My_Connections[i].lastdata < time( NULL ) - Conf_PingTimeout )
|
if( My_Connections[i].lastdata < time( NULL ) - Conf_PingTimeout )
|
||||||
{
|
{
|
||||||
/* Timeout */
|
/* Timeout */
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Connection %d timed out ...", i );
|
Log( LOG_DEBUG, "Connection %d timed out ...", i );
|
||||||
|
#endif
|
||||||
Conn_Close( i, NULL, "Timeout", FALSE );
|
Conn_Close( i, NULL, "Timeout", FALSE );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1325,7 +1388,9 @@ Check_Servers( VOID )
|
|||||||
Log( LOG_ALERT, "Can't establist server connection: connection limit reached (%d)!", Pool_Size );
|
Log( LOG_ALERT, "Can't establist server connection: connection limit reached (%d)!", Pool_Size );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Preparing connection %d for \"%s\" ...", idx, Conf_Server[i].host );
|
Log( LOG_DEBUG, "Preparing connection %d for \"%s\" ...", idx, Conf_Server[i].host );
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Verbindungs-Struktur initialisieren */
|
/* Verbindungs-Struktur initialisieren */
|
||||||
Init_Conn_Struct( idx );
|
Init_Conn_Struct( idx );
|
||||||
@@ -1437,7 +1502,9 @@ New_Server( INT Server, CONN_ID Idx )
|
|||||||
FD_SET( new_sock, &My_Connects );
|
FD_SET( new_sock, &My_Connects );
|
||||||
if( new_sock > Conn_MaxFD ) Conn_MaxFD = new_sock;
|
if( new_sock > Conn_MaxFD ) Conn_MaxFD = new_sock;
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Registered new connection %d on socket %d.", Idx, My_Connections[Idx].sock );
|
Log( LOG_DEBUG, "Registered new connection %d on socket %d.", Idx, My_Connections[Idx].sock );
|
||||||
|
#endif
|
||||||
} /* New_Server */
|
} /* New_Server */
|
||||||
|
|
||||||
|
|
||||||
@@ -1465,7 +1532,7 @@ Init_Conn_Struct( CONN_ID Idx )
|
|||||||
My_Connections[Idx].flag = 0;
|
My_Connections[Idx].flag = 0;
|
||||||
My_Connections[Idx].options = 0;
|
My_Connections[Idx].options = 0;
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
My_Connections[Idx].zip.rbuf[0] = '\0';
|
My_Connections[Idx].zip.rbuf[0] = '\0';
|
||||||
My_Connections[Idx].zip.rdatalen = 0;
|
My_Connections[Idx].zip.rdatalen = 0;
|
||||||
My_Connections[Idx].zip.wbuf[0] = '\0';
|
My_Connections[Idx].zip.wbuf[0] = '\0';
|
||||||
@@ -1534,11 +1601,15 @@ Read_Resolver_Result( INT r_fd )
|
|||||||
/* Opsa! Keine passende Connection gefunden!? Vermutlich
|
/* Opsa! Keine passende Connection gefunden!? Vermutlich
|
||||||
* wurde sie schon wieder geschlossen. */
|
* wurde sie schon wieder geschlossen. */
|
||||||
close( r_fd );
|
close( r_fd );
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Resolver: Got result for unknown connection!?" );
|
Log( LOG_DEBUG, "Resolver: Got result for unknown connection!?" );
|
||||||
|
#endif
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
Log( LOG_DEBUG, "Resolver: %s is \"%s\".", My_Connections[i].host, result );
|
Log( LOG_DEBUG, "Resolver: %s is \"%s\".", My_Connections[i].host, result );
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Aufraeumen */
|
/* Aufraeumen */
|
||||||
close( My_Connections[i].res_stat->pipe[0] );
|
close( My_Connections[i].res_stat->pipe[0] );
|
||||||
@@ -1582,4 +1653,18 @@ Simple_Message( INT Sock, CHAR *Msg )
|
|||||||
} /* Simple_Error */
|
} /* Simple_Error */
|
||||||
|
|
||||||
|
|
||||||
|
LOCAL INT
|
||||||
|
Count_Connections( struct sockaddr_in addr_in )
|
||||||
|
{
|
||||||
|
INT i, cnt;
|
||||||
|
|
||||||
|
cnt = 0;
|
||||||
|
for( i = 0; i < Pool_Size; i++ )
|
||||||
|
{
|
||||||
|
if(( My_Connections[i].sock > NONE ) && ( My_Connections[i].addr.sin_addr.s_addr == addr_in.sin_addr.s_addr )) cnt++;
|
||||||
|
}
|
||||||
|
return cnt;
|
||||||
|
} /* Count_Connections */
|
||||||
|
|
||||||
|
|
||||||
/* -eof- */
|
/* -eof- */
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: conn.h,v 1.31 2003/03/27 01:20:22 alex Exp $
|
* $Id: conn.h,v 1.31.2.1 2003/12/26 16:16:48 alex Exp $
|
||||||
*
|
*
|
||||||
* Connection management (header)
|
* Connection management (header)
|
||||||
*/
|
*/
|
||||||
@@ -23,7 +23,7 @@
|
|||||||
|
|
||||||
#define CONN_ISCLOSING 1 /* Conn_Close() already called */
|
#define CONN_ISCLOSING 1 /* Conn_Close() already called */
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
#define CONN_ZIP 2 /* zlib compressed link */
|
#define CONN_ZIP 2 /* zlib compressed link */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -36,7 +36,7 @@ typedef INT CONN_ID;
|
|||||||
#include "defines.h"
|
#include "defines.h"
|
||||||
#include "resolve.h"
|
#include "resolve.h"
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
#include <zlib.h>
|
#include <zlib.h>
|
||||||
typedef struct _ZipData
|
typedef struct _ZipData
|
||||||
{
|
{
|
||||||
@@ -48,7 +48,7 @@ typedef struct _ZipData
|
|||||||
INT wdatalen; /* Length of data in write buffer (uncompressed) */
|
INT wdatalen; /* Length of data in write buffer (uncompressed) */
|
||||||
LONG bytes_in, bytes_out; /* Counter for statistics (uncompressed!) */
|
LONG bytes_in, bytes_out; /* Counter for statistics (uncompressed!) */
|
||||||
} ZIPDATA;
|
} ZIPDATA;
|
||||||
#endif /* USE_ZLIB */
|
#endif /* ZLIB */
|
||||||
|
|
||||||
typedef struct _Connection
|
typedef struct _Connection
|
||||||
{
|
{
|
||||||
@@ -69,9 +69,9 @@ typedef struct _Connection
|
|||||||
LONG msg_in, msg_out; /* Received and sent IRC messages */
|
LONG msg_in, msg_out; /* Received and sent IRC messages */
|
||||||
INT flag; /* Flag (see "irc-write" module) */
|
INT flag; /* Flag (see "irc-write" module) */
|
||||||
INT options; /* Link options */
|
INT options; /* Link options */
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
ZIPDATA zip; /* Compression information */
|
ZIPDATA zip; /* Compression information */
|
||||||
#endif /* USE_ZLIB */
|
#endif /* ZLIB */
|
||||||
} CONNECTION;
|
} CONNECTION;
|
||||||
|
|
||||||
GLOBAL CONNECTION *My_Connections;
|
GLOBAL CONNECTION *My_Connections;
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: defines.h,v 1.42 2003/02/23 12:03:39 alex Exp $
|
* $Id: defines.h,v 1.42.2.2 2003/12/26 16:16:48 alex Exp $
|
||||||
*
|
*
|
||||||
* Global defines of ngIRCd.
|
* Global defines of ngIRCd.
|
||||||
*/
|
*/
|
||||||
@@ -19,8 +19,6 @@
|
|||||||
|
|
||||||
#define NONE -1
|
#define NONE -1
|
||||||
|
|
||||||
#define TIME_RES 2 /* Zeit-Aufloesung des Servers in Sekunden */
|
|
||||||
|
|
||||||
#define FNAME_LEN 256 /* max. Laenge eines Dateinamen */
|
#define FNAME_LEN 256 /* max. Laenge eines Dateinamen */
|
||||||
|
|
||||||
#define LINE_LEN 256 /* max. Laenge einer Konfigurationszeile */
|
#define LINE_LEN 256 /* max. Laenge einer Konfigurationszeile */
|
||||||
@@ -59,7 +57,7 @@
|
|||||||
#define READBUFFER_LEN 2048 /* Laenge des Lesepuffers je Verbindung (Bytes) */
|
#define READBUFFER_LEN 2048 /* Laenge des Lesepuffers je Verbindung (Bytes) */
|
||||||
#define WRITEBUFFER_LEN 4096 /* Laenge des Schreibpuffers je Verbindung (Bytes) */
|
#define WRITEBUFFER_LEN 4096 /* Laenge des Schreibpuffers je Verbindung (Bytes) */
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
#define ZREADBUFFER_LEN 1024 /* Laenge des Lesepuffers je Verbindung (Bytes) */
|
#define ZREADBUFFER_LEN 1024 /* Laenge des Lesepuffers je Verbindung (Bytes) */
|
||||||
#define ZWRITEBUFFER_LEN 4096 /* Laenge des Schreibpuffers fuer Kompression (Bytes) */
|
#define ZWRITEBUFFER_LEN 4096 /* Laenge des Schreibpuffers fuer Kompression (Bytes) */
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-info.c,v 1.16.2.1 2003/07/18 20:49:35 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-info.c,v 1.16.2.4 2003/12/26 16:16:48 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -77,6 +77,7 @@ IRC_ADMIN(CLIENT *Client, REQUEST *Req )
|
|||||||
if( ! IRC_WriteStrClient( Client, RPL_ADMINLOC2_MSG, Client_ID( prefix ), Conf_ServerAdmin2 )) return DISCONNECTED;
|
if( ! IRC_WriteStrClient( Client, RPL_ADMINLOC2_MSG, Client_ID( prefix ), Conf_ServerAdmin2 )) return DISCONNECTED;
|
||||||
if( ! IRC_WriteStrClient( Client, RPL_ADMINEMAIL_MSG, Client_ID( prefix ), Conf_ServerAdminMail )) return DISCONNECTED;
|
if( ! IRC_WriteStrClient( Client, RPL_ADMINEMAIL_MSG, Client_ID( prefix ), Conf_ServerAdminMail )) return DISCONNECTED;
|
||||||
|
|
||||||
|
IRC_SetPenalty( Client, 1 );
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* IRC_ADMIN */
|
} /* IRC_ADMIN */
|
||||||
|
|
||||||
@@ -162,6 +163,7 @@ IRC_LINKS( CLIENT *Client, REQUEST *Req )
|
|||||||
c = Client_Next( c );
|
c = Client_Next( c );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( target, 1 );
|
||||||
return IRC_WriteStrClient( target, RPL_ENDOFLINKS_MSG, Client_ID( target ), mask );
|
return IRC_WriteStrClient( target, RPL_ENDOFLINKS_MSG, Client_ID( target ), mask );
|
||||||
} /* IRC_LINKS */
|
} /* IRC_LINKS */
|
||||||
|
|
||||||
@@ -197,6 +199,7 @@ IRC_LUSERS( CLIENT *Client, REQUEST *Req )
|
|||||||
|
|
||||||
IRC_Send_LUSERS( target );
|
IRC_Send_LUSERS( target );
|
||||||
|
|
||||||
|
IRC_SetPenalty( target, 1 );
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* IRC_LUSERS */
|
} /* IRC_LUSERS */
|
||||||
|
|
||||||
@@ -230,6 +233,7 @@ IRC_MOTD( CLIENT *Client, REQUEST *Req )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( from, 3 );
|
||||||
return IRC_Show_MOTD( from );
|
return IRC_Show_MOTD( from );
|
||||||
} /* IRC_MOTD */
|
} /* IRC_MOTD */
|
||||||
|
|
||||||
@@ -324,6 +328,7 @@ IRC_NAMES( CLIENT *Client, REQUEST *Req )
|
|||||||
if( ! IRC_WriteStrClient( from, "%s", rpl )) return DISCONNECTED;
|
if( ! IRC_WriteStrClient( from, "%s", rpl )) return DISCONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( from, 1 );
|
||||||
return IRC_WriteStrClient( from, RPL_ENDOFNAMES_MSG, Client_ID( from ), "*" );
|
return IRC_WriteStrClient( from, RPL_ENDOFNAMES_MSG, Client_ID( from ), "*" );
|
||||||
} /* IRC_NAMES */
|
} /* IRC_NAMES */
|
||||||
|
|
||||||
@@ -374,7 +379,7 @@ IRC_STATS( CLIENT *Client, REQUEST *Req )
|
|||||||
if( cl && (( Client_Type( cl ) == CLIENT_SERVER ) || ( cl == Client )))
|
if( cl && (( Client_Type( cl ) == CLIENT_SERVER ) || ( cl == Client )))
|
||||||
{
|
{
|
||||||
/* Server link or our own connection */
|
/* Server link or our own connection */
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( Conn_Options( con ) & CONN_ZIP )
|
if( Conn_Options( con ) & CONN_ZIP )
|
||||||
{
|
{
|
||||||
if( ! IRC_WriteStrClient( from, RPL_STATSLINKINFOZIP_MSG, Client_ID( from ), Client_Mask( cl ), Conn_SendQ( con ), Conn_SendMsg( con ), Zip_SendBytes( con ), Conn_SendBytes( con ), Conn_RecvMsg( con ), Zip_RecvBytes( con ), Conn_RecvBytes( con ), (LONG)( time( NULL ) - Conn_StartTime( con )))) return DISCONNECTED;
|
if( ! IRC_WriteStrClient( from, RPL_STATSLINKINFOZIP_MSG, Client_ID( from ), Client_Mask( cl ), Conn_SendQ( con ), Conn_SendMsg( con ), Zip_SendBytes( con ), Conn_SendBytes( con ), Conn_RecvMsg( con ), Zip_RecvBytes( con ), Conn_RecvBytes( con ), (LONG)( time( NULL ) - Conn_StartTime( con )))) return DISCONNECTED;
|
||||||
@@ -402,6 +407,7 @@ IRC_STATS( CLIENT *Client, REQUEST *Req )
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( from, 2 );
|
||||||
return IRC_WriteStrClient( from, RPL_ENDOFSTATS_MSG, Client_ID( from ), query );
|
return IRC_WriteStrClient( from, RPL_ENDOFSTATS_MSG, Client_ID( from ), query );
|
||||||
} /* IRC_STATS */
|
} /* IRC_STATS */
|
||||||
|
|
||||||
@@ -488,7 +494,7 @@ IRC_VERSION( CLIENT *Client, REQUEST *Req )
|
|||||||
{
|
{
|
||||||
CLIENT *target, *prefix;
|
CLIENT *target, *prefix;
|
||||||
#ifdef CVSDATE
|
#ifdef CVSDATE
|
||||||
CHAR ver[12];
|
CHAR ver[12], vertxt[30];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
@@ -517,11 +523,13 @@ IRC_VERSION( CLIENT *Client, REQUEST *Req )
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* mit Versionsinfo antworten */
|
/* mit Versionsinfo antworten */
|
||||||
|
IRC_SetPenalty( Client, 1 );
|
||||||
#ifdef CVSDATE
|
#ifdef CVSDATE
|
||||||
strlcpy( ver, CVSDATE, sizeof( ver ));
|
strlcpy( ver, CVSDATE, sizeof( ver ));
|
||||||
strncpy( ver + 4, ver + 5, 2 );
|
strncpy( ver + 4, ver + 5, 2 );
|
||||||
strncpy( ver + 6, ver + 8, 3 );
|
strncpy( ver + 6, ver + 8, 3 );
|
||||||
return IRC_WriteStrClient( Client, RPL_VERSION_MSG, Client_ID( prefix ), PACKAGE_NAME, ver, NGIRCd_DebugLevel, Conf_ServerName, NGIRCd_VersionAddition( ));
|
snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
|
||||||
|
return IRC_WriteStrClient( Client, RPL_VERSION_MSG, Client_ID( prefix ), PACKAGE_NAME, vertxt, NGIRCd_DebugLevel, Conf_ServerName, NGIRCd_VersionAddition( ));
|
||||||
#else
|
#else
|
||||||
return IRC_WriteStrClient( Client, RPL_VERSION_MSG, Client_ID( prefix ), PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_DebugLevel, Conf_ServerName, NGIRCd_VersionAddition( ));
|
return IRC_WriteStrClient( Client, RPL_VERSION_MSG, Client_ID( prefix ), PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_DebugLevel, Conf_ServerName, NGIRCd_VersionAddition( ));
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-login.c,v 1.34 2003/03/31 15:54:21 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-login.c,v 1.34.2.3 2004/02/04 20:04:54 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -34,6 +34,7 @@ static char UNUSED id[] = "$Id: irc-login.c,v 1.34 2003/03/31 15:54:21 alex Exp
|
|||||||
#include "irc.h"
|
#include "irc.h"
|
||||||
#include "irc-info.h"
|
#include "irc-info.h"
|
||||||
#include "irc-write.h"
|
#include "irc-write.h"
|
||||||
|
#include "cvs-version.h"
|
||||||
|
|
||||||
#include "exp.h"
|
#include "exp.h"
|
||||||
#include "irc-login.h"
|
#include "irc-login.h"
|
||||||
@@ -223,6 +224,7 @@ IRC_NICK( CLIENT *Client, REQUEST *Req )
|
|||||||
|
|
||||||
/* neuen Client-Nick speichern */
|
/* neuen Client-Nick speichern */
|
||||||
Client_SetID( target, Req->argv[0] );
|
Client_SetID( target, Req->argv[0] );
|
||||||
|
IRC_SetPenalty( target, 2 );
|
||||||
}
|
}
|
||||||
|
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
@@ -292,11 +294,17 @@ IRC_USER( CLIENT *Client, REQUEST *Req )
|
|||||||
if( Client_Type( Client ) == CLIENT_GOTNICK || Client_Type( Client ) == CLIENT_GOTPASS )
|
if( Client_Type( Client ) == CLIENT_GOTNICK || Client_Type( Client ) == CLIENT_GOTPASS )
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
/* Falsche Anzahl Parameter? */
|
/* Wrong number of parameters? */
|
||||||
if( Req->argc != 4 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
|
if( Req->argc != 4 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
|
||||||
|
|
||||||
|
/* User name */
|
||||||
Client_SetUser( Client, Req->argv[0], FALSE );
|
Client_SetUser( Client, Req->argv[0], FALSE );
|
||||||
Client_SetInfo( Client, Req->argv[3] );
|
|
||||||
|
/* "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, "-" );
|
||||||
|
|
||||||
Log( LOG_DEBUG, "Connection %d: got valid USER command ...", Client_Conn( Client ));
|
Log( LOG_DEBUG, "Connection %d: got valid USER command ...", Client_Conn( Client ));
|
||||||
if( Client_Type( Client ) == CLIENT_GOTNICK ) return Hello_User( Client );
|
if( Client_Type( Client ) == CLIENT_GOTNICK ) return Hello_User( Client );
|
||||||
@@ -428,12 +436,16 @@ IRC_PONG( CLIENT *Client, REQUEST *Req )
|
|||||||
LOCAL BOOLEAN
|
LOCAL BOOLEAN
|
||||||
Hello_User( CLIENT *Client )
|
Hello_User( CLIENT *Client )
|
||||||
{
|
{
|
||||||
|
#ifdef CVSDATE
|
||||||
|
CHAR ver[12], vertxt[30];
|
||||||
|
#endif
|
||||||
|
|
||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
|
|
||||||
/* Passwort ueberpruefen */
|
/* Check password ... */
|
||||||
if( strcmp( Client_Password( Client ), Conf_ServerPwd ) != 0 )
|
if( strcmp( Client_Password( Client ), Conf_ServerPwd ) != 0 )
|
||||||
{
|
{
|
||||||
/* Falsches Passwort */
|
/* Bad password! */
|
||||||
Log( LOG_ERR, "User \"%s\" rejected (connection %d): Bad password!", Client_Mask( Client ), Client_Conn( Client ));
|
Log( LOG_ERR, "User \"%s\" rejected (connection %d): Bad password!", Client_Mask( Client ), Client_Conn( Client ));
|
||||||
Conn_Close( Client_Conn( Client ), NULL, "Bad password", TRUE );
|
Conn_Close( Client_Conn( Client ), NULL, "Bad password", TRUE );
|
||||||
return DISCONNECTED;
|
return DISCONNECTED;
|
||||||
@@ -441,13 +453,29 @@ Hello_User( CLIENT *Client )
|
|||||||
|
|
||||||
Log( LOG_NOTICE, "User \"%s\" registered (connection %d).", Client_Mask( Client ), Client_Conn( Client ));
|
Log( LOG_NOTICE, "User \"%s\" registered (connection %d).", Client_Mask( Client ), Client_Conn( Client ));
|
||||||
|
|
||||||
/* Andere Server informieren */
|
/* Inform other servers */
|
||||||
IRC_WriteStrServers( NULL, "NICK %s 1 %s %s 1 +%s :%s", Client_ID( Client ), Client_User( Client ), Client_Hostname( Client ), Client_Modes( Client ), Client_Info( Client ));
|
IRC_WriteStrServers( NULL, "NICK %s 1 %s %s 1 +%s :%s", Client_ID( Client ), Client_User( Client ), Client_Hostname( Client ), Client_Modes( Client ), Client_Info( Client ));
|
||||||
|
|
||||||
|
/* Welcome :-) */
|
||||||
if( ! IRC_WriteStrClient( Client, RPL_WELCOME_MSG, Client_ID( Client ), Client_Mask( Client ))) return FALSE;
|
if( ! IRC_WriteStrClient( Client, RPL_WELCOME_MSG, Client_ID( Client ), Client_Mask( Client ))) return FALSE;
|
||||||
|
|
||||||
|
/* Version and system type */
|
||||||
|
#ifdef CVSDATE
|
||||||
|
strlcpy( ver, CVSDATE, sizeof( ver ));
|
||||||
|
strncpy( ver + 4, ver + 5, 2 );
|
||||||
|
strncpy( ver + 6, ver + 8, 3 );
|
||||||
|
snprintf( vertxt, sizeof( vertxt ), "%s(%s)", PACKAGE_VERSION, ver );
|
||||||
|
if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return FALSE;
|
||||||
|
#else
|
||||||
if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return FALSE;
|
if( ! IRC_WriteStrClient( Client, RPL_YOURHOST_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, TARGET_CPU, TARGET_VENDOR, TARGET_OS )) return FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
if( ! IRC_WriteStrClient( Client, RPL_CREATED_MSG, Client_ID( Client ), NGIRCd_StartStr )) return FALSE;
|
if( ! IRC_WriteStrClient( Client, RPL_CREATED_MSG, Client_ID( Client ), NGIRCd_StartStr )) return FALSE;
|
||||||
|
#ifdef CVSDATE
|
||||||
|
if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), vertxt, USERMODES, CHANMODES )) return FALSE;
|
||||||
|
#else
|
||||||
if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, USERMODES, CHANMODES )) return FALSE;
|
if( ! IRC_WriteStrClient( Client, RPL_MYINFO_MSG, Client_ID( Client ), Client_ID( Client_ThisServer( )), PACKAGE_VERSION, USERMODES, CHANMODES )) return FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Features */
|
/* Features */
|
||||||
if( ! IRC_WriteStrClient( Client, RPL_ISUPPORT_MSG, Client_ID( Client ), CLIENT_NICK_LEN - 1, CHANNEL_TOPIC_LEN - 1, CLIENT_AWAY_LEN - 1, Conf_MaxJoins )) return DISCONNECTED;
|
if( ! IRC_WriteStrClient( Client, RPL_ISUPPORT_MSG, Client_ID( Client ), CLIENT_NICK_LEN - 1, CHANNEL_TOPIC_LEN - 1, CLIENT_AWAY_LEN - 1, Conf_MaxJoins )) return DISCONNECTED;
|
||||||
@@ -457,6 +485,9 @@ Hello_User( CLIENT *Client )
|
|||||||
if( ! IRC_Send_LUSERS( Client )) return DISCONNECTED;
|
if( ! IRC_Send_LUSERS( Client )) return DISCONNECTED;
|
||||||
if( ! IRC_Show_MOTD( Client )) return DISCONNECTED;
|
if( ! IRC_Show_MOTD( Client )) return DISCONNECTED;
|
||||||
|
|
||||||
|
/* Suspend the client for a second ... */
|
||||||
|
IRC_SetPenalty( Client, 1 );
|
||||||
|
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* Hello_User */
|
} /* Hello_User */
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-mode.c,v 1.31 2003/01/21 21:04:16 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-mode.c,v 1.31.2.1 2003/11/07 20:51:11 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -231,6 +231,7 @@ client_exit:
|
|||||||
Log( LOG_DEBUG, "User \"%s\": Mode change, now \"%s\".", Client_Mask( Target ), Client_Modes( Target ));
|
Log( LOG_DEBUG, "User \"%s\": Mode change, now \"%s\".", Client_Mask( Target ), Client_Modes( Target ));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( Client, 1 );
|
||||||
return ok;
|
return ok;
|
||||||
} /* Client_Mode */
|
} /* Client_Mode */
|
||||||
|
|
||||||
@@ -598,6 +599,7 @@ chan_exit:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( Client, 1 );
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* Channel_Mode */
|
} /* Channel_Mode */
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* ngIRCd -- The Next Generation IRC Daemon
|
* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-op.c,v 1.11 2002/12/12 12:24:18 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-op.c,v 1.11.4.1 2003/12/05 13:33:12 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -69,14 +69,14 @@ IRC_INVITE( CLIENT *Client, REQUEST *Req )
|
|||||||
assert( Client != NULL );
|
assert( Client != NULL );
|
||||||
assert( Req != NULL );
|
assert( Req != NULL );
|
||||||
|
|
||||||
/* Falsche Anzahl Parameter? */
|
/* Wrong number of parameters? */
|
||||||
if( Req->argc != 2 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
|
if( Req->argc != 2 ) return IRC_WriteStrClient( Client, ERR_NEEDMOREPARAMS_MSG, Client_ID( Client ), Req->command );
|
||||||
|
|
||||||
if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix );
|
if( Client_Type( Client ) == CLIENT_SERVER ) from = Client_Search( Req->prefix );
|
||||||
else from = Client;
|
else from = Client;
|
||||||
if( ! from ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
|
if( ! from ) return IRC_WriteStrClient( Client, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->prefix );
|
||||||
|
|
||||||
/* User suchen */
|
/* Search user */
|
||||||
target = Client_Search( Req->argv[0] );
|
target = Client_Search( Req->argv[0] );
|
||||||
if(( ! target ) || ( Client_Type( target ) != CLIENT_USER )) return IRC_WriteStrClient( from, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[0] );
|
if(( ! target ) || ( Client_Type( target ) != CLIENT_USER )) return IRC_WriteStrClient( from, ERR_NOSUCHNICK_MSG, Client_ID( Client ), Req->argv[0] );
|
||||||
|
|
||||||
@@ -84,36 +84,38 @@ IRC_INVITE( CLIENT *Client, REQUEST *Req )
|
|||||||
|
|
||||||
if( chan )
|
if( chan )
|
||||||
{
|
{
|
||||||
/* Der Channel existiert bereits; ist der User Mitglied? */
|
/* Channel exists. Is the user a valid member of the channel? */
|
||||||
if( ! Channel_IsMemberOf( chan, from )) return IRC_WriteStrClient( from, ERR_NOTONCHANNEL_MSG, Client_ID( Client ), Req->argv[1] );
|
if( ! Channel_IsMemberOf( chan, from )) return IRC_WriteStrClient( from, ERR_NOTONCHANNEL_MSG, Client_ID( Client ), Req->argv[1] );
|
||||||
|
|
||||||
/* Ist der Channel "invite-only"? */
|
/* Is the channel "invite-only"? */
|
||||||
if( strchr( Channel_Modes( chan ), 'i' ))
|
if( strchr( Channel_Modes( chan ), 'i' ))
|
||||||
{
|
{
|
||||||
/* Ja. Der User muss Channel-Operator sein! */
|
/* Yes. The user must be channel operator! */
|
||||||
if( ! strchr( Channel_UserModes( chan, from ), 'o' )) return IRC_WriteStrClient( from, ERR_CHANOPRIVSNEEDED_MSG, Client_ID( from ), Channel_Name( chan ));
|
if( ! strchr( Channel_UserModes( chan, from ), 'o' )) return IRC_WriteStrClient( from, ERR_CHANOPRIVSNEEDED_MSG, Client_ID( from ), Channel_Name( chan ));
|
||||||
remember = TRUE;
|
remember = TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ist der Ziel-User bereits Mitglied? */
|
/* Is the target user already member of the channel? */
|
||||||
if( Channel_IsMemberOf( chan, target )) return IRC_WriteStrClient( from, ERR_USERONCHANNEL_MSG, Client_ID( from ), Req->argv[0], Req->argv[1] );
|
if( Channel_IsMemberOf( chan, target )) return IRC_WriteStrClient( from, ERR_USERONCHANNEL_MSG, Client_ID( from ), Req->argv[0], Req->argv[1] );
|
||||||
}
|
|
||||||
|
|
||||||
/* Wenn der User gebanned ist, so muss das Invite auch gespeichert werden */
|
/* If the target user is banned on that channel: remember invite */
|
||||||
if( Lists_CheckBanned( target, chan )) remember = TRUE;
|
if( Lists_CheckBanned( target, chan )) remember = TRUE;
|
||||||
|
|
||||||
|
if( remember )
|
||||||
|
{
|
||||||
|
/* We must memember this invite */
|
||||||
|
if( ! Lists_AddInvited( from, Client_Mask( target ), chan, TRUE )) return CONNECTED;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Log( LOG_DEBUG, "User \"%s\" invites \"%s\" to \"%s\" ...", Client_Mask( from ), Req->argv[0], Req->argv[1] );
|
Log( LOG_DEBUG, "User \"%s\" invites \"%s\" to \"%s\" ...", Client_Mask( from ), Req->argv[0], Req->argv[1] );
|
||||||
if( remember )
|
|
||||||
{
|
|
||||||
if( ! Lists_AddInvited( from, Client_Mask( target ), chan, TRUE )) return CONNECTED;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* an Ziel-Client forwarden ... */
|
/* Inform target client */
|
||||||
IRC_WriteStrClientPrefix( target, from, "INVITE %s %s", Req->argv[0], Req->argv[1] );
|
IRC_WriteStrClientPrefix( target, from, "INVITE %s %s", Req->argv[0], Req->argv[1] );
|
||||||
|
|
||||||
if( Client_Conn( target ) > NONE )
|
if( Client_Conn( target ) > NONE )
|
||||||
{
|
{
|
||||||
/* lokaler Ziel-Client, Status-Code melden */
|
/* The target user is local, so we have to send the status code */
|
||||||
if( ! IRC_WriteStrClientPrefix( from, target, RPL_INVITING_MSG, Client_ID( from ), Req->argv[0], Req->argv[1] )) return DISCONNECTED;
|
if( ! IRC_WriteStrClientPrefix( from, target, RPL_INVITING_MSG, Client_ID( from ), Req->argv[0], Req->argv[1] )) return DISCONNECTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-server.c,v 1.32.2.1 2003/07/09 18:53:08 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-server.c,v 1.32.2.2 2003/12/26 16:16:48 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -117,7 +117,7 @@ IRC_SERVER( CLIENT *Client, REQUEST *Req )
|
|||||||
Client_SetType( Client, CLIENT_SERVER );
|
Client_SetType( Client, CLIENT_SERVER );
|
||||||
Conf_SetServer( i, con );
|
Conf_SetServer( i, con );
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
/* Kompression initialisieren, wenn erforderlich */
|
/* Kompression initialisieren, wenn erforderlich */
|
||||||
if( strchr( Client_Flags( Client ), 'Z' ))
|
if( strchr( Client_Flags( Client ), 'Z' ))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc-write.c,v 1.14 2002/12/30 17:15:42 alex Exp $";
|
static char UNUSED id[] = "$Id: irc-write.c,v 1.14.2.1 2003/11/07 20:51:11 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -395,6 +395,21 @@ va_dcl
|
|||||||
} /* IRC_WriteStrRelatedPrefix */
|
} /* IRC_WriteStrRelatedPrefix */
|
||||||
|
|
||||||
|
|
||||||
|
GLOBAL VOID
|
||||||
|
IRC_SetPenalty( CLIENT *Client, INT Seconds )
|
||||||
|
{
|
||||||
|
CONN_ID c;
|
||||||
|
|
||||||
|
assert( Client != NULL );
|
||||||
|
assert( Seconds > 0 );
|
||||||
|
|
||||||
|
if( Client_Type( Client ) == CLIENT_SERVER ) return;
|
||||||
|
|
||||||
|
c = Client_Conn( Client );
|
||||||
|
if( c > NONE ) Conn_SetPenalty( c, Seconds );
|
||||||
|
} /* IRC_SetPenalty */
|
||||||
|
|
||||||
|
|
||||||
LOCAL CHAR *
|
LOCAL CHAR *
|
||||||
Get_Prefix( CLIENT *Target, CLIENT *Client )
|
Get_Prefix( CLIENT *Target, CLIENT *Client )
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: irc-write.h,v 1.5 2002/12/12 12:23:43 alex Exp $
|
* $Id: irc-write.h,v 1.5.4.1 2003/11/07 20:51:11 alex Exp $
|
||||||
*
|
*
|
||||||
* Sending IRC commands over the network (header)
|
* Sending IRC commands over the network (header)
|
||||||
*/
|
*/
|
||||||
@@ -18,17 +18,19 @@
|
|||||||
#define __irc_write_h__
|
#define __irc_write_h__
|
||||||
|
|
||||||
|
|
||||||
GLOBAL BOOLEAN IRC_WriteStrClient PARAMS((CLIENT *Client, CHAR *Format, ... ));
|
GLOBAL BOOLEAN IRC_WriteStrClient PARAMS(( CLIENT *Client, CHAR *Format, ... ));
|
||||||
GLOBAL BOOLEAN IRC_WriteStrClientPrefix PARAMS((CLIENT *Client, CLIENT *Prefix, CHAR *Format, ... ));
|
GLOBAL BOOLEAN IRC_WriteStrClientPrefix PARAMS(( CLIENT *Client, CLIENT *Prefix, CHAR *Format, ... ));
|
||||||
|
|
||||||
GLOBAL BOOLEAN IRC_WriteStrChannel PARAMS((CLIENT *Client, CHANNEL *Chan, BOOLEAN Remote, CHAR *Format, ... ));
|
GLOBAL BOOLEAN IRC_WriteStrChannel PARAMS(( CLIENT *Client, CHANNEL *Chan, BOOLEAN Remote, CHAR *Format, ... ));
|
||||||
GLOBAL BOOLEAN IRC_WriteStrChannelPrefix PARAMS((CLIENT *Client, CHANNEL *Chan, CLIENT *Prefix, BOOLEAN Remote, CHAR *Format, ... ));
|
GLOBAL BOOLEAN IRC_WriteStrChannelPrefix PARAMS(( CLIENT *Client, CHANNEL *Chan, CLIENT *Prefix, BOOLEAN Remote, CHAR *Format, ... ));
|
||||||
|
|
||||||
GLOBAL VOID IRC_WriteStrServers PARAMS((CLIENT *ExceptOf, CHAR *Format, ... ));
|
GLOBAL VOID IRC_WriteStrServers PARAMS(( CLIENT *ExceptOf, CHAR *Format, ... ));
|
||||||
GLOBAL VOID IRC_WriteStrServersPrefix PARAMS((CLIENT *ExceptOf, CLIENT *Prefix, CHAR *Format, ... ));
|
GLOBAL VOID IRC_WriteStrServersPrefix PARAMS(( CLIENT *ExceptOf, CLIENT *Prefix, CHAR *Format, ... ));
|
||||||
GLOBAL VOID IRC_WriteStrServersPrefixFlag PARAMS((CLIENT *ExceptOf, CLIENT *Prefix, CHAR Flag, CHAR *Format, ... ));
|
GLOBAL VOID IRC_WriteStrServersPrefixFlag PARAMS(( CLIENT *ExceptOf, CLIENT *Prefix, CHAR Flag, CHAR *Format, ... ));
|
||||||
|
|
||||||
GLOBAL BOOLEAN IRC_WriteStrRelatedPrefix PARAMS((CLIENT *Client, CLIENT *Prefix, BOOLEAN Remote, CHAR *Format, ... ));
|
GLOBAL BOOLEAN IRC_WriteStrRelatedPrefix PARAMS(( CLIENT *Client, CLIENT *Prefix, BOOLEAN Remote, CHAR *Format, ... ));
|
||||||
|
|
||||||
|
GLOBAL VOID IRC_SetPenalty PARAMS(( CLIENT *Client, INT Seconds ));
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: irc.c,v 1.120.2.1 2003/04/29 12:20:14 alex Exp $";
|
static char UNUSED id[] = "$Id: irc.c,v 1.120.2.3 2003/12/26 16:16:48 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -265,6 +265,7 @@ IRC_TRACE( CLIENT *Client, REQUEST *Req )
|
|||||||
/* Some information about us */
|
/* 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;
|
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 );
|
return IRC_WriteStrClient( from, RPL_TRACEEND_MSG, Client_ID( from ), Conf_ServerName, PACKAGE_NAME, PACKAGE_VERSION, NGIRCd_DebugLevel );
|
||||||
} /* IRC_TRACE */
|
} /* IRC_TRACE */
|
||||||
|
|
||||||
@@ -286,6 +287,8 @@ IRC_HELP( CLIENT *Client, REQUEST *Req )
|
|||||||
if( ! IRC_WriteStrClient( Client, "NOTICE %s :%s", Client_ID( Client ), cmd->name )) return DISCONNECTED;
|
if( ! IRC_WriteStrClient( Client, "NOTICE %s :%s", Client_ID( Client ), cmd->name )) return DISCONNECTED;
|
||||||
cmd++;
|
cmd++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IRC_SetPenalty( Client, 2 );
|
||||||
return CONNECTED;
|
return CONNECTED;
|
||||||
} /* IRC_HELP */
|
} /* IRC_HELP */
|
||||||
|
|
||||||
@@ -299,7 +302,7 @@ Option_String( CONN_ID Idx )
|
|||||||
options = Conn_Options( Idx );
|
options = Conn_Options( Idx );
|
||||||
|
|
||||||
strcpy( option_txt, "F" ); /* No idea what this means but the original ircd sends it ... */
|
strcpy( option_txt, "F" ); /* No idea what this means but the original ircd sends it ... */
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( options & CONN_ZIP ) strcat( option_txt, "z" );
|
if( options & CONN_ZIP ) strcat( option_txt, "z" );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: log.c,v 1.43 2003/03/31 15:54:21 alex Exp $";
|
static char UNUSED id[] = "$Id: log.c,v 1.43.2.1 2003/12/26 16:16:48 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -25,7 +25,7 @@ static char UNUSED id[] = "$Id: log.c,v 1.43 2003/03/31 15:54:21 alex Exp $";
|
|||||||
#include <sys/types.h>
|
#include <sys/types.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
#include <syslog.h>
|
#include <syslog.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ LOCAL VOID Wall_ServerNotice PARAMS(( CHAR *Msg ));
|
|||||||
GLOBAL VOID
|
GLOBAL VOID
|
||||||
Log_Init( VOID )
|
Log_Init( VOID )
|
||||||
{
|
{
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
/* Syslog initialisieren */
|
/* Syslog initialisieren */
|
||||||
openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
|
openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
|
||||||
#endif
|
#endif
|
||||||
@@ -125,7 +125,7 @@ Log_Exit( VOID )
|
|||||||
/* Error-File (stderr) loeschen */
|
/* Error-File (stderr) loeschen */
|
||||||
if( unlink( Error_File ) != 0 ) Log( LOG_ERR, "Can't delete \"%s\": %s", Error_File, strerror( errno ));
|
if( unlink( Error_File ) != 0 ) Log( LOG_ERR, "Can't delete \"%s\": %s", Error_File, strerror( errno ));
|
||||||
|
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
/* syslog abmelden */
|
/* syslog abmelden */
|
||||||
closelog( );
|
closelog( );
|
||||||
#endif
|
#endif
|
||||||
@@ -180,7 +180,7 @@ va_dcl
|
|||||||
fprintf( stdout, "[%d] %s\n", Level, msg );
|
fprintf( stdout, "[%d] %s\n", Level, msg );
|
||||||
fflush( stdout );
|
fflush( stdout );
|
||||||
}
|
}
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* Syslog */
|
/* Syslog */
|
||||||
@@ -206,7 +206,7 @@ va_dcl
|
|||||||
GLOBAL VOID
|
GLOBAL VOID
|
||||||
Log_Init_Resolver( VOID )
|
Log_Init_Resolver( VOID )
|
||||||
{
|
{
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
|
openlog( PACKAGE_NAME, LOG_CONS|LOG_PID, LOG_LOCAL5 );
|
||||||
#endif
|
#endif
|
||||||
} /* Log_Init_Resolver */
|
} /* Log_Init_Resolver */
|
||||||
@@ -215,7 +215,7 @@ Log_Init_Resolver( VOID )
|
|||||||
GLOBAL VOID
|
GLOBAL VOID
|
||||||
Log_Exit_Resolver( VOID )
|
Log_Exit_Resolver( VOID )
|
||||||
{
|
{
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
closelog( );
|
closelog( );
|
||||||
#endif
|
#endif
|
||||||
} /* Log_Exit_Resolver */
|
} /* Log_Exit_Resolver */
|
||||||
@@ -234,7 +234,7 @@ va_dcl
|
|||||||
{
|
{
|
||||||
/* Eintrag des Resolver in Logfile(s) schreiben */
|
/* Eintrag des Resolver in Logfile(s) schreiben */
|
||||||
|
|
||||||
#ifndef USE_SYSLOG
|
#ifndef SYSLOG
|
||||||
return;
|
return;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: log.h,v 1.13 2002/12/12 12:23:43 alex Exp $
|
* $Id: log.h,v 1.13.4.1 2003/12/26 16:16:48 alex Exp $
|
||||||
*
|
*
|
||||||
* Logging functions (header)
|
* Logging functions (header)
|
||||||
*/
|
*/
|
||||||
@@ -18,7 +18,7 @@
|
|||||||
#define __log_h__
|
#define __log_h__
|
||||||
|
|
||||||
|
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
# include <syslog.h>
|
# include <syslog.h>
|
||||||
#else
|
#else
|
||||||
# define LOG_EMERG 0
|
# define LOG_EMERG 0
|
||||||
|
|||||||
@@ -8,7 +8,7 @@
|
|||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
* Please read the file COPYING, README and AUTHORS for more information.
|
* Please read the file COPYING, README and AUTHORS for more information.
|
||||||
*
|
*
|
||||||
* $Id: messages.h,v 1.64 2003/03/19 21:16:16 alex Exp $
|
* $Id: messages.h,v 1.64.2.1 2003/12/26 16:16:48 alex Exp $
|
||||||
*
|
*
|
||||||
* IRC numerics (Header)
|
* IRC numerics (Header)
|
||||||
*/
|
*/
|
||||||
@@ -117,7 +117,7 @@
|
|||||||
#define ERR_UMODEUNKNOWNFLAG2_MSG "501 %s :Unknown mode \"%c%c\""
|
#define ERR_UMODEUNKNOWNFLAG2_MSG "501 %s :Unknown mode \"%c%c\""
|
||||||
#define ERR_USERSDONTMATCH_MSG "502 %s :Can't set/get mode for other users"
|
#define ERR_USERSDONTMATCH_MSG "502 %s :Can't set/get mode for other users"
|
||||||
|
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
#define RPL_STATSLINKINFOZIP_MSG "211 %s %s %d %ld %ld/%ld %ld %ld/%ld :%ld"
|
#define RPL_STATSLINKINFOZIP_MSG "211 %s %s %d %ld %ld/%ld %ld %ld/%ld :%ld"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* ngIRCd -- The Next Generation IRC Daemon
|
* ngIRCd -- The Next Generation IRC Daemon
|
||||||
* Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
* Copyright (c)2001-2004 by Alexander Barton (alex@barton.de)
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@@ -14,7 +14,7 @@
|
|||||||
|
|
||||||
#include "portab.h"
|
#include "portab.h"
|
||||||
|
|
||||||
static char UNUSED id[] = "$Id: ngircd.c,v 1.76.2.1 2003/07/18 20:50:05 alex Exp $";
|
static char UNUSED id[] = "$Id: ngircd.c,v 1.76.2.3 2004/01/02 19:24:46 alex Exp $";
|
||||||
|
|
||||||
#include "imp.h"
|
#include "imp.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
@@ -298,7 +298,7 @@ main( int argc, const char *argv[] )
|
|||||||
* sind in doc/Protocol.txt beschrieben. */
|
* sind in doc/Protocol.txt beschrieben. */
|
||||||
#ifdef IRCPLUS
|
#ifdef IRCPLUS
|
||||||
sprintf( NGIRCd_ProtoID, "%s%s %s|%s:%s", PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS );
|
sprintf( NGIRCd_ProtoID, "%s%s %s|%s:%s", PROTOVER, PROTOIRCPLUS, PACKAGE_NAME, PACKAGE_VERSION, IRCPLUSFLAGS );
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
strcat( NGIRCd_ProtoID, "Z" );
|
strcat( NGIRCd_ProtoID, "Z" );
|
||||||
#endif
|
#endif
|
||||||
if( Conf_OperCanMode ) strcat( NGIRCd_ProtoID, "o" );
|
if( Conf_OperCanMode ) strcat( NGIRCd_ProtoID, "o" );
|
||||||
@@ -306,7 +306,7 @@ main( int argc, const char *argv[] )
|
|||||||
sprintf( NGIRCd_ProtoID, "%s%s %s|%s", PROTOVER, PROTOIRC, PACKAGE_NAME, PACKAGE_VERSION );
|
sprintf( NGIRCd_ProtoID, "%s%s %s|%s", PROTOVER, PROTOIRC, PACKAGE_NAME, PACKAGE_VERSION );
|
||||||
#endif
|
#endif
|
||||||
strcat( NGIRCd_ProtoID, " P" );
|
strcat( NGIRCd_ProtoID, " P" );
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
strcat( NGIRCd_ProtoID, "Z" );
|
strcat( NGIRCd_ProtoID, "Z" );
|
||||||
#endif
|
#endif
|
||||||
Log( LOG_DEBUG, "Protocol and server ID is \"%s\".", NGIRCd_ProtoID );
|
Log( LOG_DEBUG, "Protocol and server ID is \"%s\".", NGIRCd_ProtoID );
|
||||||
@@ -361,15 +361,15 @@ NGIRCd_VersionAddition( VOID )
|
|||||||
|
|
||||||
strcpy( txt, "" );
|
strcpy( txt, "" );
|
||||||
|
|
||||||
#ifdef USE_SYSLOG
|
#ifdef SYSLOG
|
||||||
if( txt[0] ) strcat( txt, "+" );
|
if( txt[0] ) strcat( txt, "+" );
|
||||||
strcat( txt, "SYSLOG" );
|
strcat( txt, "SYSLOG" );
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_ZLIB
|
#ifdef ZLIB
|
||||||
if( txt[0] ) strcat( txt, "+" );
|
if( txt[0] ) strcat( txt, "+" );
|
||||||
strcat( txt, "ZLIB" );
|
strcat( txt, "ZLIB" );
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_TCPWRAP
|
#ifdef TCPWRAP
|
||||||
if( txt[0] ) strcat( txt, "+" );
|
if( txt[0] ) strcat( txt, "+" );
|
||||||
strcat( txt, "TCPWRAP" );
|
strcat( txt, "TCPWRAP" );
|
||||||
#endif
|
#endif
|
||||||
@@ -529,7 +529,7 @@ LOCAL VOID
|
|||||||
Show_Version( VOID )
|
Show_Version( VOID )
|
||||||
{
|
{
|
||||||
puts( NGIRCd_Version( ));
|
puts( NGIRCd_Version( ));
|
||||||
puts( "Copyright (c)2001-2003 by Alexander Barton (<alex@barton.de>)." );
|
puts( "Copyright (c)2001-2004 by Alexander Barton (<alex@barton.de>)." );
|
||||||
puts( "Homepage: <http://arthur.ath.cx/~alex/ngircd/>\n" );
|
puts( "Homepage: <http://arthur.ath.cx/~alex/ngircd/>\n" );
|
||||||
puts( "This is free software; see the source for copying conditions. There is NO" );
|
puts( "This is free software; see the source for copying conditions. There is NO" );
|
||||||
puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." );
|
puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." );
|
||||||
|
|||||||
@@ -1,28 +1,35 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# ngIRCd Test Suite
|
# ngIRCd Test Suite
|
||||||
# $Id: getpid.sh,v 1.2.4.1 2003/04/22 20:01:23 alex Exp $
|
# $Id: getpid.sh,v 1.2.4.2 2003/11/07 20:51:11 alex Exp $
|
||||||
|
|
||||||
# wurde ein Name uebergeben?
|
# did we get a name?
|
||||||
[ $# -ne 1 ] && exit 1
|
[ $# -ne 1 ] && exit 1
|
||||||
|
|
||||||
# Flags fuer "ps" ermitteln
|
# detect flags for "ps" and "head"
|
||||||
if [ `uname` = "FreeBSD" ]; then
|
if [ `uname` = "FreeBSD" ]; then
|
||||||
PS_FLAGS="-a"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1"
|
PS_FLAGS="-a"; PS_PIDCOL="1"; HEAD_FLAGS="-n 1"
|
||||||
elif [ `uname` = "A/UX" ]; then
|
elif [ `uname` = "A/UX" ]; then
|
||||||
PS_FLAGS="-ae"; PS_PIDCOL="1"; HEAD_FLAGS="-1"
|
PS_FLAGS="-ae"; PS_PIDCOL="1"; HEAD_FLAGS="-1"
|
||||||
|
elif [ `uname` = "GNU" ]; then
|
||||||
|
PS_FLAGS="-ax"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
|
||||||
else
|
else
|
||||||
PS_FLAGS="-f"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
|
PS_FLAGS="-f"; PS_PIDCOL="2"; HEAD_FLAGS="-n 1"
|
||||||
ps $PS_FLAGS > /dev/null 2>&1
|
ps $PS_FLAGS > /dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then PS_FLAGS="a"; PS_PIDCOL="1"; fi
|
if [ $? -ne 0 ]; then PS_FLAGS="a"; PS_PIDCOL="1"; fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# PID ermitteln
|
# debug output
|
||||||
|
#echo "$0: PS_FLAGS=$PS_FLAGS"
|
||||||
|
#echo "$0: PS_PIDCOL=$PS_PIDCOL"
|
||||||
|
#echo "$0: HEAD_FLAGS=$HEAD_FLAGS"
|
||||||
|
|
||||||
|
# search PID
|
||||||
ps $PS_FLAGS > procs.tmp
|
ps $PS_FLAGS > procs.tmp
|
||||||
cat procs.tmp | grep "$1" | awk "{print \$$PS_PIDCOL}" | sort -n > pids.tmp
|
cat procs.tmp | grep -v "$0" | grep "$1" | awk "{print \$$PS_PIDCOL}" | sort -n > pids.tmp
|
||||||
pid=`head $HEAD_FLAGS pids.tmp`
|
pid=`head $HEAD_FLAGS pids.tmp`
|
||||||
rm -rf procs.tmp pids.tmp
|
rm -rf procs.tmp pids.tmp
|
||||||
|
|
||||||
# ermittelte PID validieren
|
# validate PID
|
||||||
[ "$pid" -gt 1 ] > /dev/null 2>&1
|
[ "$pid" -gt 1 ] > /dev/null 2>&1
|
||||||
[ $? -ne 0 ] && exit 1
|
[ $? -ne 0 ] && exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# $Id: ngircd-test.conf,v 1.3 2002/10/21 13:45:23 alex Exp $
|
# $Id: ngircd-test.conf,v 1.3.4.1 2003/11/07 20:51:11 alex Exp $
|
||||||
|
|
||||||
[Global]
|
[Global]
|
||||||
Name = ngircd.test.server
|
Name = ngircd.test.server
|
||||||
@@ -6,6 +6,7 @@
|
|||||||
Ports = 6789
|
Ports = 6789
|
||||||
MotdFile = ngircd-test.motd
|
MotdFile = ngircd-test.motd
|
||||||
AdminEMail = admin@irc.server
|
AdminEMail = admin@irc.server
|
||||||
|
MaxConnectionsIP = 0
|
||||||
|
|
||||||
[Operator]
|
[Operator]
|
||||||
Name = TestOp
|
Name = TestOp
|
||||||
|
|||||||
@@ -1,31 +1,37 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# ngIRCd Test Suite
|
# ngIRCd Test Suite
|
||||||
# $Id: start-server.sh,v 1.10 2002/11/10 14:28:06 alex Exp $
|
# $Id: start-server.sh,v 1.10.4.1 2003/11/07 20:51:11 alex Exp $
|
||||||
|
|
||||||
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
||||||
|
|
||||||
echo " starting server ..."
|
echo " starting server ..."
|
||||||
|
|
||||||
# alte Logfiles loeschen
|
# remove old logfiles
|
||||||
rm -rf logs *.log
|
rm -rf logs *.log
|
||||||
|
|
||||||
# pruefen, ob getpid.sh gueltige PID's liefert. Wenn dem nicht so ist,
|
# check weather getpid.sh returns valid PIDs. If not, don't start up the
|
||||||
# wird kein ngIRCd gestartet, da dieser ansonsten nicht mehr am Ende
|
# test-server, because we won't be able to kill it at the end of the test.
|
||||||
# des Testlaufs beendet werden koennte!
|
|
||||||
./getpid.sh sh > /dev/null 2>&1
|
./getpid.sh sh > /dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo " error: getpid.sh FAILED!"
|
echo " error: getpid.sh FAILED!"
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# MOTD fuer Test-Server erzeugen
|
# check if there is a test-server already running
|
||||||
|
./getpid.sh T-ngircd > /dev/null 2>&1
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo " error: test-server already running!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# generate MOTD for test-server
|
||||||
echo "This is an ngIRCd Test Server" > ngircd-test.motd
|
echo "This is an ngIRCd Test Server" > ngircd-test.motd
|
||||||
|
|
||||||
# Test-Server starten ...
|
# starting up test-server ...
|
||||||
./T-ngircd -np -f ${srcdir}/ngircd-test.conf > ngircd-test.log 2>&1 &
|
./T-ngircd -np -f ${srcdir}/ngircd-test.conf > ngircd-test.log 2>&1 &
|
||||||
sleep 1
|
sleep 1
|
||||||
|
|
||||||
# validieren, dass Server laeuft
|
# validate running test-server
|
||||||
pid=`./getpid.sh T-ngircd`
|
pid=`./getpid.sh T-ngircd`
|
||||||
[ -n "$pid" ] && kill -0 $pid > /dev/null 2>&1 || exit 1
|
[ -n "$pid" ] && kill -0 $pid > /dev/null 2>&1 || exit 1
|
||||||
|
|
||||||
|
|||||||
@@ -1,17 +1,25 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# ngIRCd Test Suite
|
# ngIRCd Test Suite
|
||||||
# $Id: stop-server.sh,v 1.9 2002/11/10 14:28:06 alex Exp $
|
# $Id: stop-server.sh,v 1.9.4.1 2003/11/07 20:51:11 alex Exp $
|
||||||
|
|
||||||
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
||||||
|
|
||||||
echo " stopping server ..."
|
echo " stopping server ..."
|
||||||
|
|
||||||
# Test-Server stoppen ...
|
# stop test-server ...
|
||||||
pid=`./getpid.sh T-ngircd`
|
pid=`./getpid.sh T-ngircd`
|
||||||
[ -n "$pid" ] && kill $pid > /dev/null 2>&1 || exit 1
|
if [ -z "$pid" ]; then
|
||||||
sleep 1
|
echo " no running server found!?"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
kill $pid > /dev/null 2>&1 || exit 1
|
||||||
|
|
||||||
# jetzt duerfte der Prozess nicht mehr laufen
|
# waiting ...
|
||||||
kill -0 $pid > /dev/null 2>&1 && exit 1 || exit 0
|
for i in 1 2 3 4 5; do
|
||||||
|
kill -0 $pid > /dev/null 2>&1 || exit 0
|
||||||
|
sleep 1
|
||||||
|
done
|
||||||
|
echo " server still running!?"
|
||||||
|
exit 1
|
||||||
|
|
||||||
# -eof-
|
# -eof-
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# ngIRCd Test Suite
|
# ngIRCd Test Suite
|
||||||
# $Id: stress-server.sh,v 1.6.4.1 2003/04/22 20:01:23 alex Exp $
|
# $Id: stress-server.sh,v 1.6.4.2 2003/11/07 20:51:11 alex Exp $
|
||||||
|
|
||||||
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
[ -z "$srcdir" ] && srcdir=`dirname $0`
|
||||||
|
|
||||||
@@ -12,11 +12,11 @@ mkdir -p logs tests
|
|||||||
|
|
||||||
type expect > /dev/null 2>&1
|
type expect > /dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "SKIP: ${name} -- \"expect\" not found."; exit 77
|
echo " ${name}: \"expect\" not found."; exit 77
|
||||||
fi
|
fi
|
||||||
type telnet > /dev/null 2>&1
|
type telnet > /dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "SKIP: ${name} -- \"telnet\" not found."; exit 77
|
echo " ${name}: \"telnet\" not found."; exit 77
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo " stressing server with $CLIENTS clients (be patient!) ..."
|
echo " stressing server with $CLIENTS clients (be patient!) ..."
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# ngIRCd Test Suite
|
# ngIRCd Test Suite
|
||||||
# $Id: tests.sh,v 1.3 2002/09/12 02:29:03 alex Exp $
|
# $Id: tests.sh,v 1.3.6.1 2003/11/07 20:51:11 alex Exp $
|
||||||
|
|
||||||
name=`basename $0`
|
name=`basename $0`
|
||||||
test=`echo ${name} | cut -d '.' -f 1`
|
test=`echo ${name} | cut -d '.' -f 1`
|
||||||
@@ -8,11 +8,11 @@ mkdir -p logs
|
|||||||
|
|
||||||
type expect > /dev/null 2>&1
|
type expect > /dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "SKIP: ${name} -- \"expect\" not found."; exit 77
|
echo " ${name}: \"expect\" not found."; exit 77
|
||||||
fi
|
fi
|
||||||
type telnet > /dev/null 2>&1
|
type telnet > /dev/null 2>&1
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo "SKIP: ${name} -- \"telnet\" not found."; exit 77
|
echo " ${name}: \"telnet\" not found."; exit 77
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo " doing ${test} ..."
|
echo " doing ${test} ..."
|
||||||
|
|||||||
Reference in New Issue
Block a user