#include "logger.h"
#include "dns.h"
-rb_dlink_list shared_conf_list;
rb_dlink_list cluster_conf_list;
rb_dlink_list oper_conf_list;
-rb_dlink_list hubleaf_conf_list;
rb_dlink_list server_conf_list;
rb_dlink_list xline_conf_list;
rb_dlink_list resv_conf_list; /* nicks only! */
rb_dlink_node *ptr;
rb_dlink_node *next_ptr;
- RB_DLINK_FOREACH_SAFE(ptr, next_ptr, shared_conf_list.head)
- {
- /* ptr here is ptr->data->node */
- rb_dlinkDelete(ptr, &shared_conf_list);
- free_remote_conf(ptr->data);
- }
-
RB_DLINK_FOREACH_SAFE(ptr, next_ptr, cluster_conf_list.head)
{
rb_dlinkDelete(ptr, &cluster_conf_list);
free_remote_conf(ptr->data);
}
- RB_DLINK_FOREACH_SAFE(ptr, next_ptr, hubleaf_conf_list.head)
- {
- rb_dlinkDelete(ptr, &hubleaf_conf_list);
- free_remote_conf(ptr->data);
- }
-
RB_DLINK_FOREACH_SAFE(ptr, next_ptr, oper_conf_list.head)
{
free_oper_conf(ptr->data);
rb_free(remote_p);
}
-bool
-find_shared_conf(const char *username, const char *host,
- const char *server, int flags)
-{
- struct remote_conf *shared_p;
- rb_dlink_node *ptr;
-
- RB_DLINK_FOREACH(ptr, shared_conf_list.head)
- {
- shared_p = ptr->data;
-
- if(match(shared_p->username, username) &&
- match(shared_p->host, host) &&
- match(shared_p->server, server))
- {
- if(shared_p->flags & flags)
- return true;
- else
- return false;
- }
- }
-
- return false;
-}
-
void
propagate_generic(struct Client *source_p, const char *command,
const char *target, int cap, const char *format, ...)
else
server_p->flags &= ~SERVER_AUTOCONN;
- sendto_realops_snomask(SNO_GENERAL, L_ALL,
+ sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
"%s has changed AUTOCONN for %s to %i",
get_oper_name(source_p), name, newval);
}
{
server_p->flags &= ~SERVER_AUTOCONN;
- sendto_realops_snomask(SNO_GENERAL, L_ALL,
+ sendto_realops_snomask(SNO_GENERAL, L_NETWIDE,
"Disabling AUTOCONN for %s because of error",
name);
ilog(L_SERVER, "Disabling AUTOCONN for %s because of error",
valid_temp_time(const char *p)
{
time_t result = 0;
+ long current = 0;
- while(*p)
- {
- if(IsDigit(*p))
- {
- result *= 10;
- result += ((*p) & 0xF);
- p++;
- }
- else
+ while (*p) {
+ char *endp;
+
+ errno = 0;
+ current = strtol(p, &endp, 10);
+
+ if (errno == ERANGE)
return -1;
- }
+ if (endp == p)
+ return -1;
+
+ switch (*endp) {
+ case '\0': /* No unit was given so send it back as minutes */
+ case 'm':
+ result += current * 60;
+ break;
+ case 'h':
+ result += current * 3600;
+ break;
+ case 'd':
+ result += current * 86400;
+ break;
+ case 'w':
+ result += current * 604800;
+ break;
+ default:
+ return -1;
+ }
- if(result > (60 * 24 * 7 * 52))
- result = (60 * 24 * 7 * 52);
+ if (*endp == '\0')
+ break;
+
+ p = endp + 1;
+ }
- return(result * 60);
+ return MIN(result, 60 * 60 * 24 * 7 * 52);
}
/* Propagated bans are expired elsewhere. */