X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_shun.cpp;h=a62d8369d29dad2a99807f4f73ac9a1e9aee0729;hb=eb11cc14db861ac8bfe6b93515272a8ab11fb714;hp=6eaa6b47c79e14b31d27812c182590638c258eac;hpb=92732be632831cbb0751a5f2ad3d89e9bf87b2dd;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_shun.cpp b/src/modules/m_shun.cpp index 6eaa6b47c..a62d8369d 100644 --- a/src/modules/m_shun.cpp +++ b/src/modules/m_shun.cpp @@ -4,7 +4,7 @@ * Copyright (C) 2019 Matt Schatz * Copyright (C) 2018 linuxdaemon * Copyright (C) 2017-2018 B00mX0r - * Copyright (C) 2013, 2017-2018 Sadie Powell + * Copyright (C) 2013, 2017-2018, 2020 Sadie Powell * Copyright (C) 2012-2016 Attila Molnar * Copyright (C) 2012, 2018-2019 Robby * Copyright (C) 2012 Jens Voss @@ -158,6 +158,20 @@ class ModuleShun : public Module, public Stats::EventListener bool NotifyOfShun; bool affectopers; + bool IsShunned(LocalUser* user) + { + // Exempt the user from shuns if they are an oper and affectopers is disabled. + if (!affectopers && user->IsOper()) + return false; + + // Exempt the user from shuns if they are an oper with the servers/ignore-shun privilege. + if (user->HasPrivPermission("servers/ignore-shun")) + return false; + + // Check whether the user is actually shunned. + return ServerInstance->XLines->MatchesLine("SHUN", user); + } + public: ModuleShun() : Stats::EventListener(this) @@ -209,21 +223,9 @@ class ModuleShun : public Module, public Stats::EventListener ModResult OnPreCommand(std::string& command, CommandBase::Params& parameters, LocalUser* user, bool validated) CXX11_OVERRIDE { - if (validated) + if (validated || !IsShunned(user)) return MOD_RES_PASSTHRU; - if (!ServerInstance->XLines->MatchesLine("SHUN", user)) - { - /* Not shunned, don't touch. */ - return MOD_RES_PASSTHRU; - } - - if (!affectopers && user->IsOper()) - { - /* Don't do anything if the user is an operator and affectopers isn't set */ - return MOD_RES_PASSTHRU; - } - if (!ShunEnabledCommands.count(command)) { if (NotifyOfShun) @@ -248,7 +250,7 @@ class ModuleShun : public Module, public Stats::EventListener Version GetVersion() CXX11_OVERRIDE { - return Version("Provides the SHUN command, which stops a user from executing all except configured commands", VF_VENDOR|VF_COMMON); + return Version("Adds the /SHUN command which allows server operators to prevent users from executing commands.", VF_VENDOR|VF_COMMON); } };