summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorattilamolnar <attilamolnar@hush.com>2013-05-26 22:40:45 +0200
committerattilamolnar <attilamolnar@hush.com>2013-06-01 23:41:42 +0200
commitd16a4554002e915f4512dc8b72e4a49073931e63 (patch)
treeea6c893523fe885f053f6b45185be56611088d9f /src/modules
parentca838821e7c53da0ddaee35d9a401e3a5eaf8c8c (diff)
Watch mode names with ModeWatchers instead of mode letters
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_banredirect.cpp6
-rw-r--r--src/modules/m_operprefix.cpp42
-rw-r--r--src/modules/m_timedbans.cpp2
3 files changed, 18 insertions, 32 deletions
diff --git a/src/modules/m_banredirect.cpp b/src/modules/m_banredirect.cpp
index 8e4c5c6e5..c79023ccf 100644
--- a/src/modules/m_banredirect.cpp
+++ b/src/modules/m_banredirect.cpp
@@ -50,7 +50,7 @@ class BanRedirect : public ModeWatcher
public:
SimpleExtItem<BanRedirectList> extItem;
BanRedirect(Module* parent)
- : ModeWatcher(parent, 'b', MODETYPE_CHANNEL)
+ : ModeWatcher(parent, "ban", MODETYPE_CHANNEL)
, ban(parent, "ban")
, extItem("banredirect", parent)
{
@@ -228,9 +228,7 @@ class ModuleBanRedirect : public Module
void init() CXX11_OVERRIDE
{
- if(!ServerInstance->Modes->AddModeWatcher(&re))
- throw ModuleException("Could not add mode watcher");
-
+ ServerInstance->Modes->AddModeWatcher(&re);
ServerInstance->Modules->AddService(re.extItem);
Implementation list[] = { I_OnUserPreJoin };
ServerInstance->Modules->Attach(list, this, sizeof(list)/sizeof(Implementation));
diff --git a/src/modules/m_operprefix.cpp b/src/modules/m_operprefix.cpp
index b0737cb9a..fbb7e8b50 100644
--- a/src/modules/m_operprefix.cpp
+++ b/src/modules/m_operprefix.cpp
@@ -64,19 +64,20 @@ class ModuleOperPrefixMode;
class HideOperWatcher : public ModeWatcher
{
ModuleOperPrefixMode* parentmod;
+
public:
- HideOperWatcher(ModuleOperPrefixMode* parent) : ModeWatcher((Module*) parent, 'H', MODETYPE_USER), parentmod(parent) {}
+ HideOperWatcher(ModuleOperPrefixMode* parent);
void AfterMode(User* source, User* dest, Channel* channel, const std::string &parameter, bool adding);
};
class ModuleOperPrefixMode : public Module
{
OperPrefixMode opm;
- bool mw_added;
HideOperWatcher hideoperwatcher;
+
public:
ModuleOperPrefixMode()
- : opm(this), mw_added(false), hideoperwatcher(this)
+ : opm(this), hideoperwatcher(this)
{
}
@@ -84,7 +85,7 @@ class ModuleOperPrefixMode : public Module
{
ServerInstance->Modules->AddService(opm);
- Implementation eventlist[] = { I_OnUserPreJoin, I_OnPostOper, I_OnLoadModule, I_OnUnloadModule };
+ Implementation eventlist[] = { I_OnUserPreJoin, I_OnPostOper };
ServerInstance->Modules->Attach(eventlist, this, sizeof(eventlist)/sizeof(Implementation));
/* To give clients a chance to learn about the new prefix we don't give +y to opers
@@ -92,19 +93,12 @@ class ModuleOperPrefixMode : public Module
* they need to rejoin them in order to get the oper prefix.
*/
- if (ServerInstance->Modules->Find("m_hideoper.so"))
- mw_added = ServerInstance->Modes->AddModeWatcher(&hideoperwatcher);
+ ServerInstance->Modes->AddModeWatcher(&hideoperwatcher);
}
ModResult OnUserPreJoin(LocalUser* user, Channel* chan, const std::string& cname, std::string& privs, const std::string& keygiven) CXX11_OVERRIDE
{
- /* The user may have the +H umode on himself, but +H does not necessarily correspond
- * to the +H of m_hideoper.
- * However we only add the modewatcher when m_hideoper is loaded, so these
- * conditions (mw_added and the user being +H) together mean the user is a hidden oper.
- */
-
- if (user->IsOper() && (!mw_added || !user->IsModeSet('H')))
+ if ((user->IsOper()) && (user->IsModeSet('H')))
privs.push_back('y');
return MOD_RES_PASSTHRU;
}
@@ -124,26 +118,14 @@ class ModuleOperPrefixMode : public Module
void OnPostOper(User* user, const std::string& opername, const std::string& opertype) CXX11_OVERRIDE
{
- if (IS_LOCAL(user) && (!mw_added || !user->IsModeSet('H')))
+ if (IS_LOCAL(user) && (!user->IsModeSet('H')))
SetOperPrefix(user, true);
}
- void OnLoadModule(Module* mod) CXX11_OVERRIDE
- {
- if ((!mw_added) && (mod->ModuleSourceFile == "m_hideoper.so"))
- mw_added = ServerInstance->Modes->AddModeWatcher(&hideoperwatcher);
- }
-
- void OnUnloadModule(Module* mod) CXX11_OVERRIDE
- {
- if ((mw_added) && (mod->ModuleSourceFile == "m_hideoper.so") && (ServerInstance->Modes->DelModeWatcher(&hideoperwatcher)))
- mw_added = false;
- }
~ModuleOperPrefixMode()
{
- if (mw_added)
- ServerInstance->Modes->DelModeWatcher(&hideoperwatcher);
+ ServerInstance->Modes->DelModeWatcher(&hideoperwatcher);
}
Version GetVersion() CXX11_OVERRIDE
@@ -159,6 +141,12 @@ class ModuleOperPrefixMode : public Module
}
};
+HideOperWatcher::HideOperWatcher(ModuleOperPrefixMode* parent)
+ : ModeWatcher(parent, "hideoper", MODETYPE_USER)
+ , parentmod(parent)
+{
+}
+
void HideOperWatcher::AfterMode(User* source, User* dest, Channel* channel, const std::string& parameter, bool adding)
{
if (IS_LOCAL(dest))
diff --git a/src/modules/m_timedbans.cpp b/src/modules/m_timedbans.cpp
index 90b8fccdd..a76d89c82 100644
--- a/src/modules/m_timedbans.cpp
+++ b/src/modules/m_timedbans.cpp
@@ -115,7 +115,7 @@ class BanWatcher : public ModeWatcher
{
public:
BanWatcher(Module* parent)
- : ModeWatcher(parent, 'b', MODETYPE_CHANNEL)
+ : ModeWatcher(parent, "ban", MODETYPE_CHANNEL)
{
}