Module: ngircd.git
Branch: master
Commit: a4ed90ba9af1dce4df3f57f6a7c84097000c7256
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=a4ed90ba…
Author: Alexander Barton <alex(a)barton.de>
Date: Sun Mar 16 20:07:08 2014 +0100
Fix two K&R C portability issues
Fix the following two errors emitted by the Apple K&R C compiler
on Apple A/UX:
"./class.c", line 47: no automatic aggregate initialization
"./class.c", line 47: illegal lhs of assignment operator
"./conf.c", line 1052: syntax error
Tested on A/UX 3.1.1.
---
src/ngircd/class.c | 6 ++++--
src/ngircd/conf.c | 10 +++++++---
2 files changed, 11 insertions(+), 5 deletions(-)
diff --git a/src/ngircd/class.c b/src/ngircd/class.c
index b2b1aa3..d08f4c5 100644
--- a/src/ngircd/class.c
+++ b/src/ngircd/class.c
@@ -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-2014 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
@@ -50,11 +50,13 @@ Class_Exit(void)
GLOBAL bool
Class_GetMemberReason(const int Class, CLIENT *Client, char *reason, size_t len)
{
- char str[COMMAND_LEN] = "listed";
+ char str[COMMAND_LEN];
assert(Class < CLASS_COUNT);
assert(Client != NULL);
+ strlcpy(str, "listed", sizeof(str));
+
if (!Lists_CheckReason(&My_Classes[Class], Client, str, sizeof(str)))
return false;
diff --git a/src/ngircd/conf.c b/src/ngircd/conf.c
index 34abbad..c4b219f 100644
--- a/src/ngircd/conf.c
+++ b/src/ngircd/conf.c
@@ -1,6 +1,6 @@
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2013 Alexander Barton (alex(a)barton.de) and Contributors.
+ * Copyright (c)2001-2014 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
@@ -1053,9 +1053,13 @@ Read_Config(bool TestOnly, bool IsStarting)
}
/**
- * ...
+ * Read in and handle a configuration file.
+ *
+ * @param File Name of the configuration file.
+ * @param fd File descriptor already opened for reading.
*/
-static void Read_Config_File(const char *File, FILE *fd)
+static void
+Read_Config_File(const char *File, FILE *fd)
{
char section[LINE_LEN], str[LINE_LEN], *var, *arg, *ptr;
int i, line = 0;
Module: ngircd.git
Branch: master
Commit: 755562d1477ed28e4e793fb42fa0cc0b295ea1b5
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=755562d1…
Author: Alexander Barton <alex(a)barton.de>
Date: Sun Feb 2 20:28:21 2014 +0100
Services.txt: Update information for Anope 2.x
---
doc/Services.txt | 16 ++++++++++++----
1 file changed, 12 insertions(+), 4 deletions(-)
diff --git a/doc/Services.txt b/doc/Services.txt
index 2704f02..2cef778 100644
--- a/doc/Services.txt
+++ b/doc/Services.txt
@@ -41,8 +41,8 @@ Example:
ServiceMask = *Serv
-Setting up Anope 1.9.x
-~~~~~~~~~~~~~~~~~~~~~~
+Setting up Anope 1.9.x & 2.x
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Anope 1.9.8 or later (<http://www.anope.org/>) can be used with ngIRCd using
the "ngircd" protocol module.
@@ -66,20 +66,28 @@ In conf/services.conf:
}
# Load ngIRCd protocol module
- module { name = "ngircd" }
+ module
+ {
+ name = "ngircd"
+ }
networkinfo
{
# Must be set to the "MaxNickLength" setting of ngIRCd!
nicklen = 9
+ # When not using "strict mode", which is the default:
+ userlen = 20
+
chanlen = 50
}
In conf/nickserv.conf:
- nickserv
+ module
{
+ name = "nickserv"
+
# not required if you are running ngIRCd with a higher nickname limit
# ("MaxNickLength") than 11 characters, but REQUIRED by default!
guestnickprefix = "G-"
Module: ngircd.git
Branch: master
Commit: 384b27cee0c31ba26c58480b015ef2feb52c79f9
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=384b27ce…
Author: Alexander Barton <alex(a)barton.de>
Date: Sun Feb 2 00:27:24 2014 +0100
IRC_INVITE(): Code cleanup
---
src/ngircd/irc-op.c | 18 ++++++++++--------
1 file changed, 10 insertions(+), 8 deletions(-)
diff --git a/src/ngircd/irc-op.c b/src/ngircd/irc-op.c
index 449cecf..b08d739 100644
--- a/src/ngircd/irc-op.c
+++ b/src/ngircd/irc-op.c
@@ -170,7 +170,8 @@ IRC_INVITE(CLIENT *Client, REQUEST *Req)
/* Is the channel "invite-only"? */
if (Channel_HasMode(chan, 'i')) {
- /* Yes. The user must be channel owner/admin/operator/halfop! */
+ /* Yes. The user issuing the INVITE command must be
+ * channel owner/admin/operator/halfop! */
if (!Channel_UserHasMode(chan, from, 'q') &&
!Channel_UserHasMode(chan, from, 'a') &&
!Channel_UserHasMode(chan, from, 'o') &&
@@ -204,21 +205,22 @@ IRC_INVITE(CLIENT *Client, REQUEST *Req)
Req->argv[0], Req->argv[1]);
/*
- * RFC 2812 says:
- * 'There is no requirement that the channel [..] must exist or be a valid channel'
- * The problem with this is that this allows the "channel" to contain spaces,
- * in which case we must prefix its name with a colon to make it clear that
- * it is only a single argument.
+ * RFC 2812 states:
+ * 'There is no requirement that the channel [..] must exist or be a
+ * valid channel'. The problem with this is that this allows the
+ * "channel" to contain spaces, in which case we must prefix its name
+ * with a colon to make it clear that it is only a single argument.
*/
colon_if_necessary = strchr(Req->argv[1], ' ') ? ":":"";
/* Inform target client */
IRC_WriteStrClientPrefix(target, from, "INVITE %s %s%s", Req->argv[0],
- colon_if_necessary, Req->argv[1]);
+ colon_if_necessary, Req->argv[1]);
if (Client_Conn(target) > NONE) {
/* The target user is local, so we have to send the status code */
if (!IRC_WriteStrClientPrefix(from, target, RPL_INVITING_MSG,
- Client_ID(from), Req->argv[0], colon_if_necessary, Req->argv[1]))
+ Client_ID(from), Req->argv[0],
+ colon_if_necessary, Req->argv[1]))
return DISCONNECTED;
if (Client_HasMode(target, 'a') &&
Module: ngircd.git
Branch: master
Commit: 20b52fe33dc3387d50790ed6da8c47c34277527a
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=20b52fe3…
Author: Alexander Barton <alex(a)barton.de>
Date: Mon Jan 27 22:59:54 2014 +0100
Correctly use cloaked IRC masks on "INVITE nickname"
The cloaked IRC mask of a user is his visible mask, so the daemon has
to use it for generating the "one time" entries for the invite list of
the given channel.
Without this patch, ngIRCd records the real IRC mask which will never
match while the target client is "+x", and even worse, will disclose
the real mask on "MODE #channel +I" commands :-/
Bug reported by Cahata on #ngircd, thanks!
---
src/ngircd/irc-op.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/ngircd/irc-op.c b/src/ngircd/irc-op.c
index 23db579..449cecf 100644
--- a/src/ngircd/irc-op.c
+++ b/src/ngircd/irc-op.c
@@ -194,7 +194,8 @@ IRC_INVITE(CLIENT *Client, REQUEST *Req)
if (remember) {
/* We must remember this invite */
- if (!Channel_AddInvite(chan, Client_Mask(target), true))
+ if (!Channel_AddInvite(chan, Client_MaskCloaked(target),
+ true))
return CONNECTED;
}
}