diff options
| author | 2010-03-02 12:04:53 -0600 | |
|---|---|---|
| committer | 2010-08-03 17:32:39 -0400 | |
| commit | 89f72a4d63c6868ac3c191197f37e08341b8bc16 (patch) | |
| tree | 619fc74cfc57928de1bd0a9b08a8ad65903a8e7b /src/modules/m_servprotect.cpp | |
| parent | Unset 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.cpp | 17 |
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) |
