]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_stats.cpp
Fix the OnSendWhoLine event being completely broken with WHOX.
[user/henk/code/inspircd.git] / src / coremods / core_stats.cpp
index 5642cd52ee64be5c13a3e25bbb9532bf5e0a8bfd..6a4427aef8caeef674b34a1acf6e20004693e684 100644 (file)
@@ -36,8 +36,9 @@ class CommandStats : public Command
        void DoStats(Stats::Context& stats);
 
  public:
-       /** Constructor for stats.
-        */
+       /** STATS characters which non-opers can request. */
+       std::string userstats;
+
        CommandStats(Module* Creator)
                : Command(Creator, "STATS", 1, 2)
                , statsevprov(Creator, "event/stats")
@@ -51,8 +52,8 @@ class CommandStats : public Command
         * @param user The user issuing the command
         * @return A value from CmdResult to indicate command success or failure.
         */
-       CmdResult Handle(const std::vector<std::string>& parameters, User* user) CXX11_OVERRIDE;
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters) CXX11_OVERRIDE
+       CmdResult Handle(User* user, const Params& parameters) CXX11_OVERRIDE;
+       RouteDescriptor GetRouting(User* user, const Params& parameters) CXX11_OVERRIDE
        {
                if ((parameters.size() > 1) && (parameters[1].find('.') != std::string::npos))
                        return ROUTE_UNICAST(parameters[1]);
@@ -77,7 +78,7 @@ void CommandStats::DoStats(Stats::Context& stats)
        User* const user = stats.GetSource();
        const char statschar = stats.GetSymbol();
 
-       bool isPublic = ServerInstance->Config->UserStats.find(statschar) != std::string::npos;
+       bool isPublic = userstats.find(statschar) != std::string::npos;
        bool isRemoteOper = IS_REMOTE(user) && (user->IsOper());
        bool isLocalOperWithPrivs = IS_LOCAL(user) && user->HasPrivPermission("servers/auspex");
 
@@ -375,7 +376,7 @@ void CommandStats::DoStats(Stats::Context& stats)
        return;
 }
 
-CmdResult CommandStats::Handle (const std::vector<std::string>& parameters, User *user)
+CmdResult CommandStats::Handle(User* user, const Params& parameters)
 {
        if (parameters.size() > 1 && parameters[1] != ServerInstance->Config->ServerName)
        {
@@ -397,4 +398,27 @@ CmdResult CommandStats::Handle (const std::vector<std::string>& parameters, User
        return CMD_SUCCESS;
 }
 
-COMMAND_INIT(CommandStats)
+class CoreModStats : public Module
+{
+ private:
+       CommandStats cmd;
+
+ public:
+       CoreModStats()
+               : cmd(this)
+       {
+       }
+
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
+       {
+               ConfigTag* security = ServerInstance->Config->ConfValue("security");
+               cmd.userstats = security->getString("userstats");
+       }
+
+       Version GetVersion() CXX11_OVERRIDE
+       {
+               return Version("Provides the STATS command", VF_CORE | VF_VENDOR);
+       }
+};
+
+MODULE_INIT(CoreModStats)