ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2015 Alexander Barton and Contributors.
+ (c)2001-2016 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
Brett Smith <brett@w3.org>
Brian Collins <bricollins@gmail.com>
Bryan Caldwell <bcaldwel@ucsd.edu>
+Christian Aistleitner <christian@quelltextlich.at>
Christoph Biedl <ngircd.anoy@manchmal.in-ulm.de>
-DNS <dns@rbose.org>
Dana Dahlstrom <dana+ngIRCd@cs.ucsd.edu>
David Kingston <deathking1337@aim.com>
+DNS <dns@rbose.org>
Eric Grunow <egrunow@ucsd.edu>
Federico G. Schwindt <fgsch@lodoss.net>
Gabor Adam Toth <tg@tgbit.net>
Code snippets
~~~~~~~~~~~~~
-J. Kercheval: pattern matching functions
-Patrick Powell <papowell@astart.com>: snprintf()-function
Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
+John Kercheval: pattern matching functions
+Patrick Powell <papowell@astart.com>: snprintf()-function
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2015 Alexander Barton and Contributors.
+ (c)2001-2016 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- ChangeLog --
+ngIRCd 24
+
+ ngIRCd 24~rc1 (2017-01-07)
+ - Enhance systemd service file, and install it in Debian package.
+ - Update configuration of Debian package.
+ - Log privilege violations and failed OPER request with log level "error"
+ and send it to the "&SERVER" channel, too.
+ - Immediately shut down connection when receiving an "ERROR" command,
+ don't wait for the peer to close the connection. This allows the daemon
+ to forward the received "ERROR" message in the network, instead of the
+ very generic "client closed connection" message.
+ - Fix sending of entry duration (no negative values!) when synchronizing
+ "x-lines" (G-LINES).
+ - List expiration (G-LINES): use same log level as when setting, and log
+ this event to the &SERVER channel, too.
+ - Explicitly forbid remote servers to modify "x-lines" (G-LINES) when the
+ "AllowRemoteOper" configuration option isn't set, even when the command
+ seems to originate from the remote server itself: this prevents GLINE's
+ to become set during server handshake in this case (what wouldn't be
+ possible during regular runtime when a remote IRC Op sends the command)
+ and what can't be undone by IRC Ops later on (because of the missing
+ "AllowRemoteOper" option) ...
+ - Make scripts and init-files in ./contrib executable.
+ - Fix building ngIRCd with OpenSSL 1.1. Thanks to Christoph Biedl
+ <ngircd.anoy@manchmal.in-ulm.de> for the patch!
+ - Fix code indentation warnings of gcc 6.2.
+ - Update config.guess (2016-04-02) and config.sub (2016-03-30) files.
+ - Fix warnings of the "shellcheck" linter in autogen.sh, contrib/ngindent
+ and contrib/platformtest.sh.
+ - Update Xcode project for latest Xcode version (8.0), and fix "duplicate
+ symbols" error messages when building (linking) the binary.
+ - Add "Documentation" variables to systemd configuration files.
+ - Make sure that SYSCONFDIR is always set, which can be handy when
+ using source code linters when ./configure hasn't been run already.
+ - Add the new "PAMServiceName" configuration option to specify the name
+ used as PAM service name. This setting allows to run multiple ngIRCd
+ instances with different PAM configurations for each instance.
+ Thanks to Christian Aistleitner <christian@quelltextlich.at> for the
+ patch, closes #226.
+ - Add an ".editorconfig" file to the project.
+ - Travis-CI: use "container-based infrastructure".
+ - Limit the number of message targets, and suppress duplicates: This
+ prevents an user from flooding the server using commands like this:
+ "PRIVMSG nick1,nick1,nick1,...".
+ Duplicate targets are suppressed silently (channels and clients).
+ In addition, the maximum number of targets per PRIVMSG, NOTICE, ...
+ command are limited to MAX_HNDL_TARGETS (25). If there are more, the
+ daemon sends the new 407 (ERR_TOOMANYTARGETS_MSG) numeric, containing
+ the first target that hasn't been handled any more. Closes #187.
+ - Test suite: Add new test for server-server logins.
+ - contrib/ngindent: Fix shebang line.
+ - Make contrib/platformtest.sh script more portable, and only show
+ "runs=Y" when the test suite really has been passed successfully.
+ - Code cleanup in the NJON handler and the function killing clients as
+ well as the function sending messages to a "mask" (cleaner code, more
+ fault tolerant, better code comments).
+ - Update and enhance documentation: README file, doc/Platforms.txt,
+ doc/Modes.txt, doc/Commands.txt, doc/PAM.txt.
+ - Fix NJOIN not propagating "half ops" status: ngIRCd tested for the wrong
+ prefix of "half ops" when processing NJOIN commands and therefore never
+ classified a remote user as "half op".
+ Thanks to wowaname for pointing this out on #ngircd!
+
ngIRCd 23 (2015-11-16)
- Explicitly cast time_t to long when printing it out: this prevents
In addition, IRC Ops can use these two forms to specify the <target>:
.
- #<hostmask>
- - #<servermask>
+ - $<servermask>
.
The <mask> can contain the wildcard characters "*" and "?", but must
contain at least one dot (".") and no wildcard after the last one.
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2015 Alexander Barton and Contributors.
+ (c)2001-2016 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
mode since description
- q 20 User is channel owner can only be set by a service, other
- owner and irc op. Can promote other users to q, a, o, h, v.
- a 20 User is channel admin and can promote other users to v, h, o
+ q 20 User is channel owner. This mode can only be set by an IRC
+ service, other owner or IRC operator. Channel owners can
+ promote other users to all levels: q, a, o, h, v. Prefix: "~".
+ a 20 User is channel admin and can promote other users to v, h, o.
+ Prefix: "&".
o 0.2.0 User is channel operator and can op/kick/... other members.
+ Prefix: "@".
h 20 User is half op and can set channel modes imntvIbek and kick
- voiced and normal users.
+ voiced and normal users. Prefix: "%".
v 0.2.0 User is "voiced" and can speak even if channel is moderated.
+ Prefix: "+".
Notes
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2015 Alexander Barton and Contributors.
+ (c)2001-2016 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
-- NEWS --
+ngIRCd 24
+
+ ngIRCd 24~rc1 (2017-01-07)
+ - Log privilege violations and failed OPER request with log level "error"
+ and send it to the "&SERVER" channel, too.
+ - Immediately shut down connection when receiving an "ERROR" command,
+ don't wait for the peer to close the connection. This allows the daemon
+ to forward the received "ERROR" message in the network, instead of the
+ very generic "client closed connection" message.
+ - Explicitly forbid remote servers to modify "x-lines" (G-LINES) when the
+ "AllowRemoteOper" configuration option isn't set, even when the command
+ seems to originate from the remote server itself: this prevents GLINE's
+ to become set during server handshake in this case (what wouldn't be
+ possible during regular runtime when a remote IRC Op sends the command)
+ and what can't be undone by IRC Ops later on (because of the missing
+ "AllowRemoteOper" option) ...
+ - Update Xcode project for latest Xcode version (8.0), and fix "duplicate
+ symbols" error messages when building (linking) the binary.
+ - Add "Documentation" variables to systemd configuration files.
+ - Make sure that SYSCONFDIR is always set, which can be handy when
+ using source code linters when ./configure hasn't been run already.
+ - Add the new "PAMServiceName" configuration option to specify the name
+ used as PAM service name. This setting allows to run multiple ngIRCd
+ instances with different PAM configurations for each instance.
+ Thanks to Christian Aistleitner <christian@quelltextlich.at> for the
+ patch, closes #226.
+ - Add an ".editorconfig" file to the project.
+ - Limit the number of message target, and suppress duplicates: This
+ prevents an user from flooding the server using commands like this:
+ "PRIVMSG nick1,nick1,nick1,...".
+ Duplicate targets are suppressed silently (channels and clients).
+ In addition, the maximum number of targets per PRIVMSG, NOTICE, ...
+ command are limited to MAX_HNDL_TARGETS (25). If there are more, the
+ daemon sends the new 407 (ERR_TOOMANYTARGETS_MSG) numeric, containing
+ the first target that hasn't been handled any more. Closes #187.
+ - Make contrib/platformtest.sh script more portable, and only show
+ "runs=Y" when the test suite really has been passed successfully.
+
ngIRCd 23 (2015-11-16)
ngIRCd 23~rc1 (2015-09-06)
Here the "pam_debug" module will be called each time a client connects to
the ngIRCd and has sent its PASS, NICK, and USER commands.
+The PAM library used by the ngIRCd daemon must be able to access its
+configuration file, so don't forget to check permissions and run something
+like this: "chmod 644 /etc/pam.d/ngircd".
+
Please note ONE VERY IMPORTANT THING:
All the PAM modules are executed with the privileges of the user ngIRCd
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2013 Alexander Barton and Contributors.
+ (c)2001-2016 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
armv7l/unk./linux-gnueabi gcc 4.4.3 19.1 12-04-29 goetz Y Y Y Y 5
armv7l/unk./linux-gnueabihf gcc 4.6.3 22~rc1-3 14-10-10 alex Y Y Y Y 5
armv7l/unk./linux-gnueabihf gcc 4.8.2 21.1 14-07-15 goetz Y Y Y Y 5
+armv7l/unk./linux-gnueabihf gcc 4.9.2 23 16-01-10 alex Y Y Y Y 5
hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y
hppa/unknown/openbsd5.4 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y y Y 3
hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
i386/apple/darwin9.7.0 gcc 4.0.1 14.1 09-08-04 alex Y Y Y Y 3
i386/apple/darwin10.8.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y 3
i386/apple/darwin11.3.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y 3
+i386/pc/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.5.2 21~rc2 13-10-27 alex Y Y N Y 4
+i386/pc/solaris2.11 gcc 4.8.2 23 16-02-07 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
-i686/pc/minix gcc 4.4.6 21~rc2 13-10-27 alex Y Y N N
-i686/unknown/gnu0.3 gcc 4.4.5 19 12-02-29 alex Y Y Y Y
-i686/unknown/gnu0.5 gcc 4.9.1 22~rc1-3 14-10-11 alex Y Y Y Y
-i686/unkn./kfreebsd7.2-gnu gcc 4.3.4 15 09-12-02 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/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 21 13-11-17 goetz 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
i386/unknown/openbsd4.1 gcc 3.3.5 16 10-04-11 alex Y Y Y Y 3
i386/unknown/openbsd5.3 gcc 4.2.1 21 13-11-28 goetz Y Y Y Y 3
i386/unknown/openbsd5.4 gcc 4.2.1 21 13-11-28 goetz Y Y Y Y 3
i586/pc/haiku gcc 2.95.3 19.2~138 12-10-11 user Y Y N N
-i586/pc/interix3.5 gcc 3.3 19 12-02-29 alex Y Y N Y
-i686/pc/cygwin gcc 4.8.3 22~rc1-3 14-10-10 alex Y Y N Y
-i686/pc/linux-gnu gcc 2.7.2 21~38 14-01-06 goetz Y Y Y Y 1
+i586/pc/interix3.5 gcc 3.3 23 16-01-29 alex Y Y N Y
+i686/pc/cygwin gcc 4.9.3 23 16-01-06 alex Y Y Y Y
+i686/pc/linux-gnu gcc 2.6.3 23 16-01-06 goetz Y Y y Y 1
+i686/pc/linux-gnu gcc 2.7.2.1 23 15-11-30 goetz Y Y N Y 1
+i686/pc/linux-gnu gcc 2.95.2 23 15-12-23 goetz Y Y Y Y 1
i686/pc/linux-gnu gcc 2.95.4 0.8.0 04-05-30 alex Y Y Y Y 1
i686/pc/linux-gnu gcc 3.3.5 14.1 09-08-04 alex Y Y Y Y 1
-i386/pc/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y 1
-i386/pc/linux-gnu gcc 4.4.5 22~rc1-3 14-10-10 alex Y Y Y Y 1
i686/pc/linux-gnu gcc 4.3.2 14.1 09-08-04 alex Y Y Y Y 1
+i686/pc/minix gcc 4.4.6 21~rc2 13-10-27 alex Y Y N N
+i686/unknown/gnu0.3 gcc 4.4.5 19 12-02-29 alex Y Y Y Y
+i686/unknown/gnu0.5 gcc 4.9.1 22~rc1-3 14-10-11 alex Y Y Y Y
+i686/unkn./kfreebsd7.2-gnu gcc 4.3.4 15 09-12-02 alex Y Y Y Y 3
m68k/apple/aux3.0.1 gcc 2.7.2 17 10-11-07 alex Y Y N Y
m68k/apple/aux3.0.1 Orig. A/UX 17 10-11-07 alex Y Y N Y 2
m68k/apple/aux3.1.1 gcc 2.7.2 19 12-02-26 alex Y Y N Y
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/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/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/unkn./freebsd8.1-gnu gcc 4.4.5 19 12-02-26 alex Y Y Y Y 3
x86_64/unknown/linux-gnu clang 3.3 21 14-01-07 alex Y Y Y Y 1
x86_64/unknown/linux-gnu 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/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/unknown/linux-gnu gcc 4.9.2 23~rc1-3 15-11-15 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/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/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
x86_64/unknown/linux-gnu Sun C 5.12 21.1 14-03-27 goetz Y Y Y Y 1
-x86_64/unknown/linux-gnu tcc 0.9.25 21.1 14-03-27 goetz Y Y Y Y 1
x86_64/unknown/openbsd4.7 gcc 3.3.5 20~rc1 12-02-26 alex Y Y Y Y 3
x86_64/unknown/openbsd4.8 gcc 4.2.1 22~rc1-3 14-10-10 alex Y Y y Y 3
x86_64/unknown/openbsd5.1 gcc 4.2.1 21 13-12-28 alex Y Y Y Y 3
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2015 Alexander Barton and Contributors.
+ (c)2001-2016 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
II. Status
~~~~~~~~~~~
+ngIRCd should be quite feature complete and stable to be used as daemon in
+real world IRC networks.
+
It is not the goal of ngIRCd to implement all the nasty behaviors of the
original ircd, but to implement most of the useful commands and semantics
-specified by the RFCs.
-
-In the meantime ngIRCd should be quite feature complete and stable to be
-used in real IRC networks.
+specified by the RFCs that are used by existing clients.
-Implemented IRC-commands are:
-
-ADMIN, AWAY, CHANINFO, CONNECT, DIE, DISCONNECT, ERROR, GLINE, HELP, INFO,
-INVITE, ISON, JOIN, KICK, KILL, KLINE, LINKS, LIST, LUSERS, MODE, MOTD,
-NAMES, NICK, NJOIN, NOTICE, OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT,
-REHASH, RESTART, SERVER, SERVICE, SERVLIST, SQUERY, SQUIT, STATS, SUMMON,
-TIME, TOPIC, TRACE, USER, USERHOST, USERS, VERSION, WALLOPS, WEBIRC, WHO,
-WHOIS, WHOWAS.
III. Features (or: why use ngIRCd?)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-- well arranged (lean) configuration file
-- simple to build/install, configure and maintain
-- supports IPv6 and SSL
-- no problems with servers that have dynamic IP addresses
-- freely available, modern, portable and tidy C-source
-- wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
+- Well arranged (lean) configuration file.
+- Simple to build, install, configure, and maintain.
+- Supports IPv6 and SSL.
+- Can use PAM for user authentication.
+- Lots of popular user and channel modes are implemented.
+- Supports "cloaking" of users.
+- No problems with servers that have dynamic IP addresses.
+- Freely available, modern, portable and tidy C source.
+- Wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
IRIX, Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
- ngIRCd is being actively developed since 2001.
~~~~~~~~~~~~~~~~~
More documentation can be found in the "doc/" directory and the homepage of
-the ngIRCd: <http://ngircd.barton.de/>.
+ngIRCd: <http://ngircd.barton.de/>.
V. Download
~~~~~~~~~~~
-The homepage of the ngIRCd is: <http://ngircd.barton.de/>; you will find
+The homepage of the ngIRCd is <http://ngircd.barton.de/>; you will find
the newest information about the ngIRCd and the most recent ("stable")
releases there.
-If you are interested in the latest development versions (which are not
-always stable), then please read the section about "GIT" on the homepage and
-the file "doc/GIT.txt" which describes the use of GIT, the version control
-system used by ngIRCd (homepage: <http://git-scm.com/>).
+Visit our source code repository at GitHub if you are interested in the
+latest development version: <https://github.com/ngircd/ngircd>.
-VI. Bugs
-~~~~~~~~
+VI. Problems, Bugs, Patches
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
-If you find bugs in the ngIRCd (which might be there :-), please report
-them at the following URL:
+Please don't hesitate to contact us if you encounter problems:
-<https://github.com/ngircd/ngircd/issues>
+- On IRC: <irc://irc.barton.de/ngircd>
+- Via the mailing list: <ngircd-ml@ngircd.barton.de>
-There you can read about known bugs and limitations, too.
+See <http://ngircd.barton.de/support.php> for details.
-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>.
+If you find bugs in ngIRCd (which will be there most probably ...), please
+report them to our issue tracker at GitHub:
+
+- Bug tracker: <https://github.com/ngircd/ngircd/issues>
+- Patches, "pull requests": <https://github.com/ngircd/ngircd/pulls>
+
+There you can read about known bugs and limitations, too.