summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-02-20 09:15:55 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2010-02-20 09:15:55 +0000
commit4d46f5f9ef94c295649afad38c6d496ae2bbe5e1 (patch)
tree683f3ac9a96238c40aeb04b9eaf37ee367d6f1bf /src/modules
parenta5263a8adad14fa05bdc6f55d7d3fd84dd108903 (diff)
Restore <options:exemptchanops> with long names
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@12502 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_blockcaps.cpp3
-rw-r--r--src/modules/m_blockcolor.cpp3
-rw-r--r--src/modules/m_censor.cpp3
-rw-r--r--src/modules/m_chanfilter.cpp3
-rw-r--r--src/modules/m_exemptchanops.cpp95
-rw-r--r--src/modules/m_messageflood.cpp3
-rw-r--r--src/modules/m_nickflood.cpp4
-rw-r--r--src/modules/m_noctcp.cpp3
-rw-r--r--src/modules/m_nonicks.cpp3
-rw-r--r--src/modules/m_nonotice.cpp2
-rw-r--r--src/modules/m_services_account.cpp3
-rw-r--r--src/modules/m_stripcolor.cpp3
-rw-r--r--src/modules/m_testnet.cpp1
13 files changed, 61 insertions, 68 deletions
diff --git a/src/modules/m_blockcaps.cpp b/src/modules/m_blockcaps.cpp
index ade42cb4b..873cf46ca 100644
--- a/src/modules/m_blockcaps.cpp
+++ b/src/modules/m_blockcaps.cpp
@@ -59,8 +59,7 @@ public:
return MOD_RES_PASSTHRU;
Channel* c = (Channel*)dest;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,c,"blockcaps"));
+ ModResult res = ServerInstance->OnCheckExemption(user,c,"blockcaps");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_blockcolor.cpp b/src/modules/m_blockcolor.cpp
index 9ffb36b80..d19317074 100644
--- a/src/modules/m_blockcolor.cpp
+++ b/src/modules/m_blockcolor.cpp
@@ -47,8 +47,7 @@ class ModuleBlockColour : public Module
if ((target_type == TYPE_CHANNEL) && (IS_LOCAL(user)))
{
Channel* c = (Channel*)dest;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,c,"blockcolor"));
+ ModResult res = ServerInstance->OnCheckExemption(user,c,"blockcolor");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_censor.cpp b/src/modules/m_censor.cpp
index 6a9f6941f..bf1f0225d 100644
--- a/src/modules/m_censor.cpp
+++ b/src/modules/m_censor.cpp
@@ -76,8 +76,7 @@ class ModuleCensor : public Module
{
active = ((Channel*)dest)->IsModeSet('G');
Channel* c = (Channel*)dest;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,c,"censor"));
+ ModResult res = ServerInstance->OnCheckExemption(user,c,"censor");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_chanfilter.cpp b/src/modules/m_chanfilter.cpp
index e790a15d8..faa064dbf 100644
--- a/src/modules/m_chanfilter.cpp
+++ b/src/modules/m_chanfilter.cpp
@@ -83,8 +83,7 @@ class ModuleChanFilter : public Module
virtual ModResult ProcessMessages(User* user,Channel* chan,std::string &text)
{
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,chan,"filter"));
+ ModResult res = ServerInstance->OnCheckExemption(user,chan,"filter");
if (!IS_LOCAL(user) || res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_exemptchanops.cpp b/src/modules/m_exemptchanops.cpp
index 2677e66df..e92350eeb 100644
--- a/src/modules/m_exemptchanops.cpp
+++ b/src/modules/m_exemptchanops.cpp
@@ -52,42 +52,12 @@ class ExemptChanOps : public ListModeBase
}
};
-class ModuleExemptChanOps : public Module
+class ExemptHandler : public HandlerBase3<ModResult, User*, Channel*, const std::string&>
{
- ExemptChanOps ec;
- std::string defaults;
-
public:
-
- ModuleExemptChanOps() : ec(this)
- {
- }
-
- void init()
- {
- ServerInstance->Modules->AddService(ec);
- Implementation eventlist[] = { I_OnChannelDelete, I_OnChannelRestrictionApply, I_OnRehash, I_OnSyncChannel };
- ServerInstance->Modules->Attach(eventlist, this, 4);
-
- OnRehash(NULL);
- }
-
- Version GetVersion()
- {
- return Version("Provides the ability to allow channel operators to be exempt from certain modes.",VF_VENDOR);
- }
-
- void OnRehash(User* user)
- {
- defaults = ServerInstance->Config->ConfValue("exemptchanops")->getString("defaults");
- ec.DoRehash();
- }
-
- void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
- {
- ec.DoSyncChannel(chan, proto, opaque);
- }
-
+ ExemptChanOps ec;
+ ExemptHandler(Module* me) : ec(me) {}
+
ModeHandler* FindMode(const std::string& mid)
{
if (mid.length() == 1)
@@ -101,21 +71,11 @@ class ModuleExemptChanOps : public Module
return NULL;
}
- ModResult OnChannelRestrictionApply(User* user, Channel* chan, const char* restriction)
+ ModResult Call(User* user, Channel* chan, const std::string& restriction)
{
unsigned int mypfx = chan->GetPrefixValue(user);
- irc::spacesepstream defaultstream(defaults);
std::string minmode;
- std::string current;
- while (defaultstream.GetToken(current))
- {
- std::string::size_type pos = current.find(':');
- if (pos == std::string::npos)
- continue;
- if (current.substr(0,pos) == restriction)
- minmode = current[pos+1];
- }
modelist* list = ec.extItem.get(chan);
if (list)
@@ -135,7 +95,50 @@ class ModuleExemptChanOps : public Module
return MOD_RES_ALLOW;
if (mh || minmode == "*")
return MOD_RES_DENY;
- return MOD_RES_PASSTHRU;
+
+ return ServerInstance->HandleOnCheckExemption.Call(user, chan, restriction);
+ }
+};
+
+class ModuleExemptChanOps : public Module
+{
+ std::string defaults;
+ ExemptHandler eh;
+
+ public:
+
+ ModuleExemptChanOps() : eh(this)
+ {
+ }
+
+ void init()
+ {
+ ServerInstance->Modules->AddService(eh.ec);
+ Implementation eventlist[] = { I_OnRehash, I_OnSyncChannel };
+ ServerInstance->Modules->Attach(eventlist, this, 2);
+ ServerInstance->OnCheckExemption = &eh;
+
+ OnRehash(NULL);
+ }
+
+ ~ModuleExemptChanOps()
+ {
+ ServerInstance->OnCheckExemption = &ServerInstance->HandleOnCheckExemption;
+ }
+
+ Version GetVersion()
+ {
+ return Version("Provides the ability to allow channel operators to be exempt from certain modes.",VF_VENDOR);
+ }
+
+ void OnRehash(User* user)
+ {
+ eh.ec.DoRehash();
+ }
+
+ void OnSyncChannel(Channel* chan, Module* proto, void* opaque)
+ {
+ eh.ec.DoSyncChannel(chan, proto, opaque);
}
};
diff --git a/src/modules/m_messageflood.cpp b/src/modules/m_messageflood.cpp
index c37537249..ccaf0a402 100644
--- a/src/modules/m_messageflood.cpp
+++ b/src/modules/m_messageflood.cpp
@@ -196,8 +196,7 @@ class ModuleMsgFlood : public Module
ModResult ProcessMessages(User* user,Channel* dest, const std::string &text)
{
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,dest,"flood"));
+ ModResult res = ServerInstance->OnCheckExemption(user,dest,"flood");
if (!IS_LOCAL(user) || res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_nickflood.cpp b/src/modules/m_nickflood.cpp
index 47c8bc836..708d30e6b 100644
--- a/src/modules/m_nickflood.cpp
+++ b/src/modules/m_nickflood.cpp
@@ -209,7 +209,7 @@ class ModuleNickFlood : public Module
nickfloodsettings *f = nf.ext.get(channel);
if (f)
{
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,channel,"nickflood"));
+ res = ServerInstance->OnCheckExemption(user,channel,"nickflood");
if (res == MOD_RES_ALLOW)
continue;
@@ -248,7 +248,7 @@ class ModuleNickFlood : public Module
nickfloodsettings *f = nf.ext.get(channel);
if (f)
{
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,channel,"nickflood"));
+ res = ServerInstance->OnCheckExemption(user,channel,"nickflood");
if (res == MOD_RES_ALLOW)
return;
diff --git a/src/modules/m_noctcp.cpp b/src/modules/m_noctcp.cpp
index 19f97b42c..680392ea9 100644
--- a/src/modules/m_noctcp.cpp
+++ b/src/modules/m_noctcp.cpp
@@ -78,8 +78,7 @@ class ModuleNoCTCP : public Module
if ((target_type == TYPE_CHANNEL) && (IS_LOCAL(user)))
{
Channel* c = (Channel*)dest;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,c,"noctcp"));
+ ModResult res = ServerInstance->OnCheckExemption(user,c,"noctcp");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_nonicks.cpp b/src/modules/m_nonicks.cpp
index 8713ffe96..7a6d3ffd0 100644
--- a/src/modules/m_nonicks.cpp
+++ b/src/modules/m_nonicks.cpp
@@ -84,8 +84,7 @@ class ModuleNoNickChange : public Module
{
Channel* curr = *i;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,curr,"nonick"));
+ ModResult res = ServerInstance->OnCheckExemption(user,curr,"nonick");
if (res == MOD_RES_ALLOW)
continue;
diff --git a/src/modules/m_nonotice.cpp b/src/modules/m_nonotice.cpp
index fe1e0a46d..b3f3d8da6 100644
--- a/src/modules/m_nonotice.cpp
+++ b/src/modules/m_nonotice.cpp
@@ -53,7 +53,7 @@ class ModuleNoNotice : public Module
// ulines are exempt.
return MOD_RES_PASSTHRU;
}
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,c,"nonotice"));
+ res = ServerInstance->OnCheckExemption(user,c,"nonotice");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
else
diff --git a/src/modules/m_services_account.cpp b/src/modules/m_services_account.cpp
index 4b047ea07..61026c08f 100644
--- a/src/modules/m_services_account.cpp
+++ b/src/modules/m_services_account.cpp
@@ -175,8 +175,7 @@ class ModuleServicesAccount : public Module
if (target_type == TYPE_CHANNEL)
{
Channel* c = (Channel*)dest;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,c,"regmoderated"));
+ ModResult res = ServerInstance->OnCheckExemption(user,c,"regmoderated");
if (c->IsModeSet('M') && !is_registered && res != MOD_RES_ALLOW)
{
diff --git a/src/modules/m_stripcolor.cpp b/src/modules/m_stripcolor.cpp
index 113c931cb..c2246a0d9 100644
--- a/src/modules/m_stripcolor.cpp
+++ b/src/modules/m_stripcolor.cpp
@@ -114,8 +114,7 @@ class ModuleStripColor : public Module
else if (target_type == TYPE_CHANNEL)
{
Channel* t = (Channel*)dest;
- ModResult res;
- FIRST_MOD_RESULT(OnChannelRestrictionApply, res, (user,t,"stripcolor"));
+ ModResult res = ServerInstance->OnCheckExemption(user,t,"stripcolor");
if (res == MOD_RES_ALLOW)
return MOD_RES_PASSTHRU;
diff --git a/src/modules/m_testnet.cpp b/src/modules/m_testnet.cpp
index faa0c7b2e..2f514cf0b 100644
--- a/src/modules/m_testnet.cpp
+++ b/src/modules/m_testnet.cpp
@@ -169,7 +169,6 @@ static void checkall(Module* noimpl)
CHK(OnModuleRehash);
CHK(OnSendWhoLine);
CHK(OnChangeIdent);
- CHK(OnChannelRestrictionApply);
}
class CommandTest : public Command