<dl>
<dt>
- <strong>ngIRCd Release 19.2</strong> (2012-06-19):
+ <strong>ngIRCd Release 20</strong> (2012-12-17):
</dt>
<dd>
<p>Server: <em>ftp.berlios.de</em>
(<a href="ftp://ftp.berlios.de/pub/ngircd/">ftp</a>):
- <a href="ftp://ftp.berlios.de/pub/ngircd/ngircd-19.2.tar.gz">ngircd-19.2.tar.gz</a>
- (<a href="ftp://ftp.berlios.de/pub/ngircd/ngircd-19.2.tar.gz.sig">Sig</a>)
+ <a href="ftp://ftp.berlios.de/pub/ngircd/ngircd-20.tar.gz">ngircd-20.tar.gz</a>
+ (<a href="ftp://ftp.berlios.de/pub/ngircd/ngircd-20.tar.gz.sig">Sig</a>)
<br>Server: <em>ngircd.barton.de</em>
(<a href="http://ngircd.barton.de/pub/ngircd/">http</a>):
- <a href="http://ngircd.barton.de/pub/ngircd/ngircd-19.2.tar.gz">ngircd-19.2.tar.gz</a>
- (<a href="http://ngircd.barton.de/pub/ngircd/ngircd-19.2.tar.gz.sig">Sig</a>)
- </ul>
- </dd>
- <dt>
- <strong>ngIRCd Release 20~rc2</strong> (2012-12-02):
- </dt>
- <dd>
- <p>Server: <em>ftp.berlios.de</em>
- (<a href="ftp://ftp.berlios.de/pub/ngircd/">ftp</a>):
- <a href="ftp://ftp.berlios.de/pub/ngircd/ngircd-20~rc2.tar.gz">ngircd-20~rc2.tar.gz</a>
- (<a href="ftp://ftp.berlios.de/pub/ngircd/ngircd-20~rc2.tar.gz.sig">Sig</a>)
- <br>Server: <em>ngircd.barton.de</em>
- (<a href="http://ngircd.barton.de/pub/ngircd/">http</a>):
- <a href="http://ngircd.barton.de/pub/ngircd/ngircd-20~rc2.tar.gz">ngircd-20~rc2.tar.gz</a>
- (<a href="http://ngircd.barton.de/pub/ngircd/ngircd-20~rc2.tar.gz.sig">Sig</a>)
+ <a href="http://ngircd.barton.de/pub/ngircd/ngircd-20.tar.gz">ngircd-20.tar.gz</a>
+ (<a href="http://ngircd.barton.de/pub/ngircd/ngircd-20.tar.gz.sig">Sig</a>)
</ul>
</dd>
</dl>
I. Supported Capabilities
~~~~~~~~~~~~~~~~~~~~~~~~~
-None. At the moment, ngIRCd supports the "CAP" command and its sub-commands
-but offers no capabilities that could be requested by a client.
+* "multi-prefix"
+
+ When requested, the multi-prefix client capability will cause the IRC
+ server to send all possible prefixes which apply to a user in NAMES and
+ WHO output.
+
+ See <http://ircv3.atheme.org/extensions/multi-prefix-3.1>.
-- ChangeLog --
-ngIRCd Release 19.2
+ngIRCd 20 (2012-12-17)
+
+ - Allow user names ("INDENT") up to 20 characters when ngIRCd has not
+ been configured for "strict RFC mode". This is useful if you are using
+ external (PAM) authenticaion mechanisms that require longer user names.
+ Patch suggested by Brett Smith <brett@w3.org>, see
+ <http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.
+
+ ngIRCd 20~rc2 (2012-12-02)
+ - Rework cloaked hostname handling and implement the "METADATA cloakhost"
+ subcommand: Now ngIRCd uses two fields internally, one to store the
+ "real" hostname and one to save the "cloaked" hostname. This allows
+ "foreign servers" (aka "IRC services") to alter the real and cloaked
+ hostnames of clients without problems, even when the user itself issues
+ additional "MODE +x" and "MODE -x" commands.
+ - RPL_UMODEIS: send correct target name, even on server links.
+ - Update platformtest.sh to follow autoconf changes and only generate
+ the "configure" script when it is missing.
+ - Fix the test suite to correctly execute test scripts even when stdout
+ is redirected.
+ - Fix some compiler warnings on NetBSD and OpenBSD.
+
+ ngIRCd 20~rc1 (2012-11-11)
+ - Update doc/Services.txt: describe the upcoming version of Anope 1.9.8,
+ then including a protocol module for ngIRCd. And remove our own patches
+ in ./contrib/Anope because they aren't supported any more ...
+ - Implement new "METADATA" command which can be used by remote servers
+ and IRC services to update client metadata like the client info text
+ ("real name"), user name, and hostname, and use this command to
+ configure an cloaked hostname (user mode "+x") on remote servers:
+ This prevents "double cloaking" of hostnames and even cloaked
+ hostnames are in sync on all servers supporting "METADATA" now.
+ - Fix error message when trying to join non-predefined channels and the
+ "PredefChannelsOnly" configuration option is set.
+ - Implement new IRC "SVSNICK" command to allow remote servers (and IRC
+ services) to change nicknames of already registered users. The SVSNICK
+ command itself doesn't change the nickname, but it becomes forwarded
+ to the server to which the user is connected to. And then this server
+ initiates the real nickname changing using regular NICK commands.
+ This allows to run mixed networks with old servers not supporting the
+ SVSNICK command, because SVSNICK commands for nicknames on such servers
+ are silently ignored and don't cause a desynchronization of the network.
+ - Make server reconnect time a little bit more random, so that two
+ servers trying to connect to each other asynchronously don't try this
+ in exactly the same time periods and kick each other off ...
+ - Don't accept connections for servers already being linked: there was a
+ time frame that could result in one connection overwriting the other,
+ e. g. the incoming connection overwriting the status of the outgoing
+ one. And this could lead to all kind of weirdness (even crashes!) later
+ on: now such incoming connections are dropped.
+ - New configuration option "MaxListSize" to configure the maximum number
+ of channels returned by a LIST command. The default is 100, as before.
+ - Implement user mode "b", "block messages": when a user has set mode "b",
+ all private messages and notices to this user are blocked if they don't
+ originate from a registered user, an IRC Op, server or service. The
+ originator gets an error numeric sent back in this case,
+ ERR_NONONREG_MSG (486), which is used by UnrealIRCd, too. (Closes #144)
+ - WHOIS: Not only show RPL_WHOISHOST_MSG to local IRC operators, but show
+ it to all IRC operators in the network. And don't show it to anybody if
+ the "more privacy" configuration option is enabled. (Closes #134)
+ - Test suite: make expect scripts more verbose displaying dots for each
+ reply of the server that it is waiting for.
+ - WHOIS: Implement numeric RPL_WHOISMODES_MSG (379) and show user modes in
+ the reply of the WHOIS command for the user himself or, if MorePrivacy
+ isn't set, for request initiated by an IRC operator. (Closes #129)
+ - Implement channel mode "V" (invite disallow): If the new channel mode
+ "V" is set, the INVITE command becomes invalid and all clients get the
+ new ERR_NOINVITE_MSG (518) reply. (Closes #143)
+ - KICK-protect IRC services.
+ - Implement channel mode "Q" and user mode "q": Both modes protect users
+ from channel kicks: only IRC operators and servers can kick users having
+ mode "q" or in channels with mode "Q". (Closes #141)
+ - Debian: require "telnet" or "telnet-ssl" for building and enable
+ CHARCONV in ngircd-full[-dbg] variants.
+ - Send RPL_REHASHING (382) numeric if a REHASH command was accepted.
+ - Fix spelling and variable names in some log messages.
+ - Allow users to "cloak" their hostname only when the configuration
+ variable "CloakHostModeX" (introduced in 19.2) is set. Otherwise, only
+ IRC operators, other servers, and services are allowed to set the user
+ mode "+x": this prevents regular users from changing their hostmask to
+ the name of the IRC server itself, which confused quite a few people ;-)
+ (Closes #133)
+ - New configuration option "OperChanPAutoOp": If disabled, IRC operators
+ don't become channel operators in persistent channels when joining.
+ Enabled by default, which has been the behavior of ngIRCd up to this
+ patch. (Closes #135)
+ - Allow IRC operators to see secret (+s) channels in LIST command as long
+ as the "MorePrivacy" configuration option isn't enabled in the
+ configuration file. (Closes #136)
+ - Enhance build system: Support new (>=1.12) and old (<=1.11) GNU automake
+ versions, update checks for required and optional features, enable
+ colored test output of automake (if available), rename configure.in to
+ more modern configure.ac, include .mailmap and all build-system files in
+ distribution archives and no longer require a GIT tree to detect the
+ correct version string.
+ - Update documentation: add doc/Contributing.txt and include version
+ numbers in doc/Modes.txt.
+ - Free all listen ports on initialization: now listen ports can be
+ reconfigured on runtime using a configuration reload.
+ - Initialize SSL when needed only, and disable SSL on errors.
+ - Implement new (optional) IRC+ "CHARCONV" command to set a client
+ character set that the server translates all messages to/from UTF-8.
+ This feature requires the "libiconv" library and must be enabled using
+ the new "--with-iconv" option of the ./configure script. See
+ doc/Protocol.txt for details. (Closes #109)
+ - Allow limited punctuation in usernames, for better PAM integration.
+ - Correctly re-initialize signal handlers on RESTART commands.
+ - Show a warning on startup if the configuration file is not a full path:
+ ngIRCd is a long-running process and changes its working directory to
+ "/" to not block mounted filesystems and the like when running as daemon
+ ("not in the foreground"); therefore the path to the configuration file
+ must be relative to "/" (or the chroot() directory), which basically is
+ "not relative", to ensure that "kill -HUP" and the "REHASH" command work
+ as expected later on. (Closes #127)
+ - Make the "&SERVER" channel definable in a [Channel] configuration block,
+ which enables server operators to overwrite the built-in topic and
+ channel modes. (Closes #131)
+ - Don't limit list size of "WHO #channel" commands, because it makes no
+ sense to not return all the users in that channel, so I removed the
+ check. But if there are more than MAX_RPL_WHO(25) replies, the client
+ requesting the list will be "penalized" one second more, then 2 in
+ total. (Closes #125)
+ - Make ngIRCd buildable using the kqueue() IO interface on FreeBSD 4.x.
+ - Fix the "NoticeAuth" configuration option when using SSL connections and
+ enhance the message to show the hostname and IDENT reply of the client.
+ - Introduce numeric RPL_HOSTHIDDEN_MSG (396): This numeric is sent to the
+ client each time it changes its displayed hostname using "MODE +/-x",
+ and if "CloakHost" is set right after the MOTD has been sent.
+ - Fix USERHOST not displaying the correctly cloaked hostname.
+ - Implement user mode "B" ("Bot flag"): it is settable and unsettable by
+ every (non-restricted) client. This is how Unreal and InspIRCd do
+ behave, and so do we :-)
+ - Dynamically allocate memory for connection passwords: This a) saves
+ memory for clients not using passwords at all and b) allows for
+ "arbitrarily" long passwords.
+ - Implement channel mode "M": Only the server, identified users and IRC
+ operators are able to talk in such a channel.
+ - Block nicknames that are reserved for services and are defined using the
+ configuration variable "ServiceMask" in "Server" blocks; And this
+ variable now can handle more than one mask separated by commas.
+ - Now "make uninstall" removes the installed "ngircd.conf" file, if it is
+ still equal to our "sample-ngircd.conf" file and therefore hasn't been
+ modified by the user. If it has been modified, it isn't removed and a
+ notice is displayed to the user. And "make install" now displays a
+ message when no ngircd.conf file exists and the "sample-ngircd.conf"
+ file will be installed as a starting point.
+ - Add contrib/ngircd.service, a systemd service file for ngircd.
+ - Implemented XOP channel user modes: "Half Op" ("+h", prefix "%") can set
+ the channel modes +imntvIbek and kick all +v and normal users; "Admin"
+ ("+a", prefix "&") can set channel modes +imntvIbekoRsz and kick all +o,
+ +h, +v and normal users; and "Owner" ("+q", prefix "~") can set channel
+ modes +imntvIbekoRsz and kick all +a, +o, +h, +v and normal users.
+ - Implement hashed cloaked hostnames for both the "CloakHost" and
+ "CloakHostModeX" configuration options: now the admin can use the new
+ '%x' placeholder to insert a hashed version of the clients hostname,
+ and the new configuration option "CloakHostSalt" defines the salt for
+ the hash function. When "CloakHostSalt" is not set (the default), a
+ random salt will be generated after each server restart. (Closes #133)
+
+ngIRCd Release 19.2 (2012-06-19)
+
+ - doc/Capabilities.txt: document "multi-prefix" capability
ngIRCd 19.2~rc1 (2012-06-13)
- New configuration option "CloakHostModeX" to configure the hostname
and receiver are on the same channel. This prevents private flooding
by completely unknown clients.
- New RPL_WHOISREGNICK_MSG(307) numeric in WHOIS command replies: it
- indicates if a nick name is registered (if user mode 'R' set).
+ indicates if a nickname is registered (if user mode 'R' set).
- Limit channel invite, ban, and exception lists to 50 entries and fix
duplicate check and error messages when adding already listed entries
or deleting no (longer) existing ones.
limit reached), but report an error and continue. And don't check
the channel limit and don't report with "too many channels" when
trying to join a channel that the client already is a member of.
- - ISON command: reply with the correct upper-/lowercase nick names.
+ - ISON command: reply with the correct upper-/lowercase nicknames.
- New configuration option "PAMIsOptional": when set, clients not
sending a password are still allowed to connect: they won't become
"identified" and keep the "~" character prepended to their supplied
The bug has been introduced starting with ngIRCd 17 ... :-(
(commit ID 6ebb31ab35e)
- Added doc/Modes.txt: document modes supported by ngIRCd.
- - Implement user mode "R": indicates that the nick name of this user
+ - Implement user mode "R": indicates that the nickname of this user
is "registered". This mode isn't handled by ngIRCd itself, but must
be set and unset by IRC services like Anope.
- Implement channel mode "R": only registered users (having the user
- Handle channel user modes 'a', 'h', and 'q' from remote servers.
These channel user modes aren't used for anything at the moment,
but ngIRCd knows that these three modes are "channel user modes"
- and not "channel modes", that is that these modes take an "nick name"
+ and not "channel modes", that is that these modes take an "nickname"
argument. Like unknown user and channel modes, these modes are saved
and forwarded to other servers, but ignored otherwise.
- Correctly inform clients when other servers change their user modes.
- New configuration option "CloakHost": when set, this host name is used for
every client instead of the real DNS host name (or IP address).
- New configuration option "CloakUserToNick": when enabled, ngIRCd sets
- every clients' user name to their nick name and hides the user name
+ every clients' user name to their nickname and hides the user name
supplied by the IRC client.
- doc/Protocol.txt: Update description of the CHANINFO and WEBIRC commands.
- Doxygen'ify (document) much more source files; code cleanup ...
- New [Server] configuration Option "Bind" allows to specify
the source IP address to use when connecting to remote server.
- New configuration option "MaxNickLength" to specify the allowed maximum
- length of user nick names. Note: must be unique in an IRC network!
+ length of user nicknames. Note: must be unique in an IRC network!
- Enhanced the IRC+ protocol to support an enhanced "server handshake" and
enable server to recognize numeric 005 (ISUPPORT) and 376 (ENDOFMOTD).
See doc/Protocol.txt for details.
b) Make sure you have working versions of GNU autoconf and GNU automake
installed on the system you use for generating the release:
- as of October 2010 we are using GNU autoconf 2.61 and GNU automake 1.10.1
+ as of October 2010 we are using GNU autoconf 2.67 and GNU automake 1.11.1
which seem to work just fine.
c) Update the files describing the new release:
I. Upgrade Information
~~~~~~~~~~~~~~~~~~~~~~
+Differences to version 19.x
+
+- Starting with ngIRCd 20, users can "cloak" their hostname only when the
+ configuration variable "CloakHostModeX" (introduced in 19.2) is set.
+ Otherwise, only IRC opertators, other servers, and services are allowed to
+ set mode +x. This prevents regular users from changing their hostmask to
+ the name of the IRC server itself, which confused quite a few people ;-)
+
Differences to version 17
- Support for ZeroConf/Bonjour/Rendezvous service registration has been
autogen.sh produces the Makefile.in's, which are necessary for the configure
script itself, and some more files for make. To run autogen.sh you'll need
-GNU autoconf and GNU automake (use recent versions! autoconf 2.53 and
-automake 1.6.1 are known to work).
-
-Again: "end users" do not need this step!
+GNU autoconf and GNU automake: at least autoconf 2.61 and automake 1.10 are
+requird, newer is better. But don't use automake 1.12 or newer for creating
+distribution archives: it will work but lack "de-ANSI-fucation" support in the
+generated Makefile's! Stick with automake 1.11.x for this purpose ...
+So automake 1.11.x and autoconf 2.67+ is recommended.
+
+Again: "end users" do not need this step and neither need GNU autoconf nor GNU
+automake at all!
2): "./configure"
ngIRCd - Next Generation IRC Server
http://ngircd.barton.de/
- (c)2001-2011 Alexander Barton and Contributors.
+ (c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
mode since description
a 0.3.0 User is away.
+ b 20 User blocks private messages and notices.
+ B 20 User is flagged as a "bot".
c 17 IRC operator wants to receive connect/disconnect NOTICEs.
C 19 Only users that share a channel are allowed to send messages.
i 0.0.1 User is "invisible".
o 0.0.1 User is IRC operator.
+ q 20 User is protected, can not be kicked from a channel.
r 0.0.1 User is restricted.
R (1) 19 User is registered (e.g. by NickServ).
s 0.4.0 User wants to receive server notices.
k 0.6.0 Channel has a "key" (a password).
l 0.6.0 Channel has a user limit.
m 0.3.0 Channel is moderated, only "voiced" users can send messages.
+ M 20 Only registered users (and IRC Ops) can send messages.
n 0.3.0 Channel doesn't allow messages of users not being members.
O 18 Only IRC operators are allowed to join this channel.
P 0.5.0 Channel is "persistent".
+ Q 20 Nobody can be kicked from the channel.
r (1) 19 Channel is "registered" (e.g. by ChanServ).
R 19 Only registered users are allowed to join this channel.
s 0.9.0 Channel is "secret".
t 0.3.0 Only ChanOps are allowed to modify the channel topic.
+ V 20 Channel doesn't allow invites.
z 16 Only users connected via SSL are allowed to join the channel.
III. Channel User Modes
mode since description
+ q 20 User is channel owner can only be set by a service, other
+ owner and irc op. Can promote other users to q, a, o, h, v.
+ a 20 User is channel admin and can promote other users to v, h, o
o 0.2.0 User is channel operator and can op/kick/... other members.
+ h 20 User is half op and can set channel modes imntvIbek and kick
+ voiced and normal users.
v 0.2.0 User is "voiced" and can speak even if channel is moderated.
-- NEWS --
+ngIRCd 20 (2012-12-17)
+
+ - Allow user names ("INDENT") up to 20 characters when ngIRCd has not
+ been configured for "strict RFC mode". This is useful if you are using
+ external (PAM) authenticaion mechanisms that require longer user names.
+ Patch suggested by Brett Smith <brett@w3.org>, see
+ <http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.
+
+ ngIRCd 20~rc2 (2012-12-02)
+ - Rework cloaked hostname handling and implement the "METADATA cloakhost"
+ subcommand: Now ngIRCd uses two fields internally, one to store the
+ "real" hostname and one to save the "cloaked" hostname. This allows
+ "foreign servers" (aka "IRC services") to alter the real and cloaked
+ hostnames of clients without problems, even when the user itself issues
+ additional "MODE +x" and "MODE -x" commands.
+
+ ngIRCd 20~rc1 (2012-11-11)
+ - Update doc/Services.txt: describe the upcoming version of Anope 1.9.8,
+ then including a protocol module for ngIRCd. And remove our own patches
+ in ./contrib/Anope because they aren't supported any more ...
+ - Implement new "METADATA" command which can be used by remote servers
+ and IRC services to update client metadata like the client info text
+ ("real name"), user name, and hostname, and use this command to
+ configure an cloaked hostname (user mode "+x") on remote servers:
+ This prevents "double cloaking" of hostnames and even cloaked
+ hostnames are in sync on all servers supporting "METADATA" now.
+ - Implement new IRC "SVSNICK" command to allow remote servers (and IRC
+ services) to change nicknames of already registered users. The SVSNICK
+ command itself doesn't change the nickname, but it becomes forwarded
+ to the server to which the user is connected to. And then this server
+ initiates the real nickname changing using regular NICK commands.
+ This allows to run mixed networks with old servers not supporting the
+ SVSNICK command, because SVSNICK commands for nicknames on such servers
+ are silently ignored and don't cause a desynchronization of the network.
+ - New configuration option "MaxListSize" to configure the maximum number
+ of channels returned by a LIST command. The default is 100, as before.
+ - Implement user mode "b", "block messages": when a user has set mode "b",
+ all private messages and notices to this user are blocked if they don't
+ originate from a registered user, an IRC Op, server or service. The
+ originator gets an error numeric sent back in this case,
+ ERR_NONONREG_MSG (486), which is used by UnrealIRCd, too. (Closes #144)
+ - Implement channel mode "V" (invite disallow): If the new channel mode
+ "V" is set, the INVITE command becomes invalid and all clients get the
+ new ERR_NOINVITE_MSG (518) reply. (Closes #143)
+ - Implement channel mode "Q" and user mode "q": Both modes protect users
+ from channel kicks: only IRC operators and servers can kick users having
+ mode "q" or in channels with mode "Q". (Closes #141)
+ - Allow users to "cloak" their hostname only when the configuration
+ variable "CloakHostModeX" (introduced in 19.2) is set. Otherwise, only
+ IRC operators, other servers, and services are allowed to set the user
+ mode "+x": this prevents regular users from changing their hostmask to
+ the name of the IRC server itself, which confused quite a few people ;-)
+ (Closes #133)
+ - New configuration option "OperChanPAutoOp": If disabled, IRC operators
+ don't become channel operators in persistent channels when joining.
+ Enabled by default, which has been the behavior of ngIRCd up to this
+ patch. (Closes #135)
+ - Allow IRC operators to see secret (+s) channels in LIST command as long
+ as the "MorePrivacy" configuration option isn't enabled in the
+ configuration file. (Closes #136)
+ - Implement new (optional) IRC+ "CHARCONV" command to set a client
+ character set that the server translates all messages to/from UTF-8.
+ This feature requires the "libiconv" library and must be enabled using
+ the new "--with-iconv" option of the ./configure script. See
+ doc/Protocol.txt for details. (Closes #109)
+ - Implement user mode "B" ("Bot flag"): it is settable and unsettable by
+ every (non-restricted) client. This is how Unreal and InspIRCd do
+ behave, and so do we :-)
+ - Implement channel mode "M": Only the server, identified users and IRC
+ operators are able to talk in such a channel.
+ - Block nicknames that are reserved for services and are defined using the
+ configuration variable "ServiceMask" in "Server" blocks; And this
+ variable now can handle more than one mask separated by commas.
+ - Implemented XOP channel user modes: "Half Op" ("+h", prefix "%") can set
+ the channel modes +imntvIbek and kick all +v and normal users; "Admin"
+ ("+a", prefix "&") can set channel modes +imntvIbekoRsz and kick all +o,
+ +h, +v and normal users; and "Owner" ("+q", prefix "~") can set channel
+ modes +imntvIbekoRsz and kick all +a, +o, +h, +v and normal users.
+ - Implement hashed cloaked hostnames for both the "CloakHost" and
+ "CloakHostModeX" configuration options: now the admin can use the new
+ '%x' placeholder to insert a hashed version of the clients hostname,
+ and the new configuration option "CloakHostSalt" defines the salt for
+ the hash function. When "CloakHostSalt" is not set (the default), a
+ random salt will be generated after each server restart.
+
+ngIRCd Release 19.2 (2012-06-19)
+
+ ngIRCd 19.2~rc1 (2012-06-13)
+ - New configuration option "CloakHostModeX" to configure the hostname
+ that gets used for IRC clients which have user mode "+x" enabled.
+ Up to now, the name of the IRC server itself has been used for this,
+ which still is the default when "CloakHostModeX" isn't set.
+ - Add instructions for setting up Atheme IRC services.
+ - Implement support for IRC capability handling, the new "CAP" command,
+ and capablity "multi-prefix" which allows both the NAME and WHO command
+ handlers to return more than one "class prefix" to the client.
+
ngIRCd Release 19.1 (2012-03-19)
- - Really include _all_ patchtes to build the Anope module into the
+ - Really include _all_ patches to build the Anope module into the
distribution archive ... ooops!
ngIRCd Release 19 (2012-02-29)
ngIRCd 19~rc1 (2012-02-12)
- Update preliminary ngIRCd protocol module for Anope 1.9.6, which now
is the only supported version.
- - New numeric RPL_WHOISHOST_MSG(378), which returns the DNS hostname
+ - New numeric RPL_WHOISHOST_MSG(378), which returns the DNS host name
(if available) and the IP address of a client in the WHOIS reply.
Only the user itself and local IRC operators get this numeric.
- Implement channel exception list (mode 'e'). This allows a channel
and receiver are on the same channel. This prevents private flooding
by completely unknown clients.
- New RPL_WHOISREGNICK_MSG(307) numeric in WHOIS command replies: it
- indicates if a nick name is registered (if user mode 'R' set).
+ indicates if a nickname is registered (if user mode 'R' set).
- Limit channel invite, ban, and exception lists to 50 entries and fix
duplicate check and error messages when adding already listed entries
or deleting no (longer) existing ones.
NICK, and USER commands have been processed) and before the child
processes for authentication are forked, so resource usage is smaller.
- Added doc/Modes.txt: document modes supported by ngIRCd.
- - Implement user mode "R": indicates that the nick name of this user
+ - Implement user mode "R": indicates that the nickname of this user
is "registered". This mode isn't handled by ngIRCd itself, but must
be set and unset by IRC services like Anope.
- Implement channel mode "R": only registered users (having the user
- Handle channel user modes 'a', 'h', and 'q' from remote servers.
These channel user modes aren't used for anything at the moment,
but ngIRCd knows that these three modes are "channel user modes"
- and not "channel modes", that is that these modes take an "nick name"
+ and not "channel modes", that is that these modes take an "nickname"
argument. Like unknown user and channel modes, these modes are saved
and forwarded to other servers, but ignored otherwise.
(booleans, text strings, integer numbers) and add type information to each
variable description.
- Terminate incoming connections on HTTP commands "GET" and "POST".
- - New configuration option "CloakHost": when set, this hostname is used for
- every client instead of the real DNS hostname (or IP address).
+ - New configuration option "CloakHost": when set, this host name is used for
+ every client instead of the real DNS host name (or IP address).
- New configuration option "CloakUserToNick": when enabled, ngIRCd sets
- every clients' user name to their nick name and hides the user name
+ every clients' user name to their nickname and hides the user name
supplied by the IRC client.
- Make write buffers bigger, but flush early. Before this change, a client
got disconnected if the buffer flushing at 4k failed, now regular clients
- Enable the daemon to disable and enable "debug mode" on runtime using
signal SIGUSR1, when debug code is compiled in, not only on startup
using the command line parameters.
- - Implement user mode "x": hostname cloaking (closes: #102).
+ - Implement user mode "x": host name cloaking (closes: #102).
- Change MOTD file handling: ngIRCd now caches the contens of the MOTD
file, so the daemon now requires a HUP signal or REHASH command to
re-read the MOTD file when its content changed.
- Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
enhanced test suite to check these commands. (Dana Dahlstrom)
- IRC_WHO now supports search patterns and will test this against user
- nickname/servername/hostname, etc. as required by RFC 2812, Section 3.6.1.
+ nickname/server name/host name, etc. as required by RFC 2812, Section 3.6.1.
(reported by Dana Dahlstrom)
- Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated
as if the user had sent PART commands for all channels the user is a
- New [Server] configuration Option "Bind" allows to specify
the source IP address to use when connecting to remote server.
- New configuration option "MaxNickLength" to specify the allowed maximum
- length of user nick names. Note: must be unique in an IRC network!
+ length of user nicknames. Note: must be unique in an IRC network!
- Numeric 317: implemented "signon time" (displayed in WHOIS result).
- Added new server configuration option "Passive" for "Server" blocks to
disable automatic outgoing connections (similar to -p option to ngircd,
i386/pc/solaris2.11 gcc 3.4.3 19 12-02-26 alex Y Y N Y (4)
i386/pc/solaris2.11 gcc 4.2.3 19.1 12-05-29 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 19 12-02-26 alex Y Y Y Y (3)
-i386/unknown/freebsd7.3 gcc 4.2.1 19 12-02-26 alex Y Y Y Y (3)
+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/unknown/gnu0.3 gcc 4.4.5 19 12-02-29 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.6.2 gcc 2.95.3 18 11-07-10 goetz Y Y Y Y
i386/unknown/netbsdelf5.0.2 gcc 4.1.3 19 12-02-26 alex Y Y Y Y (3)
i386/unknown/openbsd3.9 gcc 3.3.5 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
i386/unknown/openbsd4.1 gcc 3.3.5 16 10-04-11 alex 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 3.3.1 0.8.0 04-05-30 alex Y Y N Y
i686/pc/linux-gnu gcc 2.7.2 19.1 12-05-30 goetz Y Y Y Y (1)
sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y
sparc/sun/solaris2.7 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
sparc/unkn./netbsdelf1.6.1 gcc 2.95.3 0.8.0 04-05-30 alex Y Y Y Y
-x86_64/unknown/freebsd8.1 gcc 4.2.1 19 12-02-26 alex Y Y Y Y (3)
+x86_64/apple/darwin12.2.0 gcc 4.2.1 20~rc1 12-11-13 alex Y Y Y Y (3)
+x86_64/unknown/freebsd8.1 gcc 4.2.1 20~rc1 12-11-13 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 gcc 4.4.5 19 12-02-26 alex Y Y Y Y (1)
-x86_64/unknown/openbsd4.7 gcc 3.3.5 19 12-02-26 alex Y Y Y Y (3)
+x86_64/unknown/linux-gnu gcc 4.4.5 20~rc1 12-02-26 alex 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 20~rc1 12-11-13 alex Y Y Y Y (3)
Notes
ngIRCd - Next Generation IRC Server
+ http://ngircd.barton.de/
- (c)2001-2008 Alexander Barton,
- alex@barton.de, http://www.barton.de/
-
+ (c)2001-2012 Alexander Barton and Contributors.
ngIRCd is free software and published under the
terms of the GNU General Public License.
- H: The server supports the "enhanced server handshake", see section II.2
for a detailed description.
+- M: Changing client "metadata" (hostname, real name, ...) using the
+ METADATA command is supported.
+
- o: IRC operators are allowed to change channel- and channel-user-modes
even if they aren't channel-operator of the affected channel.
- S: The server supports the SERVICE command (on this link).
+- X: Server supports XOP channel modes (owner, admin, halfop) and supports
+ these user prefixes in CHANINFO commands, for example.
+
- Z: Compressed server links are supported by the server.
Example for a complete <flags> string: "ngircd|0.7.5:CZ".
Please see <http://www.irc.org/tech_docs/005.html> for details.
The information exchanged using ISUPPORT can be used to detect configuration
-incompatibilities (different maximum nick name length, for example) and
+incompatibilities (different maximum nickname length, for example) and
therefore to disconnect the peer prior to registering it in the network.
The <password> must be set in the server configuration file to prevent
unauthorized clients to fake their identity; it is an arbitrary string.
+
+II.5 Client character encoding conversion
+
+ Command: CHARCONV
+ Parameters: <client-charset>
+ Used by: registered clients
+ Replies: RPL_IP_CHARCONV, ERR_IP_CHARCONV
+
+A client can set its character set encoding using the CHARCONV command:
+after receiving such a command, the server translates all message data
+received from the client using the set <client-charset> to the server
+encoding (UTF-8), and all message data which is to be sent to the client
+from the server encoding (UTF-8) to <client-charset>.
+
+The list of supported client character sets is implementation dependent.
+
+If a client sets its <client-charset> to the server encoding (UTF-8),
+it disables all conversions; the connection behaves as if no CHARCONV
+command has been sent at all in this session.
+
+
+II.6 Update client "metadata"
+
+ Command: METADATA
+ Parameters: <target> <key> <value>
+ Used by: servers only
+
+The METADATA command is used on server-links to update "metadata" information
+of clients, like the hostname, the info text ("real name"), or the user name.
+
+The server updates its client database according to the received <key> and
+<value> parameters, and passes the METADATA command on to all the other
+servers in the network that support this command (see section II.1 "Register
+new server link", <serverflag> "M"), even if it doesn't support the given
+<key> itself: unknown <key> names are ignored silently!
+
+The following <key> names are defined:
+
+ - "host": the hostname of a client (can't be empty)
+ - "cloakhost": the cloaked hostname of a client
+ - "info": info text ("real name") of a client
+ - "user": the user name of a client (can't be empty)
+
+
+III. Numerics used by IRC+ Protocol
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The IRC+ protocol uses numerics in the range 800-899 which aren't used by
+RFC 2812 and hopefully don't clash with other implementations ...
+
+Numerics 800-849 are used for status and success messages, and numerics
+850-899 are failure and error messages.
+
+
+III.1 IRC+ status and success numerics
+
+801 - RPL_IP_CHARCONV
+ %1 :Client encoding set"
+
+ %1 client character set
+
+
+III.2 IRC+ failure and error numerics
+
+851 - ERR_IP_CHARCONV
+ :Can't initialize client encoding
I. Introduction
~~~~~~~~~~~~~~~
-ngIRCd is an Open Source server for the Internet Relay Chat (IRC), which
-is developed and published under the terms of the GNU General Public
-Licence, see the file COPYING for details. ngIRCd means "next generation
-IRC daemon" (which is a little bit exaggerated, "lightweight Internet Relay
-Chat server" would be better), it's written from scratch and not deduced
-from the "grandfather of IRC daemons", the daemon of the IRCNet.
+ngIRCd is a free, portable and lightweight Internet Relay Chat server for
+small or private networks, developed under the GNU General Public License
+(GPL; please see the file COPYING for details). It is simple to configure,
+can cope with dynamic IP addresses, and supports IPv6 as well as SSL. It is
+written from scratch and not based on the original IRCd.
+
+The name ngIRCd means next generation IRC daemon, which is a little bit
+exaggerated: lightweight Internet Relay Chat server most probably would be a
+better name :-)
Please see the INSTALL document for installation and upgrade information!
-- Services.txt --
-At the moment, ngIRCd doesn't implement a "special IRC services interface".
-But services acting as a "regular server" are supported, either using the IRC
-protocol defined in RFC 1459 or RFC 2812.
+ngIRCd doesn't implement a "special IRC services interface", but services
+acting as a "regular servers" ("pseudo servers") are supported, either
+using the IRC protocol as defined in RFC 1459 or RFC 2812.
-Support for Services has been tested using "IRC Services" version 5.x by
-Andrew Church (<http://achurch.org/services/>), Anope 1.9 using a
-preliminary protocol module for ngIRCd (<http://www.anope.org/>), and
-Atheme 7.0.2 or later.
+Support for Services has been tested using
+ - Anope 1.9.8 or later (<http://www.anope.org/>; unreleased!)
+ - Atheme 7.0.2 or later (<http://www.atheme.net>)
+ - "IRC Services" 5.1.x by Andrew Church (<http://achurch.org/services/>)
This document describes setting up ngIRCd and these services.
+Please let us know if you are successfully using other IRC service packages or
+which problems you encounter -- thanks!
+
Setting up ngIRCd
~~~~~~~~~~~~~~~~~
Setting up Anope 1.9.x
~~~~~~~~~~~~~~~~~~~~~~
-Anope 1.9.4 (and above) can be used with ngIRCd using a preliminary "ngircd"
-protocol module contained in our contrib/Anope/ directory. Please see the
-file contrib/Anope/README for installation instructions!
+Anope 1.9.8 or later (<http://www.anope.org/>; unreleased as of 2012-11-10)
+may be used with ngIRCd using the "ngircd" protocol module.
+Until Anope 1.9.8 is released, you have to use the sources from the Anope
+development GIT tree, see <http://sourceforge.net/projects/anope/develop/>!
+
+At least the following settings have to be tweaked, in addition to all the
+settings marked as required by Anope:
-After patching and installing Anope, at least the following configuration
-variables have to be adjusted in data/services.conf, in addition to all the
-settings marked as required:
+In conf/services.conf:
+
+ define
+ {
+ name = "services.host"
+ value = "services.irc.net"
+ }
uplink
{
password = "123abc"
}
- serverinfo
+ # Load ngIRCd protocol module
+ module { name = "ngircd" }
+
+ networkinfo
+ {
+ # Must be set to the "MaxNickLength" setting of ngIRCd!
+ nicklen = 9
+
+ chanlen = 50
+ }
+
+In conf/nickserv.conf:
+
+ nickserv
{
- name = "services.irc.net"
- type = "ngircd"
+ # not required if you are running ngIRCd with a higher nickname limit
+ # ("MaxNickLength") than 11 characters, but REQUIRED by default!
+ guestnickprefix = "G-"
}
+Setting up Atheme 7.0.2 or later
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Atheme 7.0.2 or later (<http://www.atheme.net>) may be used with ngIRCd using
+the "ngircd" protocol module.
+
+The following settings need to be in atheme.conf:
+
+ loadmodule "modules/protocol/ngircd";
+
+ uplink "server.irc.net" {
+ password = "123abc";
+ port = 6667;
+ };
+
+The documentation of Atheme can be found in the doc/ directory of the
+Atheme source distribution.
+
+
Setting up IRC Services 5.1.x
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The documentation of IRC Services can be found here:
<http://www.ircservices.za.net/docs/>
-
-
-Setting up Atheme 7.0.2 or later
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-Atheme 7.0.2 or later may be used with ngIRCd using the "ngircd" protocol
-module.
-
-The following settings need to be in atheme.conf:
-
-loadmodule "modules/protocol/ngircd";
-
-uplink "server.irc.net" {
- password = "123abc";
- port = 6667;
-};
-
-The documentation of Atheme can be found in the doc/ directory of the
-Atheme source distribution.
-
-
-Please let us know if you are successfully using other IRC service packages or
-which problems you encounter, thanks!
# Maximum number of channels a user can be member of (0: no limit):
;MaxJoins = 10
- # Maximum length of an user nick name (Default: 9, as in RFC 2812).
+ # 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 nick name length!
+ # maximum nickname length!
;MaxNickLength = 9
+ # Maximum number of channels returned in response to a /list
+ # command (0: unlimited):
+ ;MaxListSize = 100
+
# After <PingTimeout> seconds of inactivity the server will send a
# PING to the peer to test whether it is alive or not.
;PingTimeout = 120
;ChrootDir = /var/empty
# Set this hostname for every client instead of the real one.
- # Please note: don't use the percentage sign ("%"), it is reserved for
- # future extensions!
- ;CloakHost = irc.example.net
+ # Use %x to add the hashed value of the original hostname.
+ ;CloakHost = cloaked.host
+
+ # Use this hostname for hostname cloaking on clients that have the
+ # user mode "+x" set, instead of the name of the server.
+ # Use %x to add the hashed value of the original hostname.
+ ;CloakHostModeX = cloaked.user
- # Set every clients' user name to their nick name
+ # The Salt for cloaked hostname hashing. When undefined a random
+ # hash is generated after each server start.
+ ;CloakHostSalt = abcdefghijklmnopqrstuvwxyz
+
+ # Set every clients' user name to their nickname
;CloakUserToNick = yes
# Try to connect to other IRC servers using IPv4 and IPv6, if possible.
# they are not(!) channel-operators?
;OperCanUseMode = no
+ # Should IRC Operators get AutoOp (+o) in persistent (+P) channels?
+ ;OperChanPAutoOp = yes
+
# Mask IRC Operator mode requests as if they were coming from the
# server? (This is a compatibility hack for ircd-irc2 servers)
;OperServerMode = no
# [Operator] sections are used to define IRC Operators. There may be
# more than one [Operator] block, one for each local operator.
- # ID of the operator (may be different of the nick name)
+ # ID of the operator (may be different of the nickname)
;Name = TheOper
# Password of the IRC operator
# Connect to the remote server using TLS/SSL (Default: false)
;SSLConnect = yes
- # Define a (case insensitive) mask matching nick names that should be
- # treated as IRC services when introduced via this remote server.
+ # Define a (case insensitive) list of masks matching nicknames that
+ # should be treated as IRC services when introduced via this remote
+ # server, separated by commas (",").
# REGULAR SERVERS DON'T NEED this parameter, so leave it empty
# (which is the default).
# When you are connecting IRC services which mask as a IRC server
# and which use "virtual users" to communicate with, for example
# "NickServ" and "ChanServ", you should set this parameter to
- # something like "*Serv".
- ;ServiceMask = *Serv
+ # something like "*Serv" or "NickServ,ChanServ,XyzServ".
+ ;ServiceMask = *Serv,Global
[Server]
# More [Server] sections, if you like ...
</h3>
<p>
Die aktuelle stabile Version ist
- <strong>Release 19.2</strong> vom 19. Juni 2012,
+ <strong>Release 20</strong> vom 17. Dezember 2012,
siehe auch die
<a href="download.php.de">Download-Möglichkeiten</a>.
</p>
</h3>
<p>
The current stable version is
- <strong>Release 19.2</strong> of June 19 2012,
+ <strong>Release 20</strong> of December 17 2012,
please also refer to the <a href="download.php.en">Download</a>
options.
</p>