#include "class.h" /* report_classes */
#include "client.h" /* Client */
#include "common.h" /* TRUE/FALSE */
-#include "irc_string.h"
+#include "match.h"
#include "ircd.h" /* me */
#include "listener.h" /* show_ports */
#include "msg.h" /* Message */
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);
}
{
if(ServerConfAutoconn(server_p))
*s++ = 'A';
- if(ServerConfSSL(server_p))\r
+ if(ServerConfSSL(server_p))
*s++ = 'S';
if(ServerConfTb(server_p))
*s++ = 'T';
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;
memcpy(&sp, &ServerStats, sizeof(struct ServerStatistics));
- RB_DLINK_FOREACH(ptr, serv_list.head)\r
- {\r
- target_p = ptr->data;\r
-\r
- sp.is_sbs += target_p->localClient->sendB;\r
- sp.is_sbr += target_p->localClient->receiveB;\r
- sp.is_sti += rb_current_time() - target_p->localClient->firsttime;\r
- sp.is_sv++;\r
- }\r
-\r
- RB_DLINK_FOREACH(ptr, lclient_list.head)\r
- {\r
- target_p = ptr->data;\r
-\r
- sp.is_cbs += target_p->localClient->sendB;\r
- sp.is_cbr += target_p->localClient->receiveB;\r
- sp.is_cti += rb_current_time() - target_p->localClient->firsttime;\r
- sp.is_cl++;\r
+ RB_DLINK_FOREACH(ptr, serv_list.head)
+ {
+ target_p = ptr->data;
+
+ sp.is_sbs += target_p->localClient->sendB;
+ sp.is_sbr += target_p->localClient->receiveB;
+ sp.is_sti += rb_current_time() - target_p->localClient->firsttime;
+ sp.is_sv++;
+ }
+
+ RB_DLINK_FOREACH(ptr, lclient_list.head)
+ {
+ target_p = ptr->data;
+
+ sp.is_cbs += target_p->localClient->sendB;
+ sp.is_cbr += target_p->localClient->receiveB;
+ sp.is_cti += rb_current_time() - target_p->localClient->firsttime;
+ sp.is_cl++;
}
RB_DLINK_FOREACH(ptr, unknown_list.head)
sendto_one_numeric(source_p, RPL_STATSDEBUG, "T :Client Server");
sendto_one_numeric(source_p, RPL_STATSDEBUG,
"T :connected %u %u", sp.is_cl, sp.is_sv);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
- "T :bytes sent %lluK %lluK",\r
- sp.is_cbs / 1024, \r
- sp.is_sbs / 1024);\r
- sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
- "T :bytes recv %lluK %lluK",\r
- sp.is_cbr / 1024, \r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,
+ "T :bytes sent %lluK %lluK",
+ sp.is_cbs / 1024,
+ sp.is_sbs / 1024);
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,
+ "T :bytes recv %lluK %lluK",
+ sp.is_cbr / 1024,
sp.is_sbr / 1024);
- sendto_one_numeric(source_p, RPL_STATSDEBUG,\r
- "T :time connected %lu %lu",\r
+ sendto_one_numeric(source_p, RPL_STATSDEBUG,
+ "T :time connected %lu %lu",
(long int)sp.is_cti, (long int)sp.is_sti);
}
{ SHARED_UNRESV, 'R' },
{ SHARED_LOCOPS, 'L' },
{ SHARED_REHASH, 'H' },
+ { SHARED_TDLINE, 'd' },
+ { SHARED_PDLINE, 'D' },
+ { SHARED_UNDLINE, 'E' },
{ 0, '\0'}
};