Module: ngircd.git
Branch: master
Commit: 9b1fee8995f5e1ee5390ba36635804744a368c94
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=9b1fee89…
Author: Alexander Barton <alex(a)barton.de>
Date: Wed Oct 2 02:10:48 2013 +0200
Update NEWS and ChangeLog files
---
ChangeLog | 42 +++++++++++++++++++++++++++++++++++++++++-
NEWS | 19 +++++++++++++++++++
2 files changed, 60 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 1186276..22e558d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,45 @@
ngIRCd 21
+ - Actually KILL clients on GLINE/KLINE. (Closes bug #156)
+ - Adjust log messages for invalid and spoofed prefixes, which cleans up
+ logging of commands related to already KILL'ed clients. And don't
+ forward KILL commands for (already) unknown clients any more to prevent
+ unnecessary duplicates.
+ - Add support to show all user links using the "STATS L" (uppercase)
+ command (restricted to IRC Operators).
+ - Fixed blocking of server reconnects in some error confitions.
+ - Don't ignore SSL-related errors during startup any more: abort startup
+ when SSL is requested by the configuration but can't be initialized and
+ don't continue only listening on plain text communicaiton ports.
+ (Closes bug #163)
+ - Implement configurable SSL cipher list selection for GnuTLS and OpenSSL
+ using the new configuration option "CipherList". In addition, this
+ changes the defaults to more secure values: "HIGH:!aNULL:@STRENGTH" for
+ OpenSSL, and "SECURE128" for GnuTLS.
+ - Fix "TRACE": Correctly return ERR_NEEDMOREPARAMS(461) (which basically
+ is "syntax error") when there are too many parameters.
+ - Clean up lots of permission and parameter checks in functions handling
+ IRC commands; and more consistently add penalty times on errors.
+ - Fix error numeric of WHOIS when no nick namename has been provided:
+ as per RFC it shoud be ERR_NONICKNAMEGIVEN(431).
+ - Only log "IDENT ... no result" messages when an IDENT looked took place
+ and didn't return any data, not when IDENT has been disabled.
+ - Show connection flag "s" (SSL) in RPL_TRACE{LINK|SERVER} messages: now
+ you can check if a server-to-server link is SSL-encrypted or not using
+ the IRC "TRACE" command.
+ - Correctly discard supplementary groups on server startup.
+ - Save client IP address text for "WebIRC" users and correctly display
+ it on WHOIS, for example. (Closes bug #159)
+ - Implement the new configuration option "DefaultUserModes" which lists
+ user modes that become automatically set on new local clients right
+ after login. Please note that only modes can be set that the client
+ could set on itself, so you can't set "a" (away) or "o" (IRC Op),
+ for example! User modes "i" (invisible) or "x" (cloaked) etc. are
+ "interesting", though. (Closes bug #160)
+ - Add support for the new METADATA "account" property, which allows
+ services to automatically identify users after netsplits and across
+ service restarts.
- Enforce "penalty times" on error conditions more consistently and in
more places. Now most error codes sent back from the IRC server to the
client should result in a 2 second "penalty".
@@ -43,7 +82,8 @@ ngIRCd 21
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.
+ - Xcode: fix detection of host OS, vendor, and CPU type, and update
+ project settings for Xcode 5.
- 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.
diff --git a/NEWS b/NEWS
index a8dc433..6b40328 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,25 @@
ngIRCd 21
+ - Actually KILL clients on GLINE/KLINE. (Closes bug #156)
+ - Add support to show all user links using the "STATS L" (uppercase)
+ command (restricted to IRC Operators).
+ - Implement configurable SSL cipher list selection for GnuTLS and OpenSSL
+ using the new configuration option "CipherList". In addition, this
+ changes the defaults to more secure values: "HIGH:!aNULL:@STRENGTH" for
+ OpenSSL, and "SECURE128" for GnuTLS.
+ - Show connection flag "s" (SSL) in RPL_TRACE{LINK|SERVER} messages: now
+ you can check if a server-to-server link is SSL-encrypted or not using
+ the IRC "TRACE" command.
+ - Implement the new configuration option "DefaultUserModes" which lists
+ user modes that become automatically set on new local clients right
+ after login. Please note that only modes can be set that the client
+ could set on itself, so you can't set "a" (away) or "o" (IRC Op),
+ for example! User modes "i" (invisible) or "x" (cloaked) etc. are
+ "interesting", though. (Closes bug #160)
+ - Add support for the new METADATA "account" property, which allows
+ services to automatically identify users after netsplits and across
+ service restarts.
- Implement a new configuration option "AllowedChannelTypes" that lists
all allowed channel types (channel prefixes) for newly created channels
on the local server. By default, all supported channel types are allowed.
Module: ngircd.git
Branch: master
Commit: b5faf3055b61afaef73ac49a448cac1a5b063127
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=b5faf305…
Author: Alexander Barton <alex(a)barton.de>
Date: Tue Oct 1 12:13:17 2013 +0200
New function IRC_KillClient() to kill clients
The old local function Kill_Nick() in irc.c has been an ugly hack. This
patch implements a generic function for killing clients.
Adjust all callers of Kill_Nick() and respect the return code!
---
src/ngircd/irc-login.c | 66 ++++++++---------------
src/ngircd/irc.c | 135 ++++++++++++++++++++++++++++--------------------
src/ngircd/irc.h | 5 +-
3 files changed, 105 insertions(+), 101 deletions(-)
Diff: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commitdiff;h=b5fa…
Module: ngircd.git
Branch: master
Commit: 02182143c30288b54cf84325c796ec9b7a7b2d34
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=02182143…
Author: Alexander Barton <alex(a)barton.de>
Date: Thu Sep 26 02:58:01 2013 +0200
Don't forward KILL commands for unknown clients
---
src/ngircd/irc.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/src/ngircd/irc.c b/src/ngircd/irc.c
index 74b8a01..ee7972c 100644
--- a/src/ngircd/irc.c
+++ b/src/ngircd/irc.c
@@ -346,18 +346,18 @@ IRC_KillClient(CLIENT *Client, CLIENT *From, const char *Nick, const char *Reaso
CONN_ID my_conn, conn;
CLIENT *c;
- /* Inform other servers */
- IRC_WriteStrServersPrefix(From ? Client : NULL,
- From ? From : Client_ThisServer(),
- "KILL %s :%s", Nick, Reason);
-
- /* Do we know such a client? */
+ /* Do we know such a client in the network? */
c = Client_Search(Nick);
if (!c) {
- LogDebug("Client with nick \"%s\" is unknown here.", Nick);
+ LogDebug("Client with nick \"%s\" is unknown, not forwaring.", Nick);
return CONNECTED;
}
+ /* Inform other servers */
+ IRC_WriteStrServersPrefix(From ? Client : NULL,
+ From ? From : Client_ThisServer(),
+ "KILL %s :%s", Nick, Reason);
+
if (Client_Type(c) != CLIENT_USER && Client_Type(c) != CLIENT_GOTNICK) {
/* Target of this KILL is not a regular user, this is
* invalid! So we ignore this case if we received a
Module: ngircd.git
Branch: master
Commit: ec5ab4fcd1bc361cacb56e999b2b8f0a00caf5a9
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=ec5ab4fc…
Author: Federico G. Schwindt <fgsch(a)lodoss.net>
Date: Wed Sep 18 23:51:44 2013 +0100
Add support to show user links using "STATS L"
Change "stats L" to show servers and user links and restrict it to
IRC Operators.
---
doc/Commands.txt | 8 ++++++--
src/ngircd/irc-info.c | 14 ++++++++++----
2 files changed, 16 insertions(+), 6 deletions(-)
diff --git a/doc/Commands.txt b/doc/Commands.txt
index dde1498..e4f0090 100644
--- a/doc/Commands.txt
+++ b/doc/Commands.txt
@@ -451,17 +451,21 @@ Status and Informational Commands
Show statistics and other information of type <query> of a particular
IRC server in the network.
.
- The following <query> types are supported (case-insensitive):
+ The following <query> types are supported (case-insensitive where
+ applicable):
.
- g Network-wide bans ("G-Lines").
- k Server-local bans ("K-Lines").
- - l Link status (parent server and own link only).
+ - L Link status (servers and user links).
+ - l Link status (servers and own link).
- m Command usage count.
- u Server uptime.
.
<target> can be a server name, the nickname of a client connected to
a specific server, or a mask matching a server name in the network.
The server of the current connection is used when <target> is omitted.
+ .
+ To use "STATS L" the user must be an IRC Operator.
References:
- RFC 2812, 3.4.4 "Stats message"
diff --git a/src/ngircd/irc-info.c b/src/ngircd/irc-info.c
index 1c250a4..79a157c 100644
--- a/src/ngircd/irc-info.c
+++ b/src/ngircd/irc-info.c
@@ -41,6 +41,7 @@
#include "irc-macros.h"
#include "irc-write.h"
#include "client-cap.h"
+#include "op.h"
#include "exp.h"
#include "irc-info.h"
@@ -865,6 +866,7 @@ IRC_STATS( CLIENT *Client, REQUEST *Req )
unsigned int days, hrs, mins;
struct list_head *list;
struct list_elem *list_item;
+ bool more_links = false;
assert(Client != NULL);
assert(Req != NULL);
@@ -909,16 +911,20 @@ IRC_STATS( CLIENT *Client, REQUEST *Req )
list_item = Lists_GetNext(list_item);
}
break;
+ case 'L': /* Link status (servers and user links) */
+ if (!Op_Check(from, Req))
+ return Op_NoPrivileges(from, Req);
+ more_links = true;
+
case 'l': /* Link status (servers and own link) */
- case 'L':
time_now = time(NULL);
for (con = Conn_First(); con != NONE; con = Conn_Next(con)) {
cl = Conn_GetClient(con);
if (!cl)
continue;
- if ((Client_Type(cl) == CLIENT_SERVER)
- || (cl == Client)) {
- /* Server link or our own connection */
+ if (Client_Type(cl) == CLIENT_SERVER ||
+ cl == Client ||
+ (more_links && Client_Type(cl) == CLIENT_USER)) {
#ifdef ZLIB
if (Conn_Options(con) & CONN_ZIP) {
if (!IRC_WriteStrClient