From 3e08629e8342cfbd17388aa14facf3a3a963233f Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Sat, 5 Dec 2015 15:42:04 +0100 Subject: [PATCH] m_cap Add Capability::OnList() hook --- include/modules/cap.h | 10 ++++++++++ src/modules/m_cap.cpp | 3 +++ 2 files changed, 13 insertions(+) diff --git a/include/modules/cap.h b/include/modules/cap.h index 4ca3911a5..a00089260 100644 --- a/include/modules/cap.h +++ b/include/modules/cap.h @@ -199,5 +199,15 @@ namespace Cap { return true; } + + /** Called when a user requests a list of all capabilities and this capability is about to be included in the list. + * The default behavior always includes the cap in the list. + * @param user User querying a list capabilities + * @return True to add this cap to the list sent to the user, false to not list it + */ + virtual bool OnList(LocalUser* user) + { + return true; + } }; } diff --git a/src/modules/m_cap.cpp b/src/modules/m_cap.cpp index bb5a506c9..2b4055e3c 100644 --- a/src/modules/m_cap.cpp +++ b/src/modules/m_cap.cpp @@ -149,6 +149,9 @@ class Cap::ManagerImpl : public Cap::Manager if (!(show_caps & cap->GetMask())) continue; + if ((show_all) && (!cap->OnList(user))) + continue; + if (minus_prefix) out.push_back('-'); out.append(cap->GetName()).push_back(' '); -- 2.39.5