mirror of
https://github.com/osmarks/ngircd.git
synced 2024-12-13 10:20:28 +00:00
Implemented new "secure clients only" channel mode: +z
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.
This commit is contained in:
parent
ef157715a0
commit
9f58418765
12
NEWS
12
NEWS
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
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/
|
alex@barton.de, http://www.barton.de/
|
||||||
|
|
||||||
ngIRCd is free software and published under the
|
ngIRCd is free software and published under the
|
||||||
@ -10,6 +10,16 @@
|
|||||||
-- NEWS --
|
-- NEWS --
|
||||||
|
|
||||||
|
|
||||||
|
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 Release 15 (2009-11-07)
|
||||||
|
|
||||||
ngIRCd 15~rc1 (2009-10-15)
|
ngIRCd 15~rc1 (2009-10-15)
|
||||||
|
@ -81,7 +81,7 @@
|
|||||||
in seconds. */
|
in seconds. */
|
||||||
|
|
||||||
#define USERMODES "aiorsw" /* Supported user modes. */
|
#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 CONNECTED true /* Internal status codes. */
|
||||||
#define DISCONNECTED false
|
#define DISCONNECTED false
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -93,7 +93,7 @@ join_allowed(CLIENT *Client, CHANNEL *chan, const char *channame,
|
|||||||
}
|
}
|
||||||
|
|
||||||
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 */
|
/* Channel is "invite-only" and client is not on invite list */
|
||||||
IRC_WriteStrClient(Client, ERR_INVITEONLYCHAN_MSG,
|
IRC_WriteStrClient(Client, ERR_INVITEONLYCHAN_MSG,
|
||||||
Client_ID(Client), channame);
|
Client_ID(Client), channame);
|
||||||
@ -108,7 +108,7 @@ join_allowed(CLIENT *Client, CHANNEL *chan, const char *channame,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((strchr(channel_modes, 'l')) &&
|
if (strchr(channel_modes, 'l') &&
|
||||||
(Channel_MaxUsers(chan) <= Channel_MemberCount(chan))) {
|
(Channel_MaxUsers(chan) <= Channel_MemberCount(chan))) {
|
||||||
/* There are more clints joined to this channel than allowed */
|
/* There are more clints joined to this channel than allowed */
|
||||||
IRC_WriteStrClient(Client, ERR_CHANNELISFULL_MSG,
|
IRC_WriteStrClient(Client, ERR_CHANNELISFULL_MSG,
|
||||||
@ -116,6 +116,14 @@ join_allowed(CLIENT *Client, CHANNEL *chan, const char *channame,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* 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
|
* 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
|
* it under the terms of the GNU General Public License as published by
|
||||||
@ -401,6 +401,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
|
|||||||
case 'n': /* Only members can write */
|
case 'n': /* Only members can write */
|
||||||
case 's': /* Secret channel */
|
case 's': /* Secret channel */
|
||||||
case 't': /* Topic locked */
|
case 't': /* Topic locked */
|
||||||
|
case 'z': /* Secure connections only */
|
||||||
if (modeok)
|
if (modeok)
|
||||||
x[0] = *mode_ptr;
|
x[0] = *mode_ptr;
|
||||||
else
|
else
|
||||||
|
@ -113,6 +113,7 @@
|
|||||||
#define ERR_ALREADYREGISTRED_MSG "462 %s :Connection already registered"
|
#define ERR_ALREADYREGISTRED_MSG "462 %s :Connection already registered"
|
||||||
#define ERR_PASSWDMISMATCH_MSG "464 %s :Invalid password"
|
#define ERR_PASSWDMISMATCH_MSG "464 %s :Invalid password"
|
||||||
#define ERR_CHANNELISFULL_MSG "471 %s %s :Cannot join channel (+l)"
|
#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_UNKNOWNMODE_MSG "472 %s: %c :is unknown mode char for %s"
|
||||||
#define ERR_INVITEONLYCHAN_MSG "473 %s %s :Cannot join channel (+i)"
|
#define ERR_INVITEONLYCHAN_MSG "473 %s %s :Cannot join channel (+i)"
|
||||||
#define ERR_BANNEDFROMCHAN_MSG "474 %s %s :Cannot join channel (+b)"
|
#define ERR_BANNEDFROMCHAN_MSG "474 %s %s :Cannot join channel (+b)"
|
||||||
|
Loading…
Reference in New Issue
Block a user