X-Git-Url: https://jfr.im/git/irc/rqf/shadowircd.git/blobdiff_plain/83251205659e33e5a21fc504db0e8495fabeed28..c4633508eeb42a635e9a1228a7e9420b833f3453:/modules/m_stats.c diff --git a/modules/m_stats.c b/modules/m_stats.c index 65f1335..5927c1d 100644 --- a/modules/m_stats.c +++ b/modules/m_stats.c @@ -31,7 +31,6 @@ #include "irc_string.h" #include "ircd.h" /* me */ #include "listener.h" /* show_ports */ -#include "s_gline.h" #include "msg.h" /* Message */ #include "hostmask.h" /* report_mtrie_conf_links */ #include "numeric.h" /* ERR_xxx */ @@ -95,8 +94,6 @@ static void stats_tdeny(struct Client *); static void stats_deny(struct Client *); static void stats_exempt(struct Client *); static void stats_events(struct Client *); -static void stats_glines(struct Client *); -static void stats_pending_glines(struct Client *); static void stats_hubleaf(struct Client *); static void stats_auth(struct Client *); static void stats_tklines(struct Client *); @@ -139,8 +136,6 @@ static struct StatsStruct stats_cmd_table[] = { {'E', stats_events, 1, 1, }, {'f', stats_comm, 1, 1, }, {'F', stats_comm, 1, 1, }, - {'g', stats_pending_glines, 1, 0, }, - {'G', stats_glines, 1, 0, }, {'h', stats_hubleaf, 0, 0, }, {'H', stats_hubleaf, 0, 0, }, {'i', stats_auth, 0, 0, }, @@ -308,6 +303,8 @@ stats_connect(struct Client *source_p) { if(ServerConfAutoconn(server_p)) *s++ = 'A'; + if(ServerConfSSL(server_p)) + *s++ = 'S'; if(ServerConfTb(server_p)) *s++ = 'T'; if(ServerConfCompressed(server_p)) @@ -457,89 +454,6 @@ stats_events (struct Client *source_p) rb_dump_events(stats_events_cb, source_p); } -/* stats_pending_glines() - * - * input - client pointer - * output - none - * side effects - client is shown list of pending glines - */ -static void -stats_pending_glines (struct Client *source_p) -{ - if(ConfigFileEntry.glines) - { - rb_dlink_node *pending_node; - struct gline_pending *glp_ptr; - char timebuffer[MAX_DATE_STRING]; - struct tm *tmptr; - - RB_DLINK_FOREACH (pending_node, pending_glines.head) - { - glp_ptr = pending_node->data; - - tmptr = localtime (&glp_ptr->time_request1); - strftime (timebuffer, MAX_DATE_STRING, "%Y/%m/%d %H:%M:%S", tmptr); - - sendto_one_notice(source_p, - ":1) %s!%s@%s on %s requested gline at %s for %s@%s [%s]", - glp_ptr->oper_nick1, - glp_ptr->oper_user1, glp_ptr->oper_host1, - glp_ptr->oper_server1, timebuffer, - glp_ptr->user, glp_ptr->host, glp_ptr->reason1); - - if(glp_ptr->oper_nick2[0]) - { - tmptr = localtime (&glp_ptr->time_request2); - strftime (timebuffer, MAX_DATE_STRING, "%Y/%m/%d %H:%M:%S", tmptr); - sendto_one_notice(source_p, - ":2) %s!%s@%s on %s requested gline at %s for %s@%s [%s]", - glp_ptr->oper_nick2, - glp_ptr->oper_user2, glp_ptr->oper_host2, - glp_ptr->oper_server2, timebuffer, - glp_ptr->user, glp_ptr->host, glp_ptr->reason2); - } - } - - if(rb_dlink_list_length (&pending_glines) > 0) - sendto_one_notice(source_p, ":End of Pending G-lines"); - } - else - sendto_one_notice(source_p, ":This server does not support G-Lines"); - -} - -/* stats_glines() - * - * input - client pointer - * output - none - * side effects - client is shown list of glines - */ -static void -stats_glines (struct Client *source_p) -{ - if(ConfigFileEntry.glines) - { - rb_dlink_node *gline_node; - struct ConfItem *kill_ptr; - - RB_DLINK_FOREACH_PREV (gline_node, glines.tail) - { - kill_ptr = gline_node->data; - - sendto_one_numeric(source_p, RPL_STATSKLINE, - form_str(RPL_STATSKLINE), 'G', - kill_ptr->host ? kill_ptr->host : "*", - kill_ptr->user ? kill_ptr->user : "*", - kill_ptr->passwd ? kill_ptr->passwd : "No Reason", - kill_ptr->spasswd ? "|" : "", - kill_ptr->spasswd ? kill_ptr->spasswd : ""); - } - } - else - sendto_one_notice(source_p, ":This server does not support G-Lines"); -} - - static void stats_hubleaf(struct Client *source_p) { @@ -934,49 +848,24 @@ stats_tstats (struct Client *source_p) memcpy(&sp, &ServerStats, sizeof(struct ServerStatistics)); - 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_sks += target_p->localClient->sendK; - sp.is_skr += target_p->localClient->receiveK; - sp.is_sti += rb_current_time() - target_p->localClient->firsttime; - sp.is_sv++; - if(sp.is_sbs > 1023) - { - sp.is_sks += (sp.is_sbs >> 10); - sp.is_sbs &= 0x3ff; - } - if(sp.is_sbr > 1023) - { - sp.is_skr += (sp.is_sbr >> 10); - sp.is_sbr &= 0x3ff; - } - } - - 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_cks += target_p->localClient->sendK; - sp.is_ckr += target_p->localClient->receiveK; - sp.is_cti += rb_current_time() - target_p->localClient->firsttime; - sp.is_cl++; - if(sp.is_cbs > 1023) - { - sp.is_cks += (sp.is_cbs >> 10); - sp.is_cbs &= 0x3ff; - } - if(sp.is_cbr > 1023) - { - sp.is_ckr += (sp.is_cbr >> 10); - sp.is_cbr &= 0x3ff; - } - + 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) @@ -1015,17 +904,17 @@ stats_tstats (struct Client *source_p) 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, - "T :bytes sent %d.%uK %d.%uK", - (int) sp.is_cks, sp.is_cbs, - (int) sp.is_sks, sp.is_sbs); - sendto_one_numeric(source_p, RPL_STATSDEBUG, - "T :bytes recv %d.%uK %d.%uK", - (int) sp.is_ckr, sp.is_cbr, - (int) sp.is_skr, sp.is_sbr); - sendto_one_numeric(source_p, RPL_STATSDEBUG, - "T :time connected %d %d", - (int) sp.is_cti, (int) sp.is_sti); + 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, + "T :time connected %lu %lu", + (long int)sp.is_cti, (long int)sp.is_sti); } static void @@ -1445,31 +1334,25 @@ stats_ziplinks (struct Client *source_p) { rb_dlink_node *ptr; struct Client *target_p; + struct ZipStats *zipstats; int sent_data = 0; char buf[128], buf1[128]; - RB_DLINK_FOREACH (ptr, serv_list.head) { target_p = ptr->data; if(IsCapable (target_p, CAP_ZIP)) { - /* we use memcpy(3) and a local copy of the structure to - * work around a register use bug on GCC on the SPARC. - * -jmallett, 04/27/2002 - */ - struct ZipStats zipstats; - memcpy (&zipstats, &target_p->localClient->zipstats, - sizeof (struct ZipStats)); - snprintf(buf, sizeof buf, "%.2f%%", zipstats.out_ratio); - snprintf(buf1, sizeof buf1, "%.2f%%", zipstats.in_ratio); - + zipstats = target_p->localClient->zipstats; + sprintf(buf, "%.2f%%", zipstats->out_ratio); + sprintf(buf1, "%.2f%%", zipstats->in_ratio); sendto_one_numeric(source_p, RPL_STATSDEBUG, "Z :ZipLinks stats for %s send[%s compression " - "(%lu kB data/%lu kB wire)] recv[%s compression " - "(%lu kB data/%lu kB wire)]", + "(%llu kB data/%llu kB wire)] recv[%s compression " + "(%llu kB data/%llu kB wire)]", target_p->name, - buf, zipstats.outK, zipstats.outK_wire, - buf1, zipstats.inK, zipstats.inK_wire); + buf, zipstats->out >> 10, + zipstats->out_wire >> 10, buf1, + zipstats->in >> 10, zipstats->in_wire >> 10); sent_data++; } }