Author: Kev <klmitch@mit.edu>
[ircu2.10.12-pk.git] / ircd / s_stats.c
index 87591d9e1e4af738b3058c1a47d80343b91a7aee..38ecc7cda24c65c9355128f19ce0a1d1bd73075c 100644 (file)
  *
  * $Id$
  */
+#include "config.h"
 
 #include "s_stats.h"
 #include "class.h"
 #include "client.h"
 #include "ircd.h"
 #include "ircd_chattr.h"
+#include "ircd_log.h"
 #include "ircd_reply.h"
 #include "ircd_string.h"
 #include "listener.h"
@@ -71,6 +73,7 @@ const char *statsinfo[] = {
     "g - Global bans (G-lines).",
     "k - Local bans (K-Lines).",
     "o - Operator information.", 
+    "f - Feature settings.",
     "m - Message usage information.",
     "t - Local connection statistics (Total SND/RCV, etc).", 
     "w - Userload statistics.",
@@ -133,13 +136,15 @@ void report_configured_links(struct Client *sptr, int mask)
 
 /*
  *  {CONF_TLINES, RPL_STATSTLINE, 'T'},
+ *
+ * see now motd_report() in motd.c
  */
-void report_motd_list(struct Client* to)
-{
-  const struct MotdConf* conf = conf_get_motd_list();
-  for ( ; conf; conf = conf->next)
-    send_reply(to, RPL_STATSTLINE, 'T', conf->hostmask, conf->path);
-}
+/*  void report_motd_list(struct Client* to) */
+/*  { */
+/*    const struct MotdConf* conf = conf_get_motd_list(); */
+/*    for ( ; conf; conf = conf->next) */
+/*      send_reply(to, RPL_STATSTLINE, 'T', conf->hostmask, conf->path); */
+/*  } */
 
 /*
  * {CONF_CRULEALL, RPL_STATSDLINE, 'D'},
@@ -162,7 +167,7 @@ void report_deny_list(struct Client* to)
 {
   const struct DenyConf* p = conf_get_deny_list();
   for ( ; p; p = p->next)
-    send_reply(to, RPL_STATSKLINE, (p->ip_kill) ? 'k' : 'K',
+    send_reply(to, RPL_STATSKLINE, (p->flags & DENY_FLAGS_IP) ? 'k' : 'K',
                p->hostmask, p->message, p->usermask);
 }
 
@@ -170,6 +175,10 @@ void report_deny_list(struct Client* to)
  * hunt_server() possiblites were becoming very messy. It now uses a
  * switch() so as to be easier to read and update as params change. 
  * -Ghostwolf 
+ *
+ * 2.10.11: Don't check for the oper limitation if it's not our local server.
+ *          thusly once all the hubs have upgraded local opers will be able
+ *          to remote stats anywhere on the network.
  */
 int hunt_stats(struct Client* cptr, struct Client* sptr, int parc, char* parv[], char stat)
 {
@@ -178,6 +187,8 @@ int hunt_stats(struct Client* cptr, struct Client* sptr, int parc, char* parv[],
       /* open to all, standard # of params */
     case 'U':
     case 'u':
+    case 'F':
+    case 'f':
       return hunt_server_cmd(sptr, CMD_STATS, cptr, 0, "%s :%C", 2, parc,
                             parv);
 
@@ -201,16 +212,16 @@ int hunt_stats(struct Client* cptr, struct Client* sptr, int parc, char* parv[],
     case 'M':
     {
       if (parc == 4)
-       return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s %C :%s", 2, parc, parv);
+       return hunt_server_cmd(sptr, CMD_STATS, cptr, MyUser(sptr) ? 1 : 0, "%s %C :%s", 2, parc, parv);
       else if (parc > 4)
-       return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s %C %s :%s", 2, parc, parv);
+       return hunt_server_cmd(sptr, CMD_STATS, cptr, MyUser(sptr) ? 1 : 0, "%s %C %s :%s", 2, parc, parv);
       else 
-       return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s :%C", 2, parc, parv);
+       return hunt_server_cmd(sptr, CMD_STATS, cptr, MyUser(sptr) ? 1 : 0, "%s :%C", 2, parc, parv);
     }
 
       /* oper only, standard # of params */
     default:
-      return hunt_server_cmd(sptr, CMD_STATS, cptr, 1, "%s :%C", 2, parc, parv);
+      return hunt_server_cmd(sptr, CMD_STATS, cptr, MyUser(sptr) ? 1 : 0, "%s :%C", 2, parc, parv);
   }
 }