Shitlist level 3/4 should kick regardless of /CSET KICK_IF_BANNED
As reported by Ancient, this is how it is documented to work. It's also how shitlist level 2 works, so it's consistent this way. Some other cleanups in check_auto() while we're here.
This commit is contained in:
@@ -1,5 +1,8 @@
|
|||||||
[Changes 1.2.2]
|
[Changes 1.2.2]
|
||||||
|
|
||||||
|
* Shitlist level 3/4 should kick regardless of /CSET KICK_IF_BANNED.
|
||||||
|
Reported by Ancient. (caf)
|
||||||
|
|
||||||
* Correct spelling of some client messages. (gdinit)
|
* Correct spelling of some client messages. (gdinit)
|
||||||
|
|
||||||
* Support fractional-second intervals on recurring timers. (caf)
|
* Support fractional-second intervals on recurring timers. (caf)
|
||||||
|
|||||||
@@ -1049,12 +1049,10 @@ void run_user_flag(char *name, char *what, NickList *user, NickList *kicker)
|
|||||||
|
|
||||||
NickList *check_auto(char *channel, NickList *nicklist, ChannelList *chan)
|
NickList *check_auto(char *channel, NickList *nicklist, ChannelList *chan)
|
||||||
{
|
{
|
||||||
|
ShitList *shitptr = NULL;
|
||||||
ShitList *shitptr = NULL;
|
UserList *userptr = NULL;
|
||||||
UserList *userptr = NULL;
|
ChannelList *chan_ptr = NULL;
|
||||||
ChannelList *chan_ptr = NULL;
|
char *ban;
|
||||||
char *ban;
|
|
||||||
|
|
||||||
|
|
||||||
if (!channel || !*channel || !nicklist)
|
if (!channel || !*channel || !nicklist)
|
||||||
return NULL;
|
return NULL;
|
||||||
@@ -1075,7 +1073,6 @@ char *ban;
|
|||||||
userptr = nicklist->userlist;
|
userptr = nicklist->userlist;
|
||||||
shitptr = nicklist->shitlist;
|
shitptr = nicklist->shitlist;
|
||||||
|
|
||||||
|
|
||||||
if (userptr && !check_channel_match(userptr->channels, channel))
|
if (userptr && !check_channel_match(userptr->channels, channel))
|
||||||
userptr = NULL;
|
userptr = NULL;
|
||||||
if (shitptr && (!check_channel_match(shitptr->channels, channel) || isme(nicklist->nick)))
|
if (shitptr && (!check_channel_match(shitptr->channels, channel) || isme(nicklist->nick)))
|
||||||
@@ -1083,10 +1080,9 @@ char *ban;
|
|||||||
|
|
||||||
if (get_cset_int_var(chan_ptr->csets, SHITLIST_CSET) && shitptr != NULL && userptr == NULL)
|
if (get_cset_int_var(chan_ptr->csets, SHITLIST_CSET) && shitptr != NULL && userptr == NULL)
|
||||||
{
|
{
|
||||||
char *theshit;
|
char *reason = shitptr->reason ? shitptr->reason : get_string_var(SHITLIST_REASON_VAR);
|
||||||
time_t current = now;
|
|
||||||
theshit = get_string_var(SHITLIST_REASON_VAR);
|
switch (shitptr->level)
|
||||||
switch(shitptr->level)
|
|
||||||
{
|
{
|
||||||
|
|
||||||
case 0:
|
case 0:
|
||||||
@@ -1097,25 +1093,23 @@ char *ban;
|
|||||||
{
|
{
|
||||||
add_mode(chan_ptr, "o", 0, nicklist->nick, NULL, get_int_var(NUM_OPMODES_VAR));
|
add_mode(chan_ptr, "o", 0, nicklist->nick, NULL, get_int_var(NUM_OPMODES_VAR));
|
||||||
nicklist->sent_deop++;
|
nicklist->sent_deop++;
|
||||||
nicklist->sent_deop_time = current;
|
nicklist->sent_deop_time = now;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 2: /* Auto Kick offender */
|
case 2: /* Auto Kick offender */
|
||||||
add_mode(chan_ptr, NULL, 0, nicklist->nick, shitptr->reason?shitptr->reason:theshit, 0);
|
add_mode(chan_ptr, NULL, 0, nicklist->nick, reason, 0);
|
||||||
break;
|
break;
|
||||||
case 3: /* kick ban the offender */
|
case 3: /* kick ban the offender */
|
||||||
case 4: /* perm ban on offender */
|
case 4: /* perm ban on offender */
|
||||||
if (nicklist->sent_deop < 4 || (nicklist->sent_deop < 4 && shitptr->level == 4))
|
if (nicklist->sent_deop < 4)
|
||||||
{
|
{
|
||||||
send_to_server("MODE %s -o+b %s %s", channel, nicklist->nick, shitptr->filter);
|
send_to_server("MODE %s -o+b %s %s", channel, nicklist->nick, shitptr->filter);
|
||||||
nicklist->sent_deop++;
|
nicklist->sent_deop++;
|
||||||
nicklist->sent_deop_time = current;
|
nicklist->sent_deop_time = now;
|
||||||
if (get_int_var(AUTO_UNBAN_VAR) && shitptr->level != 4)
|
if (get_int_var(AUTO_UNBAN_VAR) && shitptr->level != 4)
|
||||||
add_timer(0, empty_string, get_int_var(AUTO_UNBAN_VAR) * 1000, 1, timer_unban, m_sprintf("%d %s %s", from_server, channel, shitptr->filter), NULL, -1, "auto-unban");
|
add_timer(0, empty_string, get_int_var(AUTO_UNBAN_VAR) * 1000, 1, timer_unban, m_sprintf("%d %s %s", from_server, channel, shitptr->filter), NULL, -1, "auto-unban");
|
||||||
}
|
}
|
||||||
if (get_cset_int_var(chan_ptr->csets, KICK_IF_BANNED_CSET))
|
add_mode(chan_ptr, NULL, 0, nicklist->nick, reason, 0);
|
||||||
send_to_server("KICK %s %s :%s", channel,
|
|
||||||
nicklist->nick, (shitptr->reason && *shitptr->reason) ? shitptr->reason : theshit);
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user