Module: ngircd.git
Branch: master
Commit: 5115756b793dffda86173d424444daf5801967a9
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=5115756b…
Author: Alexander Barton <alex(a)barton.de>
Date: Wed Jul 17 14:36:54 2013 +0200
Slightly update ngircd.8 manual page
---
man/ngircd.8.tmpl | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git a/man/ngircd.8.tmpl b/man/ngircd.8.tmpl
index 318c045..d56dc87 100644
--- a/man/ngircd.8.tmpl
+++ b/man/ngircd.8.tmpl
@@ -1,7 +1,7 @@
.\"
.\" ngircd(8) manual page template
.\"
-.TH ngircd 8 "Oct 2012" ngIRCd "ngIRCd Manual"
+.TH ngircd 8 "Jul 2013" ngIRCd "ngIRCd Manual"
.SH NAME
ngIRCd \- the "next generation" IRC daemon
.SH SYNOPSIS
@@ -23,13 +23,15 @@ which is a little bit exaggerated:
.IR "lightweight Internet Relay Chat server"
most probably would have been a better name :-)
.PP
-Currently supported platforms include AIX, A/UX, FreeBSD, HP-UX, IRIX,
-Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
-.PP
+Currently supported platforms include AIX, A/UX, FreeBSD, HP-UX, Hurd, IRIX,
+Linux, Mac OS X, Minix, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
As ngIRCd relies on UNIX standards and uses GNU automake and GNU autoconf
there are good chances that it also supports other UNIX-based operating
-systems as well. By default, ngIRCd writes diagnostic and informational
-messages using the syslog mechanism.
+systems as well.
+.PP
+By default ngIRCd logs diagnostic and informational messages using the syslog
+mechanism, or writes directly to the console when running in the foreground
+(see below).
.SH OPTIONS
The default behavior of
.BR ngircd
Module: ngircd.git
Branch: master
Commit: 11240376a5008dea9e970f40df659931d1321e8b
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=11240376…
Author: Alexander Barton <alex(a)barton.de>
Date: Tue Jun 4 11:42:25 2013 +0200
Updated NEWS and ChangeLog files
---
ChangeLog | 79 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---
NEWS | 48 +++++++++++++++++++++++++++++++++++--
2 files changed, 122 insertions(+), 5 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 08d337f..976a9f4 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -9,10 +9,83 @@
-- ChangeLog --
+ngIRCd 21
+
+ - The numeric replies of some commands became split too early which
+ resulted in more numeric reply lines than necessary.
+ - Implement a new configuration option "IncludeDir" in the "[Options]"
+ section that can be used to specify a directory which can contain
+ further configuration files and configuration file snippets matching
+ the pattern "*.conf". These files are read in after the main server
+ configuration file ("ngircd.conf" by default) has been read in and
+ parsed. The default is "$SYSCONFDIR/ngircd.conf.d", so that it is
+ possible to adjust the configuration only by placing additional files
+ into this directory. (Closes bug #157)
+ - Fix use-after-free in the Lists_CheckReason() function, which is used
+ to check if a client is a member of a particular ban/invite/... list.
+ - Xcode: fix detection of host OS, vendor, and CPU type.
+ - OS X PackageMaker: use relative path names in project files and package
+ with correct file permissions (requires root privileges on "make").
+ - Add Travis-CI configuration file (".travis.yml") to project.
+ - Look for possible cloaked Masks in Lists. Users with +x usermode can
+ be banned with their cloaked hostname now.
+ - Don't read SSL client data before DNS resolver is finished which could
+ have resulted in discarding the resolved client hostname and IDENT
+ reply afterwards, because in some situations (timing dependent) the
+ NICK and USER commands could have already been read in from the client,
+ stored in the buffer, and been processed.
+ Thanks to Julian Brost for reporting the issue and testing, and to
+ Federico G. Schwindt <fgsch(a)lodoss.net> for helping to debug it!
+ - Increase password length limit to 64 characters. (Closes bug #154)
+ - doc/Services.txt: Update Anope status and URL.
+ - Clean up Xcode project file, remove outdated files, add missing ones.
+ - Update Doxygen configuration file.
+ - configure: search for iconv_open as well as libiconv_open, because
+ on some installations iconv_open() is actually libiconv_open().
+ iconv_open() is the glibc version while libiconv_open() is the
+ libiconv version, now both variants are supported. (Closes bug #151)
+ - ngIRCd now accepts user names including "@" characters, saves the
+ unmodified name for authentication but stores only the part in front
+ of the "@" character as "IRC user name". And the latter is how
+ ircd2.11, Bahamut, and irc-seven behave as well. (Closes bug #155)
+ - Lots of IRC "information functions" like ADMIN, INFO, ... now accept
+ server masks and names of connected users (in addition to server names)
+ for specifying the target server of the command. (Closes bug #153)
+ - Implement a new configuration option "IdleTimeout" in the "[Limits]"
+ section of the configuration file which can be used to set a timeout
+ in seconds after which the whole daemon will shutdown when no more
+ connections are left active after handling at least one client.
+ The default is 0, "never".
+ This can be useful for testing or when ngIRCd is started using "socket
+ activation" with systemd(8), for example.
+ - Implement support for systemd(8) "socket activation".
+ - contrib/README: add description for more files.
+ - Enable WHOIS to display information about IRC Services using the new
+ numeric 310(RPL_WHOISSERVICE) This numeric is used for this purpose by
+ InspIRCd, for example -- but as usual, other numerics are in use, too,
+ like 613 in UltimateIRCd ...
+ Please note that neither the Operator (+o) not the "bot status" (+B)
+ of an IRC service id displayed in the output.
+ - Exit message: use singular & plural :-)
+ - Add missing punctuation marks in log messages and adjust some
+ severity levels.
+ - AUTHORS file: Update list of contributors.
+ - Update systemd(8) example configuration files in ./contrib/ directory:
+ the "ngircd.service" file now uses the "forking" service type which
+ enhances the log messages shown by "systemctl status ngircd.service",
+ and the new "ngircd.socket" file configures a systemd socket that
+ configures a socket for ngIRCd and launches the daemon on demand.
+ - Enhance help system and the HELP command: now a "help text file" can be
+ set using the new configuration option "HelpFile" ("global" section),
+ which is read in and parsed on server startup and configuration reload,
+ and then is used to output individual help texts to specific topics.
+ Please see the file ./doc/Commands.txt for details.
+
ngIRCd 20.2 (2013-02-15)
- Security: Fix a denial of service bug in the function handling KICK
- commands that could be used by arbitrary users to to crash the daemon.
+ commands that could be used by arbitrary users to to crash the daemon
+ (CVE-2013-1747).
- WHO command: Use the currently "displayed hostname" (which can be cloaked!)
for hostname matching, not the real one. In other words: don't display all
the cloaked users on a specific real hostname!
@@ -35,7 +108,7 @@ ngIRCd 20.2 (2013-02-15)
- autogen.sh: Enforce serial test harness on GNU automake >=1.13. The
new parallel test harness which is enabled by default starting with
automake 1.13 isn't compatible with our test suite.
- And don't use "egrep -o", insetead use "sed", because it isn't portable
+ And don't use "egrep -o", instead use "sed", because it isn't portable
and not available on OpenBSD, for example.
ngIRCd 20.1 (2013-01-02)
@@ -56,7 +129,7 @@ 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.
+ external (PAM) authentication mechanisms that require longer user names.
Patch suggested by Brett Smith <brett(a)w3.org>, see
<http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.
diff --git a/NEWS b/NEWS
index 38f6029..420c1d8 100644
--- a/NEWS
+++ b/NEWS
@@ -9,11 +9,55 @@
-- NEWS --
+ngIRCd 21
+
+ - Implement a new configuration option "IncludeDir" in the "[Options]"
+ section that can be used to specify a directory which can contain
+ further configuration files and configuration file snippets matching
+ the pattern "*.conf". These files are read in after the main server
+ configuration file ("ngircd.conf" by default) has been read in and
+ parsed. The default is "$SYSCONFDIR/ngircd.conf.d", so that it is
+ possible to adjust the configuration only by placing additional files
+ into this directory. (Closes bug #157)
+ - Add Travis-CI configuration file (".travis.yml") to project.
+ - ngIRCd now accepts user names including "@" characters, saves the
+ unmodified name for authentication but stores only the part in front
+ of the "@" character as "IRC user name". And the latter is how
+ ircd2.11, Bahamut, and irc-seven behave as well. (Closes bug #155)
+ - Lots of IRC "information functions" like ADMIN, INFO, ... now accept
+ server masks and names of connected users (in addition to server names)
+ for specifying the target server of the command. (Closes bug #153)
+ - Implement a new configuration option "IdleTimeout" in the "[Limits]"
+ section of the configuration file which can be used to set a timeout
+ in seconds after which the whole daemon will shutdown when no more
+ connections are left active after handling at least one client.
+ The default is 0, "never".
+ This can be useful for testing or when ngIRCd is started using "socket
+ activation" with systemd(8), for example.
+ - Implement support for systemd(8) "socket activation".
+ - Enable WHOIS to display information about IRC Services using the new
+ numeric 310(RPL_WHOISSERVICE) This numeric is used for this purpose by
+ InspIRCd, for example -- but as usual, other numerics are in use, too,
+ like 613 in UltimateIRCd ...
+ Please note that neither the Operator (+o) not the "bot status" (+B)
+ of an IRC service id displayed in the output.
+ - Update systemd(8) example configuration files in ./contrib/ directory:
+ the "ngircd.service" file now uses the "forking" service type which
+ enhances the log messages shown by "systemctl status ngircd.service",
+ and the new "ngircd.socket" file configures a systemd socket that
+ configures a socket for ngIRCd and launches the daemon on demand.
+ - Enhance help system and the HELP command: now a "help text file" can be
+ set using the new configuration option "HelpFile" ("global" section),
+ which is read in and parsed on server startup and configuration reload,
+ and then is used to output individual help texts to specific topics.
+ Please see the file ./doc/Commands.txt for details.
+
ngIRCd 20.2 (2013-02-15)
- This release is a bugfix release only, without new features.
- Security: Fix a denial of service bug in the function handling KICK
- commands that could be used by arbitrary users to to crash the daemon.
+ commands that could be used by arbitrary users to to crash the daemon
+ (CVE-2013-1747).
ngIRCd 20.1 (2013-01-02)
@@ -23,7 +67,7 @@ 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.
+ external (PAM) authentication mechanisms that require longer user names.
Patch suggested by Brett Smith <brett(a)w3.org>, see
<http://arthur.barton.de/pipermail/ngircd-ml/2012-October/000579.html>.
Module: ngircd.git
Branch: master
Commit: 9d3800fd15a273f23f51c1f1ab3bc75dacf6c589
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=9d3800fd…
Author: Alexander Barton <alex(a)barton.de>
Date: Thu May 30 08:55:48 2013 -0700
Merge pull request #3 from Cofyc/master
irc-info.c: some commands use LINE_LEN as command buffer len
---
Module: ngircd.git
Branch: master
Commit: 7ea3864a9369086024a2d541b053963958b19899
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=7ea3864a…
Author: Alexander Barton <alex(a)barton.de>
Date: Sat May 25 00:25:38 2013 +0200
IncludeDir: default to "$SYSCONFDIR/ngircd.conf.d"
Now "IncludeDir" defaults to "$SYSCONFDIR/ngircd.conf.d" instead
of no directory, but a missing directory is only reported as an
error if it has explicitely configured in the main configuration
file and simply ignored otherwise.
Therefore it is now possible not to touch the default (sample)
configuration file at all, and set all distribution and/or system
specific configuration options in "*.conf" files stored in
"$SYSCONFDIF/ngircd.conf.d/".
Thanks to "Elmasloco" for the idea!
---
src/ngircd/conf.c | 52 ++++++++++++++++++++++-----------------
src/ngircd/defines.h | 5 +++-
src/testsuite/ngircd-test1.conf | 1 +
src/testsuite/ngircd-test2.conf | 1 +
4 files changed, 35 insertions(+), 24 deletions(-)
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index c08183d..aad64b3 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -947,33 +947,39 @@ Read_Config(bool TestOnly, bool IsStarting)
fclose(fd);
if (Conf_IncludeDir[0]) {
- /* Include further configuration files, if any */
dh = opendir(Conf_IncludeDir);
- if (dh) {
- while ((entry = readdir(dh)) != NULL) {
- ptr = strrchr(entry->d_name, '.');
- if (!ptr || strcasecmp(ptr, ".conf") != 0)
- continue;
- snprintf(file, sizeof(file), "%s/%s",
- Conf_IncludeDir, entry->d_name);
- if (TestOnly)
- Config_Error(LOG_INFO,
- "Reading configuration from \"%s\" ...",
- file);
- fd = fopen(file, "r");
- if (fd) {
- Read_Config_File(file, fd);
- fclose(fd);
- } else
- Config_Error(LOG_ALERT,
- "Can't read configuration \"%s\": %s",
- file, strerror(errno));
- }
- closedir(dh);
- } else
+ if (!dh)
Config_Error(LOG_ALERT,
"Can't open include directory \"%s\": %s",
Conf_IncludeDir, strerror(errno));
+ } else {
+ strlcpy(Conf_IncludeDir, SYSCONFDIR, sizeof(Conf_IncludeDir));
+ strlcat(Conf_IncludeDir, CONFIG_DIR, sizeof(Conf_IncludeDir));
+ dh = opendir(Conf_IncludeDir);
+ }
+
+ /* Include further configuration files, if IncludeDir is available */
+ if (dh) {
+ while ((entry = readdir(dh)) != NULL) {
+ ptr = strrchr(entry->d_name, '.');
+ if (!ptr || strcasecmp(ptr, ".conf") != 0)
+ continue;
+ snprintf(file, sizeof(file), "%s/%s",
+ Conf_IncludeDir, entry->d_name);
+ if (TestOnly)
+ Config_Error(LOG_INFO,
+ "Reading configuration from \"%s\" ...",
+ file);
+ fd = fopen(file, "r");
+ if (fd) {
+ Read_Config_File(file, fd);
+ fclose(fd);
+ } else
+ Config_Error(LOG_ALERT,
+ "Can't read configuration \"%s\": %s",
+ file, strerror(errno));
+ }
+ closedir(dh);
}
/* Check if there is still a server to add */
diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h
index cffbfad..7784c17 100644
--- a/src/ngircd/defines.h
+++ b/src/ngircd/defines.h
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2012 Alexander Barton (alex(a)barton.de) and Contributors.
+ * Copyright (c)2001-2013 Alexander Barton (alex(a)barton.de) and Contributors.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -73,6 +73,9 @@
/** Configuration file name. */
#define CONFIG_FILE "/ngircd.conf"
+/** Directory containing optional configuration snippets. */
+#define CONFIG_DIR "/ngircd.conf.d"
+
/** Name of the MOTD file. */
#define MOTD_FILE "/ngircd.motd"
diff --git a/src/testsuite/ngircd-test1.conf b/src/testsuite/ngircd-test1.conf
index 1e40fd3..0d0cccc 100644
--- a/src/testsuite/ngircd-test1.conf
+++ b/src/testsuite/ngircd-test1.conf
@@ -16,6 +16,7 @@
[Options]
OperCanUseMode = yes
Ident = no
+ IncludeDir = /var/empty
PAM = no
[Operator]
diff --git a/src/testsuite/ngircd-test2.conf b/src/testsuite/ngircd-test2.conf
index e3f8867..c9d7f6c 100644
--- a/src/testsuite/ngircd-test2.conf
+++ b/src/testsuite/ngircd-test2.conf
@@ -16,6 +16,7 @@
[Options]
OperCanUseMode = yes
Ident = no
+ IncludeDir = /var/empty
PAM = no
[Operator]
Module: ngircd.git
Branch: master
Commit: 6beb0fad3ff09ae92a7aea0e4b8ad7b00fe2e26d
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=6beb0fad…
Author: Alexander Barton <alex(a)barton.de>
Date: Fri May 24 21:57:42 2013 +0200
conf.c: New function Read_Config_File()
This function reads in and parses a single configuration file.
Adjust all other functions to display the correct name of the
file being read in currently.
---
src/ngircd/conf.c | 388 +++++++++++++++++++++++++++++------------------------
1 file changed, 212 insertions(+), 176 deletions(-)
Diff: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commitdiff;h=6beb…