aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules/m_servprotect.cpp
diff options
context:
space:
mode:
authorGravatar Daniel De Graaf2010-03-02 12:04:53 -0600
committerGravatar Daniel De Graaf2010-08-03 17:32:39 -0400
commit89f72a4d63c6868ac3c191197f37e08341b8bc16 (patch)
tree619fc74cfc57928de1bd0a9b08a8ad65903a8e7b /src/modules/m_servprotect.cpp
parentUnset umode +x when a different vhost is set on a user (diff)
Create OnChannelPermissionCheck hook
Diffstat (limited to 'src/modules/m_servprotect.cpp')
-rw-r--r--src/modules/m_servprotect.cpp17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/modules/m_servprotect.cpp b/src/modules/m_servprotect.cpp
index a20f635b7..db1b3b08e 100644
--- a/src/modules/m_servprotect.cpp
+++ b/src/modules/m_servprotect.cpp
@@ -44,7 +44,7 @@ class ModuleServProtectMode : public Module
: bm(this)
{
ServerInstance->Modules->AddService(bm);
- Implementation eventlist[] = { I_OnWhois, I_OnKill, I_OnWhoisLine, I_OnRawMode, I_OnUserPreKick };
+ Implementation eventlist[] = { I_OnWhois, I_OnKill, I_OnWhoisLine, I_OnRawMode, I_OnChannelPermissionCheck };
ServerInstance->Modules->Attach(eventlist, this, 5);
}
@@ -112,16 +112,17 @@ class ModuleServProtectMode : public Module
return MOD_RES_PASSTHRU;
}
- ModResult OnUserPreKick(User *src, Membership* memb, const std::string &reason)
+ void OnChannelPermissionCheck(User* src, Channel* chan, PermissionData& perm)
{
- if (memb->user->IsModeSet('k'))
+ if (perm.name != "kick")
+ return;
+ TargetedPermissionData& t = static_cast<TargetedPermissionData&>(perm);
+ if (t.target->IsModeSet('k'))
{
- src->WriteNumeric(484, "%s %s :You are not permitted to kick services",
- src->nick.c_str(), memb->chan->name.c_str());
- return MOD_RES_DENY;
+ perm.SetReason(":%s 484 %s %s :You are not permitted to kick services",
+ ServerInstance->Config->ServerName.c_str(), src->nick.c_str(), chan->name.c_str());
+ perm.result = MOD_RES_DENY;
}
-
- return MOD_RES_PASSTHRU;
}
ModResult OnWhoisLine(User* src, User* dst, int &numeric, std::string &text)