diff options
author | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2010-02-20 09:15:55 +0000 |
---|---|---|
committer | danieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7> | 2010-02-20 09:15:55 +0000 |
commit | 4d46f5f9ef94c295649afad38c6d496ae2bbe5e1 (patch) | |
tree | 683f3ac9a96238c40aeb04b9eaf37ee367d6f1bf /src/modules | |
parent | a5263a8adad14fa05bdc6f55d7d3fd84dd108903 (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.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_blockcolor.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_censor.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_chanfilter.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_exemptchanops.cpp | 95 | ||||
-rw-r--r-- | src/modules/m_messageflood.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_nickflood.cpp | 4 | ||||
-rw-r--r-- | src/modules/m_noctcp.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_nonicks.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_nonotice.cpp | 2 | ||||
-rw-r--r-- | src/modules/m_services_account.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_stripcolor.cpp | 3 | ||||
-rw-r--r-- | src/modules/m_testnet.cpp | 1 |
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 |