mirror of
https://github.com/osmarks/ngircd.git
synced 2025-09-29 07:24:04 +00:00
Compare commits
50 Commits
rel-24-rc1
...
rel-25
Author | SHA1 | Date | |
---|---|---|---|
![]() |
74631fa728 | ||
![]() |
1d4f80b422 | ||
![]() |
fe01ef9a51 | ||
![]() |
96bad2b861 | ||
![]() |
456eea6f18 | ||
![]() |
7690716e4f | ||
![]() |
c97fb2e93e | ||
![]() |
c8162a80be | ||
![]() |
e8e04b4c8f | ||
![]() |
a38eea8987 | ||
![]() |
d0f9d3d92e | ||
![]() |
bb4101cd6c | ||
![]() |
e29e15ca27 | ||
![]() |
8bd88be8ad | ||
![]() |
fb760d9473 | ||
![]() |
7f2d21f962 | ||
![]() |
6af9476cad | ||
![]() |
263c5edb60 | ||
![]() |
b4f7aae67e | ||
![]() |
798de94d65 | ||
![]() |
ac341176da | ||
![]() |
6a622c0084 | ||
![]() |
91ef17aba2 | ||
![]() |
13761f1ec9 | ||
![]() |
03acae970d | ||
![]() |
8f0c705029 | ||
![]() |
d803ff0525 | ||
![]() |
3559940e4a | ||
![]() |
34bdb0d98a | ||
![]() |
7ed22d0b22 | ||
![]() |
d9f81ac669 | ||
![]() |
7207bef418 | ||
![]() |
619a3f3ff2 | ||
![]() |
05640f9285 | ||
![]() |
e009fc87d5 | ||
![]() |
c37d6971d6 | ||
![]() |
ddeb7b20eb | ||
![]() |
543f44bff8 | ||
![]() |
bc728f92de | ||
![]() |
2f6f6929d8 | ||
![]() |
f244ab2219 | ||
![]() |
e17d4bdec7 | ||
![]() |
b2ba3e745a | ||
![]() |
3890304b54 | ||
![]() |
a69866f3f9 | ||
![]() |
7071476d2a | ||
![]() |
3c627dd70d | ||
![]() |
879d550408 | ||
![]() |
2bb917f05a | ||
![]() |
72acf53d69 |
2
.mailmap
2
.mailmap
@@ -11,4 +11,6 @@ Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu> <dana+70@cs.ucsd.edu>
|
||||
|
||||
DNS <dns@rbose.org>
|
||||
|
||||
Götz Hoffart <goetz@hoffart.de>
|
||||
|
||||
LucentW <lucent@zebes.info> <LucentW@users.noreply.github.com>
|
||||
|
13
AUTHORS
13
AUTHORS
@@ -2,7 +2,7 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2016 Alexander Barton and Contributors.
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
@@ -13,7 +13,7 @@ Note:
|
||||
If you have comments, patches or something else, please feel free to post
|
||||
a mail to the ngIRCd mailing list: <ngircd-ml@ngircd.barton.de> (please see
|
||||
<http://ngircd.barton.de/support.php> for details) or join the ngIRCd IRC
|
||||
channel: <irc://irc.barton.de/ngircd>.
|
||||
channel "#ngircd" on irc.barton.de: <irc://irc.barton.de/ngircd>.
|
||||
|
||||
Don't mail the people listed here directly, if possible!
|
||||
|
||||
@@ -29,6 +29,7 @@ Contributors
|
||||
Ali Shemiran <ashemira@ucsd.edu>
|
||||
Ask Bjørn Hansen <ask@develooper.com>
|
||||
Benjamin Pineau <ben@zouh.org>
|
||||
Bernd Kuhls <bernd.kuhls@t-online.de>
|
||||
Brandon Beresini <beresini@google.com>
|
||||
Brett Smith <brett@w3.org>
|
||||
Brian Collins <bricollins@gmail.com>
|
||||
@@ -41,25 +42,29 @@ DNS <dns@rbose.org>
|
||||
Eric Grunow <egrunow@ucsd.edu>
|
||||
Federico G. Schwindt <fgsch@lodoss.net>
|
||||
Gabor Adam Toth <tg@tgbit.net>
|
||||
Goetz Hoffart <goetz@hoffart.de>
|
||||
Götz Hoffart <goetz@hoffart.de>
|
||||
Ian Chard <ian@chard.org>
|
||||
Ilja Osthoff <i.osthoff@gmx.net>
|
||||
ItsOnlyBinary <ItsOnlyBinary@users.noreply.github.com>
|
||||
James Lu <james@overdrivenetworks.com>
|
||||
Jari Aalto <jari.aalto@cante.net>
|
||||
LucentW <lucent@zebes.info>
|
||||
Mantas Mikulėnas <grawity@gmail.com>
|
||||
Neale Pickett <neale@woozle.org>
|
||||
Peter Powell <petpow@saberuk.com>
|
||||
Rolf Eike Beer <eike@sf-mail.de>
|
||||
Rosen Penev <rosenp@gmail.com>
|
||||
Roy Sindre Norangshol <roy.sindre@norangshol.no>
|
||||
Scott Perry <scperry@ucsd.edu>
|
||||
Sean Reifschneider <jafo-rpms@tummy.com>
|
||||
Sebastian Köhler <sebkoehler@whoami.org.uk>
|
||||
shankari <shankari@eecs.berkeley.edu>
|
||||
Tassilo Schweyer <dev@welterde.de>
|
||||
Tom Ryder <tom@sanctum.geek.nz>
|
||||
Unit 193 <unit193@ubuntu.com>
|
||||
William Pitcock <nenolod@dereferenced.org>
|
||||
Yecheng Fu <cofyc.jackson@gmail.com>
|
||||
xor <xorboy@gmail.com>
|
||||
Yecheng Fu <cofyc.jackson@gmail.com>
|
||||
|
||||
|
||||
Code snippets
|
||||
|
82
ChangeLog
82
ChangeLog
@@ -2,14 +2,92 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2016 Alexander Barton and Contributors.
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- ChangeLog --
|
||||
|
||||
|
||||
ngIRCd 24
|
||||
ngIRCd 25 (2019-01-23)
|
||||
|
||||
- Fix documentation of MotdPhrase length, which actually is 126 characters:
|
||||
update sample configuration file as well as the man page. Thanks to
|
||||
shankari <shankari@eecs.berkeley.edu>.
|
||||
Closes #254.
|
||||
- Implement new configuration option "MaxPenaltyTime", which configures the
|
||||
maximum penalty time increase in seconds, per penalty event. Set to -1 for
|
||||
no limit (the default), 0 to disable penalties altogether. ngIRCd doesn't
|
||||
use penalty increases higher than 2 seconds during normal operation, so
|
||||
values higher than 1 rarely make sense.
|
||||
Disabling (or reducing) penalties can greatly speed up "make check" runs
|
||||
for example, see below, but are mostly a debugging feature and normally
|
||||
not meant to be used on production systems!
|
||||
Some example timings running "make check" from my macOS workstation:
|
||||
- MaxPenaltyTime not set: 4:41,79s
|
||||
- "MaxPenaltyTime = 1": 3:14,71s
|
||||
- "MaxPenaltyTime = 0": 25,46s
|
||||
Closes #249 and #251.
|
||||
- Fix compilation without deprecated OpenSSL APIs. Thanks to Rosen Penev
|
||||
<rosenp@gmail.com> for the patch!
|
||||
Closes #252.
|
||||
- Update Xcode project for latest Xcode version (10.0)
|
||||
- Fix some compiler warnings of Apple Xcode/Clang
|
||||
- Allow a 5th parameter in WEBIRC. Thanks to "ItsOnlyBinary".
|
||||
Closes #247.
|
||||
- Update some more documentation files and source code comments.
|
||||
- Platforms.txt: Add and update systems.
|
||||
|
||||
ngIRCd 25~rc1 (2018-08-11)
|
||||
- Update config.guess (2018-03-08) and config.sub (2018-03-08) files.
|
||||
- Correctly retry to establish an outgoing connections when forking of the
|
||||
resolver sub-process failed (for example because of lack of free memory).
|
||||
Until now, such a connection was never retried once this error was hit.
|
||||
Thanks to Robert Obermeier for reporting this bug!
|
||||
Closes #243.
|
||||
- Fix a "use after free" bug which can be triggered on a newly established
|
||||
connection when the daemon handles an ERROR command received from the peer
|
||||
during client login. Thanks a lot to Joseph Bisch <joseph.bisch@gmail.com>
|
||||
for discovering and reporting this issue!
|
||||
- Only send TOPIC updates to a channel when the topic actually changed:
|
||||
This prevents the channel from becoming flooded by unnecessary TOPIC update
|
||||
messages, that can happen when IRC services try to enforce a certain topic
|
||||
but which is already set (at least on the local server), for example.
|
||||
Therefore still forward it to all servers, but don't inform local clients
|
||||
(still update setter and timestamp information, though).
|
||||
- Update Xcode project for latest Xcode version (9.2). This includes adding
|
||||
missing and deleting obsolete file references.
|
||||
- Handle user mode "C" ("Only users that share a channel are allowed to send
|
||||
messages") like user mode "b" ("block private messages and notices"): allow
|
||||
messages from servers, services, and IRC Operators, too. Change proposed by
|
||||
"wowaname" back in 2015 in #ngircd, thanks!
|
||||
- Fix some compiler warnings.
|
||||
- Add contrib/ngircd.logcheck: Some sample logcheck(8) rules.
|
||||
- Allow IRC Ops and remote servers to KILL service clients: such clients
|
||||
behave like regular users, therefore IRC operators and servers should be
|
||||
able to KILL them: for example to resolve nick collisions.
|
||||
Closes #242.
|
||||
- Don't forward KILLs to other servers if they've been blocked locally:
|
||||
This prevents clients from killing IRC services, for example.
|
||||
Closes #238 and #239.
|
||||
- Fix a cross-compiler issue related to the Get_Error() function.
|
||||
Closes #240 and #241.
|
||||
- Update ./doc/Services.txt, enhance configuration examples.
|
||||
|
||||
ngIRCd 24 (2017-01-20)
|
||||
|
||||
- Make sure that ./contrib/platformtest.sh aborts when ./autogen.sh fails.
|
||||
- Update config.guess (2016-10-02) and config.sub (2016-11-04) files.
|
||||
- Build Debian packages with OpenSSL instead of GnuTLS: OpenSSL allows
|
||||
to reload used certificates on runtime for example (which is very
|
||||
useful when using Let's Encrypt), and therefore is preferred. And
|
||||
explicitly specify the "source format".
|
||||
- Fix handling of connection pool allocation and enlargement: up to now,
|
||||
the daemon only enlarged its connection pool when accepting new incoming
|
||||
client or server connections, not when establishing new outgoing server
|
||||
links, which could lead to problems when hitting the configured limit,
|
||||
see "MaxConnections". Thanks to Lukas Braun (k00mi) for reporting this!
|
||||
Closes #231.
|
||||
|
||||
ngIRCd 24~rc1 (2017-01-07)
|
||||
- Enhance systemd service file, and install it in Debian package.
|
||||
|
2
INSTALL
2
INSTALL
@@ -2,7 +2,7 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2016 Alexander Barton and Contributors.
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
|
40
NEWS
40
NEWS
@@ -2,14 +2,50 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2016 Alexander Barton and Contributors.
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- NEWS --
|
||||
|
||||
ngIRCd 25 (2019-01-23)
|
||||
|
||||
ngIRCd 24
|
||||
- Implement new configuration option "MaxPenaltyTime", which configures the
|
||||
maximum penalty time increase in seconds, per penalty event. Set to -1 for
|
||||
no limit (the default), 0 to disable penalties altogether. ngIRCd doesn't
|
||||
use penalty increases higher than 2 seconds during normal operation, so
|
||||
values higher than 1 rarely make sense.
|
||||
Disabling (or reducing) penalties can greatly speed up "make check" runs
|
||||
for example, see below, but are mostly a debugging feature and normally
|
||||
not meant to be used on production systems!
|
||||
Some example timings running "make check" from my macOS workstation:
|
||||
- MaxPenaltyTime not set: 4:41,79s
|
||||
- "MaxPenaltyTime = 1": 3:14,71s
|
||||
- "MaxPenaltyTime = 0": 25,46s
|
||||
Closes #249 and #251.
|
||||
- Update Xcode project for latest Xcode version (10.0)
|
||||
- Allow a 5th parameter in WEBIRC. Thanks to "ItsOnlyBinary".
|
||||
Closes #247.
|
||||
|
||||
ngIRCd 25~rc1 (2018-08-11)
|
||||
- Only send TOPIC updates to a channel when the topic actually changed:
|
||||
This prevents the channel from becoming flooded by unecessary TOPIC update
|
||||
messages, that can happen when IRC services try to enforce a certain topic
|
||||
but which is already set (at least on the local server), for example.
|
||||
Therefore still forward it to all servers, but don't inform local clients
|
||||
(still update setter and timestamp information, though!).
|
||||
- Update Xcode project for latest Xcode version (9.2). This includes adding
|
||||
missing and deleting obsolete file references.
|
||||
- Handle user mode "C" ("Only users that share a channel are allowed to send
|
||||
messages") like user mode "b" ("block private messages and notices"): allow
|
||||
messages from servers, services, and IRC Operators, too. Change proposed by
|
||||
"wowaname" back in 2015 in #ngircd, thanks!
|
||||
- Allow IRC Ops and remote servers to KILL service clients: such clients
|
||||
behave like regular users, therefore IRC operators and servers should be
|
||||
able to KILL them: for example to resolve nick collisions.
|
||||
Closes #242.
|
||||
|
||||
ngIRCd 24 (2017-01-20)
|
||||
|
||||
ngIRCd 24~rc1 (2017-01-07)
|
||||
- Log privilege violations and failed OPER request with log level "error"
|
||||
|
2
README
2
README
@@ -2,7 +2,7 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2016 Alexander Barton and Contributors.
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
|
598
config.guess
vendored
598
config.guess
vendored
File diff suppressed because it is too large
Load Diff
276
config.sub
vendored
276
config.sub
vendored
@@ -1,8 +1,8 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright 1992-2016 Free Software Foundation, Inc.
|
||||
# Copyright 1992-2018 Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2016-03-30'
|
||||
timestamp='2018-03-08'
|
||||
|
||||
# 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
|
||||
@@ -15,7 +15,7 @@ timestamp='2016-03-30'
|
||||
# General Public License for more details.
|
||||
#
|
||||
# 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, see <https://www.gnu.org/licenses/>.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
@@ -33,7 +33,7 @@ timestamp='2016-03-30'
|
||||
# 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
|
||||
# https://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub
|
||||
|
||||
# This file is supposed to be the same for all GNU packages
|
||||
# and recognize all the CPU types, system types and aliases
|
||||
@@ -57,7 +57,7 @@ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS
|
||||
|
||||
Canonicalize a configuration name.
|
||||
|
||||
Operation modes:
|
||||
Options:
|
||||
-h, --help print this help, then exit
|
||||
-t, --time-stamp print date of last modification, then exit
|
||||
-v, --version print version number, then exit
|
||||
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright 1992-2016 Free Software Foundation, Inc.
|
||||
Copyright 1992-2018 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@@ -94,7 +94,7 @@ while test $# -gt 0 ; do
|
||||
|
||||
*local*)
|
||||
# First pass through any local machine types.
|
||||
echo $1
|
||||
echo "$1"
|
||||
exit ;;
|
||||
|
||||
* )
|
||||
@@ -112,24 +112,24 @@ esac
|
||||
|
||||
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
|
||||
# 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
|
||||
nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
|
||||
linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
|
||||
knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \
|
||||
kopensolaris*-gnu* | \
|
||||
kopensolaris*-gnu* | cloudabi*-eabi* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
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/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown
|
||||
;;
|
||||
*)
|
||||
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
|
||||
if [ $basic_machine != $1 ]
|
||||
then os=`echo $1 | sed 's/.*-/-/'`
|
||||
basic_machine=`echo "$1" | sed 's/-[^-]*$//'`
|
||||
if [ "$basic_machine" != "$1" ]
|
||||
then os=`echo "$1" | sed 's/.*-/-/'`
|
||||
else os=; fi
|
||||
;;
|
||||
esac
|
||||
@@ -178,44 +178,44 @@ case $os in
|
||||
;;
|
||||
-sco6)
|
||||
os=-sco5v6
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5)
|
||||
os=-sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco4)
|
||||
os=-sco3.2v4
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2.[4-9]*)
|
||||
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco3.2v[4-9]*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5v6*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-udk*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-isc)
|
||||
os=-isc2.2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-clix*)
|
||||
basic_machine=clipper-intergraph
|
||||
;;
|
||||
-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
|
||||
@@ -227,10 +227,7 @@ case $os in
|
||||
os=-lynxos
|
||||
;;
|
||||
-ptx*)
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-windowsnt*)
|
||||
os=`echo $os | sed -e 's/windowsnt/winnt/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'`
|
||||
;;
|
||||
-psos*)
|
||||
os=-psos
|
||||
@@ -263,7 +260,7 @@ case $basic_machine in
|
||||
| fido | fr30 | frv | ft32 \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| hexagon \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| i370 | i860 | i960 | ia16 | ia64 \
|
||||
| ip2k | iq2000 \
|
||||
| k1om \
|
||||
| le32 | le64 \
|
||||
@@ -299,8 +296,9 @@ case $basic_machine in
|
||||
| nios | nios2 | nios2eb | nios2el \
|
||||
| ns16k | ns32k \
|
||||
| open8 | or1k | or1knd | or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| pdp10 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle \
|
||||
| pru \
|
||||
| pyramid \
|
||||
| riscv32 | riscv64 \
|
||||
| rl78 | rx \
|
||||
@@ -314,7 +312,7 @@ case $basic_machine in
|
||||
| ubicom32 \
|
||||
| v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
|
||||
| visium \
|
||||
| we32k \
|
||||
| wasm32 \
|
||||
| x86 | xc16x | xstormy16 | xtensa \
|
||||
| z8k | z80)
|
||||
basic_machine=$basic_machine-unknown
|
||||
@@ -335,7 +333,7 @@ case $basic_machine in
|
||||
basic_machine=$basic_machine-unknown
|
||||
os=-none
|
||||
;;
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65)
|
||||
;;
|
||||
ms1)
|
||||
basic_machine=mt-unknown
|
||||
@@ -364,7 +362,7 @@ case $basic_machine in
|
||||
;;
|
||||
# Object if more than one company name word.
|
||||
*-*-*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
# Recognize the basic CPU types with company name.
|
||||
@@ -387,7 +385,7 @@ case $basic_machine in
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| hexagon-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| i*86-* | i860-* | i960-* | ia16-* | ia64-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| k1om-* \
|
||||
| le32-* | le64-* \
|
||||
@@ -428,6 +426,7 @@ case $basic_machine in
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
|
||||
| pru-* \
|
||||
| pyramid-* \
|
||||
| riscv32-* | riscv64-* \
|
||||
| rl78-* | romp-* | rs6000-* | rx-* \
|
||||
@@ -444,6 +443,7 @@ case $basic_machine in
|
||||
| v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
|
||||
| vax-* \
|
||||
| visium-* \
|
||||
| wasm32-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
@@ -457,7 +457,7 @@ case $basic_machine in
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
386bsd)
|
||||
basic_machine=i386-unknown
|
||||
basic_machine=i386-pc
|
||||
os=-bsd
|
||||
;;
|
||||
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
|
||||
@@ -491,7 +491,7 @@ case $basic_machine in
|
||||
basic_machine=x86_64-pc
|
||||
;;
|
||||
amd64-*)
|
||||
basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
amdahl)
|
||||
basic_machine=580-amdahl
|
||||
@@ -536,7 +536,7 @@ case $basic_machine in
|
||||
os=-linux
|
||||
;;
|
||||
blackfin-*)
|
||||
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
bluegene*)
|
||||
@@ -544,13 +544,13 @@ case $basic_machine in
|
||||
os=-cnk
|
||||
;;
|
||||
c54x-*)
|
||||
basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c55x-*)
|
||||
basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c6x-*)
|
||||
basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
c90)
|
||||
basic_machine=c90-cray
|
||||
@@ -639,10 +639,18 @@ case $basic_machine in
|
||||
basic_machine=rs6000-bull
|
||||
os=-bosx
|
||||
;;
|
||||
dpx2* | dpx2*-bull)
|
||||
dpx2*)
|
||||
basic_machine=m68k-bull
|
||||
os=-sysv3
|
||||
;;
|
||||
e500v[12])
|
||||
basic_machine=powerpc-unknown
|
||||
os=$os"spe"
|
||||
;;
|
||||
e500v[12]-*)
|
||||
basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=$os"spe"
|
||||
;;
|
||||
ebmon29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-ebmon
|
||||
@@ -732,9 +740,6 @@ case $basic_machine in
|
||||
hp9k8[0-9][0-9] | hp8[0-9][0-9])
|
||||
basic_machine=hppa1.0-hp
|
||||
;;
|
||||
hppa-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
hppaosf)
|
||||
basic_machine=hppa1.1-hp
|
||||
os=-osf
|
||||
@@ -747,26 +752,26 @@ case $basic_machine in
|
||||
basic_machine=i370-ibm
|
||||
;;
|
||||
i*86v32)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv32
|
||||
;;
|
||||
i*86v4*)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv4
|
||||
;;
|
||||
i*86v)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-sysv
|
||||
;;
|
||||
i*86sol2)
|
||||
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
|
||||
basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'`
|
||||
os=-solaris2
|
||||
;;
|
||||
i386mach)
|
||||
basic_machine=i386-mach
|
||||
os=-mach
|
||||
;;
|
||||
i386-vsta | vsta)
|
||||
vsta)
|
||||
basic_machine=i386-unknown
|
||||
os=-vsta
|
||||
;;
|
||||
@@ -785,19 +790,16 @@ case $basic_machine in
|
||||
os=-sysv
|
||||
;;
|
||||
leon-*|leon[3-9]-*)
|
||||
basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'`
|
||||
basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'`
|
||||
;;
|
||||
m68knommu)
|
||||
basic_machine=m68k-unknown
|
||||
os=-linux
|
||||
;;
|
||||
m68knommu-*)
|
||||
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
magnum | m3230)
|
||||
basic_machine=mips-mips
|
||||
os=-sysv
|
||||
@@ -829,10 +831,10 @@ case $basic_machine in
|
||||
os=-mint
|
||||
;;
|
||||
mips3*-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
|
||||
basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`
|
||||
;;
|
||||
mips3*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||
basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown
|
||||
;;
|
||||
monitor)
|
||||
basic_machine=m68k-rom68k
|
||||
@@ -851,7 +853,7 @@ case $basic_machine in
|
||||
os=-msdos
|
||||
;;
|
||||
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
|
||||
@@ -893,7 +895,7 @@ case $basic_machine in
|
||||
basic_machine=v70-nec
|
||||
os=-sysv
|
||||
;;
|
||||
next | m*-next )
|
||||
next | m*-next)
|
||||
basic_machine=m68k-next
|
||||
case $os in
|
||||
-nextstep* )
|
||||
@@ -938,6 +940,12 @@ case $basic_machine in
|
||||
nsr-tandem)
|
||||
basic_machine=nsr-tandem
|
||||
;;
|
||||
nsv-tandem)
|
||||
basic_machine=nsv-tandem
|
||||
;;
|
||||
nsx-tandem)
|
||||
basic_machine=nsx-tandem
|
||||
;;
|
||||
op50n-* | op60c-*)
|
||||
basic_machine=hppa1.1-oki
|
||||
os=-proelf
|
||||
@@ -970,7 +978,7 @@ case $basic_machine in
|
||||
os=-linux
|
||||
;;
|
||||
parisc-*)
|
||||
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
pbd)
|
||||
@@ -986,7 +994,7 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
;;
|
||||
pc98-*)
|
||||
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium | p5 | k5 | k6 | nexgen | viac3)
|
||||
basic_machine=i586-pc
|
||||
@@ -1001,16 +1009,16 @@ case $basic_machine in
|
||||
basic_machine=i786-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium4-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
@@ -1020,23 +1028,23 @@ case $basic_machine in
|
||||
ppc | ppcbe) basic_machine=powerpc-unknown
|
||||
;;
|
||||
ppc-* | ppcbe-*)
|
||||
basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
ppcle | powerpclittle)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64) basic_machine=powerpc64-unknown
|
||||
;;
|
||||
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
ppc64le | powerpc64little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
;;
|
||||
ppc64le-* | powerpc64little-*)
|
||||
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ps2)
|
||||
basic_machine=i386-ibm
|
||||
@@ -1090,17 +1098,10 @@ case $basic_machine in
|
||||
sequent)
|
||||
basic_machine=i386-sequent
|
||||
;;
|
||||
sh)
|
||||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sh5el)
|
||||
basic_machine=sh5le-unknown
|
||||
;;
|
||||
sh64)
|
||||
basic_machine=sh64-unknown
|
||||
;;
|
||||
sparclite-wrs | simso-wrs)
|
||||
simso-wrs)
|
||||
basic_machine=sparclite-wrs
|
||||
os=-vxworks
|
||||
;;
|
||||
@@ -1119,7 +1120,7 @@ case $basic_machine in
|
||||
os=-sysv4
|
||||
;;
|
||||
strongarm-* | thumb-*)
|
||||
basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
sun2)
|
||||
basic_machine=m68000-sun
|
||||
@@ -1241,6 +1242,9 @@ case $basic_machine in
|
||||
basic_machine=hppa1.1-winbond
|
||||
os=-proelf
|
||||
;;
|
||||
x64)
|
||||
basic_machine=x86_64-pc
|
||||
;;
|
||||
xbox)
|
||||
basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
@@ -1249,20 +1253,12 @@ case $basic_machine in
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
xscale-* | xscalee[bl]-*)
|
||||
basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'`
|
||||
basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'`
|
||||
;;
|
||||
ymp)
|
||||
basic_machine=ymp-cray
|
||||
os=-unicos
|
||||
;;
|
||||
z8k-*-coff)
|
||||
basic_machine=z8k-unknown
|
||||
os=-sim
|
||||
;;
|
||||
z80-*-coff)
|
||||
basic_machine=z80-unknown
|
||||
os=-sim
|
||||
;;
|
||||
none)
|
||||
basic_machine=none-none
|
||||
os=-none
|
||||
@@ -1291,10 +1287,6 @@ case $basic_machine in
|
||||
vax)
|
||||
basic_machine=vax-dec
|
||||
;;
|
||||
pdp10)
|
||||
# there are many clones, so DEC is not a safe bet
|
||||
basic_machine=pdp10-unknown
|
||||
;;
|
||||
pdp11)
|
||||
basic_machine=pdp11-dec
|
||||
;;
|
||||
@@ -1304,9 +1296,6 @@ case $basic_machine in
|
||||
sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||
basic_machine=sh-unknown
|
||||
;;
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
basic_machine=cydra-cydrome
|
||||
;;
|
||||
@@ -1326,7 +1315,7 @@ case $basic_machine in
|
||||
# Make sure to match an already-canonicalized machine name.
|
||||
;;
|
||||
*)
|
||||
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
|
||||
echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1334,10 +1323,10 @@ esac
|
||||
# Here we canonicalize certain aliases for manufacturers.
|
||||
case $basic_machine in
|
||||
*-digital*)
|
||||
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
|
||||
basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'`
|
||||
;;
|
||||
*-commodore*)
|
||||
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
|
||||
basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'`
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
@@ -1348,8 +1337,8 @@ esac
|
||||
if [ x"$os" != x"" ]
|
||||
then
|
||||
case $os in
|
||||
# First match some system type aliases
|
||||
# that might get confused with valid system types.
|
||||
# First match some system type aliases that might get confused
|
||||
# with valid system types.
|
||||
# -solaris* is a basic system type, with this one exception.
|
||||
-auroraux)
|
||||
os=-auroraux
|
||||
@@ -1360,18 +1349,19 @@ case $os in
|
||||
-solaris)
|
||||
os=-solaris2
|
||||
;;
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-unixware*)
|
||||
os=-sysv4.2uw
|
||||
;;
|
||||
-gnu/linux*)
|
||||
os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
|
||||
;;
|
||||
# First accept the basic system types.
|
||||
# es1800 is here to avoid being matched by es* (a different OS)
|
||||
-es1800*)
|
||||
os=-ose
|
||||
;;
|
||||
# Now accept the basic system types.
|
||||
# The portable systems comes first.
|
||||
# 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.
|
||||
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
|
||||
| -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
|
||||
@@ -1381,25 +1371,26 @@ case $os in
|
||||
| -aos* | -aros* | -cloudabi* | -sortix* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -hiux* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* | -hcos* \
|
||||
| -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
|
||||
| -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
|
||||
| -linux-newlib* | -linux-musl* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -morphos* | -superux* | -rtmk* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
|
||||
| -onefs* | -tirtos*)
|
||||
| -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox* | -bme* \
|
||||
| -midnightbsd*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
@@ -1416,12 +1407,12 @@ case $os in
|
||||
-nto*)
|
||||
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
||||
;;
|
||||
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
||||
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
|
||||
-sim | -xray | -os68k* | -v88r* \
|
||||
| -windows* | -osx | -abug | -netware* | -os9* \
|
||||
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
||||
;;
|
||||
-mac*)
|
||||
os=`echo $os | sed -e 's|mac|macos|'`
|
||||
os=`echo "$os" | sed -e 's|mac|macos|'`
|
||||
;;
|
||||
-linux-dietlibc)
|
||||
os=-linux-dietlibc
|
||||
@@ -1430,10 +1421,10 @@ case $os in
|
||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||
;;
|
||||
-sunos5*)
|
||||
os=`echo $os | sed -e 's|sunos5|solaris2|'`
|
||||
os=`echo "$os" | sed -e 's|sunos5|solaris2|'`
|
||||
;;
|
||||
-sunos6*)
|
||||
os=`echo $os | sed -e 's|sunos6|solaris3|'`
|
||||
os=`echo "$os" | sed -e 's|sunos6|solaris3|'`
|
||||
;;
|
||||
-opened*)
|
||||
os=-openedition
|
||||
@@ -1444,12 +1435,6 @@ case $os in
|
||||
-wince*)
|
||||
os=-wince
|
||||
;;
|
||||
-osfrose*)
|
||||
os=-osfrose
|
||||
;;
|
||||
-osf*)
|
||||
os=-osf
|
||||
;;
|
||||
-utek*)
|
||||
os=-bsd
|
||||
;;
|
||||
@@ -1474,7 +1459,7 @@ case $os in
|
||||
-nova*)
|
||||
os=-rtmk-nova
|
||||
;;
|
||||
-ns2 )
|
||||
-ns2)
|
||||
os=-nextstep2
|
||||
;;
|
||||
-nsk*)
|
||||
@@ -1496,7 +1481,7 @@ case $os in
|
||||
-oss*)
|
||||
os=-sysv3
|
||||
;;
|
||||
-svr4)
|
||||
-svr4*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-svr3)
|
||||
@@ -1511,24 +1496,28 @@ case $os in
|
||||
-ose*)
|
||||
os=-ose
|
||||
;;
|
||||
-es1800*)
|
||||
os=-ose
|
||||
;;
|
||||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
os=-mint
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-dicos*)
|
||||
os=-dicos
|
||||
;;
|
||||
-pikeos*)
|
||||
# Until real need of OS specific support for
|
||||
# particular features comes up, bare metal
|
||||
# configurations are quite functional.
|
||||
case $basic_machine in
|
||||
arm*)
|
||||
os=-eabi
|
||||
;;
|
||||
*)
|
||||
os=-elf
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-nacl*)
|
||||
;;
|
||||
-ios)
|
||||
@@ -1538,7 +1527,7 @@ case $os in
|
||||
*)
|
||||
# Get rid of the `-' at the beginning of $os.
|
||||
os=`echo $os | sed 's/[^-]*-//'`
|
||||
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
|
||||
echo Invalid configuration \`"$1"\': system \`"$os"\' not recognized 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
@@ -1628,12 +1617,12 @@ case $basic_machine in
|
||||
sparc-* | *-sun)
|
||||
os=-sunos4.1.1
|
||||
;;
|
||||
pru-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
*-haiku)
|
||||
os=-haiku
|
||||
;;
|
||||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
@@ -1673,7 +1662,7 @@ case $basic_machine in
|
||||
m88k-omron*)
|
||||
os=-luna
|
||||
;;
|
||||
*-next )
|
||||
*-next)
|
||||
os=-nextstep
|
||||
;;
|
||||
*-sequent)
|
||||
@@ -1688,9 +1677,6 @@ case $basic_machine in
|
||||
i370-*)
|
||||
os=-mvs
|
||||
;;
|
||||
*-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
*-gould)
|
||||
os=-sysv
|
||||
;;
|
||||
@@ -1800,15 +1786,15 @@ case $basic_machine in
|
||||
vendor=stratus
|
||||
;;
|
||||
esac
|
||||
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
|
||||
basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"`
|
||||
;;
|
||||
esac
|
||||
|
||||
echo $basic_machine$os
|
||||
echo "$basic_machine$os"
|
||||
exit
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
# eval: (add-hook 'before-save-hook 'time-stamp)
|
||||
# time-stamp-start: "timestamp='"
|
||||
# time-stamp-format: "%:y-%02m-%02d"
|
||||
# time-stamp-end: "'"
|
||||
|
69
configure.ng
69
configure.ng
@@ -154,15 +154,30 @@ AC_HEADER_TIME
|
||||
|
||||
# Required header files
|
||||
AC_CHECK_HEADERS([ \
|
||||
fcntl.h netdb.h netinet/in.h stdlib.h string.h \
|
||||
strings.h sys/socket.h sys/time.h sys/types.h unistd.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 \
|
||||
],,AC_MSG_ERROR([required C header missing!]))
|
||||
|
||||
# Optional header files
|
||||
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 \
|
||||
])
|
||||
arpa/inet.h \
|
||||
inttypes.h \
|
||||
malloc.h \
|
||||
netinet/in_systm.h \
|
||||
netinet/ip.h \
|
||||
stdbool.h \
|
||||
stddef.h \
|
||||
stdint.h \
|
||||
varargs.h \
|
||||
])
|
||||
|
||||
# -- Datatypes --
|
||||
|
||||
@@ -212,17 +227,49 @@ AC_FUNC_STRFTIME
|
||||
|
||||
# Required functions
|
||||
AC_CHECK_FUNCS([ \
|
||||
alarm dup2 endpwent gethostbyaddr gethostbyname gethostname \
|
||||
gettimeofday inet_ntoa memmove memset setsid socket strcasecmp \
|
||||
strchr strcspn strerror strncasecmp strrchr strspn strstr \
|
||||
alarm \
|
||||
dup2 \
|
||||
endpwent \
|
||||
gethostbyaddr \
|
||||
gethostbyname \
|
||||
gethostname \
|
||||
gettimeofday \
|
||||
inet_ntoa \
|
||||
memmove \
|
||||
memset \
|
||||
setsid \
|
||||
socket \
|
||||
strcasecmp \
|
||||
strchr \
|
||||
strcspn \
|
||||
strerror \
|
||||
strncasecmp \
|
||||
strrchr \
|
||||
strspn \
|
||||
strstr \
|
||||
],,
|
||||
AC_MSG_ERROR([required function missing!]))
|
||||
|
||||
# Optional functions
|
||||
AC_CHECK_FUNCS_ONCE([
|
||||
arc4random arc4random_stir gai_strerror getnameinfo inet_aton \
|
||||
setgroups sigaction sigprocmask snprintf strdup strlcat strlcpy \
|
||||
strndup strtok_r unsetenv vsnprintf waitpid])
|
||||
arc4random \
|
||||
arc4random_stir \
|
||||
gai_strerror \
|
||||
getnameinfo \
|
||||
inet_aton \
|
||||
setgroups \
|
||||
sigaction \
|
||||
sigprocmask \
|
||||
snprintf \
|
||||
strdup \
|
||||
strlcat \
|
||||
strlcpy \
|
||||
strndup \
|
||||
strtok_r \
|
||||
unsetenv \
|
||||
vsnprintf \
|
||||
waitpid \
|
||||
])
|
||||
|
||||
WORKING_GETADDRINFO
|
||||
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
|
||||
# Copyright (c)2001-2017 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
|
||||
@@ -10,7 +10,8 @@
|
||||
#
|
||||
|
||||
EXTRA_DIST = rules changelog compat control copyright \
|
||||
ngircd.init ngircd.default ngircd.pam ngircd.postinst
|
||||
ngircd.init ngircd.default ngircd.pam ngircd.postinst \
|
||||
source/format
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
@@ -1,3 +1,27 @@
|
||||
ngircd (25-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 25.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 23 Jan 2019 23:13:03 +0100
|
||||
|
||||
ngircd (25~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 25.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 11 Aug 2018 21:35:08 +0200
|
||||
|
||||
ngircd (24-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 24.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 20 Jan 2017 16:43:09 +0100
|
||||
|
||||
ngircd (24~rc1-0ab2) unstable; urgency=low
|
||||
|
||||
* Use OpenSSL instead of GnuTLS for SSL-enabled packages.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 20 Jan 2017 15:20:07 +0100
|
||||
|
||||
ngircd (24~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 24.
|
||||
|
@@ -6,11 +6,11 @@ Build-Depends: debhelper (>> 9.0.0),
|
||||
autotools-dev,
|
||||
dh-systemd (>= 1.5),
|
||||
expect,
|
||||
libz-dev,
|
||||
libwrap0-dev,
|
||||
libident-dev,
|
||||
libgnutls28-dev,
|
||||
libpam0g-dev,
|
||||
libssl-dev,
|
||||
libwrap0-dev,
|
||||
libz-dev,
|
||||
telnet | telnet-ssl,
|
||||
Standards-Version: 3.9.1
|
||||
|
||||
|
@@ -55,7 +55,7 @@ configure-ngircd-full: configure
|
||||
--mandir=\$${prefix}/share/man \
|
||||
--docdir=\$${prefix}/share/doc/ngircd-full \
|
||||
--with-syslog --with-zlib \
|
||||
--with-gnutls --with-iconv --with-ident --with-tcp-wrappers \
|
||||
--with-openssl --with-iconv --with-ident --with-tcp-wrappers \
|
||||
--with-pam \
|
||||
--enable-ipv6
|
||||
|
||||
@@ -70,7 +70,7 @@ configure-ngircd-full-dbg: configure
|
||||
--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-openssl --with-iconv --with-ident --with-tcp-wrappers \
|
||||
--with-pam \
|
||||
--enable-ipv6
|
||||
|
||||
|
1
contrib/Debian/source/format
Normal file
1
contrib/Debian/source/format
Normal file
@@ -0,0 +1 @@
|
||||
1.0
|
@@ -51,18 +51,6 @@
|
||||
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */ = {isa = PBXBuildFile; fileRef = FAE5CC2D0CF2308A007D69B6 /* numeric.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8DD76FAF0486AB0100D96B5E /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 8;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
FA18A63E16CEDDCE00132F66 /* configure.ng */ = {isa = PBXFileReference; lastKnownFileType = text; name = configure.ng; path = ../../configure.ng; sourceTree = "<group>"; };
|
||||
FA18A63F16CEDE2300132F66 /* ngircd.service */ = {isa = PBXFileReference; lastKnownFileType = text; path = ngircd.service; sourceTree = "<group>"; };
|
||||
@@ -203,11 +191,12 @@
|
||||
FA322DC00CEF77CB001761B3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
FA4B4F542055B47C00A04296 /* ngircd.logcheck */ = {isa = PBXFileReference; lastKnownFileType = text; path = ngircd.logcheck; sourceTree = "<group>"; };
|
||||
FA4B4F552055B4C800A04296 /* source */ = {isa = PBXFileReference; lastKnownFileType = folder; path = source; 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>"; };
|
||||
@@ -488,6 +477,7 @@
|
||||
FA4B08E513E7F8FB00765BA3 /* ngircd-bsd.sh */,
|
||||
FA4B08E613E7F91700765BA3 /* ngIRCd-Logo.gif */,
|
||||
FA4B08E713E7F91700765BA3 /* ngircd-redhat.init */,
|
||||
FA4B4F542055B47C00A04296 /* ngircd.logcheck */,
|
||||
FA18A63F16CEDE2300132F66 /* ngircd.service */,
|
||||
FA18A64016CEDE2300132F66 /* ngircd.socket */,
|
||||
FA322D940CEF7523001761B3 /* ngircd.spec */,
|
||||
@@ -511,6 +501,7 @@
|
||||
FA18A64116CEDE3500132F66 /* ngircd.pam */,
|
||||
FA322D710CEF7523001761B3 /* ngircd.postinst */,
|
||||
FA322D720CEF7523001761B3 /* rules */,
|
||||
FA4B4F552055B4C800A04296 /* source */,
|
||||
);
|
||||
path = Debian;
|
||||
sourceTree = "<group>";
|
||||
@@ -546,7 +537,6 @@
|
||||
FA18A64416CEDFCE00132F66 /* Commands.txt */,
|
||||
FAE22BD415270EA300F1A5AB /* Contributing.txt */,
|
||||
FA322D9A0CEF752C001761B3 /* FAQ.txt */,
|
||||
FA407F380DB15AC700271AF1 /* GIT.txt */,
|
||||
FAE22BD515270EB500F1A5AB /* HowToRelease.txt */,
|
||||
FAE22BD615270EB500F1A5AB /* Modes.txt */,
|
||||
FAE22BD715270EB500F1A5AB /* PAM.txt */,
|
||||
@@ -617,7 +607,6 @@
|
||||
buildPhases = (
|
||||
8DD76FAB0486AB0100D96B5E /* Sources */,
|
||||
8DD76FAD0486AB0100D96B5E /* Frameworks */,
|
||||
8DD76FAF0486AB0100D96B5E /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
@@ -635,7 +624,7 @@
|
||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
attributes = {
|
||||
LastUpgradeCheck = 0800;
|
||||
LastUpgradeCheck = 1000;
|
||||
};
|
||||
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */;
|
||||
compatibilityVersion = "Xcode 3.2";
|
||||
@@ -715,113 +704,81 @@
|
||||
1DEB928708733DD80010E9CD /* Default */ = {
|
||||
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 = YES;
|
||||
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 = Default;
|
||||
};
|
||||
1DEB928B08733DD80010E9CD /* Default */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
CODE_SIGN_IDENTITY = "";
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
GCC_NO_COMMON_BLOCKS = NO;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_PEDANTIC = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_LABEL = YES;
|
||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
SDKROOT = "";
|
||||
PRODUCT_NAME = ngircd;
|
||||
};
|
||||
name = Default;
|
||||
};
|
||||
FAB0570C105D917F006AF9E2 /* Debug */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
|
||||
CLANG_WARN_BOOL_CONVERSION = YES;
|
||||
CLANG_WARN_CONSTANT_CONVERSION = YES;
|
||||
ALWAYS_SEARCH_USER_PATHS = NO;
|
||||
CLANG_WARN_ASSIGN_ENUM = YES;
|
||||
CLANG_WARN_COMMA = YES;
|
||||
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
|
||||
CLANG_WARN_EMPTY_BODY = YES;
|
||||
CLANG_WARN_ENUM_CONVERSION = YES;
|
||||
CLANG_WARN_INFINITE_RECURSION = YES;
|
||||
CLANG_WARN_INT_CONVERSION = YES;
|
||||
CLANG_WARN_SUSPICIOUS_MOVE = YES;
|
||||
CLANG_WARN_SEMICOLON_BEFORE_METHOD_BODY = YES;
|
||||
CLANG_WARN_STRICT_PROTOTYPES = YES;
|
||||
CLANG_WARN_SUSPICIOUS_IMPLICIT_CONVERSION = YES;
|
||||
CLANG_WARN_UNREACHABLE_CODE = YES;
|
||||
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
|
||||
ENABLE_STRICT_OBJC_MSGSEND = YES;
|
||||
ENABLE_TESTABILITY = YES;
|
||||
GCC_DEBUGGING_SYMBOLS = full;
|
||||
GCC_NO_COMMON_BLOCKS = NO;
|
||||
GCC_OPTIMIZATION_LEVEL = 0;
|
||||
GCC_VERSION = "";
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNDECLARED_SELECTOR = YES;
|
||||
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_PEDANTIC = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_LABEL = YES;
|
||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
MACOSX_DEPLOYMENT_TARGET = 10.6;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
PRODUCT_NAME = ngircd;
|
||||
SDKROOT = "";
|
||||
STRIP_INSTALLED_PRODUCT = NO;
|
||||
};
|
||||
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;
|
||||
};
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2013 Alexander Barton (alex@barton.de) and Contributors
|
||||
# Copyright (c)2001-2017 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
|
||||
@@ -16,6 +16,7 @@ EXTRA_DIST = README \
|
||||
ngircd-bsd.sh \
|
||||
ngIRCd-Logo.gif \
|
||||
ngircd-redhat.init \
|
||||
ngircd.logcheck \
|
||||
ngircd.service \
|
||||
ngircd.socket \
|
||||
ngircd.spec \
|
||||
|
@@ -27,6 +27,9 @@ ngircd-bsd.sh
|
||||
ngircd-redhat.init
|
||||
- Start/stop script for RedHat-based distributions (like CentOS).
|
||||
|
||||
ngircd.logcheck
|
||||
- Sample rules for logcheck(8) to ignore "normal" log messages of ngIRCd.
|
||||
|
||||
ngircd.service
|
||||
- systemd(8) service unit configuration file.
|
||||
|
||||
|
61
contrib/ngircd.logcheck
Normal file
61
contrib/ngircd.logcheck
Normal file
@@ -0,0 +1,61 @@
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Accepted connection [0-9]+ from ".*:[0-9]+" on socket [0-9]+\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't resolve address ".*": Name or service not known \[.*\]\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't resolve ".*": host not found$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't resolve ".*": Name or service not known$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Can't resolve ".*": No address associated with hostname$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): Can't connect\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): Client closed connection\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): Got QUIT command\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): Read error\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): SSL accept error, closing socket\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client ".*" unregistered (connection [0-9]+): Timeout\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): Timeout\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Client unregistered \(connection [0-9]+\): Write error\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+: initialized SSL3\.0 using cipher .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+: initialized TLS1\.[012] using cipher .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+: initialized TLSv1\.[012] using cipher .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+: initialized TLSv1 using cipher .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+ \(socket [0-9]+\) with ".*:[0-9]+" established\. Now logging in \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Connection [0-9]+ with ".*:[0-9]+" closed \(in: .*, out: .*\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Enabled link compression \(zlib\) on connection [0-9]+\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Establishing connection for ".*" to ".*:[0-9]+" \(.*\), socket [0-9]+ \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: IDENT lookup for connection [0-9]+: ".*"\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: IDENT lookup for connection [0-9]+: no result\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Now listening on .*:[0-9]+ \(socket [0-9]+\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: OpenSSL .* initialized\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Possible forgery: .* resolved to ".*", which has no IP address!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Preparing to establish a new server link for ".*" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Read error on connection [0-9]+ \(socket [0-9]+\): Connection reset by peer!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" registered \(via .*, connected to .*, [0-9]+ hops\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered: .* .*\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Server ".*" unregistered: ".*" \(SQUIT from .*\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down all listening sockets \([0-9]+ total\) \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Can't connect\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Client closed connection\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Got QUIT command\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Ping timeout: [0-9]+ seconds\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Read error\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Server going down\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(SSL accept error, closing socket\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Timeout\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Shutting down connection [0-9]+ \(Write error\) with ".*:[0-9]+" \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL connection [0-9]+ shutting down \.\.\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL connection [0-9]+ with ".*:[0-9]+" established\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL connection on socket [0-9]+ failed!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: A TLS packet with unexpected length was received\. \[ConnSSL_Read\]\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: A TLS packet with unexpected length was received\. \[gnutls_handshake\]\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: Broken pipe \[in ConnSSL_Write\(\)\]!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: Connection reset by peer \[in ConnSSL_Read\(\)\]!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL error: Connection reset by peer \[in SSL_connect\(\)\]!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: SSL protocol error: SSL_accept \(.*\)$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" changed nick \(connection [0-9]+\): ".*" -> ".*"\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" registered \(connection [0-9]+\)\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): Client closed connection\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): Got QUIT command\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): Ping timeout: [0-9]+ seconds\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): Read error\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: User ".*!.*@.*" unregistered \(connection [0-9]+\): Server going down\.$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: warning: can't get client address: Connection reset by peer$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: warning: /etc/hosts\.allow, line [0-9]+: can't verify hostname: getaddrinfo\(.*, AF_INET\) failed$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Write error on connection [0-9]+ \(socket [0-9]+\): Broken pipe!$
|
||||
^\w{3} [ :0-9]{11} [._[:alnum:]-]+ ngircd\[[0-9]+\]: Write error on connection [0-9]+ \(socket [0-9]+\): Connection reset by peer!$
|
@@ -1,5 +1,5 @@
|
||||
%define name ngircd
|
||||
%define version 24~rc1
|
||||
%define version 25
|
||||
%define release 1
|
||||
%define prefix %{_prefix}
|
||||
|
||||
@@ -27,7 +27,7 @@ Advantages:
|
||||
- supports IPv6 and SSL
|
||||
- no problems with servers that have dynamic IP addresses
|
||||
- freely available, modern, portable and tidy C-source
|
||||
- ngIRCd is being actively developed since 11 years.
|
||||
- ngIRCd is being actively developed since 2001
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
@@ -98,6 +98,10 @@ if [ ! -r "$SRC_D/configure" ]; then
|
||||
else
|
||||
./autogen.sh >/dev/null
|
||||
fi
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "$NAME: \"$SRC_D/autogen.sh\" script failed, aborting!"
|
||||
exit 1
|
||||
fi
|
||||
cd "$MY_D" || exit 1
|
||||
fi
|
||||
|
||||
|
@@ -1,9 +1,8 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2010 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
@@ -66,15 +65,16 @@ h) Run "./autogen.sh" to update the ./configure script with the correct
|
||||
|
||||
i) Run "./configure" to rebuild all generated Makefiles.
|
||||
|
||||
j) Run "make distcheck" to generate the distribution archives.
|
||||
j) Run "make distcheck" (and "make dist-tarZ dist-xz") to generate all of 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.
|
||||
and GnuPG signatures (to the website, its mirrors, and GitHub).
|
||||
|
||||
m) Write an announcement to the mailing list, freshmeat, Twitter, ...
|
||||
m) Update the ngIRCd website and its mirrors!
|
||||
|
||||
n) Update the list of releases in our bug tracker.
|
||||
n) Write an announcement to the mailing list, Twitter, ...
|
||||
|
||||
o) Relax :-)
|
||||
|
@@ -2,7 +2,7 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2016 Alexander Barton and Contributors.
|
||||
(c)2001-2019 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
@@ -45,14 +45,14 @@ i386/pc/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y 1
|
||||
i386/pc/linux-gnu gcc 4.4.5 22~rc1-3 14-10-10 alex Y Y Y Y 1
|
||||
i386/pc/minix clang 3.4 23 16-01-06 goetz Y Y N Y
|
||||
i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y
|
||||
i386/pc/solaris2.11 gcc 4.8.2 23 16-02-07 goetz Y Y Y Y 4
|
||||
i386/pc/solaris2.11 gcc 4.8.2 24 17-01-21 goetz Y Y Y Y 4
|
||||
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/freebsd7.3 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y 3
|
||||
i386/unknown/freebsd7.3 gcc 4.2.1 24~rc1-7 17-01-20 alex Y Y Y Y 3
|
||||
i386/unknown/netbsdelf1.5.2 egcs-1.1.2 21 13-11-25 goetz Y Y N Y
|
||||
i386/unknown/netbsdelf1.6.2 gcc 2.95.3 18 11-07-10 goetz 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
|
||||
i386/unknown/netbsdelf4.0 gcc 4.1.2 19 12-02-29 alex Y Y Y Y 3
|
||||
i386/unknown/netbsdelf4.0 gcc 4.1.2 24~rc1-7 17-01-20 alex Y Y Y Y 3
|
||||
i386/unknown/netbsdelf5.0.2 gcc 4.1.3 19 12-02-26 alex Y Y Y Y 3
|
||||
i386/unknown/openbsd3.5 gcc 2.95.3 23 15-11-27 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
|
||||
@@ -78,6 +78,7 @@ 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
|
||||
m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ?
|
||||
mipsel/openwrt/linux-uclibc gcc 4.8 24~9-g619a 18-01-28 goetz - - - Y 6
|
||||
mipsel/unknown/linux-gnu gcc 4.1.2 18 11-07-05 goetz Y Y N Y 1
|
||||
mipsel/unknown/linux-gnu gcc 4.4.5 21 13-11-24 goetz Y Y Y Y 1
|
||||
powerpc/apple/darwin6.8 gcc 3.1 21 14-01-03 goetz Y Y Y Y
|
||||
@@ -95,20 +96,26 @@ 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.5.0 A-clang 6.1 23~rc1 15-09-06 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin15.6.0 A-clang 8.0 23~38-g455 16-11-04 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin16.3.0 A-clang 8.0 23~55-g8e0 17-01-06 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin16.5.0 A-clang 8.1 25~rc1-7-g 18-11-04 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin17.7.0 A-clang 10.0 25~rc1 18-11-04 alex Y Y Y Y 3
|
||||
x86_64/apple/darwin18.2.0 A-clang 10.0 25~rc1-11 19-01-23 alex 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/unkn./freebsd8.1-gnu gcc 4.4.5 19 12-02-26 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd8.4 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y y Y 3
|
||||
x86_64/unknown/freebsd8.4 gcc 4.2.1 24~rc1-7 17-01-20 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd9.2 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd10.0 F-clang 3.3 22~rc1-3 14-10-10 alex Y Y Y Y 3
|
||||
x86_64/unknown/freebsd10.3 F-clang 3.4 24 17-01-20 goetz Y Y Y Y 3
|
||||
x86_64/unknown/freebsd11.0 F-clang 3.8 24 17-01-21 goetz Y Y Y Y 3
|
||||
x86_64/unknown/haiku gcc 7.3.0 25~rc1-11 19-01-06 alex Y Y N Y
|
||||
x86_64/unknown/linux-gnu clang 3.3 21 14-01-07 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu clang 3.4 22~rc1-3 14-10-11 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu gcc 4.4.5 23~rc1-3 15-11-15 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 4.4.5 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu gcc 4.7.2 23~rc1-3 15-11-15 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/pc/linux-gnu gcc 4.9.2 23~55-g8e0 17-01-06 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 4.8.4 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 4.9.2 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu gcc 5.3.0 23 15-12-14 goetz Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 6.2.1 23~44-g995 16-12-06 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu [WSL] gcc 5.4.0 24 18-03-07 goetz Y Y y Y 7
|
||||
x86_64/pc/linux-gnu gcc 6.2.1 24~rc1-7 17-01-20 alex Y Y Y Y 1
|
||||
x86_64/pc/linux-gnu gcc 6.3.0 25~rc1-11 19-01-23 alex Y Y Y Y 1
|
||||
x86_64/unknown/linux-gnu icc 16 23 16-01-13 goetz 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
|
||||
@@ -123,14 +130,15 @@ x86_64/unknown/openbsd5.5 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y Y Y 3
|
||||
~~~~~~~
|
||||
|
||||
(1) */*/linux-gnu (Linux platforms):
|
||||
ngIRCd has been tested with various Linux distributions, such as SuSE,
|
||||
RedHat, Debian, and Gentoo using Kernels 2.2.x, 2.4.x and 2.6.x with
|
||||
various versions of the GNU C compiler (starting with 2.95.x and up to
|
||||
version 4.3.x). The eldest glibc used was glibc-2.0.7. ngIRCd compiled
|
||||
and run on all these systems without problems.
|
||||
Actual Linux kernels (2.6.x) and glibc's support the epoll() IO interface.
|
||||
ngIRCd has been tested with various Linux distributions, such as ArchLinux,
|
||||
Debian, Gentoo, Red Hat (Fedora) and SuSE using Linux kernels 2.2.x, 2.4.x,
|
||||
2.6.x, 3.x, and 4.x, with various versions of the GNU C compiler (starting
|
||||
with 2.95.x) and Clang. The eldest glibc used was glibc-2.0.7.
|
||||
ngIRCd compiled and ran on all of these systems successfully.
|
||||
Current Linux kernels (starting with 2.6.x) and glibc's support the more
|
||||
efficient epoll() IO interface, see (5) below.
|
||||
|
||||
(2) This compiler is an pre-ANSI C compiler, therefore the source code is
|
||||
(2) This compiler is a pre-ANSI C compiler (K&R), therefore the source code is
|
||||
automatically converted using the included ansi2knr tool while building.
|
||||
|
||||
(3) Using the kqueue() IO interface.
|
||||
@@ -138,3 +146,9 @@ x86_64/unknown/openbsd5.5 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y Y Y 3
|
||||
(4) Using the /dev/poll IO interface.
|
||||
|
||||
(5) Using the epoll() IO interface.
|
||||
|
||||
(6) ngIRCd has been cross-compiled with gcc 4.8 on Ubuntu x86-64 for
|
||||
MIPSEL Linux OpenWRT distribution (uclibc), for the target computer
|
||||
Vocore2, where the created binary ran well.
|
||||
|
||||
(7) This actually is Windows 10 running Windows Subsystem for Linux (WSL).
|
||||
|
@@ -176,7 +176,7 @@ channel mode). In this case <limit> should be "0".
|
||||
II.4 Update webchat/proxy client information
|
||||
|
||||
Command: WEBIRC
|
||||
Parameters: <password> <username> <hostname> <ip-address>
|
||||
Parameters: <password> <username> <hostname> <ip-address> [<ignored>]
|
||||
Used by: unregistered clients only
|
||||
|
||||
The WEBIRC command is used by some Web-to-IRC gateways to set the correct
|
||||
@@ -186,6 +186,9 @@ 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.
|
||||
|
||||
Optionally, a 5th parameter is accepted to comply with an IRCv3 extension,
|
||||
see <https://github.com/ircv3/ircv3-ideas/issues/12>, but ignored.
|
||||
|
||||
|
||||
II.5 Client character encoding conversion
|
||||
|
||||
|
13
doc/RFC.txt
13
doc/RFC.txt
@@ -1,9 +1,8 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
http://ngircd.barton.de/
|
||||
|
||||
(c)2001-2003 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
(c)2001-2017 Alexander Barton and Contributors.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
@@ -11,7 +10,8 @@
|
||||
|
||||
|
||||
The Internet Relay Chat (IRC) protocol is documented in these Request for
|
||||
Comments (RFC), which you can get e.g. via <http://www.faqs.org/>:
|
||||
Comments (RFCs), which you can get via <http://www.faqs.org/rfcs/> or
|
||||
<https://www.ietf.org/rfc.html> for example.
|
||||
|
||||
1459 Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
|
||||
May 1993, [IRC].
|
||||
@@ -28,6 +28,5 @@ Comments (RFC), which you can get e.g. via <http://www.faqs.org/>:
|
||||
2813 Kalt, C., "Internet Relay Chat: Server Protocol",
|
||||
April 2000, [IRC-SERVER].
|
||||
|
||||
|
||||
--
|
||||
$Id: RFC.txt,v 1.6 2003/03/07 20:42:20 alex Exp $
|
||||
7194 Hartmann, R., "Default Port for Internet Relay Chat (IRC) via TLS/SSL",
|
||||
August 2014.
|
||||
|
@@ -34,6 +34,10 @@ services instead of regular IRC users.
|
||||
|
||||
Example:
|
||||
|
||||
[GLOBAL]
|
||||
Name = server.irc.net
|
||||
Ports = 6667
|
||||
|
||||
[SERVER]
|
||||
Name = services.irc.net
|
||||
MyPassword = 123abc
|
||||
@@ -104,6 +108,10 @@ The following settings need to be in atheme.conf:
|
||||
|
||||
loadmodule "modules/protocol/ngircd";
|
||||
|
||||
serverinfo {
|
||||
name = "services.irc.net";
|
||||
}
|
||||
|
||||
uplink "server.irc.net" {
|
||||
password = "123abc";
|
||||
port = 6667;
|
||||
|
@@ -51,7 +51,7 @@
|
||||
# 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.
|
||||
# A simple Phrase (<127 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
|
||||
@@ -117,6 +117,12 @@
|
||||
# maximum nickname length!
|
||||
;MaxNickLength = 9
|
||||
|
||||
# Maximum penalty time increase in seconds, per penalty event. Set to -1
|
||||
# for no limit (the default), 0 to disable penalties altogether. The
|
||||
# daemon doesn't use penalty increases higher than 2 seconds during
|
||||
# normal operation, so values greater than 1 rarely make sense.
|
||||
;MaxPenaltyTime = -1
|
||||
|
||||
# Maximum number of channels returned in response to a /list
|
||||
# command (0: unlimited):
|
||||
;MaxListSize = 100
|
||||
|
@@ -1,7 +1,7 @@
|
||||
.\"
|
||||
.\" ngircd(8) manual page template
|
||||
.\"
|
||||
.TH ngircd 8 "Jan 2016" ngIRCd "ngIRCd Manual"
|
||||
.TH ngircd 8 "Jan 2019" ngIRCd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngIRCd \- the "next generation" IRC daemon
|
||||
.SH SYNOPSIS
|
||||
|
@@ -1,7 +1,7 @@
|
||||
.\"
|
||||
.\" ngircd.conf(5) manual page template
|
||||
.\"
|
||||
.TH ngircd.conf 5 "Jan 2016" ngIRCd "ngIRCd Manual"
|
||||
.TH ngircd.conf 5 "Jan 2019" ngIRCd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngircd.conf \- configuration file of ngIRCd
|
||||
.SH SYNOPSIS
|
||||
@@ -125,7 +125,7 @@ take effect when ngircd starts up or is instructed to re-read its
|
||||
configuration file.
|
||||
.TP
|
||||
\fBMotdPhrase\fR (string)
|
||||
A simple Phrase (<256 chars) if you don't want to use a MOTD file.
|
||||
A simple Phrase (<127 chars) if you don't want to use a MOTD file.
|
||||
.TP
|
||||
\fBNetwork\fR (string)
|
||||
The name of the IRC network to which this server belongs. This name is
|
||||
@@ -201,6 +201,12 @@ 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
|
||||
\fBMaxPenaltyTime\fR (number)
|
||||
Maximum penalty time increase in seconds, per penalty event. Set to -1 for no
|
||||
limit (the default), 0 to disable penalties altogether. ngIRCd doesn't use
|
||||
penalty increases higher than 2 seconds during normal operation, so values
|
||||
greater than 1 rarely make sense.
|
||||
.TP
|
||||
\fBMaxListSize\fR (number)
|
||||
Maximum number of channels returned in response to a LIST command. Default: 100.
|
||||
.TP
|
||||
|
@@ -13,6 +13,10 @@
|
||||
#ifdef HAVE_LIBSSL
|
||||
#define SSL_SUPPORT
|
||||
#include <openssl/ssl.h>
|
||||
#if OPENSSL_VERSION_NUMBER < 0x10100000L
|
||||
#define OpenSSL_version SSLeay_version
|
||||
#define OPENSSL_VERSION SSLEAY_VERSION
|
||||
#endif
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
#define SSL_SUPPORT
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -388,6 +388,7 @@ Conf_Test( void )
|
||||
printf(" MaxConnectionsIP = %d\n", Conf_MaxConnectionsIP);
|
||||
printf(" MaxJoins = %d\n", Conf_MaxJoins > 0 ? Conf_MaxJoins : -1);
|
||||
printf(" MaxNickLength = %u\n", Conf_MaxNickLength - 1);
|
||||
printf(" MaxPenaltyTime = %ld\n", Conf_MaxPenaltyTime);
|
||||
printf(" MaxListSize = %d\n", Conf_MaxListSize);
|
||||
printf(" PingTimeout = %d\n", Conf_PingTimeout);
|
||||
printf(" PongTimeout = %d\n", Conf_PongTimeout);
|
||||
@@ -711,7 +712,6 @@ Conf_NickIsService(int ConfServer, const char *Nick)
|
||||
/**
|
||||
* Check if the given nickname is blocked for "normal client" use.
|
||||
*
|
||||
* @param ConfServer The server index or NONE to check all configured servers.
|
||||
* @param Nick The nickname to check.
|
||||
* @returns true if the given nickname belongs to an "IRC service".
|
||||
*/
|
||||
@@ -766,6 +766,7 @@ Set_Defaults(bool InitServers)
|
||||
Conf_MaxConnectionsIP = 5;
|
||||
Conf_MaxJoins = 10;
|
||||
Conf_MaxNickLength = CLIENT_NICK_LEN_DEFAULT;
|
||||
Conf_MaxPenaltyTime = -1;
|
||||
Conf_MaxListSize = 100;
|
||||
Conf_PingTimeout = 120;
|
||||
Conf_PongTimeout = 20;
|
||||
@@ -845,7 +846,7 @@ no_listenports(void)
|
||||
*
|
||||
* This function is used to read the MOTD and help text file, for example.
|
||||
*
|
||||
* @param filename Name of the file to read.
|
||||
* @param Filename Name of the file to read.
|
||||
* @return true, when the file has been read in.
|
||||
*/
|
||||
static bool
|
||||
@@ -887,9 +888,9 @@ Read_TextFile(const char *Filename, const char *Name, array *Destination)
|
||||
* Please note that this function uses exit(1) on fatal errors and therefore
|
||||
* can result in ngIRCd terminating!
|
||||
*
|
||||
* @param ngircd_starting Flag indicating if ngIRCd is starting or not.
|
||||
* @returns true when the configuration file has been read
|
||||
* successfully; false otherwise.
|
||||
* @param IsStarting Flag indicating if ngIRCd is starting or not.
|
||||
* @returns true when the configuration file has been read
|
||||
* successfully; false otherwise.
|
||||
*/
|
||||
static bool
|
||||
Read_Config(bool TestOnly, bool IsStarting)
|
||||
@@ -1642,6 +1643,12 @@ Handle_LIMITS(const char *File, int Line, char *Var, char *Arg)
|
||||
Config_Error_NaN(File, Line, Var);
|
||||
return;
|
||||
}
|
||||
if (strcasecmp(Var, "MaxPenaltyTime") == 0) {
|
||||
Conf_MaxPenaltyTime = atol(Arg);
|
||||
if (Conf_MaxPenaltyTime < -1)
|
||||
Conf_MaxPenaltyTime = -1; /* "unlimited" */
|
||||
return;
|
||||
}
|
||||
if (strcasecmp(Var, "PingTimeout") == 0) {
|
||||
Conf_PingTimeout = atoi(Arg);
|
||||
if (Conf_PingTimeout < 5) {
|
||||
@@ -2282,6 +2289,11 @@ Validate_Config(bool Configtest, bool Rehash)
|
||||
"This server uses PAM, \"Password\" in [Global] section will be ignored!");
|
||||
#endif
|
||||
|
||||
if (Conf_MaxPenaltyTime != -1)
|
||||
Config_Error(LOG_WARNING,
|
||||
"Maximum penalty increase ('MaxPenaltyTime') is set to %ld, this is not recommended!",
|
||||
Conf_MaxPenaltyTime);
|
||||
|
||||
#ifdef DEBUG
|
||||
servers = servers_once = 0;
|
||||
for (i = 0; i < MAX_SERVERS; i++) {
|
||||
|
@@ -239,6 +239,9 @@ GLOBAL unsigned int Conf_MaxNickLength;
|
||||
/** Maximum number of channels returned to /list */
|
||||
GLOBAL int Conf_MaxListSize;
|
||||
|
||||
/** Maximium seconds to add per "penalty". -1 = unlimited. */
|
||||
GLOBAL time_t Conf_MaxPenaltyTime;
|
||||
|
||||
#ifndef STRICT_RFC
|
||||
|
||||
/** Require "AUTH PING-PONG" on login */
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -26,6 +26,7 @@
|
||||
#endif
|
||||
#include "conn.h"
|
||||
|
||||
#include "conf.h"
|
||||
#include "conn-func.h"
|
||||
|
||||
/**
|
||||
@@ -85,7 +86,7 @@ Conn_LastPing( CONN_ID Idx )
|
||||
* is read. This function only increases the penalty, it is not possible to
|
||||
* decrease the penalty time.
|
||||
*
|
||||
* @param Idex Connection index.
|
||||
* @param Idx Connection index.
|
||||
* @param Seconds Seconds to add.
|
||||
* @see Conn_ResetPenalty
|
||||
*/
|
||||
@@ -97,6 +98,14 @@ Conn_SetPenalty(CONN_ID Idx, time_t Seconds)
|
||||
assert(Idx > NONE);
|
||||
assert(Seconds >= 0);
|
||||
|
||||
/* Limit new penalty to maximum configured, when less than 10 seconds. *
|
||||
The latter is used to limit brute force attacks, therefore we don't *
|
||||
want to limit that! */
|
||||
if (Conf_MaxPenaltyTime >= 0
|
||||
&& Seconds > Conf_MaxPenaltyTime
|
||||
&& Seconds < 10)
|
||||
Seconds = Conf_MaxPenaltyTime;
|
||||
|
||||
t = time(NULL);
|
||||
if (My_Connections[Idx].delaytime < t)
|
||||
My_Connections[Idx].delaytime = t;
|
||||
|
@@ -42,6 +42,7 @@ extern struct SSLOptions Conf_SSLOptions;
|
||||
#ifdef HAVE_LIBSSL
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/rand.h>
|
||||
#include <openssl/dh.h>
|
||||
|
||||
static SSL_CTX * ssl_ctx;
|
||||
static DH *dh_params;
|
||||
@@ -326,7 +327,7 @@ ConnSSL_InitLibrary( void )
|
||||
Verify_openssl);
|
||||
SSL_CTX_free(ssl_ctx);
|
||||
ssl_ctx = newctx;
|
||||
Log(LOG_INFO, "%s initialized.", SSLeay_version(SSLEAY_VERSION));
|
||||
Log(LOG_INFO, "%s initialized.", OpenSSL_version(OPENSSL_VERSION));
|
||||
return true;
|
||||
out:
|
||||
SSL_CTX_free(newctx);
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -182,7 +182,6 @@ cb_connserver(int sock, UNUSED short what)
|
||||
CONN_ID idx = Socket2Index( sock );
|
||||
|
||||
if (idx <= NONE) {
|
||||
LogDebug("cb_connserver wants to write on unknown socket?!");
|
||||
io_close(sock);
|
||||
return;
|
||||
}
|
||||
@@ -280,12 +279,11 @@ cb_clientserver(int sock, short what)
|
||||
{
|
||||
CONN_ID idx = Socket2Index(sock);
|
||||
|
||||
assert(idx >= 0);
|
||||
|
||||
if (idx < 0) {
|
||||
if (idx <= NONE) {
|
||||
io_close(sock);
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef SSL_SUPPORT
|
||||
if (what & IO_WANTREAD
|
||||
|| (Conn_OPTION_ISSET(&My_Connections[idx], CONN_SSL_WANT_WRITE))) {
|
||||
@@ -307,32 +305,20 @@ cb_clientserver(int sock, short what)
|
||||
GLOBAL void
|
||||
Conn_Init( void )
|
||||
{
|
||||
CONN_ID i;
|
||||
int size;
|
||||
|
||||
Pool_Size = CONNECTION_POOL;
|
||||
if ((Conf_MaxConnections > 0) &&
|
||||
(Pool_Size > Conf_MaxConnections))
|
||||
Pool_Size = Conf_MaxConnections;
|
||||
|
||||
if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), (size_t)Pool_Size)) {
|
||||
Log(LOG_EMERG, "Can't allocate memory! [Conn_Init]");
|
||||
/* Initialize the "connection pool".
|
||||
* FIXME: My_Connetions/Pool_Size is needed by other parts of the
|
||||
* code; remove them! */
|
||||
Pool_Size = 0;
|
||||
size = Conf_MaxConnections > 0 ? Conf_MaxConnections : CONNECTION_POOL;
|
||||
if (Socket2Index(size) <= NONE) {
|
||||
Log(LOG_EMERG, "Failed to initialize connection pool!");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
/* FIXME: My_Connetions/Pool_Size is needed by other parts of the
|
||||
* code; remove them! */
|
||||
My_Connections = (CONNECTION*) array_start(&My_ConnArray);
|
||||
|
||||
LogDebug("Allocated connection pool for %d items (%ld bytes).",
|
||||
array_length(&My_ConnArray, sizeof(CONNECTION)),
|
||||
array_bytes(&My_ConnArray));
|
||||
|
||||
assert(array_length(&My_ConnArray, sizeof(CONNECTION)) >= (size_t)Pool_Size);
|
||||
|
||||
/* Initialize "listener" array. */
|
||||
array_free( &My_Listeners );
|
||||
|
||||
for (i = 0; i < Pool_Size; i++)
|
||||
Init_Conn_Struct(i);
|
||||
} /* Conn_Init */
|
||||
|
||||
/**
|
||||
@@ -570,8 +556,8 @@ InitSinaddrListenAddr(ng_ipaddr_t *addr, const char *listen_addrstr, UINT16 Port
|
||||
if (!ret) {
|
||||
assert(listen_addrstr);
|
||||
Log(LOG_CRIT,
|
||||
"Can't bind to [%s]:%u: can't convert ip address \"%s\"!",
|
||||
listen_addrstr, Port, listen_addrstr);
|
||||
"Can't listen on [%s]:%u: Failed to parse IP address!",
|
||||
listen_addrstr, Port);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@@ -1095,9 +1081,9 @@ Conn_Close(CONN_ID Idx, const char *LogMsg, const char *FwdMsg, bool InformClien
|
||||
* the calculation of in_p and out_p: in_z_k and out_z_k
|
||||
* are non-zero, that's guaranteed by the protocol until
|
||||
* compression can be enabled. */
|
||||
if (! in_z_k)
|
||||
if (in_z_k <= 0)
|
||||
in_z_k = in_k;
|
||||
if (! out_z_k)
|
||||
if (out_z_k <= 0)
|
||||
out_z_k = out_k;
|
||||
in_p = (int)(( in_k * 100 ) / in_z_k );
|
||||
out_p = (int)(( out_k * 100 ) / out_z_k );
|
||||
@@ -1378,8 +1364,8 @@ New_Connection(int Sock, UNUSED bool IsSSL)
|
||||
/* Check global connection limit */
|
||||
if ((Conf_MaxConnections > 0) &&
|
||||
(NumConnections >= (size_t) Conf_MaxConnections)) {
|
||||
Log(LOG_ALERT, "Can't accept connection: limit (%d) reached!",
|
||||
Conf_MaxConnections);
|
||||
Log(LOG_ALERT, "Can't accept new connection on socket %d: Limit (%d) reached!",
|
||||
Sock, Conf_MaxConnections);
|
||||
Simple_Message(new_sock, "ERROR :Connection limit reached");
|
||||
close(new_sock);
|
||||
return -1;
|
||||
@@ -1398,23 +1384,10 @@ New_Connection(int Sock, UNUSED bool IsSSL)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (new_sock >= Pool_Size) {
|
||||
if (!array_alloc(&My_ConnArray, sizeof(CONNECTION),
|
||||
(size_t) new_sock)) {
|
||||
Log(LOG_EMERG,
|
||||
"Can't allocate memory! [New_Connection]");
|
||||
Simple_Message(new_sock, "ERROR: Internal error");
|
||||
close(new_sock);
|
||||
return -1;
|
||||
}
|
||||
LogDebug("Bumped connection pool to %ld items (internal: %ld items, %ld bytes)",
|
||||
new_sock, array_length(&My_ConnArray,
|
||||
sizeof(CONNECTION)), array_bytes(&My_ConnArray));
|
||||
|
||||
/* Adjust pointer to new block */
|
||||
My_Connections = array_start(&My_ConnArray);
|
||||
while (Pool_Size <= new_sock)
|
||||
Init_Conn_Struct(Pool_Size++);
|
||||
if (Socket2Index(new_sock) <= NONE) {
|
||||
Simple_Message(new_sock, "ERROR: Internal error");
|
||||
close(new_sock);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* register callback */
|
||||
@@ -1523,24 +1496,38 @@ Account_Connection(void)
|
||||
} /* Account_Connection */
|
||||
|
||||
/**
|
||||
* Translate socket handle into connection index.
|
||||
* Translate socket handle into connection index (for historical reasons, it is
|
||||
* a 1:1 mapping today) and enlarge the "connection pool" accordingly.
|
||||
*
|
||||
* @param Sock Socket handle.
|
||||
* @returns Connecion index or NONE, if no connection could be found.
|
||||
* @returns Connecion index or NONE when the pool is too small.
|
||||
*/
|
||||
static CONN_ID
|
||||
Socket2Index( int Sock )
|
||||
{
|
||||
assert( Sock >= 0 );
|
||||
assert(Sock > 0);
|
||||
assert(Pool_Size >= 0);
|
||||
|
||||
if( Sock >= Pool_Size || My_Connections[Sock].sock != Sock ) {
|
||||
/* the Connection was already closed again, likely due to
|
||||
* an error. */
|
||||
LogDebug("Socket2Index: can't get connection for socket %d!", Sock);
|
||||
if (Sock < Pool_Size)
|
||||
return Sock;
|
||||
|
||||
/* Try to allocate more memory ... */
|
||||
if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), (size_t)Sock)) {
|
||||
Log(LOG_EMERG,
|
||||
"Can't allocate memory to enlarge connection pool!");
|
||||
return NONE;
|
||||
}
|
||||
LogDebug("Enlarged connection pool for %ld sockets (%ld items, %ld bytes)",
|
||||
Sock, array_length(&My_ConnArray, sizeof(CONNECTION)),
|
||||
array_bytes(&My_ConnArray));
|
||||
|
||||
/* Adjust pointer to new block, update size and initialize new items. */
|
||||
My_Connections = array_start(&My_ConnArray);
|
||||
while (Pool_Size <= Sock)
|
||||
Init_Conn_Struct(Pool_Size++);
|
||||
|
||||
return Sock;
|
||||
} /* Socket2Index */
|
||||
}
|
||||
|
||||
/**
|
||||
* Read data from the network to the read buffer. If an error occurs,
|
||||
@@ -1931,8 +1918,11 @@ Check_Servers(void)
|
||||
Conf_Server[i].lasttry = time_now;
|
||||
Conf_Server[i].conn_id = SERVER_WAIT;
|
||||
assert(Proc_GetPipeFd(&Conf_Server[i].res_stat) < 0);
|
||||
Resolve_Name(&Conf_Server[i].res_stat, Conf_Server[i].host,
|
||||
cb_Connect_to_Server);
|
||||
|
||||
/* Start resolver subprocess ... */
|
||||
if (!Resolve_Name(&Conf_Server[i].res_stat, Conf_Server[i].host,
|
||||
cb_Connect_to_Server))
|
||||
Conf_Server[i].conn_id = NONE;
|
||||
}
|
||||
} /* Check_Servers */
|
||||
|
||||
@@ -2007,10 +1997,7 @@ New_Server( int Server , ng_ipaddr_t *dest)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!array_alloc(&My_ConnArray, sizeof(CONNECTION), (size_t)new_sock)) {
|
||||
Log(LOG_ALERT,
|
||||
"Cannot allocate memory for server connection (socket %d)",
|
||||
new_sock);
|
||||
if (Socket2Index(new_sock) <= NONE) {
|
||||
close( new_sock );
|
||||
Conf_Server[Server].conn_id = NONE;
|
||||
return;
|
||||
@@ -2024,8 +2011,6 @@ New_Server( int Server , ng_ipaddr_t *dest)
|
||||
return;
|
||||
}
|
||||
|
||||
My_Connections = array_start(&My_ConnArray);
|
||||
|
||||
assert(My_Connections[new_sock].sock <= 0);
|
||||
|
||||
Init_Conn_Struct(new_sock);
|
||||
@@ -2417,7 +2402,7 @@ Conn_GetFromProc(int fd)
|
||||
* @param Reason The reason, see THROTTLE_xxx constants.
|
||||
* @param Idx The connection index.
|
||||
* @param Client The client of this connection.
|
||||
* @param Seconds The time to delay this connection.
|
||||
* @param Value The time to delay this connection.
|
||||
*/
|
||||
static void
|
||||
Throttle_Connection(const CONN_ID Idx, CLIENT *Client, const int Reason,
|
||||
@@ -2472,9 +2457,7 @@ cb_clientserver_ssl(int sock, UNUSED short what)
|
||||
{
|
||||
CONN_ID idx = Socket2Index(sock);
|
||||
|
||||
assert(idx >= 0);
|
||||
|
||||
if (idx < 0) {
|
||||
if (idx <= NONE) {
|
||||
io_close(sock);
|
||||
return;
|
||||
}
|
||||
@@ -2524,12 +2507,13 @@ cb_connserver_login_ssl(int sock, short unused)
|
||||
{
|
||||
CONN_ID idx = Socket2Index(sock);
|
||||
|
||||
assert(idx >= 0);
|
||||
if (idx < 0) {
|
||||
(void) unused;
|
||||
|
||||
if (idx <= NONE) {
|
||||
io_close(sock);
|
||||
return;
|
||||
}
|
||||
(void) unused;
|
||||
|
||||
switch (ConnSSL_Connect( &My_Connections[idx])) {
|
||||
case 1: break;
|
||||
case 0: LogDebug("ConnSSL_Connect: not ready");
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -497,7 +497,7 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
|
||||
topic_power = true;
|
||||
|
||||
if (Req->argc == 1) {
|
||||
/* Request actual topic */
|
||||
/* Request current topic */
|
||||
topic = Channel_Topic(chan);
|
||||
if (*topic) {
|
||||
r = IRC_WriteStrClient(from, RPL_TOPIC_MSG,
|
||||
@@ -532,8 +532,6 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
|
||||
Channel_Name(chan));
|
||||
}
|
||||
|
||||
/* Set new topic */
|
||||
Channel_SetTopic(chan, from, Req->argv[1]);
|
||||
LogDebug("%s \"%s\" set topic on \"%s\": %s",
|
||||
Client_TypeText(from), Client_Mask(from), Channel_Name(chan),
|
||||
Req->argv[1][0] ? Req->argv[1] : "<none>");
|
||||
@@ -545,9 +543,17 @@ IRC_TOPIC( CLIENT *Client, REQUEST *Req )
|
||||
if (!Channel_IsLocal(chan))
|
||||
IRC_WriteStrServersPrefix(Client, from, "TOPIC %s :%s",
|
||||
Req->argv[0], Req->argv[1]);
|
||||
IRC_WriteStrChannelPrefix(Client, chan, from, false, "TOPIC %s :%s",
|
||||
Req->argv[0], Req->argv[1]);
|
||||
|
||||
/* Infrom local clients, but only when the topic really changed. */
|
||||
if (strcmp(Req->argv[1], Channel_Topic(chan)) != 0)
|
||||
IRC_WriteStrChannelPrefix(Client, chan, from, false,
|
||||
"TOPIC %s :%s", Req->argv[0],
|
||||
Req->argv[1]);
|
||||
|
||||
/* Update topic, setter, and timestamp. */
|
||||
Channel_SetTopic(chan, from, Req->argv[1]);
|
||||
|
||||
/* Send confirmation when the local client is a user. */
|
||||
if (Client_Type(Client) == CLIENT_USER)
|
||||
return IRC_WriteStrClientPrefix(Client, Client, "TOPIC %s :%s",
|
||||
Req->argv[0], Req->argv[1]);
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -89,7 +89,7 @@ IRC_PASS( CLIENT *Client, REQUEST *Req )
|
||||
|
||||
/* Protocol version */
|
||||
if (Req->argc >= 2 && strlen(Req->argv[1]) >= 4) {
|
||||
int c2, c4;
|
||||
char c2, c4;
|
||||
|
||||
c2 = Req->argv[1][2];
|
||||
c4 = Req->argv[1][4];
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -380,11 +380,10 @@ va_dcl
|
||||
* Send a message to all the servers in the network using a specific prefix
|
||||
* and matching a "client flag" using a callback function.
|
||||
*
|
||||
* @param Client The sending client, excluded while forwarding the message.
|
||||
* @param ExceptOf The sending client, excluded while forwarding the message.
|
||||
* @param Prefix The prefix to use.
|
||||
* @param Flag Client flag that must be set on the target.
|
||||
* @param callback Callback function.
|
||||
* @param Format Format string.
|
||||
*/
|
||||
GLOBAL void
|
||||
IRC_WriteStrServersPrefixFlag_CB(CLIENT *ExceptOf, CLIENT *Prefix, char Flag,
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -112,7 +112,7 @@ IRC_ERROR(CLIENT *Client, REQUEST *Req)
|
||||
}
|
||||
|
||||
if (Client_Conn(Client) != NONE) {
|
||||
Client_Destroy(Client, NULL, msg, false);
|
||||
Conn_Close(Client_Conn(Client), NULL, msg, false);
|
||||
return DISCONNECTED;
|
||||
}
|
||||
|
||||
@@ -362,12 +362,8 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
|
||||
return CONNECTED;
|
||||
}
|
||||
|
||||
/* Inform other servers */
|
||||
IRC_WriteStrServersPrefix(From ? Client : NULL,
|
||||
From ? From : Client_ThisServer(),
|
||||
"KILL %s :%s", Nick, Reason);
|
||||
|
||||
if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK) {
|
||||
if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK
|
||||
&& Client_Type(c) != CLIENT_SERVICE) {
|
||||
/* Target of this KILL is not a regular user, this is
|
||||
* invalid! So we ignore this case if we received a
|
||||
* regular KILL from the network and try to kill the
|
||||
@@ -388,6 +384,12 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
|
||||
Client_Type(c), Nick);
|
||||
}
|
||||
|
||||
/* Inform other servers */
|
||||
IRC_WriteStrServersPrefix(From ? Client : NULL,
|
||||
From ? From : Client_ThisServer(),
|
||||
"KILL %s :%s", Nick, Reason);
|
||||
|
||||
|
||||
/* Save ID of this connection */
|
||||
if (Client)
|
||||
my_conn = Client_Conn(Client);
|
||||
@@ -413,7 +415,7 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
|
||||
* Send help for a given topic to the client.
|
||||
*
|
||||
* @param Client The client requesting help.
|
||||
* @param Topoc The help topic requested.
|
||||
* @param Topic The help topic requested.
|
||||
* @return CONNECTED or DISCONNECTED.
|
||||
*/
|
||||
static bool
|
||||
@@ -481,11 +483,8 @@ Help(CLIENT *Client, const char *Topic)
|
||||
* @return Pointer to static (global) string buffer.
|
||||
*/
|
||||
static char *
|
||||
#ifdef ZLIB
|
||||
#if defined(SSL_SUPPORT) || defined(ZLIB)
|
||||
Option_String(CONN_ID Idx)
|
||||
#else
|
||||
Option_String(UNUSED CONN_ID Idx)
|
||||
#endif
|
||||
{
|
||||
static char option_txt[8];
|
||||
UINT16 options;
|
||||
@@ -505,6 +504,11 @@ Option_String(UNUSED CONN_ID Idx)
|
||||
#endif
|
||||
|
||||
return option_txt;
|
||||
#else
|
||||
Option_String(UNUSED CONN_ID Idx)
|
||||
{
|
||||
return "";
|
||||
#endif
|
||||
} /* Option_String */
|
||||
|
||||
/**
|
||||
@@ -690,7 +694,10 @@ Send_Message(CLIENT * Client, REQUEST * Req, int ForceType, bool SendErrors)
|
||||
goto send_next_target;
|
||||
}
|
||||
|
||||
if (Client_HasMode(cl, 'C')) {
|
||||
if (Client_HasMode(cl, 'C') &&
|
||||
!Client_HasMode(from, 'o') &&
|
||||
!(Client_Type(from) == CLIENT_SERVER) &&
|
||||
!(Client_Type(from) == CLIENT_SERVICE)) {
|
||||
cl2chan = Channel_FirstChannelOf(cl);
|
||||
while (cl2chan) {
|
||||
chan = Channel_GetChannel(cl2chan);
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -39,7 +39,7 @@ struct list_elem {
|
||||
/**
|
||||
* Get IRC mask stored in list element.
|
||||
*
|
||||
* @param list_elem List element.
|
||||
* @param e List element.
|
||||
* @return Pointer to IRC mask
|
||||
*/
|
||||
GLOBAL const char *
|
||||
@@ -52,7 +52,7 @@ Lists_GetMask(const struct list_elem *e)
|
||||
/**
|
||||
* Get optional "reason" text stored in list element.
|
||||
*
|
||||
* @param list_elem List element.
|
||||
* @param e List element.
|
||||
* @return Pointer to "reason" text or empty string ("").
|
||||
*/
|
||||
GLOBAL const char *
|
||||
@@ -65,7 +65,7 @@ Lists_GetReason(const struct list_elem *e)
|
||||
/**
|
||||
* Get "validity" value stored in list element.
|
||||
*
|
||||
* @param list_elem List element.
|
||||
* @param e List element.
|
||||
* @return Validity: 0=unlimited, >0 until this time stamp.
|
||||
*/
|
||||
GLOBAL time_t
|
||||
@@ -78,7 +78,7 @@ Lists_GetValidity(const struct list_elem *e)
|
||||
/**
|
||||
* Get "onlyonce" value stored in list element.
|
||||
*
|
||||
* @param list_elem List element.
|
||||
* @param e List element.
|
||||
* @return True if the element was stored for single use, false otherwise.
|
||||
*/
|
||||
GLOBAL bool
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -77,7 +77,7 @@ MatchCaseInsensitive(const char *Pattern, const char *String)
|
||||
/**
|
||||
* Match string with pattern case-insensitive.
|
||||
*
|
||||
* @param pattern Pattern to match with
|
||||
* @param Pattern Pattern to match with
|
||||
* @param String Input string, at most COMMAND_LEN-1 characters long
|
||||
* @param Separator Character separating the individual patterns in the list
|
||||
* @return true if pattern matches
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2016 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2019 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
|
||||
@@ -451,7 +451,7 @@ static void
|
||||
Show_Version( void )
|
||||
{
|
||||
puts( NGIRCd_Version );
|
||||
puts( "Copyright (c)2001-2016 Alexander Barton (<alex@barton.de>) and Contributors." );
|
||||
puts( "Copyright (c)2001-2019 Alexander Barton (<alex@barton.de>) and Contributors." );
|
||||
puts( "Homepage: <http://ngircd.barton.de/>\n" );
|
||||
puts( "This is free software; see the source for copying conditions. There is NO" );
|
||||
puts( "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." );
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -58,7 +58,7 @@ Op_NoPrivileges(CLIENT * Client, REQUEST * Req)
|
||||
* Check that the originator of a request is an IRC operator and allowed
|
||||
* to administer this server.
|
||||
*
|
||||
* @param CLient Client from which the command has been received.
|
||||
* @param Client Client from which the command has been received.
|
||||
* @param Req Request structure.
|
||||
* @return CLIENT structure of the client that initiated the command or
|
||||
* NULL if client is not allowed to execute operator commands.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2015 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -111,7 +111,7 @@ static COMMAND My_Commands[] =
|
||||
_CMD("USERS", IRC_USERS, CLIENT_USER|CLIENT_SERVER, 0, -1, 0),
|
||||
_CMD("VERSION", IRC_VERSION, CLIENT_USER|CLIENT_SERVER, 0, 1, 1),
|
||||
_CMD("WALLOPS", IRC_WALLOPS, CLIENT_USER|CLIENT_SERVER, 1, 1, 0),
|
||||
_CMD("WEBIRC", IRC_WEBIRC, CLIENT_UNKNOWN, 4, 4, 0),
|
||||
_CMD("WEBIRC", IRC_WEBIRC, CLIENT_UNKNOWN, 4, 5, 0),
|
||||
_CMD("WHO", IRC_WHO, CLIENT_USER, 0, 2, 1),
|
||||
_CMD("WHOIS", IRC_WHOIS, CLIENT_USER|CLIENT_SERVER, 0, -1, 1),
|
||||
_CMD("WHOWAS", IRC_WHOWAS, CLIENT_USER|CLIENT_SERVER, 0, -1, 0),
|
||||
@@ -169,8 +169,8 @@ Parse_GetCommandStruct( void )
|
||||
*
|
||||
* @param Idx Index of the connection from which the command has been received.
|
||||
* @param Request NULL terminated line of text (the "command").
|
||||
* @return true on success (valid command or "regular" error), false if a
|
||||
* fatal error occurred and the connection has been shut down.
|
||||
* @return CONNECTED on success (valid command or "regular" error), DISCONNECTED
|
||||
* if a fatal error occurred and the connection has been shut down.
|
||||
*/
|
||||
GLOBAL bool
|
||||
Parse_Request( CONN_ID Idx, char *Request )
|
||||
@@ -257,11 +257,14 @@ Parse_Request( CONN_ID Idx, char *Request )
|
||||
}
|
||||
}
|
||||
|
||||
if( ! Validate_Prefix( Idx, &req, &closed )) return ! closed;
|
||||
if( ! Validate_Command( Idx, &req, &closed )) return ! closed;
|
||||
if( ! Validate_Args( Idx, &req, &closed )) return ! closed;
|
||||
if(!Validate_Prefix(Idx, &req, &closed))
|
||||
return !closed;
|
||||
if(!Validate_Command(Idx, &req, &closed))
|
||||
return !closed;
|
||||
if(!Validate_Args(Idx, &req, &closed))
|
||||
return !closed;
|
||||
|
||||
return Handle_Request( Idx, &req );
|
||||
return Handle_Request(Idx, &req);
|
||||
} /* Parse_Request */
|
||||
|
||||
|
||||
@@ -490,7 +493,7 @@ static bool
|
||||
Handle_Request( CONN_ID Idx, REQUEST *Req )
|
||||
{
|
||||
CLIENT *client;
|
||||
bool result = true;
|
||||
bool result = CONNECTED;
|
||||
int client_type;
|
||||
COMMAND *cmd;
|
||||
|
||||
@@ -546,6 +549,8 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
|
||||
cmd->lcount++;
|
||||
else
|
||||
cmd->rcount++;
|
||||
|
||||
/* Return result of command (CONNECTED/DISCONNECTED). */
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -554,13 +559,13 @@ Handle_Request( CONN_ID Idx, REQUEST *Req )
|
||||
client_type != CLIENT_SERVICE )
|
||||
return true;
|
||||
|
||||
/* Unknown command and registered connection: generate error: */
|
||||
LogDebug("Connection %d: Unknown command \"%s\", %d %s,%s prefix.",
|
||||
Client_Conn( client ), Req->command, Req->argc,
|
||||
Req->argc == 1 ? "parameter" : "parameters",
|
||||
Req->prefix ? "" : " no" );
|
||||
|
||||
if (Client_Type(client) != CLIENT_SERVER)
|
||||
/* Unknown command and registered connection: generate error: */
|
||||
if (client_type != CLIENT_SERVER)
|
||||
result = IRC_WriteErrClient(client, ERR_UNKNOWNCOMMAND_MSG,
|
||||
Client_ID(client), Req->command);
|
||||
|
||||
|
@@ -108,9 +108,8 @@ Resolve_Name( PROC_STAT *s, const char *Host, void (*cbfunc)(int, short))
|
||||
return false;
|
||||
} /* Resolve_Name */
|
||||
|
||||
|
||||
#if !defined(HAVE_GETADDRINFO) || !defined(HAVE_GETNAMEINFO)
|
||||
#if !defined(WANT_IPV6) && defined(h_errno)
|
||||
#if !defined(HAVE_WORKING_GETADDRINFO) || !defined(HAVE_GETNAMEINFO)
|
||||
#ifdef h_errno
|
||||
static char *
|
||||
Get_Error( int H_Error )
|
||||
{
|
||||
@@ -233,7 +232,11 @@ ReverseLookup(const ng_ipaddr_t *IpAddr, char *resbuf, size_t reslen)
|
||||
* @return true if lookup successful, false if domain name not found
|
||||
*/
|
||||
static bool
|
||||
#ifdef HAVE_WORKING_GETADDRINFO
|
||||
ForwardLookup(const char *hostname, array *IpAddr, int af)
|
||||
#else
|
||||
ForwardLookup(const char *hostname, array *IpAddr, UNUSED int af)
|
||||
#endif
|
||||
{
|
||||
ng_ipaddr_t addr;
|
||||
|
||||
|
@@ -15,7 +15,13 @@ EXTRA_DIST = Makefile.ng
|
||||
|
||||
noinst_LIBRARIES = libngportab.a
|
||||
|
||||
libngportab_a_SOURCES = strdup.c strndup.c strlcpy.c strtok_r.c vsnprintf.c waitpid.c
|
||||
libngportab_a_SOURCES = \
|
||||
strdup.c \
|
||||
strlcpy.c \
|
||||
strndup.c \
|
||||
strtok_r.c \
|
||||
vsnprintf.c \
|
||||
waitpid.c
|
||||
|
||||
check_PROGRAMS = portabtest
|
||||
|
||||
|
@@ -12,6 +12,7 @@
|
||||
[Limits]
|
||||
MaxConnectionsIP = 0
|
||||
MaxJoins = 4
|
||||
MaxPenaltyTime = 1
|
||||
|
||||
[Options]
|
||||
OperCanUseMode = yes
|
||||
|
@@ -12,6 +12,7 @@
|
||||
[Limits]
|
||||
MaxConnectionsIP = 0
|
||||
MaxJoins = 4
|
||||
MaxPenaltyTime = 1
|
||||
|
||||
[Options]
|
||||
OperCanUseMode = yes
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2014 Alexander Barton (alex@barton.de) and Contributors.
|
||||
* Copyright (c)2001-2018 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
|
||||
@@ -82,7 +82,7 @@ ngt_UpperStr(char *String)
|
||||
|
||||
ptr = String;
|
||||
while(*ptr) {
|
||||
*ptr = toupper((int)*ptr);
|
||||
*ptr = (char)toupper(*ptr);
|
||||
ptr++;
|
||||
}
|
||||
return String;
|
||||
@@ -101,7 +101,7 @@ ngt_LowerStr(char *String)
|
||||
|
||||
ptr = String;
|
||||
while(*ptr) {
|
||||
*ptr = tolower((int)*ptr);
|
||||
*ptr = (char)tolower(*ptr);
|
||||
ptr++;
|
||||
}
|
||||
return String;
|
||||
|
Reference in New Issue
Block a user