From: Alexander Barton Date: Sun, 8 Jan 2017 22:12:09 +0000 (+0100) Subject: Update documentation for ngIRCd Release 24~rc1 X-Git-Url: https://arthur.ath.cx/gitweb/?a=commitdiff_plain;h=3a63b047bba25ce4dcda097eec95e23641a23777;p=ngircd-web.git Update documentation for ngIRCd Release 24~rc1 --- diff --git a/doc/AUTHORS b/doc/AUTHORS index 749dc3a..8ccf7a4 100644 --- a/doc/AUTHORS +++ b/doc/AUTHORS @@ -2,7 +2,7 @@ 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. @@ -33,10 +33,11 @@ Brandon Beresini Brett Smith Brian Collins Bryan Caldwell +Christian Aistleitner Christoph Biedl -DNS Dana Dahlstrom David Kingston +DNS Eric Grunow Federico G. Schwindt Gabor Adam Toth @@ -63,6 +64,6 @@ xor Code snippets ~~~~~~~~~~~~~ -J. Kercheval: pattern matching functions -Patrick Powell : snprintf()-function Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions +John Kercheval: pattern matching functions +Patrick Powell : snprintf()-function diff --git a/doc/ChangeLog b/doc/ChangeLog index 18194ce..daff34d 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -2,13 +2,76 @@ 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 + 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 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 diff --git a/doc/Commands.txt b/doc/Commands.txt index d350e8d..c4bd3a1 100644 --- a/doc/Commands.txt +++ b/doc/Commands.txt @@ -324,7 +324,7 @@ General Commands In addition, IRC Ops can use these two forms to specify the : . - # - - # + - $ . The can contain the wildcard characters "*" and "?", but must contain at least one dot (".") and no wildcard after the last one. diff --git a/doc/INSTALL b/doc/INSTALL index 3f19065..302f521 100644 --- a/doc/INSTALL +++ b/doc/INSTALL @@ -2,7 +2,7 @@ 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. diff --git a/doc/Modes.txt b/doc/Modes.txt index 18930f7..92e6613 100644 --- a/doc/Modes.txt +++ b/doc/Modes.txt @@ -75,13 +75,17 @@ channel of which he is a member. mode since description - q 20 User is channel owner can only be set by a service, other - owner and irc op. Can promote other users to q, a, o, h, v. - a 20 User is channel admin and can promote other users to v, h, o + 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 diff --git a/doc/NEWS b/doc/NEWS index 3fe47c3..e0188e6 100644 --- a/doc/NEWS +++ b/doc/NEWS @@ -2,13 +2,51 @@ 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 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) diff --git a/doc/PAM.txt b/doc/PAM.txt index 671f071..818c4f1 100644 --- a/doc/PAM.txt +++ b/doc/PAM.txt @@ -26,6 +26,10 @@ A very simple -- and quite useless ;-) -- example would be: 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 diff --git a/doc/Platforms.txt b/doc/Platforms.txt index 341ff6d..4a23cb0 100644 --- a/doc/Platforms.txt +++ b/doc/Platforms.txt @@ -2,7 +2,7 @@ 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. @@ -32,6 +32,7 @@ armv6l/unk./linux-gnueabihf gcc 4.6.3 21~rc2 13-10-26 pi Y Y Y Y 5 armv7l/unk./linux-gnueabi gcc 4.4.3 19.1 12-04-29 goetz Y Y Y Y 5 armv7l/unk./linux-gnueabihf gcc 4.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 @@ -40,34 +41,37 @@ hppa2.0w-hp-hpux11.11 gcc 4.2.3 14.1 09-07-22 goetz Y Y Y Y i386/apple/darwin9.7.0 gcc 4.0.1 14.1 09-08-04 alex Y Y Y Y 3 i386/apple/darwin10.8.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y 3 i386/apple/darwin11.3.0 gcc 4.2.1 19 12-02-26 alex Y Y Y Y 3 +i386/pc/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 @@ -90,21 +94,25 @@ x86_64/apple/darwin10.8.0 gcc 4.2.1 21~rc2 13-10-30 alex Y Y Y Y 3 x86_64/apple/darwin12.3.0 gcc 4.2.1 20.2 13-04-01 alex Y Y Y Y 3 x86_64/apple/darwin13.0.0 A-clang 5.0 21 14-01-02 alex Y Y Y Y 3 x86_64/apple/darwin14.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 diff --git a/doc/README b/doc/README index 52cc11f..7697150 100644 --- a/doc/README +++ b/doc/README @@ -2,7 +2,7 @@ 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. @@ -28,31 +28,26 @@ Please see the INSTALL document for installation and upgrade information! 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. @@ -61,33 +56,34 @@ IV. Documentation ~~~~~~~~~~~~~~~~~ More documentation can be found in the "doc/" directory and the homepage of -the ngIRCd: . +ngIRCd: . V. Download ~~~~~~~~~~~ -The homepage of the ngIRCd is: ; you will find +The homepage of the ngIRCd is ; 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: ). +Visit our source code repository at GitHub if you are interested in the +latest development version: . -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: - +- On IRC: +- Via the mailing list: -There you can read about known bugs and limitations, too. +See for details. -If you have comments, patches or something else, please feel free to post -a mail to the ngIRCd mailing list: (please see - for details) or join the ngIRCd IRC -channel: . +If you find bugs in ngIRCd (which will be there most probably ...), please +report them to our issue tracker at GitHub: + +- Bug tracker: +- Patches, "pull requests": + +There you can read about known bugs and limitations, too.