Free, portable and lightweight Internet Relay Chat server
More than three years have passed since the last release of ngIRCd – a free, portable and lightweight Internet Relay Chat server for small or private networks – and more than 130 individual patches have accumulated in the Git “master branch” in the meantime. Some are cosmetic, some bring new functionality, others improve the documentation or fix bugs. All in all, it’s more than time for the next “big” release of ngIRCd!
And here it is, ngIRCd release 27! 🎉
The most prominent and possibly breaking(!) change is that ngIRCd now validates SSL/TLS certificates on server-server links. Until now, ngIRCd optionally used encrypted server-server links (when SSLConnect = yes
is set in a [Server]
block, which is not the default) but never checked and validated any certificates. Oh my! Most probably we never should have released it this way in ngIRCd 13 back in 2008 … I hope you all were aware of this, right? Because you never configured a CA to trust, for example …?
But finally we made it, and ngIRCd now validates SSL/TLS certificates on outgoing server-server links by default and drops(!) connections when the remote certificate is invalid (for example self-signed, expired, not matching the host name, …). Therefore you have to make sure that all relevant certificates are valid (or to disable certificate validation on this connection using the new SSLVerify = false
setting in the affected [Server]
block, where the remote certificate is not valid and you can not fix this issue).
The original patch for OpenSSL certificate validation on server-links dates back to 2009 and was written by Florian Westphal and extended for GnuTLS in 2014 by Christoph Biedl. But it took us another 10 years to bring it to life … oh my! Many thanks to both Florian and Christoph! (This closes issue #120)
But that’s not all. In addition to the above, the following noteworthy changes are listed in the NEWS
file:
Add an example filter file for "Fail2Ban": contrib/ngircd-fail2ban.conf
(new since RC1).
Add support for the “sd_notify” protocol of systemd(8)
: Periodically “ping” the service manager (every 3 seconds) and set a status message showing current connection statistics which then is included in systemctl status ngircd.service
output. In addition, this enables using the systemd(8)
watchdog functionality (WatchdogSec
) for the ngircd.service
unit and allows it to use the notify
service type, which results in better status tracking by the service manager.
Try to set file descriptor limit to its maximum and show info on startup: The number of possible parallel connections is limited by the file descriptor limit of the process (among other things). Therefore try to upgrade the current “soft” limit to its “hard” maximum (but limited to 100000 instead of “infinite”), and show an information or even warning when the limit is still less than the configured MaxConnections
setting. Please note that ngIRCd and its linked libraries (like PAM) need file descriptors not only for incoming and outgoing IRC connections, but for reading files and inter-process communication, too! Therefore the actual connection limit is less(!) than the file descriptor limit!
Add a Docker file (contrib/Dockerfile
) and corresponding documentation (doc/Container.md
) to the project. The resulting container is based on the latest Debian “stable-slim” container and built using a “build container”.
No longer use a default built-in value for the IncludeDir
directive when a configuration file was explicitly specified on the command line using --config
/-f
: This way no default include directory is scanned when a possibly non-default configuration file is used which (intentionally) did not specify an IncludeDir
directive. So now you can use -f /dev/null
for checking all built-in defaults, regardless of any local configuration files in the default drop-in directory (which would have been read in until this change).
The server Name
in the [Global]
section of the configuration file no longer needs to be set: When not set (or empty), ngIRCd now tries to deduce a valid IRC server name from the local host name (“node name”), possibly adding a .host
extension when the host name does not contain a dot (.
) which is required in an IRC server name (“ID”). This new behavior, with all configuration parameters now being optional, allows running ngIRCd without any configuration file at all.
Autodetect support for IPv6 by default: Until now, IPv6 support was disabled by default, which seems a bit outdated in 2024. Note: You still can pass --enable-ipv6
/--disable-ipv6
to the ./configure
script to forcefully activate or deactivate IPv6 support.
Do IDENT requests even when DNS lookups are disabled: Up to now disabling DNS in the configuration disabled IDENT lookups as well (for no good reason). Now you can activate/deactivate DNS lookups and IDENT requests completely separately. Thanks for reporting this, Miniontoby! Closes #291.
Allow SSL client-only configurations without keys/certificates: You don’t need to configure certificates/keys as long as you don’t configure SSL-enabled listening ports. This can make sense when you want to only link your local daemon to an uplink server using SSL and only have clients on your local host or in your fully trusted network, where SSL is not required.
Respect SSLConnect
option for incoming connections and do not accept incoming plain-text (“non SSL”) server connections for servers configured with SSLConnect
enabled. This change prevents an authenticated client-server being able to force the server-server to send its password on a plain-text connection when SSL/TLS was intended.
Add a new option Autojoin
to [Channel]
blocks: When it is set, ngIRCd automatically joins all local users to this channel on connect. Note: The users must have permissions to access the channel, otherwise joining them will fail. Thanks Ivan Agarkov for the initial patch!
Hide invisible (+i) users on WHOIS <pattern>
: Let’s behave like most(?) other IRC daemons (at least ircd2.11) and hide all +i users when WHOIS
is used with a pattern. Otherwise privacy of this users is not guaranteed and the +i mode a bit useless … Reported by Cahata on #ngircd, thanks!
Make the debug log level (--debug
/-d
command line option) always available, not only when ./configure
’d with --enable-debug
: the latter now only enables additional checks (like the tests done using assert
(2)) and is signalled by adding +DEBUG
to the version “feature string”. This change enables everyone to get even more detailed logging when required.
Allow IRC operators to use the WHO
command on any channel.
Send the NAMES
list and channel topic to users “forcefully” joined to a channel using NJOIN
, like they joined on their own using JOIN
, and streamline the order of NAMES
list and channel topic messages. Closes #288.
Added a new command line option -y
/--syslog
, with which logging to syslog can be activated/deactivated separately from running on the console (using --nodaemon
) or in the background. Thanks Katherine Peeters for the patch and pull request! Closes #294.
Update, enhance and extend our documentation in README.md
, INSTALL.md
, doc/HowToRelease.txt
and the manual pages ngircd
(8) and ngircd.conf
(5), add a new doc/QuickStart.md
document, and convert some more documentation files to Markdown (AUTHORS.md
, contrib/README.md
, doc/FAQ.md
, doc/SSL.md
).
And the ChangeLog
has even more details and lists all the fixes, minor enhancements and tweaks. Since RC1, the test suite can cope better with non-interactive environments, startup is no longer aborted when setgid()/setuid() fails with EINVAL and the RPL_NAMEREPLY numeric was fixed for secret channels. Thanks a lot to all who run tests and reported bugs!
You can download ngIRCd 27 from the download section on our homepage at https://ngircd.barton.de (mirror: https://ngircd.sourceforge.io). The primary download locations are:
Please report any issues and glitches you find to the GitHub issue tracker (https://github.com/ngircd/ngircd/issues) and use the mailing list ([email protected]) and the #ngircd channel on IRC (irc://irc.barton.de/ngircd) for questions and discussions. Enhancements and additions to the documentation, manual pages and the homepage are welcome as well!
Thanks a lot to all contributors & testers!
Happy IRC'ing! Alex
More than three years have passed since the last release of ngIRCd – a free, portable and lightweight Internet Relay Chat server for small or private networks – and more than 130 individual patches have accumulated in the Git “master branch” in the meantime. Some are cosmetic, some bring new functionality, others improve the documentation or fix bugs. All in all, it’s more than time for the next “big” release of ngIRCd!
And here it is, the 1st release candidate for the upcoming ngIRCd release 27!
The most prominent and possibly breaking(!) change is that ngIRCd now validates SSL/TLS certificates on server-server links. Until now, ngIRCd optionally used encrypted server-server links (when SSLConnect = yes
is set in a [Server]
block, which is not the default) but never checked and validated any certificates. Oh my! Most probably we never should have released it this way in ngIRCd 13 back in 2008 … I hope you all were aware of this, right? Because you never configured a CA to trust, for example …?
But finally we made it, and ngIRCd now validates SSL/TLS certificates on outgoing server-server links by default and drops(!) connections when the remote certificate is invalid (for example self-signed, expired, not matching the host name, …). Therefore you have to make sure that all relevant certificates are valid (or to disable certificate validation on this connection using the new SSLVerify = false
setting in the affected [Server]
block, where the remote certificate is not valid and you can not fix this issue).
The original patch for OpenSSL certificate validation on server-links dates back to 2009 and was written by Florian Westphal and extended for GnuTLS in 2014 by Christoph Biedl. But it took us another 10 years to bring it to life … oh my! Many thanks to both Florian and Christoph! (This closes issue #120)
But that’s not all. In addition to the above, the following noteworthy changes are listed in the NEWS
file:
Add support for the “sd_notify” protocol of systemd(8)
: Periodically “ping” the service manager (every 3 seconds) and set a status message showing current connection statistics which then is included in systemctl status ngircd.service
output. In addition, this enables using the systemd(8)
watchdog functionality (WatchdogSec
) for the ngircd.service
unit and allows it to use the notify
service type, which results in better status tracking by the service manager.
Try to set file descriptor limit to its maximum and show info on startup: The number of possible parallel connections is limited by the file descriptor limit of the process (among other things). Therefore try to upgrade the current “soft” limit to its “hard” maximum (but limited to 100000 instead of “infinite”), and show an information or even warning when the limit is still less than the configured MaxConnections
setting. Please note that ngIRCd and its linked libraries (like PAM) need file descriptors not only for incoming and outgoing IRC connections, but for reading files and inter-process communication, too! Therefore the actual connection limit is less(!) than the file descriptor limit!
Add a Docker file (contrib/Dockerfile) and corresponding documentation (doc/Container.md
) to the project. The resulting container is based on the latest Debian “stable-slim” container and built using a “build container”.
No longer use a default built-in value for the IncludeDir
directive when a configuration file was explicitly specified on the command line using --config
/-f
: This way no default include directory is scanned when a possibly non-default configuration file is used which (intentionally) did not specify an IncludeDir
directive. So now you can use -f /dev/null
for checking all built-in defaults, regardless of any local configuration files in the default drop-in directory (which would have been read in until this change).
The server Name
in the [Global]
section of the configuration file no longer needs to be set: When not set (or empty), ngIRCd now tries to deduce a valid IRC server name from the local host name (“node name”), possibly adding a .host
extension when the host name does not contain a dot (.
) which is required in an IRC server name (“ID”). This new behavior, with all configuration parameters now being optional, allows running ngIRCd without any configuration file at all.
Autodetect support for IPv6 by default: Until now, IPv6 support was disabled by default, which seems a bit outdated in 2024. Note: You still can pass --enable-ipv6
/--disable-ipv6
to the ./configure
script to forcefully activate or deactivate IPv6 support.
Do IDENT requests even when DNS lookups are disabled: Up to now disabling DNS in the configuration disabled IDENT lookups as well (for no good reason). Now you can activate/deactivate DNS lookups and IDENT requests completely separately. Thanks for reporting this, Miniontoby! Closes #291.
Allow SSL client-only configurations without keys/certificates: You don’t need to configure certificates/keys as long as you don’t configure SSL-enabled listening ports. This can make sense when you want to only link your local daemon to an uplink server using SSL and only have clients on your local host or in your fully trusted network, where SSL is not required.
Respect SSLConnect
option for incoming connections and do not accept incoming plain-text (“non SSL”) server connections for servers configured with SSLConnect
enabled. This change prevents an authenticated client-server being able to force the server-server to send its password on a plain-text connection when SSL/TLS was intended.
Add a new option Autojoin
to [Channel]
blocks: When it is set, ngIRCd automatically joins all local users to this channel on connect. Note: The users must have permissions to access the channel, otherwise joining them will fail. Thanks Ivan Agarkov for the initial patch!
Hide invisible (+i) users on WHOIS <pattern>
: Let’s behave like most(?) other IRC daemons (at least ircd2.11) and hide all +i users when WHOIS
is used with a pattern. Otherwise privacy of this users is not guaranteed and the +i mode a bit useless … Reported by Cahata on #ngircd, thanks!
Make the debug log level (--debug
/-d
command line option) always available, not only when ./configure
’d with --enable-debug
: the latter now only enables additional checks (like the tests done using assert
(2)) and is signalled by adding +DEBUG
to the version “feature string”. This change enables everyone to get even more detailed logging when required.
Allow IRC operators to use the WHO
command on any channel.
Send the NAMES
list and channel topic to users “forcefully” joined to a channel using NJOIN
, like they joined on their own using JOIN
, and streamline the order of NAMES
list and channel topic messages. Closes #288.
Added a new command line option -y
/--syslog
, with which logging to syslog can be activated/deactivated separately from running on the console (using --nodaemon
) or in the background. Thanks Katherine Peeters for the patch and pull request! Closes #294.
Update, enhance and extend our documentation in README.md
, INSTALL.md
, doc/HowToRelease.txt
and the manual pages ngircd
(8) and ngircd.conf
(5), add a new doc/QuickStart.md
document, and convert some more documentation files to Markdown (AUTHORS.md
, contrib/README.md
, doc/FAQ.md
, doc/SSL.md
).
And the ChangeLog
has even more details and lists all the fixes, minor enhancements and tweaks.
You can download ngIRCd 27~rc1 from the download section on our homepage at https://ngircd.barton.de (mirror: https://ngircd.sourceforge.io). The primary download locations are:
It would be great if as many people as possible try to build this release candidate code on as many platforms as possible!
Please report any issues and glitches you find to the GitHub issue tracker (https://github.com/ngircd/ngircd/issues), the mailing list ([email protected]), or to the #ngircd channel on IRC: irc://irc.barton.de/ngircd. Enhancements and additions to the documentation, manual pages and the homepage are welcome as well!
The easiest way to test ngIRCd is to run the ./contrib/platformtest.sh
script which is included in the distribution archives, for example like this:
$ curl -#LO "https://ngircd.barton.de/pub/ngircd/ngircd-27~rc1.tar.gz"
$ tar xzf "ngircd-27~rc1.tar.gz"
$ cd ngircd-27~rc1
$ ./contrib/platformtest.sh
This will take a few minutes (4-5) as our test suite takes some time because of the “penalties” that the test clients have to cope with (the compile run itself is quite fast), and should result in a nice summary like this:
the executable works ("runs") as expected --+
tests run successfully ("make check") --+ |
ngIRCd compiles ("make") --+ | |
./configure works --+ | | |
| | | |
Platform Compiler ngIRCd Date Tester C M T R *
--------------------------- ------------ ---------- -------- -------- - - - - -
x86_64/pc/linux-gnu gcc 12.2.0 26.1~122-g 24-03-27 alex Y Y Y Y 1
If you like, and especially if you are on a bit more “special” system (non-amd64, non-arm64, non-Linux?), you can say “Hello!” in the irc://irc.barton.de/ngircd IRC channel and post this result line there: then we can include it in the doc/Platforms.txt file.
Thanks a lot to all contributors & testers!
Happy testing and have fun!
This is ngIRCd 26.1, the next release of ngIRCd, the free, portable and lightweight Internet Relay Chat server for small or private networks.
Version 26.1 is a bug fix release only, without new features. If you aren't affected by any of the fixed issues, there is no need for a timely upgrade if you are already running ngIRCd 26.
The ChangeLog file lists the following changes:
Fix a "format string" compiler warning (detected on OpenBSD).
No longer set AI_ADDRCONFIG
when resolving host names, even when it exists: with this option set, on an IPv6-only host, we prevent 127.0.0.1 to get translated properly, even when the loopback interface has this address configured! And as the test suite uses 127.0.0.1, it was broken on IPv6-only hosts. The drawback is that the resolver possibly returns more addresses now, even of an unsupported/not connected address family; but this shouldn't do much harm in practice, as ngIRCd iterates over all returned addresses while trying to establish an outgoing connection.
Closes #281.
Revert "Show allowed channel types in ISUPPORT
(005) numeric only", which was introduced in 26~rc1: This lead to some IRC clients assuming "oh, no channel prefix characters at all, so no channels at all, so no PRIVMSG can go to any channel" when "AllowedChannelTypes" was set to the empty string ("") -- which is not the case when there are pre-defined channels set up or other servers still have channels! So "allowed channel types" != "supported channel types", and we always have to list all supported ones in the ISUPPORT
(005) numeric!
Closes #285.
Test suite: Wait 2 seconds after reloading the daemon, which is required because on reload, all listening ports are closed, configuration updated, and then opened again. This lead to subsequent tests running while the daemon isn't listening on any ports, and that's why some tests could fail. Closes #280.
platformtest.sh
: Try to mangle CLang name more intelligently.
Documentation: Fixed URLs of Atheme IRC services, updated all mentions from CVS to Git, and updated Platforms.txt -- Oh, and it is 2021 now! ;-)
This is ngIRCd 26, the next major release of ngIRCd, the free, portable and lightweight Internet Relay Chat server for small or private networks.
This release contains all fixes and enhancements since ngIRCd 25, please see the release notes for ngIRCd 26~rc1 and ngIRCd 26~rc2 – or the ChangeLog file – for a detailed list of all changes.
The NEWS file lists the following new features since ngIRCd 25:
Add AppStream metadata file (contrib/de.barton.ngircd.metainfo.xml
).
Allow up to 512 characters per line in MOTD
and help text files (but keep in mind that lines can't get that long, because they have to be prefixed before being sent to the client). But this allows for more fancy MOTDs :-)
Closes #271.
Show the actually allowed channel types in the ISUPPORT
(005) numeric which are configured by the AllowedChannelTypes
configuration variable.
Closes #273.
Handle commands in the read buffer before reading more data and don't wait for the network in this case: If there are more bytes in the read buffer already than a single valid IRC command can get long (513 bytes), wait for this/those command(s) to be handled first and don't try to read even more data from the network (which most probably would overflow the read buffer of this connection soon).
Log G-/K-Line changes only when not initiated by a server: this prevents the log from becomming spammed during "net bursts".
Update test suite to include SSL tests, including checking for reloading certificates during runtime.
Add support for GnuTLS certificate reload, which is quite handy when using Let's Encrypt, for example. Until now this was only supported when linked with OpenSSL. Thanks a lot, Hilko Bengen [email protected]!
Allow setting arbitrary channel modes in the configuration file by handling them like in MODE
commands, and allow multiple Modes =
lines per [Channel]
section. Thanks to Michi [email protected]!
Closes #55.
Add "FNC" (forced nick changes) to ISUPPORT
(005) numeric. Most probably this doesn't make any difference to any client, but it seems correct. See http://www.irc.org/tech_docs/005.html for details.
Enhance handling of command line errors, and return with exit code 0 ("no error") when --help
or --version
is used (which resulted in exit code 1, "error" before). Exit with code 2 ("command line error") for all other invalid command line options, and show the error message itself on stderr (instead of stdout and exit code 1, "generic error", as before). This new behaviour is more in line with the GNU "coding standards", see https://www.gnu.org/prep/standards/html_node/_002d_002dhelp.html.
Add ./contrib/nglog.sh
: This script parses the log output of ngircd
(8), and colorizes the messages according to their log level. Example usage: ngircd -f $PWD/doc/sample-ngircd.conf -np | ./contrib/nglog.sh
Enlarge buffers of info texts to 128 bytes. This includes:
USER
command).Info
configuration option).AdminInfo1
, AdminInfo2
and AdminEmail
configuration options).Network
configuration option).The limit was 64 bytes before ... Closes #258.
Streamline handling of invalid and unset server name: Don't exit during runtime (REHASH
command, HUP signal), because the server name can't be changed in this case anyway and the new invalid name will be ignored.
Slightly reorder startup steps, and enhance logging:
REHASH
(SIGHUP), too.configure.ng
: OpenSSL can depends on lz or latomic so use pkg-config
to find those dependencies and fallback to existing mechanism.
Closes #256.
The ChangeLog lists the following changes since ngIRCd 26~rc1:
Add AppStream metadata file (contrib/de.barton.ngircd.metainfo.xml
).
Don't send invalid CHANINFO
commands when a channel has mode +k set but no key is known to the server. This can happen with a misconfigured predefined channel, for example, and looked like this:
CHANINFO #test +Pk 0 :
Note the unset key represented by the two spaces. Fix this by sending a *
in this case and update the CHANINFO documentation, too.
ngircd.spec
: Fix names of README.md
and INSTALL.md
, add .md
extension.
Update description texts in the README.md
file, the RPM and Debian package files and the manual page: bring them in line with the updated homepage.
Server-Server protocol: Fix use-after-free when unregistering a directly connected server sending a SQUIT
for itself.
Server-Server protocol: Detect bogus SERVER
commands lacking a prefix. Thanks Hilko Bengen (hillu) for finding & reporting this as well for the patch & pull request (even if fixed differently).
Closes #275.
Fix the PING
-PONG
logic: In ngIRCd 26~rc1 this was completely broken (while trying to fix timeouts during server handshakes in bigger networks): the daemon never disconnected any stale peers but kept sending out PINGs over and over again ...
Test suite: Add missing files needed to test SSL support to EXTRA_DIST
, so that they are included in distribution archives: in rc1, "make check" fails when using sources from an archive and enabling SSL support. Thanks to Hilko Bengen [email protected] for the patch!
The ChangeLog lists the following changes:
Tweak & update doc/HowToRelease.txt
, .mailmap
and AUTHORS
files.
Allow up to 512 characters per line in MOTD
and help text files (but keep in mind that lines can't get that long, because they have to be prefixed before being sent to the client). But this allows for more fancy MOTDs :-)
Closes #271.
Show the actually allowed channel types in the ISUPPORT
(005) numeric which are configured by the AllowedChannelTypes
configuration variable.
Closes #273.
Handle commands in the read buffer before reading more data and don't wait for the network in this case: If there are more bytes in the read buffer already than a single valid IRC command can get long (513 bytes), wait for this/those command(s) to be handled first and don't try to read even more data from the network (which most probably would overflow the read buffer of this connection soon).
Update Travis-CI configuration, sudo
is depreacted.
Log G-/K-Line changes only when not initiated by a server: this prevents the log from becomming spammed during "net bursts".
Update test suite to include SSL tests, including checking for reloading certificates during runtime.
Makefile.am
: Replace make
with ${MAKE}
. This fixes warnings like this: "warning: jobserver unavailable: using -j1. Add `+' to parent make rule." Thanks to Sam James (sam_c) [email protected]!
Closes #270.
Add support for GnuTLS certificate reload, which is quite handy when using Let's Encrypt, for example. Until now this was only supported when linked with OpenSSL. Thanks a lot, Hilko Bengen [email protected]!
Remove deprecated legacy configuration options and related functions that have been marked for removal for quite some time:
PredefChannelsOnly
(v22)NoticeAuth
(v24)NoXXX
(v19)[GLOBAL]
section handling (v19)Thanks to Michi [email protected] for the patch!
Fix recursion bug on write errors: Depending on the stack size, too many clients on the same channel quitting at the same time would trigger a crash due to too many recursive calls to Conn_Close()
. Thanks to Michi [email protected] for the patch!
Fix builds using GCC option -fno-common
, which is the default starting with GCC 10. Thanks to Michi [email protected] for the patch!
Closes #266.
Convert INSTALL
and README
files to Markdown.
Allow setting arbitrary channel modes in the configuration file by handling them like in MODE
commands, and allow multiple Modes =
lines per [Channel]
section. Thanks to Michi [email protected]!
Closes #55.
Add "FNC" (forced nick changes) to ISUPPORT
(005) numeric. Most probably this doesn't make any difference to any client, but it seems correct. See http://www.irc.org/tech_docs/005.html for details.
Reuse old SSL key if loading a new one failed.
Remove outdated OpenBSD/NetBSD systrace.policy
.
Enhance handling of command line errors, and return with exit code 0 ("no error") when --help
or --version
is used (which resulted in exit code 1, "error" before). Exit with code 2 ("command line error") for all other invalid command line options, and show the error message itself on stderr (instead of stdout and exit code 1, "generic error", as before). This new behaviour is more in line with the GNU "coding standards", see https://www.gnu.org/prep/standards/html_node/_002d_002dhelp.html.
Fix and update Xcode project: Reference correct contrib/Makefile.am
file, correctly sort contrib/nglog.sh
and add "ORGANIZATIONNAME" setting.
contrib/ngindent.sh
: Add more GNU indent options for better results, and add the ".sh" suffix to bring this script in line with the others in the contrib/
folder.
Add ./contrib/nglog.sh
: This script parses the log output of ngircd
(8), and colorizes the messages according to their log level. Example usage: ngircd -f $PWD/doc/sample-ngircd.conf -np | ./contrib/nglog.sh
Log received signals with their names using strsignal
(3), when available.
Make test suite compatible with Haiku OS.
Fix host mask cloaking bug, don't cloak multiple times: Previously, each server would cloak every user's host mask. The problem is that if a network has more than one server, then a user's host mask would get cloaked twice. This patch ensures that a server only cloaks the host mask if it has not yet been cloaked (the period indicates it's still an IP address). Thanks to JRMU [email protected] for the patch! Closes #228.
Enlarge buffers of info texts to 128 bytes. This includes:
USER
command).Info
configuration option).AdminInfo1
, AdminInfo2
and AdminEmail
configuration options).Network
configuration option).The limit was 64 bytes before ... Closes #258.
Streamline handling of invalid and unset server name: Don't exit during runtime (REHASH
command, HUP signal), because the server name can't be changed in this case anyway and the new invalid name will be ignored.
Fix and extend documentation: Fix some typos, fix syntax of LINKS
and LIST
commands, whitespace and spelling fixes, update dependencies and add some more information about IRCv3 support. Thanks to Thanks Windree, Étienne Mollier [email protected] and Christoph Biedl [email protected].
Closes #264.
Slightly reorder startup steps, and enhance logging:
REHASH
(SIGHUP), too.configure.ng
: OpenSSL can depends on lz or latomic so use pkg-config
to find those dependencies and fallback to existing mechanism.
Closes #256.
ngircd.conf.5
: Fix wording as suggested by lintian.
The ChangeLog lists the following changes since release 25~rc1:
MotdPhrase
length, which actually is 126 characters: update sample configuration file as well as the man page. Thanks to shankari [email protected].
Closes #254.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! Closes #249 and #251.
Some example timings running "make check" from my macOS workstation:
MaxPenaltyTime
not set: 4:41,79sMaxPenaltyTime = 1
: 3:14,71sMaxPenaltyTime = 0
: 25,46sAll changes of ngIRCd 25~rc1 are of course included as well :-) Most notably, citing the NEWS file:
The ChangeLog lists the following changes:
config.guess
(2018-03-08) and config.sub
(2018-03-08) files.contrib/ngircd.logcheck
: Some sample logcheck(8) rules.doc/Services.txt
, enhance configuration examples.ngIRCd stable release with the following NEWS (see the ChangeLog and the Git history for a more in-depth list of changes):
The ChangeLog lists the following changes:
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.