]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_silence.cpp
modules/m_silence: Allow U-lined services to bypass silence masks
[user/henk/code/inspircd.git] / src / modules / m_silence.cpp
index 91822b4e4bf054e078075caf834a8a214bc3e176..502f947f45b0f4f442af00ef30e574ddc8934c5b 100644 (file)
@@ -291,6 +291,7 @@ class CommandSilence : public Command
 class ModuleSilence : public Module
 {
        unsigned int maxsilence;
+       bool ExemptULine;
        CommandSilence cmdsilence;
        CommandSVSSilence cmdsvssilence;
  public:
@@ -302,9 +303,13 @@ class ModuleSilence : public Module
 
        void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
        {
-               maxsilence = ServerInstance->Config->ConfValue("silence")->getInt("maxentries", 32);
+               ConfigTag* tag = ServerInstance->Config->ConfValue("silence");
+
+               maxsilence = tag->getInt("maxentries", 32);
                if (!maxsilence)
                        maxsilence = 32;
+
+               ExemptULine = tag->getBool("exemptuline", true);
        }
 
        void On005Numeric(std::map<std::string, std::string>& tokens) CXX11_OVERRIDE
@@ -351,6 +356,9 @@ class ModuleSilence : public Module
 
        ModResult MatchPattern(User* dest, User* source, int pattern)
        {
+               if (ExemptULine && source->server->IsULine())
+                       return MOD_RES_PASSTHRU;
+
                silencelist* sl = cmdsilence.ext.get(dest);
                if (sl)
                {