ops are necessary).
+Q - Disable forward. Users cannot be forwarded to the channel
(however, new forwards can still be set subject to +F).
+ +C - Disable CTCP. All CTCP messages to the channel, except ACTION,
+ are disallowed.
WITH PARAMETERS:
+f - Forward. Forwards users who cannot join because of +i,
#define MODE_FREEINVITE 0x0800 /* allow free use of /invite */
#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 CHFL_BAN 0x10000000 /* ban channel flag */
#define CHFL_EXCEPTION 0x20000000 /* exception to ban channel flag */
if(result == CAN_SEND_OPV ||
!flood_attack_channel(p_or_n, source_p, chptr, chptr->chname))
{
+ if (p_or_n != NOTICE && *text == '\001')
+ {
+ if (strncasecmp(text + 1, "ACTION", 6) && chptr->mode.mode & MODE_NOCTCP)
+ {
+ sendto_one_numeric(source_p, ERR_CANNOTSENDTOCHAN,
+ form_str(ERR_CANNOTSENDTOCHAN), chptr->chname);
+ return;
+ }
+ else if (rb_dlink_list_length(&chptr->locmembers) > (unsigned)(GlobalSetOptions.floodcount / 2))
+ source_p->large_ctcp_sent = rb_current_time();
+ }
sendto_channel_flags(client_p, ALL_MEMBERS, source_p, chptr,
"%s %s :%s", command, chptr->chname, text);
- if (p_or_n != NOTICE && *text == '\001' &&
- strncasecmp(text + 1, "ACTION", 6) &&
- rb_dlink_list_length(&chptr->locmembers) > (unsigned)(GlobalSetOptions.floodcount / 2))
- source_p->large_ctcp_sent = rb_current_time();
}
}
else if(chptr->mode.mode & MODE_OPMODERATE &&
{chm_nosuch, 0 }, /* @ */
{chm_nosuch, 0 }, /* A */
{chm_nosuch, 0 }, /* B */
- {chm_nosuch, 0 }, /* C */
+ {chm_simple, MODE_NOCTCP }, /* C */
{chm_nosuch, 0 }, /* D */
{chm_nosuch, 0 }, /* E */
{chm_simple, MODE_FREETARGET }, /* F */