]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/coremods/core_oper/core_oper.cpp
Fix an unintentionally inverted condition in core_oper.
[user/henk/code/inspircd.git] / src / coremods / core_oper / core_oper.cpp
index a6b2abd81194a8f6722481aca6b3c5bc0d166b9f..eaa1a044ba77bd4613ef71fc1a2ea7847a34f83b 100644 (file)
 #include "inspircd.h"
 #include "core_oper.h"
 
-namespace DieRestart
-{
-       bool CheckPass(User* user, const std::string& inputpass, const char* confentry)
-       {
-               ConfigTag* tag = ServerInstance->Config->ConfValue("power");
-               // The hash method for *BOTH* the die and restart passwords
-               const std::string hash = tag->getString("hash");
-               const std::string correctpass = tag->getString(confentry,  ServerInstance->Config->ServerName);
-               return ServerInstance->PassCompare(user, correctpass, inputpass, hash);
-       }
-}
-
 class CoreModOper : public Module
 {
+       std::string powerhash;
+
        CommandDie cmddie;
        CommandKill cmdkill;
        CommandOper cmdoper;
@@ -42,13 +32,47 @@ class CoreModOper : public Module
 
  public:
        CoreModOper()
-               : cmddie(this), cmdkill(this), cmdoper(this), cmdrehash(this), cmdrestart(this)
+               : cmddie(this, powerhash)
+               , cmdkill(this)
+               , cmdoper(this)
+               , cmdrehash(this)
+               , cmdrestart(this, powerhash)
+       {
+       }
+
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
+               ConfigTag* tag = ServerInstance->Config->ConfValue("power");
+
+               // The hash method for *BOTH* the die and restart passwords
+               powerhash = tag->getString("hash");
+
+               cmddie.password = tag->getString("diepass", ServerInstance->Config->ServerName, 1);
+               cmdrestart.password = tag->getString("restartpass", ServerInstance->Config->ServerName, 1);
+
+               ConfigTag* security = ServerInstance->Config->ConfValue("security");
+               cmdkill.hidenick = security->getString("hidekills");
+               cmdkill.hideuline = security->getBool("hideulinekills");
+       }
+
+       void OnPostOper(User* user, const std::string&, const std::string&) CXX11_OVERRIDE
+       {
+               LocalUser* luser = IS_LOCAL(user);
+               if (!luser)
+                       return;
+
+               const std::string vhost = luser->oper->getConfig("vhost");
+               if (!vhost.empty())
+                       luser->ChangeDisplayedHost(vhost);
+
+               const std::string klass = luser->oper->getConfig("class");
+               if (!klass.empty())
+                       luser->SetClass(klass);
        }
 
        Version GetVersion() CXX11_OVERRIDE
        {
-               return Version("Provides the DIE, KILL, OPER, REHASH, and RESTART commands", VF_VENDOR|VF_CORE);
+               return Version("Provides the DIE, KILL, OPER, REHASH, and RESTART commands", VF_VENDOR | VF_CORE);
        }
 };