]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_password_hash.cpp
Flexible SendQ
[user/henk/code/inspircd.git] / src / modules / m_password_hash.cpp
index 761f52bc40d09df5722197b07869b717ad8448b6..12769acd4d07eb28a49496fa590db166df68f7a3 100644 (file)
@@ -26,10 +26,10 @@ class CommandMkpasswd : public Command
        hashymodules &hashers;
        std::deque<std::string> &names;
  public:
-       CommandMkpasswd (InspIRCd* Instance, Module* Creator, hashymodules &h, std::deque<std::string> &n)
-               : Command(Instance, Creator, "MKPASSWD", 0, 2), hashers(h), names(n)
+       CommandMkpasswd(Module* Creator, hashymodules &h, std::deque<std::string> &n) : Command(Creator, "MKPASSWD", 2), hashers(h), names(n)
        {
                syntax = "<hashtype> <any-text>";
+               Penalty = 5;
        }
 
        void MakeHash(User* user, const char* algo, const char* stuff)
@@ -58,11 +58,8 @@ class CommandMkpasswd : public Command
        CmdResult Handle (const std::vector<std::string>& parameters, User *user)
        {
                MakeHash(user, parameters[0].c_str(), parameters[1].c_str());
-               // this hashing could take some time, increasing server load.
-               // Slow down the user if they are trying to flood mkpasswd requests
-               user->IncreasePenalty(5);
 
-               return CMD_LOCALONLY;
+               return CMD_SUCCESS;
        }
 };
 
@@ -76,8 +73,8 @@ class ModuleOperHash : public Module
        bool diduseiface; /* If we've called UseInterface yet. */
  public:
 
-       ModuleOperHash(InspIRCd* Me)
-               : Module(Me), cmd(Me, this, hashers, names)
+       ModuleOperHash()
+               : cmd(this, hashers, names)
        {
                diduseiface = false;
 
@@ -134,7 +131,7 @@ class ModuleOperHash : public Module
                }
        }
 
-       virtual int OnPassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
+       virtual ModResult OnPassCompare(Extensible* ex, const std::string &data, const std::string &input, const std::string &hashtype)
        {
                /* First, lets see what hash theyre using on this oper */
                hashymodules::iterator x = hashers.find(hashtype.c_str());
@@ -146,18 +143,19 @@ class ModuleOperHash : public Module
                        HashResetRequest(this, x->second).Send();
                        /* Compare the hash in the config to the generated hash */
                        if (!strcasecmp(data.c_str(), HashSumRequest(this, x->second, input.c_str()).Send()))
-                               return 1;
+                               return MOD_RES_ALLOW;
                        /* No match, and must be hashed, forbid */
-                       else return -1;
+                       else
+                               return MOD_RES_DENY;
                }
 
                /* Not a hash, fall through to strcmp in core */
-               return 0;
+               return MOD_RES_PASSTHRU;
        }
 
        virtual Version GetVersion()
        {
-               return Version("$Id$",VF_VENDOR,API_VERSION);
+               return Version("Allows for hashed oper passwords",VF_VENDOR,API_VERSION);
        }
 };