From 8831595e1a5306f4204fedc6ecbc4a3c9299fb35 Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Sun, 8 Jan 2023 16:12:43 +0000 Subject: Rework how users are assigned to connect classes. - Move core connect class checks and to the core_user module. - Add pre-change and post-change events for when a connect class changes. - Split explicit class changing out into its own method. - Remove the need to almost always call CheckClass after SetClass. - Add use counting to the connect class instead of relying on the shared_ptr use count. --- src/modules/m_gateway.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/modules/m_gateway.cpp') diff --git a/src/modules/m_gateway.cpp b/src/modules/m_gateway.cpp index 138894afd..c73c74924 100644 --- a/src/modules/m_gateway.cpp +++ b/src/modules/m_gateway.cpp @@ -408,10 +408,10 @@ public: cmdwebirc.hosts.swap(webirchosts); } - ModResult OnSetConnectClass(LocalUser* user, const ConnectClass::Ptr& myclass) override + ModResult OnPreChangeConnectClass(LocalUser* user, const std::shared_ptr& klass) override { // If is not set then we have nothing to do. - const std::string webirc = myclass->config->getString("webirc"); + const std::string webirc = klass->config->getString("webirc"); if (webirc.empty()) return MOD_RES_PASSTHRU; @@ -420,8 +420,8 @@ public: const std::string* gateway = cmdwebirc.extban.gateway.Get(user); if (!gateway) { - ServerInstance->Logs.Debug("CONNECTCLASS", "The %s connect class is not suitable as it requires a connection via a WebIRC gateway", - myclass->GetName().c_str()); + ServerInstance->Logs.Debug("CONNECTCLASS", "The %s connect class is not suitable as it requires a connection via a WebIRC gateway.", + klass->GetName().c_str()); return MOD_RES_DENY; } @@ -429,8 +429,8 @@ public: // allow the check to continue. Otherwise, reject it. if (!InspIRCd::Match(*gateway, webirc)) { - ServerInstance->Logs.Debug("CONNECTCLASS", "The %s connect class is not suitable as the WebIRC gateway name (%s) does not match %s", - myclass->GetName().c_str(), gateway->c_str(), webirc.c_str()); + ServerInstance->Logs.Debug("CONNECTCLASS", "The %s connect class is not suitable as the WebIRC gateway name (%s) does not match %s.", + klass->GetName().c_str(), gateway->c_str(), webirc.c_str()); return MOD_RES_DENY; } -- cgit v1.3.1-10-gc9f91