rb_free(oper_p->username);
rb_free(oper_p->host);
rb_free(oper_p->name);
+ rb_free(oper_p->certfp);
if(oper_p->passwd)
{
return NULL;
}
-struct oper_flags
-{
- int flag;
- const char *name;
-};
-static struct oper_flags oper_flagtable[] =
-{
- { OPER_KLINE, "kline" },
- { OPER_XLINE, "xline" },
- { OPER_RESV, "resv" },
- { OPER_GLOBKILL, "global_kill" },
- { OPER_LOCKILL, "local_kill" },
- { OPER_REMOTE, "remote" },
- { OPER_UNKLINE, "unkline" },
- { OPER_REHASH, "rehash" },
- { OPER_DIE, "die" },
- { OPER_ADMIN, "admin" },
- { OPER_HADMIN, "hidden_admin" },
- { OPER_NICKS, "nick_changes" },
- { OPER_OPERWALL, "operwall" },
- { OPER_SPY, "spy" },
- { OPER_INVIS, "hidden_oper" },
- { OPER_REMOTEBAN, "remoteban" },
- { OPER_MASSNOTICE, "mass_notice" },
- { 0, NULL }
-};
-
-const char *
-get_oper_privs(int flags)
-{
- static char buf[BUFSIZE];
- char *p;
- int i;
-
- p = buf;
- *p = '\0';
-
- for(i = 0; oper_flagtable[i].flag; i++)
- if (flags & oper_flagtable[i].flag)
- {
- if(i)
- rb_strlcat(buf, ", ", sizeof(buf));
-
- rb_strlcat(buf, oper_flagtable[i].name, sizeof(buf));
- }
-
- return buf;
-}
-
struct server_conf *
make_server_conf(void)
{
sendto_one_notice(source_p, ":Can't find %s", name);
}
+void
+disable_server_conf_autoconn(const char *name)
+{
+ struct server_conf *server_p;
+
+ server_p = find_server_conf(name);
+ if(server_p != NULL && server_p->flags & SERVER_AUTOCONN)
+ {
+ server_p->flags &= ~SERVER_AUTOCONN;
+
+ sendto_realops_snomask(SNO_GENERAL, L_ALL,
+ "Disabling AUTOCONN for %s because of error",
+ name);
+ ilog(L_SERVER, "Disabling AUTOCONN for %s because of error",
+ name);
+ }
+}
+
struct ConfItem *
find_xline(const char *gecos, int counter)
{
{
aconf = ptr->data;
- if(match_esc(aconf->name, gecos))
+ if(match_esc(aconf->host, gecos))
{
if(counter)
aconf->port++;
{
aconf = ptr->data;
- if(!irccmp(aconf->name, gecos))
+ if(!irccmp(aconf->host, gecos))
return aconf;
}
{
aconf = ptr->data;
- if(match_esc(aconf->name, name))
+ if(match_esc(aconf->host, name))
{
aconf->port++;
return aconf;
{
aconf = ptr->data;
- if(!irccmp(aconf->name, name))
+ if(!irccmp(aconf->host, name))
return aconf;
}
return(result * 60);
}
+/* Propagated bans are expired elsewhere. */
static void
expire_temp_rxlines(void *unused)
{
{
aconf = ptr->data;
+ if(aconf->lifetime != 0)
+ continue;
if(aconf->hold && aconf->hold <= rb_current_time())
{
if(ConfigFileEntry.tkline_expire_notices)
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"Temporary RESV for [%s] expired",
- aconf->name);
+ aconf->host);
free_conf(aconf);
rb_dlinkDestroy(ptr, &resvTable[i]);
{
aconf = ptr->data;
+ if(aconf->lifetime != 0)
+ continue;
if(aconf->hold && aconf->hold <= rb_current_time())
{
if(ConfigFileEntry.tkline_expire_notices)
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"Temporary RESV for [%s] expired",
- aconf->name);
+ aconf->host);
free_conf(aconf);
rb_dlinkDestroy(ptr, &resv_conf_list);
}
{
aconf = ptr->data;
+ if(aconf->lifetime != 0)
+ continue;
if(aconf->hold && aconf->hold <= rb_current_time())
{
if(ConfigFileEntry.tkline_expire_notices)
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"Temporary X-line for [%s] expired",
- aconf->name);
+ aconf->host);
free_conf(aconf);
rb_dlinkDestroy(ptr, &xline_conf_list);
}