diff options
| author | 2023-02-27 21:17:40 +0000 | |
|---|---|---|
| committer | 2023-02-27 21:40:20 +0000 | |
| commit | 0000a90d578cfa5832696656c0c168bc148a8e86 (patch) | |
| tree | d0a0597a92f24de6d549afb816e64262abcff555 /src/modules/m_helpmode.cpp | |
| parent | Make module classes specify their priority manually. (diff) | |
Allow user mode +h (helpop) to override +H (hideoper) in /STATS P.
Now we include +h users in the output inclusion doesn't inherently
mean the user is an oper.
Closes #1212.
Diffstat (limited to 'src/modules/m_helpmode.cpp')
| -rw-r--r-- | src/modules/m_helpmode.cpp | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/src/modules/m_helpmode.cpp b/src/modules/m_helpmode.cpp index 065848681..acc48e423 100644 --- a/src/modules/m_helpmode.cpp +++ b/src/modules/m_helpmode.cpp @@ -53,17 +53,26 @@ class ModuleHelpMode final , public Whois::EventListener { private: + bool ignorehideoper; HelpOp helpop; + UserModeReference hideoper; public: ModuleHelpMode() : Module(VF_VENDOR, "Adds user mode h (helpop) which marks a server operator as being available for help.") - , Stats::EventListener(this) + , Stats::EventListener(this, 50) , Whois::EventListener(this) , helpop(this) + , hideoper(this, "hideoper") { } + void ReadConfig(ConfigStatus& status) override + { + const auto& tag = ServerInstance->Config->ConfValue("helpmode"); + ignorehideoper = tag->getBool("ignorehideoper", false); + } + ModResult OnStats(Stats::Context& stats) override { if (stats.GetSymbol() != 'P') @@ -71,8 +80,11 @@ public: for (auto* oper : helpop.helpopers) { - if (oper->IsOper() || oper->server->IsService()) - continue; // Ignore opers and services. + if (oper->server->IsService()) + continue; // Ignore services. + + if (oper->IsOper() && (!ignorehideoper || !oper->IsModeSet(hideoper))) + continue; // Ignore opers. std::string extra; if (oper->IsAway()) |
