struct StatsStruct
{
char letter;
- void (*handler) ();
+ void (*handler) (struct Client *source_p);
int need_oper;
int need_admin;
};
-static void stats_dns_servers (struct Client *);
+static void stats_dns_servers(struct Client *);
static void stats_delay(struct Client *);
static void stats_hash(struct Client *);
static void stats_connect(struct Client *);
{'I', stats_auth, 0, 0, },
{'k', stats_tklines, 0, 0, },
{'K', stats_klines, 0, 0, },
- {'l', stats_ltrace, 0, 0, },
- {'L', stats_ltrace, 0, 0, },
+ {'l', NULL /* special */, 0, 0, },
+ {'L', NULL /* special */, 0, 0, },
{'m', stats_messages, 0, 0, },
{'M', stats_messages, 0, 0, },
{'n', stats_dnsbl, 0, 0, },
if((statchar != 'L') && (statchar != 'l'))
stats_spy(source_p, statchar, NULL);
- for (i = 0; stats_cmd_table[i].handler; i++)
+ for (i = 0; stats_cmd_table[i].letter; i++)
{
if(stats_cmd_table[i].letter == statchar)
{
/* Blah, stats L needs the parameters, none of the others do.. */
if(statchar == 'L' || statchar == 'l')
- stats_cmd_table[i].handler (source_p, parc, parv);
+ stats_ltrace (source_p, parc, parv);
else
stats_cmd_table[i].handler (source_p);
}
else if((ConfigFileEntry.stats_i_oper_only == 1) && !IsOper (source_p))
{
struct ConfItem *aconf;
- char *name, *host, *pass, *user, *classname;
+ char *name, *host, *pass = "*", *user, *classname;
int port;
if(MyConnect (source_p))
(struct sockaddr *)&source_p->localClient->ip,
CONF_CLIENT,
source_p->localClient->ip.ss_family,
- source_p->username);
+ source_p->username, NULL);
else
aconf = find_conf_by_address (source_p->host, NULL, NULL, NULL, CONF_CLIENT,
- 0, source_p->username);
+ 0, source_p->username, NULL);
if(aconf == NULL)
return;
get_printable_conf (aconf, &name, &host, &pass, &user, &port, &classname);
+ if(!EmptyString(aconf->spasswd))
+ pass = aconf->spasswd;
sendto_one_numeric(source_p, RPL_STATSILINE, form_str(RPL_STATSILINE),
- name, show_iline_prefix(source_p, aconf, user),
+ name, pass, show_iline_prefix(source_p, aconf, user),
host, port, classname);
}
(struct sockaddr *)&source_p->localClient->ip,
CONF_KILL,
source_p->localClient->ip.ss_family,
- source_p->username);
+ source_p->username, NULL);
else
aconf = find_conf_by_address (source_p->host, NULL, NULL, NULL, CONF_KILL,
- 0, source_p->username);
+ 0, source_p->username, NULL);
if(aconf == NULL)
return;
(struct sockaddr *)&source_p->localClient->ip,
CONF_KILL,
source_p->localClient->ip.ss_family,
- source_p->username);
+ source_p->username, NULL);
else
aconf = find_conf_by_address (source_p->host, NULL, NULL, NULL, CONF_KILL,
- 0, source_p->username);
+ 0, source_p->username, NULL);
if(aconf == NULL)
return;