From ee44af8d04f23b4a16c9b377764f930d69e575f7 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 27 Nov 2022 07:32:42 +0000 Subject: Refactor the internals of the oper system. - Allow overriding privileges from the blocks in the and blocks. - Separate oper types from oper accounts in the code. This enables moving some core stuff out of the config tag later. - Merge the config tags together to make a synthetic tag that can have getXXX called on it instead of using getConfig and then converting it. - Move the details of Have*Permission into the oper type class. - Improve oper events to allow modules to easily hook into the oper system. --- src/modules/m_spanningtree/main.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/modules/m_spanningtree/main.cpp') diff --git a/src/modules/m_spanningtree/main.cpp b/src/modules/m_spanningtree/main.cpp index efcac01c7..1cfaae9c7 100644 --- a/src/modules/m_spanningtree/main.cpp +++ b/src/modules/m_spanningtree/main.cpp @@ -505,7 +505,7 @@ void ModuleSpanningTree::OnUserConnect(LocalUser* user) CommandUID::Builder(user).Broadcast(); if (user->IsOper()) - CommandOpertype::Builder(user).Broadcast(); + CommandOpertype::Builder(user, user->oper).Broadcast(); for (const auto& [item, obj] : user->GetExtList()) { @@ -772,14 +772,14 @@ restart: } } -void ModuleSpanningTree::OnOper(User* user) +void ModuleSpanningTree::OnOperLogin(User* user, const std::shared_ptr& oper) { if (!user->IsFullyConnected() || !IS_LOCAL(user)) return; // Note: The protocol does not allow direct umode +o; // sending OPERTYPE infers +o modechange locally. - CommandOpertype::Builder(user).Broadcast(); + CommandOpertype::Builder(user, oper).Broadcast(); } void ModuleSpanningTree::OnAddLine(User* user, XLine* x) -- cgit v1.3.1-10-gc9f91