unsigned long channel_expire_frequency;
unsigned long dnr_expire_frequency;
- long info_delay;
- unsigned int adjust_delay;
- long channel_expire_delay;
+ unsigned long info_delay;
+ unsigned long adjust_delay;
+ unsigned long channel_expire_delay;
unsigned int nodelete_level;
unsigned int adjust_threshold;
}
static void
-chanserv_ctcp_check(struct userNode *user, struct chanNode *channel, const char *text, UNUSED_ARG(struct userNode *bot))
+chanserv_ctcp_check(struct userNode *user, struct chanNode *channel, const char *text, UNUSED_ARG(struct userNode *bot), UNUSED_ARG(unsigned int is_notice))
{
unsigned int eflags, argc;
char *argv[4];
}
static struct userData*
-add_channel_user(struct chanData *channel, struct handle_info *handle, unsigned short access, time_t seen, const char *info)
+add_channel_user(struct chanData *channel, struct handle_info *handle, unsigned short access, unsigned long seen, const char *info)
{
struct userData *ud;
static void expire_ban(void *data);
static struct banData*
-add_channel_ban(struct chanData *channel, const char *mask, char *owner, time_t set, time_t triggered, time_t expires, char *reason)
+add_channel_ban(struct chanData *channel, const char *mask, char *owner, unsigned long set, unsigned long triggered, unsigned long expires, char *reason)
{
struct banData *bd;
unsigned int ii, l1, l2;
static void
expire_dnrs(UNUSED_ARG(void *data))
{
- dict_iterator_t it;
+ dict_iterator_t it, next;
struct do_not_register *dnr;
- for(it = dict_first(handle_dnrs); it; it = iter_next(it))
+ for(it = dict_first(handle_dnrs); it; it = next)
{
dnr = iter_data(it);
- if(!dnr->expires || dnr->expires > now)
- continue;
- dict_remove(handle_dnrs, dnr->chan_name + 1);
+ next = iter_next(it);
+ if(dnr->expires && dnr->expires <= now)
+ dict_remove(handle_dnrs, dnr->chan_name + 1);
}
- for(it = dict_first(plain_dnrs); it; it = iter_next(it))
+ for(it = dict_first(plain_dnrs); it; it = next)
{
dnr = iter_data(it);
- if(!dnr->expires || dnr->expires > now)
- continue;
- dict_remove(plain_dnrs, dnr->chan_name);
+ next = iter_next(it);
+ if(dnr->expires && dnr->expires <= now)
+ dict_remove(plain_dnrs, dnr->chan_name + 1);
}
- for(it = dict_first(mask_dnrs); it; it = iter_next(it))
+ for(it = dict_first(mask_dnrs); it; it = next)
{
dnr = iter_data(it);
- if(!dnr->expires || dnr->expires > now)
- continue;
- dict_remove(mask_dnrs, dnr->chan_name);
+ next = iter_next(it);
+ if(dnr->expires && dnr->expires <= now)
+ dict_remove(mask_dnrs, dnr->chan_name + 1);
}
if(chanserv_conf.dnr_expire_frequency)
}
static struct do_not_register *
-chanserv_add_dnr(const char *chan_name, const char *setter, time_t expires, const char *reason)
+chanserv_add_dnr(const char *chan_name, const char *setter, unsigned long expires, const char *reason)
{
struct do_not_register *dnr = calloc(1, sizeof(*dnr)+strlen(reason));
safestrncpy(dnr->chan_name, chan_name, sizeof(dnr->chan_name));
struct userNode *user;
char buf1[INTERVALLEN];
char buf2[INTERVALLEN];
+ time_t feh;
user = extra;
if(dnr->set)
- strftime(buf1, sizeof(buf1), "%d %b %Y", localtime(&dnr->set));
+ {
+ feh = dnr->set;
+ strftime(buf1, sizeof(buf1), "%d %b %Y", localtime(&feh));
+ }
if(dnr->expires)
{
- strftime(buf2, sizeof(buf2), "%d %b %Y", localtime(&dnr->expires));
+ feh = dnr->expires;
+ strftime(buf2, sizeof(buf2), "%d %b %Y", localtime(&feh));
send_message(user, chanserv, "CSMSG_DNR_INFO_SET_EXPIRES", dnr->chan_name, buf1, dnr->setter, buf2, dnr->reason);
}
else if(dnr->set)
static CHANSERV_FUNC(cmd_noregister)
{
const char *target;
- time_t expiry, duration;
+ const char *reason;
+ unsigned long expiry, duration;
unsigned int matches;
if(argc < 2)
return 0;
}
- const char *reason = unsplit_string(argv + 3, argc - 3, NULL);
+ reason = unsplit_string(argv + 3, argc - 3, NULL);
if((*target == '*') && !get_handle_info(target + 1))
{
reply("MSG_HANDLE_UNKNOWN", target + 1);
char *chan_mask;
char *setter_mask;
char *reason_mask;
- time_t min_set, max_set;
- time_t min_expires, max_expires;
+ unsigned long min_set, max_set;
+ unsigned long min_expires, max_expires;
unsigned int limit;
};
{
return !((dnr->set < search->min_set)
|| (dnr->set > search->max_set)
- || (dnr->expires && ((dnr->expires < search->min_expires)
- || (dnr->expires > search->max_expires)))
+ || (dnr->expires < search->min_expires)
+ || (search->max_expires
+ && ((dnr->expires == 0)
+ || (dnr->expires > search->max_expires)))
|| (search->chan_mask
&& !match_ircglob(dnr->chan_name, search->chan_mask))
|| (search->setter_mask
discrim->setter_mask = NULL;
discrim->reason_mask = NULL;
discrim->max_set = INT_MAX;
- discrim->max_expires = INT_MAX;
discrim->limit = 50;
for(ii=0; ii<argc; ++ii)
struct banData *bData, *next;
char interval[INTERVALLEN];
unsigned int count;
- time_t limit;
+ unsigned long limit;
count = 0;
limit = now - duration;
struct userData *actor, *uData, *next;
char interval[INTERVALLEN];
unsigned int count;
- time_t limit;
+ unsigned long limit;
actor = GetChannelAccess(channel->channel_info, user->handle_info);
if(min_access > max_access)
/* If the ban matches an existing one exactly,
extend the expiration time if the provided
duration is longer. */
- if(duration && ((time_t)(now + duration) > bData->expires))
+ if(duration && (now + duration > bData->expires))
{
bData->expires = now + duration;
reset = 1;
static CHANSERV_FUNC(cmd_netinfo)
{
- extern time_t boot_time;
+ extern unsigned long boot_time;
extern unsigned long burst_length;
char interval[INTERVALLEN];
msg = unsplit_string(argv + 1, argc - 1, NULL);
send_channel_message(channel, cmd->parent->bot, "%s", msg);
}
+ else if(*argv[1] == '*' && argv[1][1] != '\0')
+ {
+ struct handle_info *hi;
+ struct userNode *authed;
+
+ REQUIRE_PARAMS(3);
+ msg = unsplit_string(argv + 2, argc - 2, NULL);
+
+ if (!(hi = get_handle_info(argv[1] + 1)))
+ {
+ reply("MSG_HANDLE_UNKNOWN", argv[1] + 1);
+ return 0;
+ }
+
+ for (authed = hi->users; authed; authed = authed->next_authed)
+ send_target_message(5, authed->nick, cmd->parent->bot, "%s", msg);
+ }
else if(GetUserH(argv[1]))
{
REQUIRE_PARAMS(3);
msg = unsplit_string(argv + 1, argc - 1, NULL);
send_channel_message(channel, cmd->parent->bot, "\001ACTION %s\001", msg);
}
+ else if(*argv[1] == '*' && argv[1][1] != '\0')
+ {
+ struct handle_info *hi;
+ struct userNode *authed;
+
+ REQUIRE_PARAMS(3);
+ msg = unsplit_string(argv + 2, argc - 2, NULL);
+
+ if (!(hi = get_handle_info(argv[1] + 1)))
+ {
+ reply("MSG_HANDLE_UNKNOWN", argv[1] + 1);
+ return 0;
+ }
+
+ for (authed = hi->users; authed; authed = authed->next_authed)
+ send_target_message(5, authed->nick, cmd->parent->bot, "\001ACTION %s\001", msg);
+ }
else if(GetUserH(argv[1]))
{
msg = unsplit_string(argv + 2, argc - 2, NULL);
{
struct suspended *suspended;
char reason[MAXLEN];
- time_t expiry, duration;
+ unsigned long expiry, duration;
struct userData *uData;
REQUIRE_PARAMS(3);
char *name;
char *registrar;
- time_t unvisited;
- time_t registered;
+ unsigned long unvisited;
+ unsigned long registered;
unsigned long flags;
unsigned int limit;
static CHANSERV_FUNC(cmd_unvisited)
{
struct chanData *cData;
- time_t interval = chanserv_conf.channel_expire_delay;
+ unsigned long interval = chanserv_conf.channel_expire_delay;
char buffer[INTERVALLEN];
unsigned int limit = 25, matches = 0;
}
curr_user = owner;
}
- else if(!force && (now < (time_t)(cData->ownerTransfer + chanserv_conf.giveownership_period)))
+ else if(!force && (now < cData->ownerTransfer + chanserv_conf.giveownership_period))
{
char delay[INTERVALLEN];
intervalString(delay, cData->ownerTransfer + chanserv_conf.giveownership_period - now, user->handle_info);
struct handle_info *handle;
struct userData *uData;
char *seen, *inf, *flags;
- time_t last_seen;
+ unsigned long last_seen;
unsigned short access;
if(rd->type != RECDB_OBJECT || !dict_size(rd->d.object))
inf = database_get_data(rd->d.object, KEY_INFO, RECDB_QSTRING);
seen = database_get_data(rd->d.object, KEY_SEEN, RECDB_QSTRING);
- last_seen = seen ? (signed)strtoul(seen, NULL, 0) : now;
+ last_seen = seen ? strtoul(seen, NULL, 0) : now;
flags = database_get_data(rd->d.object, KEY_FLAGS, RECDB_QSTRING);
handle = get_handle_info(key);
if(!handle)
{
struct banData *bData;
char *set, *triggered, *s_duration, *s_expires, *reason, *owner;
- time_t set_time, triggered_time, expires_time;
+ unsigned long set_time, triggered_time, expires_time;
if(rd->type != RECDB_OBJECT || !dict_size(rd->d.object))
{
if (!reason || !owner)
return;
- set_time = set ? (time_t)strtoul(set, NULL, 0) : now;
- triggered_time = triggered ? (time_t)strtoul(triggered, NULL, 0) : 0;
+ set_time = set ? strtoul(set, NULL, 0) : now;
+ triggered_time = triggered ? strtoul(triggered, NULL, 0) : 0;
if(s_expires)
- expires_time = (time_t)strtoul(s_expires, NULL, 0);
+ expires_time = strtoul(s_expires, NULL, 0);
else if(s_duration)
expires_time = set_time + atoi(s_duration);
else
dict_t previous;
str = database_get_data(obj, KEY_EXPIRES, RECDB_QSTRING);
- suspended->expires = str ? (time_t)strtoul(str, NULL, 0) : 0;
+ suspended->expires = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(obj, KEY_REVOKED, RECDB_QSTRING);
- suspended->revoked = str ? (time_t)strtoul(str, NULL, 0) : 0;
+ suspended->revoked = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(obj, KEY_ISSUED, RECDB_QSTRING);
- suspended->issued = str ? (time_t)strtoul(str, NULL, 0) : 0;
+ suspended->issued = str ? strtoul(str, NULL, 0) : 0;
suspended->suspender = strdup(database_get_data(obj, KEY_SUSPENDER, RECDB_QSTRING));
suspended->reason = strdup(database_get_data(obj, KEY_REASON, RECDB_QSTRING));
previous = database_get_data(obj, KEY_PREVIOUS, RECDB_OBJECT);
}
str = database_get_data(channel, KEY_REGISTERED, RECDB_QSTRING);
- cData->registered = str ? (time_t)strtoul(str, NULL, 0) : now;
+ cData->registered = str ? strtoul(str, NULL, 0) : now;
str = database_get_data(channel, KEY_VISITED, RECDB_QSTRING);
- cData->visited = str ? (time_t)strtoul(str, NULL, 0) : now;
+ cData->visited = str ? strtoul(str, NULL, 0) : now;
str = database_get_data(channel, KEY_OWNER_TRANSFER, RECDB_QSTRING);
- cData->ownerTransfer = str ? (time_t)strtoul(str, NULL, 0) : 0;
+ cData->ownerTransfer = str ? strtoul(str, NULL, 0) : 0;
str = database_get_data(channel, KEY_MAX, RECDB_QSTRING);
cData->max = str ? atoi(str) : 0;
str = database_get_data(channel, KEY_GREETING, RECDB_QSTRING);
{
const char *setter, *reason, *str;
struct do_not_register *dnr;
- time_t expiry;
+ unsigned long expiry;
setter = database_get_data(hir->d.object, KEY_DNR_SETTER, RECDB_QSTRING);
if(!setter)
return;
}
str = database_get_data(hir->d.object, KEY_EXPIRES, RECDB_QSTRING);
- expiry = str ? (time_t)strtoul(str, NULL, 0) : 0;
+ expiry = str ? strtoul(str, NULL, 0) : 0;
if(expiry && expiry <= now)
return;
dnr = chanserv_add_dnr(key, setter, expiry, reason);
if(chanserv_conf.refresh_period)
{
- time_t next_refresh;
+ unsigned long next_refresh;
next_refresh = (now + chanserv_conf.refresh_period - 1) / chanserv_conf.refresh_period * chanserv_conf.refresh_period;
timeq_add(next_refresh, chanserv_refresh_topics, NULL);
}