]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Allow disabling the timedbans set/unset notices (#1789).
authoriwalkalone <iwalkalone69@users.noreply.github.com>
Wed, 22 Jul 2020 13:31:55 +0000 (15:31 +0200)
committerGitHub <noreply@github.com>
Wed, 22 Jul 2020 13:31:55 +0000 (14:31 +0100)
docs/conf/modules.conf.example
src/modules/m_timedbans.cpp

index fbd29ffcafc3e0c1e83fc8946a19cd3340545e71..2e50977bdb146062e61c54d1d995b2a8504e317b 100644 (file)
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # Timed bans module: Adds timed channel bans with the /TBAN command.
 #<module name="timedbans">
+# By default, it sends a notice to channel operators when timed ban is
+# set and when it is removed by server.
+#<timedbans sendnotice="yes">
 
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # Test line module: Adds the /TLINE command, used to test how many
index ef62294fde7544c15729c406e937355c56e2aa40..47fbd7fb6ab830f4c661c74655b58c1572019794 100644 (file)
@@ -71,6 +71,8 @@ class CommandTban : public Command
        }
 
  public:
+       bool sendnotice;
+
        CommandTban(Module* Creator)
                : Command(Creator,"TBAN", 3)
                , banmode(Creator, "ban")
@@ -131,13 +133,17 @@ class CommandTban : public Command
                T.chan = channel;
                TimedBanList.push_back(T);
 
-               const std::string message = InspIRCd::Format("Timed ban %s added by %s on %s lasting for %s.",
+               if (sendnotice)
+               {
+                   const std::string message = InspIRCd::Format("Timed ban %s added by %s on %s lasting for %s.",
                        mask.c_str(), user->nick.c_str(), channel->name.c_str(), InspIRCd::DurationString(duration).c_str());
-               // If halfop is loaded, send notice to halfops and above, otherwise send to ops and above
-               PrefixMode* mh = ServerInstance->Modes->FindPrefixMode('h');
-               char pfxchar = (mh && mh->name == "halfop") ? mh->GetPrefix() : '@';
+                   // If halfop is loaded, send notice to halfops and above, otherwise send to ops and above
+                   PrefixMode* mh = ServerInstance->Modes->FindPrefixMode('h');
+                   char pfxchar = (mh && mh->name == "halfop") ? mh->GetPrefix() : '@';
+
+                   channel->WriteRemoteNotice(message, pfxchar);
+               }
 
-               channel->WriteRemoteNotice(message, pfxchar);
                return CMD_SUCCESS;
        }
 
@@ -203,6 +209,12 @@ class ModuleTimedBans : public Module
        {
        }
 
+       void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE
+       {
+               ConfigTag* tag = ServerInstance->Config->ConfValue("timedbans");
+               cmd.sendnotice = tag->getBool("sendnotice", true);
+       }
+
        void OnBackgroundTimer(time_t curtime) CXX11_OVERRIDE
        {
                timedbans expired;
@@ -222,13 +234,16 @@ class ModuleTimedBans : public Module
                        const std::string mask = i->mask;
                        Channel* cr = i->chan;
 
-                       const std::string message = InspIRCd::Format("Timed ban %s set by %s on %s has expired.",
+                       if (cmd.sendnotice)
+                       {
+                           const std::string message = InspIRCd::Format("Timed ban %s set by %s on %s has expired.",
                                mask.c_str(), i->setter.c_str(), cr->name.c_str());
-                       // If halfop is loaded, send notice to halfops and above, otherwise send to ops and above
-                       PrefixMode* mh = ServerInstance->Modes->FindPrefixMode('h');
-                       char pfxchar = (mh && mh->name == "halfop") ? mh->GetPrefix() : '@';
+                           // If halfop is loaded, send notice to halfops and above, otherwise send to ops and above
+                           PrefixMode* mh = ServerInstance->Modes->FindPrefixMode('h');
+                           char pfxchar = (mh && mh->name == "halfop") ? mh->GetPrefix() : '@';
 
-                       cr->WriteRemoteNotice(message, pfxchar);
+                           cr->WriteRemoteNotice(message, pfxchar);
+                       }
 
                        Modes::ChangeList setban;
                        setban.push_remove(ServerInstance->Modes->FindMode('b', MODETYPE_CHANNEL), mask);