1
0
mirror of https://github.com/osmarks/ngircd.git synced 2025-11-06 08:52:58 +00:00

Compare commits

..

13 Commits

Author SHA1 Message Date
Alexander Barton
f44007f42f ngIRCd 0.12.0 2008-05-13 12:42:59 +02:00
Alexander Barton
1a56c77751 Updated NEWS and ChangeLog for ngIRCd 0.12.0. 2008-05-13 12:42:27 +02:00
Florian Westphal
78257374f0 If bind() fails, also print ip address and not just the port number. 2008-05-13 12:30:41 +02:00
Florian Westphal
fc93044909 Fix complie on FreeBSD 5.4 and AIX.
This is picked from commits

d9c26f3aeb
"ng_ipaddr.h must include netinet/in.h."

and
4e507881f3
"On AIX (for example) socklen_t is defined in sys/socket.h"
2008-05-10 21:53:39 +02:00
Ali Shemiran
2e0c62df91 Fix secret channel information leak
/who on a secret channel that the user is not a member of
now returns proper RPL_ENDOFWHO_MSG instead of nothing.

[picked from 12cd554af1709c44f35024d7d2fc368fb22f133d; without testcase]
2008-05-09 21:52:54 +02:00
Alexander Barton
c5ba599140 ngIRCd 0.12.0-pre2 2008-04-29 23:57:11 +02:00
Alexander Barton
afc67ff323 Merge branch 'master' into branch-0-12-x 2008-04-29 15:36:16 +02:00
Alexander Barton
6052d04c60 Merge branch 'master' into branch-0-12-x 2008-04-29 14:41:24 +02:00
Alexander Barton
32bf6d4de0 Merge branch 'master' into branch-0-12-x
Fixed bug 81:
When trying to part a channel ("PART #channel") the client is not member of
the daemon now correctly reports the numeric ERR_NOTONCHANNEL (442) insted
of ERR_NOSUCHCHANNEL (403).
2008-04-25 00:20:35 +02:00
Alexander Barton
b187fac244 Get rid of cvs-version.* and CVSDATE definition. 2008-04-20 23:10:22 +02:00
Alexander Barton
6e9389b86c Documentation: get rid of some more references to CVS, switch to GIT. 2008-04-20 22:48:05 +02:00
Alexander Barton
a8e0eb62e9 Don't include doc/CVS.txt in distribution archive, use doc/GIT.txt now! 2008-04-20 16:46:49 +02:00
Alexander Barton
4ea2932967 ngIRCd 0.12.0-pre1 2008-04-20 15:53:49 +02:00
213 changed files with 9354 additions and 24695 deletions

9
.gitignore vendored
View File

@@ -4,23 +4,14 @@ aclocal.m4
ansi2knr.1 ansi2knr.1
ansi2knr.c ansi2knr.c
ansi2knr.h ansi2knr.h
ar-lib
autom4te.cache autom4te.cache
build-stamp-ngircd*
compile
config.cache
config.log config.log
config.status config.status
configure configure
configure.ac
configure.lineno configure.lineno
cov-int
cscope.out
debian
depcomp depcomp
install-sh install-sh
missing missing
ngircd.dest
.deps .deps
*.a *.a
*.o *.o

View File

@@ -1,4 +0,0 @@
# mailmap file for git-[short]log and git-blame
Alexander Barton <anonymous>
Ali Shemiran <ashemira@ucsd.edu>

View File

@@ -1,8 +0,0 @@
language: c
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq libident-dev libpam0g-dev libssl-dev libwrap0-dev zlib1g-dev expect telnet
compiler:
- gcc
- clang
script: ./autogen.sh && ./configure --enable-ipv6 --with-iconv --with-ident --with-openssl --with-pam --with-tcp-wrappers --with-zlib && make check

51
AUTHORS
View File

@@ -1,8 +1,9 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2014 Alexander Barton and Contributors. (c)2001-2007 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
@@ -10,49 +11,31 @@
Note: If you have critics, patches or something else, please feel free to Note: If you have critics, patches or something else, please feel free to
post a mail to the ngIRCd mailing list: <ngircd-ml@arthur.barton.de> (please post a mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
see <http://ngircd.barton.de/#ml> for details). <http://ngircd.barton.de/#ml> for details). Don't mail the contributors
directly, if possible!
Don't mail the people listed here directly, if possible!
Main Authors Main Authors
~~~~~~~~~~~~ ~~~~~~~~~~~~
Alexander Barton <alex@barton.de> Alexander Barton, <alex@barton.de> (alex)
Florian Westphal <fw@strlen.de> Florian Westphal, <westphal@foo.fh-furtwangen.de> (fw)
Contributors Contributors
~~~~~~~~~~~~ ~~~~~~~~~~~~
Ali Shemiran <ashemira@ucsd.edu> Goetz Hoffart, <goetz@hoffart.de> (goetz)
Ask Bjørn Hansen <ask@develooper.com> Ilja Osthoff, <i.osthoff@gmx.net> (ilja)
Benjamin Pineau <ben@zouh.org> Benjamin Pineau, <ben@zouh.org>
Brandon Beresini <beresini@google.com> Sean Reifschneider, <jafo-rpms@tummy.com>
Brett Smith <brett@w3.org>
Brian Collins <bricollins@gmail.com>
Bryan Caldwell <bcaldwel@ucsd.edu>
Christoph Biedl <ngircd.anoy@manchmal.in-ulm.de>
DNS <dns@rbose.org>
Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu>
David Kingston <deathking1337@aim.com>
Eric Grunow <egrunow@ucsd.edu>
Federico G. Schwindt <fgsch@lodoss.net>
Gabor Adam Toth <tg@tgbit.net>
Goetz Hoffart <goetz@hoffart.de>
Ilja Osthoff <i.osthoff@gmx.net>
Jari Aalto <jari.aalto@cante.net>
Neale Pickett <neale@woozle.org>
Rolf Eike Beer <eike@sf-mail.de>
Scott Perry <scperry@ucsd.edu>
Sean Reifschneider <jafo-rpms@tummy.com>
Sebastian Köhler <sebkoehler@whoami.org.uk>
Tassilo Schweyer <dev@welterde.de>
William Pitcock <nenolod@dereferenced.org>
xor <xorboy@gmail.com>
Code snippets Code snippets
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
J. Kercheval: pattern matching functions J. Kercheval: pattern matching functions
Patrick Powell <papowell@astart.com>: snprintf()-function Patrick Powell, <papowell@astart.com>: snprintf()-function
Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
--
$Id: AUTHORS,v 1.13 2007/10/04 15:18:48 alex Exp $

25
COPYING
View File

@@ -1,8 +1,8 @@
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
Version 2, June 1991 Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc., Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed. of this license document, but changing it is not allowed.
@@ -15,7 +15,7 @@ software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to the GNU Library General Public License instead.) You can apply it to
your programs, too. your programs, too.
When we speak of free software, we are referring to freedom, not When we speak of free software, we are referring to freedom, not
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and The precise terms and conditions for copying, distribution and
modification follow. modification follow.
GNU GENERAL PUBLIC LICENSE GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
License. (Exception: if the Program itself is interactive but License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on does not normally print such an announcement, your work based on
the Program is not required to print an announcement.) the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program, identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in and can be reasonably considered independent and separate works in
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not distribution of the source code, even though third parties are not
compelled to copy the source along with the object code. compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program 4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is otherwise to copy, modify, sublicense or distribute the Program is
@@ -225,7 +225,7 @@ impose that choice.
This section is intended to make thoroughly clear what is believed to This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License. be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in 8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License original copyright holder who places the Program under this License
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES. POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest If you develop a new program, and you want it to be of the greatest
@@ -303,9 +303,10 @@ the "copyright" line and a pointer to where the full notice is found.
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. GNU General Public License for more details.
You should have received a copy of the GNU General Public License along You should have received a copy of the GNU General Public License
with this program; if not, write to the Free Software Foundation, Inc., along with this program; if not, write to the Free Software
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail. Also add information on how to contact you by electronic and paper mail.
@@ -335,5 +336,5 @@ necessary. Here is a sample; alter the names:
This General Public License does not permit incorporating your program into This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General library. If this is what you want to do, use the GNU Library General
Public License instead of this License. Public License instead of this License.

1072
ChangeLog

File diff suppressed because it is too large Load Diff

152
INSTALL
View File

@@ -1,78 +1,19 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2014 Alexander Barton and Contributors. (c)2001-2007 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
-- INSTALL -- -- INSTALL --
I. Upgrade Information I. Upgrade Information
~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~
Differences to version 20.x
- Starting with ngIRCd 21, the ciphers used by SSL are configurable and
default to HIGH:!aNULL:@STRENGTH (OpenSSL) or SECURE128 (GnuTLS).
Previous version were using the OpenSSL or GnuTLS defaults, DEFAULT
and NORMAL respectively.
- When adding GLINE's or KLINE's to ngIRCd 21 (or newer), all clients matching
the new mask will be KILL'ed. This was not the case with earlier versions
that only added the mask but didn't kill already connected users.
Differences to version 19.x
- Starting with ngIRCd 20, users can "cloak" their hostname only when the
configuration variable "CloakHostModeX" (introduced in 19.2) is set.
Otherwise, only IRC operators, other servers, and services are allowed to
set mode +x. This prevents regular users from changing their hostmask to
the name of the IRC server itself, which confused quite a few people ;-)
Differences to version 17
- Support for ZeroConf/Bonjour/Rendezvous service registration has been
removed. The configuration option "NoZeroconf" is no longer available.
- The structure of ngircd.conf has been cleaned up and three new configuration
sections have been introduced: [Limits], [Options], and [SSL].
Lots of configuration variables stored in the [Global] section are now
deprecated there and should be stored in one of these new sections (but
still work in [Global]):
"AllowRemoteOper" -> [Options]
"ChrootDir" -> [Options]
"ConnectIPv4" -> [Options]
"ConnectIPv6" -> [Options]
"ConnectRetry" -> [Limits]
"MaxConnections" -> [Limits]
"MaxConnectionsIP" -> [Limits]
"MaxJoins" -> [Limits]
"MaxNickLength" -> [Limits]
"NoDNS" -> [Options], and renamed to "DNS"
"NoIdent" -> [Options], and renamed to "Ident"
"NoPAM" -> [Options], and renamed to "PAM"
"OperCanUseMode" -> [Options]
"OperServerMode" -> [Options]
"PingTimeout" -> [Limits]
"PongTimeout" -> [Limits]
"PredefChannelsOnly" -> [Options]
"SSLCertFile" -> [SSL], and renamed to "CertFile"
"SSLDHFile" -> [SSL], and renamed to "DHFile"
"SSLKeyFile" -> [SSL], and renamed to "KeyFile"
"SSLKeyFilePassword" -> [SSL], and renamed to "KeyFilePassword"
"SSLPorts" -> [SSL], and renamed to "Ports"
"SyslogFacility" -> [Options]
"WebircPassword" -> [Options]
You should adjust your ngircd.conf and run "ngircd --configtest" to make
sure that your settings are correct and up to date!
Differences to version 16
- Changes to the "MotdFile" specified in ngircd.conf now require a ngircd
configuration reload to take effect (HUP signal, REHASH command).
Differences to version 0.9.x Differences to version 0.9.x
- The option of the configure script to enable support for Zeroconf/Bonjour/ - The option of the configure script to enable support for Zeroconf/Bonjour/
@@ -112,7 +53,6 @@ automake ("configure") should be no problem.
The normal installation procedure after getting (and expanding) the source The normal installation procedure after getting (and expanding) the source
files (using a distribution archive or GIT) is as following: files (using a distribution archive or GIT) is as following:
0) Satisfy prerequisites
1) ./autogen.sh [only necessary when using GIT] 1) ./autogen.sh [only necessary when using GIT]
2) ./configure 2) ./configure
3) make 3) make
@@ -125,8 +65,7 @@ location, /usr/local/sbin/.
The next step is to configure and afterwards starting the daemon. Please The next step is to configure and afterwards starting the daemon. Please
have a look at the ngircd(8) and ngircd.conf(5) manual pages for details have a look at the ngircd(8) and ngircd.conf(5) manual pages for details
and all possible options -- and don't forget to run "ngircd --configtest" and all possible options.
to validate your configuration file!
If no previous version of the configuration file exists (the standard name If no previous version of the configuration file exists (the standard name
is /usr/local/etc/ngircd.conf), a sample configuration file containing all is /usr/local/etc/ngircd.conf), a sample configuration file containing all
@@ -134,30 +73,6 @@ possible options will be installed there. You'll find its template in the
doc/ directory: sample-ngircd.conf. doc/ directory: sample-ngircd.conf.
0): Satisfy prerequisites
When building from source, you'll need some other software to build ngIRCd:
for example a working C compiler, make tool, GNU automake and autoconf (only
when not using a distribution archive), and a few libraries depending on the
features you want to compile in (like IDENT support, SSL, and PAM).
If you are using one of the "big" operating systems or Linux distributions,
you can use the following commands to install all the required packages to
build the sources including all optional features and to run the test suite:
* RedHat / Fedora based distributions:
yum install \
autoconf automake expect gcc glibc-devel gnutls-devel \
libident-devel make pam-devel tcp_wrappers-devel telnet zlib-devel
* Debian / Ubuntu based distributions:
apt-get install \
autoconf automake build-essential expect libgnutls-dev \
libident-dev libpam-dev libwrap0-dev libz-dev telnet
1): "autogen.sh" 1): "autogen.sh"
The first step, autogen.sh, is only necessary if the configure-script isn't The first step, autogen.sh, is only necessary if the configure-script isn't
@@ -168,21 +83,17 @@ This step is therefore only interesting for developers.
autogen.sh produces the Makefile.in's, which are necessary for the configure autogen.sh produces the Makefile.in's, which are necessary for the configure
script itself, and some more files for make. To run autogen.sh you'll need script itself, and some more files for make. To run autogen.sh you'll need
GNU autoconf and GNU automake: at least autoconf 2.61 and automake 1.10 are GNU autoconf and GNU automake (use recent versions! autoconf 2.53 and
requird, newer is better. But don't use automake 1.12 or newer for creating automake 1.6.1 are known to work).
distribution archives: it will work but lack "de-ANSI-fication" support in the
generated Makefile's! Stick with automake 1.11.x for this purpose ...
So automake 1.11.x and autoconf 2.67+ is recommended.
Again: "end users" do not need this step and neither need GNU autoconf nor GNU Again: "end users" do not need this step!
automake at all!
2): "./configure" 2): "./configure"
The configure-script is used to detect local system dependencies. The configure-script is used to detect local system dependencies.
In the perfect case, configure should recognize all needed libraries, header In the perfect case, configure should recognise all needed libraries, header
files and so on. If this shouldn't work, "./configure --help" shows all files and so on. If this shouldn't work, "./configure --help" shows all
possible options. possible options.
@@ -209,12 +120,11 @@ the local system. Normally, root privileges are necessary to complete this
step. If there is already an older configuration file present, it won't be step. If there is already an older configuration file present, it won't be
overwritten. overwritten.
These files and folders will be installed by default: This files will be installed by default:
- /usr/local/sbin/ngircd: executable server - /usr/local/sbin/ngircd: executable server
- /usr/local/etc/ngircd.conf: sample configuration (if not already present) - /usr/local/etc/ngircd.conf: sample configuration (if not already present)
- /usr/local/share/doc/ngircd/: documentation - /usr/local/share/doc/ngircd/: documentation
- /usr/local/share/man/: manual pages
III. Additional features III. Additional features
@@ -260,6 +170,13 @@ standard locations.
Include support for IDENT ("AUTH") lookups. The "ident" library is Include support for IDENT ("AUTH") lookups. The "ident" library is
required for this option. required for this option.
* ZeroConf Support:
--with-zeroconf[=<path>]
Compile ngIRCd with support for ZeroConf multicast DNS service registration.
Either the Apple ZeroConf implementation (e. g. Mac OS X) or the Howl
library is required. Which one is available is autodetected.
* TCP-Wrappers: * TCP-Wrappers:
--with-tcp-wrappers[=<path>] --with-tcp-wrappers[=<path>]
@@ -267,24 +184,6 @@ standard locations.
to the daemon, for example by using "/etc/hosts.{allow|deny}". to the daemon, for example by using "/etc/hosts.{allow|deny}".
The "libwrap" is required for this option. The "libwrap" is required for this option.
* PAM:
--with-pam[=<path>]
Enable support for PAM, the Pluggable Authentication Modules library.
See doc/PAM.txt for details.
* SSL:
--with-openssl[=<path>]
--with-gnutls[=<path>]
Enable support for SSL/TLS using OpenSSL or gnutls libraries.
See doc/SSL.txt for details.
* IPv6:
--enable-ipv6
Adds support for version 6 of the Internet Protocol.
IV. Useful make-targets IV. Useful make-targets
~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~
@@ -308,20 +207,19 @@ V. Sample configuration file ngircd.conf
In the sample configuration file, there are comments beginning with "#" OR In the sample configuration file, there are comments beginning with "#" OR
";" -- this is only for the better understanding of the file. ";" -- this is only for the better understanding of the file.
The file is separated in five blocks: [Global], [Features], [Operator], The file is separated in four blocks: [Global], [Operator], [Server], and
[Server], and [Channel]. [Channel].
In the [Global] section, there is the main configuration like the server In the [Global] section, there is the main configuration like the server
name and the ports, on which the server should be listening. Options in name and the ports, on which the server should be listening. IRC operators
the [Features] section enable or disable functionality in the daemon. of this server are defined in [Operator] blocks. [Server] is the section
IRC operators of this server are defined in [Operator] blocks, remote where server links are configured. And [Channel] blocks are used to
servers are configured in [Server] sections, and [Channel] blocks are configure pre-defined ("persistent") IRC channels.
used to configure pre-defined ("persistent") IRC channels.
The meaning of the variables in the configuration file is explained in the The meaning of the variables in the configuration file is explained in the
"doc/sample-ngircd.conf", which is used as sample configuration file in "doc/sample-ngircd.conf", which is used as sample configuration file in
/usr/local/etc after running "make install" (if you don't already have one) /usr/local/etc after running "make install" (if you don't already have one)
and in the ngircd.conf(5) manual page. and in the "ngircd.conf" manual page.
VI. Command line options VI. Command line options
@@ -346,5 +244,3 @@ These parameters could be passed to the ngIRCd:
Use "--help" to see a short help text describing all available parameters Use "--help" to see a short help text describing all available parameters
the server understands, with "--version" the ngIRCd shows its version the server understands, with "--version" the ngIRCd shows its version
number. In both cases the server exits after the output. number. In both cases the server exits after the output.
Please see the ngircd(8) manual page for complete details!

View File

@@ -1,6 +1,6 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors # Copyright (c)2001-2008 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
@@ -13,81 +13,36 @@ AUTOMAKE_OPTIONS = gnu
SUBDIRS = doc src man contrib SUBDIRS = doc src man contrib
EXTRA_DIST = autogen.sh configure.ng .mailmap clean-local:
clean-local: osxpkg-clean
rm -f build-stamp* rm -f build-stamp*
maintainer-clean-local: maintainer-clean-local:
rm -rf autom4te.cache rm -rf autom4te.cache
rm -f Makefile.in Makefile aclocal.m4 configure configure.ac rm -f Makefile.in Makefile aclocal.m4 configure
rm -f ar-lib mkinstalldirs missing depcomp install-sh rm -f mkinstalldirs missing depcomp install-sh
rm -f config.log debian rm -f config.log debian
testsuite: testsuite:
cd src/testsuite && make check make -C src/testsuite check
lint: lint:
cd src/ngircd && make lint make -C src/ngircd lint
srcdoc: srcdoc:
cd doc && make srcdoc make -C doc srcdoc
have-xcodebuild: xcode:
@xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -list \ @xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -list \
>/dev/null 2>&1 \ >/dev/null 2>&1 \
|| ( echo; echo "Error: \"xcodebuild\" not found!"; echo; exit 1 ) || ( echo; echo "Error: \"xcodebuild\" not found!"; echo; exit 1 )
have-packagemaker:
@packagemaker >/dev/null 2>&1; [ $$? -le 1 ] \
|| ( echo; echo "Error: \"packagemaker\" not found!"; echo; exit 2)
xcode: have-xcodebuild
rel=`git describe|sed -e 's/rel-//g'|sed -e 's/-/~/'`; \
def="GCC_PREPROCESSOR_DEFINITIONS=\"VERSION=\\\"$$rel\\\"\""; \
xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \ xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
-configuration Default $$def build -buildstyle Development
xcode-clean: have-xcodebuild
xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
-configuration Default clean
rm -fr contrib/MacOSX/build
rpm: distcheck rpm: distcheck
rpm -ta ngircd-*.tar.gz rpm -ta ngircd-*.tar.gz
deb: deb:
[ -f debian/rules ] || ln -s contrib/Debian debian [ -f debian/rules ] || ln -s contrib/Debian debian
dpkg-buildpackage -rfakeroot -i dpkg-buildpackage -rfakeroot
osxpkg: have-packagemaker osxpkg-dest
cd contrib/MacOSX && packagemaker --no-recommend \
--doc ngIRCd.pmdoc \
--out ../../$(distdir).mpkg
rm -f $(distdir).mpkg.zip
zip -ro9 $(distdir).mpkg.zip $(distdir).mpkg
make osxpkg-clean
osxpkg-clean:
[ ! -r ngircd.dest ] || sudo -n rm -rf ngircd.dest
rm -rf ngircd.dest $(distdir).mpkg
osxpkg-dest: have-xcodebuild osxpkg-clean clean
./configure --prefix=/opt/ngircd
make xcode
make -C contrib/MacOSX de.barton.ngircd.plist
mkdir -p ngircd.dest/opt/ngircd/sbin
DESTDIR="$$PWD/ngircd.dest" make -C doc install
DESTDIR="$$PWD/ngircd.dest" make -C contrib install
DESTDIR="$$PWD/ngircd.dest" make -C man install
cp contrib/MacOSX/build/Default/ngIRCd \
ngircd.dest/opt/ngircd/sbin/ngircd
rm ngircd.dest/opt/ngircd/etc/ngircd.conf
echo "Have a nice day IRCing!" >ngircd.dest/opt/ngircd/etc/ngircd.motd
chmod -R a-s,og-w,a+rX ngircd.dest
sudo chown -R root:wheel ngircd.dest
.PHONY: deb have-packagemaker have-xcodebuild lint osxpkg osxpkg-clean \
osxpkg-dest rpm srcdoc testsuite xcode xcode-clean
# -eof- # -eof-

555
NEWS
View File

@@ -1,554 +1,19 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2014 Alexander Barton and Contributors. (c)2001-2008 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
-- NEWS -- -- NEWS --
ngIRCd 22
ngIRCd 22~rc1 (2014-09-29)
- Sync "except lists" between servers: Up to now, ban, invite, and G-Line
lists have been synced between servers while linking -- but obviously
nobody noticed that except list have been missing ever since. Until now.
Thanks to "j4jackj", who reported this issue in #ngircd.
- Allow longer user names (up to 63 characters) for authentication.
- Increase MAX_SERVERS from 16 to 64: There are installations out there
that would like to configure more than 16 links per server, so increase
this limit. Best would be to get rid of MAX_SERVERS altogether and make
if fully dynamic, but start with this quick and dirty hack ...
- Test suite/platformtest.sh: Detect when tests have been skipped.
- Allow "DefaultUserModes" to set all possible modes, including modes only
settable by IRC Operators.
- Implement user mode "F": "relaxed flood protection". Clients with mode "F"
set are allowed to send data to the daemon. This mode is only settable by
IRC Operators and can cause problems in the network -- so be careful and
only set it on "trusted" clients!
User mode "F" is used by Bahamut for this purpose, for example.
- Use server password when PAM is compiled in but disabled.
- Streamline punctuation of log messages.
- Return ISUPPORT(005) numerics on "VERSION". This is how ircd-seven,
Charybdis, Hybrid, and InspIRCd behave, for example.
- configure: Only link "contrib/Debian" if it exists, which isn't the case
on "VPATH builds", for example.
- Show the account name in WHOIS. This uses the same numeric as Charybdis
and ircu families: WHOISLOGGEDIN(330).
- Pattern matching: Remove "range matching" in our pattern matching code
using the "[...]" syntax, because [ and ] are valid characters in nick
names and one has to quote them currently using the "\" character, which
is quite unexpected for users.
- platformtest.sh: New option "-x", don't regenerate build system and
allow using separate source and build trees.
- Test suite: explicitly enable glibc memory checking.
- Make "MODE -k" handling more robust and compatible, send "fake '*' key"
in all replies.
- portabtest: Actually test the functions snprintf(), strlcpy(), strlcat(),
and vsnprintf() for correctness, not only existence (which was quite
useless, because if they weren't available, the program could not have
been linked at all ...).
- Implement new configuration option "Network": it is used to set the
(completely optional) "network name", to which this instance of the
daemon belongs. When set, this name is used in the ISUPPORT(005) numeric
which is sent to all clients connecting to the server after logging in.
- Update doc/Platforms.txt.
- Various code cleanups, remove unused code, streamline error handling.
Remove all imp.h and exp.h header files, support non-standard vsnprintf()
return codes, and fix some K&R C portability issues. Streamline
DEBUG_ARRAY, DEBUG_BUFFER, DEBUG_IO, DEBUG_ZIP definitions.
- Increase penalty time to 10 seconds when handling OPER commands with an
invalid password.
ngIRCd 21.1 (2014-03-25)
- Don't ignore but use the server password when PAM is compiled in but
disabled. Thanks to Roy Sindre Norangshol <roy.sindre@norangshol.no>!
- doc/Platforms.txt: Update from master branch.
- doc/Services.txt: Update information for Anope 2.x.
- configure: add support for the LDFLAGS_END and LIBS_END variables to add
linker flags and libraries at the end of the configure run (CFLAGS_END has
been implemented already).
- Update Copyright notices for 2014 :-)
ngIRCd 21 (2013-10-30)
- Call arc4random_stir() in forked subprocesses, when available. This
is required by FreeBSD <10 and current NetBSD at least to correctly
initialize the "arc4" random number generator on these platforms.
ngIRCd 21~rc2 (2013-10-20)
- Report the correct configuration file name on configuration errors,
support longer configuration lines, and warn when lines are truncated.
ngIRCd 21~rc1 (2013-10-05)
- Actually KILL clients on GLINE/KLINE. (Closes bug #156)
- Add support to show all user links using the "STATS L" (uppercase)
command (restricted to IRC Operators).
- Implement configurable SSL cipher list selection for GnuTLS and OpenSSL
using the new configuration option "CipherList". In addition, this
changes the defaults to more secure values: "HIGH:!aNULL:@STRENGTH" for
OpenSSL, and "SECURE128" for GnuTLS.
- Show connection flag "s" (SSL) in RPL_TRACE{LINK|SERVER} messages: now
you can check if a server-to-server link is SSL-encrypted or not using
the IRC "TRACE" command.
- Implement the new configuration option "DefaultUserModes" which lists
user modes that become automatically set on new local clients right
after login. Please note that only modes can be set that the client
could set on itself, so you can't set "a" (away) or "o" (IRC Op),
for example! User modes "i" (invisible) or "x" (cloaked) etc. are
"interesting", though. (Closes bug #160)
- Add support for the new METADATA "account" property, which allows
services to automatically identify users after netsplits and across
service restarts.
- Implement a new configuration option "AllowedChannelTypes" that lists
all allowed channel types (channel prefixes) for newly created channels
on the local server. By default, all supported channel types are allowed.
If set to the empty string, local clients can't create new channels at
all, which equals the old "PredefChannelsOnly = yes" setting.
This change deprecates the "PredefChannelsOnly" variable, too, but it is
still supported and translated to the appropriate "AllowedChannelTypes"
setting. When the old "PredefChannelsOnly" variable is processed, a
warning message is logged. (Closes bug #152)
- Add support for "client certificate fingerprinting". When a client
passes an SSL certificate to the server, the "fingerprint" will be
forwarded in the network which enables IRC services to identify the
user using this certificate and not using passwords.
- Implement a new configuration option "IncludeDir" in the "[Options]"
section that can be used to specify a directory which can contain
further configuration files and configuration file snippets matching
the pattern "*.conf". These files are read in after the main server
configuration file ("ngircd.conf" by default) has been read in and
parsed. The default is "$SYSCONFDIR/ngircd.conf.d", so that it is
possible to adjust the configuration only by placing additional files
into this directory. (Closes bug #157)
- Add Travis-CI configuration file (".travis.yml") to project.
- ngIRCd now accepts user names including "@" characters, saves the
unmodified name for authentication but stores only the part in front
of the "@" character as "IRC user name". And the latter is how
ircd2.11, Bahamut, and irc-seven behave as well. (Closes bug #155)
- Lots of IRC "information functions" like ADMIN, INFO, ... now accept
server masks and names of connected users (in addition to server names)
for specifying the target server of the command. (Closes bug #153)
- Implement a new configuration option "IdleTimeout" in the "[Limits]"
section of the configuration file which can be used to set a timeout
in seconds after which the whole daemon will shutdown when no more
connections are left active after handling at least one client.
The default is 0, "never".
This can be useful for testing or when ngIRCd is started using "socket
activation" with systemd(8), for example.
- Implement support for systemd(8) "socket activation".
- Enable WHOIS to display information about IRC Services using the new
numeric 310(RPL_WHOISSERVICE) This numeric is used for this purpose by
InspIRCd, for example -- but as usual, other numerics are in use, too,
like 613 in UltimateIRCd ...
Please note that neither the Operator (+o) not the "bot status" (+B)
of an IRC service is displayed in the output.
- Update systemd(8) example configuration files in ./contrib/ directory:
the "ngircd.service" file now uses the "forking" service type which
enhances the log messages shown by "systemctl status ngircd.service",
and the new "ngircd.socket" file configures a systemd socket that
configures a socket for ngIRCd and launches the daemon on demand.
- Enhance help system and the HELP command: now a "help text file" can be
set using the new configuration option "HelpFile" ("global" section),
which is read in and parsed on server startup and configuration reload,
and then is used to output individual help texts to specific topics.
Please see the file ./doc/Commands.txt for details.
ngIRCd 20.3 (2013-08-23)
- This release is a bugfix release only, without new features.
- Security: Fix a denial of service bug (server crash) which could happen
when the configuration option "NoticeAuth" is enabled (which is NOT the
default) and ngIRCd failed to send the "notice auth" messages to new
clients connecting to the server (CVE-2013-5580).
ngIRCd 20.2 (2013-02-15)
- This release is a bugfix release only, without new features.
- Security: Fix a denial of service bug in the function handling KICK
commands that could be used by arbitrary users to to crash the daemon
(CVE-2013-1747).
ngIRCd 20.1 (2013-01-02)
- This release is a bugfix release only, without new features.
ngIRCd 20 (2012-12-17)
- Allow user names ("INDENT") up to 20 characters when ngIRCd has not
been configured for "strict RFC mode". This is useful if you are using
external (PAM) authentication mechanisms that require longer user names.
Patch suggested by Brett Smith <brett@w3.org>, see
<http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.
ngIRCd 20~rc2 (2012-12-02)
- Rework cloaked hostname handling and implement the "METADATA cloakhost"
subcommand: Now ngIRCd uses two fields internally, one to store the
"real" hostname and one to save the "cloaked" hostname. This allows
"foreign servers" (aka "IRC services") to alter the real and cloaked
hostnames of clients without problems, even when the user itself issues
additional "MODE +x" and "MODE -x" commands.
ngIRCd 20~rc1 (2012-11-11)
- Update doc/Services.txt: describe the upcoming version of Anope 1.9.8,
then including a protocol module for ngIRCd. And remove our own patches
in ./contrib/Anope because they aren't supported any more ...
- Implement new "METADATA" command which can be used by remote servers
and IRC services to update client metadata like the client info text
("real name"), user name, and hostname, and use this command to
configure an cloaked hostname (user mode "+x") on remote servers:
This prevents "double cloaking" of hostnames and even cloaked
hostnames are in sync on all servers supporting "METADATA" now.
- Implement new IRC "SVSNICK" command to allow remote servers (and IRC
services) to change nicknames of already registered users. The SVSNICK
command itself doesn't change the nickname, but it becomes forwarded
to the server to which the user is connected to. And then this server
initiates the real nickname changing using regular NICK commands.
This allows to run mixed networks with old servers not supporting the
SVSNICK command, because SVSNICK commands for nicknames on such servers
are silently ignored and don't cause a desynchronization of the network.
- New configuration option "MaxListSize" to configure the maximum number
of channels returned by a LIST command. The default is 100, as before.
- Implement user mode "b", "block messages": when a user has set mode "b",
all private messages and notices to this user are blocked if they don't
originate from a registered user, an IRC Op, server or service. The
originator gets an error numeric sent back in this case,
ERR_NONONREG_MSG (486), which is used by UnrealIRCd, too. (Closes #144)
- Implement channel mode "V" (invite disallow): If the new channel mode
"V" is set, the INVITE command becomes invalid and all clients get the
new ERR_NOINVITE_MSG (518) reply. (Closes #143)
- Implement channel mode "Q" and user mode "q": Both modes protect users
from channel kicks: only IRC operators and servers can kick users having
mode "q" or in channels with mode "Q". (Closes #141)
- Allow users to "cloak" their hostname only when the configuration
variable "CloakHostModeX" (introduced in 19.2) is set. Otherwise, only
IRC operators, other servers, and services are allowed to set the user
mode "+x": this prevents regular users from changing their hostmask to
the name of the IRC server itself, which confused quite a few people ;-)
(Closes #133)
- New configuration option "OperChanPAutoOp": If disabled, IRC operators
don't become channel operators in persistent channels when joining.
Enabled by default, which has been the behavior of ngIRCd up to this
patch. (Closes #135)
- Allow IRC operators to see secret (+s) channels in LIST command as long
as the "MorePrivacy" configuration option isn't enabled in the
configuration file. (Closes #136)
- Implement new (optional) IRC+ "CHARCONV" command to set a client
character set that the server translates all messages to/from UTF-8.
This feature requires the "libiconv" library and must be enabled using
the new "--with-iconv" option of the ./configure script. See
doc/Protocol.txt for details. (Closes #109)
- Implement user mode "B" ("Bot flag"): it is settable and unsettable by
every (non-restricted) client. This is how Unreal and InspIRCd do
behave, and so do we :-)
- Implement channel mode "M": Only the server, identified users and IRC
operators are able to talk in such a channel.
- Block nicknames that are reserved for services and are defined using the
configuration variable "ServiceMask" in "Server" blocks; And this
variable now can handle more than one mask separated by commas.
- Implemented XOP channel user modes: "Half Op" ("+h", prefix "%") can set
the channel modes +imntvIbek and kick all +v and normal users; "Admin"
("+a", prefix "&") can set channel modes +imntvIbekoRsz and kick all +o,
+h, +v and normal users; and "Owner" ("+q", prefix "~") can set channel
modes +imntvIbekoRsz and kick all +a, +o, +h, +v and normal users.
- Implement hashed cloaked hostnames for both the "CloakHost" and
"CloakHostModeX" configuration options: now the admin can use the new
'%x' placeholder to insert a hashed version of the clients hostname,
and the new configuration option "CloakHostSalt" defines the salt for
the hash function. When "CloakHostSalt" is not set (the default), a
random salt will be generated after each server restart.
ngIRCd 19.2 (2012-06-19)
ngIRCd 19.2~rc1 (2012-06-13)
- New configuration option "CloakHostModeX" to configure the hostname
that gets used for IRC clients which have user mode "+x" enabled.
Up to now, the name of the IRC server itself has been used for this,
which still is the default when "CloakHostModeX" isn't set.
- Add instructions for setting up Atheme IRC services.
- Implement support for IRC capability handling, the new "CAP" command,
and capablity "multi-prefix" which allows both the NAME and WHO command
handlers to return more than one "class prefix" to the client.
ngIRCd 19.1 (2012-03-19)
- Really include _all_ patches to build the Anope module into the
distribution archive ... ooops!
ngIRCd 19 (2012-02-29)
ngIRCd 19~rc1 (2012-02-12)
- Update preliminary ngIRCd protocol module for Anope 1.9.6, which now
is the only supported version.
- New numeric RPL_WHOISHOST_MSG(378), which returns the DNS host name
(if available) and the IP address of a client in the WHOIS reply.
Only the user itself and local IRC operators get this numeric.
- Implement channel exception list (mode 'e'). This allows a channel
operator to define exception masks that allow users to join the
channel even when a "ban" would match and prevent them from joining:
the exception list (e) overrides the ban list (b).
- Implement user mode 'C': If the target user of a PRIVMSG or NOTICE
command has the user mode 'C' set, it is required that both sender
and receiver are on the same channel. This prevents private flooding
by completely unknown clients.
- New RPL_WHOISREGNICK_MSG(307) numeric in WHOIS command replies: it
indicates if a nickname is registered (if user mode 'R' set).
- Limit channel invite, ban, and exception lists to 50 entries and fix
duplicate check and error messages when adding already listed entries
or deleting no (longer) existing ones.
- Limit the number of list items in the reply of LIST (100), WHO (25),
WHOIS (10), and WHOWAS (25) commands.
- Limit the MODE command to handle a maximum number of 5 channel modes
that require an argument (+Ibkl) per call and report this number
in the ISUPPORT(005) numeric: "MODES=5".
- LINKS command: support <mask> parameter to limit the reply.
- Add 1 second penalty for every further target on PRIVMSG/NOTICE
commands: this reduces the possibility of flooding channels with
commands like "PRIVMSG/NOTICE #a,#n,#c,... :message" a little bit.
Problem noticed by Cahata, thanks!
- New configuration option "PAMIsOptional": when set, clients not
sending a password are still allowed to connect: they won't become
"identified" and keep the "~" character prepended to their supplied
user name. See "man 5 ngircd.conf" for details.
- Fixed handling of WHO commands. This fixes two bugs: "WHO <nick>"
returned nothing at all if the user was "+i" (reported by Cahata,
thanks) and "WHO <nick|nickmask>" returned channel names instead
of "*" when the user was member of a (visible) channel.
- LUSERS reply: only count channels that are visible to the requesting
client, so the existence of secret channels is no longer revealed by
using LUSERS. Reported by Cahata, thanks!
- Unknown user and channel modes no longer stop the mode parser, but
are simply ignored. Therefore modes after the unknown one are now
handled. This is how ircd2.10/ircd2.11/ircd-seven behave, at least.
Reported by Cahata, thanks!
- Implement IRC commands "GLINE" and "KLINE" to ban users. G-Lines are
synchronized between server on peering, K-Lines are local only.
If you use "*!<user>@<host>" or "*!*@<host>" masks, these connections
are blocked even before the user is fully logged in (before PASS,
NICK, and USER commands have been processed) and before the child
processes for authentication are forked, so resource usage is smaller.
- Added doc/Modes.txt: document modes supported by ngIRCd.
- Implement user mode "R": indicates that the nickname of this user
is "registered". This mode isn't handled by ngIRCd itself, but must
be set and unset by IRC services like Anope.
- Implement channel mode "R": only registered users (having the user
mode "R" set) are allowed to join this channel.
- Test suite: bind to loopback (127.0.0.1) interface only.
- Handle unknown user and channel modes: these modes are saved and
forwarded to other servers, but ignored otherwise.
- Handle channel user modes 'a', 'h', and 'q' from remote servers.
These channel user modes aren't used for anything at the moment,
but ngIRCd knows that these three modes are "channel user modes"
and not "channel modes", that is that these modes take an "nickname"
argument. Like unknown user and channel modes, these modes are saved
and forwarded to other servers, but ignored otherwise.
ngIRCd 18 (2011-07-10)
- Add preliminary ngIRCd protocol module for Anope 1.9 to contrib/Anope/.
ngIRCd 18~rc2 (2011-06-29)
- GnuTLS: use 1024 bits as minimum size of the DH prime. This enables
ngIRCd to accept incoming connections from other servers and clients
that "only" use at least 1024 bits again, like ngIRCd 17 did (and no
longer requires 2048 bits for incoming connections).
ngIRCd 18~rc1 (2011-06-27)
- New configuration option "MorePrivacy" to "censor" some user information.
When enabled, signon time and idle time is left out. Part and quit
messages are made to look the same. WHOWAS requests are silently dropped.
All of this is useful if one wish to conceal users that access the ngircd
servers from TOR or I2P.
- New configuration option "ScrubCTCP" to scrub incoming CTCP commands. If
activated, the server silently drops incoming CTCP requests from both
other servers and from users. The server that scrubs CTCP will not forward
the CTCP requests to other servers in the network either, which can spell
trouble if not every oper knows about the CTCP-scrubbing. Scrubbing CTCP
commands also means that it is not possible to send files between users.
There is one exception to the CTCP scrubbing performed: ACTION ("/me
commands") requests are not scrubbed.
- Restructure ngIRCd configuration file: introduce new [Limits], [Options],
and [SSL] sections. The intention of this restructuring is to make the
[Global] section much cleaner, so that it only contains variables that
most installations must adjust to the local requirements. All the optional
variables are moved to [Limits], for configurable limits and timers of
ngIRCd, and [Options], for optional features. All SSL-related variables
are moved to [SSL] and the "SSL"-prefix is stripped. The old variables in
the [Global] section are deprecated now, but are still recognized.
=> Don't forget to check your configuration, use "ngircd --configtest"!
- New documentation "how to contribute": doc/Contributing.txt.
- Avoid needlessly scary 'buffer overflow' messages: When the write buffer
space grows too large, ngIRCd has to disconnect the client to avoid
wasting too much memory, which is logged with a scary 'write buffer
overflow' message. Change this to a more descriptive wording.
- New configuration option "RequireAuthPing": PING-PONG on login. When
enabled, this configuration option lets ngIRCd send a PING with an numeric
"token" to clients logging in; and it will not become registered in the
network until the client responds with the correct PONG.
- New configuration option "NoticeAuth": send NOTICE AUTH on connect. When
active, ngircd will send "NOTICE AUTH" messages on client connect time
like e.g. snircd (QuakeNet) does.
- Add support for up to 3 targets in WHOIS queries, also allow up to one
wildcard query from local hosts. Follows ircd 2.10 implementation rather
than RFC 2812. At most 10 entries are returned per wildcard expansion.
- ngircd.conf(5) manual page: describe types of configuration variables
(booleans, text strings, integer numbers) and add type information to each
variable description.
- Terminate incoming connections on HTTP commands "GET" and "POST".
- New configuration option "CloakHost": when set, this host name is used for
every client instead of the real DNS host name (or IP address).
- New configuration option "CloakUserToNick": when enabled, ngIRCd sets
every clients' user name to their nickname and hides the user name
supplied by the IRC client.
- Make write buffers bigger, but flush early. Before this change, a client
got disconnected if the buffer flushing at 4k failed, now regular clients
can store up to 32k and servers up 64k even if flushing is not possible at
the moment. This enhances reliability on slow links.
- Allow "Port = 0" in [Server] blocks. Port number 0 marks remote servers
that try to connect to this daemon, but where this daemon never tries to
establish a connection on its own: only incoming connections are allowed.
- Enable WHOIS command to return information about services.
- Implement channel mode 'O': "IRC operators only". This channel mode is
used on DALnet (bahamut), for example.
- Remove support for ZeroConf/Bonjour/Rendezvous service registration
including the "[No]ZeroConf" configuration option.
- Deprecate NoXX-Options in ngircd.conf and move new variants into our new
[Options] section: 'NoDNS=no' => 'DNS=yes', 'NoIdent=no' => 'Ident=yes',
'NoPAM=no' => 'PAM=yes', and 'NoZeroConf=no' => 'ZeroConf=yes' (and
vice-versa). The defaults are adjusted accordingly and the old variables
in [Global] are still accepted, so there is no functional change.
ngIRCd 17.1 (2010-12-19)
- Don't log critical (or worse) messages to stderr
- Remove "error file" when compiled with debug code enabled
- New numeric 329: get channel creation time on "MODE #chan" commands
ngIRCd 17 (2010-11-07)
- doc: change path names in sample-ngircd.conf depending on sysconfdir
ngIRCd 17~rc2 (2010-10-25)
- Generate ngIRCd version number from GIT tag.
- Make sourcecode compatible with ansi2knr again. This allows to compile
ngIRCd using a pre-ANSI K&R C compiler again.
ngIRCd 17~rc1 (2010-10-11)
- New configuration option "NoZeroConf" to disable service registration at
runtime even if ngIRCd is compiled with support for ZeroConf (e.g. using
Howl, Avahi or on Mac OS X).
- New configuration option "SyslogFacility" to define the syslog "facility"
(the "target"), to which ngIRCd should send its log messages.
Possible values are system dependant, but most probably "auth", "daemon",
"user" and "local1" through "local7" are possible values; see syslog(3).
Default is "local5" for historical reasons.
- Dump the "internal server state" (configured servers, established
connections and known clients) to the console or syslog when receiving
the SIGUSR2 signal and debug mode is enabled.
- Enable the daemon to disable and enable "debug mode" on runtime using
signal SIGUSR1, when debug code is compiled in, not only on startup
using the command line parameters.
- Implement user mode "x": host name cloaking (closes: #102).
- Change MOTD file handling: ngIRCd now caches the contens of the MOTD
file, so the daemon now requires a HUP signal or REHASH command to
re-read the MOTD file when its content changed.
- Allow IRC ops to change channel modes even without OperServerMode set.
- Allow IRC operators to use MODE command on any channel (closes: #100).
- New configuration option "NoPAM" to disable PAM.
- Implement asynchronous user authentication using PAM, please see the
file doc/PAM.txt for details.
- Add some documentation for using BOPM with ngIRCd, see doc/Bopm.txt.
- Implement user mode "c": receive connect/disconnect NOTICEs. Note that
this new mode requires the user to be an IRC operator.
- Show SSL status in WHOIS output, numeric 275.
ngIRCd 16 (2010-05-02)
ngIRCd 16~rc2 (2010-04-25)
- Enhace connection statistics counters: display total number of served
connections on daemon shutdown and when a new client connects using
the new numeric RPL_STATSCONN (250).
ngIRCd 16~rc1 (2010-03-25)
- Implement WEBIRC command used by some Web-IRC frontends. The password
required to secure this command must be configured using the new
"WebircPassword" variable in the ngircd.conf file.
- Remove limit on max number of configured irc operators.
- A new channel mode "secure connections only" (+z) has been implemented:
Only clients using a SSL encrypted connection to the server are allowed
to join such a channel.
But please note three things: a) already joined clients are not checked
when setting this mode, b) IRC operators are always allowed to join
every channel, and c) remote clients using a server not supporting this
mode are not checked either and therefore always allowed to join.
ngIRCd 15 (2009-11-07)
ngIRCd 15~rc1 (2009-10-15)
- Do not add default listening port (6667) if SSL ports were specified, so
ngIRCd can be configured to only accept SSL-encrypted connections now.
- Enable IRC operators to use the IRC command SQUIT (insted of the already
implemented but non-standard DISCONNECT command).
- New configuration option "AllowRemoteOper" (disabled by default) that
enables remote IRC operators to use the IRC commands SQUIT and CONNECT
on the local server.
- Enforce upper limit on maximum number of handled commands. This implements
a throttling scheme: an IRC client can send up to 3 commands or 256 bytes
per second before a one second pause is enforced.
ngIRCd 14.1 (2009-05-05)
- Security: fix remotely triggerable crash in SSL/TLS code.
- Debian: build ngircd-full-dbg package.
- Allow ping timeout quit messages to show the timeout value.
ngIRCd 14 (2009-04-20)
ngIRCd 14~rc1 (2009-03-29)
- Allow creation of persistent modeless channels.
- The INFO command reports the compile time now (if available).
- Support individual channel keys for pre-defined channels: introduce
new configuration variable "KeyFile" in [Channel] sections in ngircd.conf,
here a file can be configured for each pre-defined channel which contains
individual channel keys for different users.
- Remove limit on maximum number of predefined channels in ngircd.conf.
ngIRCd 13 (2008-12-25)
ngIRCd 13~rc1 (2008-11-21):
- New version number scheme :-)
- Initial support for IRC services, using a RFC1459 style interface,
tested with IRCServices (http://www.ircservices.za.net/) version 5.1.13.
For this to work, ngIRCd now supports server-server links conforming
to RFC 1459. New ngircd.conf(5) option: ServiceMask.
- Support for SSL-encrypted server-server and client-server links using
OpenSSL (configure: --with-openssl) or GNUTLS (configure: --with-gnutls).
New ngircd.conf(5) options: SSLPorts, SSLKeyFile, SSLKeyFilePassword,
SSLCertFile, SSLDHFile, and SSLConnect.
- Server local channels have been implemented, prefix "&", that are only
visible to users of the same server and are not visible in the network.
In addition ngIRCd creates a "special" channel &SERVER on startup and logs
all the messages to it that a user with mode +s receives.
- New make target "osxpkg" to build a Mac OS X installer package.
- New configuration option "NoIdent" to disable IDENT lookups even if the
daemon is compiled with IDENT support.
ngIRCd 0.12.1 (2008-07-09)
- Add option aliases -V (for --version) and -h (for --help).
- Make Listen parameter a comma-separated list of addresses. This also
obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it
is treated as Listen="::,0.0.0.0".
Note: ListenIPv4 and ListenIPv6 options are still recognized,
but ngircd will print a warning if they are used in the config file.
ngIRCd 0.12.0 (2008-05-13) ngIRCd 0.12.0 (2008-05-13)
ngIRCd 0.12.0-pre2 (2008-04-29) ngIRCd 0.12.0-pre2 (2008-04-29)
- IPv6: Add config options to disable ipv4/ipv6 support. - IPv6: Add config options to disabe ipv4/ipv6 support.
ngIRCd 0.12.0-pre1 (2008-04-20) ngIRCd 0.12.0-pre1 (2008-04-20)
- Add IPv6 support. - Add IPv6 support.
@@ -567,7 +32,7 @@ ngIRCd 0.11.0 (2008-01-15)
- Add support for /STAT u (server uptime) command. - Add support for /STAT u (server uptime) command.
- New [Server] configuration Option "Bind" allows to specify - New [Server] configuration Option "Bind" allows to specify
the source IP address to use when connecting to remote server. the source ip adress to use when connecting to remote server.
- New configuration option "MaxNickLength" to specify the allowed maximum - New configuration option "MaxNickLength" to specify the allowed maximum
length of user nick names. Note: must be unique in an IRC network! length of user nick names. Note: must be unique in an IRC network!
- Numeric 317: implemented "signon time" (displayed in WHOIS result). - Numeric 317: implemented "signon time" (displayed in WHOIS result).
@@ -675,7 +140,7 @@ ngIRCd 0.7.0 (2003-05-01)
Older news (sorry, only available in german language): Older news (sorry, only available in german language):
ngIRCd 0.6.0, 24.12.2002 ngIRCd 0.6.0, 2002-12-24
- beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR - beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR
noch eine Statistik ueber die empfangene und gesendete Datenmenge an. noch eine Statistik ueber die empfangene und gesendete Datenmenge an.
@@ -689,7 +154,7 @@ ngIRCd 0.6.0, 24.12.2002
ausgehende Verbindung zu diesem auufzubauen. Dadurch kann nun auf beiden ausgehende Verbindung zu diesem auufzubauen. Dadurch kann nun auf beiden
Servern in der Konfiguration ein Port fuer den Connect konfiguriert Servern in der Konfiguration ein Port fuer den Connect konfiguriert
werden (beide Server versuchen sich dann gegenseitig zu connectieren). werden (beide Server versuchen sich dann gegenseitig zu connectieren).
- Server identifizieren sich nun mit asynchronen Passwoertern, d.h. das - Server identifizieren sich nun mit asyncronen Passwoertern, d.h. das
Passwort, welches A an B schickt, kann ein anderes sein als das, welches Passwort, welches A an B schickt, kann ein anderes sein als das, welches
B als Antwort an A sendet. In der Konfig.-Datei, Abschnitt "Server", B als Antwort an A sendet. In der Konfig.-Datei, Abschnitt "Server",
wurde "Password" dazu durch "MyPassword" und "PeerPassword" ersetzt. wurde "Password" dazu durch "MyPassword" und "PeerPassword" ersetzt.
@@ -715,7 +180,7 @@ ngIRCd 0.5.0, 20.09.2002
Konfiguration "sample-ngircd.conf") und bleiben auch dann bestehen, Konfiguration "sample-ngircd.conf") und bleiben auch dann bestehen,
wenn kein User mehr im Channel ist. wenn kein User mehr im Channel ist.
- neue IRC-Befehle: KICK, INVITE, ADMIN, CHANINFO; LIST wurde erweitert. - neue IRC-Befehle: KICK, INVITE, ADMIN, CHANINFO; LIST wurde erweitert.
Mit dem neuen Befehl CHANINFO synchronisieren Server, die das IRC+- Mit dem neuen Befehl CHANINFO syncronisieren Server, die das IRC+-
Protokoll unterstuetzen, Channel-Modes und Topics. Fuer den ADMIN-Befehl Protokoll unterstuetzen, Channel-Modes und Topics. Fuer den ADMIN-Befehl
gibt es neue Konfigurationsoptionen (Sektion "Global"): "AdminInfo1", gibt es neue Konfigurationsoptionen (Sektion "Global"): "AdminInfo1",
"AdminInfo2" und "AdminEMail". "AdminInfo2" und "AdminEMail".
@@ -801,3 +266,7 @@ ngIRCd 0.0.2, 06.01.2002
ngIRCd 0.0.1, 31.12.2001 ngIRCd 0.0.1, 31.12.2001
- erste oeffentliche Version von ngIRCd als "public preview" :-) - erste oeffentliche Version von ngIRCd als "public preview" :-)
--
$Id: NEWS,v 1.88 2008/02/26 22:05:42 fw Exp $

50
README
View File

@@ -1,8 +1,9 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2014 Alexander Barton and Contributors. (c)2001-2007 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
@@ -12,15 +13,11 @@
I. Introduction I. Introduction
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
ngIRCd is a free, portable and lightweight Internet Relay Chat server for ngIRCd is an Open Source server for the Internet Relay Chat (IRC), which
small or private networks, developed under the GNU General Public License is developed and published under the terms of the GNU General Public
(GPL; please see the file COPYING for details). It is simple to configure, Licence (URL: http://www.gnu.org/licenses/gpl.html). ngIRCd means "next
can cope with dynamic IP addresses, and supports IPv6 as well as SSL. It is generation IRC daemon", it's written from scratch and not deduced from the
written from scratch and not based on the original IRCd. "grandfather of IRC daemons", the daemon of the IRCNet.
The name ngIRCd means next generation IRC daemon, which is a little bit
exaggerated: lightweight Internet Relay Chat server most probably would be a
better name :-)
Please see the INSTALL document for installation and upgrade information! Please see the INSTALL document for installation and upgrade information!
@@ -37,24 +34,22 @@ used in real IRC networks.
Implemented IRC-commands are: Implemented IRC-commands are:
ADMIN, AWAY, CHANINFO, CONNECT, DIE, DISCONNECT, ERROR, GLINE, HELP, INFO, ADMIN, AWAY, CHANINFO, CONNECT, DIE, DISCONNECT, ERROR, HELP, INVITE, ISON,
INVITE, ISON, JOIN, KICK, KILL, KLINE, LINKS, LIST, LUSERS, MODE, MOTD, JOIN, KICK, KILL, LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE,
NAMES, NICK, NJOIN, NOTICE, OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT, OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT, REHASH, RESTART, SERVER, SQUIT,
REHASH, RESTART, SERVER, SERVICE, SERVLIST, SQUERY, SQUIT, STATS, SUMMON, STATS, TIME, TOPIC, TRACE, USER, USERHOST, VERSION, WALLOPS, WHO, WHOIS,
TIME, TOPIC, TRACE, USER, USERHOST, USERS, VERSION, WALLOPS, WEBIRC, WHO, WHOWAS.
WHOIS, WHOWAS.
III. Features (or: why use ngIRCd?) III. Features (or: why use ngIRCd?)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- well arranged (lean) configuration file - no problems with servers which have dynamic IP addresses
- simple to build/install, configure and maintain - simple, easy understandable configuration file,
- supports IPv6 and SSL - freely published open-source C source code,
- no problems with servers that have dynamic IP addresses - ngIRCd will be developed on in the future.
- freely available, modern, portable and tidy C-source
- wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX, - wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
IRIX, Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin. IRIX, Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
- ngIRCd is being actively developed since 2001.
IV. Documentation IV. Documentation
@@ -74,7 +69,7 @@ releases there.
If you are interested in the latest development versions (which are not If you are interested in the latest development versions (which are not
always stable), then please read the section about "GIT" on the homepage and always stable), then please read the section about "GIT" on the homepage and
the file "doc/GIT.txt" which describes the use of GIT, the version control the file "doc/GIT.txt" which describes the use of GIT, the version control
system used by ngIRCd (homepage: http://git-scm.com/). system used by ngIRCd (homepage: http://git.or.cz/).
VI. Bugs VI. Bugs
@@ -83,11 +78,10 @@ VI. Bugs
If you find bugs in the ngIRCd (which might be there :-), please report If you find bugs in the ngIRCd (which might be there :-), please report
them at the following URL: them at the following URL:
<http://ngircd.barton.de/bugtracker.php> <http://ngircd.barton.de/#bugs>
There you can read about known bugs and limitations, too. There you can read about known bugs and limitations, too.
If you have critics, patches or something else, please feel free to post a If you have critics, patches or something else, please feel free to post a
mail to the ngIRCd mailing list: <ngircd-ml@arthur.barton.de> (please see mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
<http://ngircd.barton.de/support.php#ml> for details) or join the ngIRCd <http://ngircd.barton.de/#ml> for details).
IRC channel: <irc://irc.barton.de/ngircd>.

View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors # Copyright (c)2001-2004 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
@@ -9,18 +9,16 @@
# (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.
# #
# Usage: # $Id: autogen.sh,v 1.15 2007/10/07 13:02:15 alex Exp $
# [VAR=<value>] ./autogen.sh [<configure-args>] #
#
# Usage: [VAR=<value>] ./autogen.sh [<configure-args>]
# #
# This script generates the ./configure script using GNU automake and # This script generates the ./configure script using GNU automake and
# GNU autoconf. It tries to be smart in finding the correct/usable/available # GNU autoconf. It tries to be smart in finding the correct/usable/available
# installed versions of these tools on your system. # installed versions of these tools on your system.
# #
# In addition, it enables or disables the "de-ANSI-fication" support of GNU
# automake, which is supported up to autoconf 1.11.x an has been removed
# in automake 1.12 -- make sure to use a version of automake supporting it
# when generating distribution archives!
#
# The following strategy is used for each of aclocal, autoheader, automake, # The following strategy is used for each of aclocal, autoheader, automake,
# and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf" # and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf"
# or "automake") is checked. If this fails, "tool<major><minor>" (for example # or "automake") is checked. If this fails, "tool<major><minor>" (for example
@@ -72,14 +70,10 @@ Search()
for name in $searchlist; do for name in $searchlist; do
$EXIST "${name}" >/dev/null 2>&1 $EXIST "${name}" >/dev/null 2>&1
if [ $? -eq 0 ]; then
"${name}" --version 2>&1 \
| grep -v "environment variable" >/dev/null 2>&1
if [ $? -eq 0 ]; then if [ $? -eq 0 ]; then
echo "${name}" echo "${name}"
return 0 return 0
fi fi
fi
done done
while [ $minor -ge 0 ]; do while [ $minor -ge 0 ]; do
@@ -107,12 +101,6 @@ Notfound()
exit 1 exit 1
} }
Run()
{
[ "$VERBOSE" = "1" ] && echo " - running \"$@\" ..."
$@
}
# Reset locale settings to suppress warning messages of Perl # Reset locale settings to suppress warning messages of Perl
unset LC_ALL unset LC_ALL
unset LANG unset LANG
@@ -136,98 +124,63 @@ if [ -z "$EXIST" ]; then
fi fi
[ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools." [ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools."
# We want to use GNU automake 1.9, if available (WANT_AUTOMAKE is used by
# the wrapper scripts of Gentoo Linux, AUTOMAKE_VERSION is used by OpenBSD);
# same applies for GNU autoconf, we want to use version 2.59. -- But only
# set these preferences if not already set!
if [ -z "$AUTOMAKE_VERSION" -a -z "$WANT_AUTOMAKE" ]; then
AUTOMAKE_VERSION=1.9
WANT_AUTOMAKE=1.9
fi
if [ -z "$AUTOCONF_VERSION" -a -z "$WANT_AUTOCONF" ]; then
AUTOCONF_VERSION=2.59
WANT_AUTOCONF=2.59
fi
export AUTOMAKE_VERSION WANT_AUTOMAKE AUTOCONF_VERSION WANT_AUTOCONF
# Try to detect the needed tools when no environment variable already # Try to detect the needed tools when no environment variable already
# specifies one: # specifies one:
echo "Searching for required tools ..." echo "Searching tools ..."
[ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1` [ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1`
[ "$VERBOSE" = "1" ] && echo " - ACLOCAL=$ACLOCAL" [ "$VERBOSE" = "1" ] && echo "ACLOCAL=$ACLOCAL"
[ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2` [ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2`
[ "$VERBOSE" = "1" ] && echo " - AUTOHEADER=$AUTOHEADER" [ "$VERBOSE" = "1" ] && echo "AUTOHEADER=$AUTOHEADER"
[ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1` [ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1`
[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE=$AUTOMAKE" [ "$VERBOSE" = "1" ] && echo "AUTOMAKE=$AUTOMAKE"
[ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2` [ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2`
[ "$VERBOSE" = "1" ] && echo " - AUTOCONF=$AUTOCONF" [ "$VERBOSE" = "1" ] && echo "AUTOCONF=$AUTOCONF"
AUTOCONF_VERSION=`echo $AUTOCONF | cut -d'-' -f2-` # Call ./configure when parameters have been passed to this script and
[ -n "$AUTOCONF_VERSION" -a "$AUTOCONF_VERSION" != "autoconf" ] \ # GO isn't already defined.
&& export AUTOCONF_VERSION || unset AUTOCONF_VERSION [ -z "$GO" -a $# -gt 0 ] && GO=1
[ "$VERBOSE" = "1" ] && echo " - AUTOCONF_VERSION=$AUTOCONF_VERSION"
AUTOMAKE_VERSION=`echo $AUTOMAKE | cut -d'-' -f2-`
[ -n "$AUTOMAKE_VERSION" -a "$AUTOMAKE_VERSION" != "automake" ] \
&& export AUTOMAKE_VERSION || unset AUTOMAKE_VERSION
[ "$VERBOSE" = "1" ] && echo " - AUTOMAKE_VERSION=$AUTOMAKE_VERSION"
[ $# -gt 0 ] && CONFIGURE_ARGS=" $@" || CONFIGURE_ARGS=""
[ -z "$GO" -a -n "$CONFIGURE_ARGS" ] && GO=1
# Verify that all tools have been found # Verify that all tools have been found
[ -z "$ACLOCAL" ] && Notfound aclocal [ -z "$AUTOCONF" ] && Notfound autoconf
[ -z "$AUTOHEADER" ] && Notfound autoheader [ -z "$AUTOHEADER" ] && Notfound autoheader
[ -z "$AUTOMAKE" ] && Notfound automake [ -z "$AUTOMAKE" ] && Notfound automake
[ -z "$AUTOCONF" ] && Notfound autoconf [ -z "$AUTOCONF" ] && Notfound autoconf
AM_VERSION=`$AUTOMAKE --version | head -n 1 | sed -e 's/.* //g'` export AUTOCONF AUTOHEADER AUTOMAKE AUTOCONF
ifs=$IFS; IFS="."; set $AM_VERSION; IFS=$ifs
AM_MAJOR="$1"; AM_MINOR="$2"; AM_PATCHLEVEL="$3"
echo "Detected automake $AM_VERSION ..."
AM_MAKEFILES="src/ipaddr/Makefile.ng src/ngircd/Makefile.ng src/testsuite/Makefile.ng src/tool/Makefile.ng"
# De-ANSI-fication?
if [ "$AM_MAJOR" -eq "1" -a "$AM_MINOR" -lt "12" ]; then
# automake < 1.12 => automatic de-ANSI-fication support available
echo " - Enabling de-ANSI-fication support."
sed -e "s|^__ng_PROTOTYPES__|AM_C_PROTOTYPES|g" configure.ng >configure.ac
DEANSI_START=""
DEANSI_END=""
else
# automake >= 1.12 => no de-ANSI-fication support available
echo " - Disabling de-ANSI-fication support."
sed -e "s|^__ng_PROTOTYPES__|AC_C_PROTOTYPES|g" configure.ng >configure.ac
DEANSI_START="#"
DEANSI_END=" (disabled by ./autogen.sh script)"
fi
# Serial test harness?
if [ "$AM_MAJOR" -eq "1" -a "$AM_MINOR" -ge "13" ]; then
# automake >= 1.13 => enforce "serial test harness"
echo " - Enforcing serial test harness."
SERIAL_TESTS="serial-tests"
else
# automake < 1.13 => no new test harness, nothing to do
SERIAL_TEST=""
fi
sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}ansi2knr${DEANSI_END}|g" \
src/portab/Makefile.ng >src/portab/Makefile.am
for makefile_ng in $AM_MAKEFILES; do
makefile_am=`echo "$makefile_ng" | sed -e "s|\.ng\$|\.am|g"`
sed -e "s|^__ng_Makefile_am_template__|AUTOMAKE_OPTIONS = ${SERIAL_TESTS} ${DEANSI_START}../portab/ansi2knr${DEANSI_END}|g" \
$makefile_ng >$makefile_am
done
export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF
# Generate files # Generate files
echo "Generating files using \"$AUTOCONF\" and \"$AUTOMAKE\" ..." echo "Generating files ..."
Run $ACLOCAL && \ $ACLOCAL && \
Run $AUTOCONF && \ $AUTOHEADER && \
Run $AUTOHEADER && \ $AUTOMAKE --add-missing && \
Run $AUTOMAKE --add-missing --no-force $AUTOCONF
if [ $? -eq 0 -a -x ./configure ]; then if [ $? -eq 0 -a -x ./configure ]; then
# Success: if we got some parameters we call ./configure and pass # Success: if we got some parameters we call ./configure and pass
# all of them to it. # all of them to it.
NAME=`grep PACKAGE_STRING= configure | cut -d"'" -f2`
if [ "$GO" = "1" ]; then if [ "$GO" = "1" ]; then
[ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p="" [ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p=""
c="./configure${p}${CONFIGURE_ARGS}" [ -n "$*" ] && a=" $*" || a=""
echo "Okay, autogen.sh for $NAME done." c="./configure${p}${a}"
echo "Calling \"$c\" ..." echo "Calling \"$c\" ..."
$c $c
exit $? exit $?
else else
echo "Okay, autogen.sh for $NAME done." echo "Okay, autogen.sh done; now run the \"configure\" script."
echo "Now run the \"./configure\" script."
exit 0 exit 0
fi fi
else else

606
config.guess vendored
View File

@@ -1,12 +1,14 @@
#! /bin/sh #! /bin/sh
# Attempt to guess a canonical system name. # Attempt to guess a canonical system name.
# Copyright 1992-2014 Free Software Foundation, Inc. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
timestamp='2014-03-23' timestamp='2007-03-06'
# 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
# the Free Software Foundation; either version 3 of the License, or # the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, but # This program is distributed in the hope that it will be useful, but
@@ -15,23 +17,27 @@ timestamp='2014-03-23'
# General Public License for more details. # General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>. # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# #
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under # configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that # the same distribution terms that you use for the rest of that program.
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
#
# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
#
# Please send patches with a ChangeLog entry to config-patches@gnu.org.
# Originally written by Per Bothner <per@bothner.com>.
# Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
# The plan is that this can be called by configure scripts if you
# don't specify an explicit build system type.
me=`echo "$0" | sed -e 's,.*/,,'` me=`echo "$0" | sed -e 's,.*/,,'`
usage="\ usage="\
@@ -50,7 +56,8 @@ version="\
GNU config.guess ($timestamp) GNU config.guess ($timestamp)
Originally written by Per Bothner. Originally written by Per Bothner.
Copyright 1992-2014 Free Software Foundation, Inc. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -132,33 +139,12 @@ UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_SYSTEM}" in
Linux|GNU|GNU/*)
# If the system lacks a compiler, then just pick glibc.
# We could probably try harder.
LIBC=gnu
eval $set_cc_for_build
cat <<-EOF > $dummy.c
#include <features.h>
#if defined(__UCLIBC__)
LIBC=uclibc
#elif defined(__dietlibc__)
LIBC=dietlibc
#else
LIBC=gnu
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'`
;;
esac
# Note: order is significant - the case branches are not exclusive. # Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*) *:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or # NetBSD (nbsd) targets should (where applicable) match one or
# more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old # switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward # object file format. This provides both forward
@@ -184,7 +170,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm*|i386|m68k|ns32k|sh3*|sparc|vax) arm*|i386|m68k|ns32k|sh3*|sparc|vax)
eval $set_cc_for_build eval $set_cc_for_build
if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ELF__ | grep __ELF__ >/dev/null
then then
# Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
# Return netbsd for either. FIX? # Return netbsd for either. FIX?
@@ -215,10 +201,6 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}" echo "${machine}-${os}${release}"
exit ;; exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
exit ;;
*:OpenBSD:*:*) *:OpenBSD:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
@@ -287,10 +269,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# A Xn.n version is an unreleased experimental baselevel. # A Xn.n version is an unreleased experimental baselevel.
# 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/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`
# Reset EXIT trap before exiting to avoid spurious non-zero exit code. exit ;;
exitcode=$?
trap '' 0
exit $exitcode ;;
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
@@ -321,7 +300,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE} echo arm-acorn-riscix${UNAME_RELEASE}
exit ;; exit ;;
arm*:riscos:*:*|arm*:RISCOS:*:*) arm:riscos:*:*|arm:RISCOS:*:*)
echo arm-unknown-riscos echo arm-unknown-riscos
exit ;; exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -345,33 +324,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
case `/usr/bin/uname -p` in case `/usr/bin/uname -p` in
sparc) echo sparc-icl-nx7; exit ;; sparc) echo sparc-icl-nx7; exit ;;
esac ;; esac ;;
s390x:SunOS:*:*)
echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
sun4H:SunOS:5.*:*) sun4H:SunOS:5.*:*)
echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;; exit ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;; exit ;;
i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) i86pc:SunOS:5.*:*)
echo i386-pc-auroraux${UNAME_RELEASE} echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;;
i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*)
eval $set_cc_for_build
SUN_ARCH="i386"
# If there is a compiler, see if it is configured for 64-bit objects.
# Note that the Sun cc does not turn __LP64__ into 1 like gcc does.
# This test works for both compilers.
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
SUN_ARCH="x86_64"
fi
fi
echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit ;; exit ;;
sun4*:SunOS:6*:*) sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize # According to config.sub, this is the proper way to canonicalize
@@ -572,7 +532,7 @@ EOF
echo rs6000-ibm-aix3.2 echo rs6000-ibm-aix3.2
fi fi
exit ;; exit ;;
*:AIX:*:[4567]) *:AIX:*:[45])
IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
IBM_ARCH=rs6000 IBM_ARCH=rs6000
@@ -680,7 +640,7 @@ EOF
# => hppa64-hp-hpux11.23 # => hppa64-hp-hpux11.23
if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) |
grep -q __LP64__ grep __LP64__ >/dev/null
then then
HP_ARCH="hppa2.0w" HP_ARCH="hppa2.0w"
else else
@@ -809,26 +769,21 @@ EOF
echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE}
exit ;; exit ;;
*:FreeBSD:*:*) *:FreeBSD:*:*)
UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_MACHINE} in
case ${UNAME_PROCESSOR} in pc98)
echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
amd64) amd64)
echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
*) *)
echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
esac esac
exit ;; exit ;;
i*:CYGWIN*:*) i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin echo ${UNAME_MACHINE}-pc-cygwin
exit ;; exit ;;
*:MINGW64*:*)
echo ${UNAME_MACHINE}-pc-mingw64
exit ;;
*:MINGW*:*) *:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32 echo ${UNAME_MACHINE}-pc-mingw32
exit ;; exit ;;
*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*) i*:windows32*:*)
# uname -m includes "-pc" on this system. # uname -m includes "-pc" on this system.
echo ${UNAME_MACHINE}-mingw32 echo ${UNAME_MACHINE}-mingw32
@@ -836,24 +791,18 @@ EOF
i*:PW*:*) i*:PW*:*)
echo ${UNAME_MACHINE}-pc-pw32 echo ${UNAME_MACHINE}-pc-pw32
exit ;; exit ;;
*:Interix*:*) *:Interix*:[3456]*)
case ${UNAME_MACHINE} in case ${UNAME_MACHINE} in
x86) x86)
echo i586-pc-interix${UNAME_RELEASE} echo i586-pc-interix${UNAME_RELEASE}
exit ;; exit ;;
authenticamd | genuineintel | EM64T) EM64T | authenticamd)
echo x86_64-unknown-interix${UNAME_RELEASE} echo x86_64-unknown-interix${UNAME_RELEASE}
exit ;; exit ;;
IA64)
echo ia64-unknown-interix${UNAME_RELEASE}
exit ;;
esac ;; esac ;;
[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
exit ;; exit ;;
8664:Windows_NT:*)
echo x86_64-pc-mks
exit ;;
i*:Windows_NT*:* | Pentium*:Windows_NT*:*) i*:Windows_NT*:* | Pentium*: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?
# It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
@@ -874,21 +823,93 @@ EOF
exit ;; exit ;;
*:GNU:*:*) *:GNU:*:*)
# the GNU system # the GNU system
echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit ;; exit ;;
*:GNU/*:*:*) *:GNU/*:*:*)
# other systems with GNU libc and userland # 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/[-(].*//'`-${LIBC} echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
exit ;; exit ;;
i*86:Minix:*:*) i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix echo ${UNAME_MACHINE}-pc-minix
exit ;; exit ;;
aarch64:Linux:*:*) arm*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;; exit ;;
aarch64_be:Linux:*:*) avr32*:Linux:*:*)
UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-gnu
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;;
cris:Linux:*:*)
echo cris-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
echo crisv32-axis-linux-gnu
exit ;;
frv:Linux:*:*)
echo frv-unknown-linux-gnu
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
mips:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
#undef mips
#undef mipsel
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=mipsel
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=mips
#else
CPU=
#endif
#endif
EOF
eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
/^CPU/{
s: ::g
p
}'`"
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
#undef mips64
#undef mips64el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=mips64el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=mips64
#else
CPU=
#endif
#endif
EOF
eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
/^CPU/{
s: ::g
p
}'`"
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
echo or32-unknown-linux-gnu
exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
exit ;;
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
exit ;; exit ;;
alpha:Linux:*:*) alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -900,131 +921,105 @@ EOF
EV67) UNAME_MACHINE=alphaev67 ;; EV67) UNAME_MACHINE=alphaev67 ;;
EV68*) UNAME_MACHINE=alphaev68 ;; EV68*) UNAME_MACHINE=alphaev68 ;;
esac esac
objdump --private-headers /bin/sh | grep -q ld.so.1 objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
if test "$?" = 0 ; then LIBC="gnulibc1" ; fi if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
exit ;;
arc:Linux:*:* | arceb:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
arm*:Linux:*:*)
eval $set_cc_for_build
if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_EABI__
then
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
else
if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \
| grep -q __ARM_PCS_VFP
then
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi
else
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf
fi
fi
exit ;;
avr32*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
cris:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
crisv32:Linux:*:*)
echo ${UNAME_MACHINE}-axis-linux-${LIBC}
exit ;;
frv:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
hexagon:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
i*86:Linux:*:*)
echo ${UNAME_MACHINE}-pc-linux-${LIBC}
exit ;;
ia64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m32r*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
m68*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
mips:Linux:*:* | mips64:Linux:*:*)
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#undef CPU
#undef ${UNAME_MACHINE}
#undef ${UNAME_MACHINE}el
#if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
CPU=${UNAME_MACHINE}el
#else
#if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
CPU=${UNAME_MACHINE}
#else
CPU=
#endif
#endif
EOF
eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
;;
openrisc*:Linux:*:*)
echo or1k-unknown-linux-${LIBC}
exit ;;
or32:Linux:*:* | or1k*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-${LIBC}
exit ;;
parisc64:Linux:*:* | hppa64:Linux:*:*)
echo hppa64-unknown-linux-${LIBC}
exit ;; exit ;;
parisc:Linux:*:* | hppa:Linux:*:*) parisc:Linux:*:* | hppa:Linux:*:*)
# Look for CPU level # Look for CPU level
case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA7*) echo hppa1.1-unknown-linux-gnu ;;
PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-gnu ;;
*) echo hppa-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-gnu ;;
esac esac
exit ;; exit ;;
ppc64:Linux:*:*) parisc64:Linux:*:* | hppa64:Linux:*:*)
echo powerpc64-unknown-linux-${LIBC} echo hppa64-unknown-linux-gnu
exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-${LIBC}
exit ;;
ppc64le:Linux:*:*)
echo powerpc64le-unknown-linux-${LIBC}
exit ;;
ppcle:Linux:*:*)
echo powerpcle-unknown-linux-${LIBC}
exit ;; exit ;;
s390:Linux:*:* | s390x:Linux:*:*) s390:Linux:*:* | s390x:Linux:*:*)
echo ${UNAME_MACHINE}-ibm-linux-${LIBC} echo ${UNAME_MACHINE}-ibm-linux
exit ;; exit ;;
sh64*:Linux:*:*) sh64*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;; exit ;;
sh*:Linux:*:*) sh*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;; exit ;;
sparc:Linux:*:* | sparc64:Linux:*:*) sparc:Linux:*:* | sparc64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
tile*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
exit ;; exit ;;
vax:Linux:*:*) vax:Linux:*:*)
echo ${UNAME_MACHINE}-dec-linux-${LIBC} echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;; exit ;;
x86_64:Linux:*:*) x86_64:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo x86_64-unknown-linux-gnu
exit ;; exit ;;
xtensa*:Linux:*:*) xtensa:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-${LIBC} echo xtensa-unknown-linux-gnu
exit ;; exit ;;
i*86:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us. cd to the root directory to prevent
# problems with other programs or directories called `ld' in the path.
# Set LC_ALL=C to ensure ld outputs messages in English.
ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
| sed -ne '/supported targets:/!d
s/[ ][ ]*/ /g
s/.*supported targets: *//
s/ .*//
p'`
case "$ld_supported_targets" in
elf32-i386)
TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
;;
a.out-i386-linux)
echo "${UNAME_MACHINE}-pc-linux-gnuaout"
exit ;;
coff-i386)
echo "${UNAME_MACHINE}-pc-linux-gnucoff"
exit ;;
"")
# Either a pre-BFD a.out linker (linux-gnuoldld) or
# one that does not give us useful --help.
echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
exit ;;
esac
# Determine whether the default compiler is a.out or elf
eval $set_cc_for_build
sed 's/^ //' << EOF >$dummy.c
#include <features.h>
#ifdef __ELF__
# ifdef __GLIBC__
# if __GLIBC__ >= 2
LIBC=gnu
# else
LIBC=gnulibc1
# endif
# else
LIBC=gnulibc1
# endif
#else
#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
LIBC=gnu
#else
LIBC=gnuaout
#endif
#endif
#ifdef __dietlibc__
LIBC=dietlibc
#endif
EOF
eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
/^LIBC/{
s: ::g
p
}'`"
test x"${LIBC}" != x && {
echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
exit
}
test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
;;
i*86:DYNIX/ptx:4*:*) i*86:DYNIX/ptx:4*:*)
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
# earlier versions are messed up and put the nodename in both # earlier versions are messed up and put the nodename in both
@@ -1053,7 +1048,7 @@ EOF
i*86:syllable:*:*) i*86:syllable:*:*)
echo ${UNAME_MACHINE}-pc-syllable echo ${UNAME_MACHINE}-pc-syllable
exit ;; exit ;;
i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
echo i386-unknown-lynxos${UNAME_RELEASE} echo i386-unknown-lynxos${UNAME_RELEASE}
exit ;; exit ;;
i*86:*DOS:*:*) i*86:*DOS:*:*)
@@ -1097,11 +1092,8 @@ EOF
pc:*:*:*) pc:*:*:*)
# Left here for compatibility: # Left here for compatibility:
# uname -m prints for DJGPP always 'pc', but it prints nothing about # uname -m prints for DJGPP always 'pc', but it prints nothing about
# the processor, so we play safe by assuming i586. # the processor, so we play safe by assuming i386.
# Note: whatever this is, it MUST be the same as what config.sub echo i386-pc-msdosdjgpp
# prints for the "djgpp" host, or else GDB configury will decide that
# this is a cross-build.
echo i586-pc-msdosdjgpp
exit ;; exit ;;
Intel:Mach:3*:*) Intel:Mach:3*:*)
echo i386-pc-mach3 echo i386-pc-mach3
@@ -1139,16 +1131,6 @@ EOF
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4; exit; } ;; && { echo i486-ncr-sysv4; exit; } ;;
NCR*:*:4.2:* | MPRAS*:*:4.2:*)
OS_REL='.3'
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& { echo i486-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; }
/bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \
&& { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE} echo m68k-unknown-lynxos${UNAME_RELEASE}
exit ;; exit ;;
@@ -1161,7 +1143,7 @@ EOF
rs6000:LynxOS:2.*:*) rs6000:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE} echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit ;; exit ;;
PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
echo powerpc-unknown-lynxos${UNAME_RELEASE} echo powerpc-unknown-lynxos${UNAME_RELEASE}
exit ;; exit ;;
SM[BE]S:UNIX_SV:*:*) SM[BE]S:UNIX_SV:*:*)
@@ -1224,12 +1206,6 @@ EOF
BePC:BeOS:*:*) # BeOS running on Intel PC compatible. BePC:BeOS:*:*) # BeOS running on Intel PC compatible.
echo i586-pc-beos echo i586-pc-beos
exit ;; exit ;;
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
x86_64:Haiku:*:*)
echo x86_64-unknown-haiku
exit ;;
SX-4:SUPER-UX:*:*) SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE} echo sx4-nec-superux${UNAME_RELEASE}
exit ;; exit ;;
@@ -1256,31 +1232,9 @@ EOF
exit ;; exit ;;
*:Darwin:*:*) *:Darwin:*:*)
UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
eval $set_cc_for_build
if test "$UNAME_PROCESSOR" = unknown ; then
UNAME_PROCESSOR=powerpc
fi
if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
(CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
grep IS_64BIT_ARCH >/dev/null
then
case $UNAME_PROCESSOR in case $UNAME_PROCESSOR in
i386) UNAME_PROCESSOR=x86_64 ;; unknown) UNAME_PROCESSOR=powerpc ;;
powerpc) UNAME_PROCESSOR=powerpc64 ;;
esac esac
fi
fi
elif test "$UNAME_PROCESSOR" = i386 ; then
# Avoid executing cc on OS X 10.9, as it ships with a stub
# that puts up a graphical alert prompting to install
# developer tools. Any system running Mac OS X 10.7 or
# later (Darwin 11 and later) is required to have a 64-bit
# processor. This is not true of the ARM version of Darwin
# that Apple uses in portable devices.
UNAME_PROCESSOR=x86_64
fi
echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
exit ;; exit ;;
*:procnto*:*:* | *:QNX:[0123456789]*:*) *:procnto*:*:* | *:QNX:[0123456789]*:*)
@@ -1294,10 +1248,7 @@ EOF
*:QNX:*:4*) *:QNX:*:4*)
echo i386-pc-qnx echo i386-pc-qnx
exit ;; exit ;;
NEO-?:NONSTOP_KERNEL:*:*) NSE-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE} echo nse-tandem-nsk${UNAME_RELEASE}
exit ;; exit ;;
NSR-?:NONSTOP_KERNEL:*:*) NSR-?:NONSTOP_KERNEL:*:*)
@@ -1363,13 +1314,158 @@ EOF
i*86:rdos:*:*) i*86:rdos:*:*)
echo ${UNAME_MACHINE}-pc-rdos echo ${UNAME_MACHINE}-pc-rdos
exit ;; exit ;;
i*86:AROS:*:*) esac
echo ${UNAME_MACHINE}-pc-aros
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix\n"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
if (version < 4)
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
else
printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
# if !defined (ultrix)
# include <sys/param.h>
# if defined (BSD)
# if BSD == 43
printf ("vax-dec-bsd4.3\n"); exit (0);
# else
# if BSD == 199006
printf ("vax-dec-bsd4.3reno\n"); exit (0);
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# endif
# else
printf ("vax-dec-bsd\n"); exit (0);
# endif
# else
printf ("vax-dec-ultrix\n"); exit (0);
# endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
{ echo "$SYSTEM_NAME"; exit; }
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit ;; exit ;;
x86_64:VMkernel:*:*) c2*)
echo ${UNAME_MACHINE}-unknown-esx if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit ;;
c34*)
echo c34-convex-bsd
exit ;;
c38*)
echo c38-convex-bsd
exit ;;
c4*)
echo c4-convex-bsd
exit ;; exit ;;
esac esac
fi
cat >&2 <<EOF cat >&2 <<EOF
$0: unable to guess system type $0: unable to guess system type
@@ -1378,9 +1474,9 @@ This script, last modified $timestamp, has failed to recognize
the operating system you are using. It is advised that you the operating system you are using. It is advised that you
download the most up to date version of the config scripts from download the most up to date version of the config scripts from
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
and and
http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
If the version you run ($0) is already up to date, please If the version you run ($0) is already up to date, please
send the following data and any information you think might be send the following data and any information you think might be

352
config.sub vendored
View File

@@ -1,40 +1,44 @@
#! /bin/sh #! /bin/sh
# Configuration validation subroutine script. # Configuration validation subroutine script.
# Copyright 1992-2014 Free Software Foundation, Inc. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
# Inc.
timestamp='2014-05-01' timestamp='2007-01-18'
# This file is free software; you can redistribute it and/or modify it # This file is (in principle) common to ALL GNU software.
# under the terms of the GNU General Public License as published by # The presence of a machine in this file suggests that SOME GNU software
# the Free Software Foundation; either version 3 of the License, or # can handle that machine. It does not imply ALL GNU software can.
#
# 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
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, but # This program is distributed in the hope that it will be useful,
# WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, see <http://www.gnu.org/licenses/>. # along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
# 02110-1301, USA.
# #
# As a special exception to the GNU General Public License, if you # As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a # distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under # configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that # the same distribution terms that you use for the rest of that program.
# program. This Exception is an additional permission under section 7
# of the GNU General Public License, version 3 ("GPLv3").
# Please send patches with a ChangeLog entry to config-patches@gnu.org. # Please send patches to <config-patches@gnu.org>. Submit a context
# diff and a properly formatted ChangeLog entry.
# #
# Configuration subroutine to validate and canonicalize a configuration type. # Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument. # Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1. # If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed. # Otherwise, we print the canonical config type on stdout and succeed.
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD
# This file is supposed to be the same for all GNU packages # This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases # and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software. # that are meaningful with *any* GNU software.
@@ -68,7 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
version="\ version="\
GNU config.sub ($timestamp) GNU config.sub ($timestamp)
Copyright 1992-2014 Free Software Foundation, Inc. Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -115,18 +120,12 @@ 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* | linux-android* | linux-dietlibc | linux-newlib* | \ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
knetbsd*-gnu* | netbsd*-gnu* | \
kopensolaris*-gnu* | \
storm-chaos* | os2-emx* | rtmk-nova*) 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/'`
;; ;;
android-linux)
os=-linux-android
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
;;
*) *)
basic_machine=`echo $1 | sed 's/-[^-]*$//'` basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ] if [ $basic_machine != $1 ]
@@ -149,13 +148,10 @@ case $os in
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple | -axis | -knuth | -cray | -microblaze*) -apple | -axis | -knuth | -cray)
os= os=
basic_machine=$1 basic_machine=$1
;; ;;
-bluegene*)
os=-cnk
;;
-sim | -cisco | -oki | -wec | -winbond) -sim | -cisco | -oki | -wec | -winbond)
os= os=
basic_machine=$1 basic_machine=$1
@@ -218,12 +214,6 @@ case $os in
-isc*) -isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;; ;;
-lynx*178)
os=-lynxos178
;;
-lynx*5)
os=-lynxos5
;;
-lynx*) -lynx*)
os=-lynxos os=-lynxos
;; ;;
@@ -248,85 +238,59 @@ case $basic_machine in
# Some are omitted here because they have special meanings below. # Some are omitted here because they have special meanings below.
1750a | 580 \ 1750a | 580 \
| a29k \ | a29k \
| aarch64 | aarch64_be \
| 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 \ | am33_2.0 \
| arc | arceb \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
| arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
| avr | avr32 \
| be32 | be64 \
| bfin \ | bfin \
| c4x | c8051 | clipper \ | c4x | clipper \
| d10v | d30v | dlx | dsp16xx \ | d10v | d30v | dlx | dsp16xx \
| epiphany \
| fido | fr30 | frv \ | fido | fr30 | frv \
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
| hexagon \
| i370 | i860 | i960 | ia64 \ | i370 | i860 | i960 | ia64 \
| ip2k | iq2000 \ | ip2k | iq2000 \
| k1om \
| le32 | le64 \
| lm32 \
| m32c | m32r | m32rle | m68000 | m68k | m88k \ | m32c | m32r | m32rle | m68000 | m68k | m88k \
| maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | maxq | mb | microblaze | mcore | mep \
| mips | mipsbe | mipseb | mipsel | mipsle \ | mips | mipsbe | mipseb | mipsel | mipsle \
| mips16 \ | mips16 \
| mips64 | mips64el \ | mips64 | mips64el \
| mips64octeon | mips64octeonel \
| mips64orion | mips64orionel \
| mips64r5900 | mips64r5900el \
| mips64vr | mips64vrel \ | mips64vr | mips64vrel \
| mips64orion | mips64orionel \
| mips64vr4100 | mips64vr4100el \ | mips64vr4100 | mips64vr4100el \
| mips64vr4300 | mips64vr4300el \ | mips64vr4300 | mips64vr4300el \
| mips64vr5000 | mips64vr5000el \ | mips64vr5000 | mips64vr5000el \
| mips64vr5900 | mips64vr5900el \ | mips64vr5900 | mips64vr5900el \
| mipsisa32 | mipsisa32el \ | mipsisa32 | mipsisa32el \
| mipsisa32r2 | mipsisa32r2el \ | mipsisa32r2 | mipsisa32r2el \
| mipsisa32r6 | mipsisa32r6el \
| mipsisa64 | mipsisa64el \ | mipsisa64 | mipsisa64el \
| mipsisa64r2 | mipsisa64r2el \ | mipsisa64r2 | mipsisa64r2el \
| mipsisa64r6 | mipsisa64r6el \
| mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sb1 | mipsisa64sb1el \
| mipsisa64sr71k | mipsisa64sr71kel \ | mipsisa64sr71k | mipsisa64sr71kel \
| mipsr5900 | mipsr5900el \
| mipstx39 | mipstx39el \ | mipstx39 | mipstx39el \
| mn10200 | mn10300 \ | mn10200 | mn10300 \
| moxie \
| mt \ | mt \
| msp430 \ | msp430 \
| nds32 | nds32le | nds32be \ | nios | nios2 \
| nios | nios2 | nios2eb | nios2el \
| ns16k | ns32k \ | ns16k | ns32k \
| open8 | or1k | or1knd | or32 \ | or32 \
| pdp10 | pdp11 | pj | pjl \ | pdp10 | pdp11 | pj | pjl \
| powerpc | powerpc64 | powerpc64le | powerpcle \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
| pyramid \ | pyramid \
| rl78 | rx \
| score \ | score \
| sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
| sh64 | sh64le \ | sh64 | sh64le \
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \
| spu \ | spu | strongarm \
| tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | tahoe | thumb | tic4x | tic80 | tron \
| ubicom32 \ | v850 | v850e \
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
| we32k \ | we32k \
| x86 | xc16x | xstormy16 | xtensa \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
| z8k | z80) | z8k)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
;; ;;
c54x) m6811 | m68hc11 | m6812 | m68hc12)
basic_machine=tic54x-unknown # Motorola 68HC11/12.
;;
c55x)
basic_machine=tic55x-unknown
;;
c6x)
basic_machine=tic6x-unknown
;;
m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
basic_machine=$basic_machine-unknown basic_machine=$basic_machine-unknown
os=-none os=-none
;; ;;
@@ -336,21 +300,6 @@ case $basic_machine in
basic_machine=mt-unknown basic_machine=mt-unknown
;; ;;
strongarm | thumb | xscale)
basic_machine=arm-unknown
;;
xgate)
basic_machine=$basic_machine-unknown
os=-none
;;
xscaleeb)
basic_machine=armeb-unknown
;;
xscaleel)
basic_machine=armel-unknown
;;
# We use `pc' rather than `unknown' # We use `pc' rather than `unknown'
# because (1) that's what they normally are, and # because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users. # (2) the word "unknown" tends to confuse beginning users.
@@ -365,86 +314,64 @@ case $basic_machine in
# Recognize the basic CPU types with company name. # Recognize the basic CPU types with company name.
580-* \ 580-* \
| a29k-* \ | a29k-* \
| aarch64-* | aarch64_be-* \
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \
| avr-* | avr32-* \ | avr-* | avr32-* \
| be32-* | be64-* \
| bfin-* | bs2000-* \ | bfin-* | bs2000-* \
| c[123]* | c30-* | [cjt]90-* | c4x-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
| c8051-* | clipper-* | craynv-* | cydra-* \ | clipper-* | craynv-* | cydra-* \
| d10v-* | d30v-* | dlx-* \ | d10v-* | d30v-* | dlx-* \
| elxsi-* \ | elxsi-* \
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
| h8300-* | h8500-* \ | h8300-* | h8500-* \
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
| hexagon-* \
| i*86-* | i860-* | i960-* | ia64-* \ | i*86-* | i860-* | i960-* | ia64-* \
| ip2k-* | iq2000-* \ | ip2k-* | iq2000-* \
| k1om-* \
| le32-* | le64-* \
| lm32-* \
| m32c-* | m32r-* | m32rle-* \ | m32c-* | m32r-* | m32rle-* \
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | m88110-* | m88k-* | maxq-* | mcore-* \
| microblaze-* | microblazeel-* \
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
| mips16-* \ | mips16-* \
| mips64-* | mips64el-* \ | mips64-* | mips64el-* \
| mips64octeon-* | mips64octeonel-* \
| mips64orion-* | mips64orionel-* \
| mips64r5900-* | mips64r5900el-* \
| mips64vr-* | mips64vrel-* \ | mips64vr-* | mips64vrel-* \
| mips64orion-* | mips64orionel-* \
| mips64vr4100-* | mips64vr4100el-* \ | mips64vr4100-* | mips64vr4100el-* \
| mips64vr4300-* | mips64vr4300el-* \ | mips64vr4300-* | mips64vr4300el-* \
| mips64vr5000-* | mips64vr5000el-* \ | mips64vr5000-* | mips64vr5000el-* \
| mips64vr5900-* | mips64vr5900el-* \ | mips64vr5900-* | mips64vr5900el-* \
| mipsisa32-* | mipsisa32el-* \ | mipsisa32-* | mipsisa32el-* \
| mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r2-* | mipsisa32r2el-* \
| mipsisa32r6-* | mipsisa32r6el-* \
| mipsisa64-* | mipsisa64el-* \ | mipsisa64-* | mipsisa64el-* \
| mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r2-* | mipsisa64r2el-* \
| mipsisa64r6-* | mipsisa64r6el-* \
| mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \
| mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
| mipsr5900-* | mipsr5900el-* \
| mipstx39-* | mipstx39el-* \ | mipstx39-* | mipstx39el-* \
| mmix-* \ | mmix-* \
| mt-* \ | mt-* \
| msp430-* \ | msp430-* \
| nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* \
| nios-* | nios2-* | nios2eb-* | nios2el-* \
| none-* | np1-* | ns16k-* | ns32k-* \ | none-* | np1-* | ns16k-* | ns32k-* \
| open8-* \
| or1k*-* \
| orion-* \ | orion-* \
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
| pyramid-* \ | pyramid-* \
| rl78-* | romp-* | rs6000-* | rx-* \ | romp-* | rs6000-* \
| sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
| sparclite-* \ | sparclite-* \
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
| tahoe-* \ | tahoe-* | thumb-* \
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
| tile*-* \
| tron-* \ | tron-* \
| ubicom32-* \ | v850-* | v850e-* | vax-* \
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
| vax-* \
| we32k-* \ | we32k-* \
| x86-* | x86_64-* | xc16x-* | xps100-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
| xstormy16-* | xtensa*-* \ | xstormy16-* | xtensa-* \
| ymp-* \ | ymp-* \
| z8k-* | z80-*) | z8k-*)
;;
# Recognize the basic CPU types without company name, with glob match.
xtensa*)
basic_machine=$basic_machine-unknown
;; ;;
# Recognize the various machine names and aliases which stand # Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS. # for a CPU type and a company and sometimes even an OS.
@@ -508,10 +435,6 @@ case $basic_machine in
basic_machine=m68k-apollo basic_machine=m68k-apollo
os=-bsd os=-bsd
;; ;;
aros)
basic_machine=i386-pc
os=-aros
;;
aux) aux)
basic_machine=m68k-apple basic_machine=m68k-apple
os=-aux os=-aux
@@ -520,35 +443,10 @@ case $basic_machine in
basic_machine=ns32k-sequent basic_machine=ns32k-sequent
os=-dynix os=-dynix
;; ;;
blackfin)
basic_machine=bfin-unknown
os=-linux
;;
blackfin-*)
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
bluegene*)
basic_machine=powerpc-ibm
os=-cnk
;;
c54x-*)
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c55x-*)
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c6x-*)
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
c90) c90)
basic_machine=c90-cray basic_machine=c90-cray
os=-unicos os=-unicos
;; ;;
cegcc)
basic_machine=arm-unknown
os=-cegcc
;;
convex-c1) convex-c1)
basic_machine=c1-convex basic_machine=c1-convex
os=-bsd os=-bsd
@@ -577,8 +475,8 @@ case $basic_machine in
basic_machine=craynv-cray basic_machine=craynv-cray
os=-unicosmp os=-unicosmp
;; ;;
cr16 | cr16-*) cr16c)
basic_machine=cr16-unknown basic_machine=cr16c-unknown
os=-elf os=-elf
;; ;;
crds | unos) crds | unos)
@@ -616,10 +514,6 @@ case $basic_machine in
basic_machine=m88k-motorola basic_machine=m88k-motorola
os=-sysv3 os=-sysv3
;; ;;
dicos)
basic_machine=i686-pc
os=-dicos
;;
djgpp) djgpp)
basic_machine=i586-pc basic_machine=i586-pc
os=-msdosdjgpp os=-msdosdjgpp
@@ -735,6 +629,7 @@ case $basic_machine in
i370-ibm* | ibm*) i370-ibm* | ibm*)
basic_machine=i370-ibm basic_machine=i370-ibm
;; ;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i*86v32) i*86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32 os=-sysv32
@@ -773,14 +668,6 @@ case $basic_machine in
basic_machine=m68k-isi basic_machine=m68k-isi
os=-sysv os=-sysv
;; ;;
m68knommu)
basic_machine=m68k-unknown
os=-linux
;;
m68knommu-*)
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
m88k-omron*) m88k-omron*)
basic_machine=m88k-omron basic_machine=m88k-omron
;; ;;
@@ -792,21 +679,10 @@ case $basic_machine in
basic_machine=ns32k-utek basic_machine=ns32k-utek
os=-sysv os=-sysv
;; ;;
microblaze*)
basic_machine=microblaze-xilinx
;;
mingw64)
basic_machine=x86_64-pc
os=-mingw64
;;
mingw32) mingw32)
basic_machine=i686-pc basic_machine=i386-pc
os=-mingw32 os=-mingw32
;; ;;
mingw32ce)
basic_machine=arm-unknown
os=-mingw32ce
;;
miniframe) miniframe)
basic_machine=m68000-convergent basic_machine=m68000-convergent
;; ;;
@@ -835,18 +711,10 @@ case $basic_machine in
ms1-*) ms1-*)
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
;; ;;
msys)
basic_machine=i686-pc
os=-msys
;;
mvs) mvs)
basic_machine=i370-ibm basic_machine=i370-ibm
os=-mvs os=-mvs
;; ;;
nacl)
basic_machine=le32-unknown
os=-nacl
;;
ncr3000) ncr3000)
basic_machine=i486-ncr basic_machine=i486-ncr
os=-sysv4 os=-sysv4
@@ -911,12 +779,6 @@ case $basic_machine in
np1) np1)
basic_machine=np1-gould basic_machine=np1-gould
;; ;;
neo-tandem)
basic_machine=neo-tandem
;;
nse-tandem)
basic_machine=nse-tandem
;;
nsr-tandem) nsr-tandem)
basic_machine=nsr-tandem basic_machine=nsr-tandem
;; ;;
@@ -947,14 +809,6 @@ case $basic_machine in
basic_machine=i860-intel basic_machine=i860-intel
os=-osf os=-osf
;; ;;
parisc)
basic_machine=hppa-unknown
os=-linux
;;
parisc-*)
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
os=-linux
;;
pbd) pbd)
basic_machine=sparc-tti basic_machine=sparc-tti
;; ;;
@@ -999,10 +853,9 @@ case $basic_machine in
;; ;;
power) basic_machine=power-ibm power) basic_machine=power-ibm
;; ;;
ppc | ppcbe) basic_machine=powerpc-unknown ppc) basic_machine=powerpc-unknown
;; ;;
ppc-* | ppcbe-*) ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;; ;;
ppcle | powerpclittle | ppc-le | powerpc-little) ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown basic_machine=powerpcle-unknown
@@ -1027,11 +880,7 @@ case $basic_machine in
basic_machine=i586-unknown basic_machine=i586-unknown
os=-pw32 os=-pw32
;; ;;
rdos | rdos64) rdos)
basic_machine=x86_64-pc
os=-rdos
;;
rdos32)
basic_machine=i386-pc basic_machine=i386-pc
os=-rdos os=-rdos
;; ;;
@@ -1100,9 +949,6 @@ case $basic_machine in
basic_machine=i860-stratus basic_machine=i860-stratus
os=-sysv4 os=-sysv4
;; ;;
strongarm-* | thumb-*)
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
sun2) sun2)
basic_machine=m68000-sun basic_machine=m68000-sun
;; ;;
@@ -1159,9 +1005,17 @@ case $basic_machine in
basic_machine=t90-cray basic_machine=t90-cray
os=-unicos os=-unicos
;; ;;
tile*) tic54x | c54x*)
basic_machine=$basic_machine-unknown basic_machine=tic54x-unknown
os=-linux-gnu os=-coff
;;
tic55x | c55x*)
basic_machine=tic55x-unknown
os=-coff
;;
tic6x | c6x*)
basic_machine=tic6x-unknown
os=-coff
;; ;;
tx39) tx39)
basic_machine=mipstx39-unknown basic_machine=mipstx39-unknown
@@ -1230,9 +1084,6 @@ case $basic_machine in
xps | xps100) xps | xps100)
basic_machine=xps100-honeywell basic_machine=xps100-honeywell
;; ;;
xscale-* | xscalee[bl]-*)
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
;;
ymp) ymp)
basic_machine=ymp-cray basic_machine=ymp-cray
os=-unicos os=-unicos
@@ -1241,10 +1092,6 @@ case $basic_machine in
basic_machine=z8k-unknown basic_machine=z8k-unknown
os=-sim os=-sim
;; ;;
z80-*-coff)
basic_machine=z80-unknown
os=-sim
;;
none) none)
basic_machine=none-none basic_machine=none-none
os=-none os=-none
@@ -1283,7 +1130,7 @@ case $basic_machine in
we32k) we32k)
basic_machine=we32k-att basic_machine=we32k-att
;; ;;
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
basic_machine=sh-unknown basic_machine=sh-unknown
;; ;;
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
@@ -1333,9 +1180,6 @@ case $os in
# First match some system type aliases # First match some system type aliases
# that might get confused with valid system types. # that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception. # -solaris* is a basic system type, with this one exception.
-auroraux)
os=-auroraux
;;
-solaris1 | -solaris1.*) -solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'` os=`echo $os | sed -e 's|solaris1|sunos4|'`
;; ;;
@@ -1356,23 +1200,21 @@ case $os in
# Each alternative MUST END IN A *, to match a version number. # Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4. # -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -sym* | -kopensolaris* | -plan9* \
| -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
| -aos* | -aros* \ | -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* | -knetbsd* | -mirbsd* | -netbsd* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
| -bitrig* | -openbsd* | -solidbsd* \ | -openbsd* | -solidbsd* \
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -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* \
| -chorusos* | -chorusrdb* | -cegcc* \ | -chorusos* | -chorusrdb* \
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
| -uxpv* | -beos* | -mpeix* | -udk* \ | -uxpv* | -beos* | -mpeix* | -udk* \
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1380,7 +1222,7 @@ case $os in
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | -tirtos*) | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
# Remember, each alternative MUST END IN *, to match a version number. # Remember, each alternative MUST END IN *, to match a version number.
;; ;;
-qnx*) -qnx*)
@@ -1504,14 +1346,12 @@ case $os in
-aros*) -aros*)
os=-aros os=-aros
;; ;;
-kaos*)
os=-kaos
;;
-zvmoe) -zvmoe)
os=-zvmoe os=-zvmoe
;; ;;
-dicos*)
os=-dicos
;;
-nacl*)
;;
-none) -none)
;; ;;
*) *)
@@ -1552,21 +1392,6 @@ case $basic_machine in
c4x-* | tic4x-*) c4x-* | tic4x-*)
os=-coff os=-coff
;; ;;
c8051-*)
os=-elf
;;
hexagon-*)
os=-elf
;;
tic54x-*)
os=-coff
;;
tic55x-*)
os=-coff
;;
tic6x-*)
os=-coff
;;
# This must come before the *-dec entry. # This must come before the *-dec entry.
pdp10-*) pdp10-*)
os=-tops20 os=-tops20
@@ -1585,6 +1410,9 @@ case $basic_machine in
;; ;;
m68000-sun) m68000-sun)
os=-sunos3 os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;; ;;
m68*-cisco) m68*-cisco)
os=-aout os=-aout
@@ -1721,7 +1549,7 @@ case $basic_machine in
-sunos*) -sunos*)
vendor=sun vendor=sun
;; ;;
-cnk*|-aix*) -aix*)
vendor=ibm vendor=ibm
;; ;;
-beos*) -beos*)

View File

@@ -1,6 +1,6 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors # Copyright (c)2001-2008 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
@@ -9,82 +9,60 @@
# Please read the file COPYING, README and AUTHORS for more information. # Please read the file COPYING, README and AUTHORS for more information.
# #
define(VERSION_ID,esyscmd([
V=`git describe 2>/dev/null | sed -e 's/rel-//g' | sed -e 's/-/~/'`;
[ -z "$V" -a -r configure ] \
&& V=`grep "PACKAGE_STRING=" configure | cut -d"'" -f2 | cut -d' ' -f2`
( [ -n "$V" ] && echo "$V" || echo "??" ) | tr -d '\n';
]))
m4_ifdef([AM_SILENT_RULES],
[m4_define([ng_color_tests], [color-tests])],
[m4_define([ng_color_tests], [])])
# -- Initialisation -- # -- Initialisation --
AC_PREREQ([2.61]) AC_PREREQ(2.50)
AC_INIT([ngIRCd],[VERSION_ID],[ngircd-ml@ngircd.barton.de],[ngircd],[http://ngircd.barton.de/]) AC_INIT(ngircd, 0.12.0)
AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
AC_CONFIG_SRCDIR([src/ngircd/ngircd.c]) AC_CANONICAL_TARGET
AC_CONFIG_HEADER([src/config.h]) AM_INIT_AUTOMAKE(1.6)
AC_CANONICAL_HOST AM_CONFIG_HEADER(src/config.h)
AM_INIT_AUTOMAKE([-Wall 1.10 ]ng_color_tests)
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
# -- Templates for config.h -- # -- Templates for config.h --
AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled]) AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
AH_TEMPLATE([HAVE_sockaddr_in_len], [Define if sockaddr_in.sin_len exists])
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists]) AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
AH_TEMPLATE([ICONV], [Define if libiconv can be used, e.g. for CHARCONV])
AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
AH_TEMPLATE([PAM], [Define if PAM should be used])
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([SYSLOG], [Define if syslog should be used for logging]) AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled]) AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
AH_TEMPLATE([ZEROCONF], [Define if support for Zeroconf should be included])
AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
AH_TEMPLATE([HOST_OS], [Target operating system name]) AH_TEMPLATE([TARGET_OS], [Target operating system name])
AH_TEMPLATE([HOST_VENDOR], [Target system vendor]) AH_TEMPLATE([TARGET_VENDOR], [Target system vendor])
AH_TEMPLATE([HOST_CPU], [Target CPU name]) AH_TEMPLATE([TARGET_CPU], [Target CPU name])
# -- C Compiler -- # -- C Compiler --
AC_PROG_CC AC_PROG_CC
AC_PROG_CC_STDC
# -- Helper programs -- # -- Helper programs --
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
AC_PROG_AWK AC_PROG_AWK
AC_PROG_INSTALL AC_PROG_INSTALL
AC_PROG_LN_S AC_PROG_LN_S
AC_PROG_MAKE_SET AC_PROG_MAKE_SET
AC_PROG_MKDIR_P
AC_PROG_RANLIB AC_PROG_RANLIB
# -- Compiler Features -- # -- Compiler Features --
AM_C_PROTOTYPES
AC_C_CONST AC_C_CONST
AC_C_INLINE AC_C_INLINE
__ng_PROTOTYPES__
# -- Function Definitions -- # -- Hard coded system and compiler dependencies/features/options ... --
AC_DEFUN([GCC_STACK_PROTECT_CC],[ AC_DEFUN([GCC_STACK_PROTECT_CC],[
ssp_cc=yes ssp_cc=yes
# Use -fstack-protector-all for the test to enfoce the use of the # we use -fstack-protector-all for the test to enfoce the use of the guard variable
# guard variable
AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector]) AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector])
ssp_old_cflags="$CFLAGS" ssp_old_cflags="$CFLAGS"
CFLAGS="$CFLAGS -fstack-protector-all" CFLAGS="$CFLAGS -fstack-protector-all"
AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])],[],[ssp_cc=no]) AC_TRY_LINK(,,, ssp_cc=no)
echo $ssp_cc echo $ssp_cc
CFLAGS="$ssp_old_cflags" CFLAGS="$ssp_old_cflags"
if test "X$ssp_cc" = "Xyes"; then if test "X$ssp_cc" = "Xyes"; then
@@ -93,38 +71,6 @@ AC_DEFUN([GCC_STACK_PROTECT_CC],[
fi fi
]) ])
AC_DEFUN([WORKING_GETADDRINFO],[
AC_CHECK_FUNCS([getaddrinfo],[
AC_MSG_CHECKING([whether getaddrinfo() works])
AC_RUN_IFELSE([AC_LANG_SOURCE([[
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
int
main(int argc, char **argv)
{
struct addrinfo hints, *ai;
memset(&hints, 0, sizeof(hints));
hints.ai_flags = AI_PASSIVE;
hints.ai_socktype = SOCK_STREAM;
hints.ai_family = PF_UNSPEC;
if(getaddrinfo(NULL, "0", &hints, &ai) != 0)
return 1;
return 0;
}
]])],[
AC_DEFINE([HAVE_WORKING_GETADDRINFO], 1, [getaddrinfo(0)])
AC_MSG_RESULT(yes)
],[
AC_MSG_RESULT(no)
],[
AC_MSG_RESULT(no)
])
])
])
# -- Hard coded system and compiler dependencies/features/options ... --
if test "$GCC" = "yes"; then if test "$GCC" = "yes"; then
# We are using the GNU C compiler. Good! # We are using the GNU C compiler. Good!
@@ -133,7 +79,7 @@ if test "$GCC" = "yes"; then
GCC_STACK_PROTECT_CC GCC_STACK_PROTECT_CC
fi fi
case "$host_os" in case "$target_os" in
hpux*) hpux*)
# This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED # This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED
# (tested with HP/UX 11.11) # (tested with HP/UX 11.11)
@@ -144,87 +90,57 @@ esac
# Add additional CFLAGS, eventually specified on the command line: # Add additional CFLAGS, eventually specified on the command line:
test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD" test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"' -DDOCDIR='\"\$(docdir)\"'" CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
# -- Headers -- # -- Headers --
AC_HEADER_STDC AC_HEADER_STDC
AC_HEADER_SYS_WAIT
AC_HEADER_TIME AC_HEADER_TIME
AC_HEADER_SYS_WAIT
# Required header files
AC_CHECK_HEADERS([ \ AC_CHECK_HEADERS([ \
fcntl.h netdb.h netinet/in.h stdlib.h string.h \ ctype.h errno.h fcntl.h netdb.h netinet/in.h stdlib.h string.h \
strings.h sys/socket.h sys/time.h sys/types.h unistd.h \ strings.h sys/socket.h sys/time.h unistd.h \
],,AC_MSG_ERROR([required C header missing!])) ],,AC_MSG_ERROR([required C header missing!]))
# Optional header files AC_CHECK_HEADERS([arpa/inet.h ctype.h malloc.h stdbool.h stddef.h varargs.h])
AC_CHECK_HEADERS_ONCE([ \
arpa/inet.h inttypes.h malloc.h netinet/in_systm.h netinet/ip.h \
stdbool.h stddef.h stdint.h varargs.h \
])
# -- Datatypes -- # -- Datatypes --
AC_MSG_CHECKING(whether socklen_t exists) AC_MSG_CHECKING(whether socklen_t exists)
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[ AC_TRY_COMPILE([
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
]],[[ ],[
socklen_t a, b; socklen_t a, b;
a = 2; b = 4; a += b; a = 2; b = 4; a += b;
]])],[ ],[
AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes) AC_DEFINE(HAVE_socklen_t) AC_MSG_RESULT(yes)
],[ ],[
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
]) ])
AC_TYPE_PID_T AC_TYPE_SIGNAL
AC_TYPE_SIZE_T AC_TYPE_SIZE_T
AC_TYPE_SSIZE_T
AC_TYPE_UID_T
AC_TYPE_UINT16_T
AC_TYPE_UINT32_T
AC_TYPE_UINT8_T
AC_CHECK_MEMBER([struct sockaddr_in.sin_len], AC_DEFINE(HAVE_sockaddr_in_len),,
[#include <arpa/inet.h>])
# -- Libraries -- # -- Libraries --
# memmove: A/UX libUTIL AC_CHECK_LIB(UTIL,memmove)
AC_SEARCH_LIBS([memmove], [UTIL], [], [ AC_CHECK_LIB(socket,bind)
AC_MSG_ERROR([unable to find the memmove() function]) AC_CHECK_LIB(nsl,gethostent)
])
# gethostbyname: Solaris libnsl
AC_SEARCH_LIBS([gethostbyname], [bind nsl network], [], [
AC_MSG_ERROR([unable to find the gethostbyname() function])
])
# bind: SVR4 libsocket
AC_SEARCH_LIBS([bind], [socket network], [], [
AC_MSG_ERROR([unable to find the bind() function])
])
# -- Functions -- # -- Functions --
AC_FUNC_FORK AC_FUNC_FORK
AC_FUNC_STRFTIME AC_FUNC_STRFTIME
# Required functions
AC_CHECK_FUNCS([ \ AC_CHECK_FUNCS([ \
alarm dup2 endpwent gethostbyaddr gethostbyname gethostname \ bind gethostbyaddr gethostbyname gethostname inet_ntoa malloc memmove \
gettimeofday inet_ntoa memmove memset setsid socket strcasecmp \ memset realloc setsid setsockopt socket strcasecmp strchr strcspn strerror \
strchr strcspn strerror strncasecmp strrchr strspn strstr \ strstr waitpid],,AC_MSG_ERROR([required function missing!]))
],,
AC_MSG_ERROR([required function missing!]))
# Optional functions AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf strdup strlcpy strlcat)
AC_CHECK_FUNCS_ONCE([
arc4random arc4random_stir gai_strerror getnameinfo inet_aton \
sigaction sigprocmask snprintf vsnprintf strdup strndup strlcpy strlcat \
strtok_r unsetenv waitpid])
WORKING_GETADDRINFO
# -- Configuration options -- # -- Configuration options --
@@ -232,20 +148,22 @@ WORKING_GETADDRINFO
x_syslog_on=no x_syslog_on=no
AC_ARG_WITH(syslog, AC_ARG_WITH(syslog,
AS_HELP_STRING([--without-syslog], [ --without-syslog disable syslog (autodetected by default)],
[disable syslog (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS" CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS" LDFLAGS="-L$withval/lib $LDFLAGS"
fi fi
AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes], [ AC_CHECK_LIB(be, syslog)
AC_CHECK_FUNCS(syslog, x_syslog_on=yes,
AC_MSG_ERROR([Can't enable syslog!]) AC_MSG_ERROR([Can't enable syslog!])
]) )
fi fi
], ],
[ AC_SEARCH_LIBS([syslog], [be], [x_syslog_on=yes]) [
AC_CHECK_LIB(be, syslog)
AC_CHECK_FUNCS(syslog, x_syslog_on=yes)
] ]
) )
if test "$x_syslog_on" = "yes"; then if test "$x_syslog_on" = "yes"; then
@@ -257,8 +175,7 @@ fi
x_zlib_on=no x_zlib_on=no
AC_ARG_WITH(zlib, AC_ARG_WITH(zlib,
AS_HELP_STRING([--without-zlib], [ --without-zlib disable zlib compression (autodetected by default)],
[disable zlib compression (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -285,8 +202,7 @@ fi
x_io_backend=none x_io_backend=none
AC_ARG_WITH(select, AC_ARG_WITH(select,
AS_HELP_STRING([--without-select], [ --without-select disable select IO support (autodetected by default)],
[disable select IO support (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -304,35 +220,25 @@ AC_ARG_WITH(select,
) )
AC_ARG_WITH(poll, AC_ARG_WITH(poll,
AS_HELP_STRING([--without-poll], [ --without-poll disable poll support (autodetected by default)],
[disable poll support (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS" CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS" LDFLAGS="-L$withval/lib $LDFLAGS"
fi fi
AC_CHECK_FUNCS(poll, [ AC_CHECK_FUNCS(poll, x_io_backend=poll\(\),
AC_CHECK_HEADERS(poll.h,
x_io_backend=poll\(\),
AC_MSG_ERROR(
[Can't enable poll IO support!])
)
], [
AC_MSG_ERROR([Can't enable poll IO support!]) AC_MSG_ERROR([Can't enable poll IO support!])
]) )
fi fi
], ],
[ [
AC_CHECK_FUNCS(poll, [ AC_CHECK_FUNCS(poll, x_io_backend=poll\(\))
AC_CHECK_HEADERS(poll.h, x_io_backend=poll\(\))
])
] ]
) )
AC_ARG_WITH(devpoll, AC_ARG_WITH(devpoll,
AS_HELP_STRING([--without-devpoll], [ --without-devpoll disable /dev/poll IO support (autodetected by default)],
[disable /dev/poll IO support (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -349,8 +255,7 @@ AC_ARG_WITH(devpoll,
) )
AC_ARG_WITH(epoll, AC_ARG_WITH(epoll,
AS_HELP_STRING([--without-epoll], [ --without-epoll disable epoll IO support (autodetected by default)],
[disable epoll IO support (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -368,8 +273,7 @@ AC_ARG_WITH(epoll,
) )
AC_ARG_WITH(kqueue, AC_ARG_WITH(kqueue,
AS_HELP_STRING([--without-kqueue], [ --without-kqueue disable kqueue IO support (autodetected by default)],
[disable kqueue IO support (autodetected by default)]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -403,63 +307,14 @@ else
fi fi
if test "$x_io_backend" = "none"; then if test "$x_io_backend" = "none"; then
AC_MSG_ERROR([No useable IO API activated/found!?]) AC_MSG_ERROR([No useabe IO API activated/found!?])
fi
# use SSL?
AC_ARG_WITH(openssl,
AS_HELP_STRING([--with-openssl],
[enable SSL support using OpenSSL]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(crypto, BIO_s_mem)
AC_CHECK_LIB(ssl, SSL_library_init)
AC_CHECK_FUNCS(SSL_library_init, x_ssl_openssl=yes,
AC_MSG_ERROR([Can't enable openssl])
)
fi
]
)
AC_ARG_WITH(gnutls,
AS_HELP_STRING([--with-gnutls],
[enable SSL support using gnutls]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(gnutls, gnutls_global_init)
AC_CHECK_FUNCS(gnutls_global_init, x_ssl_gnutls=yes,
AC_MSG_ERROR([Can't enable gnutls])
)
fi
]
)
x_ssl_lib="no"
if test "$x_ssl_gnutls" = "yes"; then
if test "$x_ssl_openssl" = "yes";then
AC_MSG_ERROR([Cannot enable both gnutls and openssl])
fi
x_ssl_lib=gnutls
fi
if test "$x_ssl_openssl" = "yes"; then
x_ssl_lib=openssl
fi fi
# use TCP wrappers? # use TCP wrappers?
x_tcpwrap_on=no x_tcpwrap_on=no
AC_ARG_WITH(tcp-wrappers, AC_ARG_WITH(tcp-wrappers,
AS_HELP_STRING([--with-tcp-wrappers], [ --with-tcp-wrappers enable TCP wrappers support],
[enable TCP wrappers support]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -467,18 +322,14 @@ AC_ARG_WITH(tcp-wrappers,
LDFLAGS="-L$withval/lib $LDFLAGS" LDFLAGS="-L$withval/lib $LDFLAGS"
fi fi
AC_MSG_CHECKING(for hosts_access) AC_MSG_CHECKING(for hosts_access)
saved_LIBS="$LIBS"
LIBS="-lwrap $LIBS" LIBS="-lwrap $LIBS"
LIBS_END="-lwrap $LIBS_END" AC_TRY_LINK([
AC_LINK_IFELSE([AC_LANG_PROGRAM([[
#include <sys/types.h>
#include <sys/socket.h>
#include <tcpd.h> #include <tcpd.h>
int allow_severity = 0; int allow_severity = 0;
int deny_severity = 0; int deny_severity = 0;
]],[[ ],[
tcpd_warn("link test"); tcpd_warn("link test");
]])],[ ],[
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
AC_DEFINE(TCPWRAP, 1) AC_DEFINE(TCPWRAP, 1)
x_tcpwrap_on=yes x_tcpwrap_on=yes
@@ -486,17 +337,65 @@ int deny_severity = 0;
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
AC_MSG_ERROR([Can't enable TCP wrappers!]) AC_MSG_ERROR([Can't enable TCP wrappers!])
]) ])
LIBS="$saved_LIBS"
fi fi
] ]
) )
# include support for "zeroconf"?
x_zeroconf_on=no
AC_ARG_WITH(zeroconf,
[ --with-zeroconf enable support for "Zeroconf"],
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_FUNCS(DNSServiceRegistrationCreate, x_zeroconf_on=osx,
[
AC_CHECK_LIB(pthread, pthread_mutexattr_init)
AC_CHECK_LIB(howl, sw_discovery_init)
AC_CHECK_FUNCS(sw_discovery_init, \
x_zeroconf_on=howl, \
AC_MSG_ERROR([Can't enable Zeroconf!]))
])
fi
]
)
if test "$x_zeroconf_on" = "osx"; then
AC_CHECK_HEADERS([DNSServiceDiscovery/DNSServiceDiscovery.h \
mach/port.h],,AC_MSG_ERROR([required C header missing!]))
AC_DEFINE(ZEROCONF, 1)
fi
if test "$x_zeroconf_on" = "howl"; then
for dir in /usr/local/include /usr/local/include/howl* \
/usr/include /usr/include/howl* \
/usr/local/include/avahi* /usr/include/avahi*; do
test -d "$dir" || continue
AC_MSG_CHECKING([for Howl headers in $dir])
if test -f "$dir/rendezvous/rendezvous.h"; then
if test "$dir" != "/usr/local/include" -a \
"$dir" != "/usr/include"; then
CFLAGS="-I$dir $CFLAGS"
CPPFLAGS="-I$dir $CPPFLAGS"
fi
AC_MSG_RESULT(yes)
break
else
AC_MSG_RESULT(no)
fi
done
AC_CHECK_HEADERS([rendezvous/rendezvous.h],, \
AC_MSG_ERROR([required C header missing!]))
AC_DEFINE(ZEROCONF, 1)
fi
# do IDENT requests using libident? # do IDENT requests using libident?
x_identauth_on=no x_identauth_on=no
AC_ARG_WITH(ident, AC_ARG_WITH(ident,
AS_HELP_STRING([--with-ident], [ --with-ident enable "IDENT" ("AUTH") protocol support],
[enable "IDENT" ("AUTH") protocol support]),
[ if test "$withval" != "no"; then [ if test "$withval" != "no"; then
if test "$withval" != "yes"; then if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS" CFLAGS="-I$withval/include $CFLAGS"
@@ -515,84 +414,24 @@ if test "$x_identauth_on" = "yes"; then
AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!])) AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!]))
fi fi
# compile in PAM support?
x_pam_on=no
AC_ARG_WITH(pam,
AS_HELP_STRING([--with-pam],
[enable user authentication using PAM]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(pam, pam_authenticate)
AC_CHECK_FUNCS(pam_authenticate, x_pam_on=yes,
AC_MSG_ERROR([Can't enable PAM support!])
)
fi
]
)
if test "$x_pam_on" = "yes"; then
AC_DEFINE(PAM, 1)
AC_CHECK_HEADERS(security/pam_appl.h,pam_ok=yes)
if test "$pam_ok" != "yes"; then
AC_CHECK_HEADERS(pam/pam_appl.h,pam_ok=yes,
AC_MSG_ERROR([required C header missing!]))
fi
fi
# compile in IRC+ protocol support? # compile in IRC+ protocol support?
x_ircplus_on=yes x_ircplus_on=yes
AC_ARG_ENABLE(ircplus, AC_ARG_ENABLE(ircplus,
AS_HELP_STRING([--disable-ircplus], [ --disable-ircplus disable IRC+ protocol],
[disable IRC+ protocol]),
if test "$enableval" = "no"; then x_ircplus_on=no; fi if test "$enableval" = "no"; then x_ircplus_on=no; fi
) )
if test "$x_ircplus_on" = "yes"; then if test "$x_ircplus_on" = "yes"; then
AC_DEFINE(IRCPLUS, 1) AC_DEFINE(IRCPLUS, 1)
# Compile in iconv support?
# We only check for it when IRC+ is enabled, because the IRC+ command
# CHARCONV is the only function depending on it.
x_iconv_on=no
AC_ARG_WITH(iconv,
AS_HELP_STRING([--with-iconv],
[enable character conversion using libiconv]),
[ if test "$withval" != "no"; then
if test "$withval" != "yes"; then
CFLAGS="-I$withval/include $CFLAGS"
CPPFLAGS="-I$withval/include $CPPFLAGS"
LDFLAGS="-L$withval/lib $LDFLAGS"
fi
AC_CHECK_LIB(iconv, iconv_open)
AC_CHECK_FUNCS(iconv_open, x_iconv_on=yes)
if test "$x_iconv_on" != "yes"; then
AC_CHECK_LIB(iconv, libiconv_open)
AC_CHECK_FUNCS(libiconv_open, x_iconv_on=yes)
fi
if test "$x_iconv_on" != "yes"; then
AC_MSG_ERROR([Can't enable libiconv support!])
fi
fi ]
)
if test "$x_iconv_on" = "yes"; then
AC_DEFINE(ICONV, 1)
fi
fi fi
# enable support for IPv6? # enable support for IPv6?
x_ipv6_on=no x_ipv6_on=no
AC_ARG_ENABLE(ipv6, AC_ARG_ENABLE(ipv6,
AS_HELP_STRING([--enable-ipv6], [ --enable-ipv6 enable IPv6 protocol support],
[enable IPv6 protocol support]),
if test "$enableval" = "yes"; then x_ipv6_on=yes; fi if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
) )
if test "$x_ipv6_on" = "yes"; then if test "$x_ipv6_on" = "yes"; then
# getaddrinfo() and getnameinfo() are optional when not compiling
# with IPv6 support, but are required for IPv6 to work!
AC_CHECK_FUNCS([ \ AC_CHECK_FUNCS([ \
getaddrinfo getnameinfo \ getaddrinfo getnameinfo \
],,AC_MSG_ERROR([required function missing for IPv6 support!])) ],,AC_MSG_ERROR([required function missing for IPv6 support!]))
@@ -603,8 +442,7 @@ fi
x_sniffer_on=no; x_debug_on=no x_sniffer_on=no; x_debug_on=no
AC_ARG_ENABLE(sniffer, AC_ARG_ENABLE(sniffer,
AS_HELP_STRING([--enable-sniffer], [ --enable-sniffer enable IRC traffic sniffer (enables debug mode)],
[enable IRC traffic sniffer (enables debug mode)]),
if test "$enableval" = "yes"; then if test "$enableval" = "yes"; then
AC_DEFINE(SNIFFER, 1) AC_DEFINE(SNIFFER, 1)
x_sniffer_on=yes; x_debug_on=yes x_sniffer_on=yes; x_debug_on=yes
@@ -614,22 +452,19 @@ AC_ARG_ENABLE(sniffer,
# enable additional debugging code? # enable additional debugging code?
AC_ARG_ENABLE(debug, AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug], [ --enable-debug show additional debug output],
[show additional debug output]),
if test "$enableval" = "yes"; then x_debug_on=yes; fi if test "$enableval" = "yes"; then x_debug_on=yes; fi
) )
if test "$x_debug_on" = "yes"; then if test "$x_debug_on" = "yes"; then
AC_DEFINE(DEBUG, 1) AC_DEFINE(DEBUG, 1)
test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS" test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS"
AC_CHECK_FUNCS(mtrace)
fi fi
# enable "strict RFC rules"? # enable "strict RFC rules"?
x_strict_rfc_on=no x_strict_rfc_on=no
AC_ARG_ENABLE(strict-rfc, AC_ARG_ENABLE(strict-rfc,
AS_HELP_STRING([--enable-strict-rfc], [ --enable-strict-rfc strict RFC conformance -- may break clients!],
[strict RFC conformance -- may break clients!]),
if test "$enableval" = "yes"; then if test "$enableval" = "yes"; then
AC_DEFINE(STRICT_RFC, 1) AC_DEFINE(STRICT_RFC, 1)
x_strict_rfc_on=yes x_strict_rfc_on=yes
@@ -638,47 +473,39 @@ AC_ARG_ENABLE(strict-rfc,
# -- Definitions -- # -- Definitions --
AC_DEFINE_UNQUOTED(HOST_CPU, "$host_cpu" ) AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
AC_DEFINE_UNQUOTED(HOST_VENDOR, "$host_vendor" ) AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
AC_DEFINE_UNQUOTED(HOST_OS, "$host_os" ) AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
# Add additional CFLAGS, LDFLAGS and LIBS which were specified on the command # Add additional CFLAGS, eventually specified on the command line, but after
# line or by some tests from above, but after running this script. Useful for # running this configure script. Useful for "-Werror" for example.
# adding "-Werror", for example:
test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END" test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
test -n "$LDFLAGS_END" && LDFLAGS="$LDFLAGS $LDFLAGS_END"
test -n "$LIBS_END" && LIBS="$LIBS $LIBS_END"
# -- Generate files -- # -- Generate files --
AC_CONFIG_FILES([ \ AC_OUTPUT([ \
Makefile \ Makefile \
contrib/Debian/Makefile \
contrib/MacOSX/Makefile \
contrib/MacOSX/ngIRCd.pmdoc/Makefile \
contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
contrib/Makefile \
doc/Makefile \ doc/Makefile \
doc/src/Makefile \ doc/src/Makefile \
man/Makefile \
src/ipaddr/Makefile \
src/Makefile \ src/Makefile \
src/ngircd/Makefile \
src/portab/Makefile \ src/portab/Makefile \
src/testsuite/Makefile \ src/ipaddr/Makefile \
src/tool/Makefile \ src/tool/Makefile \
src/ngircd/Makefile \
src/testsuite/Makefile \
man/Makefile \
contrib/Makefile \
contrib/Debian/Makefile \
contrib/MacOSX/Makefile \
contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
]) ])
AC_OUTPUT
type dpkg >/dev/null 2>&1 type dpkg >/dev/null 2>&1
if test $? -eq 0; then if test $? -eq 0; then
# Generate debian/ link if the dpkg command exists # Generate debian/ link if the dpkg command exists
# (read: if we are running on a debian compatible system) # (read: if we are running on a debian compatible system)
echo "creating Debian-specific links ..." echo "creating Debian-specific links ..."
if test ! -f debian/rules -a -f contrib/Debian/rules; then test -f debian/rules || ln -s contrib/Debian debian
ln -s contrib/Debian debian
fi
fi fi
# -- Result -- # -- Result --
@@ -692,9 +519,10 @@ B=`eval echo ${bindir}` ; B=`eval echo ${B}`
S=`eval echo ${sbindir}` ; S=`eval echo ${S}` S=`eval echo ${sbindir}` ; S=`eval echo ${S}`
C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}` C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}`
M=`eval echo ${mandir}` ; M=`eval echo ${M}` M=`eval echo ${mandir}` ; M=`eval echo ${M}`
D=`eval echo ${docdir}` ; D=`eval echo ${D}` D=`eval echo ${datadir}/doc/${PACKAGE}` ; D=`eval echo ${D}`
echo " Host: ${host}" echo " Target: ${target}"
test "$target" != "$host" && echo " Host: ${host}"
echo " Compiler: ${CC}" echo " Compiler: ${CC}"
test -n "$CFLAGS" && echo " Compiler flags: ${CFLAGS}" test -n "$CFLAGS" && echo " Compiler flags: ${CFLAGS}"
test -n "$CPPFLAGS" && echo " Preprocessor flags: ${CPPFLAGS}" test -n "$CPPFLAGS" && echo " Preprocessor flags: ${CPPFLAGS}"
@@ -734,41 +562,32 @@ test "$x_strict_rfc_on" = "yes" \
&& echo "yes" \ && echo "yes" \
|| echo "no" || echo "no"
echo $ECHO_N " IDENT support: $ECHO_C" echo $ECHO_N " Zeroconf support: $ECHO_C"
test "$x_identauth_on" = "yes" \ case "$x_zeroconf_on" in
&& echo $ECHO_N "yes $ECHO_C" \ osx)
|| echo $ECHO_N "no $ECHO_C" echo $ECHO_N "Apple $ECHO_C"
;;
howl)
echo $ECHO_N "Howl $ECHO_C"
;;
*)
echo $ECHO_N "no $ECHO_C"
;;
esac
echo $ECHO_N " IRC+ protocol: $ECHO_C" echo $ECHO_N " IRC+ protocol: $ECHO_C"
test "$x_ircplus_on" = "yes" \ test "$x_ircplus_on" = "yes" \
&& echo "yes" \ && echo "yes" \
|| echo "no" || echo "no"
echo $ECHO_N " IPv6 protocol: $ECHO_C" echo $ECHO_N " IDENT support: $ECHO_C"
test "$x_ipv6_on" = "yes" \ test "$x_identauth_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \ && echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C" || echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " I/O backend: $ECHO_C" echo $ECHO_N " I/O backend: $ECHO_C"
echo "$x_io_backend" echo "\"$x_io_backend\""
echo $ECHO_N " PAM support: $ECHO_C"
test "$x_pam_on" = "yes" \
&& echo $ECHO_N "yes $ECHO_C" \
|| echo $ECHO_N "no $ECHO_C"
echo $ECHO_N " SSL support: $ECHO_C"
echo "$x_ssl_lib"
echo $ECHO_N " libiconv support: $ECHO_C"
echo "$x_iconv_on"
echo $ECHO_N " IPv6 protocol: $ECHO_C"
echo "$x_ipv6_on"
echo echo
define(_automake_regex_,[[^AUTOMAKE_OPTIONS = [a-z .\-]*/portab/ansi2knr]])
if ! grep "_automake_regex_" src/ngircd/Makefile.am >/dev/null 2>&1; then
echo "WARNING:"
echo "This GNU automake generated build system does not support \"de-ANSI-fication\","
echo "therefore don't use it to generate \"official\" distribution archives!"
echo "(Most probably you want to use GNU automake 1.11.x for this purpose ...)"
echo
fi
# -eof- # -eof-

View File

@@ -1,13 +0,0 @@
*.log
*.debhelper
*.substvars
files
ngircd/
ngircd-full/
ngircd-full.default
ngircd-full.init
ngircd-full.postinst
ngircd-full-dbg/
ngircd-full-dbg.default
ngircd-full-dbg.init
ngircd-full-dbg.postinst

View File

@@ -1,6 +1,6 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2010 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
@@ -8,9 +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.4 2004/05/11 00:32:31 alex Exp $
#
EXTRA_DIST = rules changelog compat control copyright \ EXTRA_DIST = rules changelog compat control copyright \
ngircd.init ngircd.default ngircd.pam ngircd.postinst ngircd.init ngircd.postinst
maintainer-clean-local: maintainer-clean-local:
rm -f Makefile Makefile.in rm -f Makefile Makefile.in
@@ -20,10 +22,7 @@ clean-local:
ngircd.prerm.debhelper ngircd.substvars ngircd.prerm.debhelper ngircd.substvars
rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \ rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \
ngircd-full.prerm.debhelper ngircd-full.substvars ngircd-full.prerm.debhelper ngircd-full.substvars
rm -f ngircd-full-dbg.postinst.debhelper \ rm -rf ngircd ngircd-full
ngircd-full-dbg.postrm.debhelper ngircd-full-dbg.prerm.debhelper \
ngircd-full-dbg.substvars
rm -rf ngircd ngircd-full ngircd-full-dbg
rm -f files rm -f files
# -eof- # -eof-

View File

@@ -1,264 +1,4 @@
ngircd (22~rc1-0ab1) unstable; urgency=low ngircd (0.12.0-0ab0-pre3) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 22.
-- Alexander Barton <alex@barton.de> Mon, 29 Sep 2014 17:07:55 +0200
ngircd (21.1-0ab2) unstable; urgency=low
* Use correct package name in pathname to "HelpFile" (Command.txt)
in "ngircd-full" and "ngircd-full-dbg" packages.
* Don't adjust path names that are correct by default.
-- Alexander Barton <alex@barton.de> Mon, 14 Jul 2014 11:20:17 +0200
ngircd (21.1-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 21.1.
-- Alexander Barton <alex@barton.de> Tue, 25 Mar 2014 14:44:59 +0100
ngircd (21-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 21.
-- Alexander Barton <alex@barton.de> Wed, 30 Oct 2013 22:13:55 +0100
ngircd (21~rc2-0ab3) unstable; urgency=low
* Fix sed(1) rules adjusting "ngircd-full" package, error introduced
by last commit :-/
-- Alexander Barton <alex@barton.de> Sun, 20 Oct 2013 18:31:16 +0200
ngircd (21~rc2-0ab2) unstable; urgency=low
* Fix default "HelpFile" file name in ngircd.conf for "full" packages.
-- Alexander Barton <alex@barton.de> Sun, 20 Oct 2013 17:18:28 +0200
ngircd (21~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 21.
-- Alexander Barton <alex@barton.de> Sun, 20 Oct 2013 15:50:03 +0200
ngircd (21~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 21.
-- Alexander Barton <alex@barton.de> Sat, 05 Oct 2013 23:24:09 +0200
ngircd (20.3-0ab1) unstable; urgency=high
* New "upstream" release, fixing a security related bug: ngIRCd 20.3.
-- Alexander Barton <alex@barton.de> Fri, 23 Aug 2013 21:53:21 +0200
ngircd (20.2-0ab1) unstable; urgency=high
* New "upstream" release, fixing a security related bug: ngIRCd 20.2.
-- Alexander Barton <alex@barton.de> Fri, 15 Feb 2013 12:17:00 +0100
ngircd (20.1-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 20.1.
-- Alexander Barton <alex@barton.de> Wed, 02 Jan 2013 22:37:26 +0100
ngircd (20-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 20.
-- Alexander Barton <alex@barton.de> Mon, 17 Dec 2012 13:04:15 +0100
ngircd (20~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 20.
-- Alexander Barton <alex@barton.de> Sun, 02 Dec 2012 18:51:06 +0100
ngircd (20~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 20.
-- Alexander Barton <alex@barton.de> Sun, 11 Nov 2012 16:03:32 +0100
ngircd (19.2-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 19.2.
-- Alexander Barton <alex@barton.de> Tue, 19 Jun 2012 11:03:12 +0200
ngircd (19.2~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRC Release 19.2.
-- Alexander Barton <alex@barton.de> Wed, 13 Jun 2012 10:59:34 +0200
ngircd (19.1-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 19.1.
-- Alexander Barton <alex@barton.de> Mon, 19 Mar 2012 19:18:28 +0100
ngircd (19-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 19.
-- Alexander Barton <alex@barton.de> Wed, 29 Feb 2012 17:34:08 +0100
ngircd (19~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 19.
-- Alexander Barton <alex@barton.de> Sun, 12 Feb 2012 17:47:51 +0100
ngircd (18-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 18.
-- Alexander Barton <alex@barton.de> Sun, 10 Jul 2011 20:03:20 +0200
ngircd (18~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 18.
-- Alexander Barton <alex@barton.de> Wed, 29 Jun 2011 10:20:51 +0200
ngircd (18~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 18.
-- Alexander Barton <alex@barton.de> Mon, 27 Jun 2011 22:58:36 +0200
ngircd (17.1-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 17.1.
-- Alexander Barton <alex@barton.de> Sun, 19 Dec 2010 15:56:42 +0100
ngircd (17-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 17.
-- Alexander Barton <alex@barton.de> Sun, 07 Nov 2010 17:23:07 +0100
ngircd (17~rc3-0ab1) unstable; urgency=low
* New "upstream" release candidate 3 for ngIRCd Release 17.
-- Alexander Barton <alex@barton.de> Wed, 27 Oct 2010 22:30:08 +0200
ngircd (17~rc2-0ab2) unstable; urgency=low
* Install /etc/pam.d/ngircd including "auth required pam_permit.so" when
installing -full or -full-dbg variant to keep backwards compatibility.
-- Alexander Barton <alex@barton.de> Tue, 26 Oct 2010 23:34:56 +0200
ngircd (17~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 17.
-- Alexander Barton <alex@barton.de> Mon, 25 Oct 2010 18:51:15 +0200
ngircd (17~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 17.
-- Alexander Barton <alex@barton.de> Mon, 11 Oct 2010 16:57:47 +0200
ngircd (16-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 16.
-- Alexander Barton <alex@barton.de> Sun, 02 May 2010 13:32:41 +0200
ngircd (16~rc2-0ab1) unstable; urgency=low
* New "upstream" release candidate 2 for ngIRCd Release 16.
-- Alexander Barton <alex@barton.de> Sun, 25 Apr 2010 13:12:42 +0200
ngircd (16~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 16.
-- Alexander Barton <alex@barton.de> Thu, 25 Mar 2010 15:56:03 +0200
ngircd (15-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 15.
-- Alexander Barton <alex@barton.de> Thu, 7 Nov 2009 12:07:08 +0200
ngircd (15~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 15.
-- Alexander Barton <alex@barton.de> Thu, 15 Oct 2009 10:01:08 +0200
ngircd (14.1-0ab1) unstable; urgency=high
* New "upstream" release ngIRCd 14.1, fixing a security-related bug.
-- Alexander Barton <alex@barton.de> Tue, 5 May 2009 13:13:38 +0200
ngircd (14-0ab3) unstable; urgency=low
* Fixed "Conflicts:" line in debian/control: missing comma.
-- Alexander Barton <alex@barton.de> Mon, 4 May 2009 11:21:55 +0200
ngircd (14-0ab2) unstable; urgency=low
* Add new "ngircd-full-dbg" package including degug code and both
the --debug and --sniffer options, and containing debug symbols.
-- Alexander Barton <alex@barton.de> Wed, 29 Apr 2009 01:13:03 +0200
ngircd (14-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 14.
-- Alexander Barton <alex@barton.de> Mon, 20 Apr 2009 11:09:12 +0200
ngircd (14~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 14.
-- Alexander Barton <alex@barton.de> Sun, 29 Mar 2009 17:09:17 +0200
ngircd (13-0ab1) unstable; urgency=low
* New "upstream" release: ngIRCd 13.
-- Alexander Barton <alex@barton.de> Thu, 25 Dec 2008 23:09:58 +0100
ngircd (13~rc1-0ab1) unstable; urgency=low
* New "upstream" release candidate 1 for ngIRCd Release 13.
-- Alexander Barton <alex@barton.de> Fri, 21 Nov 2008 22:04:41 +0100
ngircd (0.12.1-0ab1+dev) unstable; urgency=low
* Update package for testing the new "upstream" features:
- Support for IRC services (see http://www.ircservices.za.net),
- Encrypted connections using GNU TLS (ngircd-full),
- Support for the IPv6 protocol (ngircd-full).
-- Alexander Barton <alex@barton.de> Fri, 03 Oct 2008 16:22:55 +0200
ngircd (0.12.1-0ab1) unstable; urgency=low
* New "upstream" release ngIRCd 0.12.1.
-- Alexander Barton <alex@barton.de> Wed, 9 Jul 2008 11:27:00 +0200
ngircd (0.12.0-0ab1) unstable; urgency=low
* New "upstream" release ngIRCd 0.12.0. * New "upstream" release ngIRCd 0.12.0.
@@ -266,7 +6,7 @@ ngircd (0.12.0-0ab1) unstable; urgency=low
ngircd (0.12.0-0ab0-pre2) unstable; urgency=low ngircd (0.12.0-0ab0-pre2) unstable; urgency=low
* Second prerelease of upcoming new "upstrem" release 0.12.0-pre1. * Second prereloease of upcoming new "upstrem" release 0.12.0-pre1.
-- Alexander Barton <alex@barton.de> Tue, 29 Apr 2008 23:06:14 +0200 -- Alexander Barton <alex@barton.de> Tue, 29 Apr 2008 23:06:14 +0200

View File

@@ -2,64 +2,48 @@ Source: ngircd
Section: net Section: net
Priority: optional Priority: optional
Maintainer: Alexander Barton <alex@barton.de> Maintainer: Alexander Barton <alex@barton.de>
Build-Depends: debhelper (>> 4.0.0), Build-Depends: debhelper (>> 4.0.0), libz-dev, libwrap-dev, libident-dev
autotools-dev, Standards-Version: 3.7.2.1
expect,
libz-dev,
libwrap0-dev,
libident-dev,
libgnutls-dev,
libpam0g-dev,
telnet | telnet-ssl,
Standards-Version: 3.9.1
Package: ngircd Package: ngircd
Architecture: any Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends} Depends: ${shlibs:Depends}, ${misc:Depends}
Provides: ircd Provides: ircd
Description: lightweight Internet Relay Chat server Description: A lightweight daemon for the Internet Relay Chat (IRC)
This package provides ngIRCd, a portable and lightweight Internet Relay ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
Chat server for small or private networks, developed under the GNU network. It is written from scratch and is not based upon the original
General Public License (GPL). It is simple to configure, can cope with IRCd like many others.
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
. .
This package contains the "standard distribution", including support for This package contains the "standard distribution", including support for
syslog logging and compressed server-links using zlib. Please have a look syslog logging and compressed server-links using zlib.
at the "ngircd-full" package if you need advanced functionality like support .
for IPv6 or SSL. Advantages of ngIRCd:
- no problems with servers using changing/non-static IP addresses.
- small and lean configuration file.
- free, modern and open source C code.
- still under active development.
.
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
mixed networks.
Package: ngircd-full Package: ngircd-full
Architecture: any Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends} Depends: ${shlibs:Depends}, ${misc:Depends}
Provides: ircd Provides: ircd
Conflicts: ngircd, ngircd-dbg Conflicts: ngircd
Description: lightweight Internet Relay Chat server Description: A lightweight daemon for the Internet Relay Chat (IRC)
This package provides ngIRCd, a portable and lightweight Internet Relay ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
Chat server for small or private networks, developed under the GNU network. It is written from scratch and is not based upon the original
General Public License (GPL). It is simple to configure, can cope with IRCd like many others.
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
. .
In addition to the features of the "standard package", this package This package includes support for TCP wrappers and IDENT requests in
includes support for TCP wrappers, IDENT requests, the IPv6 protocol and addition to the features of the "standard package".
SSL encrypted client and server links.
Package: ngircd-full-dbg
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Provides: ircd
Conflicts: ngircd, ngircd-full
Description: lightweight Internet Relay Chat server
This package provides ngIRCd, a portable and lightweight Internet Relay
Chat server for small or private networks, developed under the GNU
General Public License (GPL). It is simple to configure, can cope with
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
. .
In addition to the features of the "standard package", this package Advantages of ngIRCd:
includes support for TCP wrappers, IDENT requests, the IPv6 protocol and - no problems with servers using changing/non-static IP addresses.
SSL encrypted client and server links. - small and lean configuration file.
- free, modern and open source C code.
- still under active development.
. .
And in addition to the "full" variant, the binaries contained in this ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
package are build with debug code and contain debug symbols. mixed networks.

View File

@@ -1,6 +1,8 @@
# #
# Defaults for ngIRCd start and stop script # Defaults for ngIRCd start and stop script
# #
# $Id: ngircd.default,v 1.1 2003/12/31 17:20:11 alex Exp $
#
# Parameters to pass to the ngircd daemon on startup, see ngircd(8) for # Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
# possible options (default: empty). # possible options (default: empty).

View File

@@ -1,19 +1,19 @@
#!/bin/sh #!/bin/sh
# #
# ngIRCd start and stop script for Debian-based systems # ngIRCd start and stop script for Debian-based systems
# Copyright 2008-2013 Alexander Barton <alex@barton.de> #
# $Id: ngircd.init,v 1.7 2006/12/26 14:43:46 alex Exp $
# #
### BEGIN INIT INFO ### BEGIN INIT INFO
# Provides: ngircd # Provides: ircd
# Required-Start: $network $remote_fs # Required-Start: $local_fs
# Required-Stop: $network $remote_fs # Required-Stop: $local_fs
# Should-Start: $syslog $named # Should-Start: $syslog $network
# Should-Stop: $syslog # Should-Stop: $syslog $network
# Default-Start: 2 3 4 5 # Default-Start: 2 3 4 5
# Default-Stop: 0 1 6 # Default-Stop: 0 1 6
# Short-Description: Next Generation IRC Server # Short-Description: Next Generation IRC Server
# Description: IRC daemon written from scratch
### END INIT INFO ### END INIT INFO
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
@@ -21,156 +21,66 @@ DAEMON=/usr/sbin/ngircd
NAME=ngIRCd NAME=ngIRCd
DESC="IRC daemon" DESC="IRC daemon"
PARAMS="" PARAMS=""
STARTTIME=1
DIETIME=10
test -h "$0" && me=`readlink $0` || me="$0" test -h "$0" && me=`readlink $0` || me="$0"
BASENAME=`basename $me` BASENAME=`basename $me`
test -r /etc/default/$BASENAME && . /etc/default/$BASENAME test -f /etc/default/$BASENAME && . /etc/default/$BASENAME
test -x $DAEMON || exit 5 test -x $DAEMON || exit 0
# LSB compatibility functions that become used if there is no local
# include file available.
log_daemon_msg() {
echo -n "$*"
}
log_end_msg() {
[ "$1" == "0" ] && echo "." || echo " failed!"
}
log_failure_msg() {
echo "$*"
}
log_warning_msg() {
log_failure_msg "$*"
}
# Include LSB functions, if available:
test -r /lib/lsb/init-functions && . /lib/lsb/init-functions
PIDFILE=`$DAEMON $PARAMS -t | tr -d ' ' | grep "^PidFile=" | cut -d'=' -f2`
[ -n "$PIDFILE" ] || PIDFILE="/var/run/ircd/ngircd.pid"
r=3
Check_Config() Check_Config()
{ {
# Make sure that the configuration of ngIRCd is valid: $DAEMON --configtest >/dev/null 2>&1
$DAEMON $PARAMS --configtest >/dev/null 2>&1 if [ $? -ne 0 ]; then
[ $? -eq 0 ] && return 0 echo "Configuration of $NAME is not valide, won't (re)start!"
log_end_msg 1 echo "Please run \"$DAEMON --configtest\" manually and fix it up ..."
log_failure_msg "Configuration of $NAME is not valid, won't (re)start!"
log_failure_msg "Run \"$DAEMON --configtest\" and fix it up ..."
exit 6
}
Prepare() {
# Make sure the PID file directory exists and is writable:
user=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerUID="|cut -d'=' -f2`
group=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerGID="|cut -d'=' -f2`
piddir=`dirname "$PIDFILE"`
[ -d "$piddir" ] || mkdir -p "$piddir" 2>/dev/null
chown "$user:$group" "$piddir" 2>/dev/null
[ $? -eq 0 ] && return 0
log_end_msg 1
log_failure_msg "Failed to prepare '$piddir' for user '$user'!"
exit 1 exit 1
}
Do_Start() {
if Do_Status; then
log_end_msg 0
log_warning_msg "$NAME seems to be already running, nothing to do."
exit 0
fi fi
rm -f "$PIDFILE"
start-stop-daemon --start \
--quiet --exec $DAEMON -- $PARAMS
sleep $STARTTIME
Do_Status || return 7
return 0
} }
Do_Stop() { Try_Start()
if ! Do_Status; then {
log_end_msg 0 [ ! -d /var/run/ircd ] || chown irc:irc /var/run/ircd
log_warning_msg "$NAME seems not to be running, nothing to do." start-stop-daemon --start --quiet --exec $DAEMON -- $PARAMS
exit 0 if [ $? -ne 0 ]; then
echo "$NAME failed!"
exit 1
fi fi
Do_ForceStop echo "$NAME."
return $?
}
Do_ForceStop() {
[ -e $PIDFILE ] \
&& pidfile="--pidfile $PIDFILE" \
|| pidfile=""
start-stop-daemon --stop \
--quiet --oknodo --exec $DAEMON $pidfile
for i in `seq 1 $DIETIME`; do
Do_Status || return 0
sleep 1
done
return 1
}
Do_Reload() {
start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
return $?
}
Do_Status() {
[ -e $PIDFILE ] \
&& pidfile="--pidfile $PIDFILE" \
|| pidfile=""
start-stop-daemon --stop \
--quiet --signal 0 --exec $DAEMON $pidfile >/dev/null
return $?
} }
case "$1" in case "$1" in
start) start)
log_daemon_msg "Starting $DESC" "$NAME"
Check_Config Check_Config
Prepare echo -n "Starting $DESC: "
Do_Start; r=$? Try_Start
log_end_msg $r
;; ;;
stop) stop)
log_daemon_msg "Stopping $DESC" "$NAME" echo -n "Stopping $DESC: "
Do_Stop; r=$? start-stop-daemon --stop --quiet --pidfile /var/run/ircd/ngircd.pid --exec $DAEMON \
log_end_msg $r && echo "$NAME." \
|| echo "(none running)"
;; ;;
reload|force-reload) reload|force-reload)
log_daemon_msg "Reloading $DESC" "$NAME"
Check_Config Check_Config
Do_Reload; r=$? echo "Reloading $DESC configuration files."
log_end_msg $r start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
;; ;;
restart) restart)
log_daemon_msg "Restarting $DESC" "$NAME"
Check_Config Check_Config
Prepare echo -n "Restarting $DESC: "
Do_ForceStop start-stop-daemon --stop --quiet --oknodo --exec $DAEMON
Do_Start; r=$? sleep 1
log_end_msg $r Try_Start
;;
status)
log_daemon_msg "Checking for $DESC" "$NAME"
Do_Status; r=$?
log_end_msg $r
;;
test)
Check_Config
echo "Configuration of $DAEMON seems to be ok."; r=0
;; ;;
*) *)
N=/etc/init.d/$NAME; r=2 N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|reload|force-reload|status|test}" >&2 echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
exit 1
;; ;;
esac esac
exit $r exit 0
# -eof- # -eof-

View File

@@ -1,4 +0,0 @@
# /etc/pam.d/ngircd
# allow all connections to ngIRCd
auth required pam_permit.so

View File

@@ -1,7 +1,7 @@
#!/usr/bin/make -f #!/usr/bin/make -f
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors # 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
@@ -11,6 +11,8 @@
# #
# debian/rules for ngIRCd # debian/rules for ngIRCd
# #
# $Id: rules,v 1.3 2005/02/07 23:09:31 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.
# #
@@ -42,7 +44,6 @@ configure-ngircd: configure
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/etc/ngircd \ --sysconfdir=/etc/ngircd \
--mandir=\$${prefix}/share/man \ --mandir=\$${prefix}/share/man \
--docdir=\$${prefix}/share/doc/ngircd \
--with-syslog --with-zlib --with-syslog --with-zlib
configure-ngircd-full: configure configure-ngircd-full: configure
@@ -53,26 +54,7 @@ configure-ngircd-full: configure
--prefix=/usr \ --prefix=/usr \
--sysconfdir=/etc/ngircd \ --sysconfdir=/etc/ngircd \
--mandir=\$${prefix}/share/man \ --mandir=\$${prefix}/share/man \
--docdir=\$${prefix}/share/doc/ngircd-full \ --with-syslog --with-zlib --with-tcp-wrappers --with-ident
--with-syslog --with-zlib \
--with-gnutls --with-iconv --with-ident --with-tcp-wrappers \
--with-pam \
--enable-ipv6
configure-ngircd-full-dbg: configure
dh_testdir
# configure "full debug" variant:
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
--prefix=/usr \
--sysconfdir=/etc/ngircd \
--mandir=\$${prefix}/share/man \
--docdir=\$${prefix}/share/doc/ngircd-full-dbg \
--enable-debug --enable-sniffer \
--with-syslog --with-zlib \
--with-gnutls --with-iconv --with-ident --with-tcp-wrappers \
--with-pam \
--enable-ipv6
build: build:
dh_clean -k dh_clean -k
@@ -97,16 +79,6 @@ build-stamp-ngircd-full: configure-ngircd-full
touch build-stamp-ngircd-full touch build-stamp-ngircd-full
build-ngircd-full-dbg: build-stamp-ngircd-full-dbg
build-stamp-ngircd-full-dbg: configure-ngircd-full-dbg
dh_testdir
rm -f build-stamp-*
# Add here commands to compile the "full debug" package:
$(MAKE)
touch build-stamp-ngircd-full
clean: clean:
dh_testdir dh_testdir
dh_testroot dh_testroot
@@ -114,12 +86,9 @@ clean:
rm -f $(CURDIR)/debian/ngircd-full.default rm -f $(CURDIR)/debian/ngircd-full.default
rm -f $(CURDIR)/debian/ngircd-full.init rm -f $(CURDIR)/debian/ngircd-full.init
rm -f $(CURDIR)/debian/ngircd-full.postinst rm -f $(CURDIR)/debian/ngircd-full.postinst
rm -f $(CURDIR)/debian/ngircd-full-dbg.default
rm -f $(CURDIR)/debian/ngircd-full-dbg.postinst
rm -f $(CURDIR)/debian/ngircd-full-dbg.init
# Add here commands to clean up after the build process: # Add here commands to clean up after the build process:
[ ! -f Makefile ] || $(MAKE) distclean -$(MAKE) clean
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
@@ -129,7 +98,7 @@ ifneq "$(wildcard /usr/share/misc/config.guess)" ""
endif endif
dh_clean dh_clean
install: install-ngircd install-ngircd-full install-ngircd-full-dbg install: install-ngircd install-ngircd-full
install-ngircd: build-ngircd install-ngircd: build-ngircd
dh_testdir dh_testdir
@@ -142,9 +111,10 @@ install-ngircd: build-ngircd
rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING* rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING*
mkdir -p $(CURDIR)/debian/ngircd/var/run/ircd mkdir -p $(CURDIR)/debian/ngircd/var/run/ircd
cat $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf | \ cat $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf | \
sed -e "s|;ServerUID = 65534|ServerUID = irc|g" | \ sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
sed -e "s|;ServerGID = 65534|ServerGID = irc|g" | \ sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
sed -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /var/run/ircd/ngircd.pid|g" \ sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
>$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf >$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
touch $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd touch $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
@@ -155,36 +125,18 @@ install-ngircd-full: build-ngircd-full
# Add here commands to install the "full" package into debian/ngircd-full: # Add here commands to install the "full" package into debian/ngircd-full:
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full $(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full
rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/INSTALL* rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/INSTALL*
rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/COPYING* rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/COPYING*
mv $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd \
$(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full
mkdir -p $(CURDIR)/debian/ngircd-full/var/run/ircd mkdir -p $(CURDIR)/debian/ngircd-full/var/run/ircd
cat $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/sample-ngircd.conf | \ cat $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/sample-ngircd.conf | \
sed -e "s|;ServerUID = 65534|ServerUID = irc|g" | \ sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
sed -e "s|;ServerGID = 65534|ServerGID = irc|g" | \ sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
sed -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /var/run/ircd/ngircd.pid|g" \ sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
>$(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.conf >$(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.conf
touch $(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.motd touch $(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.motd
mkdir -p $(CURDIR)/debian/ngircd-full/etc/pam.d
cp $(CURDIR)/debian/ngircd.pam $(CURDIR)/debian/ngircd-full/etc/pam.d/ngircd
install-ngircd-full-dbg: build-ngircd-full-dbg
dh_testdir
dh_testroot
dh_installdirs
# Add here commands to install the "full" package into debian/ngircd-full:
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full-dbg
rm $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/INSTALL*
rm $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/COPYING*
mkdir -p $(CURDIR)/debian/ngircd-full-dbg/var/run/ircd
cat $(CURDIR)/debian/ngircd-full-dbg/usr/share/doc/ngircd-full-dbg/sample-ngircd.conf | \
sed -e "s|;ServerUID = 65534|ServerUID = irc|g" | \
sed -e "s|;ServerGID = 65534|ServerGID = irc|g" | \
sed -e "s|;PidFile = /var/run/ngircd/ngircd.pid|PidFile = /var/run/ircd/ngircd.pid|g" \
>$(CURDIR)/debian/ngircd-full-dbg/etc/ngircd/ngircd.conf
touch $(CURDIR)/debian/ngircd-full-dbg/etc/ngircd/ngircd.motd
mkdir -p $(CURDIR)/debian/ngircd-full-dbg/etc/pam.d
cp $(CURDIR)/debian/ngircd.pam $(CURDIR)/debian/ngircd-full-dbg/etc/pam.d/ngircd
# Build architecture-independent files here. # Build architecture-independent files here.
binary-indep: binary-indep:
@@ -199,20 +151,13 @@ binary-arch: build install
ln -s $(CURDIR)/debian/ngircd.postinst \ ln -s $(CURDIR)/debian/ngircd.postinst \
$(CURDIR)/debian/ngircd-full.postinst $(CURDIR)/debian/ngircd-full.postinst
ln -s $(CURDIR)/debian/ngircd.default \
$(CURDIR)/debian/ngircd-full-dbg.default
ln -s $(CURDIR)/debian/ngircd.init \
$(CURDIR)/debian/ngircd-full-dbg.init
ln -s $(CURDIR)/debian/ngircd.postinst \
$(CURDIR)/debian/ngircd-full-dbg.postinst
dh_testdir dh_testdir
dh_testroot dh_testroot
dh_installchangelogs -a -A ChangeLog dh_installchangelogs -a -A ChangeLog
dh_installdocs -a dh_installdocs -a
dh_installinit -a dh_installinit -a
dh_strip -a --no-package=ngircd-full-dbg dh_strip -a
dh_compress -a -XCommands.txt dh_compress -a
dh_fixperms -a dh_fixperms -a
dh_installdeb -a dh_installdeb -a
dh_shlibdeps -a dh_shlibdeps -a

View File

@@ -1,2 +1 @@
build build
de.barton.ngircd.plist

View File

@@ -8,10 +8,12 @@
# (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.3 2008/02/17 15:31:15 alex Exp $
#
SUBDIRS = ngIRCd.xcodeproj ngIRCd.pmdoc SUBDIRS = ngIRCd.xcodeproj
EXTRA_DIST = de.barton.ngircd.plist.tmpl config.h preinstall.sh postinstall.sh EXTRA_DIST = de.barton.ngircd.plist.tmpl config.h cvs-version.h
SUFFIXES = .tmpl . SUFFIXES = .tmpl .
@@ -34,9 +36,7 @@ install-sys-darwin:
fi fi
install-sys-darwin-root: de.barton.ngircd.plist install-sys-darwin-root: de.barton.ngircd.plist
install -d -m 755 -o root -g wheel $(DESTDIR)/Library/LaunchDaemons install -c -m 644 -b -o root -g wheel de.barton.ngircd.plist /Library/LaunchDaemons/de.barton.ngircd.plist
install -c -m 644 -b -o root -g wheel de.barton.ngircd.plist \
$(DESTDIR)/Library/LaunchDaemons/de.barton.ngircd.plist
@echo @echo
@echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" has been installed," @echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" has been installed,"
@echo " ** but is disabled. Use launchctl(8) to enable/run ngIRCd on Darwin/Mac OS X." @echo " ** but is disabled. Use launchctl(8) to enable/run ngIRCd on Darwin/Mac OS X."
@@ -44,7 +44,6 @@ install-sys-darwin-root: de.barton.ngircd.plist
clean-local: clean-local:
rm -rf build rm -rf build
rm -f de.barton.ngircd.plist
maintainer-clean-local: maintainer-clean-local:
rm -f Makefile Makefile.in rm -f Makefile Makefile.in

View File

@@ -1,6 +1,6 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors. * Copyright (c)2001-2007 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
@@ -8,25 +8,14 @@
* (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: config.h,v 1.1 2007/11/19 22:11:36 alex Exp $
*
* Static configuration file for Mac OS X Xcode project * Static configuration file for Mac OS X Xcode project
*/ */
#define PACKAGE_NAME "ngIRCd" #define PACKAGE_NAME "ngircd"
# define PACKAGE "ngircd" #define VERSION "??"
#ifndef VERSION
# define VERSION "??("__DATE__")"
#endif
#ifndef HOST_VENDOR
# define HOST_VENDOR "apple"
# define HOST_OS "darwin"
# ifdef __x86_64
# define HOST_CPU "x86_64"
# endif
#endif
#define SYSCONFDIR "/etc/ngircd" #define SYSCONFDIR "/etc/ngircd"
#define DOCDIR "/usr/share/doc/ngircd"
/* -- Build options -- */ /* -- Build options -- */
@@ -48,18 +37,12 @@
/* Define if TCP wrappers should be used */ /* Define if TCP wrappers should be used */
/*#define TCPWRAP 1*/ /*#define TCPWRAP 1*/
/* Define if support for Zeroconf should be included */
/*#define ZEROCONF 1*/
/* Define if zlib compression should be enabled */ /* Define if zlib compression should be enabled */
#define ZLIB 1 #define ZLIB 1
/* Define if IPV6 protocol should be enabled */
#define WANT_IPV6 1
/* Define if PAM should be used */
#define PAM 1
/* Define if libiconv can be used, e.g. for CHARCONV */
#define ICONV 1
/* -- Supported features -- */ /* -- Supported features -- */
/* Define if SSP C support is enabled. */ /* Define if SSP C support is enabled. */
@@ -80,13 +63,7 @@
#define HAVE_STDBOOL_H 1 #define HAVE_STDBOOL_H 1
/* Define to 1 if you have the <arpa/inet.h> header file. */ /* Define to 1 if you have the <arpa/inet.h> header file. */
#define HAVE_ARPA_INET_H 1 #define HAVE_ARPA_INET_H 1
/* Define to 1 if you have the <netinet/ip.h> header file. */
#define HAVE_NETINET_IP_H 1
/* Define to 1 if you have the `gai_strerror' function. */
#define HAVE_GAI_STRERROR 1
/* Define to 1 if you have the `iconv_open' function. */
#define HAVE_ICONV_OPEN 1
/* Define to 1 if you have the `kqueue' function. */ /* Define to 1 if you have the `kqueue' function. */
#define HAVE_KQUEUE 1 #define HAVE_KQUEUE 1
/* Define to 1 if you have the `inet_ntoa' function. */ /* Define to 1 if you have the `inet_ntoa' function. */
@@ -101,34 +78,15 @@
#define HAVE_STRDUP 1 #define HAVE_STRDUP 1
/* Define to 1 if you have the `vsnprintf' function. */ /* Define to 1 if you have the `vsnprintf' function. */
#define HAVE_VSNPRINTF 1 #define HAVE_VSNPRINTF 1
/* Define to 1 if you have the `inet_aton' function. */
#define HAVE_INET_ATON 1
/* Define to 1 if you have the `getaddrinfo' function. */
#define HAVE_GETADDRINFO 1
/* getaddrinfo(0) */
#define HAVE_WORKING_GETADDRINFO 1
/* Define to 1 if you have the `getnameinfo' function. */
#define HAVE_GETNAMEINFO 1
/* Define to 1 if you have the `sigaction' function. */
#define HAVE_SIGACTION 1
/* Define to 1 if you have the `setsid' function. */
#define HAVE_SETSID 1
/* Define if socklen_t exists */ /* Define if socklen_t exists */
#define HAVE_socklen_t 1 #define HAVE_socklen_t 1
#ifdef PAM #ifdef ZEROCONF
/* Define to 1 if you have the `pam_authenticate' function. */ /* Define to 1 if you have the <DNSServiceDiscovery/DNSServiceDiscovery.h> header file. */
#define HAVE_PAM_AUTHENTICATE 1 #define HAVE_DNSSERVICEDISCOVERY_DNSSERVICEDISCOVERY_H 1
#if (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ < 1060) /* Define to 1 if you have the `DNSServiceRegistrationCreate' function. */
/* Define to 1 if you have the <pam/pam_appl.h> header file. */ #define HAVE_DNSSERVICEREGISTRATIONCREATE 1
#define HAVE_PAM_PAM_APPL_H 1
/* Mac OS X <10.6 doesn't have pam_fail_delay() */
#define NO_PAM_FAIL_DELAY 1
#else
/* Define to 1 if you have the <security/pam_appl.h> header file. */
#define HAVE_SECURITY_PAM_APPL_H 1
#endif
#endif #endif
/* -eof- */ /* -eof- */

View File

View File

@@ -15,9 +15,5 @@
</array> </array>
<key>RunAtLoad</key> <key>RunAtLoad</key>
<true/> <true/>
<key>StandardErrorPath</key>
<string>/Library/Logs/ngIRCd.log</string>
<key>StandardOutPath</key>
<string>/Library/Logs/ngIRCd.log</string>
</dict> </dict>
</plist> </plist>

View File

@@ -1 +0,0 @@
<pkg-contents spec="1.12"><f n="ngircd.dest" o="root" g="admin" p="16877" pt="../../ngircd.dest" m="false" t="file"><f n="opt" o="root" g="admin" p="16877"><f n="ngircd" o="root" g="admin" p="16877"><f n="etc" o="root" g="admin" p="16877"><f n="ngircd.motd" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="sbin" o="root" g="admin" p="16877"><f n="ngircd" o="root" g="admin" p="33261"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="share" o="root" g="admin" p="16877"><f n="doc" o="root" g="admin" p="16877"><f n="ngircd" o="root" g="admin" p="16877"><f n="AUTHORS" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Bopm.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="ChangeLog" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="COPYING" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="FAQ.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="GIT.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="HowToRelease.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="INSTALL" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="NEWS" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="PAM.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Platforms.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Protocol.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README-AUX.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README-BeOS.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="README-Interix.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="RFC.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="sample-ngircd.conf" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="Services.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><f n="SSL.txt" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="man" o="root" g="admin" p="16877"><f n="man5" o="root" g="admin" p="16877"><f n="ngircd.conf.5" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><f n="man8" o="root" g="admin" p="16877"><f n="ngircd.8" o="root" g="admin" p="33188"><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f><mod>group</mod><mod>owner</mod></f></pkg-contents>

View File

@@ -1 +0,0 @@
<pkgref spec="1.12" uuid="46208410-4A1B-48C6-97BD-DE284F13F864"><config><identifier>de.barton.ngircd.daemon.pkg</identifier><version>17.1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom>../../ngircd.dest</installFrom><installTo mod="true">/</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>extraFiles</mod><mod>installTo</mod><mod>installTo.isAbsoluteType</mod><mod>scripts.preinstall.path</mod><mod>identifier</mod><mod>parent</mod><mod>version</mod><mod>installTo.path</mod><mod>scripts.preupgrade.path</mod><mod>requireAuthorization</mod></config><contents><file-list>02ngircd-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref>

View File

@@ -1 +0,0 @@
<pkg-contents spec="1.12"><f n="de.barton.ngircd.plist" o="root" g="wheel" p="33188" pt="/Users/alex/Develop/ngircd/alex.git/contrib/MacOSX/de.barton.ngircd.plist" m="false" t="file"><mod>group</mod><mod>owner</mod></f></pkg-contents>

View File

@@ -1 +0,0 @@
<pkgref spec="1.12" uuid="F0954DA7-0607-4277-AE10-D882AC7C38CA"><config><identifier>de.barton.ngircd.launchscript.pkg</identifier><version>17.1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">de.barton.ngircd.plist</installFrom><installTo mod="true">/Library/LaunchDaemons</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>scripts.preinstall.path</mod><mod>installTo</mod><mod>scripts.postinstall.path</mod><mod>scripts.postinstall.isRelativeType</mod><mod>installFrom.isRelativeType</mod><mod>installTo.isAbsoluteType</mod><mod>version</mod><mod>parent</mod><mod>scripts.preupgrade.path</mod><mod>identifier</mod><mod>scripts.postupgrade.path</mod><mod>requireAuthorization</mod><mod>extraFiles</mod><mod>scripts.postupgrade.isRelativeType</mod><mod>installTo.path</mod></config><scripts><preinstall relative="true" mod="true">preinstall.sh</preinstall><postinstall relative="true" mod="true">postinstall.sh</postinstall><preupgrade relative="true" mod="true">preinstall.sh</preupgrade><postupgrade relative="true" mod="true">postinstall.sh</postupgrade></scripts><contents><file-list>01de-contents.xml</file-list><filter>/CVS$</filter><filter>/\.svn$</filter><filter>/\.cvsignore$</filter><filter>/\.cvspass$</filter><filter>/\.DS_Store$</filter></contents><extra-files/></pkgref>

View File

@@ -1,18 +0,0 @@
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2008 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.
#
EXTRA_DIST = index.xml \
01ngircd-contents.xml 01ngircd.xml 02de-contents.xml 02de.xml
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

View File

@@ -1,238 +0,0 @@
<pkmkdoc spec="1.12"><properties><title>ngIRCd</title><build>../../ngIRCd.mpkg</build><organization>de.barton.ngircd</organization><userSees ui="both"/><min-target os="2"/><domain system="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>ngIRCd next generation Internet Relay Chat (IRC) server
daemon</description><contents><choice title="ngIRCd daemon" id="choicengircd" tooltip="ngIRCd daemon, documentation and manual pages" description="Binaries, documentation and manual pages of the ngIRCd, the next generation IRC (Internet Relay Chat) daemon. This package will be installed into /opt/ngircd." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="de.barton.ngircd.daemon.pkg"/></choice><choice title="Start and stop script" id="choicelaunchscript" tooltip="LaunchDaemon start and stop script" description="Installs the ngIRCd start and stop script for the &quot;launch daemon&quot;. If this is an update/upgrade, and ngIRCd is already running, it will be automatically restarted." starts_selected="true" starts_enabled="true" starts_hidden="false"><pkgref id="de.barton.ngircd.launchscript.pkg"/></choice></contents><resources bg-scale="none" bg-align="bottomleft"><locale lang="en"><resource type="background">../ngIRCd-Logo.gif</resource><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\f0\i\fs24 \cf0 ngIRCd -- The Next Generation IRC Daemon\
Copyright (c)2001-2014 Alexander Barton and Contributors.\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\i0 \cf0 \
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. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \
\
Please see below and read the file COPYING, README and AUTHORS for more information.\
\
\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 GNU GENERAL PUBLIC LICENSE\
Version 2, June 1991\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\b0 \cf0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\cf0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.\
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
Everyone is permitted to copy and distribute verbatim copies\
of this license document, but changing it is not allowed.\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\cf0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 Preamble\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\b0 \cf0 \
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\
\
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\
\
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\
\
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\
\
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\
\
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\
\
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\
\
The precise terms and conditions for copying, distribution and modification follow.\
\page \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 GNU GENERAL PUBLIC LICENSE\
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION\
AND MODIFICATION\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\b0 \cf0 \
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law:\
that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\
\
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the\
Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\
\
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\
\
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\
\
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1above, provided that you also meet all of these conditions:\
\
a) You must cause the modified files to carry prominent notices\
stating that you changed the files and the date of any change.\
\
b) You must cause any work that you distribute or publish, that in\
whole or in part contains or is derived from the Program or any\
part thereof, to be licensed as a whole at no charge to all third\
parties under the terms of this License.\
\
c) If the modified program normally reads commands interactively\
when run, you must cause it, when started running for such\
interactive use in the most ordinary way, to print or display an\
announcement including an appropriate copyright notice and a\
notice that there is no warranty (or else, saying that you provide\
a warranty) and that users may redistribute the program under\
these conditions, and telling the user how to view a copy of this\
License. (Exception: if the Program itself is interactive but\
does not normally print such an announcement, your work based on\
the Program is not required to print an announcement.)\
\page \
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\
\
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\
\
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\
\
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\
\
a) Accompany it with the complete corresponding machine-readable\
source code, which must be distributed under the terms of Sections\
1 and 2 above on a medium customarily used for software\
interchange; or,\
\
b) Accompany it with a written offer, valid for at least three\
years, to give any third party, for a charge no more than your\
cost of physically performing source distribution, a complete\
machine-readable copy of the corresponding source code, to be\
distributed under the terms of Sections 1 and 2 above on a medium\
customarily used for software interchange; or,\
\
c) Accompany it with the information you received as to the offer\
to distribute corresponding source code. (This alternative is\
allowed only for noncommercial distribution and only if you\
received the program in object code or executable form with such\
an offer, in accord with Subsection b above.)\
\
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\
\
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not\
compelled to copy the source along with the object code.\
\
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\
\
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\
\
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\
\
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\
\
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\
\
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\
\
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\
\page \
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\
\
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\
\
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\
\
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
\b \cf0 NO WARRANTY
\b0 \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
\cf0 \
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
\
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.}]]></resource><resource mime-type="text/rtf" kind="embedded" type="readme"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs26 \cf0 Please note:\
\
\pard\tx260\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li260\fi-260\ql\qnatural\pardirnatural
\cf0 \'95 You
\b have to adjust the configuration file
\b0 of ngIRCd, at least if you are installing ngIRCd for the first time on this system (it is preserved while updating, of course).\
\
\'95 The daemon is automatically restarted when updating, so your
\b users will be disconnected
\b0 .\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\cf0 \
ngIRCd becomes installed in the (newly created) /opt/ngircd directory on your system volume. Interesting files and directories are:\
\
\pard\tx260\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li260\fi-260\ql\qnatural\pardirnatural
\cf0 \'95
\f1 /opt/ngircd/sbin/ngircd
\f0 \'96 executable daemon\
\'95
\f1 /opt/ngircd/etc/ngircd.conf
\f0 \'96 configuration file\
\'95
\f1 /opt/ngircd/share/doc/ngircd/\'85
\f0 \'96 documentation\
\'95
\f1 /opt/ngircd/share/mac/\'85
\f0 \'96 manual pages}]]></resource><resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
{\colortbl;\red255\green255\blue255;}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs26 \cf0 ngIRCd is a free and open source daemon for the Internet Relay Chat (IRC) protocol, developed under the GNU General Public License (GPL). It is written from scratch, is quite portable and is not based upon the original IRCd like many others.\
\
ngIRCd Homepage: {\field{\*\fldinst{HYPERLINK "http://ngircd.barton.de"}}{\fldrslt http://ngircd.barton.de}}\
\
Please see the documentation for details! You can find it online here on the Homepage:\
\
Documentation: {\field{\*\fldinst{HYPERLINK "http://ngircd.barton.de/documentation"}}{\fldrslt http://ngircd.barton.de/documentation}}\
\
You will be guided through all steps necessary to install this software on Mac OS X.}]]></resource><resource mime-type="text/rtf" kind="embedded" type="conclusion"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fmodern\fcharset0 Courier;}
{\colortbl;\red255\green255\blue255;}
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid1\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1}
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid101\'01\uc0\u8259 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2}}
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0\fs26 \cf0 The daemon has been restarted if it was already running before this installation and you have installed the LaunchDaemon start and stop script (which is the default).\
\
If you installed ngIRCd for the first time (or had the LaunchDaemon script disabled before), you can start ngIRCd using the following terminal command:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\fs20 \cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
\ls1\ilvl0
\f1\fs26 \cf0 sudo launchctl load -w \\\
/Library/LaunchDaemons/de.barton.ngircd.plist\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0 \cf0 \
To disable automatic starting of ngIRCd, use this command:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\fs18 \cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
\ls2\ilvl0
\f1\fs26 \cf0 sudo launchctl unload -w \\\
/Library/LaunchDaemons/de.barton.ngircd.plist\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\f0 \cf0 \
But don\'92t forget to
\b adjust the configuration!
\b0 By default, it is stored in the following file:\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
\fs18 \cf0 \
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
\f1\fs26 \cf0 /opt/ngircd/etc/ngircd.conf}]]></resource></locale></resources><flags/><extra-files/><item type="file">02de.xml</item><item type="file">01ngircd.xml</item><mod>extraFiles</mod><mod>properties.title</mod><mod>properties.customizeOption</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>

View File

@@ -1,4 +1,2 @@
project.xcworkspace
xcuserdata
*.mode1v3 *.mode1v3
*.pbxuser *.pbxuser

View File

@@ -3,12 +3,10 @@
archiveVersion = 1; archiveVersion = 1;
classes = { classes = {
}; };
objectVersion = 46; objectVersion = 44;
objects = { objects = {
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
FA2D564A11EA158B00D37A35 /* pam.c in Sources */ = {isa = PBXBuildFile; fileRef = FA2D564911EA158B00D37A35 /* pam.c */; };
FA2D567B11EA1AB300D37A35 /* libpam.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA2D567A11EA1AB300D37A35 /* libpam.dylib */; };
FA322D350CEF74B1001761B3 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CD90CEF74B1001761B3 /* array.c */; }; FA322D350CEF74B1001761B3 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CD90CEF74B1001761B3 /* array.c */; };
FA322D360CEF74B1001761B3 /* channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDB0CEF74B1001761B3 /* channel.c */; }; FA322D360CEF74B1001761B3 /* channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDB0CEF74B1001761B3 /* channel.c */; };
FA322D370CEF74B1001761B3 /* client.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDD0CEF74B1001761B3 /* client.c */; }; FA322D370CEF74B1001761B3 /* client.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDD0CEF74B1001761B3 /* client.c */; };
@@ -32,22 +30,11 @@
FA322D490CEF74B1001761B3 /* match.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D030CEF74B1001761B3 /* match.c */; }; FA322D490CEF74B1001761B3 /* match.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D030CEF74B1001761B3 /* match.c */; };
FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D060CEF74B1001761B3 /* ngircd.c */; }; FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D060CEF74B1001761B3 /* ngircd.c */; };
FA322D4B0CEF74B1001761B3 /* parse.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D080CEF74B1001761B3 /* parse.c */; }; FA322D4B0CEF74B1001761B3 /* parse.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D080CEF74B1001761B3 /* parse.c */; };
FA322D4C0CEF74B1001761B3 /* rendezvous.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0A0CEF74B1001761B3 /* rendezvous.c */; };
FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0C0CEF74B1001761B3 /* resolve.c */; }; FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0C0CEF74B1001761B3 /* resolve.c */; };
FA322DBE0CEF7766001761B3 /* tool.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D330CEF74B1001761B3 /* tool.c */; }; FA322DBE0CEF7766001761B3 /* tool.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D330CEF74B1001761B3 /* tool.c */; };
FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA322DC00CEF77CB001761B3 /* libz.dylib */; }; FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA322DC00CEF77CB001761B3 /* libz.dylib */; };
FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */; }; FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */; };
FA4F165A164836B100DBD011 /* irc-metadata.c in Sources */ = {isa = PBXBuildFile; fileRef = FA4F1659164836B100DBD011 /* irc-metadata.c */; };
FA6BBC631605F0AC0004247A /* conn-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = FA6BBC5F1605F0AB0004247A /* conn-encoding.c */; };
FA6BBC641605F0AC0004247A /* irc-encoding.c in Sources */ = {isa = PBXBuildFile; fileRef = FA6BBC611605F0AC0004247A /* irc-encoding.c */; };
FA6BBC661605F6D60004247A /* libiconv.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA6BBC651605F6D60004247A /* libiconv.dylib */; };
FA85178C0FA061EC006A1F5A /* op.c in Sources */ = {isa = PBXBuildFile; fileRef = FA85178B0FA061EC006A1F5A /* op.c */; };
FA99428C10E82A27007F27ED /* proc.c in Sources */ = {isa = PBXBuildFile; fileRef = FA99428B10E82A27007F27ED /* proc.c */; };
FAA3D27B0F139CDC00B2447E /* conn-ssl.c in Sources */ = {isa = PBXBuildFile; fileRef = FAA3D2790F139CDC00B2447E /* conn-ssl.c */; };
FAA97C57124A271400D5BBA9 /* sighandlers.c in Sources */ = {isa = PBXBuildFile; fileRef = FAA97C55124A271400D5BBA9 /* sighandlers.c */; };
FAACD5F514A6099C006ED74F /* class.c in Sources */ = {isa = PBXBuildFile; fileRef = FAACD5F314A6099C006ED74F /* class.c */; };
FAD5853215271AAB00328741 /* client-cap.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD5853015271AAB00328741 /* client-cap.c */; };
FAD5853515271AB800328741 /* irc-cap.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD5853315271AB800328741 /* irc-cap.c */; };
FAD5853815272C2600328741 /* login.c in Sources */ = {isa = PBXBuildFile; fileRef = FAD5853615272C2500328741 /* login.c */; };
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */ = {isa = PBXBuildFile; fileRef = FAE5CC2D0CF2308A007D69B6 /* numeric.c */; }; FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */ = {isa = PBXBuildFile; fileRef = FAE5CC2D0CF2308A007D69B6 /* numeric.c */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
@@ -64,27 +51,9 @@
/* End PBXCopyFilesBuildPhase section */ /* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
FA18A63E16CEDDCE00132F66 /* configure.ng */ = {isa = PBXFileReference; lastKnownFileType = text; name = configure.ng; path = ../../configure.ng; sourceTree = "<group>"; }; FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "misc-test.e"; sourceTree = "<group>"; };
FA18A63F16CEDE2300132F66 /* ngircd.service */ = {isa = PBXFileReference; lastKnownFileType = text; path = ngircd.service; sourceTree = "<group>"; };
FA18A64016CEDE2300132F66 /* ngircd.socket */ = {isa = PBXFileReference; lastKnownFileType = text; path = ngircd.socket; sourceTree = "<group>"; };
FA18A64116CEDE3500132F66 /* ngircd.pam */ = {isa = PBXFileReference; lastKnownFileType = text; path = ngircd.pam; sourceTree = "<group>"; };
FA18A64216CEDE5700132F66 /* de.barton.ngircd.plist.tmpl */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = de.barton.ngircd.plist.tmpl; sourceTree = "<group>"; };
FA18A64316CEDE8100132F66 /* Makefile.am */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA18A64416CEDFCE00132F66 /* Commands.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Commands.txt; sourceTree = "<group>"; };
FA18A64516CEE0C700132F66 /* Makefile.ng */ = {isa = PBXFileReference; lastKnownFileType = text; name = Makefile.ng; path = ipaddr/Makefile.ng; sourceTree = "<group>"; };
FA18A64616CEE0DD00132F66 /* Makefile.ng */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.ng; sourceTree = "<group>"; };
FA18A64716CEE14900132F66 /* Makefile.ng */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.ng; sourceTree = "<group>"; };
FA18A64A16CEE18100132F66 /* Makefile.ng */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.ng; sourceTree = "<group>"; };
FA18A64C16CEE1AC00132F66 /* mode-test.e */ = {isa = PBXFileReference; lastKnownFileType = text; path = "mode-test.e"; sourceTree = "<group>"; };
FA18A64D16CEE1D900132F66 /* whois-test.e */ = {isa = PBXFileReference; lastKnownFileType = text; path = "whois-test.e"; sourceTree = "<group>"; };
FA18A64E16CEE24B00132F66 /* misc-test.e */ = {isa = PBXFileReference; lastKnownFileType = text; path = "misc-test.e"; sourceTree = "<group>"; };
FA18A64F16CEE27700132F66 /* Makefile.ng */ = {isa = PBXFileReference; lastKnownFileType = text; path = Makefile.ng; sourceTree = "<group>"; };
FA1A6BBD0D6857D900AA8F71 /* who-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "who-test.e"; sourceTree = "<group>"; }; FA1A6BBD0D6857D900AA8F71 /* who-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "who-test.e"; sourceTree = "<group>"; };
FA1DBB6716C707D200D4F838 /* irc-macros.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-macros.h"; sourceTree = "<group>"; }; FA322BBA0CEF72E4001761B3 /* ngIRCd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ngIRCd; sourceTree = BUILT_PRODUCTS_DIR; };
FA2D564811EA158B00D37A35 /* pam.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pam.h; sourceTree = "<group>"; };
FA2D564911EA158B00D37A35 /* pam.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pam.c; sourceTree = "<group>"; };
FA2D567A11EA1AB300D37A35 /* libpam.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libpam.dylib; path = usr/lib/libpam.dylib; sourceTree = SDKROOT; };
FA322BBA0CEF72E4001761B3 /* ngIRCd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = ngIRCd; path = ngircd; sourceTree = BUILT_PRODUCTS_DIR; };
FA322CD60CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; }; FA322CD60CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322CD90CEF74B1001761B3 /* array.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = array.c; sourceTree = "<group>"; }; FA322CD90CEF74B1001761B3 /* array.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = array.c; sourceTree = "<group>"; };
FA322CDA0CEF74B1001761B3 /* array.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = "<group>"; }; FA322CDA0CEF74B1001761B3 /* array.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = "<group>"; };
@@ -127,6 +96,7 @@
FA322CFF0CEF74B1001761B3 /* lists.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = lists.h; sourceTree = "<group>"; }; FA322CFF0CEF74B1001761B3 /* lists.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = lists.h; sourceTree = "<group>"; };
FA322D000CEF74B1001761B3 /* log.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; }; FA322D000CEF74B1001761B3 /* log.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; };
FA322D010CEF74B1001761B3 /* log.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; }; FA322D010CEF74B1001761B3 /* log.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
FA322D020CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D030CEF74B1001761B3 /* match.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = match.c; sourceTree = "<group>"; }; FA322D030CEF74B1001761B3 /* match.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = match.c; sourceTree = "<group>"; };
FA322D040CEF74B1001761B3 /* match.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = match.h; sourceTree = "<group>"; }; FA322D040CEF74B1001761B3 /* match.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = match.h; sourceTree = "<group>"; };
FA322D050CEF74B1001761B3 /* messages.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = "<group>"; }; FA322D050CEF74B1001761B3 /* messages.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = "<group>"; };
@@ -134,10 +104,15 @@
FA322D070CEF74B1001761B3 /* ngircd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ngircd.h; sourceTree = "<group>"; }; FA322D070CEF74B1001761B3 /* ngircd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ngircd.h; sourceTree = "<group>"; };
FA322D080CEF74B1001761B3 /* parse.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = parse.c; sourceTree = "<group>"; }; FA322D080CEF74B1001761B3 /* parse.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = parse.c; sourceTree = "<group>"; };
FA322D090CEF74B1001761B3 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parse.h; sourceTree = "<group>"; }; FA322D090CEF74B1001761B3 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parse.h; sourceTree = "<group>"; };
FA322D0A0CEF74B1001761B3 /* rendezvous.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = rendezvous.c; sourceTree = "<group>"; };
FA322D0B0CEF74B1001761B3 /* rendezvous.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = rendezvous.h; sourceTree = "<group>"; };
FA322D0C0CEF74B1001761B3 /* resolve.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = resolve.c; sourceTree = "<group>"; }; FA322D0C0CEF74B1001761B3 /* resolve.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = resolve.c; sourceTree = "<group>"; };
FA322D0D0CEF74B1001761B3 /* resolve.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = resolve.h; sourceTree = "<group>"; }; FA322D0D0CEF74B1001761B3 /* resolve.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = resolve.h; sourceTree = "<group>"; };
FA322D100CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; }; FA322D100CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
FA322D110CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; }; FA322D110CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
FA322D120CEF74B1001761B3 /* exp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = exp.h; sourceTree = "<group>"; };
FA322D130CEF74B1001761B3 /* imp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = imp.h; sourceTree = "<group>"; };
FA322D140CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D150CEF74B1001761B3 /* portab.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = portab.h; sourceTree = "<group>"; }; FA322D150CEF74B1001761B3 /* portab.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = portab.h; sourceTree = "<group>"; };
FA322D160CEF74B1001761B3 /* portabtest.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = portabtest.c; sourceTree = "<group>"; }; FA322D160CEF74B1001761B3 /* portabtest.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = portabtest.c; sourceTree = "<group>"; };
FA322D170CEF74B1001761B3 /* splint.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = splint.h; sourceTree = "<group>"; }; FA322D170CEF74B1001761B3 /* splint.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = splint.h; sourceTree = "<group>"; };
@@ -149,6 +124,9 @@
FA322D1F0CEF74B1001761B3 /* connect-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "connect-test.e"; sourceTree = "<group>"; }; FA322D1F0CEF74B1001761B3 /* connect-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "connect-test.e"; sourceTree = "<group>"; };
FA322D200CEF74B1001761B3 /* functions.inc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; path = functions.inc; sourceTree = "<group>"; }; FA322D200CEF74B1001761B3 /* functions.inc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; path = functions.inc; sourceTree = "<group>"; };
FA322D210CEF74B1001761B3 /* getpid.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = getpid.sh; sourceTree = "<group>"; }; FA322D210CEF74B1001761B3 /* getpid.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = getpid.sh; sourceTree = "<group>"; };
FA322D220CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D230CEF74B1001761B3 /* mode-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "mode-test.e"; sourceTree = "<group>"; };
FA322D240CEF74B1001761B3 /* ngircd-test.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test.conf"; sourceTree = "<group>"; };
FA322D250CEF74B1001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; FA322D250CEF74B1001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
FA322D260CEF74B1001761B3 /* start-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "start-server.sh"; sourceTree = "<group>"; }; FA322D260CEF74B1001761B3 /* start-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "start-server.sh"; sourceTree = "<group>"; };
FA322D270CEF74B1001761B3 /* stop-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stop-server.sh"; sourceTree = "<group>"; }; FA322D270CEF74B1001761B3 /* stop-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stop-server.sh"; sourceTree = "<group>"; };
@@ -158,6 +136,9 @@
FA322D2B0CEF74B1001761B3 /* test-loop.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "test-loop.sh"; sourceTree = "<group>"; }; FA322D2B0CEF74B1001761B3 /* test-loop.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "test-loop.sh"; sourceTree = "<group>"; };
FA322D2C0CEF74B1001761B3 /* tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = tests.sh; sourceTree = "<group>"; }; FA322D2C0CEF74B1001761B3 /* tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = tests.sh; sourceTree = "<group>"; };
FA322D2D0CEF74B1001761B3 /* wait-tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "wait-tests.sh"; sourceTree = "<group>"; }; FA322D2D0CEF74B1001761B3 /* wait-tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "wait-tests.sh"; sourceTree = "<group>"; };
FA322D300CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
FA322D310CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
FA322D320CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D330CEF74B1001761B3 /* tool.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = tool.c; sourceTree = "<group>"; }; FA322D330CEF74B1001761B3 /* tool.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = tool.c; sourceTree = "<group>"; };
FA322D340CEF74B1001761B3 /* tool.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = tool.h; sourceTree = "<group>"; }; FA322D340CEF74B1001761B3 /* tool.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = tool.h; sourceTree = "<group>"; };
FA322D5A0CEF750F001761B3 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../AUTHORS; sourceTree = SOURCE_ROOT; }; FA322D5A0CEF750F001761B3 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../AUTHORS; sourceTree = SOURCE_ROOT; };
@@ -165,6 +146,7 @@
FA322D5C0CEF750F001761B3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../ChangeLog; sourceTree = SOURCE_ROOT; }; FA322D5C0CEF750F001761B3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../ChangeLog; sourceTree = SOURCE_ROOT; };
FA322D5E0CEF750F001761B3 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../config.guess; sourceTree = SOURCE_ROOT; }; FA322D5E0CEF750F001761B3 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../config.guess; sourceTree = SOURCE_ROOT; };
FA322D5F0CEF750F001761B3 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.sub; path = ../../config.sub; sourceTree = SOURCE_ROOT; }; FA322D5F0CEF750F001761B3 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.sub; path = ../../config.sub; sourceTree = SOURCE_ROOT; };
FA322D600CEF750F001761B3 /* configure.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = configure.in; path = ../../configure.in; sourceTree = SOURCE_ROOT; };
FA322D610CEF750F001761B3 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../COPYING; sourceTree = SOURCE_ROOT; }; FA322D610CEF750F001761B3 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../COPYING; sourceTree = SOURCE_ROOT; };
FA322D620CEF750F001761B3 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../INSTALL; sourceTree = SOURCE_ROOT; }; FA322D620CEF750F001761B3 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../INSTALL; sourceTree = SOURCE_ROOT; };
FA322D630CEF750F001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ../../Makefile.am; sourceTree = SOURCE_ROOT; }; FA322D630CEF750F001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ../../Makefile.am; sourceTree = SOURCE_ROOT; };
@@ -179,9 +161,11 @@
FA322D700CEF7523001761B3 /* ngircd.init */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.init; sourceTree = "<group>"; }; FA322D700CEF7523001761B3 /* ngircd.init */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.init; sourceTree = "<group>"; };
FA322D710CEF7523001761B3 /* ngircd.postinst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.postinst; sourceTree = "<group>"; }; FA322D710CEF7523001761B3 /* ngircd.postinst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.postinst; sourceTree = "<group>"; };
FA322D720CEF7523001761B3 /* rules */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = rules; sourceTree = "<group>"; }; FA322D720CEF7523001761B3 /* rules */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = rules; sourceTree = "<group>"; };
FA322D8D0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = MacOSX/Makefile.am; sourceTree = "<group>"; }; FA322D8D0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ngIRCd.xcodeproj; sourceTree = "<group>"; }; FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ngIRCd.xcodeproj; sourceTree = "<group>"; };
FA322D910CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322D920CEF7523001761B3 /* ngindent */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngindent; sourceTree = "<group>"; }; FA322D920CEF7523001761B3 /* ngindent */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngindent; sourceTree = "<group>"; };
FA322D930CEF7523001761B3 /* ngircd.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.sh; sourceTree = "<group>"; };
FA322D940CEF7523001761B3 /* ngircd.spec */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.spec; sourceTree = "<group>"; }; FA322D940CEF7523001761B3 /* ngircd.spec */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.spec; sourceTree = "<group>"; };
FA322D950CEF7523001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; FA322D950CEF7523001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
FA322D960CEF7523001761B3 /* systrace.policy */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = systrace.policy; sourceTree = "<group>"; }; FA322D960CEF7523001761B3 /* systrace.policy */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = systrace.policy; sourceTree = "<group>"; };
@@ -192,73 +176,24 @@
FA322D9E0CEF752C001761B3 /* README-AUX.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-AUX.txt"; sourceTree = "<group>"; }; FA322D9E0CEF752C001761B3 /* README-AUX.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-AUX.txt"; sourceTree = "<group>"; };
FA322D9F0CEF752C001761B3 /* README-BeOS.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-BeOS.txt"; sourceTree = "<group>"; }; FA322D9F0CEF752C001761B3 /* README-BeOS.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-BeOS.txt"; sourceTree = "<group>"; };
FA322DA00CEF752C001761B3 /* RFC.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = RFC.txt; sourceTree = "<group>"; }; FA322DA00CEF752C001761B3 /* RFC.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = RFC.txt; sourceTree = "<group>"; };
FA322DA10CEF752C001761B3 /* sample-ngircd.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "sample-ngircd.conf"; sourceTree = "<group>"; };
FA322DA40CEF752C001761B3 /* Doxyfile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Doxyfile; sourceTree = "<group>"; }; FA322DA40CEF752C001761B3 /* Doxyfile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Doxyfile; sourceTree = "<group>"; };
FA322DA50CEF752C001761B3 /* footer.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = footer.inc.html; sourceTree = "<group>"; }; FA322DA50CEF752C001761B3 /* footer.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = footer.inc.html; sourceTree = "<group>"; };
FA322DA60CEF752C001761B3 /* header.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = header.inc.html; sourceTree = "<group>"; };
FA322DA70CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; }; FA322DA70CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322DA80CEF752C001761B3 /* ngircd-doc.css */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.css; path = "ngircd-doc.css"; sourceTree = "<group>"; };
FA322DA90CEF752C001761B3 /* SSL.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = SSL.txt; sourceTree = "<group>"; }; FA322DA90CEF752C001761B3 /* SSL.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = SSL.txt; sourceTree = "<group>"; };
FA322DAA0CEF752C001761B3 /* Zeroconf.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Zeroconf.txt; sourceTree = "<group>"; };
FA322DAD0CEF7538001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; }; FA322DAD0CEF7538001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.8.tmpl; sourceTree = "<group>"; }; FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.8.tmpl; sourceTree = "<group>"; };
FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.conf.5.tmpl; sourceTree = "<group>"; }; FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.conf.5.tmpl; sourceTree = "<group>"; };
FA322DB10CEF7565001761B3 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; }; FA322DB10CEF7565001761B3 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
FA322DBB0CEF773C001761B3 /* cvs-version.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "cvs-version.h"; sourceTree = "<group>"; };
FA322DC00CEF77CB001761B3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; }; FA322DC00CEF77CB001761B3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
FA407F2B0DB159F400271AF1 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ipaddr/Makefile.am; sourceTree = "<group>"; };
FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = ng_ipaddr.c; path = ipaddr/ng_ipaddr.c; sourceTree = "<group>"; }; FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = ng_ipaddr.c; path = ipaddr/ng_ipaddr.c; sourceTree = "<group>"; };
FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ng_ipaddr.h; path = ipaddr/ng_ipaddr.h; sourceTree = "<group>"; }; FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ng_ipaddr.h; path = ipaddr/ng_ipaddr.h; sourceTree = "<group>"; };
FA407F380DB15AC700271AF1 /* GIT.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = GIT.txt; sourceTree = "<group>"; }; FA407F380DB15AC700271AF1 /* GIT.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = GIT.txt; sourceTree = "<group>"; };
FA4B08E513E7F8FB00765BA3 /* ngircd-bsd.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "ngircd-bsd.sh"; sourceTree = "<group>"; };
FA4B08E613E7F91700765BA3 /* ngIRCd-Logo.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "ngIRCd-Logo.gif"; sourceTree = "<group>"; };
FA4B08E713E7F91700765BA3 /* ngircd-redhat.init */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "ngircd-redhat.init"; sourceTree = "<group>"; };
FA4B08E813E7F91C00765BA3 /* platformtest.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = platformtest.sh; sourceTree = "<group>"; };
FA4F1659164836B100DBD011 /* irc-metadata.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "irc-metadata.c"; sourceTree = "<group>"; };
FA4F165C164836BF00DBD011 /* irc-metadata.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-metadata.h"; sourceTree = "<group>"; };
FA6BBC5F1605F0AB0004247A /* conn-encoding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "conn-encoding.c"; sourceTree = "<group>"; };
FA6BBC601605F0AC0004247A /* conn-encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "conn-encoding.h"; sourceTree = "<group>"; };
FA6BBC611605F0AC0004247A /* irc-encoding.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "irc-encoding.c"; sourceTree = "<group>"; };
FA6BBC621605F0AC0004247A /* irc-encoding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-encoding.h"; sourceTree = "<group>"; };
FA6BBC651605F6D60004247A /* libiconv.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libiconv.dylib; path = ../../../../../../../usr/lib/libiconv.dylib; sourceTree = "<group>"; };
FA77849A133FB9FF00740057 /* sample-ngircd.conf.tmpl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = "sample-ngircd.conf.tmpl"; sourceTree = "<group>"; };
FA85178A0FA061EC006A1F5A /* op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = op.h; sourceTree = "<group>"; };
FA85178B0FA061EC006A1F5A /* op.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = op.c; sourceTree = "<group>"; };
FA99428A10E82A27007F27ED /* proc.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = proc.h; sourceTree = "<group>"; };
FA99428B10E82A27007F27ED /* proc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = proc.c; sourceTree = "<group>"; };
FAA3D2700F139CB300B2447E /* invite-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "invite-test.e"; sourceTree = "<group>"; };
FAA3D2710F139CB300B2447E /* join-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "join-test.e"; sourceTree = "<group>"; };
FAA3D2720F139CB300B2447E /* kick-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "kick-test.e"; sourceTree = "<group>"; };
FAA3D2730F139CB300B2447E /* message-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "message-test.e"; sourceTree = "<group>"; };
FAA3D2740F139CB300B2447E /* ngircd-test1.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test1.conf"; sourceTree = "<group>"; };
FAA3D2750F139CB300B2447E /* ngircd-test2.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test2.conf"; sourceTree = "<group>"; };
FAA3D2760F139CB300B2447E /* opless-channel-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "opless-channel-test.e"; sourceTree = "<group>"; };
FAA3D2770F139CB300B2447E /* server-link-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "server-link-test.e"; sourceTree = "<group>"; };
FAA3D2780F139CDC00B2447E /* conf-ssl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conf-ssl.h"; sourceTree = "<group>"; };
FAA3D2790F139CDC00B2447E /* conn-ssl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-ssl.c"; sourceTree = "<group>"; };
FAA3D27A0F139CDC00B2447E /* conn-ssl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-ssl.h"; sourceTree = "<group>"; };
FAA3D27C0F139CF800B2447E /* strtok_r.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strtok_r.c; sourceTree = "<group>"; };
FAA3D27D0F139CF800B2447E /* waitpid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = waitpid.c; sourceTree = "<group>"; };
FAA3D2800F139D1500B2447E /* Services.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Services.txt; sourceTree = "<group>"; };
FAA3D2820F139D2E00B2447E /* 01ngircd-contents.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = "01ngircd-contents.xml"; sourceTree = "<group>"; };
FAA3D2830F139D2E00B2447E /* 01ngircd.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = 01ngircd.xml; sourceTree = "<group>"; };
FAA3D2840F139D2E00B2447E /* 02de-contents.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = "02de-contents.xml"; sourceTree = "<group>"; };
FAA3D2850F139D2E00B2447E /* 02de.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = 02de.xml; sourceTree = "<group>"; };
FAA3D2860F139D2E00B2447E /* index.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = index.xml; sourceTree = "<group>"; };
FAA3D2880F139D2E00B2447E /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
FAA3D28A0F139D2E00B2447E /* postinstall.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = postinstall.sh; sourceTree = "<group>"; };
FAA3D28B0F139D2E00B2447E /* preinstall.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = preinstall.sh; sourceTree = "<group>"; };
FAA97C55124A271400D5BBA9 /* sighandlers.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = sighandlers.c; sourceTree = "<group>"; };
FAA97C56124A271400D5BBA9 /* sighandlers.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = sighandlers.h; sourceTree = "<group>"; };
FAACD5F314A6099C006ED74F /* class.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = class.c; sourceTree = "<group>"; };
FAACD5F414A6099C006ED74F /* class.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = class.h; sourceTree = "<group>"; };
FAD5852F15271A7800328741 /* Capabilities.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Capabilities.txt; sourceTree = "<group>"; };
FAD5853015271AAB00328741 /* client-cap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "client-cap.c"; sourceTree = "<group>"; };
FAD5853115271AAB00328741 /* client-cap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "client-cap.h"; sourceTree = "<group>"; };
FAD5853315271AB800328741 /* irc-cap.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "irc-cap.c"; sourceTree = "<group>"; };
FAD5853415271AB800328741 /* irc-cap.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "irc-cap.h"; sourceTree = "<group>"; };
FAD5853615272C2500328741 /* login.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = login.c; sourceTree = "<group>"; };
FAD5853715272C2500328741 /* login.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = login.h; sourceTree = "<group>"; };
FAE22BD215270EA300F1A5AB /* Bopm.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Bopm.txt; sourceTree = "<group>"; };
FAE22BD415270EA300F1A5AB /* Contributing.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Contributing.txt; sourceTree = "<group>"; };
FAE22BD515270EB500F1A5AB /* HowToRelease.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = HowToRelease.txt; sourceTree = "<group>"; };
FAE22BD615270EB500F1A5AB /* Modes.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = Modes.txt; sourceTree = "<group>"; };
FAE22BD715270EB500F1A5AB /* PAM.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = PAM.txt; sourceTree = "<group>"; };
FAE22BD815270EC400F1A5AB /* README-Interix.txt */ = {isa = PBXFileReference; lastKnownFileType = text; path = "README-Interix.txt"; sourceTree = "<group>"; };
FAE5CC2C0CF2308A007D69B6 /* numeric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = numeric.h; sourceTree = "<group>"; }; FAE5CC2C0CF2308A007D69B6 /* numeric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = numeric.h; sourceTree = "<group>"; };
FAE5CC2D0CF2308A007D69B6 /* numeric.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = numeric.c; sourceTree = "<group>"; }; FAE5CC2D0CF2308A007D69B6 /* numeric.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = numeric.c; sourceTree = "<group>"; };
/* End PBXFileReference section */ /* End PBXFileReference section */
@@ -269,8 +204,6 @@
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */, FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */,
FA2D567B11EA1AB300D37A35 /* libpam.dylib in Frameworks */,
FA6BBC661605F6D60004247A /* libiconv.dylib in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -280,32 +213,26 @@
08FB7794FE84155DC02AAC07 /* ngIRCd */ = { 08FB7794FE84155DC02AAC07 /* ngIRCd */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA322D630CEF750F001761B3 /* Makefile.am */,
FA322D660CEF7523001761B3 /* contrib */,
FA322D970CEF752C001761B3 /* doc */, FA322D970CEF752C001761B3 /* doc */,
FA322D660CEF7523001761B3 /* contrib */,
FA322DAB0CEF7538001761B3 /* man */, FA322DAB0CEF7538001761B3 /* man */,
FA322CD40CEF74B0001761B3 /* src */, FA322CD40CEF74B0001761B3 /* src */,
FA322D5A0CEF750F001761B3 /* AUTHORS */, FA322D5A0CEF750F001761B3 /* AUTHORS */,
FA322D5C0CEF750F001761B3 /* ChangeLog */,
FA322D610CEF750F001761B3 /* COPYING */, FA322D610CEF750F001761B3 /* COPYING */,
FA322D620CEF750F001761B3 /* INSTALL */, FA322D620CEF750F001761B3 /* INSTALL */,
FA322D640CEF750F001761B3 /* NEWS */, FA322D640CEF750F001761B3 /* NEWS */,
FA322D650CEF750F001761B3 /* README */, FA322D650CEF750F001761B3 /* README */,
FA322D5B0CEF750F001761B3 /* autogen.sh */, FA322D5B0CEF750F001761B3 /* autogen.sh */,
FA322D5C0CEF750F001761B3 /* ChangeLog */,
FA322D5E0CEF750F001761B3 /* config.guess */, FA322D5E0CEF750F001761B3 /* config.guess */,
FA322D5F0CEF750F001761B3 /* config.sub */, FA322D5F0CEF750F001761B3 /* config.sub */,
FA18A63E16CEDDCE00132F66 /* configure.ng */, FA322D600CEF750F001761B3 /* configure.in */,
FA322D630CEF750F001761B3 /* Makefile.am */,
1AB674ADFE9D54B511CA2CBB /* Products */, 1AB674ADFE9D54B511CA2CBB /* Products */,
FA6BBC651605F6D60004247A /* libiconv.dylib */,
FA2D567A11EA1AB300D37A35 /* libpam.dylib */,
FA322DC00CEF77CB001761B3 /* libz.dylib */, FA322DC00CEF77CB001761B3 /* libz.dylib */,
); );
indentWidth = 8;
name = ngIRCd; name = ngIRCd;
sourceTree = "<group>"; sourceTree = "<group>";
tabWidth = 8;
usesTabs = 1;
wrapsLines = 0;
}; };
1AB674ADFE9D54B511CA2CBB /* Products */ = { 1AB674ADFE9D54B511CA2CBB /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
@@ -318,12 +245,12 @@
FA322CD40CEF74B0001761B3 /* src */ = { FA322CD40CEF74B0001761B3 /* src */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA322CD60CEF74B1001761B3 /* Makefile.am */,
FA407F270DB1598D00271AF1 /* ipaddr */,
FA322CD70CEF74B1001761B3 /* ngircd */, FA322CD70CEF74B1001761B3 /* ngircd */,
FA407F270DB1598D00271AF1 /* ipaddr */,
FA322D0E0CEF74B1001761B3 /* portab */, FA322D0E0CEF74B1001761B3 /* portab */,
FA322D1B0CEF74B1001761B3 /* testsuite */, FA322D1B0CEF74B1001761B3 /* testsuite */,
FA322D2E0CEF74B1001761B3 /* tool */, FA322D2E0CEF74B1001761B3 /* tool */,
FA322CD60CEF74B1001761B3 /* Makefile.am */,
); );
name = src; name = src;
path = ../../src; path = ../../src;
@@ -332,50 +259,31 @@
FA322CD70CEF74B1001761B3 /* ngircd */ = { FA322CD70CEF74B1001761B3 /* ngircd */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA18A64616CEE0DD00132F66 /* Makefile.ng */,
FA322CD90CEF74B1001761B3 /* array.c */, FA322CD90CEF74B1001761B3 /* array.c */,
FA322CDA0CEF74B1001761B3 /* array.h */, FA322CDA0CEF74B1001761B3 /* array.h */,
FA322CDB0CEF74B1001761B3 /* channel.c */, FA322CDB0CEF74B1001761B3 /* channel.c */,
FA322CDC0CEF74B1001761B3 /* channel.h */, FA322CDC0CEF74B1001761B3 /* channel.h */,
FAACD5F314A6099C006ED74F /* class.c */,
FAACD5F414A6099C006ED74F /* class.h */,
FA322CDD0CEF74B1001761B3 /* client.c */, FA322CDD0CEF74B1001761B3 /* client.c */,
FA322CDE0CEF74B1001761B3 /* client.h */, FA322CDE0CEF74B1001761B3 /* client.h */,
FAD5853015271AAB00328741 /* client-cap.c */,
FAD5853115271AAB00328741 /* client-cap.h */,
FA322CDF0CEF74B1001761B3 /* conf.c */, FA322CDF0CEF74B1001761B3 /* conf.c */,
FA322CE00CEF74B1001761B3 /* conf.h */, FA322CE00CEF74B1001761B3 /* conf.h */,
FAA3D2780F139CDC00B2447E /* conf-ssl.h */,
FA322CE50CEF74B1001761B3 /* conn.c */,
FA322CE60CEF74B1001761B3 /* conn.h */,
FA6BBC5F1605F0AB0004247A /* conn-encoding.c */,
FA6BBC601605F0AC0004247A /* conn-encoding.h */,
FA322CE10CEF74B1001761B3 /* conn-func.c */, FA322CE10CEF74B1001761B3 /* conn-func.c */,
FA322CE20CEF74B1001761B3 /* conn-func.h */, FA322CE20CEF74B1001761B3 /* conn-func.h */,
FAA3D2790F139CDC00B2447E /* conn-ssl.c */,
FAA3D27A0F139CDC00B2447E /* conn-ssl.h */,
FA322CE30CEF74B1001761B3 /* conn-zip.c */, FA322CE30CEF74B1001761B3 /* conn-zip.c */,
FA322CE40CEF74B1001761B3 /* conn-zip.h */, FA322CE40CEF74B1001761B3 /* conn-zip.h */,
FA322CE50CEF74B1001761B3 /* conn.c */,
FA322CE60CEF74B1001761B3 /* conn.h */,
FA322CE70CEF74B1001761B3 /* defines.h */, FA322CE70CEF74B1001761B3 /* defines.h */,
FA322CE80CEF74B1001761B3 /* hash.c */, FA322CE80CEF74B1001761B3 /* hash.c */,
FA322CE90CEF74B1001761B3 /* hash.h */, FA322CE90CEF74B1001761B3 /* hash.h */,
FA322CEA0CEF74B1001761B3 /* io.c */, FA322CEA0CEF74B1001761B3 /* io.c */,
FA322CEB0CEF74B1001761B3 /* io.h */, FA322CEB0CEF74B1001761B3 /* io.h */,
FA322CFC0CEF74B1001761B3 /* irc.c */,
FA322CFD0CEF74B1001761B3 /* irc.h */,
FAD5853315271AB800328741 /* irc-cap.c */,
FAD5853415271AB800328741 /* irc-cap.h */,
FA322CEC0CEF74B1001761B3 /* irc-channel.c */, FA322CEC0CEF74B1001761B3 /* irc-channel.c */,
FA322CED0CEF74B1001761B3 /* irc-channel.h */, FA322CED0CEF74B1001761B3 /* irc-channel.h */,
FA6BBC611605F0AC0004247A /* irc-encoding.c */,
FA6BBC621605F0AC0004247A /* irc-encoding.h */,
FA322CEE0CEF74B1001761B3 /* irc-info.c */, FA322CEE0CEF74B1001761B3 /* irc-info.c */,
FA322CEF0CEF74B1001761B3 /* irc-info.h */, FA322CEF0CEF74B1001761B3 /* irc-info.h */,
FA322CF00CEF74B1001761B3 /* irc-login.c */, FA322CF00CEF74B1001761B3 /* irc-login.c */,
FA322CF10CEF74B1001761B3 /* irc-login.h */, FA322CF10CEF74B1001761B3 /* irc-login.h */,
FA1DBB6716C707D200D4F838 /* irc-macros.h */,
FA4F1659164836B100DBD011 /* irc-metadata.c */,
FA4F165C164836BF00DBD011 /* irc-metadata.h */,
FA322CF20CEF74B1001761B3 /* irc-mode.c */, FA322CF20CEF74B1001761B3 /* irc-mode.c */,
FA322CF30CEF74B1001761B3 /* irc-mode.h */, FA322CF30CEF74B1001761B3 /* irc-mode.h */,
FA322CF40CEF74B1001761B3 /* irc-op.c */, FA322CF40CEF74B1001761B3 /* irc-op.c */,
@@ -386,12 +294,13 @@
FA322CF90CEF74B1001761B3 /* irc-server.h */, FA322CF90CEF74B1001761B3 /* irc-server.h */,
FA322CFA0CEF74B1001761B3 /* irc-write.c */, FA322CFA0CEF74B1001761B3 /* irc-write.c */,
FA322CFB0CEF74B1001761B3 /* irc-write.h */, FA322CFB0CEF74B1001761B3 /* irc-write.h */,
FA322CFC0CEF74B1001761B3 /* irc.c */,
FA322CFD0CEF74B1001761B3 /* irc.h */,
FA322CFE0CEF74B1001761B3 /* lists.c */, FA322CFE0CEF74B1001761B3 /* lists.c */,
FA322CFF0CEF74B1001761B3 /* lists.h */, FA322CFF0CEF74B1001761B3 /* lists.h */,
FA322D000CEF74B1001761B3 /* log.c */, FA322D000CEF74B1001761B3 /* log.c */,
FA322D010CEF74B1001761B3 /* log.h */, FA322D010CEF74B1001761B3 /* log.h */,
FAD5853615272C2500328741 /* login.c */, FA322D020CEF74B1001761B3 /* Makefile.am */,
FAD5853715272C2500328741 /* login.h */,
FA322D030CEF74B1001761B3 /* match.c */, FA322D030CEF74B1001761B3 /* match.c */,
FA322D040CEF74B1001761B3 /* match.h */, FA322D040CEF74B1001761B3 /* match.h */,
FA322D050CEF74B1001761B3 /* messages.h */, FA322D050CEF74B1001761B3 /* messages.h */,
@@ -399,18 +308,12 @@
FA322D070CEF74B1001761B3 /* ngircd.h */, FA322D070CEF74B1001761B3 /* ngircd.h */,
FAE5CC2D0CF2308A007D69B6 /* numeric.c */, FAE5CC2D0CF2308A007D69B6 /* numeric.c */,
FAE5CC2C0CF2308A007D69B6 /* numeric.h */, FAE5CC2C0CF2308A007D69B6 /* numeric.h */,
FA85178B0FA061EC006A1F5A /* op.c */,
FA85178A0FA061EC006A1F5A /* op.h */,
FA2D564911EA158B00D37A35 /* pam.c */,
FA2D564811EA158B00D37A35 /* pam.h */,
FA322D080CEF74B1001761B3 /* parse.c */, FA322D080CEF74B1001761B3 /* parse.c */,
FA322D090CEF74B1001761B3 /* parse.h */, FA322D090CEF74B1001761B3 /* parse.h */,
FA99428B10E82A27007F27ED /* proc.c */, FA322D0A0CEF74B1001761B3 /* rendezvous.c */,
FA99428A10E82A27007F27ED /* proc.h */, FA322D0B0CEF74B1001761B3 /* rendezvous.h */,
FA322D0C0CEF74B1001761B3 /* resolve.c */, FA322D0C0CEF74B1001761B3 /* resolve.c */,
FA322D0D0CEF74B1001761B3 /* resolve.h */, FA322D0D0CEF74B1001761B3 /* resolve.h */,
FAA97C55124A271400D5BBA9 /* sighandlers.c */,
FAA97C56124A271400D5BBA9 /* sighandlers.h */,
); );
path = ngircd; path = ngircd;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -418,17 +321,17 @@
FA322D0E0CEF74B1001761B3 /* portab */ = { FA322D0E0CEF74B1001761B3 /* portab */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA18A64716CEE14900132F66 /* Makefile.ng */,
FA322D100CEF74B1001761B3 /* ansi2knr.1 */, FA322D100CEF74B1001761B3 /* ansi2knr.1 */,
FA322D110CEF74B1001761B3 /* ansi2knr.c */, FA322D110CEF74B1001761B3 /* ansi2knr.c */,
FA322D120CEF74B1001761B3 /* exp.h */,
FA322D130CEF74B1001761B3 /* imp.h */,
FA322D140CEF74B1001761B3 /* Makefile.am */,
FA322D150CEF74B1001761B3 /* portab.h */, FA322D150CEF74B1001761B3 /* portab.h */,
FA322D160CEF74B1001761B3 /* portabtest.c */, FA322D160CEF74B1001761B3 /* portabtest.c */,
FA322D170CEF74B1001761B3 /* splint.h */, FA322D170CEF74B1001761B3 /* splint.h */,
FA322D180CEF74B1001761B3 /* strdup.c */, FA322D180CEF74B1001761B3 /* strdup.c */,
FA322D190CEF74B1001761B3 /* strlcpy.c */, FA322D190CEF74B1001761B3 /* strlcpy.c */,
FAA3D27C0F139CF800B2447E /* strtok_r.c */,
FA322D1A0CEF74B1001761B3 /* vsnprintf.c */, FA322D1A0CEF74B1001761B3 /* vsnprintf.c */,
FAA3D27D0F139CF800B2447E /* waitpid.c */,
); );
path = portab; path = portab;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -436,33 +339,25 @@
FA322D1B0CEF74B1001761B3 /* testsuite */ = { FA322D1B0CEF74B1001761B3 /* testsuite */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA18A64A16CEE18100132F66 /* Makefile.ng */,
FA322D250CEF74B1001761B3 /* README */,
FA322D1D0CEF74B1001761B3 /* channel-test.e */, FA322D1D0CEF74B1001761B3 /* channel-test.e */,
FA322D1E0CEF74B1001761B3 /* check-idle.e */, FA322D1E0CEF74B1001761B3 /* check-idle.e */,
FA322D1F0CEF74B1001761B3 /* connect-test.e */, FA322D1F0CEF74B1001761B3 /* connect-test.e */,
FAA3D2700F139CB300B2447E /* invite-test.e */,
FAA3D2710F139CB300B2447E /* join-test.e */,
FAA3D2720F139CB300B2447E /* kick-test.e */,
FAA3D2730F139CB300B2447E /* message-test.e */,
FA18A64E16CEE24B00132F66 /* misc-test.e */,
FA18A64C16CEE1AC00132F66 /* mode-test.e */,
FAA3D2760F139CB300B2447E /* opless-channel-test.e */,
FAA3D2770F139CB300B2447E /* server-link-test.e */,
FA322D280CEF74B1001761B3 /* stress-A.e */,
FA322D290CEF74B1001761B3 /* stress-B.e */,
FA1A6BBD0D6857D900AA8F71 /* who-test.e */,
FA18A64D16CEE1D900132F66 /* whois-test.e */,
FA322D200CEF74B1001761B3 /* functions.inc */, FA322D200CEF74B1001761B3 /* functions.inc */,
FAA3D2740F139CB300B2447E /* ngircd-test1.conf */,
FAA3D2750F139CB300B2447E /* ngircd-test2.conf */,
FA322D210CEF74B1001761B3 /* getpid.sh */, FA322D210CEF74B1001761B3 /* getpid.sh */,
FA322D220CEF74B1001761B3 /* Makefile.am */,
FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */,
FA322D230CEF74B1001761B3 /* mode-test.e */,
FA322D240CEF74B1001761B3 /* ngircd-test.conf */,
FA322D250CEF74B1001761B3 /* README */,
FA322D260CEF74B1001761B3 /* start-server.sh */, FA322D260CEF74B1001761B3 /* start-server.sh */,
FA322D270CEF74B1001761B3 /* stop-server.sh */, FA322D270CEF74B1001761B3 /* stop-server.sh */,
FA322D280CEF74B1001761B3 /* stress-A.e */,
FA322D290CEF74B1001761B3 /* stress-B.e */,
FA322D2A0CEF74B1001761B3 /* stress-server.sh */, FA322D2A0CEF74B1001761B3 /* stress-server.sh */,
FA322D2B0CEF74B1001761B3 /* test-loop.sh */, FA322D2B0CEF74B1001761B3 /* test-loop.sh */,
FA322D2C0CEF74B1001761B3 /* tests.sh */, FA322D2C0CEF74B1001761B3 /* tests.sh */,
FA322D2D0CEF74B1001761B3 /* wait-tests.sh */, FA322D2D0CEF74B1001761B3 /* wait-tests.sh */,
FA1A6BBD0D6857D900AA8F71 /* who-test.e */,
); );
path = testsuite; path = testsuite;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -470,7 +365,9 @@
FA322D2E0CEF74B1001761B3 /* tool */ = { FA322D2E0CEF74B1001761B3 /* tool */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA18A64F16CEE27700132F66 /* Makefile.ng */, FA322D300CEF74B1001761B3 /* ansi2knr.1 */,
FA322D310CEF74B1001761B3 /* ansi2knr.c */,
FA322D320CEF74B1001761B3 /* Makefile.am */,
FA322D330CEF74B1001761B3 /* tool.c */, FA322D330CEF74B1001761B3 /* tool.c */,
FA322D340CEF74B1001761B3 /* tool.h */, FA322D340CEF74B1001761B3 /* tool.h */,
); );
@@ -480,18 +377,13 @@
FA322D660CEF7523001761B3 /* contrib */ = { FA322D660CEF7523001761B3 /* contrib */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA322D8D0CEF7523001761B3 /* Makefile.am */,
FA322D680CEF7523001761B3 /* Debian */, FA322D680CEF7523001761B3 /* Debian */,
FA322D730CEF7523001761B3 /* MacOSX */, FA322D730CEF7523001761B3 /* MacOSX */,
FA322D950CEF7523001761B3 /* README */, FA322D910CEF7523001761B3 /* Makefile.am */,
FA322D920CEF7523001761B3 /* ngindent */, FA322D920CEF7523001761B3 /* ngindent */,
FA4B08E513E7F8FB00765BA3 /* ngircd-bsd.sh */, FA322D930CEF7523001761B3 /* ngircd.sh */,
FA4B08E613E7F91700765BA3 /* ngIRCd-Logo.gif */,
FA4B08E713E7F91700765BA3 /* ngircd-redhat.init */,
FA18A63F16CEDE2300132F66 /* ngircd.service */,
FA18A64016CEDE2300132F66 /* ngircd.socket */,
FA322D940CEF7523001761B3 /* ngircd.spec */, FA322D940CEF7523001761B3 /* ngircd.spec */,
FA4B08E813E7F91C00765BA3 /* platformtest.sh */, FA322D950CEF7523001761B3 /* README */,
FA322D960CEF7523001761B3 /* systrace.policy */, FA322D960CEF7523001761B3 /* systrace.policy */,
); );
name = contrib; name = contrib;
@@ -501,14 +393,13 @@
FA322D680CEF7523001761B3 /* Debian */ = { FA322D680CEF7523001761B3 /* Debian */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA322D6E0CEF7523001761B3 /* Makefile.am */,
FA322D6A0CEF7523001761B3 /* changelog */, FA322D6A0CEF7523001761B3 /* changelog */,
FA322D6B0CEF7523001761B3 /* compat */, FA322D6B0CEF7523001761B3 /* compat */,
FA322D6C0CEF7523001761B3 /* control */, FA322D6C0CEF7523001761B3 /* control */,
FA322D6D0CEF7523001761B3 /* copyright */, FA322D6D0CEF7523001761B3 /* copyright */,
FA322D6E0CEF7523001761B3 /* Makefile.am */,
FA322D6F0CEF7523001761B3 /* ngircd.default */, FA322D6F0CEF7523001761B3 /* ngircd.default */,
FA322D700CEF7523001761B3 /* ngircd.init */, FA322D700CEF7523001761B3 /* ngircd.init */,
FA18A64116CEDE3500132F66 /* ngircd.pam */,
FA322D710CEF7523001761B3 /* ngircd.postinst */, FA322D710CEF7523001761B3 /* ngircd.postinst */,
FA322D720CEF7523001761B3 /* rules */, FA322D720CEF7523001761B3 /* rules */,
); );
@@ -518,17 +409,86 @@
FA322D730CEF7523001761B3 /* MacOSX */ = { FA322D730CEF7523001761B3 /* MacOSX */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA18A64316CEDE8100132F66 /* Makefile.am */, FA322D750CEF7523001761B3 /* build */,
FAA3D2810F139D2E00B2447E /* ngIRCd.pmdoc */, FA322D8D0CEF7523001761B3 /* Makefile.am */,
FA322DB10CEF7565001761B3 /* config.h */,
FA18A64216CEDE5700132F66 /* de.barton.ngircd.plist.tmpl */,
FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */, FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */,
FAA3D28A0F139D2E00B2447E /* postinstall.sh */, FA322DB10CEF7565001761B3 /* config.h */,
FAA3D28B0F139D2E00B2447E /* preinstall.sh */, FA322DBB0CEF773C001761B3 /* cvs-version.h */,
); );
path = MacOSX; path = MacOSX;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
FA322D750CEF7523001761B3 /* build */ = {
isa = PBXGroup;
children = (
FA322D760CEF7523001761B3 /* ngIRCd.build */,
);
path = build;
sourceTree = "<group>";
};
FA322D760CEF7523001761B3 /* ngIRCd.build */ = {
isa = PBXGroup;
children = (
FA322D770CEF7523001761B3 /* Default */,
FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */,
);
path = ngIRCd.build;
sourceTree = "<group>";
};
FA322D770CEF7523001761B3 /* Default */ = {
isa = PBXGroup;
children = (
FA322D780CEF7523001761B3 /* ngIRCd.build */,
);
path = Default;
sourceTree = "<group>";
};
FA322D780CEF7523001761B3 /* ngIRCd.build */ = {
isa = PBXGroup;
children = (
FA322D7A0CEF7523001761B3 /* Objects-normal */,
);
path = ngIRCd.build;
sourceTree = "<group>";
};
FA322D7A0CEF7523001761B3 /* Objects-normal */ = {
isa = PBXGroup;
children = (
FA322D7B0CEF7523001761B3 /* i386 */,
FA322D7D0CEF7523001761B3 /* ppc */,
);
path = "Objects-normal";
sourceTree = "<group>";
};
FA322D7B0CEF7523001761B3 /* i386 */ = {
isa = PBXGroup;
children = (
);
path = i386;
sourceTree = "<group>";
};
FA322D7D0CEF7523001761B3 /* ppc */ = {
isa = PBXGroup;
children = (
);
path = ppc;
sourceTree = "<group>";
};
FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */ = {
isa = PBXGroup;
children = (
FA322D880CEF7523001761B3 /* strings.pbxstrings */,
);
path = ngIRCd.pbxindex;
sourceTree = "<group>";
};
FA322D880CEF7523001761B3 /* strings.pbxstrings */ = {
isa = PBXGroup;
children = (
);
path = strings.pbxstrings;
sourceTree = "<group>";
};
FA322D8F0CEF7523001761B3 /* Products */ = { FA322D8F0CEF7523001761B3 /* Products */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
@@ -539,26 +499,18 @@
FA322D970CEF752C001761B3 /* doc */ = { FA322D970CEF752C001761B3 /* doc */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA322D9B0CEF752C001761B3 /* Makefile.am */,
FA322DA20CEF752C001761B3 /* src */,
FAE22BD215270EA300F1A5AB /* Bopm.txt */,
FAD5852F15271A7800328741 /* Capabilities.txt */,
FA18A64416CEDFCE00132F66 /* Commands.txt */,
FAE22BD415270EA300F1A5AB /* Contributing.txt */,
FA322D9A0CEF752C001761B3 /* FAQ.txt */,
FA407F380DB15AC700271AF1 /* GIT.txt */, FA407F380DB15AC700271AF1 /* GIT.txt */,
FAE22BD515270EB500F1A5AB /* HowToRelease.txt */, FA322D9A0CEF752C001761B3 /* FAQ.txt */,
FAE22BD615270EB500F1A5AB /* Modes.txt */, FA322D9B0CEF752C001761B3 /* Makefile.am */,
FAE22BD715270EB500F1A5AB /* PAM.txt */,
FA322D9C0CEF752C001761B3 /* Platforms.txt */, FA322D9C0CEF752C001761B3 /* Platforms.txt */,
FA322D9D0CEF752C001761B3 /* Protocol.txt */, FA322D9D0CEF752C001761B3 /* Protocol.txt */,
FA322D9E0CEF752C001761B3 /* README-AUX.txt */, FA322D9E0CEF752C001761B3 /* README-AUX.txt */,
FA322D9F0CEF752C001761B3 /* README-BeOS.txt */, FA322D9F0CEF752C001761B3 /* README-BeOS.txt */,
FAE22BD815270EC400F1A5AB /* README-Interix.txt */,
FA322DA00CEF752C001761B3 /* RFC.txt */, FA322DA00CEF752C001761B3 /* RFC.txt */,
FAA3D2800F139D1500B2447E /* Services.txt */, FA322DA10CEF752C001761B3 /* sample-ngircd.conf */,
FA322DA20CEF752C001761B3 /* src */,
FA322DA90CEF752C001761B3 /* SSL.txt */, FA322DA90CEF752C001761B3 /* SSL.txt */,
FA77849A133FB9FF00740057 /* sample-ngircd.conf.tmpl */, FA322DAA0CEF752C001761B3 /* Zeroconf.txt */,
); );
name = doc; name = doc;
path = ../../doc; path = ../../doc;
@@ -567,9 +519,11 @@
FA322DA20CEF752C001761B3 /* src */ = { FA322DA20CEF752C001761B3 /* src */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA322DA70CEF752C001761B3 /* Makefile.am */,
FA322DA40CEF752C001761B3 /* Doxyfile */, FA322DA40CEF752C001761B3 /* Doxyfile */,
FA322DA50CEF752C001761B3 /* footer.inc.html */, FA322DA50CEF752C001761B3 /* footer.inc.html */,
FA322DA60CEF752C001761B3 /* header.inc.html */,
FA322DA70CEF752C001761B3 /* Makefile.am */,
FA322DA80CEF752C001761B3 /* ngircd-doc.css */,
); );
path = src; path = src;
sourceTree = "<group>"; sourceTree = "<group>";
@@ -588,26 +542,13 @@
FA407F270DB1598D00271AF1 /* ipaddr */ = { FA407F270DB1598D00271AF1 /* ipaddr */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
FA18A64516CEE0C700132F66 /* Makefile.ng */, FA407F2B0DB159F400271AF1 /* Makefile.am */,
FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */, FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */,
FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */, FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */,
); );
name = ipaddr; name = ipaddr;
sourceTree = "<group>"; sourceTree = "<group>";
}; };
FAA3D2810F139D2E00B2447E /* ngIRCd.pmdoc */ = {
isa = PBXGroup;
children = (
FAA3D2880F139D2E00B2447E /* Makefile.am */,
FAA3D2860F139D2E00B2447E /* index.xml */,
FAA3D2830F139D2E00B2447E /* 01ngircd.xml */,
FAA3D2820F139D2E00B2447E /* 01ngircd-contents.xml */,
FAA3D2850F139D2E00B2447E /* 02de.xml */,
FAA3D2840F139D2E00B2447E /* 02de-contents.xml */,
);
path = ngIRCd.pmdoc;
sourceTree = "<group>";
};
/* End PBXGroup section */ /* End PBXGroup section */
/* Begin PBXNativeTarget section */ /* Begin PBXNativeTarget section */
@@ -634,19 +575,9 @@
/* Begin PBXProject section */ /* Begin PBXProject section */
08FB7793FE84155DC02AAC07 /* Project object */ = { 08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = {
LastUpgradeCheck = 0430;
};
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */; buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */;
compatibilityVersion = "Xcode 3.2"; compatibilityVersion = "Xcode 3.0";
developmentRegion = English;
hasScannedForEncodings = 1; hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 08FB7794FE84155DC02AAC07 /* ngIRCd */; mainGroup = 08FB7794FE84155DC02AAC07 /* ngIRCd */;
projectDirPath = ""; projectDirPath = "";
projectReferences = ( projectReferences = (
@@ -690,22 +621,11 @@
FA322D490CEF74B1001761B3 /* match.c in Sources */, FA322D490CEF74B1001761B3 /* match.c in Sources */,
FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */, FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */,
FA322D4B0CEF74B1001761B3 /* parse.c in Sources */, FA322D4B0CEF74B1001761B3 /* parse.c in Sources */,
FA322D4C0CEF74B1001761B3 /* rendezvous.c in Sources */,
FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */, FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */,
FA322DBE0CEF7766001761B3 /* tool.c in Sources */, FA322DBE0CEF7766001761B3 /* tool.c in Sources */,
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */, FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */,
FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */, FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */,
FAA3D27B0F139CDC00B2447E /* conn-ssl.c in Sources */,
FA85178C0FA061EC006A1F5A /* op.c in Sources */,
FA99428C10E82A27007F27ED /* proc.c in Sources */,
FA2D564A11EA158B00D37A35 /* pam.c in Sources */,
FAA97C57124A271400D5BBA9 /* sighandlers.c in Sources */,
FAACD5F514A6099C006ED74F /* class.c in Sources */,
FAD5853215271AAB00328741 /* client-cap.c in Sources */,
FAD5853515271AB800328741 /* irc-cap.c in Sources */,
FAD5853815272C2600328741 /* login.c in Sources */,
FA6BBC631605F0AC0004247A /* conn-encoding.c in Sources */,
FA6BBC641605F0AC0004247A /* irc-encoding.c in Sources */,
FA4F165A164836B100DBD011 /* irc-metadata.c in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };
@@ -716,7 +636,6 @@
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES; GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES; GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
@@ -735,65 +654,24 @@
GCC_WARN_UNUSED_PARAMETER = YES; GCC_WARN_UNUSED_PARAMETER = YES;
GCC_WARN_UNUSED_VALUE = YES; GCC_WARN_UNUSED_VALUE = YES;
INSTALL_PATH = /usr/local/bin; INSTALL_PATH = /usr/local/bin;
PRODUCT_NAME = ngircd; PRODUCT_NAME = ngIRCd;
}; };
name = Default; name = Default;
}; };
1DEB928B08733DD80010E9CD /* Default */ = { 1DEB928B08733DD80010E9CD /* Default */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; ARCHS = (
CODE_SIGN_IDENTITY = ""; ppc,
GCC_VERSION = ""; i386,
);
GCC_WARN_ABOUT_RETURN_TYPE = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6; PREBINDING = NO;
SDKROOT = ""; SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.5.sdk";
}; };
name = Default; name = Default;
}; };
FAB0570C105D917F006AF9E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
GCC_DEBUGGING_SYMBOLS = full;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_VERSION = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MACOSX_DEPLOYMENT_TARGET = 10.6;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = "";
};
name = Debug;
};
FAB0570D105D917F006AF9E2 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
GCC_WARN_MISSING_PARENTHESES = YES;
GCC_WARN_PEDANTIC = YES;
GCC_WARN_SHADOW = YES;
GCC_WARN_SIGN_COMPARE = YES;
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
GCC_WARN_UNINITIALIZED_AUTOS = NO;
GCC_WARN_UNKNOWN_PRAGMAS = YES;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_LABEL = YES;
GCC_WARN_UNUSED_PARAMETER = YES;
GCC_WARN_UNUSED_VALUE = YES;
INSTALL_PATH = /usr/local/bin;
PRODUCT_NAME = ngircd;
};
name = Debug;
};
/* End XCBuildConfiguration section */ /* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */ /* Begin XCConfigurationList section */
@@ -801,7 +679,6 @@
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1DEB928708733DD80010E9CD /* Default */, 1DEB928708733DD80010E9CD /* Default */,
FAB0570D105D917F006AF9E2 /* Debug */,
); );
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default; defaultConfigurationName = Default;
@@ -810,7 +687,6 @@
isa = XCConfigurationList; isa = XCConfigurationList;
buildConfigurations = ( buildConfigurations = (
1DEB928B08733DD80010E9CD /* Default */, 1DEB928B08733DD80010E9CD /* Default */,
FAB0570C105D917F006AF9E2 /* Debug */,
); );
defaultConfigurationIsVisible = 0; defaultConfigurationIsVisible = 0;
defaultConfigurationName = Default; defaultConfigurationName = Default;

View File

@@ -1,56 +0,0 @@
#!/bin/sh
# ngIRCd Mac OS X postinstall/postupgrade script
LDPLIST="/Library/LaunchDaemons/de.barton.ngircd.plist"
if [ ! -e /etc/ngircd ]; then
echo "Creating symlink: /opt/ngircd/etc -> /etc/ngircd"
ln -s /opt/ngircd/etc /etc/ngircd || exit 1
else
echo "/etc/ngircd already exists. Don't create symlink."
fi
if [ ! -e /opt/ngircd/etc/ngircd.conf ]; then
echo "Creating default configuration: /opt/ngircd/etc/ngircd.conf"
cp /opt/ngircd/share/doc/ngircd/sample-ngircd.conf \
/opt/ngircd/etc/ngircd.conf || exit 1
else
echo "/opt/ngircd/etc/ngircd.conf exists. Don't copy sample file."
fi
chmod o-rwx /opt/ngircd/etc/ngircd.conf
if [ ! -e /opt/ngircd/etc/ngircd.pam ]; then
echo "Creating default PAM configuration: /opt/ngircd/etc/ngircd.pam"
echo "# PAM configuration for ngIRCd" >/opt/ngircd/etc/ngircd.pam
echo "" >>/opt/ngircd/etc/ngircd.pam
echo "auth required pam_permit.so" >>/opt/ngircd/etc/ngircd.pam
echo "#auth required pam_opendirectory.so" >>/opt/ngircd/etc/ngircd.pam
fi
chmod 644 /opt/ngircd/etc/ngircd.pam
if [ ! -e /etc/pam.d/ngircd ]; then
echo "Linkint /opt/ngircd/etc/ngircd.pam to /etc/pam.d/ngircd"
ln -s /opt/ngircd/etc/ngircd.pam /etc/pam.d/ngircd || exit 1
fi
if [ -f "$LDPLIST" ]; then
echo "Fixing ownership and permissions of LaunchDaemon script ..."
chown root:wheel "$LDPLIST" || exit 1
chmod 644 "$LDPLIST" || exit 1
fi
if [ -f /tmp/ngircd_needs_restart ]; then
echo "ngIRCd should be (re-)started ..."
if [ -r "$LDPLIST" ]; then
echo "LaunchDaemon script found, starting daemon ..."
launchctl load -w "$LDPLIST" || exit 1
echo "OK, LaunchDaemon script loaded successfully."
else
echo "LaunchDaemon script not installed. Can't start daemon."
fi
else
echo "Not loading LaunchDaemon script."
fi
rm -f /tmp/ngircd_needs_restart
# -eof-

View File

@@ -1,25 +0,0 @@
#!/bin/sh
# ngIRCd Mac OS X preinstall/preupgrade script
LDPLIST="/Library/LaunchDaemons/de.barton.ngircd.plist"
rm -f /tmp/ngircd_needs_restart || exit 1
if [ -r "$LDPLIST" ]; then
echo "LaunchDaemon script found, checking status ..."
launchctl list | fgrep "de.barton.ngIRCd" >/dev/null 2>&1
if [ $? -eq 0 ]; then
# ngIRCd is already running; stop it and touch a
# "stamp file" so that we know that we have to
# restart it after installation/upgrade.
echo "ngIRCd is already running; stop it ..."
launchctl unload "$LDPLIST" || exit 1
echo "Daemon has been stopped."
touch /tmp/ngircd_needs_restart || exit 1
else
echo "ngIRCd is not running."
fi
else
echo "LaunchDaemon script not found."
fi
# -eof-

View File

@@ -1,26 +1,20 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors # Copyright (c)2001-2004 Alexander Barton <alex@barton.de>
# #
# This program is free software; you can redistribute it and/or modify # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# it under the terms of the GNU General Public License as published by # der GNU General Public License (GPL), wie von der Free Software Foundation
# the Free Software Foundation; either version 2 of the License, or # herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# (at your option) any later version. # der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Please read the file COPYING, README and AUTHORS for more information. # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.4 2004/04/28 12:18:02 alex Exp $
# #
SUBDIRS = Debian MacOSX SUBDIRS = Debian MacOSX
EXTRA_DIST = README \ EXTRA_DIST = README ngircd.spec systrace.policy
ngindent \
ngircd-bsd.sh \
ngIRCd-Logo.gif \
ngircd-redhat.init \
ngircd.service \
ngircd.socket \
ngircd.spec \
platformtest.sh \
systrace.policy
maintainer-clean-local: maintainer-clean-local:
rm -f Makefile Makefile.in rm -f Makefile Makefile.in

View File

@@ -1,8 +1,9 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2013 Alexander Barton and Contributors. (c)2001-2005 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
@@ -11,33 +12,22 @@
Debian/ Debian/
- Various files for building Debian GNU/Linux packages (".deb's"). - Various files for building Debian GNU/Linux packages (".deb's").
- ngircd.init; ngircd.default: init script for Debian-based systems.
- ngircd.pam: example PAM configuraton.
MacOSX/ MacOSX/
- Project files for XCode, the "project builder" of Apple Mac OS X. - Project files for XCode, the "project builder" of Apple Mac OS X.
- de.barton.ngircd.plist[.tmpl]: launchd(8) property list.
ngindent ngindent
- Script to indent the code of ngIRCd in the "standard way". - Script to indent the code of ngIRCd in the "standard way".
ngircd-bsd.sh ngircd.sh
- Start script for FreeBSD. - Start script for FreeBSD.
ngircd-redhat.init
- Start/stop script for RedHat-based distributions (like CentOS).
ngircd.service
- systemd(8) service unit configuration file.
ngircd.socket
- systemd(8) socket unit configuration file for "socket activation".
ngircd.spec ngircd.spec
- RPM "spec" file. - RPM "spec" file.
platformtest.sh
- Build ngIRCd and output a "result line" suitable for doc/Platforms.txt.
systrace.policy systrace.policy
- Systrace policy file for OpenBSD (and probably NetBSD). - Systrace policy file for OpenBSD (and probably NetBSD).
--
$Id: README,v 1.3 2006/07/23 11:34:32 alex Exp $

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -4,7 +4,6 @@ INDENTARGS="-kr -i8 -ts8 -l80 -c3 -cd41 -ss -ncs -psl"
# check if indent(1) is available # check if indent(1) is available
type indent >/dev/null 2>&1 && INDENT="indent" type indent >/dev/null 2>&1 && INDENT="indent"
type gindent >/dev/null 2>&1 && INDENT="gindent"
type gnuindent >/dev/null 2>&1 && INDENT="gnuindent" type gnuindent >/dev/null 2>&1 && INDENT="gnuindent"
if [ -z "$INDENT" ]; then if [ -z "$INDENT" ]; then

View File

@@ -1,119 +0,0 @@
#!/bin/sh
#
# ngIRCd start and stop script for RedHat based distributions.
# Written by Naoya Nakazawa <naoya.n@gmail.com> for CentOS 5.2, 2009.
#
# chkconfig: 2345 01
# description: ngIRCd is an Open Source server for \
# the Internet Relay Chat (IRC), which \
# is developed and published under \
# the terms of the GNU General Public
# Licence (URL: http://www.gnu.org/licenses/gpl.html). \
# ngIRCd means "next generation IRC daemon", \
# it's written from scratch and not deduced from the \
# "grandfather of IRC daemons", the daemon of the IRCNet.
#
# processname: /usr/sbin/ngircd
# config: /etc/ngircd
# pidfile: /var/run/ngircd.pid
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/ngircd
NAME=ngIRCd
BASENAME=ngircd
CONF=/etc/$BASENAME.conf
DESC="IRC daemon"
PARAMS="-f $CONF"
# Source function library.
. /etc/init.d/functions
# Get config.
test -f /etc/sysconfig/network && . /etc/sysconfig/network
test -f /etc/sysconfig/makuosan && . /etc/sysconfig/makuosan
# Check that networking is up.
[ "${NETWORKING}" = "yes" ] || exit 0
[ -x $DAEMON ] || exit 1
[ -f $CONF ] || exit 2
RETVAL=0
start(){
echo -n $"Starting $NAME: "
daemon $DAEMON $PARAMS
RETVAL=$?
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$BASENAME
echo
return $RETVAL
}
stop(){
echo -n $"Stopping $NAME: "
killproc $DAEMON
RETVAL=$?
if [ $RETVAL -eq 0 ] ; then
rm -f /var/lock/subsys/$BASENAME
fi
echo
return $RETVAL
}
reload(){
echo -n $"Reloading configuration: "
killproc $DAEMON -HUP
RETVAL=$?
echo
return $RETVAL
}
restart(){
stop
start
}
condrestart(){
[ -e /var/lock/subsys/$BASENAME ] && restart
return 0
}
check_config(){
$DAEMON $PARAMS --configtest >/dev/null 2>&1
[ $? -eq 0 ] && return 0
echo -n $"Configuration of $NAME is not valid, won't (re)start!"
echo -n $"Run \"$DAEMON --configtest\" and fix it up ..."
exit 6
}
# See how we were called.
case "$1" in
start)
check_config
start
;;
stop)
stop
;;
status)
status $NAME
;;
restart)
restart
;;
reload)
reload
;;
condrestart)
condrestart
;;
test)
check_config
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|test}"
RETVAL=1
esac
exit $RETVAL

View File

@@ -1,11 +0,0 @@
[Unit]
Description=Next Generation IRC Daemon
After=network.target
[Service]
Type=forking
ExecStart=/usr/sbin/ngircd
ExecReload=/bin/kill -HUP $MAINPID
[Install]
WantedBy=multi-user.target

View File

@@ -1,11 +0,0 @@
[Unit]
Description=Next Generation IRC Daemon (Socket)
[Socket]
BindIPv6Only=ipv6-only
ListenStream=0.0.0.0:6667
#ListenStream=[::]:6667
IPTOS=low-delay
[Install]
WantedBy=sockets.target

View File

@@ -1,5 +1,5 @@
%define name ngircd %define name ngircd
%define version 22~rc1 %define version 0.12.0
%define release 1 %define release 1
%define prefix %{_prefix} %define prefix %{_prefix}
@@ -7,36 +7,32 @@ Summary: A lightweight daemon for the Internet Relay Chat (IRC)
Name: %{name} Name: %{name}
Version: %{version} Version: %{version}
Release: %{release} Release: %{release}
License: GPLv2+ Copyright: GPL
Group: System Environment/Daemons Group: Networking/Daemons
URL: http://ngircd.barton.de/ URL: http://arthur.ath.cx/~alex/ngircd/
Source: %{name}-%{version}.tar.gz Source: %{name}-%{version}.tar.gz
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) Packager: Sean Reifschneider <jafo-rpms@tummy.com>
BuildRequires: zlib-devel, openssl-devel BuildRoot: /var/tmp/%{name}-root
%description %description
This package provides ngIRCd, a portable and lightweight Internet Relay ngIRCd is a free open source daemon for the Internet Relay Chat (IRC),
Chat server for small or private networks, developed under the GNU developed under the GNU General Public License (GPL). It's written from
General Public License (GPL). It is simple to configure, can cope with scratch and is not based upon the original IRCd like many others.
dynamic IP addresses, and supports IPv6 as well as SSL. It is written
from scratch and not based on the original IRCd.
Advantages: Advantages:
- well arranged (lean) configuration file - no problems with servers using changing/non-static IP addresses.
- simple to build/install, configure and maintain - small and lean configuration file.
- supports IPv6 and SSL - free, modern and open source C code.
- no problems with servers that have dynamic IP addresses - still under active development.
- freely available, modern, portable and tidy C-source
- ngIRCd is being actively developed since 11 years. ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
mixed networks.
%prep %prep
%setup -q %setup
%build %build
%configure \ %configure
--with-zlib \ make
--with-openssl
make %{?_smp_mflags}
%install %install
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT" [ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
@@ -46,7 +42,6 @@ make %{?_smp_mflags}
( cd usr/sbin; mv *-ngircd ngircd ) ( cd usr/sbin; mv *-ngircd ngircd )
( cd usr/share/man/man5; mv *-ngircd.conf.5 ngircd.conf.5 ) ( cd usr/share/man/man5; mv *-ngircd.conf.5 ngircd.conf.5 )
( cd usr/share/man/man8; mv *-ngircd.8 ngircd.8 ) ( cd usr/share/man/man8; mv *-ngircd.8 ngircd.8 )
rm -fr usr/share/doc/ngircd
) )
%clean %clean
@@ -54,8 +49,7 @@ make %{?_smp_mflags}
%files %files
%defattr(755,root,root) %defattr(755,root,root)
%doc AUTHORS COPYING ChangeLog INSTALL NEWS README doc/* %doc AUTHORS COPYING ChangeLog INSTALL NEWS README
%config(noreplace) /etc %config(noreplace) /etc
%{_prefix}/sbin %{_prefix}/sbin
%{_mandir}/man5/ngircd.conf* %{_prefix}/share/man/
%{_mandir}/man8/ngircd.8*

View File

@@ -1,211 +0,0 @@
#!/bin/sh
#
# ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors
#
# 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.
#
# This script analyzes the build process of ngIRCd and generates output
# suitable for inclusion in doc/Platforms.txt -- please send reports
# to the ngIRCd mailing list: <ngircd-ml@ngircd.barton.de>.
NAME=`basename "$0"`
VERBOSE=
CLEAN=1
PLATFORM=
COMPILER="unknown"
VERSION="unknown"
DATE=`date "+%y-%m-%d"`
COMMENT=
R_CONFIGURE=
R_MAKE=
R_CHECK=
R_CHECK_Y="?"
R_RUN=
SRC_D=`dirname "$0"`
MY_D="$PWD"
[ -n "$MAKE" ] || MAKE="make"
export MAKE CC
while [ $# -gt 0 ]; do
case "$1" in
"-v")
VERBOSE=1
;;
"-x")
CLEAN=
;;
*)
echo "Usage: $NAME [-v] [-x]"
echo
echo " -v Verbose output"
echo " -x Don't regenerate build system, even when possible"
echo
exit 2
esac
shift
done
echo "$NAME: Checking ngIRCd base source directory ..."
grep "ngIRCd" "$SRC_D/ChangeLog" >/dev/null 2>&1
if [ $? -ne 0 ]; then
grep "ngIRCd" "$SRC_D/../ChangeLog" >/dev/null 2>&1
if [ $? -ne 0 ]; then
echo "$NAME: ngIRCd base source directory not found!?"
exit 1
fi
SRC_D="$SRC_D/.."
fi
echo "$NAME: - source directory: $SRC_D"
echo "$NAME: - working directory: $MY_D"
echo "$NAME: Checking for GIT tree ..."
if [ -d "$SRC_D/.git" ]; then
echo "$NAME: Checking for \"git\" command ..."
git version >/dev/null 2>&1
if [ $? -eq 0 -a -n "$CLEAN" ]; then
echo "$NAME: Running \"git clean\" ..."
cd "$SRC_D" || exit 1
[ -n "$VERBOSE" ] && git clean -dxf || git clean -dxf >/dev/null
cd "$MY_D" || exit 1
fi
fi
echo "$NAME: Checking for \"$SRC_D/configure\" script ..."
if [ ! -r "$SRC_D/configure" ]; then
echo "$NAME: Running \"$SRC_D/autogen.sh\" ..."
cd "$SRC_D" || exit 1
[ -n "$VERBOSE" ] && ./autogen.sh || ./autogen.sh >/dev/null
cd "$MY_D" || exit 1
fi
if [ -r "$SRC_D/configure" ]; then
echo "$NAME: Running \"$SRC_D/configure\" script ..."
[ -n "$VERBOSE" ] && "$SRC_D/configure" -C || "$SRC_D/configure" -C >/dev/null
if [ $? -eq 0 -a -r ./Makefile ]; then
R_CONFIGURE=1
echo "$NAME: Running \"$MAKE\" ..."
[ -n "$VERBOSE" ] && "$MAKE" || "$MAKE" >/dev/null
if [ $? -eq 0 -a -x src/ngircd/ngircd ]; then
R_MAKE=1
echo "$NAME: Running \"$MAKE check\" ..."
[ -n "$VERBOSE" ] && "$MAKE" check || "$MAKE" check >/dev/null
if [ $? -eq 0 ]; then
R_CHECK=1
R_RUN=$R_CHECK
[ -r ./src/testsuite/tests-skipped.lst ] \
&& R_CHECK_Y="y" || R_CHECK_Y="Y"
else
./src/ngircd/ngircd --help 2>/dev/null \
| grep "^ngIRCd" >/dev/null
[ $? -eq 0 ] && R_RUN=1
fi
fi
fi
fi
# Get target platform information
if [ -r "src/config.h" ]; then
CPU=`grep "HOST_CPU" "src/config.h" | cut -d'"' -f2`
OS=`grep "HOST_OS" "src/config.h" | cut -d'"' -f2`
VENDOR=`grep "HOST_VENDOR" "src/config.h" | cut -d'"' -f2`
PLATFORM="$CPU/$VENDOR/$OS"
fi
if [ -z "$PLATFORM" ]; then
PLATFORM="`uname 2>/dev/null` `uname -r 2>/dev/null`, `uname -m 2>/dev/null`"
fi
# Get compiler information
if [ -r "Makefile" ]; then
CC=$(grep "^CC = " Makefile | cut -d' ' -f3)
$CC --version 2>&1 | grep -i "GCC" >/dev/null
if [ $? -eq 0 ]; then
# GCC, or compiler that mimics GCC
$CC --version 2>&1 | grep -i "Open64" >/dev/null
if [ $? -eq 0 ]; then
COMPILER="Open64"
else
COMPILER=$($CC --version | head -1 \
| cut -d')' -f2 | cut -d' ' -f2)
COMPILER="gcc $COMPILER"
fi
else
# Non-GCC compiler
$CC --version 2>&1 | grep -i "clang" >/dev/null
if [ $? -eq 0 ]; then
COMPILER=$($CC --version 2>/dev/null | head -1 \
| cut -d'(' -f1 | cut -d'-' -f1 \
| sed -e 's/version //g' | sed -e 's/Apple /A-/g' \
| sed -e 's/Debian //g' | sed -e 's/LLVM /clang /g')
fi
$CC -version 2>&1 | grep -i "tcc" >/dev/null
if [ $? -eq 0 ]; then
COMPILER=$($CC -version 2>/dev/null | head -1 \
| cut -d'(' -f1 | sed -e 's/version //g')
fi
if [ "$COMPILER" = "unknown" ]; then
v="`$CC --version 2>/dev/null | head -1`"
[ -z "$v" ] && v="`$CC -version 2>/dev/null | head -1`"
[ -n "$v" ] && COMPILER="$v"
fi
fi
fi
# Get ngIRCd version information
eval $(grep "^VERSION = " Makefile | sed -e 's/ //g')
case "$VERSION" in
*~*-*)
VERSION=`echo "$VERSION" | cut -b1-10`
;;
esac
[ -n "$VERSION" ] || VERSION="unknown"
# Get IO interface information
if [ "$OS" = "linux-gnu" ]; then
COMMENT="1"
else
grep "^#define HAVE_SYS_DEVPOLL_H 1" src/config.h >/dev/null 2>&1
[ $? -eq 0 ] && COMMENT="4"
grep "^#define HAVE_EPOLL_CREATE 1" src/config.h >/dev/null 2>&1
[ $? -eq 0 ] && COMMENT="5"
grep "^#define HAVE_KQUEUE 1" src/config.h >/dev/null 2>&1
[ $? -eq 0 ] && COMMENT="3"
fi
[ -n "$R_CONFIGURE" ] && C="Y" || C="N"
[ -n "$R_MAKE" ] && M="Y" || M="N"
[ -n "$R_CHECK" ] && T="$R_CHECK_Y" || T="N"
[ -n "$R_RUN" ] && R="Y" || R="N"
[ -n "$COMMENT" ] && COMMENT=" $COMMENT"
echo
echo " the executable works (\"runs\") as expected --+"
echo " tests run successfully (\"make check\") --+ |"
echo " ngIRCd compiles (\"make\") --+ | |"
echo " ./configure works --+ | | |"
echo " | | | |"
echo "Platform Compiler ngIRCd Date Tester C M T R *"
echo "--------------------------- ------------ ---------- -------- -------- - - - - -"
type printf >/dev/null 2>&1
if [ $? -eq 0 ]; then
printf "%-27s %-12s %-10s %s %-8s %s %s %s %s%s\n" \
"$PLATFORM" "$COMPILER" "$VERSION" "$DATE" "$USER" \
"$C" "$M" "$T" "$R" "$COMMENT"
else
echo "$PLATFORM $COMPILER $VERSION $DATE $USER" \
"$C" "$M" "$T" "$R" "$COMMENT"
fi
echo
if [ "$R_CHECK_Y" = "y" ]; then
echo "$NAME: Warning: Some tests have been skipped!"
echo
fi

1
doc/.gitignore vendored
View File

@@ -1 +0,0 @@
sample-ngircd.conf

View File

@@ -1,53 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2014 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- BOPM.txt --
I. Introduction
~~~~~~~~~~~~~~~~
Citing <http://wiki.blitzed.org/BOPM>: "BOPM is an open source open proxy
monitor, designed for use with hybrid-based ircds, although it can be used
with slight modification on any server which has the ability to show connects
to opers and that supports KLINEs."
Starting with Release 17, ngIRCd supports all required log messages that
BOPM requires to be useful.
II. Installation
~~~~~~~~~~~~~~~~~
Install BOPM as usual, please see the BOPM documentation for details.
Afterwards adjust the following configuration parameters that are important
for ngIRCd:
a) BOPM "IRC" section:
1) Set "server" and "port" accordingly,
2) adjust the "oper" line to match an [Operator] block in ngircd.conf,
3) change "mode" to "+ci" or "+c".
4) Set "connregex" to the following string, everything in one line(!):
"Client connecting: ([^ ]+) \\(([^@]+)@([^\\)]+)\\) \\[([0-9\\.]+)\\].*";
and comment out all the other "connregex" examples (that is, prepend a
"#" character).
5) Set "kline" to "GLINE *@%h :Open proxy found on your host!";
and comment out all the other "kline" examples.
b) BOPM "scanner" section:
Make sure you configure a valid "target_ip" and "target_port" for the
configured scanners to test. And please note that you CAN'T USE the port
of ngIRCd, because ngIRCd doesn't send any banner message by default!
So you need a service what sends a banner, so for example POP3, SMTP,
IMAP, or SSH daemons should work ...

View File

@@ -1,28 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Capabilities.txt --
This document lists and describes the "IRC capabilities" that ngIRCd supports
and can be requested by a IRC/IRCv3 client that supports the "CAP" command.
ngIRCd implements the "IRC Client Capabilities Extension" as described here:
<http://www.leeh.co.uk/draft-mitchell-irc-capabilities-02.html>
I. Supported Capabilities
~~~~~~~~~~~~~~~~~~~~~~~~~
* "multi-prefix"
When requested, the multi-prefix client capability will cause the IRC
server to send all possible prefixes which apply to a user in NAMES and
WHO output.
See <http://ircv3.atheme.org/extensions/multi-prefix-3.1>.

View File

@@ -1,991 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2013 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Commands.txt --
This file lists all commands available on ngIRCd. It is written in a format
that is human readable as well as machine parseable and therefore can be used
as "help text file" of the daemon.
In short, the daemon reads this file on startup and parses it as following
when an user issues a "HELP <cmd>" command:
1. Search the file for a line "- <cmd>",
2. Output all subsequent lines that start with a TAB (ASCII 9) character
to the client using NOTICE commands, treat lines containing a single "."
after the TAB as empty lines.
3. Break at the first line not starting with a TAB character.
This format allows to have information to each command stored in this file
which will not be sent to an IRC user requesting help which enables us to
have additional annotations stored here which further describe the origin,
implementation details, or limits of the specific command which are not
relevant to an end-user but administrators and developers.
A special "Intro" block is returned to the user when the HELP command is
used without a command name:
- Intro
This is ngIRCd, a server software for Internet Relay Chat (IRC)
networks. You can find more information about ngIRCd on its homepage:
<http://ngircd.barton.de>
.
Use "HELP COMMANDS" to get a list of all available commands and
"HELP <command-name>" to get help for a specific IRC command, for
example "HELP quit" or "HELP privmsg".
Connection Handling Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- CAP
CAP LS
CAP LIST
CAP REQ <capabilities>
CAP ACK <capabilities>
CAP NAK <capabilities>
CAP CLEAR
CAP END
.
List, request, and clear "IRC Capabilities".
.
Using this command, an IRC client can request additional "IRC
capabilities" during login or later on, which influences the
communication between server and client. Normally, these commands
aren't directly used by humans, but automatically by their client
software. And please note that issuing such commands manually can
irritate the client software used, because of the "non-standard"
behavior of the server!
.
- CAP LS: list all available capabilities.
- CAP LIST: list active capabilities of this connection.
- CAP REQ: Request particular capabilities.
- CAP ACK: Acknowledge a set of capabilities to be enabled/disabled.
- CAP NAK: Reject a set of capabilities.
- CAP CLEAR: Clear all set capabilities.
- CAP END: Indicate end of capability negotiation during login,
ignored in an fully registered session.
Please note that the <capabilities> must be given in a single
parameter but whitespace separated, therefore a command could look
like this: "CAP REQ :capability1 capability2 capability3" for example.
References:
- <http://ircv3.atheme.org/specification/capability-negotiation-3.1>
- <http://ngircd.barton.de/doc/Capabilities.txt>
- doc/Capabilities.txt
- CHARCONV
CHARCONV <client-charset>
.
Set client character set encoding to <client-charset>.
.
After receiving such a command, the server translates all message
data received from the client using the set <client-charset> to the
server encoding (UTF-8), and all message data which is to be sent to
the client from the server encoding (UTF-8) to <client-charset>.
.
This enables older clients and clients using "strange" character sets
to transparently participate in channels and direct messages to
clients using UTF-8, which should be the default today.
References:
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
- IRC+, doc/Protocol.txt
- NICK
NICK <nickname>
NICK <nickname> [<hops>]
NICK <nickname> <hops> <username> <host> <servertoken> <usermodes> <realname>
.
Set or change the <nickname> of a client (first form) and register
remote clients (second and third form; servers only).
References:
- RFC 1459, 4.1.2 "Nick message" (old client and server protocol)
- RFC 2812, 3.1.2 "Nick message" (client protocol)
- RFC 2813, 4.1.3 "Nick" (server protocol)
- PASS
PASS <password>
PASS <password> <version> <flags> [<options>]
.
Set a connection <password>. This command must be the first command
sent to the server, even before the NICK/USER or SERVER commands.
.
The first form is used by user sessions or (old) RFC 1459 servers,
the second form is used by RFC 2812 or IRC+ compliant servers and
enables the server to indicate its version and supported protocol
features.
References:
- RFC 1459, 4.1.1 "Password message" (old client and server protocol)
- RFC 2812, 3.1.1 "Password message" (client protocol)
- RFC 2813, 4.1.1 "Password message" (server protocol)
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
- IRC+, doc/Protocol.txt
- PING
PING <token> [<target>]
.
Tests the presence of a connection to a client or server.
.
If no <target> has been given, the local server is used. User clients
can only use other servers as <target>, no user clients.
.
A PING message results in a PONG reply containing the <token>, which
can be arbitrary text.
Please note:
The RFCs state that the <token> parameter is used to specify the
origin of the PING command when forwarded in the network, but this
is not the case: the sender is specified using the prefix as usual,
and the parameter is used to identify the PONG reply in practice.
References:
- RFC 2812, 3.7.2 "Ping message"
- PONG
PONG <target> [<token>]
.
Reply to a "PING" command, indicate that the connection is alive.
.
The <token> is the arbitrary text received in the "PING" command and
can be used to identify the correct PONG sent as answer.
.
When the "PONG" command is received from a user session, the <target>
parameter is ignored; otherwise the PONG is forwarded to this client.
References:
- RFC 2812, 3.7.3 "Pong message"
- QUIT
QUIT [<quit-message>]
.
Terminate a user session.
.
When received from a user, the server acknowledges this by sending
an "ERROR" message back to the client and terminates the connection.
.
When a <quit-message> has been given, it is sent to all the channels
that the client is a member of when leaving.
References:
- RFC 2812, 3.1.7 "Quit"
- RFC 2813, 4.1.5 "Quit"
- USER
USER <username> <hostname> <unused> <realname>
.
Register (and authenticate) a new user session with a short <username>
and a human-readable <realname>.
.
The parameter <hostname> is only used when received by an other server
and ignored otherwise; and the parameter <unused> is always ignored.
But both parameters are required on each invocation by the protocol
and can be set to arbitrary characters/text when not used.
.
If <username> contains an "@" character, the full <username> is used
for authentication, but only the first part up to this character is
set as "user name" for this session.
References:
- RFC 2812, 3.1.3 "User message"
- WEBIRC
WEBIRC <password> <username> <hostname> <ip-address>
.
Allow Web-to-IRC gateway software (for example) to set the correct
user name and host name of users instead of their own.
.
It must be the very first command sent to the server, even before
USER and NICK commands!
.
The <password> must be set in the server configuration file to prevent
unauthorized clients to fake their identity; it is an arbitrary string.
References:
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
- IRC+, doc/Protocol.txt
General Commands
~~~~~~~~~~~~~~~~
- AWAY
AWAY [<message>]
.
Provides the server with a message to automatically send in reply to a
PRIVMSG directed at the user, but not to a channel they are on.
.
If <message> is omitted, the away status is removed.
References:
- RFC 2812, 4.1 "Away"
- HELP
HELP [<command>]
.
Show help information for a specific IRC <command>. The <command> name
is case-insensitive.
.
Use the command "HELP Commands" to get a list of all available commands.
The HELP command isn't specified by any RFC but implemented by most
daemons. If no help text could be read in, ngIRCd outputs a list of all
implemented commands when receiving a plain "HELP" command as well as
on "HELP Commands".
ngIRCd replies using "NOTICE" commands like ircd 2.10/2.11; other
implementations are using numerics 704, 705, and 706.
- MODE
MODE <nickname> [{+|-}<mode>[<mode>] [{+|-}<mode>[<mode>] [...]]]
MODE <channel> [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [{+|-}<mode>[<mode>] [<arg> [<arg> [...]]] [...]]]
.
Set and get user and channel modes.
.
When no mode parameters are given, the currently set user or channel
modes are returned. Otherwise the modes are adjusted accordingly
and the changes will be reported back to the client.
.
All user and channel "modes" are indicated by single case-sensitive
characters.
.
Please note that a user can only get and set his own modes, and not
all user "levels" are allowed to change all channel modes ...
.
The mode parameters can become quite complex, especially when dealing
with channel modes that require additional arguments:
.
{+|-}<mode(s}> -- set or unset one or more modes.
+<mode(s)> -<mode(s)> -- set some modes and unset others.
+<modes> <arg1> <arg2> -- set (at least) two modes with arguments.
.
Some examples:
.
MODE nick +i -- set user to "invisible".
MODE #chan +tn -- set "topic lock" and "no external messages".
MODE #chan -t +l 50 -- remove "topic lock", set "user limit" to 50.
MODE #chan +ov nick1 nick2 -- set "channel op" and "voice" mode
to nick1 and nick2 in channel #chan.
.
A complete list of all modes supported by ngIRCd can be found online
here: <http://ngircd.barton.de/doc/Modes.txt>.
References:
- RFC 2811, 4. "Channel Modes"
- RFC 2812, 3.1.5 "User mode message"
- RFC 2812, 3.2.3 "Channel mode message"
- <http://ngircd.barton.de/doc/Modes.txt>
- doc/Modes.txt
- NOTICE
NOTICE <target>[,<target>[,...]] <message>
.
Send a <message> to a given <target>, which can be a user or a
channel, but DON'T report any error.
.
The "NOTICE" command exactly behaves like the "PRIVMSG" command, but
doesn't report any errors it encounters (like an unknown <target>).
Please see the help text of the "PRIVMSG" command for a detailed
description of the parameters!
References:
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
- RFC 2812, 3.3 "Sending messages"
- RFC 2812, 3.3.2 "Notice"
- PRIVMSG
PRIVMSG <target>[,<target>[,...]] <message>
.
Send a <message> to a given <target>, which can be a user or a
channel, and report all errors.
.
The <target> must follow one of these syntax variants:
.
- <nickname>
- <channel>
- <user>[%<host>]@<server>
- <user>%<host>
- <nickname>!<user>@<host>
.
If the <target> is a user, a private message is sent directly to this
user; if it resolves to a channel name, a public message is sent
to all the members of that channel.
.
In addition, IRC Ops can use these two forms to specify the <target>:
.
- #<hostmask>
- #<servermask>
.
The <mask> can contain the wildcard characters "*" and "?", but must
contain at least one dot (".") and no wildcard after the last one.
Then, the <message> is sent to all users matching this <mask>.
.
All warnings and errors are reported back to the initiator using
numeric status codes, which is the only difference to the "NOTICE"
command, which doesn't report back any errors or warnings at all.
.
Please note that clients often use "MSG" as an alias to PRIVMSG, and
a command "QUERY <nick> [<message>]" to initiate private chats. Both
are command extensions of the client and never sent to the server.
References:
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
- RFC 2812, 3.3 "Sending messages"
- RFC 2812, 3.3.1 "Private messages"
Status and Informational Commands
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- ADMIN
ADMIN [<target>]
.
Show administrative information about an IRC server in the network.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.4.9 "Admin command"
- INFO
INFO [<target>]
.
Show the version, birth & online time of an IRC server in the network.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.4.10 "Info command"
- ISON
ISON <nickname> [<nickname> [...]]
.
Query online status of a list of nicknames. The server replies with
a list only containing nicknames actually connected to a server in
the network. If no nicknames of the given list are online, an empty
list is returned to the client requesting the information.
Please note that "all" IRC daemons even parse separate nicknames in
a single parameter (like ":nick1 nick2"), and therefore ngIRCd
implements this behaviour, too.
References:
- RFC 2812, 4.9 "Ison message"
- LINKS
LINKS [[<target>] [<mask>]
.
List all servers currently registered in the network matching <mask>,
or all servers if <mask> has been omitted, as seen by the server
specified by <target> or the local server when <target> is omitted.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
References:
- RFC 2812, 3.4.5 "Links message"
- LUSERS
LUSERS [<mask> [<target>]]
.
Return statistics about the number of clients (users, servers,
services, ...) in the network as seen by the server <target>.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
Please note that ngIRCd ignores the <mask> parameter entirely: it
is not possible to get information for a part of the network only.
References:
- RFC 2812, 3.4.2 "Lusers message"
- MOTD
MOTD [<target>]
.
Show the "Message of the Day" (MOTD) of an IRC server in the network.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.4.1 "Motd message"
- NAMES
NAMES [<channel>[,<channel>[,...]] [<target>]]
.
Show the list of users that are members of a particular <channel>
(and that are visible for the client requesting this information) as
seen by the server <target>. More than one <channel> can be given
separated by "," (but not whitespaces!).
.
If <channel> has been omitted, all visible users are shown, grouped
by channel name, and all visible users not being members of at least
one channel are shown as members of the pseudo channel "*".
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.2.5 "Names message"
- STATS
STATS [<query> [<target>]]
.
Show statistics and other information of type <query> of a particular
IRC server in the network.
.
The following <query> types are supported (case-insensitive where
applicable):
.
- g Network-wide bans ("G-Lines").
- k Server-local bans ("K-Lines").
- L Link status (servers and user links).
- l Link status (servers and own link).
- m Command usage count.
- u Server uptime.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
.
To use "STATS L" the user must be an IRC Operator.
References:
- RFC 2812, 3.4.4 "Stats message"
- TIME
TIME [<target>]
.
Show the local time of an IRC server in the network.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
References
- RFC 2812, 3.4.6 "Time message"
- TRACE
TRACE [<target>]
.
Find the route to a specific server and send information about its
peers. Each server that processes this command reports back to the
sender about it: the replies from pass-through servers form a chain
which shows the route to the destination.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.4.8 "Trace message"
- USERHOST
USERHOST <nickname> [<nickname> [...]]
.
Show flags and the hostmasks (<user>@<host>) of the <nickname>s,
separated by spaces. The following flags are used:
.
- "-" The client is "away" (the mode "+a" is set on this client).
- "+" Client seems to be available, at least it isn't marked "away".
- "*" The client is an IRC operator (the mode "+o" is set).
References:
- RFC 2812, 4.8 "Userhost message"
- VERSION
VERSION [<target>]
.
Show version information about a particular IRC server in the network.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
.
Please note: in normal operation, the version number ends in a dot
(".", for example "ngIRCd-20.1."). If it ends in ".1" (for example
"ngIRCd-20.1.1", same version than before!), the server is running in
debug-mode; and if it ends in ".2", the "network sniffer" is active!
Keep your privacy in mind ...
References:
- RFC 2812, 3.4.3 "Version message"
- WHO
WHO [<mask> ["o"]]
.
Show a list of users who match the <mask>, or all visible users when
the <mask> has been omitted. (Special case: the <mask> "0" is
equivalent to "*")
.
If the flag "o" is given, the server will only return information about
IRC Operators.
References:
- RFC 2812, 3.6.1 "Who query"
- WHOIS
WHOIS [<target>] <mask>[,<mask>[,...]]
.
Query information about users matching the <mask> parameter(s) as seen
by the server <target>; up to 3 <masks> are supported.
.
<target> can be a server name, the nickname of a client connected to a
specific server, or a mask matching a server name in the network. The
server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.6.2 "Whois query"
- WHOWAS
WHOWAS <nickname>[,<nickname>[,...]] [<count> [<target>]]
.
Query information about nicknames no longer in use in the network,
either because of nickname changes or disconnects. The history is
searched backwards, returning the most recent entry first. If there
are multiple entries, up to <count> entries will be shown (or all of
them, if no <count> has been given).
.
<target> can be a server name, the nickname of a client connected to a
specific server, or a mask matching a server name in the network. The
server of the current connection is used when <target> is omitted.
References:
- RFC 2812, 3.6.3 "Whowas"
Channel Commands
~~~~~~~~~~~~~~~~
- INVITE
INVITE <nickname> <channel>
.
Invite <nickname> to join channel <channel>.
.
<channel> does not have to exist, but if it does, only members of the
channel are allowed to invite other users. If the channel mode "+i"
is set, only channel "half-ops" (and above) may invite other clients,
and if channel mode "+V" is set, nobody can invite other users.
References:
- RFC 2812, 3.2.7 "Invite message"
- JOIN
JOIN {<channel>[,<channel>[,...]] [<key>[,<key>[,...]]] | 0}
.
Makes the client join the <channel> (comma-separated list), specifying
the channel keys ("passwords"). A <channel-key> is only needed if the
<channel> has the mode "+k" set.
.
If the channel(s) do not exist, then they will be created.
.
Using "JOIN 0" parts all channels at once.
References:
- RFC 2812, 3.2.1 "Join message" (client protocol)
- RFC 2813, 4.2.1 "Join message" (server protocol)
- KICK
KICK <channel>[,<channel>[,...]] <nickname>[,<nickname>[,...]] [<reason>]
.
Remove users(s) with <nickname>(s) from <channel>(s).
.
There must be either exactly one <channel> parameter and multiple
<nickname> parameters, or as many <channel> parameters as there are
<nickname> parameters. The <reason> is shown to the users being
kicked, and the nickname of the current user is used when <reason>
is omitted.
References:
- RFC 2812, 3.2.8 "Kick command"
- LIST
LIST [<channel>[,<channel>[,...]] [<server>]]
.
List all visible <channels> (comma-separated list).
.
If <server> is given, the command will be forwarded to <server> for
evaluation.
References:
- RFC 2812, 3.2.6 "List message"
- PART
PART <channel>[,<channel>[,...]] [<part-message>]
.
Leave <channel> (comma-separated list), optionally with sending a
<part-message> to all the other channel members.
References:
- RFC 2812, 3.2.2 "Part message"
- TOPIC
TOPIC <channel> [<topic>]
.
Change or view the topic of a channel.
.
The topic for channel <channel> is returned if there is no <topic>
given. If the <topic> parameter is present, the topic for that
channel will be changed, if this action is allowed for the user
requesting it. If the <topic> parameter is an empty string, the
topic for that channel will be removed.
References:
- RFC 2812, 3.2.4 "Topic message"
Administrative Commands
~~~~~~~~~~~~~~~~~~~~~~~
- CONNECT
CONNECT <server> [<port> [<remote-server> [<my-pwd> <peer-pwd>]]]
.
Instructs the current server, or <remote-server> if specified,
to connect to the server named <server>, which must be configured
in the server configuration file.
.
To use this command, the user must be an IRC Operator. To establish
a connection on a <remote-server>, you must have remote IRC operator
privileges.
.
If <port>, <my-pwd> and <peer-pwd> are given, these values override
the ones specified in the server configuration file.
References:
- RFC 2812, 3.4.7 "Connect message"
- DIE
DIE [<message>]
.
Instructs the server to shut down.
.
The optional (and non-standard) <message> text is sent to each client
connected to this server before all connections are closed.
.
To use this command, the user must be an IRC Operator.
References:
- RFC 2812, 4.3 "Die message"
- DISCONNECT
DISCONNECT <server>
.
Disconnect and disable a locally linked server.
.
To use this command, the user must be an IRC Operator.
References:
- This command is not specified in the IRC RFCs, it is an extension
of ngIRCd.
- GLINE
GLINE <nick!user@hostmask> [<timeout> :<reason>]
.
This command provides timed G-Lines (network-wide bans).
.
If a client matches a G-Line, it cannot connect to any server on
the IRC network for <timeout> seconds. When <timeout> is 0, it make
the G-Line permanent.
.
If no <timeout> and no <reason> is given, the G-Line is removed.
.
To use this command, the user must be an IRC Operator.
.
"STATS g" can be used to list all currently active G-Lines.
References:
- This command is not specified in the IRC RFCs, it is an extension
of ngIRCd.
- KILL
KILL <nickname> <reason>
.
Forcibly remove all users with a given <nickname> from the IRC
network and display the given <reason> to them.
.
This command is used internally between servers, too, for example
to disconnect duplicate <nickname>'s after a "net split".
.
To use this command, the user must be an IRC Operator.
References:
- RFC 2812, 3.7.1 "Kill message"
- KLINE
KLINE <nick!user@hostmask> [<timeout> :<reason>]
.
This command provides timed K-Lines (server-local bans).
.
If a client matches a K-Line, it cannot connect to this server for
<timeout> seconds. When <timeout> is 0, it makes the K-Line permanent.
.
If no <timeout> and no <reason> is given, the K-Line is removed.
.
To use this command, the user must be an IRC Operator.
.
"STATS k" can be used to list all currently active K-Lines.
References:
- This command is not specified in the IRC RFCs, it is an extension
of ngIRCd.
- OPER
OPER <name> <password>
.
Authenticates a user named <name> as an IRC operator on the current
server/network.
.
This operator <name> must be configured in the server configuration.
.
Please note that <name> is NOT related to a nickname at all!
References:
- RFC 2812, 3.1.4 "Oper message"
- REHASH
REHASH
.
Causes the server to re-read and re-process its configuration file(s).
.
While rehashing, no new connections are accepted, but all already
established connections stay connected.
.
To use this command, the user must be an IRC Operator.
References:
- RFC 2812, 4.2 "Rehash message"
- RESTART
RESTART
.
Restart the server.
.
While restarting, all connections are reset and no new connections
are accepted.
.
To use this command, the user must be an IRC Operator.
References:
- RFC 2812, 4.4 "Restart message"
- WALLOPS
WALLOPS <message>
.
Sends <message> to all users with user mode "+w".
.
To use this command, the user must be an IRC Operator.
References:
- RFC 2812, 4.7 "Operwall message"
IRC Service Commands
~~~~~~~~~~~~~~~~~~~~
- SERVICE
SERVICE <name> <reserved1> <distribution> <type> <reserved2> <info>
SERVICE <name> <servertoken> <distribution> {<type>|+<modes>} <hops> <info>
.
Register a new service in the network.
.
The first form is used by directly linked services and isn't supported
by ngIRCd at the moment. The second form announces services connected
to remote "pseudo-servers" ("services hubs").
.
The <distribution> and <type> parameters are ignored by ngIRCd.
References:
- RFC 2812, 3.1.6 "Service message"
- RFC 2813, 4.1.4 "Service message"
- SERVLIST
SERVLIST [<mask> [<type>]]
.
List all IRC services currently registered in the network.
.
The optional <mask> and <type> parameters can be used to limit the
listing to services matching the <mask> and that are of type <type>.
.
Please note that ngIRCd doesn't use any service types at the moment
and therefore all services are of type "0".
References:
- RFC 2812, 3.5.1 "Servlist message"
- SQUERY
SQUERY <target>[,<target>[,...]] <message>
.
Send a <message> to a given <target> IRC service, and report all
errors.
.
The "SQUERY" command exactly behaves like the "PRIVMSG" command, but
enforces that the <target> of the <message> is an IRC service.
Please see the help text of the "PRIVMSG" command for a detailed
description of the parameters!
.
If a user wants to interact with IRC services, he should use "SQUERY"
instead of "PRIVMSG" or "NOTICE": only "SQUERY makes sure that no
regular user, which uses the nickname of an IRC service, receives
the command in error, for example during a "net split"!
References:
- RFC 2812, 2.3.1 "Message format in Augmented BNF"
- RFC 2812, 3.3 "Sending messages"
- RFC 2812, 3.3.2 "Notice"
- SVSNICK
SVSNICK <oldnick> <newnick>
.
Forcefully change foreign user nicknames. This command is allowed
for servers only.
.
The "SVSNICK" command is forwarded to the server to which the user
with nickname <oldnick> is connected to, which in turn generates a
regular "NICK" command that then is sent to the client, so no special
support in the client software is required.
References:
- ngIRCd GIT commit e3f300d3231f
Server Protocol Commands
~~~~~~~~~~~~~~~~~~~~~~~~
- CHANINFO
CHANINFO <channel> +<modes> [[<key> <limit>] <topic>]
.
CHANINFO is used by servers to inform each other about a channel:
its modes, channel key, user limits and its topic.
.
The CHANINFO command is allowed on server-links only.
References:
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
- IRC+, doc/Protocol.txt
- ERROR
ERROR [<message> [<> [...]]]
.
Inform a client or a server about an error condition. The first
parameter, if given, is logged by the server receiving the message,
all other parameters are silently ignored.
.
This command is silently ignored on non-server and non-service links
and shouldn't be used by regular IRC clients.
.
The ERROR message is also sent before terminating a regular client
connection.
References:
- RFC 2812, 3.7.4 "Error message"
- METADATA
METADATA <target> <key> <value>
.
The METADATA command is used on server-links to update "metadata"
information of clients, like the hostname, the info text ("real name"),
or the user name.
.
The METADATA command is allowed on server-links only.
References:
- IRC+, <http://ngircd.barton.de/doc/Protocol.txt>
- IRC+, doc/Protocol.txt
- NJOIN
NJOIN <channel> [<mode>]<nick>[,[<mode>]<nick>[,...]]
.
The NJOIN command is used on server-links to add users with <nick>
and <mode> to a <channel> while peering.
.
The NJOIN command is allowed on server-links only.
References:
- RFC 2813, 4.2.2 "Njoin message"
- SERVER
SERVER <servername> <info>
SERVER <servername> <hopcount> <info>
SERVER <servername> <hopcount> <token> <info>
.
The first form registers the local connection as a new server in the
network, the second (RFC 1459) and third (RFC 2812) form announce a
new remote server in the network.
.
The SERVER command is allowed on unregistered or server-links only.
References:
- RFC 1459, 4.1.4 "Server message"
- RFC 2813, 4.1.2 "Server message"
- SQUIT
SQUIT <server> <comment>
.
Disconnects an IRC Server from the network.
.
This command is used on server-links, but can be used by IRC Operators
to forcefully disconnect servers from the network, too.
References:
- RFC 2812, 3.1.8 "Squit"
- RFC 2813, 4.1.6 "Server quit message"
Dummy Commands
~~~~~~~~~~~~~~
- SUMMON
SUMMON <user> [<target> [<channel>]]
.
This command was intended to call people into IRC who are directly
connected to the terminal console of the IRC server -- but is
deprecated today. Therefore ngIRCd doesn't really implement this
command and always returns an error message, regardless of the
parameters given.
References:
- RFC 2812, 4.5 "Summon message"
- USERS
USERS [<target>]
.
This command was intended to list users directly logged in into the
console of the IRC server -- but is deprecated today. Therefore ngIRCd
doesn't really implement this command and always returns an error
message, regardless of the parameters given.
References:
- RFC 2812, 4.6 "Users"
- GET
GET [...]
.
Fake HTTP GET command. When received, the connection is shut down
immediately again to protect against crazy web browsers ...
References:
- ngIRCd GIT commit 33e8c2480649
- POST
POST [...]
.
Fake HTTP POST command. When received, the connection is shut down
immediately again to protect against crazy web browsers ...
References:
- ngIRCd GIT commit 33e8c2480649

View File

@@ -1,54 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2011 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Contributing.txt --
If you want to contribute to ngIRCd, please read the following paragraphs to
get an idea of how to do it the best :-)
- Use GIT
The source code of ngIRCd is maintained using GIT, see doc/GIT.txt. So if
remotely possible, use GIT for your work, too. It makes your and our lifes
much easier ;-)
- Don't forget to include documentation
When adding features and new configuration options, don't forget to not
only code the features but to describe them in doc/sample-ngircd.conf,
man/ngircd.8.tmp and/or man/ngircd.conf.5.tmpl as well!
- Be present on IRC
If you intend to code some new features or do some code cleanups or better
documentation, please be present on <irc://irc.barton.de/#ngircd> and
discuss your plans early! So other developers have an idea on what others
are working on, can offer help, and can synchronize their own work.
- Check and validate your work!
Use "make check" to validate your work, and use "make distcheck" to
validate the resulting archives, especially when adding/removing files!
- Send patches in "unified diff" format
Please send patches in "unified" format, that is, use "diff -u".
Or even better: use GIT ("git diff"), see above.
- Send patches to the mailing list
If you have some code to present, send the patch(es) and/or pointers to
your GIT repository to the official ngIRCd mailing list for review, not
only to #ngircd: so it becomes archived and more people have a chance to
review your patch.
Sure it is a good idea to post some notes to #ngircd, too! :-)
And this is open source, your work must not be 100% finished and perfect,
work in progress is interesting, too: "release early, release often"!

View File

@@ -1,7 +1,7 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
(c)2001-2010 by Alexander Barton, (c)2001-2003 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,11 +12,9 @@
I. General I. General
~~~~~~~~~~ ~~~~~~~~~~
Q: Is it possible to link the ngIRCd with non-ngIRCd servers? Q: Is it possible to link the ngIRCd with non-ngIRCd servers?
A: Yes. ngIRCd is compatible to the original ircd used by IRCNet. Actually A: Yes. ngIRCd is compatible to the original ircd used by IRCNet. Actually
this is being tested with version 2.10.3p3. Please note that newer this is being tested with version 2.10.3p3.
versions (2.11.x) aren't compatible any more!
Q: Is there a homepage with further information and downloads? Q: Is there a homepage with further information and downloads?
A: Yes. Please visit <http://ngircd.barton.de/>. A: Yes. Please visit <http://ngircd.barton.de/>.
@@ -28,7 +26,6 @@ A: ngIRCd offers several benefits: no problems with dynamic IPs, easy to
II. Compilation II. Compilation
~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
Q: I did a "CVS checkout" but can't execute ./configure because the script Q: I did a "CVS checkout" but can't execute ./configure because the script
is missing in the generated directory!? is missing in the generated directory!?
A: When using development versions via CVS, the configure script as well as A: When using development versions via CVS, the configure script as well as
@@ -57,42 +54,17 @@ A: Most probably you are using version 1.5 of GNU automake which seems to be
III. Runtime III. Runtime
~~~~~~~~~~~~ ~~~~~~~~~~~~
Q: Where is the log file located?
A: ngIRCd does not write its own log file. Instead, ngIRCd uses syslog(3).
Check the files in /var/log/ and/or consult the documentation for your
system logger daemon.
Q: I cannot connect to remote peers when I use the chroot option, the Q: I cannot connect to remote peers when I use the chroot option, the
following is logged: "Can't resolve example.com: unknown error!". following is logged: "Can't resolve example.com: unknown error!".
A: see next question blow ...
Q: When running ngIRCd inside a chroot, no IP addresses can be translated
in DNS names, errors like "Name or service not known" are logged.
A: On Linux/glibc with chroot enabled you need to put some libraries inside A: On Linux/glibc with chroot enabled you need to put some libraries inside
the chroot as well, notably libnss_dns; maybe others. Unfortunately, even the chroot as well, notably libnss_dns; maybe others. Unfortunately, even
linking ngIRCd statically does not help this. So you can either copy linking ngircd statically does not help this. The only known workaround
all the required files into the chroot directory: is to either disable chroot support or to link against dietlibc instead
$ mkdir -p ./chroot/etc ./chroot/lib of glibc. (tnx to Sebastian Siewior)
$ cp -a /etc/hosts /etc/resolv.conf /etc/nsswitch.conf ./chroot/etc/
$ cp -a /lib/libresolv* /lib/libnss_* ./chroot/lib/
Or you can try to link ngIRCd against an other C library (like dietlibc)
that doesn't depend on NSS modules and/or these files.
Q: I have added an [Oper] section, how do i log on as IRC operator?
A: You can use the /OPER command in your IRC client to become an IRC operator.
ngIRCd will also log all OPER requests (using syslog), if OPER fails you
can look there to determine why it did not work (bad password, unauthorized
host mask, etc.)
Q: I am an IRC operator, but MODE doesn't work!
A: You need to set 'OperCanUseMode = yes' in ngircd.conf, then IRC operators
can use the MODE command for changing modes even when they are not joined
to the specific channel.
IV. Bugs!? IV. Bugs!?
~~~~~~~~~~ ~~~~~~~~~~
Q: Is there a list of known bugs and desired feature enhancements? Q: Is there a list of known bugs and desired feature enhancements?
A: Yes. Have a look at the bug tracking system (Bugzilla) for ngIRCd located A: Yes. Have a look at the bug tracking system (Bugzilla) for ngIRCd located
at <http://ngircd.barton.de/bugzilla/index.cgi>. There you can file bug at <http://ngircd.barton.de/bugzilla/index.cgi>. There you can file bug
@@ -102,3 +74,6 @@ Q: What should I do if I found a bug?
A: Please file a bug report at <http://ngircd.barton.de/bugzilla/index.cgi>! A: Please file a bug report at <http://ngircd.barton.de/bugzilla/index.cgi>!
The author of the particular component will be notified automagically :-) The author of the particular component will be notified automagically :-)
--
$Id: FAQ.txt,v 1.12 2008/01/02 22:47:58 alex Exp $

View File

@@ -1,31 +1,13 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2011 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- GIT.txt -- -- GIT.txt --
The source code of ngIRCd is maintained using git, the stupid content
tracker.
The source code of ngIRCd is maintained using GIT, an distributed version I. Getting the source code
control system. Homepage including documentation: <http://git-scm.com/>. ~~~~~~~~~~~~~~~~~~~~~~~~~~
To access the source tree anonymously, run:
I. Viewing the source code online
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The ngIRCd "GITweb" interface allows you to browse the GIT repository and
to see all individual files, tags, branches, commits etc.:
<http://arthur.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git>
II. Getting the source code
~~~~~~~~~~~~~~~~~~~~~~~~~~~
To access (copy, clone) the source tree repository anonymously, run:
$ git clone git://ngircd.barton.de/ngircd.git $ git clone git://ngircd.barton.de/ngircd.git
@@ -33,23 +15,21 @@ Thereby a new folder "ngircd" will be created containing all the individual
source files. source files.
The newly created directory ("ngircd") is the "working directory", all The newly created directory ("ngircd") is the "working directory", all
GIT commands will be executed from within this directory in the future. git commands will be executed from within this directory in the future.
Please note: When checking out a fresh copy of ngIRCd using GIT, the Please note: When checking out a fresh copy of ngIRCd using git, the
configure script doesn't exist; you have to run the autogen.sh shell script configure script doesn't exist; you have to run the autogen.sh shell script
(which is included in the source tree) to generate it. This requires you to (which is included in the source tree) to generate it. This requires you to
have GNU automake and GNU autoconf installed on your system. Please see the have GNU automake and GNU autoconf installed on your system.
file INSTALL for details!
To update the local GIT repository: To update the git tree:
$ git pull $ git pull
This retrieves all changes and merges them into the current branch. This retrieves all changes and merges them into the current branch.
II. Contributing
III. Contributing ~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~
Patches should be sent to the ngircd mailing list. List homepage: Patches should be sent to the ngircd mailing list. List homepage:
http://arthur.barton.de/mailman/listinfo/ngircd-ml http://arthur.barton.de/mailman/listinfo/ngircd-ml
@@ -58,8 +38,8 @@ If you do not want to send them to the list, you can also mail them
to Alex Barton, <alex@barton.de>. to Alex Barton, <alex@barton.de>.
IV. Write Access III. Write Access
~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~
If you want to contribute a couple of patches and write access to the git
If you want to contribute a couple of patches and write access to the GIT
repository would be handy, please contact Alex Barton, <alex@barton.de>. repository would be handy, please contact Alex Barton, <alex@barton.de>.

View File

@@ -1,77 +0,0 @@
ngIRCd - Next Generation IRC Server
(c)2001-2010 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- HowToRelease.txt --
I. Introduction
~~~~~~~~~~~~~~~
Creating a new ngIRCd release requires a few steps to follow: the source
tree must be in a releasable state (be up to date, include all required
patches, be tested on as many platforms as possible), a name for the new
release must be chosen, and all the files describing the release must be
updated accordingly.
Since ngIRCd release 13 (2009-12-25) we use "simple" release numbers for
major releases (e.g. "13", "17", "42", ...) introducing new features and
sub-releases for bug fixes only (e.g. "14.1", "22.3", ...).
When creating pre-releases or release candidates, please use the tilde ("~")
character to separate the "postfix" in the release number (e.g. "17~rc2"
or "123.4~rc6").
The release/version number of a build is automatically generated using the
GIT "describe" command, see git-describe(1). Therefore it is required that
a new release is tagged in the GIT tree and that the configure script is
up-to-date (e.g. using ./autogen.sh) before generating the archives!
II. How to prepare a new ngIRCd release?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
a) Make sure the source tree is in a releasable state ;-)
b) Make sure you have working versions of GNU autoconf and GNU automake
installed on the system you use for generating the release:
as of October 2010 we are using GNU autoconf 2.67 and GNU automake 1.11.1
which seem to work just fine.
c) Update the files describing the new release:
- ChangeLog
- NEWS
d) Update the version numbers in the following files:
- contrib/ngircd.spec
e) Generate a new Debian change log entry in the following file, e.g. using
the Debian "dch" tool of the "devscripts" package:
- contrib/Debian/changelog
f) Commit the above changes to GIT: "git add", "git commit"
g) Create a new signed GIT tag for the new release: "git tag -s".
Please note that we don't use the tilde ("~") here, instead use a simple
hyphen ("-") as delimiter: e.g. "rel-16" "rel-17-rc1", "rel-18-pre2", ...
h) Run "./autogen.sh" to update the ./configure script with the correct
release number (autogenerated using "git describe", see above).
i) Run "./configure" to rebuild all generated Makefiles.
j) Run "make distcheck" to generate the distribution archives.
k) Sign the distribution archive(s) using GnuPG: "gpg -b <archivefile>"
l) Upload and distribute the newly generated ngIRCd release archive(s)
and GnuPG signatures.
m) Write an announcement to the mailing list, freshmeat, Twitter, ...
n) Relax :-)

View File

@@ -1,95 +1,42 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors # Copyright (c)2001-2008 by Alexander Barton (alex@barton.de)
# #
# This program is free software; you can redistribute it and/or modify # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# it under the terms of the GNU General Public License as published by # der GNU General Public License (GPL), wie von der Free Software Foundation
# the Free Software Foundation; either version 2 of the License, or # herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# (at your option) any later version. # der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Please read the file COPYING, README and AUTHORS for more information. # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
# #
.tmpl:
$(AM_V_GEN)sed \
-e "s@:ETCDIR:@${sysconfdir}@" \
-e "s@:DOCDIR:@${docdir}@" \
<$< >$@
SUFFIXES = .tmpl
static_docs = \
Bopm.txt \
Capabilities.txt \
Commands.txt \
Contributing.txt \
FAQ.txt \
GIT.txt \
HowToRelease.txt \
Modes.txt \
PAM.txt \
Platforms.txt \
Protocol.txt \
README-AUX.txt \
README-BeOS.txt \
README-Interix.txt \
RFC.txt \
Services.txt \
SSL.txt
doc_templates = sample-ngircd.conf.tmpl
generated_docs = sample-ngircd.conf
toplevel_docs = ../AUTHORS ../COPYING ../ChangeLog ../INSTALL ../NEWS ../README
SUBDIRS = src SUBDIRS = src
EXTRA_DIST = $(static_docs) $(doc_templates) EXTRA_DIST = FAQ.txt GIT.txt Protocol.txt Platforms.txt README-AUX.txt \
README-BeOS.txt RFC.txt SSL.txt Zeroconf.txt sample-ngircd.conf
CLEANFILES = $(generated_docs)
maintainer-clean-local: maintainer-clean-local:
rm -f Makefile Makefile.in rm -f Makefile Makefile.in
all: $(generated_docs) docdir = $(datadir)/doc/$(PACKAGE)
install-data-hook: $(static_docs) $(toplevel_docs) $(generated_docs) documents = $(EXTRA_DIST) ../AUTHORS ../COPYING ../ChangeLog ../INSTALL \
$(MKDIR_P) -m 755 $(DESTDIR)$(sysconfdir) ../NEWS ../README
@if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
make install-config; \ install-data-hook:
$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
$(INSTALL) -m 600 -c $(srcdir)/sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; \
fi fi
$(MKDIR_P) -m 755 $(DESTDIR)$(docdir) $(mkinstalldirs) $(DESTDIR)$(docdir)
for f in $(static_docs) $(toplevel_docs); do \ for f in $(documents); do \
$(INSTALL) -m 644 -c $(srcdir)/$$f $(DESTDIR)$(docdir)/; \ $(INSTALL) -m 644 -c $(srcdir)/$$f $(DESTDIR)$(docdir)/; \
done done
for f in $(generated_docs); do \
$(INSTALL) -m 644 -c $$f $(DESTDIR)$(docdir)/; \
done
install-config:
$(INSTALL) -m 600 -c sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf
@echo; \
echo " ** NOTE: Installed sample configuration file:"; \
echo " ** \"$(DESTDIR)$(sysconfdir)/ngircd.conf\""; \
echo
uninstall-hook: uninstall-hook:
rm -rf $(DESTDIR)$(docdir) rm -rf $(DESTDIR)$(docdir)
@if cmp --silent sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; then \
make uninstall-config; \
else \
echo; \
echo " ** NOTE: Not uninstalling changed configuration file:"; \
echo " ** \"$(DESTDIR)$(sysconfdir)/ngircd.conf\""; \
echo; \
fi
uninstall-config:
rm -f $(DESTDIR)$(sysconfdir)/ngircd.conf
srcdoc: srcdoc:
make -C src srcdoc make -C src srcdoc
.PHONY: install-config uninstall-config srcdoc
# -eof- # -eof-

View File

@@ -1,89 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2014 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Modes.txt --
This document lists the different user modes, channel modes, and channel
user modes that ngIRCd supports.
I. User Modes
~~~~~~~~~~~~~
User modes are attributes a user has in the network, regardless of the
channels he is using at the moment.
mode since description
a 0.3.0 User is away.
b 20 User blocks private messages and notices.
B 20 User is flagged as a "bot".
c 17 IRC operator wants to receive connect/disconnect NOTICEs.
C 19 Only users that share a channel are allowed to send messages.
F 22 Relaxed flood protection (only settable by IRC Operators).
i 0.0.1 User is "invisible".
o 0.0.1 User is IRC operator.
q 20 User is protected, can not be kicked from a channel.
r 0.0.1 User is restricted.
R (1) 19 User is registered (e.g. by NickServ).
s 0.4.0 User wants to receive server notices.
w 0.11.0 User wants to receive WALLOPS messages.
x 17 Hostname of this user is "cloaked".
II. Channel Modes
~~~~~~~~~~~~~~~~~
Channel modes are attributes of specific channels which are valid for all
users joined (or trying to join) to this channel. Some modes add and remove
users to lists (e.g. "invite list", "ban list"), others have parameters
(like "channel key"), most are simple flags (like "moderated").
mode since description
b 0.5.0 Add/remove a host mask to the ban list.
e 19 Add/remove a host mask to the exception list.
i 0.5.0 Channel is "invite only".
I 0.5.0 Add/remove a host mask to the invite list.
k 0.6.0 Channel has a "key" (a password).
l 0.6.0 Channel has a user limit.
m 0.3.0 Channel is moderated, only "voiced" users can send messages.
M 20 Only registered users (and IRC Ops) can send messages.
n 0.3.0 Channel doesn't allow messages of users not being members.
O 18 Only IRC operators are allowed to join this channel.
P 0.5.0 Channel is "persistent".
Q 20 Nobody can be kicked from the channel.
r (1) 19 Channel is "registered" (e.g. by ChanServ).
R 19 Only registered users are allowed to join this channel.
s 0.9.0 Channel is "secret".
t 0.3.0 Only ChanOps are allowed to modify the channel topic.
V 20 Channel doesn't allow invites.
z 16 Only users connected via SSL are allowed to join the channel.
III. Channel User Modes
~~~~~~~~~~~~~~~~~~~~~~~
Channel user modes are attributes that a particular user has in a specific
channel of which he is a member.
mode since description
q 20 User is channel owner can only be set by a service, other
owner and irc op. Can promote other users to q, a, o, h, v.
a 20 User is channel admin and can promote other users to v, h, o
o 0.2.0 User is channel operator and can op/kick/... other members.
h 20 User is half op and can set channel modes imntvIbek and kick
voiced and normal users.
v 0.2.0 User is "voiced" and can speak even if channel is moderated.
Notes
~~~~~
(1) This mode is not set by ngIRCd itself but by services. ngIRCd handles
the mode transparently and possibly adjusts its behaviour.

View File

@@ -1,45 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2013 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- PAM.txt --
ngIRCd can optionally be compiled to use PAM, the Pluggable Authentication
Modules library, for user authentication. When compiled with PAM support,
ngIRCd will authenticate all users connecting to the daemon using the
configured PAM modules in an asynchronous child process.
To enable PAM, you have to pass the command line parameter "--with-pam" to
the "configure" script. Please see the PAM documentation ("man 7 pam") for
details and information about configuring PAM and its individual modules.
A very simple -- and quite useless ;-) -- example would be:
/etc/pam.d/ngircd:
auth required pam_debug.so
Here the "pam_debug" module will be called each time a client connects to
the ngIRCd and has sent its PASS, NICK, and USER commands.
Please note ONE VERY IMPORTANT THING:
All the PAM modules are executed with the privileges of the user ngIRCd
is running as. Therefore a lot of PAM modules aren't working as expected,
because they need root privileges ("pam_unix", for example)!
Only PAM modules not(!) requiring root privileges (such as "pam_pgsql",
"pam_mysql", "pam_opendirectory" ...) can be used in conjunction with ngIRCd.
More Examples:
* Use an own "password file" for ngIRCd:
Note: you can use the htpasswd(1) utility of Apache to manage password
files used by pam_pwdfile, see "man htpasswd"!
/etc/pam.d/ngircd:
auth required pam_pwdfile.so pwdfile=/etc/ngircd/ngircd.passwd

View File

@@ -1,22 +1,22 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2013 Alexander Barton and Contributors. (c)2001-2006 Alexander Barton
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
-- Platforms.txt -- -- Platforms.txt --
This file lists the status of all platforms on which ngIRCd has been tested. This file lists the status of all platforms on which the ngIRCd has been
Included is the date and version of the last test and the name of the tester tested. Included is the date and version of the last "official" test and
or maintainer. the name of the tester/maintainer.
If you successfully compiled and tested ngIRCd on a platform that isn't listed If you successfully compiled and tested ngIRCd on a platform that isn't
here, please write to the mailing list so that this list can be updated. The listed here, please contact Alexander Barton, <alex@barton.de>, so that this
script "./contrib/platformtest.sh" should output a summary that is suitable list can be updated. Thanks for your help!
for inclusion here. Thanks for your help!
the executable works ("runs") as expected --+ the executable works ("runs") as expected --+
@@ -24,101 +24,54 @@ for inclusion here. Thanks for your help!
ngIRCd compiles ("make") --+ | | ngIRCd compiles ("make") --+ | |
./configure works --+ | | | ./configure works --+ | | |
| | | | | | | |
Platform Compiler ngIRCd Date Tester C M T R * Platform Compiler ngIRCd Date Tester C M T R See
--------------------------- ------------ ---------- -------- ------ - - - - --- --------------------------- ------------ ---------- -------- ------ - - - - ---
alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y 3 alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
armv6l/unk./linux-gnueabi gcc 4.7.2 20.2 13-03-08 goetz Y Y Y Y 5
armv6l/unk./linux-gnueabihf gcc 4.6.3 21~rc2 13-10-26 pi Y Y Y Y 5
armv7l/unk./linux-gnueabi gcc 4.4.3 19.1 12-04-29 goetz Y Y Y Y 5
armv7l/unk./linux-gnueabihf gcc 4.8.2 21.1 14-07-15 goetz Y Y Y Y 5
hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y
hppa/unknown/openbsd5.4 gcc 4.2.1 21 13-11-10 alex Y Y Y Y 3
hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
hppa2.0/unknown/linux-gnu gcc 3.3.5 13~rc1 08-12-02 alex Y Y Y Y hppa2.0/unknown/linux-gnu gcc 3.3.5 0.9.x-CVS 05-06-27 alex Y Y Y Y
hppa2.0w-hp-hpux11.11 gcc 4.2.3 14.1 09-07-22 goetz Y Y Y Y
i386/apple/darwin9.7.0 gcc 4.0.1 14.1 09-08-04 alex Y Y Y Y 3
i386/apple/darwin10.8.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y 3
i386/apple/darwin11.3.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y 3
i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y
i386/pc/solaris2.11 gcc 4.5.2 21~rc2 13-10-27 alex Y Y N Y 4 i386/pc/solaris2.11 gcc 3.4.3 CVSHEAD 06-08-04 alex Y Y Y Y
i386/unknown/freebsd5.2.1 gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y i386/unknown/freebsd5.2.1 gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
i386/unknown/freebsd6.2 gcc 3.4.6 20~rc1 12-11-13 alex Y Y Y Y 3 i386/unknown/freebsd6.0 gcc 3.4.4 0.10.0-p1 06-08-04 alex Y Y Y Y (3)
i386/unknown/freebsd7.3 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y 3 i386/unknown/freebsd6.1 gcc 3.4.4 CVSHEAD 06-05-07 fw Y Y Y Y (3)
i686/pc/minix gcc 4.4.6 21~rc2 13-10-27 alex Y Y N N i386/unknown/gnu0.3 gcc 3.3.3 0.8.0 04-05-30 alex Y Y n Y
i686/unknown/gnu0.3 gcc 4.4.5 19 12-02-29 alex Y Y Y Y i386/unknown/netbsdelf1.6.1 gcc 2.95.3 CVSHEAD 04-02-24 alex Y Y Y Y
i686/unknown/gnu0.5 gcc 4.8.2 21 14-02-09 alex Y Y Y Y i386/unknown/netbsdelf3.0.1 gcc 3.3.3 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
i686/unkn./kfreebsd7.2-gnu gcc 4.3.4 15 09-12-02 alex Y Y Y Y 3 i386/unknown/openbsd3.9 gcc 3.3.5 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
i386/unknown/netbsdelf1.5.2 egcs-1.1.2 21 13-11-25 goetz Y Y N Y i686/pc/cygwin gcc 3.3.1 0.8.0 04-05-30 alex Y Y n Y
i386/unknown/netbsdelf1.6.2 gcc 2.95.3 18 11-07-10 goetz Y Y Y Y i686/pc/linux-gnu gcc 2.95.4 0.8.0 04-05-30 alex Y Y Y Y (1)
i386/unknown/netbsdelf3.0.1 gcc 3.3.3 0.10.0-p1 06-08-30 alex Y Y Y Y 3 i686/pc/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y (1)
i386/unknown/netbsdelf4.0 gcc 4.1.2 19 12-02-29 alex Y Y Y Y 3 i386/pc/linux-gnu gcc 4.1.2 0.10.0-p1 06-08-30 alex Y Y Y Y (1)
i386/unknown/netbsdelf5.0.2 gcc 4.1.3 19 12-02-26 alex Y Y Y Y 3 m68k/apple/aux3.1.1 Orig. A/UX 0.7.x-CVS 03-04-22 alex Y Y Y Y (2)
i386/unknown/openbsd3.5 gcc 2.95.3 21 13-11-17 goetz Y Y Y Y 3
i386/unknown/openbsd3.9 gcc 3.3.5 0.10.0-p1 06-08-30 alex Y Y Y Y 3
i386/unknown/openbsd4.1 gcc 3.3.5 16 10-04-11 alex Y Y Y Y 3
i386/unknown/openbsd5.3 gcc 4.2.1 21 13-11-28 goetz Y Y Y Y 3
i386/unknown/openbsd5.4 gcc 4.2.1 21 13-11-28 goetz Y Y Y Y 3
i586/pc/haiku gcc 2.95.3 19.2~138 12-10-11 user Y Y N N
i586/pc/interix3.5 gcc 3.3 19 12-02-29 alex Y Y N Y
i686/pc/cygwin gcc 4.8.2 21 14-01-02 alex Y Y N Y
i686/pc/linux-gnu gcc 2.7.2 21~38 14-01-06 goetz Y Y Y Y 1
i686/pc/linux-gnu gcc 2.95.4 0.8.0 04-05-30 alex Y Y Y Y 1
i686/pc/linux-gnu gcc 3.3.5 14.1 09-08-04 alex Y Y Y Y 1
i386/pc/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y 1
i686/pc/linux-gnu gcc 4.3.2 14.1 09-08-04 alex Y Y Y Y 1
m68k/apple/aux3.0.1 gcc 2.7.2 17 10-11-07 alex Y Y N Y
m68k/apple/aux3.0.1 Orig. A/UX 17 10-11-07 alex Y Y N Y 2
m68k/apple/aux3.1.1 gcc 2.7.2 19 12-02-26 alex Y Y N Y
m68k/apple/aux3.1.1 Orig. A/UX 19 12-02-26 alex Y Y N Y 2
m68k/hp/hp-ux9.10 Orig. HPUX 0.7.x-CVS 03-04-30 goetz Y Y Y Y m68k/hp/hp-ux9.10 Orig. HPUX 0.7.x-CVS 03-04-30 goetz Y Y Y Y
m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ? m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ?
mipsel/unknown/linux-gnu gcc 4.1.2 18 11-07-05 goetz Y Y N Y 1 powerpc/apple/darwin6.5 gcc 3.1 0.7.x-CVS 03-04-23 alex Y Y Y Y
mipsel/unknown/linux-gnu gcc 4.4.5 21 13-11-24 goetz Y Y Y Y 1 powerpc/apple/darwin7.4.0 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
powerpc/apple/darwin6.8 gcc 3.1 21 14-01-03 goetz Y Y Y Y powerpc/apple/darwin7.9.0 gcc 3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
powerpc/apple/darwin7.9.0 gcc 3.3 21.1 14-04-14 goetz Y Y Y Y 3 powerpc/apple/darwin8.1.0 gcc 4.0 0.9.x-CVS 05-06-27 alex Y Y Y Y
powerpc/apple/darwin8.11.0 gcc 4.0.1 18 11-07-02 goetz Y Y Y Y 3
powerpc/apple/darwin9.8.0 gcc 4.0.1 21 14-01-04 goetz Y Y Y Y 3
powerpc/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y powerpc/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
powerpc/unknown/openbsd3.6 gcc 2.95.3 0.10.0 06-10-08 alex Y Y N Y powerpc/unknown/openbsd3.6 gcc 2.95.3 0.10.0 06-10-08 alex Y Y n Y
sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y
sparc/sun/solaris2.7 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y sparc/sun/solaris2.7 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
sparc/unkn./netbsdelf1.6.1 gcc 2.95.3 0.8.0 04-05-30 alex Y Y Y Y sparc/unkn./netbsdelf1.6.1 gcc 2.95.3 0.8.0 04-05-30 alex Y Y Y Y
sparc/unknown/openbsd5.5 gcc 4.2.1 21.1 14-05-03 goetz Y Y Y Y 3
x86_64/apple/darwin10.8.0 gcc 4.2.1 21~rc2 13-10-30 alex Y Y Y Y 3
x86_64/apple/darwin12.3.0 gcc 4.2.1 20.2 13-04-01 alex Y Y Y Y 3
x86_64/apple/darwin13.0.0 A-clang 5.0 21 14-01-02 alex Y Y Y Y 3
x86_64/apple/darwin14.0.0 A-clang 6.0 21.1 14-07-25 goetz Y Y Y Y 3
x86_64/unknown/dragonfly3.4 gcc 4.7.2 21 13-11-12 goetz Y Y N Y 3
x86_64/unknown/freebsd8.4 gcc 4.2.1 21 14-01-02 alex Y Y Y Y 3
x86_64/unknown/freebsd9.1 gcc 4.2.1 21 14-01-02 alex Y Y Y Y 3
x86_64/unkn./freebsd8.1-gnu gcc 4.4.5 19 12-02-26 alex Y Y Y Y 3
x86_64/unknown/linux-gnu clang 3.3 21 14-01-07 alex Y Y Y Y 1
x86_64/unknown/linux-gnu gcc 4.8.2 21 13-12-29 alex Y Y Y Y 1
x86_64/unknown/linux-gnu nwcc 0.8.2 21 13-12-01 goetz Y Y Y Y 1
x86_64/unknown/linux-gnu Open64 21.1 14-03-27 goetz Y Y Y Y 1
x86_64/unknown/linux-gnu Sun C 5.12 21.1 14-03-27 goetz Y Y Y Y 1
x86_64/unknown/linux-gnu tcc 0.9.25 21.1 14-03-27 goetz Y Y Y Y 1
x86_64/unknown/openbsd4.7 gcc 3.3.5 20~rc1 12-02-26 alex Y Y Y Y 3
x86_64/unknown/openbsd4.8 gcc 4.2.1 21 13-12-28 alex Y Y Y Y 3
x86_64/unknown/openbsd5.1 gcc 4.2.1 21 13-12-28 alex Y Y Y Y 3
* Notes Notes
~~~~~~~ ~~~~~
(1) */*/linux-gnu (Linux platforms): (1) i686/pc/linux-gnu:
ngIRCd has been tested with various Linux distributions, such as SuSE, ngIRCd has been tested with various Linux distributions, such as SuSE,
RedHat, Debian, and Gentoo using Kernels 2.2.x, 2.4.x and 2.6.x with RedHat, Debian, and Gentoo using Kernels 2.2.x, 2.4.x and 2.6.x with
various versions of the GNU C compiler (starting with 2.95.x and up to various versions of the GNU C compiler (starting with 2.95.x and up to
version 4.3.x). The eldest glibc used was glibc-2.0.7. ngIRCd compiled version 4.1.x). The eldest glibc used was glibc-2.0.7. ngIRCd compiled
and run on all these systems without problems. and run on all these systems without problems.
Actual Linux kernels (2.6.x) and glibc's support the epoll() IO interface. Actual Linux kernels (2.6.x) and glic's support the epoll() IO interface.
(2) This compiler is an pre-ANSI C compiler, therefore the source code is (2) This compiler is an pre-ANSI C compiler, therefore the source code is
automatically converted using the included ansi2knr tool while building. automatically converted using the included ansi2knr tool while building.
(3) Using the kqueue() IO interface. (3) Using the kqueue() IO interface.
(4) Using the /dev/poll IO interface. --
$Id: Platforms.txt,v 1.18 2006/10/08 14:09:16 alex Exp $
(5) Using the epoll() IO interface.

View File

@@ -1,8 +1,9 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors. (c)2001-2007 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the ngIRCd is free software and published under the
terms of the GNU General Public License. terms of the GNU General Public License.
@@ -81,17 +82,9 @@ The following <serverflags> are defined at the moment:
- H: The server supports the "enhanced server handshake", see section II.2 - H: The server supports the "enhanced server handshake", see section II.2
for a detailed description. for a detailed description.
- M: Changing client "metadata" (hostname, real name, ...) using the
METADATA command is supported.
- 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.
- S: The server supports the SERVICE command (on this link).
- X: Server supports XOP channel modes (owner, admin, halfop) and supports
these user prefixes in CHANINFO commands, for example.
- Z: Compressed server links are supported by the server. - Z: Compressed server links are supported by the server.
Example for a complete <flags> string: "ngircd|0.7.5:CZ". Example for a complete <flags> string: "ngircd|0.7.5:CZ".
@@ -146,17 +139,11 @@ therefore to disconnect the peer prior to registering it in the network.
II.3 Exchange channel-modes, topics, and persistent channels II.3 Exchange channel-modes, topics, and persistent channels
Command: CHANINFO Command: CHANINFO
Parameters: <channel> +<modes> [[<key> <limit>] <topic>] Parameters: <channel> +<modes> <key> <limit> [<topic>]
Used by: servers only Used by: servers only
CHANINFO is used by servers to inform each other about a channel: its CHANINFO is used by servers to inform each other about a channel: its
modes, channel key, user limits and its topic. The parameter combination modes, channel key, user limits and its topic. <topic> is optional.
<key> and <limit> is optional, as well as the <topic> parameter, so that
there are three possible forms of this command:
CHANINFO <channel> +<modes>
CHANINFO <channel> +<modes> <topic>
CHANINFO <channel> +<modes> <key> <limit> <topic>
If the channel already exists on the server receiving the CHANINFO command, If the channel already exists on the server receiving the CHANINFO command,
it only adopts the <modes> (or the <topic>) if there are no modes (or topic) it only adopts the <modes> (or the <topic>) if there are no modes (or topic)
@@ -173,84 +160,5 @@ a channel has no user limit (the parameter <modes> doesn't list the "l"
channel mode). In this case <limit> should be "0". channel mode). In this case <limit> should be "0".
II.4 Update webchat/proxy client information --
$Id: Protocol.txt,v 1.14 2007/11/21 12:16:35 alex Exp $
Command: WEBIRC
Parameters: <password> <username> <hostname> <ip-address>
Used by: unregistered clients only
The WEBIRC command is used by some Web-to-IRC gateways to set the correct
user name and host name of users instead of their own. It must be the very
first command sent to the server, even before USER and NICK commands!
The <password> must be set in the server configuration file to prevent
unauthorized clients to fake their identity; it is an arbitrary string.
II.5 Client character encoding conversion
Command: CHARCONV
Parameters: <client-charset>
Used by: registered clients
Replies: RPL_IP_CHARCONV, ERR_IP_CHARCONV
A client can set its character set encoding using the CHARCONV command:
after receiving such a command, the server translates all message data
received from the client using the set <client-charset> to the server
encoding (UTF-8), and all message data which is to be sent to the client
from the server encoding (UTF-8) to <client-charset>.
The list of supported client character sets is implementation dependent.
If a client sets its <client-charset> to the server encoding (UTF-8),
it disables all conversions; the connection behaves as if no CHARCONV
command has been sent at all in this session.
II.6 Update client "metadata"
Command: METADATA
Parameters: <target> <key> <value>
Used by: servers only
The METADATA command is used on server-links to update "metadata" information
of clients, like the hostname, the info text ("real name"), or the user name.
The server updates its client database according to the received <key> and
<value> parameters, and passes the METADATA command on to all the other
servers in the network that support this command (see section II.1 "Register
new server link", <serverflag> "M"), even if it doesn't support the given
<key> itself: unknown <key> names are ignored silently!
The following <key> names are defined:
- "accountname": the account name of a client (can't be empty)
- "certfp": the certificate fingerprint of a client (can't be empty)
- "cloakhost": the cloaked hostname of a client
- "host": the hostname of a client (can't be empty)
- "info": info text ("real name") of a client
- "user": the user name of a client (can't be empty)
III. Numerics used by IRC+ Protocol
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The IRC+ protocol uses numerics in the range 800-899 which aren't used by
RFC 2812 and hopefully don't clash with other implementations ...
Numerics 800-849 are used for status and success messages, and numerics
850-899 are failure and error messages.
III.1 IRC+ status and success numerics
801 - RPL_IP_CHARCONV
%1 :Client encoding set"
%1 client character set
III.2 IRC+ failure and error numerics
851 - ERR_IP_CHARCONV
:Can't initialize client encoding

View File

@@ -22,7 +22,7 @@ The following software packages are needed:
- GNU sed - GNU sed
Source: Source:
http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
http://arthur.barton.de/pub/unix/aux/tools/sed-3.02.tar.gz ftp://arthur.barton.de/pub/unix/aux/tools/sed-3.02.tar.gz
A/UX comes with /bin/sed which isn't supporting all functions needed A/UX comes with /bin/sed which isn't supporting all functions needed
by GNU automake/autoconf. by GNU automake/autoconf.
@@ -34,10 +34,10 @@ The following software packages are needed:
- libUTIL.a - libUTIL.a
Source: Source:
ftp://ftp.mayn.de/pub/really_old_stuff/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz> ftp://ftp.mayn.de/pub/really_old_stuff/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz>
http://arthur.barton.de/pub/unix/aux/libraries/libUTIL-2.1.tar.gz ftp://arthur.barton.de/pub/unix/aux/libraries/libUTIL-2.1.tar.gz
This library contains functions that are common on other UNIX This library contains functions that are common on other UNIX
systems but not on A/UX e.g. memmove(), strerror() and strdup(). systems but not on A/UX e.g. memmove(), strerror() und strdup().
After installation of these packages just do a "./configure" and "make" to After installation of these packages just do a "./configure" and "make" to
@@ -50,7 +50,7 @@ A few hints in case of errors:
(so 'configure' uses its own shell script) or use a fully functionable one. (so 'configure' uses its own shell script) or use a fully functionable one.
There's at least one binary "out there" causing problems. The one There's at least one binary "out there" causing problems. The one
of the GNU fileutils works fine: of the GNU fileutils works fine:
http://arthur.barton.de/pub/unix/aux/tools/fileutils-4.0.tar.gz ftp://arthur.barton.de/pub/unix/aux/tools/fileutils-4.0.tar.gz
- The precompiled binary of the old 'bash' shouldn't be installed within - The precompiled binary of the old 'bash' shouldn't be installed within
/bin (better do this in /usr/local/bin) because 'configure' would /bin (better do this in /usr/local/bin) because 'configure' would
@@ -60,7 +60,7 @@ A few hints in case of errors:
the 'config.status' script. Better rename /bin/sh to /bin/sh.AUX and the 'config.status' script. Better rename /bin/sh to /bin/sh.AUX and
replace it by a symbolic link to /bin/ksh (ln -s /bin/ksh /bin/sh as replace it by a symbolic link to /bin/ksh (ln -s /bin/ksh /bin/sh as
root). root).
These procedure shouldn't cause you into problems and is recommended These procedure should'nt cause you into problems and is recommended
even if you don't use ngIRCd. even if you don't use ngIRCd.
-- --

View File

@@ -24,7 +24,7 @@ mit diesem Fehler ab:
select(): Bad file descriptor! select(): Bad file descriptor!
Es sieht leider so aus, als ob das select() von BeOS nicht mit File-Handles Es sieht leider so aus, als ob das select() von BeOS nicht mit File-Handles
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asynchron von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asyncron
gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu
obiger Meldung. obiger Meldung.

View File

@@ -1,44 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- README-Interix.txt --
ngIRCd release 15 has successfully been tested on Microsoft Windows XP
Professional using the Services for UNIX (SFU) version 3.5 and Microsoft
Windows 7 with the bundled Subsystem for UNIX Applications (SUA).
SFU are supported on Windows 2000, Windows 2000 Server, Windows XP, and
Windows Server 2003. SUA is supported on Windows Server 2003 R2, Windows
Server 2008 & 2008 R2, Windows Vista, and Windows 7 -- so ngIRCd should be
able to run on all of these platforms.
But please note that two things:
1. Don't use the poll() IO API
The poll() API function is not fully implemented by SFU/SUA and therefore
can't be used by ngIRCd -- which normally would be the default. Please see
<http://www.suacommunity.com/faqs.aspx> section 4.25 for details:
"If you do try to use the poll() API your program will block on the
API call forever. You must direct your program to build using the
select() API."
So when running the ./configure script, you HAVE TO DISABLE poll() support:
./configure --without-poll
ngIRCd then defaults to using the select() API function which works fine.
2. Use GNU make(1)
Starting with ngIRCd 18, our build system doesn't work with the default
make(1) binary of Interix, you should use GNU make instead (tested with
version 3.82 built from source).

View File

@@ -1,7 +1,7 @@
ngIRCd - Next Generation IRC Server ngIRCd - Next Generation IRC Server
(c)2001-2008 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,71 +10,17 @@
-- SSL.txt -- -- SSL.txt --
ngIRCd supports SSL/TLSv1 encrypted connections using the OpenSSL or GnuTLS ngIRCd actually doesn't support secure connections for client-server or
libraries. Both encrypted server-server links as well as client-server links server-server links using SSL, the Secure Socket Layer, by itself. But you can
are supported. use the stunnel(8) command to make this work.
SSL is a compile-time option which is disabled by default. Use one of these
options of the ./configure script to enable it:
--with-openssl enable SSL support using OpenSSL
--with-gnutls enable SSL support using GnuTLS
You also need a key/certificate, see below for how to create a self-signed one.
From a feature point of view, ngIRCds support for both libraries is
comparable. The only major difference (at this time) is that ngircd with gnutls
does not support password protected private keys.
Configuration
~~~~~~~~~~~~~
To enable SSL connections a separate port must be configured: it is NOT
possible to handle unencrypted and encrypted connections on the same port!
This is a limitation of the IRC protocol ...
You have to set (at least) the following configuration variables in the
[SSL] section of ngircd.conf(5): Ports, KeyFile, and CertFile.
Now IRC clients are able to connect using SSL on the configured port(s).
(Using port 6697 for encrypted connections is common.)
To enable encrypted server-server links, you have to additionally set
SSLConnect to "yes" in the corresponding [SERVER] section.
Creating a self-signed certificate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
OpenSSL:
Creating a self-signed certificate and key:
$ openssl req -newkey rsa:2048 -x509 -keyout server-key.pem -out server-cert.pem -days 1461
Create DH parameters (optional):
$ openssl dhparam -2 -out dhparams.pem 4096
GnuTLS:
Creating a self-signed certificate and key:
$ certtool --generate-privkey --bits 2048 --outfile server-key.pem
$ certtool --generate-self-signed --load-privkey server-key.pem --outfile server-cert.pem
Create DH parameters (optional):
$ certtool --generate-dh-params --bits 4096 --outfile dhparams.pem
Alternate approach using stunnel(1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Alternatively (or if you are using ngIRCd compiled without support
for GnuTLS/OpenSSL), you can use external programs/tools like stunnel(1) to
get SSL encrypted connections:
<http://stunnel.mirt.net/> <http://stunnel.mirt.net/>
<http://www.stunnel.org/> <http://www.stunnel.org/>
Stefan Sperling (stefan at binarchy dot net) mailed the following text as a Stefan Sperling (stefan at binarchy dot net) mailed me the following text as a
short "how-to", thanks Stefan! short "how-to", thanks Stefan!
=== snip === === snip ===
! This guide applies to stunnel 4.x ! ! This guide applies to stunnel 4.x !
@@ -102,7 +48,11 @@ short "how-to", thanks Stefan!
That's it. That's it.
Don't forget to activate ssl support in your irc client ;) Don't forget to activate ssl support in your irc client ;)
The main drawback of this approach compared to using builtin ssl
is that from ngIRCds point of view, all ssl-enabled client connections will
originate from the host running stunnel.
=== snip === === snip ===
Probably ngIRCd will include support for SSL in the future ...
--
$Id: SSL.txt,v 1.2 2004/12/27 01:11:40 alex Exp $

View File

@@ -1,144 +0,0 @@
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
(c)2001-2011 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Services.txt --
ngIRCd doesn't implement a "special IRC services interface", but services
acting as a "regular servers" ("pseudo servers") are supported, either
using the IRC protocol as defined in RFC 1459 or RFC 2812.
Support for Services has been tested using
- Anope 1.9.8 or later (<http://www.anope.org/>)
- Atheme 7.0.2 or later (<http://www.atheme.net>)
- "IRC Services" 5.1.x by Andrew Church (<http://achurch.org/services/>)
This document describes setting up ngIRCd and these services.
Please let us know if you are successfully using other IRC service packages or
which problems you encounter -- thanks!
Setting up ngIRCd
~~~~~~~~~~~~~~~~~
The "pseudo server" handling the IRC services is configured as a regular
remote server in the ngircd.conf(5). In addition the variable "ServiceMask"
should be set, enabling this ngIRCd to recognize the "pseudo users" as IRC
services instead of regular IRC users.
Example:
[SERVER]
Name = services.irc.net
MyPassword = 123abc
PeerPassword = 123abc
ServiceMask = *Serv
Setting up Anope 1.9.x & 2.x
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anope 1.9.8 or later (<http://www.anope.org/>) can be used with ngIRCd using
the "ngircd" protocol module.
At least the following settings have to be tweaked, in addition to all the
settings marked as required by Anope:
In conf/services.conf:
define
{
name = "services.host"
value = "services.irc.net"
}
uplink
{
host = "server.irc.net"
port = 6667
password = "123abc"
}
# Load ngIRCd protocol module
module
{
name = "ngircd"
}
networkinfo
{
# Must be set to the "MaxNickLength" setting of ngIRCd!
nicklen = 9
# When not using "strict mode", which is the default:
userlen = 20
chanlen = 50
}
In conf/nickserv.conf:
module
{
name = "nickserv"
# not required if you are running ngIRCd with a higher nickname limit
# ("MaxNickLength") than 11 characters, but REQUIRED by default!
guestnickprefix = "G-"
}
Setting up Atheme 7.0.2 or later
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Atheme 7.0.2 or later (<http://www.atheme.net>) may be used with ngIRCd using
the "ngircd" protocol module.
The following settings need to be in atheme.conf:
loadmodule "modules/protocol/ngircd";
uplink "server.irc.net" {
password = "123abc";
port = 6667;
};
The documentation of Atheme can be found in the doc/ directory of the
Atheme source distribution.
Setting up IRC Services 5.1.x
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
IRC Services 5.1.3 and above can be used with ngIRCd using the "rfc1459"
protocol module.
Please note that versions up to and including 5.1.3 contain a bug that
sometimes causes IRC Services to hang on startup. There are two workarounds:
a) send the services process a HUP signal ("killall -HUP ircservices")
b) apply this patch to the IRC Services source tree:
<http://arthur.barton.de/pub/ngircd/contrib/IRCServices513-FlushBuffer.patch>
At least the following settings have to be tweaked, in addition to all the
settings marked as required by IRC Services:
In ircservices.conf:
Variable Example value
RemoteServer server.irc.net 6667 "123abc"
ServerName "services.irc.net"
LoadModule protocol/rfc1459
In modules.conf:
Module protocol/rfc1459
The documentation of IRC Services can be found here:
<http://www.ircservices.za.net/docs/>

40
doc/Zeroconf.txt Normal file
View File

@@ -0,0 +1,40 @@
ngIRCd - Next Generation IRC Server
(c)2001-2006 Alexander Barton
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- Zeroconf.txt --
ngIRCd supports one aspect of Zeroconf Networking[1]: Multicast DNS (mDNS[2])
with DNS Service Discovery (DNS-SD[3]).
To use this features you can use one of two APIs:
a) Apple "Bonjour" API as used by Mac OS X,
b) the Howl[4] Zeroconf library or the Howl compatibility layer
of the newer Avahi[5] library.
When calling the configure script using the "--with-zeroconf" switch the
avalable API will be autodetected and the required additional libraries will
be linked to the ngircd binary as required.
ngIRCd then registers a DNS-SD service for each port it is listening on using
the service type "_ircu._tcp.".
Links:
[1] http://www.zeroconf.org/
[2] http://www.multicastdns.org/
[3] http://www.dns-sd.org/
[4] http://www.porchdogsoft.com/products/howl/
[5] http://avahi.org/
--
$Id: Zeroconf.txt,v 1.2 2006/08/03 14:37:29 alex Exp $

224
doc/sample-ngircd.conf Normal file
View File

@@ -0,0 +1,224 @@
# $Id: sample-ngircd.conf,v 1.44 2008/01/07 23:02:29 alex Exp $
#
# This is a sample configuration file for the ngIRCd, which must be adepted
# to the local preferences and needs.
#
# Comments are started with "#" or ";".
#
# A lot of configuration options in this file start with a ";". You have
# to remove the ";" in front of each variable to actually set a value!
# The disabled variables are shown with example values for completeness.
#
# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
# server interprets the configuration file as expected!
#
[Global]
# The [Global] section of this file is used to define the main
# configuration of the server, like the server name and the ports
# on which the server should be listening.
# Server name in the IRC network, must contain at least one dot
# (".") and be unique in the IRC network. Required!
Name = irc.the.net
# Info text of the server. This will be shown by WHOIS and
# LINKS requests for example.
Info = Server Info Text
# Global password for all users needed to connect to the server
;Password = abc
# Information about the server and the administrator, used by the
# ADMIN command. Not required by server but by RFC!
;AdminInfo1 = Description
;AdminInfo2 = Location
;AdminEMail = admin@irc.server
# Ports on which the server should listen. There may be more than
# one port, separated with ",". (Default: 6667)
;Ports = 6667, 6668, 6669
# 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
# be shown to all users connecting to the server:
;MotdFile = /usr/local/etc/ngircd.motd
# A simple Phrase (<256 chars) if you don't want to use a motd file.
# If it is set no MotdFile will be read at all.
;MotdPhrase = "Hello world!"
# User ID under which the server should run; you can use the name
# of the user or the numerical ID. ATTENTION: For this to work the
# server must have been started with root privileges! In addition,
# the configuration and MOTD files must be readable by this user,
# otherwise RESTART and REHASH won't work!
;ServerUID = 65534
# Group ID under which the ngircd should run; you can use the name
# of the group or the numerical ID. ATTENTION: For this to work the
# server must have been started with root privileges!
;ServerGID = 65534
# A directory to chroot in when everything is initialized. It
# doesn't need to be populated if ngIRCd is compiled as a static
# binary. By default ngIRCd won't use the chroot() feature.
# ATTENTION: For this to work the server must have been started
# with root privileges!
;ChrootDir = /var/empty
# This tells ngircd to write its current process id to a file.
# Note that the pidfile is written AFTER chroot and switching uid,
# i. e. the Directory the pidfile resides in must be writeable by
# the ngircd user and exist in the chroot directory.
;PidFile = /var/run/ngircd/ngircd.pid
# After <PingTimeout> seconds of inactivity the server will send a
# PING to the peer to test whether it is alive or not.
;PingTimeout = 120
# If a client fails to answer a PING with a PONG within <PongTimeout>
# seconds, it will be disconnected by the server.
;PongTimeout = 20
# The server tries every <ConnectRetry> seconds to establish a link
# to not yet (or no longer) connected servers.
;ConnectRetry = 60
# Should IRC Operators be allowed to use the MODE command even if
# they are not(!) channel-operators?
;OperCanUseMode = no
# Mask IRC Operator mode requests as if they were coming from the
# server? (This is a compatibility hack for ircd-irc2 servers)
;OperServerMode = no
# Allow Pre-Defined Channels only (see Section [Channels])
;PredefChannelsOnly = no
# Don't do any DNS lookups when a client connects to the server.
;NoDNS = no
# allow both ipv4 and ipv6 clients to connect by opening both
# ipv4 and ipv6 sockets
;ListenIPv6 = yes
;ListenIPv4 = yes
# try to connect to other irc servers using ipv4 and ipv6, if possible
;ConnectIPv6 = yes
;ConnectIPv4 = yes
# Maximum number of simultaneous connection the server is allowed
# to accept (0: unlimited):
;MaxConnections = 0
# 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):
;MaxJoins = 10
# Maximum length of an user nick name (Default: 9, as in RFC 2812).
# Please note that all servers in an IRC network MUST use the same
# maximum nick name length!
;MaxNickLength = 9
[Operator]
# [Operator] sections are used to define IRC Operators. There may be
# more than one [Operator] block, one for each local operator.
# ID of the operator (may be different of the nick name)
;Name = TheOper
# Password of the IRC operator
;Password = ThePwd
# Optional Mask from which /OPER will be accepted
;Mask = *!ident@somewhere.example.com
[Operator]
# More [Operator] sections, if you like ...
[Server]
# Other servers are configured in [Server] sections. If you
# configure a port for the connection, then this ngircd tries to
# connect to to the other server on the given port; if not it waits
# for the other server to connect.
# There may be more than one server block, one for each server.
#
# Server Groups:
# The ngIRCd allows "server groups": You can assign an "ID" to every
# server with which you want this ngIRCd to link. If a server of a
# group won't answer, the ngIRCd tries to connect to the next server
# in the given group. But the ngircd never tries to connect to two
# servers with the same group ID.
# IRC name of the remote server, must match the "Name" variable in
# the [Global] section of the other server (when using ngIRCd).
;Name = irc2.the.net
# Internet host name or IP address of the peer (only required when
# this server should establish the connection).
;Host = connect-to-host.the.net
# IP address to use as _source_ address for the connection. if unspecified,
# ngircd will let the operating system pick an address.
;Bind = 10.0.0.1
# Port of the server to which the ngIRCd should connect. If you
# assign no port the ngIRCd waits for incoming connections.
;Port = 6667
# Own password for the connection. This password has to be configured
# as "PeerPassword" on the other server.
;MyPassword = MySecret
# Foreign password for this connection. This password has to be
# configured as "MyPassword" on the other server.
;PeerPassword = PeerSecret
# Group of this server (optional)
;Group = 123
# Set the "Passive" option to "yes" if you don't want this ngIRCd to
# connect to the configured peer (same as leaving the "Port" variable
# empty). The advantage of this option is that you can actually configure
# a port an use the IRC command CONNECT more easily to manually connect
# this specific server later.
;Passive = no
[Server]
# More [Server] sections, if you like ...
[Channel]
# Pre-defined channels can be configured in [Channel] sections.
# Such channels are created by the server when starting up and even
# persist when there are no more members left.
# Persistent channels are marked with the mode 'P', which can be set
# and unset by IRC operators like other modes on the fly.
# There may be more than one [Channel] block, one for each channel.
# Name of the channel
;Name = #TheName
# Topic for this channel
;Topic = a great topic
# Initial channel modes
;Modes = tnk
# initial channel password (mode k)
;Key = Secret
# maximum users per channel (mode l)
;MaxUsers = 23
[Channel]
# More [Channel] sections, if you like ...
# -eof-

View File

@@ -1,389 +0,0 @@
#
# This is a sample configuration file for the ngIRCd IRC daemon, which must
# be customized to the local preferences and needs.
#
# Comments are started with "#" or ";".
#
# A lot of configuration options in this file start with a ";". You have
# to remove the ";" in front of each variable to actually set a value!
# The disabled variables are shown with example values for completeness only
# and the daemon is using compiled-in default settings.
#
# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
# server interprets the configuration file as expected!
#
# Please see ngircd.conf(5) for a complete list of configuration options
# and their descriptions.
#
[Global]
# The [Global] section of this file is used to define the main
# configuration of the server, like the server name and the ports
# on which the server should be listening.
# These settings depend on your personal preferences, so you should
# make sure that they correspond to your installation and setup!
# Server name in the IRC network, must contain at least one dot
# (".") and be unique in the IRC network. Required!
Name = irc.example.net
# Information about the server and the administrator, used by the
# ADMIN command. Not required by server but by RFC!
;AdminInfo1 = Description
;AdminInfo2 = Location
;AdminEMail = admin@irc.server
# Text file which contains the ngIRCd help text. This file is required
# to display help texts when using the "HELP <cmd>" command.
;HelpFile = :DOCDIR:/Commands.txt
# Info text of the server. This will be shown by WHOIS and
# LINKS requests for example.
Info = Server Info Text
# Comma separated list of IP addresses on which the server should
# listen. Default values are:
# "0.0.0.0" or (if compiled with IPv6 support) "::,0.0.0.0"
# so the server listens on all IP addresses of the system by default.
;Listen = 127.0.0.1,192.168.0.1
# Text file with the "message of the day" (MOTD). This message will
# be shown to all users connecting to the server:
;MotdFile = :ETCDIR:/ngircd.motd
# A simple Phrase (<256 chars) if you don't want to use a motd file.
;MotdPhrase = "Hello world!"
# The name of the IRC network to which this server belongs. This name
# is optional, should only contain ASCII characters, and can't contain
# spaces. It is only used to inform clients. The default is empty,
# so no network name is announced to clients.
;Network = aIRCnetwork
# Global password for all users needed to connect to the server.
# (Default: not set)
;Password = abc
# This tells ngIRCd to write its current process ID to a file.
# Note that the pidfile is written AFTER chroot and switching the
# user ID, e.g. the directory the pidfile resides in must be
# writable by the ngIRCd user and exist in the chroot directory.
;PidFile = /var/run/ngircd/ngircd.pid
# Ports on which the server should listen. There may be more than
# one port, separated with ",". (Default: 6667)
;Ports = 6667, 6668, 6669
# Group ID under which the ngIRCd should run; you can use the name
# of the group or the numerical ID. ATTENTION: For this to work the
# server must have been started with root privileges!
;ServerGID = 65534
# User ID under which the server should run; you can use the name
# of the user or the numerical ID. ATTENTION: For this to work the
# server must have been started with root privileges! In addition,
# the configuration and MOTD files must be readable by this user,
# otherwise RESTART and REHASH won't work!
;ServerUID = 65534
[Limits]
# Define some limits and timeouts for this ngIRCd instance. Default
# values should be safe, but it is wise to double-check :-)
# The server tries every <ConnectRetry> seconds to establish a link
# to not yet (or no longer) connected servers.
;ConnectRetry = 60
# Number of seconds after which the whole daemon should shutdown when
# no connections are left active after handling at least one client
# (0: never, which is the default).
# This can be useful for testing or when ngIRCd is started using
# "socket activation" with systemd(8), for example.
;IdleTimeout = 0
# Maximum number of simultaneous in- and outbound connections the
# server is allowed to accept (0: unlimited):
;MaxConnections = 0
# 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):
;MaxJoins = 10
# Maximum length of an user nickname (Default: 9, as in RFC 2812).
# Please note that all servers in an IRC network MUST use the same
# maximum nickname length!
;MaxNickLength = 9
# Maximum number of channels returned in response to a /list
# command (0: unlimited):
;MaxListSize = 100
# After <PingTimeout> seconds of inactivity the server will send a
# PING to the peer to test whether it is alive or not.
;PingTimeout = 120
# If a client fails to answer a PING with a PONG within <PongTimeout>
# seconds, it will be disconnected by the server.
;PongTimeout = 20
[Options]
# Optional features and configuration options to further tweak the
# behavior of ngIRCd. If you want to get started quickly, you most
# probably don't have to make changes here -- they are all optional.
# List of allowed channel types (channel prefixes) for newly created
# channels on the local server. By default, all supported channel
# types are allowed. Set this variable to the empty string to disallow
# creation of new channels by local clients at all.
;AllowedChannelTypes = #&+
# Are remote IRC operators allowed to control this server, e.g.
# use commands like CONNECT, SQUIT, DIE, ...?
;AllowRemoteOper = no
# A directory to chroot in when everything is initialized. It
# doesn't need to be populated if ngIRCd is compiled as a static
# binary. By default ngIRCd won't use the chroot() feature.
# ATTENTION: For this to work the server must have been started
# with root privileges!
;ChrootDir = /var/empty
# Set this hostname for every client instead of the real one.
# Use %x to add the hashed value of the original hostname.
;CloakHost = cloaked.host
# Use this hostname for hostname cloaking on clients that have the
# user mode "+x" set, instead of the name of the server.
# Use %x to add the hashed value of the original hostname.
;CloakHostModeX = cloaked.user
# The Salt for cloaked hostname hashing. When undefined a random
# hash is generated after each server start.
;CloakHostSalt = abcdefghijklmnopqrstuvwxyz
# Set every clients' user name to their nickname
;CloakUserToNick = yes
# Try to connect to other IRC servers using IPv4 and IPv6, if possible.
;ConnectIPv6 = yes
;ConnectIPv4 = yes
# Default user mode(s) to set on new local clients. Please note that
# only modes can be set that the client could set using regular MODE
# commands, you can't set "a" (away) for example! Default: none.
;DefaultUserModes = i
# Do DNS lookups when a client connects to the server.
;DNS = yes
# Do IDENT lookups if ngIRCd has been compiled with support for it.
# Users identified using IDENT are registered without the "~" character
# prepended to their user name.
;Ident = yes
# Directory containing configuration snippets (*.conf), that should
# be read in after parsing this configuration file.
;IncludeDir = :ETCDIR:/conf.d
# Enhance user privacy slightly (useful for IRC server on TOR or I2P)
# by censoring some information like idle time, logon time, etc.
;MorePrivacy = no
# Normally ngIRCd doesn't send any messages to a client until it is
# registered. Enable this option to let the daemon send "NOTICE AUTH"
# messages to clients while connecting.
;NoticeAuth = no
# Should IRC Operators be allowed to use the MODE command even if
# they are not(!) channel-operators?
;OperCanUseMode = no
# Should IRC Operators get AutoOp (+o) in persistent (+P) channels?
;OperChanPAutoOp = yes
# Mask IRC Operator mode requests as if they were coming from the
# server? (This is a compatibility hack for ircd-irc2 servers)
;OperServerMode = no
# Use PAM if ngIRCd has been compiled with support for it.
# Users identified using PAM are registered without the "~" character
# prepended to their user name.
;PAM = yes
# When PAM is enabled, all clients are required to be authenticated
# using PAM; connecting to the server without successful PAM
# authentication isn't possible.
# If this option is set, clients not sending a password are still
# allowed to connect: they won't become "identified" and keep the "~"
# character prepended to their supplied user name.
# Please note: To make some use of this behavior, it most probably
# isn't useful to enable "Ident", "PAM" and "PAMIsOptional" at the
# same time, because you wouldn't be able to distinguish between
# Ident'ified and PAM-authenticated users: both don't have a "~"
# character prepended to their respective user names!
;PAMIsOptional = no
# Let ngIRCd send an "authentication PING" when a new client connects,
# and register this client only after receiving the corresponding
# "PONG" reply.
;RequireAuthPing = no
# Silently drop all incoming CTCP requests.
;ScrubCTCP = no
# Syslog "facility" to which ngIRCd should send log messages.
# Possible values are system dependent, but most probably auth, daemon,
# user and local1 through local7 are possible values; see syslog(3).
# Default is "local5" for historical reasons, you probably want to
# change this to "daemon", for example.
;SyslogFacility = local1
# Password required for using the WEBIRC command used by some
# Web-to-IRC gateways. If not set/empty, the WEBIRC command can't
# be used. (Default: not set)
;WebircPassword = xyz
;[SSL]
# SSL-related configuration options. Please note that this section
# is only available when ngIRCd is compiled with support for SSL!
# So don't forget to remove the ";" above if this is the case ...
# SSL Server Key Certificate
;CertFile = :ETCDIR:/ssl/server-cert.pem
# Select cipher suites allowed for SSL/TLS connections. This defaults
# to HIGH:!aNULL:@STRENGTH (OpenSSL) or SECURE128 (GnuTLS).
# See 'man 1ssl ciphers' (OpenSSL) or 'man 3 gnutls_priority_init'
# (GnuTLS) for details.
# For OpenSSL:
;CipherList = HIGH:!aNULL:@STRENGTH
# For GnuTLS:
;CipherList = SECURE128
# Diffie-Hellman parameters
;DHFile = :ETCDIR:/ssl/dhparams.pem
# SSL Server Key
;KeyFile = :ETCDIR:/ssl/server-key.pem
# password to decrypt SSLKeyFile (OpenSSL only)
;KeyFilePassword = secret
# Additional Listen Ports that expect SSL/TLS encrypted connections
;Ports = 6697, 9999
[Operator]
# [Operator] sections are used to define IRC Operators. There may be
# more than one [Operator] block, one for each local operator.
# ID of the operator (may be different of the nickname)
;Name = TheOper
# Password of the IRC operator
;Password = ThePwd
# Optional Mask from which /OPER will be accepted
;Mask = *!ident@somewhere.example.com
[Operator]
# More [Operator] sections, if you like ...
[Server]
# Other servers are configured in [Server] sections. If you
# configure a port for the connection, then this ngircd tries to
# connect to to the other server on the given port; if not it waits
# for the other server to connect.
# There may be more than one server block, one for each server.
#
# Server Groups:
# The ngIRCd allows "server groups": You can assign an "ID" to every
# server with which you want this ngIRCd to link. If a server of a
# group won't answer, the ngIRCd tries to connect to the next server
# in the given group. But the ngircd never tries to connect to two
# servers with the same group ID.
# IRC name of the remote server, must match the "Name" variable in
# the [Global] section of the other server (when using ngIRCd).
;Name = irc2.example.net
# Internet host name or IP address of the peer (only required when
# this server should establish the connection).
;Host = connect-to-host.example.net
# IP address to use as _source_ address for the connection. if
# unspecified, ngircd will let the operating system pick an address.
;Bind = 10.0.0.1
# Port of the server to which the ngIRCd should connect. If you
# assign no port the ngIRCd waits for incoming connections.
;Port = 6667
# Own password for the connection. This password has to be configured
# as "PeerPassword" on the other server.
;MyPassword = MySecret
# Foreign password for this connection. This password has to be
# configured as "MyPassword" on the other server.
;PeerPassword = PeerSecret
# Group of this server (optional)
;Group = 123
# Set the "Passive" option to "yes" if you don't want this ngIRCd to
# connect to the configured peer (same as leaving the "Port" variable
# empty). The advantage of this option is that you can actually
# configure a port an use the IRC command CONNECT more easily to
# manually connect this specific server later.
;Passive = no
# Connect to the remote server using TLS/SSL (Default: false)
;SSLConnect = yes
# Define a (case insensitive) list of masks matching nicknames that
# should be treated as IRC services when introduced via this remote
# server, separated by commas (",").
# REGULAR SERVERS DON'T NEED this parameter, so leave it empty
# (which is the default).
# When you are connecting IRC services which mask as a IRC server
# and which use "virtual users" to communicate with, for example
# "NickServ" and "ChanServ", you should set this parameter to
# something like "*Serv" or "NickServ,ChanServ,XyzServ".
;ServiceMask = *Serv,Global
[Server]
# More [Server] sections, if you like ...
[Channel]
# Pre-defined channels can be configured in [Channel] sections.
# Such channels are created by the server when starting up and even
# persist when there are no more members left.
# Persistent channels are marked with the mode 'P', which can be set
# and unset by IRC operators like other modes on the fly.
# There may be more than one [Channel] block, one for each channel.
# Name of the channel
;Name = #TheName
# Topic for this channel
;Topic = a great topic
# Initial channel modes
;Modes = tnk
# initial channel password (mode k)
;Key = Secret
# Key file, syntax for each line: "<user>:<nick>:<key>".
# Default: none.
;KeyFile = :ETCDIR:/#chan.key
# maximum users per channel (mode l)
;MaxUsers = 23
[Channel]
# More [Channel] sections, if you like ...
# -eof-

View File

@@ -1,6 +1,6 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2010 Alexander Barton (alex@barton.de) # Copyright (c)2001-2005 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
@@ -8,74 +8,126 @@
# (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: Doxyfile,v 1.2 2005/07/23 00:48:38 alex Exp $
#
# This file describes the settings to be used by the documentation system # This file describes the settings to be used by the documentation system
# doxygen (www.doxygen.org) for ngIRCd. # doxygen (www.doxygen.org) for ngIRCd.
#
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Project related configuration options # Project related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
# by quotes) that should identify the project.
PROJECT_NAME = ngIRCd PROJECT_NAME = ngIRCd
PROJECT_BRIEF = "Lightweight Internet Relay Chat server"
PROJECT_LOGO = "../../contrib/ngIRCd-Logo.gif" # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
# If a relative path is entered, it will be relative to the location
# where doxygen was started. If left blank the current directory will be used.
OUTPUT_DIRECTORY = . OUTPUT_DIRECTORY = .
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
# can be used to strip a user-defined part of the path. Stripping is
# only done if one of the specified strings matches the left-hand part of
# the path. The tag can be used to show relative paths in the file list.
# If left blank the directory from which doxygen is run is used as the
# path to strip.
STRIP_FROM_PATH = ../.. STRIP_FROM_PATH = ../..
JAVADOC_AUTOBRIEF = YES # If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
OPTIMIZE_OUTPUT_FOR_C = YES # will interpret the first line (until the first dot) of a JavaDoc-style
TYPEDEF_HIDES_STRUCT = YES # comment as the brief description. If set to NO, the JavaDoc
# comments will behave just like the Qt-style comments (thus requiring an
# explicit @brief command for a brief description.
TAB_SIZE = 8 JAVADOC_AUTOBRIEF = YES
# If the DETAILS_AT_TOP tag is set to YES then Doxygen
# will output the detailed description near the top, like JavaDoc.
# If set to NO, the detailed description appears after the member
# documentation.
DETAILS_AT_TOP = NO
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
# sources only. Doxygen will then generate output that is more tailored for C.
# For instance, some of the names that are used will be different. The list
# of all members will be omitted, etc.
OPTIMIZE_OUTPUT_FOR_C = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Build related configuration options # Build related configuration options
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
# documentation are documented, even if no documentation was available.
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
EXTRACT_ALL = YES EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
EXTRACT_PRIVATE = YES
# If the EXTRACT_STATIC tag is set to YES all static members of a file
# will be included in the documentation.
EXTRACT_STATIC = YES EXTRACT_STATIC = YES
SHOW_DIRECTORIES = YES # If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
# defined locally in source files will be included in the documentation.
# If set to NO only classes defined in header files are included.
#--------------------------------------------------------------------------- EXTRACT_LOCAL_CLASSES = YES
# configuration options related to warning and progress messages
#---------------------------------------------------------------------------
QUIET = NO
WARNINGS = YES
WARN_IF_UNDOCUMENTED = YES
WARN_IF_DOC_ERROR = YES
WARN_NO_PARAMDOC = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to the input files # configuration options related to the input files
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# The INPUT tag can be used to specify the files and/or directories that
# contain documented source files. You may enter file names like "myfile.cpp"
# or directories like "/usr/src/myproject". Separate the files or directories
# with spaces.
INPUT = ../../src INPUT = ../../src
INPUT_ENCODING = UTF-8
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
# should be searched for input files as well. Possible values are YES and NO.
# If left blank NO is used.
RECURSIVE = YES RECURSIVE = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# configuration options related to source browsing # configuration options related to source browsing
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
# be generated. Documented entities will be cross-referenced with these sources.
# Note: To get rid of all source code in the generated output, make sure also
# VERBATIM_HEADERS is set to NO.
SOURCE_BROWSER = YES SOURCE_BROWSER = YES
STRIP_CODE_COMMENTS = NO
REFERENCED_BY_RELATION = YES
REFERENCES_RELATION = YES
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
# Output formats # Output formats
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
GENERATE_HTML = YES GENERATE_HTML = YES
HTML_FOOTER = footer.inc.html
HTML_DYNAMIC_SECTIONS = YES
GENERATE_DOCSET = NO HTML_OUTPUT = html
HTML_FILE_EXTENSION = .html
HTML_HEADER = header.inc.html
HTML_FOOTER = footer.inc.html
HTML_STYLESHEET = ngircd-doc.css
GENERATE_HTMLHELP = NO GENERATE_HTMLHELP = NO
GENERATE_LATEX = NO GENERATE_LATEX = NO
GENERATE_RTF = NO GENERATE_RTF = NO
@@ -88,6 +140,14 @@ GENERATE_PERLMOD = NO
# Configuration options related to the preprocessor # Configuration options related to the preprocessor
#--------------------------------------------------------------------------- #---------------------------------------------------------------------------
PREDEFINED = DEBUG ZLIB PAM ZEROCONF CONN_MODULE __client_c__ # The PREDEFINED tag can be used to specify one or more macro names that
# are defined before the preprocessor is started (similar to the -D option of
# gcc). The argument of the tag is a list of macros of the form: name
# or name=definition (no spaces). If the definition and the = are
# omitted =1 is assumed. To prevent a macro definition from being
# undefined via #undef or recursively expanded use the := operator
# instead of the = operator.
PREDEFINED = CONN_MODULE __client_c__
# -eof- # -eof-

View File

@@ -1,6 +1,6 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2011 Alexander Barton (alex@barton.de) and Contributors. # Copyright (c)2001-2006 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
@@ -8,8 +8,8 @@
# (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.3 2006/12/28 14:04:28 alex Exp $
EXTRA_DIST = Doxyfile footer.inc.html #
maintainer-clean-local: maintainer-clean-local:
rm -f Makefile Makefile.in rm -f Makefile Makefile.in

View File

@@ -1,9 +1,9 @@
<hr class="footer"> <hr class="footer">
<p style="text-align: center"> <p>
ngIRCd ngIRCd
<a href="http://ngircd.barton.de/">Homepage</a>, <a href="http://ngircd.barton.de/">Homepage</a>,
<a href="http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git">GIT-Repository</a>, <a href="http://arthur.barton.de/cgi-bin/viewcvs.cgi/ngircd/">CVS-Repository</a>,
<a href="http://ngircd.barton.de/bugzilla/index.cgi">Bug-Tracker</a>. <a href="http://ngircd.barton.de/bugzilla/index.cgi">Bug-Tracker</a>.
</p> </p>

10
doc/src/header.inc.html Normal file
View File

@@ -0,0 +1,10 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>ngIRCd Source Documentation</title>
<link href="ngircd-doc.css" rel="stylesheet" type="text/css">
</head>
<body>

77
doc/src/ngircd-doc.css Normal file
View File

@@ -0,0 +1,77 @@
/*
* Cascading Style Sheet for the ngIRCd source documentation
*
* $Id: ngircd-doc.css,v 1.2 2005/07/22 21:23:22 alex Exp $
*/
BODY {
background-color: white;
color: black;
margin: 30px;
font-family: Geneva, sans-serif;
font-size: 12px;
}
A:visited { color: purple; background: transparent; }
A:link { color: navy; background: transparent; }
A:active { color: red; background: transparent; }
A:hover { background: #ffa; }
H1, H2, H3 {
font-family: Verdana, sans-serif;
background-color: white;
color: #005555;
}
H1 { margin-bottom: 10px; }
H2 {
margin-top: 20px;
margin-bottom: 10px;
}
P, LI, TD, TH, DT {
font-family: Geneva, sans-serif;
font-size: 12px;
line-height: 1.2
}
DD { margin-bottom: 1em; }
UL { list-style-type: square; }
HR { margin: 2em 0px; }
BODY>TABLE { padding: 1em 0px; }
TD.mdRow {
border: 1px dotted silver;
background-color: #fff9dd;
}
TD.md { font-weight: bold; }
TD.memItemLeft { padding-top: 4px; }
TD.memItemRight { padding-top: 4px; }
TD.mdescRight { font-style: italic; }
DIV.qindex {
background-color: #eee;
border: 1px dotted silver;
padding: 3px;
margin-bottom: 2px;
}
DIV.nav {
margin: 1em 0px;
}
HR.footer { margin-top: 50px; }
.comment {
color: gray;
font-style: italic;
}
.preprocessor { color: #f90; }
.keyword, .keywordflow, .keywordtype { color: red; }
.stringliteral { color: green; }
/* -eof- */

View File

@@ -1,12 +1,15 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors # Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
# #
# This program is free software; you can redistribute it and/or modify # Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
# it under the terms of the GNU General Public License as published by # der GNU General Public License (GPL), wie von der Free Software Foundation
# the Free Software Foundation; either version 2 of the License, or # herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
# (at your option) any later version. # der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
# Please read the file COPYING, README and AUTHORS for more information. # Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
#
# $Id: Makefile.am,v 1.6 2006/12/25 16:13:26 alex Exp $
# #
TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl
@@ -14,10 +17,10 @@ TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl
SUFFIXES = .tmpl . SUFFIXES = .tmpl .
.tmpl: .tmpl:
$(AM_V_GEN)sed \ sed \
-e "s@:SBINDIR:@${sbindir}@" \ -e s@:SBINDIR:@${sbindir}@ \
-e "s@:BINDIR:@${bindir}@" \ -e s@:BINDIR:@${bindir}@ \
-e "s@:ETCDIR:@${sysconfdir}@" \ -e s@:ETCDIR:@${sysconfdir}@ \
<$< >$@ <$< >$@
man_MANS = ngircd.conf.5 ngircd.8 man_MANS = ngircd.conf.5 ngircd.8

View File

@@ -1,39 +1,32 @@
.\" .\"
.\" ngircd(8) manual page template .\" $Id: ngircd.8.tmpl,v 1.2 2007/11/15 01:03:29 fw Exp $
.\" .\"
.TH ngircd 8 "Oct 2013" ngIRCd "ngIRCd Manual" .TH ngircd 8 "August 2005" ngircd "ngIRCd Manual"
.SH NAME .SH NAME
ngIRCd \- the "next generation" IRC daemon ngIRCd \- the next generation IRC daemon
.SH SYNOPSIS .SH SYNOPSIS
.B ngircd .B ngircd [
[
.I Options .I Options
] .B ]
.SH DESCRIPTION .SH DESCRIPTION
.BR ngIRCd .BR ngIRCd
is a free, portable and lightweight Internet Relay Chat server for small is a free open source daemon for the Internet Relay Chat (IRC),
or private networks, developed under the GNU General Public License (GPL). developed under the GNU General Public License (GPL).
It is easy to configure, can cope with dynamic IP addresses, and supports
IPv6, SSL-protected connections as well as PAM for authentication.
It is written from scratch and not based on the original IRCd.
.PP .PP
The name ngIRCd means It's written from scratch and is not based upon the original IRCd like
.IR "next generation IRC daemon", many others. It is easy to configure, supports server links (even with
which is a little bit exaggerated: original ircd's) and runs on hosts with changing IP addresses (such as
.IR "lightweight Internet Relay Chat server" dial-in networks).
most probably would have been a better name :-) .PP
Currently supported platforms include AIX, A/UX, FreeBSD, HP-UX, IRIX,
Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
.PP .PP
Currently supported platforms include AIX, A/UX, FreeBSD, HP-UX, Hurd, IRIX,
Linux, Mac OS X, Minix, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
As ngIRCd relies on UNIX standards and uses GNU automake and GNU autoconf As ngIRCd relies on UNIX standards and uses GNU automake and GNU autoconf
there are good chances that it also supports other UNIX-based operating there are good chances that it also supports other UNIX-based operating
systems as well. systems as well. By default, ngIRCd writes diagnostic and informational messages using
.PP the syslog mechanism.
By default ngIRCd logs diagnostic and informational messages using the syslog
mechanism, or writes directly to the console when running in the foreground
(see below).
.SH OPTIONS .SH OPTIONS
The default behavior of The default behaviour of
.BR ngircd .BR ngircd
is to read its standard configuration file (see below), to detach from the is to read its standard configuration file (see below), to detach from the
controlling terminal and to wait for clients. controlling terminal and to wait for clients.
@@ -57,10 +50,10 @@ CONNECT later on as IRC Operator to link this ngIRCd to other servers.
\fB\-t\fR, \fB\-\-configtest\fR \fB\-t\fR, \fB\-\-configtest\fR
Read, validate and display the configuration; then exit. Read, validate and display the configuration; then exit.
.TP .TP
\fB\-V\fR, \fB\-\-version\fR \fB\-\-version\fR
Output version information and exit. Output version information and exit.
.TP .TP
\fB\-h\fR, \fB\-\-help\fR \fB\-\-help\fR
Display a brief help text and exit. Display a brief help text and exit.
.SH FILES .SH FILES
.I :ETCDIR:/ngircd.conf .I :ETCDIR:/ngircd.conf
@@ -71,49 +64,16 @@ The system wide default configuration file.
.RS .RS
Default "message of the day" (MOTD). Default "message of the day" (MOTD).
.RE .RE
.SH SIGNALS .SH AUTHOR
The daemon understands the following signals: Alexander Barton,
.TP .UR mailto:alex@barton.de
\fBTERM\fR alex@barton.de
Shut down all connections and terminate the daemon. .UE
.TP
\fBHUP\fR
Shut down all listening sockets, re-read the configuration file and
re-initialize the daemon.
.SH HINTS
It's wise to use "ngircd \-\-configtest" to validate the configuration file
after changing it.
.SH DEBUGGING
When ngIRCd is compiled with debug code, that is, its source code has
been ./configure'd with "\-\-enable\-debug" and/or "\-\-enable\-sniffer" (witch
enables debug mode automatically as well), you can use two more command
line options and two more signals to debug problems with the daemon itself
or IRC clients:
.PP
\fBOptions:\fR
.TP
\fB\-d\fR, \fB\-\-debug\fR
Enable debug mode and log extra messages.
.TP
\fB\-s\fR, \fB\-\-sniffer\fR
Enable IRC protocol sniffer, which logs all sent and received IRC commands to
the console/syslog. This option requires that ngIRCd has been ./configure'd
with "\-\-enable\-sniffer" and enables debug mode automatically, too.
.PP
\fBSignals:\fR
.TP
\fBUSR1\fR
Toggle debug mode on and off during runtime.
.TP
\fBUSR2\fR
Dump internal server state to the console/syslog when debug mode is on (use
command line option \-\-debug or signal USR1).
.SH AUTHORS
Alexander Barton, <alex@barton.de>
.br .br
Florian Westphal, <fw@strlen.de> Homepage:
.PP .UR http://ngircd.barton.de/
Homepage: http://ngircd.barton.de/ http://ngircd.barton.de/
.UE
.SH "SEE ALSO" .SH "SEE ALSO"
.BR ngircd.conf (5), .BR ngircd.conf (5),
.BR ircd (8) .BR ircd (8)

View File

@@ -1,7 +1,7 @@
.\" .\"
.\" ngircd.conf(5) manual page template .\" $Id: ngircd.conf.5.tmpl,v 1.7 2007/11/23 16:26:03 fw Exp $
.\" .\"
.TH ngircd.conf 5 "Jan 2014" ngIRCd "ngIRCd Manual" .TH ngircd.conf 5 "August 2005" ngircd "ngIRCd Manual"
.SH NAME .SH NAME
ngircd.conf \- configuration file of ngIRCd ngircd.conf \- configuration file of ngIRCd
.SH SYNOPSIS .SH SYNOPSIS
@@ -10,12 +10,8 @@ ngircd.conf \- configuration file of ngIRCd
.BR ngircd.conf .BR ngircd.conf
is the configuration file of the is the configuration file of the
.BR ngircd (8) .BR ngircd (8)
Internet Relay Chat (IRC) daemon, which must be customized to the local Internet Relay Chat (IRC) daemon which you should adept to your local
preferences and needs. preferences and needs.
.PP
Most variables can be modified while the ngIRCd daemon is already running:
It will reload its configuration file when a HUP signal or REHASH command
is received.
.SH "FILE FORMAT" .SH "FILE FORMAT"
The file consists of sections and parameters. A section begins with the name The file consists of sections and parameters. A section begins with the name
of the section in square brackets and continues until the next section of the section in square brackets and continues until the next section
@@ -30,204 +26,87 @@ Sections contain parameters of the form
.RE .RE
.PP .PP
Empty lines and any line beginning with a semicolon (';') or a hash ('#') Empty lines and any line beginning with a semicolon (';') or a hash ('#')
character are treated as a comment and will be ignored. Leading and trailing character is treated as a comment and will be ignored.
whitespaces are trimmed before any processing takes place.
.PP .PP
The file format is line-based - that means, each non-empty newline-terminated The file format is line-based - that means, each newline-terminated line
line represents either a comment, a section name, or a parameter. represents either a comment, a section name or a parameter.
.PP .PP
Section and parameter names are not case sensitive. Section and parameter names are not case sensitive.
.PP
There are three types of variables:
.I booleans,
.I text strings,
and
.I numbers.
Boolean values are
.I true
if they are "yes", "true", or any non-null integer. Text strings are used 1:1
without leading and following spaces; there is no way to quote strings. And
for numbers all decimal integer values are valid.
.PP
In addition, some string or numerical variables accept lists of values,
separated by commas (",").
.SH "SECTION OVERVIEW" .SH "SECTION OVERVIEW"
The file can contain blocks of seven types: [Global], [Limits], [Options], The file can contain blocks of four types: [Global], [Operator], [Server],
[SSL], [Operator], [Server], and [Channel]. and [Channel].
.PP .PP
The main configuration of the server is stored in the In the
.I [Global] .I [Global]
section, like the server name, administrative information and the ports on section, there is the main configuration like the server name and the
which the server should be listening. The variables in this section have to be ports on which the server should be listening. IRC operators of this
adjusted to the local requirements most of the time, whereas all the variables server are defined in
in the other sections can be left on their defaults very often.
.PP
Options in the
.I [Limits]
block are used to tweak different limits and timeouts of the daemon, like the
maximum number of clients allowed to connect to this server. Variables in the
.I [Options]
section can be used to enable or disable specific features of ngIRCd, like
support for IDENT, PAM, IPv6, and protocol and cloaking features. The
.I [SSL]
block contains all SSL-related configuration variables. These three sections
are all optional.
.PP
IRC operators of this server are defined in
.I [Operator] .I [Operator]
blocks. Links to remote servers are configured in blocks.
.I [Server] .I [Server]
sections. And is the section where server links are configured. And
.I [Channel] .I [Channel]
blocks are used to configure pre-defined ("persistent") IRC channels. blocks are used to configure pre-defined ("persistent") IRC channels.
.PP .PP
There can be more than one [Operator], [Server] and [Channel] section per There can be more than one [Operator], [Server] and [Channel] sections
configuration file, one for each operator, server, and channel. [Global], per configuration file, but only one [Global] section.
[Limits], [Options], and [SSL] sections can occure multiple times, too, but
each variable overwrites itself, only the last assignment is relevant.
.SH [GLOBAL] .SH [GLOBAL]
The The
.I [Global] .I [Global]
section is used to define the main configuration of the server, section is used to define the server main configuration, like the server
like the server name and the ports on which the server should be listening. name and the ports on which the server should be listening.
These settings depend on your personal preferences, so you should make sure
that they correspond to your installation and setup!
.TP .TP
\fBName\fR (string; required) \fBName\fR
Server name in the IRC network. This is an individual name of the IRC Server name in the IRC network
server, it is not related to the DNS host name. It must be unique in the
IRC network and must contain at least one dot (".") character.
.TP .TP
\fBAdminInfo1\fR, \fBAdminInfo2\fR, \fBAdminEMail\fR (string) \fBInfo\fR
Information about the server and the administrator, used by the ADMIN
command. This information is not required by the server but by RFC!
.TP
\fBHelpFile\fR (string)
Text file which contains the ngIRCd help text. This file is required
to display help texts when using the "HELP <cmd>" command.
Please note: Changes made to this file take effect when ngircd starts up
or is instructed to re-read its configuration file.
.TP
\fBInfo\fR (string)
Info text of the server. This will be shown by WHOIS and LINKS requests for Info text of the server. This will be shown by WHOIS and LINKS requests for
example. example.
.TP .TP
\fBListen\fR (list of strings) \fBAdminInfo1\fR, \fBAdminInfo2\fR, \fBAdminEMail\fR
A comma separated list of IP address on which the server should listen. Information about the server and the administrator, used by the ADMIN
If unset, the defaults value is "0.0.0.0" or, if ngIRCd was compiled command.
with IPv6 support, "::,0.0.0.0". So the server listens on all configured
IP addresses and interfaces by default.
.TP .TP
\fBMotdFile\fR (string) \fBPorts\fR
Text file with the "message of the day" (MOTD). This message will be shown to Ports on which the server should listen. There may be more than one port,
all users connecting to the server. Please note: Changes made to this file separated with ','. Default: 6667.
take effect when ngircd starts up or is instructed to re-read its
configuration file.
.TP .TP
\fBMotdPhrase\fR (string) \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
Text file with the "message of the day" (MOTD). This message will be shown
to all users connecting to the server.
.TP
\fBMotdPhrase\fR
A simple Phrase (<256 chars) if you don't want to use a MOTD file. A simple Phrase (<256 chars) if you don't want to use a MOTD file.
If it is set no MotdFile will be read at all.
.TP .TP
\fBNetwork\fR (string) \fBServerUID\fR
The name of the IRC network to which this server belongs. This name is User ID under which the server should run; you can use the name of the user
optional, should only contain ASCII characters, and can't contain spaces. or the numerical ID.
It is only used to inform clients. The default is empty, so no network .PP
name is announced to clients. .RS
.B Attention:
.br
For this to work the server must have been
started with root privileges! In addition, the configuration and MOTD files
must be readable by this user, otherwise RESTART and REHASH won't work!
.RE
.TP .TP
\fBPassword\fR (string) \fBServerGID\fR
Global password for all users needed to connect to the server. The default is Group ID under which the ngIRCd should run; you can use the name of the
empty, so no password is required. Please note: This feature is not available
if ngIRCd is using PAM!
.TP
\fBPidFile\fR (string)
This tells ngIRCd to write its current process ID to a file. Note that the
"PID file" is written AFTER chroot and switching the user ID, therefore the
directory the file resides in must be writable by the ngIRCd user and exist
in the chroot directory (if configured, see above).
.TP
\fBPorts\fR (list of numbers)
Port number(s) on which the server should listen for unencrypted connections.
There may be more than one port, separated with commas (","). Default: 6667.
.TP
\fBServerGID\fR (string or number)
Group ID under which the ngIRCd daemon should run; you can use the name of the
group or the numerical ID. group or the numerical ID.
.PP .PP
.RS .RS
.B Attention: .B Attention:
.br .br
For this to work the server must have been started with root privileges! For this to work the server must have
been started with root privileges!
.RE .RE
.TP .TP
\fBServerUID\fR (string or number) \fBChrootDir\fR
User ID under which the ngIRCd daemon should run; you can use the name of the
user or the numerical ID.
.PP
.RS
.B Attention:
.br
For this to work the server must have been started with root privileges! In
addition, the configuration and MOTD files must be readable by this user,
otherwise RESTART and REHASH won't work!
.RE
.SH [LIMITS]
This section is used to define some limits and timeouts for this ngIRCd
instance. Default values should be safe, but it is wise to double-check :-)
.TP
\fBConnectRetry\fR (number)
The server tries every <ConnectRetry> seconds to establish a link to not yet
(or no longer) connected servers. Default: 60.
.TP
\fBIdleTimeout\fR (number)
Number of seconds after which the whole daemon should shutdown when no
connections are left active after handling at least one client (0: never). This
can be useful for testing or when ngIRCd is started using "socket activation"
with systemd(8), for example. Default: 0.
.TP
\fBMaxConnections\fR (number)
Maximum number of simultaneous in- and outbound connections the server is
allowed to accept (0: unlimited). Default: 0.
.TP
\fBMaxConnectionsIP\fR (number)
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 (number)
Maximum number of channels a user can be member of (0: no limit).
Default: 10.
.TP
\fBMaxNickLength\fR (number)
Maximum length of an user nickname (Default: 9, as in RFC 2812). Please
note that all servers in an IRC network MUST use the same maximum nickname
length!
.TP
\fBMaxListSize\fR (number)
Maximum number of channels returned in response to a LIST command. Default: 100.
.TP
\fBPingTimeout\fR (number)
After <PingTimeout> seconds of inactivity the server will send a PING to
the peer to test whether it is alive or not. Default: 120.
.TP
\fBPongTimeout\fR (number)
If a client fails to answer a PING with a PONG within <PongTimeout>
seconds, it will be disconnected by the server. Default: 20.
.SH [OPTIONS]
Optional features and configuration options to further tweak the behavior of
ngIRCd are configured in this section. If you want to get started quickly, you
most probably don't have to make changes here -- they are all optional.
.TP
\fBAllowedChannelTypes\fR (string)
List of allowed channel types (channel prefixes) for newly created channels
on the local server. By default, all supported channel types are allowed.
Set this variable to the empty string to disallow creation of new channels
by local clients at all. Default: #&+
.TP
\fBAllowRemoteOper\fR (boolean)
If this option is active, IRC operators connected to remote servers are allowed
to control this local server using administrative commands, for example like
CONNECT, DIE, SQUIT etc. Default: no.
.TP
\fBChrootDir\fR (string)
A directory to chroot in when everything is initialized. It doesn't need A directory to chroot in when everything is initialized. It doesn't need
to be populated if ngIRCd is compiled as a static binary. By default ngIRCd to be populated if ngIRCd is compiled as a static binary. By default ngIRCd
won't use the chroot() feature. won't use the chroot() feature.
@@ -235,246 +114,143 @@ won't use the chroot() feature.
.RS .RS
.B Attention: .B Attention:
.br .br
For this to work the server must have been started with root privileges! For this to work the server must have
been started with root privileges!
.RE .RE
.TP .TP
\fBCloakHost\fR (string) \fBPidFile\fR
Set this hostname for every client instead of the real one. Default: empty, This tells ngIRCd to write its current process ID to a file. Note that the
don't change. Use %x to add the hashed value of the original hostname. pidfile is written AFTER chroot and switching the user ID, i. e. the
directory the pidfile resides in must be writeable by the ngIRCd user and
exist in the chroot directory (if configured, see above).
.RE
.TP .TP
\fBCloakHostModeX\fR (string) \fBPingTimeout\fR
Use this hostname for hostname cloaking on clients that have the user mode After <PingTimeout> seconds of inactivity the server will send a PING to
"+x" set, instead of the name of the server. Default: empty, use the name the peer to test whether it is alive or not. Default: 120.
of the server. Use %x to add the hashed value of the original hostname
.TP .TP
\fBCloakHostSalt\fR (string) \fBPongTimeout\fR
The Salt for cloaked hostname hashing. When undefined a random hash is If a client fails to answer a PING with a PONG within <PongTimeout>
generated after each server start. seconds, it will be disconnected by the server. Default: 20.
.TP .TP
\fBCloakUserToNick\fR (boolean) \fBConnectRetry\fR
Set every clients' user name to their nickname and hide the one supplied The server tries every <ConnectRetry> seconds to establish a link to not yet
by the IRC client. Default: no. (or no longer) connected servers. Default: 60.
.TP .TP
\fBConnectIPv4\fR (boolean) \fBOperCanUseMode\fR
Set this to no if you do not want ngIRCd to connect to other IRC servers using
the IPv4 protocol. This allows the usage of ngIRCd in IPv6-only setups.
Default: yes.
.TP
\fBConnectIPv6\fR (boolean)
Set this to no if you do not want ngIRCd to connect to other IRC servers using
the IPv6 protocol.
Default: yes.
.TP
\fBDefaultUserModes\fR (string)
Default user mode(s) to set on new local clients. Please note that only modes
can be set that the client could set using regular MODE commands, you can't
set "a" (away) for example!
Default: none.
.TP
\fBDNS\fR (boolean)
If set to false, ngIRCd will not make any DNS lookups when clients connect.
If you configure the daemon to connect to other servers, ngIRCd may still
perform a DNS lookup if required.
Default: yes.
.TP
\fBIdent\fR (boolean)
If ngIRCd is compiled with IDENT support this can be used to disable IDENT
lookups at run time.
Users identified using IDENT are registered without the "~" character
prepended to their user name.
Default: yes.
.TP
\fBIncludeDir\fR (string)
Directory containing configuration snippets (*.conf), that should be read in
after parsing the current configuration file.
Default: none.
.TP
\fBMorePrivacy\fR (boolean)
This will cause ngIRCd to censor user idle time, logon time as well as the
part/quit messages (that are sometimes used to inform everyone about which
client software is being used). WHOWAS requests are also silently ignored.
This option is most useful when ngIRCd is being used together with
anonymizing software such as TOR or I2P and one does not wish to make it
too easy to collect statistics on the users.
Default: no.
.TP
\fBNoticeAuth\fR (boolean)
Normally ngIRCd doesn't send any messages to a client until it is registered.
Enable this option to let the daemon send "NOTICE AUTH" messages to clients
while connecting. Default: no.
.TP
\fBOperCanUseMode\fR (boolean)
Should IRC Operators be allowed to use the MODE command even if they are Should IRC Operators be allowed to use the MODE command even if they are
not(!) channel-operators? Default: no. not(!) channel-operators? Default: no.
.TP .TP
\fBOperChanPAutoOp\fR (boolean) \fBOperServerMode\fR
Should IRC Operators get AutoOp (+o) in persistent (+P) channels? If OperCanUseMode is enabled, this may lead the compatibility problems with
Default: yes. Servers that run the ircd-irc2 Software. This Option "masks" mode requests
by non-chanops as if they were coming from the server. Default: no.
.TP .TP
\fBOperServerMode\fR (boolean) \fBPredefChannelsOnly\fR
If \fBOperCanUseMode\fR is enabled, this may lead the compatibility problems If enabled, no new channels can be created. Useful if
with Servers that run the ircd-irc2 Software. This Option "masks" mode you do not want to have channels other than those defined in
requests by non-chanops as if they were coming from the server. Default: no; the config file.
only enable it if you have ircd-irc2 servers in your IRC network. Default: No.
.TP .TP
\fBPAM\fR (boolean) \fBNoDNS\fR
If ngIRCd is compiled with PAM support this can be used to disable all calls If enabled, ngircd will not make DNS lookups when clients connect.
to the PAM library at runtime; all users connecting without password are If you configure ngircd to connect to other servers, ngircd may still
allowed to connect, all passwords given will fail. perform a DNS lookup if required.
Users identified using PAM are registered without the "~" character Default: No.
prepended to their user name.
Default: yes.
.TP .TP
\fBPAMIsOptional\fR (boolean) \fBListenIPv4\fR
When PAM is enabled, all clients are required to be authenticated using PAM; Set this to no if you do not want ngircd to accept clients using the standard internet protocol, ipv4.
connecting to the server without successful PAM authentication isn't possible. This allows use of ngircd in ipv6-only setups.
If this option is set, clients not sending a password are still allowed to Default: Yes.
connect: they won't become "identified" and keep the "~" character prepended
to their supplied user name.
Please note:
To make some use of this behavior, it most probably isn't useful to enable
"Ident", "PAM" and "PAMIsOptional" at the same time, because you wouldn't be
able to distinguish between Ident'ified and PAM-authenticated users: both
don't have a "~" character prepended to their respective user names!
Default: no.
.TP .TP
\fBRequireAuthPing\fR (boolean) \fBListenIPv6\fR
Let ngIRCd send an "authentication PING" when a new client connects, and Set this to no if you do not want ngircd to accept clients using the new internet protocol, ipv6.
register this client only after receiving the corresponding "PONG" reply. Default: Yes.
Default: no.
.TP .TP
\fBScrubCTCP\fR (boolean) \fBConnectIPv4\fR
If set to true, ngIRCd will silently drop all CTCP requests sent to it from Set this to no if you do not want ngircd to connect to other irc servers using ipv4.
both clients and servers. It will also not forward CTCP requests to any This allows use of ngircd in ipv6-only setups.
other servers. CTCP requests can be used to query user clients about which Default: Yes.
software they are using and which versions said software is. CTCP can also be
used to reveal clients IP numbers. ACTION CTCP requests are not blocked,
this means that /me commands will not be dropped, but please note that
blocking CTCP will disable file sharing between users!
Default: no.
.TP .TP
\fBSyslogFacility\fR (string) \fBConnectIPv6\fR
Syslog "facility" to which ngIRCd should send log messages. Possible Set this to no if you do not want ngircd to connect to other irc servers using ipv6.
values are system dependent, but most probably "auth", "daemon", "user" Default: Yes.
and "local1" through "local7" are possible values; see syslog(3).
Default is "local5" for historical reasons, you probably want to
change this to "daemon", for example.
.TP .TP
\fBWebircPassword\fR (string) \fBMaxConnections\fR
Password required for using the WEBIRC command used by some Web-to-IRC Maximum number of simultaneous connection the server is allowed to accept
gateways. If not set or empty, the WEBIRC command can't be used. (0: unlimited). Default: 0.
Default: not set.
.SH [SSL]
All SSL-related configuration variables are located in the
.I [SSL]
section. Please note that this whole section is only recognized by ngIRCd
when it is compiled with support for SSL using OpenSSL or GnuTLS!
.TP .TP
\fBCertFile\fR (string) \fBMaxConnectionsIP\fR
SSL Certificate file of the private server key. 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 .TP
\fBCipherList\fR (string) \fBMaxJoins\fR
Select cipher suites allowed for SSL/TLS connections. This defaults to Maximum number of channels a user can be member of (0: no limit).
"HIGH:!aNULL:@STRENGTH" (OpenSSL) or "SECURE128" (GnuTLS). Default: 10.
Please see 'man 1ssl ciphers' (OpenSSL) and 'man 3 gnutls_priority_init'
(GnuTLS) for details.
.TP .TP
\fBDHFile\fR (string) \fBMaxNickLength\fR
Name of the Diffie-Hellman Parameter file. Can be created with GnuTLS Maximum length of an user nick name (Default: 9, as in RFC 2812). Please
"certtool \-\-generate-dh-params" or "openssl dhparam". If this file is not note that all servers in an IRC network MUST use the same maximum nick name
present, it will be generated on startup when ngIRCd was compiled with GnuTLS length!
support (this may take some time). If ngIRCd was compiled with OpenSSL, then
(Ephemeral)-Diffie-Hellman Key Exchanges and several Cipher Suites will not be
available.
.TP
\fBKeyFile\fR (string)
Filename of SSL Server Key to be used for SSL connections. This is required
for SSL/TLS support.
.TP
\fBKeyFilePassword\fR (string)
OpenSSL only: Password to decrypt the private key file.
.TP
\fBPorts\fR (list of numbers)
Same as \fBPorts\fR , except that ngIRCd will expect incoming connections
to be SSL/TLS encrypted. Common port numbers for SSL-encrypted IRC are 6669
and 6697. Default: none.
.SH [OPERATOR] .SH [OPERATOR]
.I [Operator] .I [Operator]
sections are used to define IRC Operators. There may be more than one sections are used to define IRC Operators. There may be more than one
.I [Operator] .I [Operator]
block, one for each local operator. block, one for each local operator.
.TP .TP
\fBName\fR (string) \fBName\fR
ID of the operator (may be different of the nick name). ID of the operator (may be different of the nick name).
.TP .TP
\fBPassword\fR (string) \fBPassword\fR
Password of the IRC operator. Password of the IRC operator.
.TP .TP
\fBMask\fR (string) \fBMask\fR
Mask that is to be checked before an /OPER for this account is accepted. Mask that is to be checked before an /OPER for this account is accepted.
Example: nick!ident@*.example.com Example: nick!ident@*.example.com
.SH [SERVER] .SH [SERVER]
Other servers are configured in Other servers are configured in
.I [Server] .I [Server]
sections. If you configure a port for the connection, then this ngIRCd sections. If you configure a port for the connection, then this ngIRCd
tries to connect to to the other server on the given port (active); tries to connect to to the other server on the given port; if not, it waits
if not, it waits for the other server to connect (passive). for the other server to connect.
.PP .PP
ngIRCd supports "server groups": You can assign an "ID" to every server The ngIRCd allows "server groups": You can assign an "ID" to every server
with which you want this ngIRCd to link, and the daemon ensures that at with which you want this ngIRCd to link. If a server of a group won't
any given time only one direct link exists to servers with the same ID. answer, the ngIRCd tries to connect to the next server in the given group.
So if a server of a group won't answer, ngIRCd tries to connect to the next But ngIRCd never tries to connect to two servers with the same group ID.
server in the given group (="with the same ID"), but never tries to connect
to more than one server of this group simultaneously.
.PP .PP
There may be more than one There may be more than one
.I [Server] .I [Server]
block. block.
.TP .TP
\fBName\fR (string) \fBName\fR
IRC name of the remote server. IRC name of the server
.TP .TP
\fBHost\fR (string) \fBHost\fR
Internet host name (or IP address) of the peer. Internet host name of the peer
.TP .TP
\fBBind\fR (string) \fBBind\fR
IP address to use as source IP for the outgoing connection. Default is IP address to use as source IP for the outgoing connection. Default ist
to let the operating system decide. to let the operating system decide.
.TP .TP
\fBPort\fR (number) \fBPort\fR
Port of the remote server to which ngIRCd should connect (active). Port of the server to which the ngIRCd should connect. If you assign no port
If no port is assigned to a configured server, the daemon only waits for the ngIRCd waits for incoming connections.
incoming connections (passive, default).
.TP .TP
\fBMyPassword\fR (string) \fBMyPassword\fR
Own password for this connection. This password has to be configured as Own password for this connection. This password has to be configured as
\fBPeerPassword\fR on the other server. Must not have ':' as first character. "PeerPassword" on the other server. Must not have ':' as first character.
.TP .TP
\fBPeerPassword\fR (string) \fBPeerPassword\fR
Foreign password for this connection. This password has to be configured as Foreign password for this connection. This password has to be configured as
\fBMyPassword\fR on the other server. "MyPassword" on the other server.
.TP .TP
\fBGroup\fR (number) \fBGroup\fR
Group of this server (optional). Group of this server (optional).
.TP \fBPassive\fR
\fBPassive\fR (boolean)
Disable automatic connection even if port value is specified. Default: false. Disable automatic connection even if port value is specified. Default: false.
You can use the IRC Operator command CONNECT later on to create the link. You can use the IRC Operator command CONNECT later on to create the link.
.TP
\fBSSLConnect\fR (boolean)
Connect to the remote server using TLS/SSL. Default: false.
.TP
\fBServiceMask\fR (string)
Define a (case insensitive) list of masks matching nicknames that should be
treated as IRC services when introduced via this remote server, separated
by commas (","). REGULAR SERVERS DON'T NEED this parameter, so leave it empty
(which is the default).
.PP
.RS
When you are connecting IRC services which mask as a IRC server and which use
"virtual users" to communicate with, for example "NickServ" and "ChanServ",
you should set this parameter to something like "*Serv", "*Serv,OtherNick",
or "NickServ,ChanServ,XyzServ".
.SH [CHANNEL] .SH [CHANNEL]
Pre-defined channels can be configured in Pre-defined channels can be configured in
.I [Channel] .I [Channel]
@@ -488,75 +264,35 @@ There may be more than one
.I [Channel] .I [Channel]
block. block.
.TP .TP
\fBName\fR (string) \fBName\fR
Name of the channel, including channel prefix ("#" or "&"). Name of the channel
.TP .TP
\fBTopic\fR (string) \fBTopic\fR
Topic for this channel. Topic for this channel
.TP .TP
\fBModes\fR (string) \fBModes\fR
Initial channel modes. Initial channel modes.
.TP .TP
\fBKey\fR (string) \fBKey\fR
Sets initial channel key (only relevant if channel mode "k" is set). Sets initial channel key (only relevant if mode k is set)
.TP .TP
\fBKeyFile\fR (string) \fBMaxUsers\fR
Path and file name of a "key file" containing individual channel keys for Set maximum user limit for this channel (only relevant if mode l is set)
different users. The file consists of plain text lines with the following
syntax (without spaces!):
.PP
.RS
.RS
.I user
:
.I nick
:
.I key
.RE
.PP
.I user
and
.I nick
can contain the wildcard character "*".
.br
.I key
is an arbitrary password.
.PP
Valid examples are:
.PP
.RS
*:*:KeY
.br
*:nick:123
.br
~user:*:xyz
.RE
.PP
The key file is read on each JOIN command when this channel has a key
(channel mode +k). Access is granted, if a) the channel key set using the
MODE +k command or b) one of the lines in the key file match.
.PP
.B Please note:
.br
The file is not reopened on each access, so you can modify and overwrite it
without problems, but moving or deleting the file will have not effect until
the daemon re-reads its configuration!
.RE
.TP
\fBMaxUsers\fR (number)
Set maximum user limit for this channel (only relevant if channel mode "l"
is set).
.SH HINTS .SH HINTS
It's wise to use "ngircd \-\-configtest" to validate the configuration file It's wise to use "ngircd --configtest" to validate the configuration file
after changing it. See after changing it. See
.BR ngircd (8) .BR ngircd (8)
for details. for details.
.SH AUTHOR .SH AUTHOR
Alexander Barton, <alex@barton.de> Alexander Barton,
.UR mailto:alex@barton.de
alex@barton.de
.UE
.br .br
Florian Westphal, <fw@strlen.de> Homepage:
.PP .UR http://ngircd.barton.de/
Homepage: http://ngircd.barton.de/ http://ngircd.barton.de/
.UE
.SH "SEE ALSO" .SH "SEE ALSO"
.BR ngircd (8) .BR ngircd (8)
.\" .\"

1
src/.gitignore vendored
View File

@@ -1,4 +1,3 @@
config.h config.h
config.h.in config.h.in
config.h.in~
stamp-h1 stamp-h1

View File

@@ -1 +0,0 @@
Makefile.am

14
src/ipaddr/Makefile.am Normal file
View File

@@ -0,0 +1,14 @@
AUTOMAKE_OPTIONS = ansi2knr
INCLUDES = -I$(srcdir)/../portab
noinst_LIBRARIES = libngipaddr.a
libngipaddr_a_SOURCES = ng_ipaddr.c
noinst_HEADERS = ng_ipaddr.h
maintainer-clean-local:
rm -f Makefile Makefile.in
# -eof-

View File

@@ -1,21 +0,0 @@
#
# ipaddr/Makefile.am
# (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
#
__ng_Makefile_am_template__
EXTRA_DIST = Makefile.ng
AM_CPPFLAGS = -I$(srcdir)/../portab
noinst_LIBRARIES = libngipaddr.a
libngipaddr_a_SOURCES = ng_ipaddr.c
noinst_HEADERS = ng_ipaddr.h
maintainer-clean-local:
rm -f Makefile Makefile.in Makefile.am
# -eof-

View File

@@ -1,14 +1,11 @@
/* /*
* Functions for AF_ agnostic ipv4/ipv6 handling.
*
* (c) 2008 Florian Westphal <fw@strlen.de>, public domain. * (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
*/ */
#include "portab.h" #include "portab.h"
/**
* @file
* Functions for AF_ agnostic ipv4/ipv6 handling.
*/
#include <assert.h> #include <assert.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
@@ -23,45 +20,37 @@
GLOBAL bool GLOBAL bool
ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port) ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
{ {
#ifdef HAVE_WORKING_GETADDRINFO #ifdef HAVE_GETADDRINFO
int ret; int ret;
char portstr[64]; char portstr[64];
struct addrinfo *res0; struct addrinfo *res0;
struct addrinfo hints; struct addrinfo hints = {
#ifndef WANT_IPV6 /* only accept v4 addresses */
assert(ip_str); .ai_family = AF_INET,
memset(&hints, 0, sizeof(hints));
#ifdef AI_NUMERICHOST
hints.ai_flags = AI_NUMERICHOST;
#endif
#ifndef WANT_IPV6 /* do not convert ipv6 addresses */
hints.ai_family = AF_INET;
#endif #endif
.ai_flags = AI_NUMERICHOST
};
/* some getaddrinfo implementations require that ai_socktype is set. */ if (ip_str == NULL)
hints.ai_socktype = SOCK_STREAM; hints.ai_flags |= AI_PASSIVE;
/* silly, but ngircd stores UINT16 in server config, not string */ /* silly, but ngircd stores UINT16 in server config, not string */
snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port); snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port);
ret = getaddrinfo(ip_str, portstr, &hints, &res0); ret = getaddrinfo(ip_str, portstr, &hints, &res0);
assert(ret == 0);
if (ret != 0) if (ret != 0)
return false; return false;
assert(sizeof(*addr) >= (size_t)res0->ai_addrlen); assert(sizeof(*addr) >= res0->ai_addrlen);
if (sizeof(*addr) >= (size_t)res0->ai_addrlen) if (sizeof(*addr) >= res0->ai_addrlen)
memcpy(addr, res0->ai_addr, res0->ai_addrlen); memcpy(addr, res0->ai_addr, res0->ai_addrlen);
else else
ret = -1; ret = -1;
freeaddrinfo(res0); freeaddrinfo(res0);
return ret == 0; return ret == 0;
#else /* HAVE_GETADDRINFO */ #else /* HAVE_GETADDRINFO */
assert(ip_str); if (ip_str == NULL)
memset(addr, 0, sizeof *addr); ip_str = "0.0.0.0";
#ifdef HAVE_sockaddr_in_len
addr->sin4.sin_len = sizeof(addr->sin4);
#endif
addr->sin4.sin_family = AF_INET; addr->sin4.sin_family = AF_INET;
# ifdef HAVE_INET_ATON # ifdef HAVE_INET_ATON
if (inet_aton(ip_str, &addr->sin4.sin_addr) == 0) if (inet_aton(ip_str, &addr->sin4.sin_addr) == 0)
@@ -162,8 +151,7 @@ ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *str)
if (*str == ':') { if (*str == ':') {
char tmp[NG_INET_ADDRSTRLEN] = "0"; char tmp[NG_INET_ADDRSTRLEN] = "0";
ret = getnameinfo(sa, ng_ipaddr_salen(addr), ret = getnameinfo(sa, ng_ipaddr_salen(addr),
tmp + 1, (socklen_t)sizeof(tmp) - 1, tmp+1, sizeof(tmp) -1, NULL, 0, NI_NUMERICHOST);
NULL, 0, NI_NUMERICHOST);
if (ret == 0) if (ret == 0)
strlcpy(str, tmp, NG_INET_ADDRSTRLEN); strlcpy(str, tmp, NG_INET_ADDRSTRLEN);
} }

View File

@@ -1,19 +1,13 @@
/* /*
* Functions for AF_ agnostic ipv4/ipv6 handling.
*
* (c) 2008 Florian Westphal <fw@strlen.de>, public domain. * (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
*/ */
#ifndef NG_IPADDR_HDR #ifndef NG_IPADDR_HDR
#define NG_IPADDR_HDR #define NG_IPADDR_HDR
#include "portab.h" #include "portab.h"
/**
* @file
* Functions for AF_ agnostic ipv4/ipv6 handling (header).
*/
#include <assert.h>
#include <string.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <netinet/in.h> #include <netinet/in.h>
@@ -49,7 +43,6 @@ typedef struct NG_IP_ADDR_DONTUSE ng_ipaddr_t;
static inline int static inline int
ng_ipaddr_af(const ng_ipaddr_t *a) ng_ipaddr_af(const ng_ipaddr_t *a)
{ {
assert(a != NULL);
#ifdef WANT_IPV6 #ifdef WANT_IPV6
return a->sa.sa_family; return a->sa.sa_family;
#else #else
@@ -62,14 +55,13 @@ ng_ipaddr_af(const ng_ipaddr_t *a)
static inline socklen_t static inline socklen_t
ng_ipaddr_salen(const ng_ipaddr_t *a) ng_ipaddr_salen(const ng_ipaddr_t *a)
{ {
assert(a != NULL);
#ifdef WANT_IPV6 #ifdef WANT_IPV6
assert(a->sa.sa_family == AF_INET || a->sa.sa_family == AF_INET6); assert(a->sa.sa_family == AF_INET || a->sa.sa_family == AF_INET6);
if (a->sa.sa_family == AF_INET6) if (a->sa.sa_family == AF_INET6)
return (socklen_t)sizeof(a->sin6); return sizeof(a->sin6);
#endif #endif
assert(a->sin4.sin_family == AF_INET); assert(a->sin4.sin_family == AF_INET);
return (socklen_t)sizeof(a->sin4); return sizeof(a->sin4);
} }
@@ -79,14 +71,11 @@ ng_ipaddr_getport(const ng_ipaddr_t *a)
#ifdef WANT_IPV6 #ifdef WANT_IPV6
int af = a->sa.sa_family; int af = a->sa.sa_family;
assert(a != NULL);
assert(af == AF_INET || af == AF_INET6); assert(af == AF_INET || af == AF_INET6);
if (af == AF_INET6) if (af == AF_INET6)
return ntohs(a->sin6.sin6_port); return ntohs(a->sin6.sin6_port);
#endif /* WANT_IPV6 */ #endif /* WANT_IPV6 */
assert(a != NULL);
assert(a->sin4.sin_family == AF_INET); assert(a->sin4.sin_family == AF_INET);
return ntohs(a->sin4.sin_port); return ntohs(a->sin4.sin_port);
} }
@@ -95,6 +84,7 @@ ng_ipaddr_getport(const ng_ipaddr_t *a)
* init a ng_ipaddr_t object. * init a ng_ipaddr_t object.
* @param addr: pointer to ng_ipaddr_t to initialize. * @param addr: pointer to ng_ipaddr_t to initialize.
* @param ip_str: ip address in dotted-decimal (ipv4) or hexadecimal (ipv6) notation * @param ip_str: ip address in dotted-decimal (ipv4) or hexadecimal (ipv6) notation
* if ip_str is NULL it is treated as 0.0.0.0/[::]
* @param port: transport layer port number to use. * @param port: transport layer port number to use.
*/ */
GLOBAL bool ng_ipaddr_init PARAMS((ng_ipaddr_t *addr, const char *ip_str, UINT16 port)); GLOBAL bool ng_ipaddr_init PARAMS((ng_ipaddr_t *addr, const char *ip_str, UINT16 port));
@@ -114,17 +104,11 @@ GLOBAL const char *ng_ipaddr_tostr PARAMS((const ng_ipaddr_t *addr));
GLOBAL bool ng_ipaddr_tostr_r PARAMS((const ng_ipaddr_t *addr, char *dest)); GLOBAL bool ng_ipaddr_tostr_r PARAMS((const ng_ipaddr_t *addr, char *dest));
#else #else
static inline const char * static inline const char *
ng_ipaddr_tostr(const ng_ipaddr_t *addr) ng_ipaddr_tostr(const ng_ipaddr_t *addr) { return inet_ntoa(addr->sin4.sin_addr); }
{
assert(addr != NULL);
return inet_ntoa(addr->sin4.sin_addr);
}
static inline bool static inline bool
ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *d) ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *d)
{ {
assert(addr != NULL);
assert(d != NULL);
strlcpy(d, inet_ntoa(addr->sin4.sin_addr), NG_INET_ADDRSTRLEN); strlcpy(d, inet_ntoa(addr->sin4.sin_addr), NG_INET_ADDRSTRLEN);
return true; return true;
} }

View File

@@ -1,5 +1,5 @@
Makefile.am
check-help check-help
check-version check-version
cvs-version.h
cvs-version.new
ngircd ngircd
ngircd.exe

View File

@@ -1,6 +1,6 @@
# #
# ngIRCd -- The Next Generation IRC Daemon # ngIRCd -- The Next Generation IRC Daemon
# Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors # 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
@@ -8,109 +8,38 @@
# (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.51 2008/02/26 22:04:17 fw Exp $
#
__ng_Makefile_am_template__ AUTOMAKE_OPTIONS = ../portab/ansi2knr
EXTRA_DIST = Makefile.ng INCLUDES = -I$(srcdir)/../portab -I$(srcdir)/../tool -I$(srcdir)/../ipaddr
AM_CPPFLAGS = -I$(srcdir)/../portab -I$(srcdir)/../tool -I$(srcdir)/../ipaddr
LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN \ LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN \
-varuse -retvalother -emptyret -unrecog -varuse -retvalother -emptyret -unrecog
sbin_PROGRAMS = ngircd sbin_PROGRAMS = ngircd
ngircd_SOURCES = \ ngircd_SOURCES = ngircd.c array.c channel.c client.c conf.c conn.c conn-func.c \
ngircd.c \ conn-zip.c hash.c io.c irc.c irc-channel.c irc-info.c irc-login.c \
array.c \ irc-mode.c irc-op.c irc-oper.c irc-server.c irc-write.c lists.c log.c \
channel.c \ match.c numeric.c parse.c rendezvous.c resolve.c
class.c \
client.c \
client-cap.c \
conf.c \
conn.c \
conn-encoding.c \
conn-func.c \
conn-ssl.c \
conn-zip.c \
hash.c \
io.c \
irc.c \
irc-cap.c \
irc-channel.c \
irc-encoding.c \
irc-info.c \
irc-login.c \
irc-metadata.c \
irc-mode.c \
irc-op.c \
irc-oper.c \
irc-server.c \
irc-write.c \
lists.c \
log.c \
login.c \
match.c \
numeric.c \
op.c \
pam.c \
parse.c \
proc.c \
resolve.c \
sighandlers.c
ngircd_LDFLAGS = -L../portab -L../tool -L../ipaddr ngircd_LDFLAGS = -L../portab -L../tool -L../ipaddr
ngircd_LDADD = -lngportab -lngtool -lngipaddr ngircd_LDADD = -lngportab -lngtool -lngipaddr
noinst_HEADERS = \ noinst_HEADERS = ngircd.h array.h channel.h client.h conf.h conn.h conn-func.h \
ngircd.h \ conn-zip.h hash.h io.h irc.h irc-channel.h irc-info.h irc-login.h \
array.h \ irc-mode.h irc-op.h irc-oper.h irc-server.h irc-write.h lists.h log.h \
channel.h \ match.h numeric.h parse.h rendezvous.h resolve.h \
class.h \ defines.h messages.h
client.h \
client-cap.h \
conf.h \
conf-ssl.h \
conn.h \
conn-encoding.h \
conn-func.h \
conn-ssl.h \
conn-zip.h \
defines.h \
hash.h \
io.h \
irc.h \
irc-cap.h \
irc-channel.h \
irc-encoding.h \
irc-info.h \
irc-login.h \
irc-macros.h \
irc-metadata.h \
irc-mode.h \
irc-op.h \
irc-oper.h \
irc-server.h \
irc-write.h \
lists.h \
log.h \
login.h \
match.h \
messages.h \
numeric.h \
op.h \
pam.h \
parse.h \
proc.h \
resolve.h \
sighandlers.h
clean-local: clean-local:
rm -f check-version check-help lint.out rm -f check-version check-help lint.out
maintainer-clean-local: maintainer-clean-local:
rm -f Makefile Makefile.in Makefile.am rm -f Makefile Makefile.in
check-version: Makefile check-version: Makefile
echo "#!/bin/sh" > check-version echo "#!/bin/sh" > check-version
@@ -129,7 +58,7 @@ lint:
for f in *.c; do \ for f in *.c; do \
echo "checking $$f ..."; \ echo "checking $$f ..."; \
splint $$f $(LINTARGS) -I$(srcdir) -I$(srcdir)/.. \ splint $$f $(LINTARGS) -I$(srcdir) -I$(srcdir)/.. \
$(AM_CPPFLAGS) $(AM_CFLAGS) >lint.out 2>&1; \ $(INCLUDES) $(AM_CFLAGS) >lint.out 2>&1; \
grep "no warnings" lint.out > /dev/null 2>&1; \ grep "no warnings" lint.out > /dev/null 2>&1; \
if [ $$? -ne 0 ]; then \ if [ $$? -ne 0 ]; then \
waswarning=1; \ waswarning=1; \

View File

@@ -5,30 +5,32 @@
* (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.
* *
* libarray - dynamically allocate arrays. * functions to dynamically allocate arrays.
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de) * Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
*
*/ */
/**
* @file
* Functions to dynamically allocate arrays.
*/
/* Additionan debug messages related to array handling: 0=off / 1=on */
#define DEBUG_ARRAY 0
#include "array.h" #include "array.h"
static char UNUSED id[] = "$Id: array.c,v 1.15 2007/11/18 15:05:35 alex Exp $";
#include <assert.h> #include <assert.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h>
#if DEBUG_ARRAY
#include "log.h" #include "log.h"
#endif
#define array_UNUSABLE(x) ( !(x)->mem ) /* Enable more Debug messages in alloc / append / memmove code. */
/* #define DEBUG_ARRAY */
#define array_UNUSABLE(x) ( !(x)->mem || (0 == (x)->allocated) )
#define ALIGN_32U(x) (((x)+(unsigned)31 ) & ~((unsigned)31))
#define ALIGN_1024U(x) (((x)+(unsigned)1023) & ~((unsigned)1023))
#define ALIGN_4096U(x) (((x)+(unsigned)4095) & ~((unsigned)4095))
static bool static bool
@@ -59,6 +61,7 @@ void *
array_alloc(array * a, size_t size, size_t pos) array_alloc(array * a, size_t size, size_t pos)
{ {
size_t alloc, pos_plus1 = pos + 1; size_t alloc, pos_plus1 = pos + 1;
size_t aligned = 0;
char *tmp; char *tmp;
assert(size > 0); assert(size > 0);
@@ -67,22 +70,43 @@ array_alloc(array * a, size_t size, size_t pos)
return NULL; return NULL;
if (a->allocated < alloc) { if (a->allocated < alloc) {
#if DEBUG_ARRAY if (alloc < 128) {
Log(LOG_DEBUG, "array_alloc(): changing size from %u to %u bytes.", aligned = ALIGN_32U(alloc);
a->allocated, alloc); } else {
if (alloc < 4096) {
aligned = ALIGN_1024U(alloc);
} else {
aligned = ALIGN_4096U(alloc);
}
}
#ifdef DEBUG_ARRAY
Log(LOG_DEBUG, "array_alloc(): rounded %u to %u bytes.", alloc, aligned);
#endif #endif
assert(aligned >= alloc);
if (aligned < alloc) /* rounding overflow */
return NULL;
alloc = aligned;
#ifdef DEBUG_ARRAY
Log(LOG_DEBUG, "array_alloc(): changing size from %u to %u bytes.",
a->allocated, aligned);
#endif
tmp = realloc(a->mem, alloc); tmp = realloc(a->mem, alloc);
if (!tmp) if (!tmp)
return NULL; return NULL;
a->mem = tmp; a->mem = tmp;
a->allocated = alloc; a->allocated = alloc;
assert(a->allocated > a->used);
memset(a->mem + a->used, 0, a->allocated - a->used); memset(a->mem + a->used, 0, a->allocated - a->used);
a->used = alloc; a->used = alloc;
} }
assert(a->allocated >= a->used);
return a->mem + (pos * size); return a->mem + (pos * size);
} }
@@ -97,7 +121,6 @@ array_length(const array * const a, size_t membersize)
if (array_UNUSABLE(a)) if (array_UNUSABLE(a))
return 0; return 0;
assert(a->allocated);
return membersize ? a->used / membersize : 0; return membersize ? a->used / membersize : 0;
} }
@@ -109,7 +132,6 @@ array_copy(array * dest, const array * const src)
if (array_UNUSABLE(src)) if (array_UNUSABLE(src))
return false; return false;
assert(src->allocated);
return array_copyb(dest, src->mem, src->used); return array_copyb(dest, src->mem, src->used);
} }
@@ -168,7 +190,7 @@ array_catb(array * dest, const char *src, size_t len)
assert(ptr != NULL); assert(ptr != NULL);
#if DEBUG_ARRAY #ifdef DEBUG_ARRAY
Log(LOG_DEBUG, Log(LOG_DEBUG,
"array_catb(): appending %u bytes to array (now %u bytes in array).", "array_catb(): appending %u bytes to array (now %u bytes in array).",
len, tmp); len, tmp);
@@ -248,7 +270,7 @@ void
array_free(array * a) array_free(array * a)
{ {
assert(a != NULL); assert(a != NULL);
#if DEBUG_ARRAY #ifdef DEBUG_ARRAY
Log(LOG_DEBUG, Log(LOG_DEBUG,
"array_free(): %u bytes free'd (%u bytes still used at time of free()).", "array_free(): %u bytes free'd (%u bytes still used at time of free()).",
a->allocated, a->used); a->allocated, a->used);
@@ -259,14 +281,6 @@ array_free(array * a)
a->used = 0; a->used = 0;
} }
void
array_free_wipe(array *a)
{
size_t bytes = a->allocated;
if (bytes)
memset(a->mem, 0, bytes);
array_free(a);
}
void * void *
array_start(const array * const a) array_start(const array * const a)
@@ -314,7 +328,7 @@ array_moveleft(array * a, size_t membersize, size_t pos)
if (!bytepos) if (!bytepos)
return; /* nothing to do */ return; /* nothing to do */
#if DEBUG_ARRAY #ifdef DEBUG_ARRAY
Log(LOG_DEBUG, Log(LOG_DEBUG,
"array_moveleft(): %u bytes used in array, starting at position %u.", "array_moveleft(): %u bytes used in array, starting at position %u.",
a->used, bytepos); a->used, bytepos);

View File

@@ -7,16 +7,13 @@
* *
* libarray - dynamically allocate arrays. * libarray - dynamically allocate arrays.
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de) * Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
*
* $Id: array.h,v 1.4 2005/08/30 13:36:32 fw Exp $
*/ */
#ifndef array_h_included #ifndef array_h_included
#define array_h_included #define array_h_included
/**
* @file
* Functions to dynamically allocate arrays (header).
*/
#include "portab.h" #include "portab.h"
typedef struct { typedef struct {
@@ -84,7 +81,7 @@ extern void* array_get PARAMS((array* a, size_t membersize, size_t pos));
/* free the contents of this array. */ /* free the contents of this array. */
extern void array_free PARAMS((array* a)); extern void array_free PARAMS((array* a));
/* overwrite array with zeros before free */ /* overwrite array with zeroes before free */
extern void array_free_wipe PARAMS((array* a)); extern void array_free_wipe PARAMS((array* a));
/* return pointer to first element in this array */ /* return pointer to first element in this array */

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +1,22 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors. * Copyright (c)2001,2002 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
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (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: channel.h,v 1.35 2008/02/05 16:31:35 fw Exp $
*
* Channel management (header)
*/ */
#ifndef __channel_h__ #ifndef __channel_h__
#define __channel_h__ #define __channel_h__
/**
* @file
* Channel management (header)
*/
#if defined(__channel_c__) | defined(S_SPLINT_S) #if defined(__channel_c__) | defined(S_SPLINT_S)
@@ -31,16 +32,13 @@ typedef struct _CHANNEL
char modes[CHANNEL_MODE_LEN]; /* Channel modes */ char modes[CHANNEL_MODE_LEN]; /* Channel modes */
array topic; /* Topic of the channel */ array topic; /* Topic of the channel */
#ifndef STRICT_RFC #ifndef STRICT_RFC
time_t creation_time; /* Channel creation time */
time_t topic_time; /* Time when topic was set */ time_t topic_time; /* Time when topic was set */
char topic_who[CLIENT_NICK_LEN];/* Nickname of user that set topic */ char topic_who[CLIENT_NICK_LEN];/* Nickname of user that set topic */
#endif #endif
char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */ char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
unsigned long maxusers; /* Maximum number of members (mode "l") */ unsigned long maxusers; /* Maximum number of members (mode "l") */
struct list_head list_bans; /* list head of banned users */ struct list_head list_bans; /* list head of banned users */
struct list_head list_excepts; /* list head of (ban) exception list */
struct list_head list_invites; /* list head of invited users */ struct list_head list_invites; /* list head of invited users */
array keyfile; /* Name of the channel key file */
} CHANNEL; } CHANNEL;
typedef struct _CLIENT2CHAN typedef struct _CLIENT2CHAN
@@ -48,7 +46,7 @@ typedef struct _CLIENT2CHAN
struct _CLIENT2CHAN *next; struct _CLIENT2CHAN *next;
CLIENT *client; CLIENT *client;
CHANNEL *channel; CHANNEL *channel;
char modes[CHANNEL_MODE_LEN]; /* User-Modes in Channel */ char modes[CHANNEL_MODE_LEN]; /* User-Modes in dem Channel */
} CL2CHAN; } CL2CHAN;
#else #else
@@ -59,33 +57,32 @@ typedef POINTER CL2CHAN;
#endif #endif
GLOBAL struct list_head *Channel_GetListBans PARAMS((CHANNEL *c)); GLOBAL struct list_head *Channel_GetListBans PARAMS((CHANNEL *c));
GLOBAL struct list_head *Channel_GetListExcepts PARAMS((CHANNEL *c));
GLOBAL struct list_head *Channel_GetListInvites PARAMS((CHANNEL *c)); GLOBAL struct list_head *Channel_GetListInvites PARAMS((CHANNEL *c));
GLOBAL void Channel_Init PARAMS(( void )); GLOBAL void Channel_Init PARAMS(( void ));
GLOBAL void Channel_InitPredefined PARAMS(( void )); GLOBAL void Channel_InitPredefined PARAMS(( void ));
GLOBAL void Channel_Exit PARAMS(( void )); GLOBAL void Channel_Exit PARAMS(( void ));
GLOBAL bool Channel_Join PARAMS(( CLIENT *Client, const char *Name )); GLOBAL bool Channel_Join PARAMS(( CLIENT *Client, char *Name ));
GLOBAL bool Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason )); GLOBAL bool Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason ));
GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, const char *Reason )); GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, char *Reason ));
GLOBAL void Channel_Kick PARAMS((CLIENT *Peer, CLIENT *Target, CLIENT *Origin, GLOBAL void Channel_Kick PARAMS(( CLIENT *Client, CLIENT *Origin, char *Name, char *Reason ));
const char *Name, const char *Reason));
GLOBAL unsigned long Channel_CountVisible PARAMS((CLIENT *Client)); GLOBAL unsigned long Channel_Count PARAMS(( void ));
GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan )); GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan ));
GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client )); GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client ));
GLOBAL const char *Channel_Name PARAMS(( const CHANNEL *Chan )); GLOBAL const char *Channel_Name PARAMS(( const CHANNEL *Chan ));
GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_Topic PARAMS(( CHANNEL *Chan )); GLOBAL char *Channel_Topic PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_Key PARAMS(( CHANNEL *Chan )); GLOBAL char *Channel_Key PARAMS(( CHANNEL *Chan ));
GLOBAL unsigned long Channel_MaxUsers PARAMS(( CHANNEL *Chan )); GLOBAL unsigned long Channel_MaxUsers PARAMS(( CHANNEL *Chan ));
GLOBAL void Channel_SetTopic PARAMS(( CHANNEL *Chan, CLIENT *Client, const char *Topic )); GLOBAL void Channel_SetTopic PARAMS(( CHANNEL *Chan, CLIENT *Client, char *Topic ));
GLOBAL void Channel_SetModes PARAMS(( CHANNEL *Chan, const char *Modes )); GLOBAL void Channel_SetModes PARAMS(( CHANNEL *Chan, char *Modes ));
GLOBAL void Channel_SetKey PARAMS(( CHANNEL *Chan, const char *Key )); GLOBAL void Channel_SetKey PARAMS(( CHANNEL *Chan, char *Key ));
GLOBAL void Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, unsigned long Count )); GLOBAL void Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, unsigned long Count ));
GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name )); GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name ));
@@ -105,49 +102,27 @@ GLOBAL bool Channel_IsValidName PARAMS(( const char *Name ));
GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode )); GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode ));
GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode )); GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode ));
GLOBAL bool Channel_HasMode PARAMS(( CHANNEL *Chan, char Mode ));
GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
GLOBAL bool Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode )); GLOBAL bool Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
GLOBAL bool Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode )); GLOBAL bool Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
GLOBAL bool Channel_UserHasMode PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
GLOBAL char *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client )); GLOBAL char *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client ));
GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client )); GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client ));
GLOBAL bool Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client, GLOBAL bool Channel_Write PARAMS(( CHANNEL *Chan, CLIENT *From, CLIENT *Client, const char *Text ));
const char *Command, bool SendErrors, GLOBAL bool Channel_Notice PARAMS(( CHANNEL *Chan, CLIENT *From, CLIENT *Client, const char *Text));
const char *Text));
GLOBAL CHANNEL *Channel_Create PARAMS(( const char *Name )); GLOBAL CHANNEL *Channel_Create PARAMS(( char *Name ));
#ifndef STRICT_RFC #ifndef STRICT_RFC
GLOBAL unsigned int Channel_TopicTime PARAMS(( CHANNEL *Chan )); GLOBAL unsigned int Channel_TopicTime PARAMS(( CHANNEL *Chan ));
GLOBAL char *Channel_TopicWho PARAMS(( CHANNEL *Chan )); GLOBAL char *Channel_TopicWho PARAMS(( CHANNEL *Chan ));
GLOBAL unsigned int Channel_CreationTime PARAMS(( CHANNEL *Chan ));
#endif #endif
GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask, bool OnlyOnce ));
GLOBAL bool Channel_AddBan PARAMS((CHANNEL *c, const char *Mask )); GLOBAL bool Channel_AddBan PARAMS((CHANNEL *c, const char *Mask ));
GLOBAL bool Channel_AddExcept PARAMS((CHANNEL *c, const char *Mask));
GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask,
bool OnlyOnce));
GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c)); GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL bool Channel_ShowExcepts PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c)); GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c));
GLOBAL void Channel_LogServer PARAMS((const char *msg));
GLOBAL bool Channel_CheckKey PARAMS((CHANNEL *Chan, CLIENT *Client,
const char *Key));
GLOBAL void Channel_CheckAdminRights PARAMS((CHANNEL *Chan, CLIENT *Client,
CLIENT *Origin, bool *OnChannel,
bool *AdminOk, bool *UseServerMode));
#define Channel_IsLocal(c) (Channel_Name(c)[0] == '&')
#define Channel_IsModeless(c) (Channel_Name(c)[0] == '+')
#endif #endif
/* -eof- */ /* -eof- */

View File

@@ -1,138 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
*
* 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.
*/
#include "portab.h"
/**
* @file
* User class management.
*/
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include "conn.h"
#include "lists.h"
#include "class.h"
struct list_head My_Classes[CLASS_COUNT];
GLOBAL void
Class_Init(void)
{
memset(My_Classes, 0, sizeof(My_Classes));
}
GLOBAL void
Class_Exit(void)
{
int i;
for (i = 0; i < CLASS_COUNT; Lists_Free(&My_Classes[i++]));
}
GLOBAL bool
Class_GetMemberReason(const int Class, CLIENT *Client, char *reason, size_t len)
{
char str[COMMAND_LEN];
assert(Class < CLASS_COUNT);
assert(Client != NULL);
strlcpy(str, "listed", sizeof(str));
if (!Lists_CheckReason(&My_Classes[Class], Client, str, sizeof(str)))
return false;
switch(Class) {
case CLASS_GLINE:
snprintf(reason, len, "\"%s\" (G-Line)", str);
break;
case CLASS_KLINE:
snprintf(reason, len, "\"%s\" (K-Line)", str);
break;
default:
snprintf(reason, len, "%s", str);
break;
}
return true;
}
/**
* Check if a client is banned from this server: GLINE, KLINE.
*
* If a client isn't allowed to connect, it will be disconnected again.
*
* @param Client The client to check.
* @return CONNECTED if client is allowed to join, DISCONNECTED if not.
*/
GLOBAL bool
Class_HandleServerBans(CLIENT *Client)
{
char reject[COMMAND_LEN];
assert(Client != NULL);
if (Class_GetMemberReason(CLASS_GLINE, Client, reject, sizeof(reject)) ||
Class_GetMemberReason(CLASS_KLINE, Client, reject, sizeof(reject))) {
Client_Reject(Client, reject, true);
return DISCONNECTED;
}
return CONNECTED;
}
GLOBAL bool
Class_AddMask(const int Class, const char *Pattern, time_t ValidUntil,
const char *Reason)
{
char mask[MASK_LEN];
assert(Class < CLASS_COUNT);
assert(Pattern != NULL);
assert(Reason != NULL);
Lists_MakeMask(Pattern, mask, sizeof(mask));
return Lists_Add(&My_Classes[Class], mask,
ValidUntil, Reason);
}
GLOBAL void
Class_DeleteMask(const int Class, const char *Pattern)
{
char mask[MASK_LEN];
assert(Class < CLASS_COUNT);
assert(Pattern != NULL);
Lists_MakeMask(Pattern, mask, sizeof(mask));
Lists_Del(&My_Classes[Class], mask);
}
GLOBAL struct list_head *
Class_GetList(const int Class)
{
assert(Class < CLASS_COUNT);
return &My_Classes[Class];
}
GLOBAL void
Class_Expire(void)
{
Lists_Expire(&My_Classes[CLASS_GLINE], "G-Line");
Lists_Expire(&My_Classes[CLASS_KLINE], "K-Line");
}
/* -eof- */

View File

@@ -1,42 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
*
* 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.
*/
#ifndef __class_h__
#define __class_h__
/**
* @file
* User class management.
*/
#define CLASS_KLINE 0
#define CLASS_GLINE 1
#define CLASS_COUNT 2
GLOBAL void Class_Init PARAMS((void));
GLOBAL void Class_Exit PARAMS((void));
GLOBAL bool Class_AddMask PARAMS((const int Class, const char *Pattern,
const time_t ValidUntil, const char *Reason));
GLOBAL void Class_DeleteMask PARAMS((const int Class, const char *Pattern));
GLOBAL bool Class_GetMemberReason PARAMS((const int Class, CLIENT *Client,
char *reason, size_t len));
GLOBAL bool Class_HandleServerBans PARAMS((CLIENT *Client));
GLOBAL struct list_head *Class_GetList PARAMS((const int Class));
GLOBAL void Class_Expire PARAMS((void));
#endif /* __class_h__ */
/* -eof- */

View File

@@ -1,69 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
*
* 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.
*/
#define __client_cap_c__
#include "portab.h"
/**
* @file
* Functions to deal with IRC Capabilities
*/
#include <assert.h>
#include "conn.h"
#include "log.h"
#include "client-cap.h"
GLOBAL int
Client_Cap(CLIENT *Client)
{
assert (Client != NULL);
return Client->capabilities;
}
GLOBAL void
Client_CapSet(CLIENT *Client, int Cap)
{
assert(Client != NULL);
assert(Cap >= 0);
Client->capabilities = Cap;
LogDebug("Set new capability of \"%s\" to %d.",
Client_ID(Client), Client->capabilities);
}
GLOBAL void
Client_CapAdd(CLIENT *Client, int Cap)
{
assert(Client != NULL);
assert(Cap > 0);
Client->capabilities |= Cap;
LogDebug("Add capability %d, new capability of \"%s\" is %d.",
Cap, Client_ID(Client), Client->capabilities);
}
GLOBAL void
Client_CapDel(CLIENT *Client, int Cap)
{
assert(Client != NULL);
assert(Cap > 0);
Client->capabilities &= ~Cap;
LogDebug("Delete capability %d, new capability of \"%s\" is %d.",
Cap, Client_ID(Client), Client->capabilities);
}
/* -eof- */

View File

@@ -1,31 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
*
* 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.
*/
#ifndef __client_cap_h__
#define __client_cap_h__
/**
* @file
* Functions to deal with IRC Capabilities (header)
*/
#define CLIENT_CAP_PENDING 1 /* Capability negotiation pending */
#define CLIENT_CAP_SUPPORTED 2 /* Client supports IRC capabilities */
#define CLIENT_CAP_MULTI_PREFIX 4 /* multi-prefix */
GLOBAL int Client_Cap PARAMS((CLIENT *Client));
GLOBAL void Client_CapSet PARAMS((CLIENT *Client, int Cap));
GLOBAL void Client_CapAdd PARAMS((CLIENT *Client, int Cap));
GLOBAL void Client_CapDel PARAMS((CLIENT *Client, int Cap));
#endif

File diff suppressed because it is too large Load Diff

View File

@@ -1,42 +1,37 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors. * Copyright (c)2001,2002 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
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (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: client.h,v 1.46 2007/01/23 16:07:19 alex Exp $
*
* Client management (header)
*/ */
#ifndef __client_h__ #ifndef __client_h__
#define __client_h__ #define __client_h__
/**
* @file
* Client management (header)
*/
#define CLIENT_UNKNOWN 0x0001 /* connection of unknown type */ #define CLIENT_UNKNOWN 1 /* connection of unknown type */
#define CLIENT_GOTPASS 0x0002 /* client did send PASS */ #define CLIENT_GOTPASS 2 /* client did send PASS */
#define CLIENT_GOTNICK 0x0004 /* client did send NICK */ #define CLIENT_GOTNICK 4 /* client did send NICK */
#define CLIENT_GOTUSER 0x0008 /* client did send USER */ #define CLIENT_GOTUSER 8 /* client did send USER */
#define CLIENT_USER 0x0010 /* client is an IRC user */ #define CLIENT_USER 16 /* client is an IRC user */
#define CLIENT_SERVER 0x0020 /* client is a server */ #define CLIENT_SERVER 32 /* client is a server */
#define CLIENT_SERVICE 0x0040 /* client is a service */ #define CLIENT_SERVICE 64 /* client is a service */
#define CLIENT_UNKNOWNSERVER 0x0080 /* unregistered server connection */ #define CLIENT_UNKNOWNSERVER 128 /* unregistered server connection */
#define CLIENT_GOTPASS_2813 0x0100 /* client did send PASS, RFC 2813 style */
#ifndef STRICT_RFC
# define CLIENT_WAITAUTHPING 0x0200 /* waiting for AUTH PONG from client */
#endif
#define CLIENT_WAITCAPEND 0x0400 /* waiting for "CAP END" command */
#define CLIENT_ANY 0xFFFF
#define CLIENT_TYPE int #define CLIENT_TYPE int
#include "defines.h" #include "defines.h"
#if defined(__client_c__) | defined(__client_cap_c__) | defined(S_SPLINT_S) #if defined(__client_c__) | defined(S_SPLINT_S)
typedef struct _CLIENT typedef struct _CLIENT
{ {
@@ -48,21 +43,15 @@ typedef struct _CLIENT
CONN_ID conn_id; /* ID of the connection (if local) or NONE (remote) */ CONN_ID conn_id; /* ID of the connection (if local) or NONE (remote) */
struct _CLIENT *introducer; /* ID of the servers which the client is connected to */ struct _CLIENT *introducer; /* ID of the servers which the client is connected to */
struct _CLIENT *topserver; /* toplevel servers (only valid if client is a server) */ struct _CLIENT *topserver; /* toplevel servers (only valid if client is a server) */
char pwd[CLIENT_PASS_LEN]; /* password received of the client */
char host[CLIENT_HOST_LEN]; /* hostname of the client */ char host[CLIENT_HOST_LEN]; /* hostname of the client */
char *cloaked; /* cloaked hostname of the client */
char *ipa_text; /* textual representaton of IP address */
char user[CLIENT_USER_LEN]; /* user name ("login") */ char user[CLIENT_USER_LEN]; /* user name ("login") */
#if defined(PAM)
char orig_user[CLIENT_AUTHUSER_LEN];
/* original user name supplied by USER command */
#endif
char info[CLIENT_INFO_LEN]; /* long user name (user) / info text (server) */ char info[CLIENT_INFO_LEN]; /* long user name (user) / info text (server) */
char modes[CLIENT_MODE_LEN]; /* client modes */ char modes[CLIENT_MODE_LEN]; /* client modes */
int hops, token, mytoken; /* "hops" and "Token" (see SERVER command) */ int hops, token, mytoken; /* "hops" and "Token" (see SERVER command) */
char *away; /* AWAY text (valid if mode 'a' is set) */ bool oper_by_me; /* client is local IRC operator on this server? */
char away[CLIENT_AWAY_LEN]; /* AWAY text (valid if mode 'a' is set) */
char flags[CLIENT_FLAGS_LEN]; /* flags of the client */ char flags[CLIENT_FLAGS_LEN]; /* flags of the client */
char *account_name; /* login account (for services) */
int capabilities; /* enabled IRC capabilities */
} CLIENT; } CLIENT;
#else #else
@@ -86,20 +75,17 @@ typedef struct _WHOWAS
GLOBAL void Client_Init PARAMS(( void )); GLOBAL void Client_Init PARAMS(( void ));
GLOBAL void Client_Exit PARAMS(( void )); GLOBAL void Client_Exit PARAMS(( void ));
GLOBAL CLIENT *Client_NewLocal PARAMS(( CONN_ID Idx, const char *Hostname, int Type, bool Idented )); GLOBAL CLIENT *Client_NewLocal PARAMS(( CONN_ID Idx, char *Hostname, int Type, bool Idented ));
GLOBAL CLIENT *Client_NewRemoteServer PARAMS(( CLIENT *Introducer, const char *Hostname, CLIENT *TopServer, int Hops, int Token, const char *Info, bool Idented )); GLOBAL CLIENT *Client_NewRemoteServer PARAMS(( CLIENT *Introducer, char *Hostname, CLIENT *TopServer, int Hops, int Token, char *Info, bool Idented ));
GLOBAL CLIENT *Client_NewRemoteUser PARAMS(( CLIENT *Introducer, const char *Nick, int Hops, const char *User, const char *Hostname, int Token, const char *Modes, const char *Info, bool Idented )); GLOBAL CLIENT *Client_NewRemoteUser PARAMS(( CLIENT *Introducer, char *Nick, int Hops, char *User, char *Hostname, int Token, char *Modes, char *Info, bool Idented ));
GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, const char *LogMsg, const char *FwdMsg, bool SendQuit )); GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, char *LogMsg, char *FwdMsg, bool SendQuit ));
GLOBAL CLIENT *Client_ThisServer PARAMS(( void )); GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token )); GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
GLOBAL bool Client_Announce PARAMS(( CLIENT *Client, CLIENT *Prefix, CLIENT *User )); GLOBAL CLIENT *Client_Search PARAMS(( char *ID ));
GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
GLOBAL CLIENT *Client_SearchServer PARAMS(( const char *ID ));
GLOBAL CLIENT *Client_First PARAMS(( void )); GLOBAL CLIENT *Client_First PARAMS(( void ));
GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c )); GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c ));
@@ -107,45 +93,37 @@ GLOBAL int Client_Type PARAMS(( CLIENT *Client ));
GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client )); GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client ));
GLOBAL char *Client_ID PARAMS(( CLIENT *Client )); GLOBAL char *Client_ID PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Mask PARAMS(( CLIENT *Client )); GLOBAL char *Client_Mask PARAMS(( CLIENT *Client ));
GLOBAL char *Client_MaskCloaked PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Info PARAMS(( CLIENT *Client )); GLOBAL char *Client_Info PARAMS(( CLIENT *Client ));
GLOBAL char *Client_User PARAMS(( CLIENT *Client )); GLOBAL char *Client_User PARAMS(( CLIENT *Client ));
#ifdef PAM
GLOBAL char *Client_OrigUser PARAMS(( CLIENT *Client ));
#endif
GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client )); GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client ));
GLOBAL char *Client_HostnameCloaked PARAMS((CLIENT *Client)); GLOBAL char *Client_Password PARAMS(( CLIENT *Client ));
GLOBAL char *Client_HostnameDisplayed PARAMS(( CLIENT *Client ));
GLOBAL const char *Client_IPAText PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Modes PARAMS(( CLIENT *Client )); GLOBAL char *Client_Modes PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Flags PARAMS(( CLIENT *Client )); GLOBAL char *Client_Flags PARAMS(( CLIENT *Client ));
GLOBAL CLIENT *Client_Introducer PARAMS(( CLIENT *Client )); GLOBAL CLIENT *Client_Introducer PARAMS(( CLIENT *Client ));
GLOBAL bool Client_OperByMe PARAMS(( CLIENT *Client ));
GLOBAL int Client_Hops PARAMS(( CLIENT *Client )); GLOBAL int Client_Hops PARAMS(( CLIENT *Client ));
GLOBAL int Client_Token PARAMS(( CLIENT *Client )); GLOBAL int Client_Token PARAMS(( CLIENT *Client ));
GLOBAL int Client_MyToken PARAMS(( CLIENT *Client )); GLOBAL int Client_MyToken PARAMS(( CLIENT *Client ));
GLOBAL CLIENT *Client_TopServer PARAMS(( CLIENT *Client )); GLOBAL CLIENT *Client_TopServer PARAMS(( CLIENT *Client ));
GLOBAL CLIENT *Client_NextHop PARAMS(( CLIENT *Client )); GLOBAL CLIENT *Client_NextHop PARAMS(( CLIENT *Client ));
GLOBAL char *Client_Away PARAMS(( CLIENT *Client )); GLOBAL char *Client_Away PARAMS(( CLIENT *Client ));
GLOBAL char *Client_AccountName PARAMS((CLIENT *Client));
GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client )); GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client ));
GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode )); GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
GLOBAL bool Client_HasFlag PARAMS(( CLIENT *Client, char Flag ));
GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, const char *Hostname )); GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, char *Hostname ));
GLOBAL void Client_SetIPAText PARAMS(( CLIENT *Client, const char *IPAText )); GLOBAL void Client_SetID PARAMS(( CLIENT *Client, char *Nick ));
GLOBAL void Client_SetID PARAMS(( CLIENT *Client, const char *Nick )); GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, char *User, bool Idented ));
GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, const char *User, bool Idented )); GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, char *Info ));
GLOBAL void Client_SetOrigUser PARAMS(( CLIENT *Client, const char *User )); GLOBAL void Client_SetPassword PARAMS(( CLIENT *Client, char *Pwd ));
GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, const char *Info ));
GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type )); GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type ));
GLOBAL void Client_SetHops PARAMS(( CLIENT *Client, int Hops )); GLOBAL void Client_SetHops PARAMS(( CLIENT *Client, int Hops ));
GLOBAL void Client_SetToken PARAMS(( CLIENT *Client, int Token )); GLOBAL void Client_SetToken PARAMS(( CLIENT *Client, int Token ));
GLOBAL void Client_SetModes PARAMS(( CLIENT *Client, const char *Modes )); GLOBAL void Client_SetOperByMe PARAMS(( CLIENT *Client, bool OperByMe ));
GLOBAL void Client_SetFlags PARAMS(( CLIENT *Client, const char *Flags )); GLOBAL void Client_SetModes PARAMS(( CLIENT *Client, char *Modes ));
GLOBAL void Client_SetFlags PARAMS(( CLIENT *Client, char *Flags ));
GLOBAL void Client_SetIntroducer PARAMS(( CLIENT *Client, CLIENT *Introducer )); GLOBAL void Client_SetIntroducer PARAMS(( CLIENT *Client, CLIENT *Introducer ));
GLOBAL void Client_SetAway PARAMS(( CLIENT *Client, const char *Txt )); GLOBAL void Client_SetAway PARAMS(( CLIENT *Client, char *Txt ));
GLOBAL void Client_SetAccountName PARAMS((CLIENT *Client, const char *AccountName));
GLOBAL bool Client_ModeAdd PARAMS(( CLIENT *Client, char Mode )); GLOBAL bool Client_ModeAdd PARAMS(( CLIENT *Client, char Mode ));
GLOBAL bool Client_ModeDel PARAMS(( CLIENT *Client, char Mode )); GLOBAL bool Client_ModeDel PARAMS(( CLIENT *Client, char Mode ));
@@ -171,21 +149,8 @@ GLOBAL int Client_GetLastWhowasIndex PARAMS(( void ));
GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client )); GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client ));
GLOBAL const char *Client_TypeText PARAMS((CLIENT *Client));
GLOBAL void Client_Reject PARAMS((CLIENT *Client, const char *Reason,
bool InformClient));
GLOBAL void Client_Introduce PARAMS((CLIENT *From, CLIENT *Client, int Type));
GLOBAL void Client_UpdateCloakedHostname PARAMS((CLIENT *Client,
CLIENT *Originator,
const char *hostname));
#ifdef DEBUG
GLOBAL void Client_DebugDump PARAMS((void));
#endif
#endif #endif
/* -eof- */ /* -eof- */

View File

@@ -1,49 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
*/
#ifndef conf_ssl_h
#define conf_ssl_h
/**
* @file
* SSL related definitions
*/
#ifdef HAVE_LIBSSL
#define SSL_SUPPORT
#include <openssl/ssl.h>
#endif
#ifdef HAVE_LIBGNUTLS
#define SSL_SUPPORT
#include <gnutls/gnutls.h>
#ifndef LIBGNUTLS_VERSION_MAJOR
#define gnutls_certificate_credentials_t gnutls_certificate_credentials
#define gnutls_cipher_algorithm_t gnutls_cipher_algorithm
#define gnutls_datum_t gnutls_datum
#define gnutls_dh_params_t gnutls_dh_params
#define gnutls_session_t gnutls_session
#define gnutls_transport_ptr_t gnutls_transport_ptr
#endif
#endif
#ifdef SSL_SUPPORT
struct ConnSSL_State {
#ifdef HAVE_LIBSSL
SSL *ssl;
#endif
#ifdef HAVE_LIBGNUTLS
gnutls_session_t gnutls_session;
void *cookie; /* pointer to server configuration structure
(for outgoing connections), or NULL. */
#endif
char *fingerprint;
};
#endif
GLOBAL bool ConnSSL_InitLibrary PARAMS((void));
#endif /* conf_ssl_h */
/* -eof- */

File diff suppressed because it is too large Load Diff

View File

@@ -1,22 +1,22 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors. * Copyright (c)2001,2002 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
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (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.49 2008/03/18 20:12:47 fw Exp $
*
* Configuration management (header)
*/ */
#ifndef __conf_h__ #ifndef __conf_h__
#define __conf_h__ #define __conf_h__
/**
* @file
* Configuration management (header)
*/
#include <time.h> #include <time.h>
#include "defines.h" #include "defines.h"
@@ -24,190 +24,111 @@
#include "portab.h" #include "portab.h"
#include "tool.h" #include "tool.h"
#include "ng_ipaddr.h" #include "ng_ipaddr.h"
#include "proc.h"
#include "conf-ssl.h"
/** typedef struct _Conf_Oper
* Configured IRC operator. {
* Please note the the name of the IRC operaor and his nick have nothing to char name[CLIENT_PASS_LEN]; /* Name (ID) of IRC operator */
* do with each other! The IRC operator is only identified by the name and char pwd[CLIENT_PASS_LEN]; /* Password */
* password configured in this structure. char *mask;
*/ } CONF_OPER;
struct Conf_Oper {
char name[CLIENT_PASS_LEN]; /**< Name (ID) */
char pwd[CLIENT_PASS_LEN]; /**< Password */
char *mask; /**< Allowed host mask */
};
/**
* Configured server.
* Peers to which this daemon should establish an outgoing server link must
* have set a port number; all other servers are allowed to connect to this one.
*/
typedef struct _Conf_Server typedef struct _Conf_Server
{ {
char host[HOST_LEN]; /**< Hostname */ char host[HOST_LEN]; /* Hostname */
char name[CLIENT_ID_LEN]; /**< IRC client ID */ char name[CLIENT_ID_LEN]; /* IRC-Client-ID */
char pwd_in[CLIENT_PASS_LEN]; /**< Password which must be received */ char pwd_in[CLIENT_PASS_LEN]; /* Password which must be received */
char pwd_out[CLIENT_PASS_LEN]; /**< Password to send to the peer */ char pwd_out[CLIENT_PASS_LEN]; /* Password to send to peer */
UINT16 port; /**< Server port to connect to */ UINT16 port; /* Server port */
int group; /**< Group ID of this server */ int group; /* Group of server */
time_t lasttry; /**< Time of last connection attempt */ time_t lasttry; /* Last connect attempt */
PROC_STAT res_stat; /**< Status of the resolver */ RES_STAT res_stat; /* Status of the resolver */
int flags; /**< Server flags */ int flags; /* Flags */
CONN_ID conn_id; /**< ID of server connection or NONE */ CONN_ID conn_id; /* ID of server connection or NONE */
ng_ipaddr_t bind_addr; /**< Source address to use for outgoing ng_ipaddr_t bind_addr; /* source address to use for outgoing connections */
connections */ ng_ipaddr_t dst_addr[2]; /* list of addresses to connect to */
ng_ipaddr_t dst_addr[2]; /**< List of addresses to connect to */
#ifdef SSL_SUPPORT
bool SSLConnect; /**< Establish connection using SSL? */
#endif
char svs_mask[CLIENT_ID_LEN]; /**< Mask of nicknames that should be
treated and counted as services */
} CONF_SERVER; } CONF_SERVER;
typedef struct _Conf_Channel
#ifdef SSL_SUPPORT {
/** Configuration options required for SSL support */ char name[CHANNEL_NAME_LEN]; /* Name of the channel */
struct SSLOptions { char modes[CHANNEL_MODE_LEN]; /* Initial channel modes */
char *KeyFile; /**< SSL key file */ char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
char *CertFile; /**< SSL certificate file */ unsigned long maxusers; /* maximum usercount for this channel, mode "l" */
char *DHFile; /**< File containing DH parameters */ array topic; /* Initial topic */
array ListenPorts; /**< Array of listening SSL ports */ } CONF_CHANNEL;
array KeyFilePassword; /**< Key file password */
char *CipherList; /**< Set SSL cipher list to use */
};
#endif
/** Pre-defined channels */
struct Conf_Channel {
char name[CHANNEL_NAME_LEN]; /**< Name of the channel */
char modes[CHANNEL_MODE_LEN]; /**< Initial channel modes */
char key[CLIENT_PASS_LEN]; /**< Channel key ("password", mode "k" ) */
char topic[COMMAND_LEN]; /**< Initial topic */
char keyfile[512]; /**< Path and name of channel key file */
unsigned long maxusers; /**< User limit for this channel, mode "l" */
};
#define CONF_SFLAG_ONCE 1 /* Delete this entry after next disconnect */ #define CONF_SFLAG_ONCE 1 /* Delete this entry after next disconnect */
#define CONF_SFLAG_DISABLED 2 /* This server configuration entry is disabled */ #define CONF_SFLAG_DISABLED 2 /* This server configuration entry is disabled */
/** Name (ID, "nick") of this server */ /* Name ("Nick") of the servers */
GLOBAL char Conf_ServerName[CLIENT_ID_LEN]; GLOBAL char Conf_ServerName[CLIENT_ID_LEN];
/** Server info text */ /* Server info text */
GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN]; GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN];
/** Global server passwort */ /* Global server passwort */
GLOBAL char Conf_ServerPwd[CLIENT_PASS_LEN]; GLOBAL char Conf_ServerPwd[CLIENT_PASS_LEN];
/** Administrative information */ /* Administrative information */
GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN]; GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN];
GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN]; GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN];
GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN]; GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN];
/** Network name (optional, no spaces allowed) */ /* File with MOTD text */
GLOBAL char Conf_Network[CLIENT_INFO_LEN]; GLOBAL char Conf_MotdFile[FNAME_LEN];
/** Message of the day (MOTD) of this server */ /* Phrase with MOTD text */
GLOBAL array Conf_Motd; GLOBAL char Conf_MotdPhrase[LINE_LEN];
/** Help text of this server */ /* Ports the server should listen on */
GLOBAL array Conf_Helptext;
/** Array of ports this server should listen on */
GLOBAL array Conf_ListenPorts; GLOBAL array Conf_ListenPorts;
/** Address to which sockets should be bound to or empty (=all) */ /* Address to which the socket should be bound or empty (=all) */
GLOBAL char *Conf_ListenAddress; GLOBAL char Conf_ListenAddress[16];
/** User and group ID this daemon should run with */ /* User and group ID the server should run with */
GLOBAL uid_t Conf_UID; GLOBAL uid_t Conf_UID;
GLOBAL gid_t Conf_GID; GLOBAL gid_t Conf_GID;
/** The directory to chroot() into */ /* A directory to chroot() in */
GLOBAL char Conf_Chroot[FNAME_LEN]; GLOBAL char Conf_Chroot[FNAME_LEN];
/** Full path and name of a file to which the PID of daemon should be written */ /* File with PID of daemon */
GLOBAL char Conf_PidFile[FNAME_LEN]; GLOBAL char Conf_PidFile[FNAME_LEN];
/** Timeout (in seconds) for PING commands */ /* Timeouts for PING and PONG */
GLOBAL int Conf_PingTimeout; GLOBAL int Conf_PingTimeout;
/** Timeout (in seconds) for PONG replies */
GLOBAL int Conf_PongTimeout; GLOBAL int Conf_PongTimeout;
/** Seconds between connection attempts to other servers */ /* Seconds between connect attempts to other servers */
GLOBAL int Conf_ConnectRetry; GLOBAL int Conf_ConnectRetry;
/** Array of configured IRC operators */ /* Operators */
GLOBAL array Conf_Opers; GLOBAL CONF_OPER Conf_Oper[MAX_OPERATORS];
GLOBAL unsigned int Conf_Oper_Count;
/** Array of configured IRC servers */ /* Servers */
GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS]; GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS];
/** Array of pre-defined channels */ /* Pre-defined channels */
GLOBAL array Conf_Channels; GLOBAL CONF_CHANNEL Conf_Channel[MAX_DEFCHANNELS];
GLOBAL unsigned int Conf_Channel_Count;
/* Pre-defined channels only */
GLOBAL bool Conf_PredefChannelsOnly;
/** String containing all locally allowed channel prefixes for new channels */ /* Are IRC operators allowed to always use MODE? */
GLOBAL char Conf_AllowedChannelTypes[8];
/** Flag indicating if IRC operators are allowed to always use MODE (true) */
GLOBAL bool Conf_OperCanMode; GLOBAL bool Conf_OperCanMode;
/** Flag indicating if IRC operators get AutoOp in persistent (+P) channels */ /* Disable all DNS functions? */
GLOBAL bool Conf_OperChanPAutoOp; GLOBAL bool Conf_NoDNS;
/** /* listen for incoming ipv6 connections if OS supports it (default: yes)? */
* If true, mask channel MODE commands of IRC operators to the server. GLOBAL bool Conf_ListenIPv6;
* Background: ircd2 will ignore channel MODE commands if an IRC operator
* gives channel operator privileges to someone without being a channel operator
* himself. This enables a workaround: it masks the MODE command as coming
* from the IRC server and not the IRC operator.
*/
GLOBAL bool Conf_OperServerMode;
/** Flag indicating if remote IRC operators are allowed to manage this server */ /* listen for incoming ipv4 connections if OS supports it (default: yes)? */
GLOBAL bool Conf_AllowRemoteOper; GLOBAL bool Conf_ListenIPv4;
/** Cloaked hostname of the clients */
GLOBAL char Conf_CloakHost[CLIENT_ID_LEN];
/** Cloaked hostname for clients that did +x */
GLOBAL char Conf_CloakHostModeX[CLIENT_ID_LEN];
/** Salt for hostname hash for cloaked hostnames */
GLOBAL char Conf_CloakHostSalt[CLIENT_ID_LEN];
/** Use nickname as user name? */
GLOBAL bool Conf_CloakUserToNick;
/** Enable all DNS functions? */
GLOBAL bool Conf_DNS;
/** Enable IDENT lookups, even when compiled with support for it */
GLOBAL bool Conf_Ident;
/** Enable "more privacy" mode and "censor" some user-related information */
GLOBAL bool Conf_MorePrivacy;
/** Enable NOTICE AUTH messages on connect */
GLOBAL bool Conf_NoticeAuth;
/** Enable all usage of PAM, even when compiled with support for it */
GLOBAL bool Conf_PAM;
/** Don't require all clients to send a password an to be PAM authenticated */
GLOBAL bool Conf_PAMIsOptional;
/** Disable all CTCP commands except for /me ? */
GLOBAL bool Conf_ScrubCTCP;
/** Default user modes for new local clients */
GLOBAL char Conf_DefaultUserModes[CLIENT_MODE_LEN];
/* /*
* try to connect to remote systems using the ipv6 protocol, * try to connect to remote systems using the ipv6 protocol,
@@ -215,67 +136,38 @@ GLOBAL char Conf_DefaultUserModes[CLIENT_MODE_LEN];
*/ */
GLOBAL bool Conf_ConnectIPv6; GLOBAL bool Conf_ConnectIPv6;
/** Try to connect to remote systems using the IPv4 protocol (true) */ /* same as above, but for ipv4 hosts, default: yes */
GLOBAL bool Conf_ConnectIPv4; GLOBAL bool Conf_ConnectIPv4;
/** Idle timout (seconds), after which the daemon should exit */ /* If an IRC op gives chanop privileges without being a chanop,
GLOBAL int Conf_IdleTimeout; * ircd2 will ignore the command. This enables a workaround:
* It masks the command as coming from the server */
GLOBAL bool Conf_OperServerMode;
/** Maximum number of simultaneous connections to this server */ /* Maximum number of connections to this server */
GLOBAL int Conf_MaxConnections; 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 */ /* Maximum number of connections per IP address */
GLOBAL int Conf_MaxConnectionsIP; GLOBAL int Conf_MaxConnectionsIP;
/** Maximum length of a nickname */ /* Maximum length of a nick name */
GLOBAL unsigned int Conf_MaxNickLength; GLOBAL unsigned int Conf_MaxNickLength;
/** Maximum number of channels returned to /list */
GLOBAL int Conf_MaxListSize;
#ifndef STRICT_RFC
/** Require "AUTH PING-PONG" on login */
GLOBAL bool Conf_AuthPing;
#endif
#ifdef SYSLOG
/* Syslog "facility" */
GLOBAL int Conf_SyslogFacility;
#endif
GLOBAL void Conf_Init PARAMS((void)); GLOBAL void Conf_Init PARAMS((void));
GLOBAL bool Conf_Rehash PARAMS((void)); GLOBAL bool Conf_Rehash PARAMS((void));
GLOBAL int Conf_Test PARAMS((void)); GLOBAL int Conf_Test PARAMS((void));
GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx )); GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx ));
GLOBAL bool Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx )); GLOBAL void Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx ));
GLOBAL int Conf_GetServer PARAMS(( CONN_ID Idx )); GLOBAL int Conf_GetServer PARAMS(( CONN_ID Idx ));
GLOBAL bool Conf_EnableServer PARAMS(( const char *Name, UINT16 Port )); GLOBAL bool Conf_EnableServer PARAMS(( char *Name, UINT16 Port ));
GLOBAL bool Conf_EnablePassiveServer PARAMS((const char *Name)); GLOBAL bool Conf_EnablePassiveServer PARAMS((const char *Name));
GLOBAL bool Conf_DisableServer PARAMS(( const char *Name )); GLOBAL bool Conf_DisableServer PARAMS(( char *Name ));
GLOBAL bool Conf_AddServer PARAMS(( const char *Name, UINT16 Port, const char *Host, const char *MyPwd, const char *PeerPwd )); GLOBAL bool Conf_AddServer PARAMS(( char *Name, UINT16 Port, char *Host, char *MyPwd, char *PeerPwd ));
GLOBAL bool Conf_NickIsService PARAMS((int ConfServer, const char *Nick));
GLOBAL bool Conf_NickIsBlocked PARAMS((const char *Nick));
#ifdef SSL_SUPPORT
GLOBAL bool Conf_SSLInUse PARAMS((void));
#endif
/* Password required by WEBIRC command */
GLOBAL char Conf_WebircPwd[CLIENT_PASS_LEN];
#ifdef DEBUG
GLOBAL void Conf_DebugDump PARAMS((void));
#endif
#endif #endif

View File

@@ -1,188 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
*
* 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.
*/
#define __conn_encoding_c__
#define CONN_MODULE
#include "portab.h"
/**
* @file
* Functions to deal with character encodings and conversions
*/
#include <assert.h>
#include <stdio.h>
#include <string.h>
#include <strings.h>
#include "conn.h"
#ifdef ICONV
#include "log.h"
#include "conn-encoding.h"
char Encoding_Buffer[COMMAND_LEN];
char *Convert_Message PARAMS((iconv_t Handle, char *Message));
/**
* Set client character encoding on a connection.
*
* @param Conn Connection identifier.
* @param ClientEnc Client encoding (for example "ASCII", "MacRoman", ...).
* @return true on success, false otherwise.
*/
GLOBAL bool
Conn_SetEncoding(CONN_ID Conn, const char *ClientEnc)
{
char client_enc[25], server_enc[25];
assert(Conn > NONE);
assert(ClientEnc != NULL);
Conn_UnsetEncoding(Conn);
/* Is the client character set identical to server character set? */
if (strcasecmp(ClientEnc, "UTF-8") == 0)
return true;
snprintf(client_enc, sizeof(client_enc), "%s//TRANSLIT", ClientEnc);
snprintf(server_enc, sizeof(server_enc), "%s//TRANSLIT", "UTF-8");
My_Connections[Conn].iconv_from = iconv_open(server_enc, client_enc);
if (My_Connections[Conn].iconv_from == (iconv_t)(-1)) {
Conn_UnsetEncoding(Conn);
return false;
}
My_Connections[Conn].iconv_to = iconv_open(client_enc, server_enc);
if (My_Connections[Conn].iconv_to == (iconv_t)(-1)) {
Conn_UnsetEncoding(Conn);
return false;
}
LogDebug("Set client character set of connection \"%d\" to \"%s\".",
Conn, client_enc);
return true;
}
/**
* Remove client character encoding conversion on a connection.
*
* @param Conn Connection identifier.
*/
GLOBAL void
Conn_UnsetEncoding(CONN_ID Conn)
{
assert(Conn > NONE);
if (My_Connections[Conn].iconv_from != (iconv_t)(-1))
iconv_close(My_Connections[Conn].iconv_from);
if (My_Connections[Conn].iconv_to != (iconv_t)(-1))
iconv_close(My_Connections[Conn].iconv_to);
My_Connections[Conn].iconv_from = (iconv_t)(-1);
My_Connections[Conn].iconv_to = (iconv_t)(-1);
LogDebug("Unset character conversion of connection %d.", Conn);
}
/**
* Convert the encoding of a given message.
*
* This function uses a static buffer for the result of the encoding
* conversion which is overwritten by subsequent calls to this function!
*
* @param Handle libiconv handle.
* @param Message The message to convert.
* @return Pointer to the result.
*/
char *
Convert_Message(iconv_t Handle, char *Message)
{
size_t in_left, out_left;
char *out = Encoding_Buffer;
assert (Handle != (iconv_t)(-1));
assert (Message != NULL);
in_left = strlen(Message);
out_left = sizeof(Encoding_Buffer) - 1;
if (iconv(Handle, &Message, &in_left, &out, &out_left) == (size_t)(-1)) {
/* An error occurred! */
LogDebug("Error converting message encoding!");
strlcpy(out, Message, sizeof(Encoding_Buffer));
iconv(Handle, NULL, NULL, NULL, NULL);
} else
*out = '\0';
return Encoding_Buffer;
}
#endif /* ICONV */
/**
* Convert encoding of a message received from a connection.
*
* Note 1: If no conversion is required, this function returns the original
* pointer to the message.
*
* Note 2: This function uses Convert_Message(), so subsequent calls to this
* function will overwrite the earlier results.
*
* @param Conn Connection identifier.
* @param Message The message to convert.
* @return Pointer to the result.
* @see Convert_Message
*/
GLOBAL char *
Conn_EncodingFrom(UNUSED CONN_ID Conn, char *Message)
{
assert(Conn > NONE);
assert (Message != NULL);
#ifdef ICONV
if (My_Connections[Conn].iconv_from != (iconv_t)(-1))
return Convert_Message(My_Connections[Conn].iconv_from, Message);
#endif
return Message;
}
/**
* Convert encoding of a message for sending on a connection.
*
* Note 1: If no conversion is required, this function returns the original
* pointer to the message.
*
* Note 2: This function uses Convert_Message(), so subsequent calls to this
* function will overwrite the earlier results.
*
* @param Conn Connection identifier.
* @param Message The message to convert.
* @return Pointer to the result.
* @see Convert_Message
*/
GLOBAL char *
Conn_EncodingTo(UNUSED CONN_ID Conn, char *Message)
{
assert(Conn > NONE);
assert (Message != NULL);
#ifdef ICONV
if (My_Connections[Conn].iconv_to != (iconv_t)(-1))
return Convert_Message(My_Connections[Conn].iconv_to, Message);
#endif
return Message;
}
/* -eof- */

View File

@@ -1,30 +0,0 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2012 Alexander Barton (alex@barton.de) and Contributors.
*
* 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.
*/
#ifndef __conn_encoding_h__
#define __conn_encoding_h__
/**
* @file
* Functions to deal with character encodings and conversions (header)
*/
#ifdef ICONV
GLOBAL bool Conn_SetEncoding PARAMS((CONN_ID Idx, const char *ClientEnc));
GLOBAL void Conn_UnsetEncoding PARAMS((CONN_ID Idx));
#endif /* ICONV */
GLOBAL char* Conn_EncodingFrom PARAMS((CONN_ID Idx, char *Message));
GLOBAL char* Conn_EncodingTo PARAMS((CONN_ID Idx, char *Message));
#endif

View File

@@ -1,57 +1,44 @@
/* /*
* ngIRCd -- The Next Generation IRC Daemon * ngIRCd -- The Next Generation IRC Daemon
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors. * Copyright (c)2001,2002 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
* the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
* (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.
*
* Connection management: Global functions
*/ */
#define CONN_MODULE #define CONN_MODULE
#include "portab.h" #include "portab.h"
/** static char UNUSED id[] = "$Id: conn-func.c,v 1.12 2008/03/11 14:05:27 alex Exp $";
* @file
* Connection management: Global functions
*/
#include "imp.h"
#include <assert.h> #include <assert.h>
#include <time.h> #include <string.h>
#ifdef DEBUG
#include "log.h" #include "log.h"
#endif
#include "conn.h"
#include "conn.h"
#include "client.h"
#include "exp.h"
#include "conn-func.h" #include "conn-func.h"
/**
* Update "idle timestamp", the time of the last visible user action
* (e. g. like sending messages, joining or leaving channels).
*
* @param Idx Connection index.
*/
GLOBAL void GLOBAL void
Conn_UpdateIdle( CONN_ID Idx ) Conn_UpdateIdle( CONN_ID Idx )
{ {
/* Idle-Timer zuruecksetzen */
assert( Idx > NONE ); assert( Idx > NONE );
My_Connections[Idx].lastprivmsg = time( NULL ); My_Connections[Idx].lastprivmsg = time( NULL );
} }
/**
* Update "ping timestamp", the time of the last outgoing PING request.
*
* @param Idx Connection index.
*/
GLOBAL void
Conn_UpdatePing(CONN_ID Idx)
{
assert(Idx > NONE);
My_Connections[Idx].lastping = time(NULL);
}
/* /*
* Get signon time of a connection. * Get signon time of a connection.
@@ -66,77 +53,92 @@ Conn_GetSignon(CONN_ID Idx)
GLOBAL time_t GLOBAL time_t
Conn_GetIdle( CONN_ID Idx ) Conn_GetIdle( CONN_ID Idx )
{ {
/* Return Idle-Timer of a connetion */ /* Idle-Time einer Verbindung liefern (in Sekunden) */
assert( Idx > NONE ); assert( Idx > NONE );
return time( NULL ) - My_Connections[Idx].lastprivmsg; return time( NULL ) - My_Connections[Idx].lastprivmsg;
} /* Conn_GetIdle */ } /* Conn_GetIdle */
GLOBAL time_t GLOBAL time_t
Conn_LastPing( CONN_ID Idx ) Conn_LastPing( CONN_ID Idx )
{ {
/* Zeitpunkt des letzten PING liefern */
assert( Idx > NONE ); assert( Idx > NONE );
return My_Connections[Idx].lastping; return My_Connections[Idx].lastping;
} /* Conn_LastPing */ } /* Conn_LastPing */
/**
* Add "penalty time" for a connection.
*
* During the "penalty time" the socket is ignored completely, no new data
* is read. This function only increases the penalty, it is not possible to
* decrease the penalty time.
*
* @param Idex Connection index.
* @param Seconds Seconds to add.
* @see Conn_ResetPenalty
*/
GLOBAL void GLOBAL void
Conn_SetPenalty( CONN_ID Idx, time_t Seconds ) Conn_SetPenalty( CONN_ID Idx, time_t Seconds )
{ {
/* Penalty-Delay fuer eine Verbindung (in Sekunden) setzen;
* waehrend dieser Zeit wird der entsprechende Socket vom Server
* bei Lese-Operationen komplett ignoriert. Der Delay kann mit
* dieser Funktion nur erhoeht, nicht aber verringert werden. */
time_t t; time_t t;
assert( Idx > NONE ); assert( Idx > NONE );
assert( Seconds >= 0 ); assert( Seconds >= 0 );
t = time(NULL); t = time( NULL ) + Seconds;
if (My_Connections[Idx].delaytime < t) if (t > My_Connections[Idx].delaytime)
My_Connections[Idx].delaytime = t; My_Connections[Idx].delaytime = t;
My_Connections[Idx].delaytime += Seconds;
#ifdef DEBUG #ifdef DEBUG
Log(LOG_DEBUG, Log(LOG_DEBUG, "Add penalty time on connection %d: %ld second(s).",
"Add penalty time on connection %d: %ld second%s, total %ld second%s.", Idx, (long)Seconds);
Idx, (long)Seconds, Seconds != 1 ? "s" : "",
My_Connections[Idx].delaytime - t,
My_Connections[Idx].delaytime - t != 1 ? "s" : "");
#endif #endif
} /* Conn_SetPenalty */ } /* Conn_SetPenalty */
GLOBAL void
Conn_ResetPenalty( CONN_ID Idx )
{
assert( Idx > NONE );
My_Connections[Idx].delaytime = 0;
} /* Conn_ResetPenalty */
GLOBAL void GLOBAL void
Conn_ClearFlags( void ) Conn_ClearFlags( void )
{ {
/* Alle Connection auf "nicht-markiert" setzen */
CONN_ID i; CONN_ID i;
for( i = 0; i < Pool_Size; i++ ) My_Connections[i].flag = 0; for( i = 0; i < Pool_Size; i++ ) My_Connections[i].flag = 0;
} /* Conn_ClearFlags */ } /* Conn_ClearFlags */
GLOBAL int GLOBAL int
Conn_Flag( CONN_ID Idx ) Conn_Flag( CONN_ID Idx )
{ {
/* Ist eine Connection markiert (true) oder nicht? */
assert( Idx > NONE ); assert( Idx > NONE );
return My_Connections[Idx].flag; return My_Connections[Idx].flag;
} /* Conn_Flag */ } /* Conn_Flag */
GLOBAL void GLOBAL void
Conn_SetFlag( CONN_ID Idx, int Flag ) Conn_SetFlag( CONN_ID Idx, int Flag )
{ {
/* Connection markieren */
assert( Idx > NONE ); assert( Idx > NONE );
My_Connections[Idx].flag = Flag; My_Connections[Idx].flag = Flag;
} /* Conn_SetFlag */ } /* Conn_SetFlag */
GLOBAL CONN_ID GLOBAL CONN_ID
Conn_First( void ) Conn_First( void )
{ {
/* Connection-Struktur der ersten Verbindung liefern;
* Ist keine Verbindung vorhanden, wird NONE geliefert. */
CONN_ID i; CONN_ID i;
for( i = 0; i < Pool_Size; i++ ) for( i = 0; i < Pool_Size; i++ )
@@ -146,9 +148,13 @@ Conn_First( void )
return NONE; return NONE;
} /* Conn_First */ } /* Conn_First */
GLOBAL CONN_ID GLOBAL CONN_ID
Conn_Next( CONN_ID Idx ) Conn_Next( CONN_ID Idx )
{ {
/* Naechste Verbindungs-Struktur liefern; existiert keine
* weitere, so wird NONE geliefert. */
CONN_ID i = NONE; CONN_ID i = NONE;
assert( Idx > NONE ); assert( Idx > NONE );
@@ -160,6 +166,7 @@ Conn_Next( CONN_ID Idx )
return NONE; return NONE;
} /* Conn_Next */ } /* Conn_Next */
GLOBAL UINT16 GLOBAL UINT16
Conn_Options( CONN_ID Idx ) Conn_Options( CONN_ID Idx )
{ {
@@ -167,15 +174,6 @@ Conn_Options( CONN_ID Idx )
return My_Connections[Idx].options; return My_Connections[Idx].options;
} /* Conn_Options */ } /* Conn_Options */
/**
* Set connection option.
*/
GLOBAL void
Conn_SetOption(CONN_ID Idx, int Option)
{
assert(Idx > NONE);
Conn_OPTION_ADD(&My_Connections[Idx], Option);
} /* Conn_SetOption */
/** /**
* Get the start time of the connection. * Get the start time of the connection.
@@ -197,12 +195,12 @@ Conn_StartTime( CONN_ID Idx )
return 0; return 0;
} /* Conn_StartTime */ } /* Conn_StartTime */
/**
* return number of bytes queued for writing
*/
GLOBAL size_t GLOBAL size_t
Conn_SendQ( CONN_ID Idx ) Conn_SendQ( CONN_ID Idx )
{ {
/* Laenge der Daten im Schreibbuffer liefern */
assert( Idx > NONE ); assert( Idx > NONE );
#ifdef ZLIB #ifdef ZLIB
if( My_Connections[Idx].options & CONN_ZIP ) if( My_Connections[Idx].options & CONN_ZIP )
@@ -212,34 +210,32 @@ Conn_SendQ( CONN_ID Idx )
return array_bytes(&My_Connections[Idx].wbuf); return array_bytes(&My_Connections[Idx].wbuf);
} /* Conn_SendQ */ } /* Conn_SendQ */
/**
* return number of messages sent on this connection so far
*/
GLOBAL long GLOBAL long
Conn_SendMsg( CONN_ID Idx ) Conn_SendMsg( CONN_ID Idx )
{ {
/* Anzahl gesendeter Nachrichten liefern */
assert( Idx > NONE ); assert( Idx > NONE );
return My_Connections[Idx].msg_out; return My_Connections[Idx].msg_out;
} /* Conn_SendMsg */ } /* Conn_SendMsg */
/**
* return number of (uncompressed) bytes sent
* on this connection so far
*/
GLOBAL long GLOBAL long
Conn_SendBytes( CONN_ID Idx ) Conn_SendBytes( CONN_ID Idx )
{ {
/* Anzahl gesendeter Bytes (unkomprimiert) liefern */
assert( Idx > NONE ); assert( Idx > NONE );
return My_Connections[Idx].bytes_out; return My_Connections[Idx].bytes_out;
} /* Conn_SendBytes */ } /* Conn_SendBytes */
/**
* return number of bytes pending in read buffer
*/
GLOBAL size_t GLOBAL size_t
Conn_RecvQ( CONN_ID Idx ) Conn_RecvQ( CONN_ID Idx )
{ {
/* Laenge der Daten im Lesebuffer liefern */
assert( Idx > NONE ); assert( Idx > NONE );
#ifdef ZLIB #ifdef ZLIB
if( My_Connections[Idx].options & CONN_ZIP ) if( My_Connections[Idx].options & CONN_ZIP )
@@ -249,36 +245,26 @@ Conn_RecvQ( CONN_ID Idx )
return array_bytes(&My_Connections[Idx].rbuf); return array_bytes(&My_Connections[Idx].rbuf);
} /* Conn_RecvQ */ } /* Conn_RecvQ */
/**
* return number of messages received on this connection so far
*/
GLOBAL long GLOBAL long
Conn_RecvMsg( CONN_ID Idx ) Conn_RecvMsg( CONN_ID Idx )
{ {
/* Anzahl empfangener Nachrichten liefern */
assert( Idx > NONE ); assert( Idx > NONE );
return My_Connections[Idx].msg_in; return My_Connections[Idx].msg_in;
} /* Conn_RecvMsg */ } /* Conn_RecvMsg */
/**
* return number of (uncompressed) bytes received on this
* connection so far
*/
GLOBAL long GLOBAL long
Conn_RecvBytes( CONN_ID Idx ) Conn_RecvBytes( CONN_ID Idx )
{ {
/* Anzahl empfangener Bytes (unkomprimiert) liefern */
assert( Idx > NONE ); assert( Idx > NONE );
return My_Connections[Idx].bytes_in; return My_Connections[Idx].bytes_in;
} /* Conn_RecvBytes */ } /* Conn_RecvBytes */
/**
* Return the remote IP address of this connection as string.
*/
GLOBAL const char *
Conn_IPA(CONN_ID Idx)
{
assert (Idx > NONE);
return ng_ipaddr_tostr(&My_Connections[Idx].addr);
}
GLOBAL void GLOBAL void
Conn_ResetWCounter( void ) Conn_ResetWCounter( void )
@@ -286,10 +272,12 @@ Conn_ResetWCounter( void )
WCounter = 0; WCounter = 0;
} /* Conn_ResetWCounter */ } /* Conn_ResetWCounter */
GLOBAL long GLOBAL long
Conn_WCounter( void ) Conn_WCounter( void )
{ {
return WCounter; return WCounter;
} /* Conn_WCounter */ } /* Conn_WCounter */
/* -eof- */ /* -eof- */

Some files were not shown because too many files have changed in this diff Show More