#include <string.h>
#include <ctype.h>
-#include "../lib/sstring.h"
-#include "../lib/irc_string.h"
-#include "../channel/channel.h"
-#include "../localuser/localuserchannel.h"
-#include "../core/schedule.h"
-#include "../nick/nick.h"
-
-
#include "hchannel.h"
#include "haccount.h"
#include "helpmod.h"
while (hchan->htickets)
hticket_del(hchan->htickets, hchan);
- localpartchannel(helpmodnick, hchan->real_channel);
+ localpartchannel(helpmodnick, hchan->real_channel, "Channel Removed");
free(hchan);
if (
(huser_get_level((*hchanuser)->husr) == H_PEON) &&
(time(NULL) - huser_on_channel((*hchanuser)->husr,hchan)->last_activity >= hchan->max_idle) &&
- !(on_queue((*hchanuser)->husr, huser_on_channel((*hchanuser)->husr, hchan))) &&
- !IsSetHost((*hchanuser)->husr->real_user)
+ !(on_queue((*hchanuser)->husr, huser_on_channel((*hchanuser)->husr, hchan)))
)
{
if (huser_on_channel((*hchanuser)->husr, hchan)->flags & H_IDLE_WARNING)
{
const char *banmask = hban_ban_string((*hchanuser)->husr->real_user, HBAN_HOST);
- helpmod_setban(hchan, banmask, time(NULL) + 10 * HDEF_m, MCB_ADD, HLAZY);
+ int bantime = 10;
+ helpmod_setban(hchan, banmask, time(NULL) + bantime * HDEF_m, MCB_ADD, HLAZY);
- helpmod_kick(hchan, (*hchanuser)->husr, "Please do not idle in %s", hchannel_get_name(hchan));
+ helpmod_kick(hchan, (*hchanuser)->husr, "Please do not idle in %s (%dmin anti-idle tempban). If you still require assistance, please try again later.", hchannel_get_name(hchan), bantime);
continue;
}
else
huser_on_channel((*hchanuser)->husr, hchan)->flags |= H_IDLE_WARNING;
}
}
- hcommit_modes();
+ /*hcommit_modes();*/
hchanuser = &(*hchanuser)->next;
- }
+ }
+ hcommit_modes();
}
/* Additionally, test if the channel has queue but no idle opers / staff */
if (hchan->flags & H_QUEUE && hchan->flags & H_QUEUE_TIMEOUT)
{
hchannel_user *tmp;
for (tmp = hchan->channel_users;tmp;tmp = tmp->next)
- if (huser_get_level(tmp->husr) > H_PEON)
+ if (huser_get_level(tmp->husr) >= H_TRIAL)
{
huser_channel *huserchan = huser_on_channel(tmp->husr, hchan);
if ((time(NULL) - huserchan->last_activity < HELPMOD_QUEUE_TIMEOUT) && (huserchan->last_activity != tmp->time_joined))
/*if (on_queue(husr, huserchan) || on_desk(husr, huserchan))*/
if (huserchan != NULL)
{
- hchannel_user *tmp, **hchanuser = &hchan->channel_users;
+ hchannel_user *tmp = NULL, **hchanuser = &hchan->channel_users;
for (;*hchanuser;hchanuser = &(*hchanuser)->next)
if ((*hchanuser)->husr == husr)
{
break;
}
*hchanuser = tmp;
+ assert(*hchanuser != NULL);
(*hchanuser)->next = NULL;
if (on_desk(husr, huserchan))
{
int hchannel_highlight_detection(hchannel *hchan, const char *message)
{
char buffer[512], *buffer_ptr = buffer, *ptr = buffer;
- int i = 0, matches = 0;
+ int i, matches = 0;
strcpy(buffer, message);
+ /* remove commas */
+ for (i=0;i<512 && buffer[i] != '\0';i++)
+ if (buffer[i] == ',')
+ buffer[i] = ' ';
+
+ /* reset i for loop */
+ i = 0;
do
{
nick *tmp;
if (i++ > 6)
break;
- while (*buffer_ptr && isspace(*buffer))
+ while (*buffer_ptr && isspace(*buffer_ptr))
buffer_ptr++;
+ if (*buffer_ptr == '@')
+ buffer_ptr++;
+
if (*buffer_ptr)
{
ptr = strchr(buffer_ptr, ' ');