Module: ngircd.git
Branch: master
Commit: 53917fa4b80753fc189ed5a516c06c804f2cf415
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=53917fa4…
Author: Alexander Barton <alex(a)barton.de>
Date: Sat Nov 10 23:33:19 2012 +0100
Add new IRC+ server flag "X": "XOP modes supported"
This flag indicates, that the server supports the enhanced "xop channel
user modes", like channel owner, admin, and halfop. This information is
used to make sure that no unsupported CHANINFO commands are sent to
servers not supporting such mode prefixes, for example.
---
doc/Protocol.txt | 3 +++
src/ngircd/defines.h | 2 +-
src/ngircd/numeric.c | 17 +++++++++--------
3 files changed, 13 insertions(+), 9 deletions(-)
diff --git a/doc/Protocol.txt b/doc/Protocol.txt
index 516a4a4..9a8ddf6 100644
--- a/doc/Protocol.txt
+++ b/doc/Protocol.txt
@@ -89,6 +89,9 @@ The following <serverflags> are defined at the moment:
- 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".
diff --git a/src/ngircd/defines.h b/src/ngircd/defines.h
index b2de98d..dcdd440 100644
--- a/src/ngircd/defines.h
+++ b/src/ngircd/defines.h
@@ -157,7 +157,7 @@
#ifdef IRCPLUS
/** Standard IRC+ flags. */
-# define IRCPLUSFLAGS "CHLMS"
+# define IRCPLUSFLAGS "CHLMSX"
#endif
/** Supported user modes. */
diff --git a/src/ngircd/numeric.c b/src/ngircd/numeric.c
index 3fc8c46..f48cc21 100644
--- a/src/ngircd/numeric.c
+++ b/src/ngircd/numeric.c
@@ -48,12 +48,11 @@ Announce_Channel(CLIENT *Client, CHANNEL *Chan)
CL2CHAN *cl2chan;
CLIENT *cl;
char str[LINE_LEN], *ptr;
- bool njoin;
+ bool njoin, xop;
- if (Conn_Options(Client_Conn(Client)) & CONN_RFC1459)
- njoin = false;
- else
- njoin = true;
+ /* Check features of remote server */
+ njoin = Conn_Options(Client_Conn(Client)) & CONN_RFC1459 ? false : true;
+ xop = strchr(Client_Flags(Client), 'X') ? true : false;
/* Get all the members of this channel */
cl2chan = Channel_FirstMember(Chan);
@@ -67,13 +66,15 @@ Announce_Channel(CLIENT *Client, CHANNEL *Chan)
* (if user is channel operator or has voice) */
if (str[strlen(str) - 1] != ':')
strlcat(str, ",", sizeof(str));
- if (strchr(Channel_UserModes(Chan, cl), 'q'))
+
+ /* Prepare user prefix (ChanOp, voiced, ...) */
+ if (xop && strchr(Channel_UserModes(Chan, cl), 'q'))
strlcat(str, "~", sizeof(str));
- if (strchr(Channel_UserModes(Chan, cl), 'a'))
+ if (xop && strchr(Channel_UserModes(Chan, cl), 'a'))
strlcat(str, "&", sizeof(str));
if (strchr(Channel_UserModes(Chan, cl), 'o'))
strlcat(str, "@", sizeof(str));
- if (strchr(Channel_UserModes(Chan, cl), 'h'))
+ if (xop && strchr(Channel_UserModes(Chan, cl), 'h'))
strlcat(str, "%", sizeof(str));
if (strchr(Channel_UserModes(Chan, cl), 'v'))
strlcat(str, "+", sizeof(str));
Module: ngircd.git
Branch: master
Commit: 646218e6f4d936b7448b2b407ffb6a53650658de
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=646218e6…
Author: Alexander Barton <alex(a)barton.de>
Date: Sat Nov 10 21:50:36 2012 +0100
Update autoconf/automake version numbers in doc/HowToRelease.txt
---
doc/HowToRelease.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/doc/HowToRelease.txt b/doc/HowToRelease.txt
index d4d82bc..429c3d8 100644
--- a/doc/HowToRelease.txt
+++ b/doc/HowToRelease.txt
@@ -40,7 +40,7 @@ a) Make sure the source tree is in a releasable state ;-)
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:
Module: ngircd.git
Branch: master
Commit: 4185c4a44aeb69ee6b970809a1f604e600ee88eb
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=4185c4a4…
Author: Alexander Barton <alex(a)barton.de>
Date: Sat Nov 10 21:49:02 2012 +0100
Update NEWS and ChangeLog files
---
ChangeLog | 27 +++++++++++++++++++++++++++
NEWS | 17 +++++++++++++++++
2 files changed, 44 insertions(+)
diff --git a/ChangeLog b/ChangeLog
index 296c23f..7146ae1 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -11,6 +11,33 @@
ngIRCd
+ - 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",
diff --git a/NEWS b/NEWS
index b6a5efd..8997a02 100644
--- a/NEWS
+++ b/NEWS
@@ -11,6 +11,23 @@
ngIRCd
+ - 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",
Module: ngircd.git
Branch: master
Commit: c7db2f8429c161835f6a9ed4523f45c23918892b
URL: http://ngircd.barton.de/cgi-bin/gitweb.cgi?p=ngircd.git&a=commit;h=c7db2f84…
Author: Alexander Barton <alex(a)barton.de>
Date: Sat Nov 10 21:24:55 2012 +0100
doc/Services.txt: Update documentation for Anope 1.9.8
Starting with Anope 1.9.8, the ngIRCd protocol module is rewritten from
scratch by "DukePyrolator" and included in the Anope distribution. So no
patching is required any more, yeah!
Drawback: Anope 1.9.8 is in development and not yet released ...
---
doc/Services.txt | 48 +++++++++++++++++++++++++++++++++++-------------
1 file changed, 35 insertions(+), 13 deletions(-)
diff --git a/doc/Services.txt b/doc/Services.txt
index 26d1d7e..f51bd48 100644
--- a/doc/Services.txt
+++ b/doc/Services.txt
@@ -9,12 +9,12 @@
-- 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
- - Anope 1.9.4 or later (<http://www.anope.org/>)
+ - 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/>)
@@ -44,13 +44,21 @@ Example:
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/>!
-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:
+At least the following settings have to be tweaked, in addition to all the
+settings marked as required by Anope:
+
+In conf/services.conf:
+
+ define
+ {
+ name = "services.host"
+ value = "services.irc.net"
+ }
uplink
{
@@ -59,10 +67,24 @@ settings marked as required:
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-"
}