Only clients using a SSL encrypted connection to the server are
allowed to join such a channel.
But please note three things:
a) already joined clients are not checked when setting this mode,
b) IRC operators are always allowed to join every channel, and
c) remote clients using a server not supporting this mode are not
checked either and therefore always allowed to join.
ngIRCd - Next Generation IRC Server
ngIRCd - Next Generation IRC Server
- (c)2001-2009 Alexander Barton,
+ (c)2001-2010 Alexander Barton,
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
alex@barton.de, http://www.barton.de/
ngIRCd is free software and published under the
+ngIRCd Release 16
+
+ - A new channel mode "secure connections only" (+z) has been implemented:
+ Only clients using a SSL encrypted connection to the server are allowed
+ to join such a channel.
+ But please note three things: a) already joined clients are not checked
+ when setting this mode, b) IRC operators are always allowed to join
+ every channel, and c) remote clients using a server not supporting this
+ mode are not checked either and therefore always allowed to join.
+
ngIRCd Release 15 (2009-11-07)
ngIRCd 15~rc1 (2009-10-15)
ngIRCd Release 15 (2009-11-07)
ngIRCd 15~rc1 (2009-10-15)
in seconds. */
#define USERMODES "aiorsw" /* Supported user modes. */
in seconds. */
#define USERMODES "aiorsw" /* Supported user modes. */
-#define CHANMODES "biIklmnoPstv" /* Supported channel modes. */
+#define CHANMODES "biIklmnoPstvz" /* Supported channel modes. */
#define CONNECTED true /* Internal status codes. */
#define DISCONNECTED false
#define CONNECTED true /* Internal status codes. */
#define DISCONNECTED false
/*
* ngIRCd -- The Next Generation IRC Daemon
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
*
* 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
*
* 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
}
channel_modes = Channel_Modes(chan);
}
channel_modes = Channel_Modes(chan);
- if ((strchr(channel_modes, 'i')) && !is_invited) {
+ if (strchr(channel_modes, 'i') && !is_invited) {
/* Channel is "invite-only" and client is not on invite list */
IRC_WriteStrClient(Client, ERR_INVITEONLYCHAN_MSG,
Client_ID(Client), channame);
/* Channel is "invite-only" and client is not on invite list */
IRC_WriteStrClient(Client, ERR_INVITEONLYCHAN_MSG,
Client_ID(Client), channame);
- if ((strchr(channel_modes, 'l')) &&
+ if (strchr(channel_modes, 'l') &&
(Channel_MaxUsers(chan) <= Channel_MemberCount(chan))) {
/* There are more clints joined to this channel than allowed */
IRC_WriteStrClient(Client, ERR_CHANNELISFULL_MSG,
(Channel_MaxUsers(chan) <= Channel_MemberCount(chan))) {
/* There are more clints joined to this channel than allowed */
IRC_WriteStrClient(Client, ERR_CHANNELISFULL_MSG,
+ if (strchr(channel_modes, 'z') && !Conn_UsesSSL(Client_Conn(Client))) {
+ /* Only "secure" clients are allowed, but clients doesn't
+ * use SSL encryption */
+ IRC_WriteStrClient(Client, ERR_SECURECHANNEL_MSG,
+ Client_ID(Client), channame);
+ return false;
+ }
+
/*
* ngIRCd -- The Next Generation IRC Daemon
/*
* ngIRCd -- The Next Generation IRC Daemon
- * Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
+ * Copyright (c)2001-2010 Alexander Barton (alex@barton.de)
*
* 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
*
* 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
case 'n': /* Only members can write */
case 's': /* Secret channel */
case 't': /* Topic locked */
case 'n': /* Only members can write */
case 's': /* Secret channel */
case 't': /* Topic locked */
+ case 'z': /* Secure connections only */
if (modeok)
x[0] = *mode_ptr;
else
if (modeok)
x[0] = *mode_ptr;
else
#define ERR_ALREADYREGISTRED_MSG "462 %s :Connection already registered"
#define ERR_PASSWDMISMATCH_MSG "464 %s :Invalid password"
#define ERR_CHANNELISFULL_MSG "471 %s %s :Cannot join channel (+l)"
#define ERR_ALREADYREGISTRED_MSG "462 %s :Connection already registered"
#define ERR_PASSWDMISMATCH_MSG "464 %s :Invalid password"
#define ERR_CHANNELISFULL_MSG "471 %s %s :Cannot join channel (+l)"
+#define ERR_SECURECHANNEL_MSG "471 %s %s :Cannot join channel (+z)"
#define ERR_UNKNOWNMODE_MSG "472 %s: %c :is unknown mode char for %s"
#define ERR_INVITEONLYCHAN_MSG "473 %s %s :Cannot join channel (+i)"
#define ERR_BANNEDFROMCHAN_MSG "474 %s %s :Cannot join channel (+b)"
#define ERR_UNKNOWNMODE_MSG "472 %s: %c :is unknown mode char for %s"
#define ERR_INVITEONLYCHAN_MSG "473 %s %s :Cannot join channel (+i)"
#define ERR_BANNEDFROMCHAN_MSG "474 %s %s :Cannot join channel (+b)"