Fixed a bug in ticket resolve
Added a command showticket
Tickets can no longer be granted to lamers (improper users)
+
+2.011
+Fixed some function calls to a more secure form
+
+2.02
+Changed the ban system a bit, real host no longer preferred
+fixed G realname
+Fixed the annoying term bug
const char *banmask;
huser *husr = (huser*)target;
- banmask = hban_ban_string(husr->real_user, HBAN_REAL_HOST);
+ banmask = hban_ban_string(husr->real_user, HBAN_HOST);
return hban_add(banmask, rsn, exp, now);
}
strcat(buffer, "@");
- if (banflags & HBAN_HOST)
- strcat(buffer, nck->host->name->content);
- else if (banflags & HBAN_REAL_HOST)
+ if ((banflags & HBAN_HOST) && IsAccount(nck))
+ {
+ strcat(buffer, nck->authname);
+ strcat(buffer, ".users.quakenet.org");
+ }
+ else if ((banflags & HBAN_REAL_HOST) || ((banflags & HBAN_HOST) && !IsAccount(nck)))
strcat(buffer, nck->host->name->content);
else
strcat(buffer, "*");
{
if (huser_on_channel((*hchanuser)->husr, hchan)->flags & H_IDLE_WARNING)
{
- const char *banmask = hban_ban_string((*hchanuser)->husr->real_user, HBAN_REAL_HOST);
+ const char *banmask = hban_ban_string((*hchanuser)->husr->real_user, HBAN_HOST);
helpmod_setban(hchan, banmask, time(NULL) + 10 * HDEF_m, MCB_ADD, HNOW);
helpmod_kick(hchan, (*hchanuser)->husr, "Please do not idle in %s", hchannel_get_name(hchan));
{
if (i > 256)
{
- helpmod_reply(sender, returntype, buf);
+ helpmod_reply(sender, returntype, "%s", buf);
i = 0;
}
if (!node)
}
helpmod_list_aliases(aliases);
if (i)
- helpmod_reply(sender, returntype, buf);
+ helpmod_reply(sender, returntype, "%s", buf);
}
void helpmod_cmd_showcommands (huser *sender, channel* returntype, char* ostr, int argc, char *argv[])
{
if (strlen(buffer) >= 250)
{
- helpmod_reply(sender, returntype, buffer);
+ helpmod_reply(sender, returntype, "%s", buffer);
buffer[0] = '\0';
}
if (strregexp(htrm->description->content, pattern) || strregexp(htrm->name->content, pattern))
}
}
if (buffer[0])
- helpmod_reply(sender, returntype, buffer);
+ helpmod_reply(sender, returntype, "%s", buffer);
helpmod_reply(sender, returntype, "%d term%s match%s pattern '%s'", count, (count == 1)?"":"s", (count == 1)?"es":"", pattern);
}
else if (!ci_strcmp(argv[0], "listfull"))
continue;
}
{
- const char *banmask = hban_ban_string(husr->real_user, HBAN_REAL_HOST);
+ const char *banmask = hban_ban_string(husr->real_user, HBAN_HOST);
hban_add(banmask, "Banned", time(NULL) + HCMD_OUT_DEFAULT, 0);
}
if (days)
{
helpmod_reply(sender, returntype, "Last %d day%s", days, (days==1)?"":"s");
- helpmod_reply(sender, returntype, hstat_header(type));
+ helpmod_reply(sender, returntype, "%s", hstat_header(type));
for (i=0;i<days;i++)
{
stat_entry = &ptr->week[(tstruct->tm_wday - i + 7) % 7];
- helpmod_reply(sender, returntype, hstat_account_print(stat_entry, type));
+ helpmod_reply(sender, returntype, "%s", hstat_account_print(stat_entry, type));
}
}
if (weeks)
{
helpmod_reply(sender, returntype, "Last %d week%s", weeks, (weeks==1)?"":"s");
- helpmod_reply(sender, returntype, hstat_header(type));
+ helpmod_reply(sender, returntype, "%s", hstat_header(type));
for (i=0;i<weeks;i++)
{
stat_entry = &ptr->longterm[(hstat_week() - i + 10) % 10];
- helpmod_reply(sender, returntype, hstat_account_print(stat_entry, type));
+ helpmod_reply(sender, returntype, "%s", hstat_account_print(stat_entry, type));
}
}
}
if (days)
{
helpmod_reply(sender, returntype, "Last %d day%s", days, (days==1)?"":"s");
- helpmod_reply(sender, returntype, hstat_header(type));
+ helpmod_reply(sender, returntype, "%s", hstat_header(type));
for (i=0;i<days;i++) /* latest week */
{
stat_entry = &hchan->stats->week[(tstruct->tm_wday - i + 7) % 7];
- helpmod_reply(sender, returntype, hstat_channel_print(stat_entry, type));
+ helpmod_reply(sender, returntype, "%s", hstat_channel_print(stat_entry, type));
}
}
if (weeks)
{
helpmod_reply(sender, returntype, "Last %d week%s", weeks, (weeks==1)?"":"s");
- helpmod_reply(sender, returntype, hstat_header(type));
+ helpmod_reply(sender, returntype, "%s", hstat_header(type));
for (i=0;i<weeks;i++) /* latest weeks */
{
stat_entry = &hchan->stats->longterm[(hstat_week() - i + 10) % 10];
- helpmod_reply(sender, returntype, hstat_channel_print(stat_entry, type));
+ helpmod_reply(sender, returntype, "%s", hstat_channel_print(stat_entry, type));
}
}
}
vsnprintf(buf,512,message,va);
va_end(va);
- sendmessagetochannel(helpmodnick, hchan->real_channel, buf);
+ sendmessagetochannel(helpmodnick, hchan->real_channel, "%s", buf);
}
void helpmod_message_channel_long(hchannel *hchan, const char *message, ...)
}
if (i == 50)
bp[390 + i] = '\0';
- sendmessagetochannel(helpmodnick, hchan->real_channel, bp);
+ sendmessagetochannel(helpmodnick, hchan->real_channel, "%s", bp);
bp+=(390+i+1);
}
if (*bp)
- sendmessagetochannel(helpmodnick, hchan->real_channel, bp);
+ sendmessagetochannel(helpmodnick, hchan->real_channel, "%s", bp);
}
void helpmod_kick(hchannel *hchan, huser *target, const char *reason, ...)
helpmodnick=registerlocaluser(HELPMOD_NICK,
"help",
"quakenet.org",
- "NewServ HelpMod 2, /msg H help",
+ "NewServ HelpMod 2, /msg "HELPMOD_NICK" help",
HELPMOD_AUTH,
UMODE_OPER|UMODE_ACCOUNT|UMODE_SERVICE,&helpmodmessagehandler);
/* register hooks */
/* configuration */
-#define HELPMOD_VERSION "2.01"
+#define HELPMOD_VERSION "2.02"
#define HELPMOD_USER_TIMEOUT 1200
hban *hb = hban_check(nck);
if (hb)
{
- const char *banmask = hban_ban_string(nck, HBAN_REAL_HOST);
+ const char *banmask = hban_ban_string(nck, HBAN_HOST);
helpmod_setban(hchan, banmask, time(NULL) + 1 * HDEF_d, MCB_ADD, HNOW);
{
if (husr->lc[violation] >= hchan->lc_profile->tolerance_remove) /* get rid of the thing */
{
- const char *banmask = hban_ban_string(husr->real_user, HBAN_REAL_HOST);
+ const char *banmask = hban_ban_string(husr->real_user, HBAN_HOST);
switch (violation)
{
{
if (strlen(buffer) >= 250)
{
- helpmod_reply(sender, returntype, buffer);
+ helpmod_reply(sender, returntype, "%s", buffer);
buffer[0] = '\0';
}
if (hqueue_on_queue(hqueue))
sprintf(buffer+strlen(buffer) /* :) */, "%s (%s@%s) [%s] ", hqueue->hchanuser->husr->real_user->nick, hqueue->hchanuser->husr->real_user->ident, hqueue->hchanuser->husr->real_user->host->name->content, helpmod_strtime(time(NULL) - hqueue->hchanuser->time_joined));
}
if (buffer[0])
- helpmod_reply(sender, returntype, buffer);
+ helpmod_reply(sender, returntype, "%s", buffer);
}
return;
case HQ_NONE: /* if no parameters are given print the summary */
for (ptr = &hchan->htickets;*ptr;ptr = &(*ptr)->next)
if (*ptr == htick)
{
- *ptr = htick->next;
- free(htick);
+ hticket *tmp = (*ptr)->next;
+ free(*ptr);
+ *ptr = tmp;
return NULL;
}
void hticket_remove_expired(void)
{
hchannel *hchan;
- hticket *htick, *next;
+ hticket **tmp;
for (hchan = hchannels;hchan;hchan = hchan->next)
- for (htick = hchan->htickets; htick; htick = next)
- {
- next = htick->next;
- if (htick->time_expiration < time(NULL))
- hticket_del(htick, hchan);
- }
+ {
+ tmp = &hchan->htickets;
+ while (*tmp)
+ if ((*tmp)->time_expiration < time(NULL))
+ hticket_del(*tmp, hchan);
+ else
+ tmp = &(*tmp)->next;
+ }
}
-