]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/cmd_stats.cpp
Add $ModDep: special comment, similar to $CompileFlags and $LinkerFlags.
[user/henk/code/inspircd.git] / src / cmd_stats.cpp
index 9335ea09bdec156d73c6680918375c1b1ddf70a7..6d2efd047afa4cb639c564174a0da65092abba93 100644 (file)
 #include "xline.h"
 #include "commands/cmd_stats.h"
 
-void cmd_stats::Handle (const char** parameters, int pcnt, userrec *user)
+
+
+extern "C" command_t* init_command(InspIRCd* Instance)
+{
+       return new cmd_stats(Instance);
+}
+
+CmdResult cmd_stats::Handle (const char** parameters, int pcnt, userrec *user)
 {
-       string_list values;
-       DoStats(this->ServerInstance, *parameters[0], user, values);
-       for (size_t i = 0; i < values.size(); i++)
-               user->Write(":%s", values[i].c_str());
+       if (pcnt < 2)
+       {
+               string_list values;
+               DoStats(this->ServerInstance, *parameters[0], user, values);
+               for (size_t i = 0; i < values.size(); i++)
+                       user->Write(":%s", values[i].c_str());
+       }
+
+       return CMD_SUCCESS;
 }
 
 void DoStats(InspIRCd* ServerInstance, char statschar, userrec* user, string_list &results)
 {
        std::string sn = ServerInstance->Config->ServerName;
 
-       if ((*ServerInstance->Config->OperOnlyStats) && (strchr(ServerInstance->Config->OperOnlyStats,statschar)) && (!*user->oper))
+       if ((*ServerInstance->Config->UserStats) && (!*user->oper) && (!strchr(ServerInstance->Config->UserStats,statschar)))
        {
                results.push_back(sn+std::string(" 481 ")+user->nick+" :Permission denied - STATS "+statschar+" is oper-only");
                return;
@@ -85,7 +97,7 @@ void DoStats(InspIRCd* ServerInstance, char statschar, userrec* user, string_lis
                int idx = 0;
                for (user_hash::iterator i = ServerInstance->clientlist.begin(); i != ServerInstance->clientlist.end(); i++)
                {
-                       if (*i->second->oper)
+                       if ((*i->second->oper) && (!ServerInstance->ULine(i->second->server)))
                        {
                                results.push_back(sn+" 249 "+user->nick+" :"+i->second->nick+" ("+i->second->ident+"@"+i->second->dhost+") Idle: "+ConvToStr(ServerInstance->Time() - i->second->idle_lastmsg));
                                idx++;