]> jfr.im git - irc/rqf/shadowircd.git/blobdiff - modules/m_stats.c
Remote d:lines implementation (based on ircd-seven's r230 by spb, Stephen Bennett...
[irc/rqf/shadowircd.git] / modules / m_stats.c
index 33ddcd0f809f2f261431fc71568cfb76251e9711..45b9b38462e064ece8cdfca9efd7750dd261ae0a 100644 (file)
 #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 "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,7 +303,7 @@ stats_connect(struct Client *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';
@@ -459,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)
 {
@@ -936,24 +848,24 @@ stats_tstats (struct Client *source_p)
 
        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)
@@ -992,16 +904,16 @@ 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,\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);
 }
 
@@ -1039,6 +951,9 @@ static struct shared_flags shared_flagtable[] =
        { SHARED_UNRESV,        'R' },
        { SHARED_LOCOPS,        'L' },
        { SHARED_REHASH,        'H' },
+       { SHARED_TDLINE,    'd' },
+       { SHARED_PDLINE,    'D' },
+       { SHARED_UNDLINE,   'E' },
        { 0,                    '\0'}
 };