Added kick immunity to umode +p (oper-override)

This commit is contained in:
Xenthys 2016-09-29 00:34:53 +02:00
parent c6d884e877
commit bd2c29f738
No known key found for this signature in database
GPG key ID: D68FF79CEE9A9B69

View file

@ -201,6 +201,33 @@ hack_can_kick(void *vdata)
hook_data_channel_approval *data = (hook_data_channel_approval *) vdata; hook_data_channel_approval *data = (hook_data_channel_approval *) vdata;
int alevel; int alevel;
if (data->target->umodes & user_modes['p'])
{
if (data->client->umodes & user_modes['p'])
{
/* Using oper-override to kick an oper
* who's also using oper-override, better
* report what happened.
*/
update_session_deadline(data->client, NULL);
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s is using oper-override on %s (KICK %s)",
get_oper_name(data->client), data->chptr->chname, data->target->name);
}
else
{
/* Like cmode +M, let's report any attempt
* to kick the immune oper.
*/
update_session_deadline(data->target, NULL);
sendto_realops_snomask(SNO_GENERAL, L_NETWIDE, "%s attempted to kick %s from %s (who is +p)",
data->client->name, data->target->name, data->chptr->chname);
sendto_one_numeric(data->client, ERR_ISCHANSERVICE, "%s %s :Cannot kick immune IRC operators.",
data->target->name, data->chptr->chname);
data->approved = 0;
}
return;
}
alevel = get_channel_access(data->client, data->chptr, data->msptr, data->dir, NULL); alevel = get_channel_access(data->client, data->chptr, data->msptr, data->dir, NULL);
if (alevel != CHFL_OVERRIDE) if (alevel != CHFL_OVERRIDE)
return; return;