0
0
Fork 0
mirror of https://github.com/matrix-construct/construct synced 2024-11-26 00:32:35 +01:00

Remove check_banned_lines() code duplication.

We can just call check_dlines(), check_klines() and check_xlines().
This commit is contained in:
Jilles Tjoelker 2009-05-21 23:11:32 +02:00
parent 6dbb113478
commit 1bb1f1b0e7

View file

@ -447,81 +447,9 @@ notify_banned_client(struct Client *client_p, struct ConfItem *aconf, int ban)
void
check_banned_lines(void)
{
struct Client *client_p; /* current local client_p being examined */
struct ConfItem *aconf = NULL;
rb_dlink_node *ptr, *next_ptr;
RB_DLINK_FOREACH_SAFE(ptr, next_ptr, lclient_list.head)
{
client_p = ptr->data;
if(IsMe(client_p))
continue;
/* if there is a returned struct ConfItem then kill it */
if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip, client_p->localClient->ip.ss_family)) && !(aconf->status & CONF_EXEMPTDLINE))
{
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"DLINE active for %s",
get_client_name(client_p, HIDE_IP));
notify_banned_client(client_p, aconf, D_LINED);
continue; /* and go examine next fd/client_p */
}
if(!IsPerson(client_p))
continue;
if((aconf = find_kline(client_p)) != NULL)
{
if(IsExemptKline(client_p))
{
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"KLINE over-ruled for %s, client is kline_exempt [%s@%s]",
get_client_name(client_p, HIDE_IP),
aconf->user, aconf->host);
continue;
}
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"KLINE active for %s",
get_client_name(client_p, HIDE_IP));
notify_banned_client(client_p, aconf, K_LINED);
continue;
}
else if((aconf = find_xline(client_p->info, 1)) != NULL)
{
if(IsExemptKline(client_p))
{
sendto_realops_snomask(SNO_GENERAL, L_ALL,
"XLINE over-ruled for %s, client is kline_exempt [%s]",
get_client_name(client_p, HIDE_IP),
aconf->name);
continue;
}
sendto_realops_snomask(SNO_GENERAL, L_ALL, "XLINE active for %s",
get_client_name(client_p, HIDE_IP));
(void) exit_client(client_p, client_p, &me, "Bad user info");
continue;
}
}
/* also check the unknowns list for new dlines */
RB_DLINK_FOREACH_SAFE(ptr, next_ptr, unknown_list.head)
{
client_p = ptr->data;
if((aconf = find_dline((struct sockaddr *)&client_p->localClient->ip,client_p->localClient->ip.ss_family)))
{
if(aconf->status & CONF_EXEMPTDLINE)
continue;
notify_banned_client(client_p, aconf, D_LINED);
}
}
check_dlines();
check_klines();
check_xlines();
}
/* check_klines_event()