From 6afd4b916f936fcab6ab89a5f9887e9d2cc365ce Mon Sep 17 00:00:00 2001 From: "B.Greenham" Date: Tue, 23 Feb 2010 00:49:24 -0500 Subject: [PATCH] Add chmode +T, which blocks notices. --- help/opers/cmode | 1 + include/channel.h | 1 + modules/core/m_message.c | 6 ++++++ src/chmode.c | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/help/opers/cmode b/help/opers/cmode index 2fb5096..8594325 100644 --- a/help/opers/cmode +++ b/help/opers/cmode @@ -28,6 +28,7 @@ NO PARAMETERS: (however, new forwards can still be set subject to +F). +C - Disable CTCP. All CTCP messages to the channel, except ACTION, are disallowed. + +T - Disable notice. All notices to the channel are disallowed. WITH PARAMETERS: +f - Forward. Forwards users who cannot join because of +i, diff --git a/include/channel.h b/include/channel.h index 1e3b5bb..d9c46e2 100644 --- a/include/channel.h +++ b/include/channel.h @@ -172,6 +172,7 @@ typedef int (*ExtbanFunc)(const char *data, struct Client *client_p, #define MODE_FREETARGET 0x1000 /* can be forwarded to without authorization */ #define MODE_DISFORWARD 0x2000 /* disable channel forwarding */ #define MODE_NOCTCP 0x8000 /* Block CTCPs directed to this channel */ +#define MODE_NONOTICE 0x16000 /* Block notices directed to this channel */ #define CHFL_BAN 0x10000000 /* ban channel flag */ #define CHFL_EXCEPTION 0x20000000 /* exception to ban channel flag */ diff --git a/modules/core/m_message.c b/modules/core/m_message.c index cd35b33..c94a1b3 100644 --- a/modules/core/m_message.c +++ b/modules/core/m_message.c @@ -513,6 +513,12 @@ msg_channel(int p_or_n, const char *command, if(result == CAN_SEND_OPV || !flood_attack_channel(p_or_n, source_p, chptr, chptr->chname)) { + if (p_or_n != PRIVMSG && chptr->mode.mode & MODE_NONOTICE) + { + sendto_one_numeric(source_p, ERR_CANNOTSENDTOCHAN, + form_str(ERR_CANNOTSENDTOCHAN), chptr->chname); + return; + } if (p_or_n != NOTICE && *text == '\001' && strncasecmp(text + 1, "ACTION", 6)) { diff --git a/src/chmode.c b/src/chmode.c index 9d67ed2..b518733 100644 --- a/src/chmode.c +++ b/src/chmode.c @@ -1416,7 +1416,7 @@ struct ChannelMode chmode_table[256] = {chm_simple, MODE_DISFORWARD }, /* Q */ {chm_nosuch, 0 }, /* R */ {chm_nosuch, 0 }, /* S */ - {chm_nosuch, 0 }, /* T */ + {chm_simple, MODE_NONOTICE }, /* T */ {chm_nosuch, 0 }, /* U */ {chm_nosuch, 0 }, /* V */ {chm_nosuch, 0 }, /* W */