1
0
mirror of https://github.com/osmarks/ngircd.git synced 2024-10-28 12:56:18 +00:00

Merge branch 'cmode-M'

By Alexander Barton (2) and DNS777 (1)

* cmode-M:
  Add new channel mode "M" to doc/Modes.txt
  Remove Can_Send_To_Channel_Identified()
  Implement channel mode "M"
This commit is contained in:
Alexander Barton 2012-08-27 21:22:58 +02:00
commit c519ba9920
5 changed files with 8 additions and 2 deletions

View File

@ -49,6 +49,7 @@ users to lists (e.g. "invite list", "ban list"), others have parameters
k 0.6.0 Channel has a "key" (a password). k 0.6.0 Channel has a "key" (a password).
l 0.6.0 Channel has a user limit. l 0.6.0 Channel has a user limit.
m 0.3.0 Channel is moderated, only "voiced" users can send messages. m 0.3.0 Channel is moderated, only "voiced" users can send messages.
M 20 Only registered users (and IRC Ops) can send messages.
n 0.3.0 Channel doesn't allow messages of users not being members. n 0.3.0 Channel doesn't allow messages of users not being members.
O 18 Only IRC operators are allowed to join this channel. O 18 Only IRC operators are allowed to join this channel.
P 0.5.0 Channel is "persistent". P 0.5.0 Channel is "persistent".

View File

@ -832,6 +832,10 @@ Can_Send_To_Channel(CHANNEL *Chan, CLIENT *From)
if (strchr(Channel_Modes(Chan), 'n') && !is_member) if (strchr(Channel_Modes(Chan), 'n') && !is_member)
return false; return false;
if (strchr(Channel_Modes(Chan), 'M') && !Client_HasMode(From, 'R')
&& !Client_HasMode(From, 'o'))
return false;
if (is_op || has_voice) if (is_op || has_voice)
return true; return true;

View File

@ -164,7 +164,7 @@
#define USERMODES "acCiorRswx" #define USERMODES "acCiorRswx"
/** Supported channel modes. */ /** Supported channel modes. */
#define CHANMODES "beiIklmnoOPrRstvz" #define CHANMODES "beiIklmMnoOPrRstvz"
/** Away message for users connected to linked servers. */ /** Away message for users connected to linked servers. */
#define DEFAULT_AWAY_MSG "Away" #define DEFAULT_AWAY_MSG "Away"

View File

@ -500,6 +500,7 @@ Channel_Mode(CLIENT *Client, REQUEST *Req, CLIENT *Origin, CHANNEL *Channel)
switch (*mode_ptr) { switch (*mode_ptr) {
/* --- Channel modes --- */ /* --- Channel modes --- */
case 'i': /* Invite only */ case 'i': /* Invite only */
case 'M': /* Only identified nicks can write */
case 'm': /* Moderated */ case 'm': /* Moderated */
case 'n': /* Only members can write */ case 'n': /* Only members can write */
case 'R': /* Registered users only */ case 'R': /* Registered users only */

View File

@ -21,7 +21,7 @@
#define RPL_YOURHOST_MSG "002 %s :Your host is %s, running version ngircd-%s (%s/%s/%s)" #define RPL_YOURHOST_MSG "002 %s :Your host is %s, running version ngircd-%s (%s/%s/%s)"
#define RPL_CREATED_MSG "003 %s :This server has been started %s" #define RPL_CREATED_MSG "003 %s :This server has been started %s"
#define RPL_MYINFO_MSG "004 %s %s ngircd-%s %s %s" #define RPL_MYINFO_MSG "004 %s %s ngircd-%s %s %s"
#define RPL_ISUPPORT1_MSG "005 %s RFC2812 IRCD=ngIRCd CASEMAPPING=ascii PREFIX=(ov)@+ CHANTYPES=#&+ CHANMODES=beI,k,l,imnOPRstz CHANLIMIT=#&+:%d :are supported on this server" #define RPL_ISUPPORT1_MSG "005 %s RFC2812 IRCD=ngIRCd CASEMAPPING=ascii PREFIX=(ov)@+ CHANTYPES=#&+ CHANMODES=beI,k,l,imMnOPRstz CHANLIMIT=#&+:%d :are supported on this server"
#define RPL_ISUPPORT2_MSG "005 %s CHANNELLEN=%d NICKLEN=%d TOPICLEN=%d AWAYLEN=%d KICKLEN=%d MODES=%d MAXLIST=beI:%d EXCEPTS=e INVEX=I PENALTY :are supported on this server" #define RPL_ISUPPORT2_MSG "005 %s CHANNELLEN=%d NICKLEN=%d TOPICLEN=%d AWAYLEN=%d KICKLEN=%d MODES=%d MAXLIST=beI:%d EXCEPTS=e INVEX=I PENALTY :are supported on this server"
#define RPL_TRACELINK_MSG "200 %s Link %s-%s %s %s V%s %ld %d %d" #define RPL_TRACELINK_MSG "200 %s Link %s-%s %s %s V%s %ld %d %d"