#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);
- return ServerInstance->PassCompare(user, correctpass, inputpass, hash);
- }
-}
-
class CoreModOper : public Module
{
+ std::string powerhash;
+
CommandDie cmddie;
CommandKill cmdkill;
CommandOper cmdoper;
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);
}
};