From 38d24933a450dcee18dd9d099005998555c732ab Mon Sep 17 00:00:00 2001 From: Sadie Powell Date: Fri, 8 Mar 2024 11:42:39 +0000 Subject: Merge the svsoper from contrib into the services module. --- src/modules/m_services.cpp | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/modules/m_services.cpp') diff --git a/src/modules/m_services.cpp b/src/modules/m_services.cpp index 98894fdce..6c9330a7b 100644 --- a/src/modules/m_services.cpp +++ b/src/modules/m_services.cpp @@ -385,6 +385,48 @@ public: } }; +class CommandSVSOper final + : public Command +{ +public: + CommandSVSOper(Module* Creator) + : Command(Creator, "SVSOPER", 2, 2) + { + access_needed = CmdAccess::SERVER; + } + + CmdResult Handle(User* user, const Params& parameters) override + { + if (!user->server->IsService()) + return CmdResult::FAILURE; + + auto* target = ServerInstance->Users.FindUUID(parameters[0]); + if (!target) + return CmdResult::FAILURE; + + if (IS_LOCAL(target)) + { + auto iter = ServerInstance->Config->OperTypes.find(parameters[1]); + if (iter == ServerInstance->Config->OperTypes.end()) + return CmdResult::FAILURE; + + auto automatic = parameters.GetTags().find("~automatic") != parameters.GetTags().end(); + auto account = std::make_shared(MODNAME, iter->second, ServerInstance->Config->EmptyTag); + target->OperLogin(account, automatic, true); + } + + return CmdResult::SUCCESS; + } + + RouteDescriptor GetRouting(User* user, const Params& parameters) override + { + auto* target = ServerInstance->Users.FindUUID(parameters[0]); + if (!target) + return ROUTE_LOCALONLY; + return ROUTE_OPT_UCAST(target->server); + } +}; + class CommandSVSPart final : public Command { @@ -487,6 +529,7 @@ private: CommandSVSHold svsholdcmd; CommandSVSJoin svsjoincmd; CommandSVSNick svsnickcmd; + CommandSVSOper svsopercmd; CommandSVSPart svspartcmd; CommandSVSTopic svstopiccmd; bool accountoverrideshold; @@ -544,6 +587,7 @@ public: , svsholdcmd(this) , svsjoincmd(this) , svsnickcmd(this) + , svsopercmd(this) , svspartcmd(this) , svstopiccmd(this) { -- cgit v1.3.1-10-gc9f91