From 89f72a4d63c6868ac3c191197f37e08341b8bc16 Mon Sep 17 00:00:00 2001 From: Daniel De Graaf Date: Tue, 2 Mar 2010 12:04:53 -0600 Subject: Create OnChannelPermissionCheck hook --- src/modules/m_servprotect.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'src/modules/m_servprotect.cpp') 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(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) -- cgit v1.3.1-10-gc9f91