]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Convert cmd_modenotice into an optional module
authorattilamolnar <attilamolnar@hush.com>
Sun, 1 Sep 2013 12:58:02 +0000 (14:58 +0200)
committerattilamolnar <attilamolnar@hush.com>
Wed, 11 Sep 2013 10:11:16 +0000 (12:11 +0200)
docs/conf/modules.conf.example
src/commands/cmd_modenotice.cpp [deleted file]
src/modules/m_modenotice.cpp [new file with mode: 0644]
src/modules/m_spanningtree/compat.cpp

index d329ab5220dc87247867f440e8493406c07e7b51..639e3e1bdce8f8285081b92beae542cb0c3c1803 100644 (file)
 # would likely be immediately bounced by services.
 #<module name="m_mlock.so">
 
+#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
+# Modenotice module: Adds the /MODENOTICE command that allows opers to
+# send notices to all users having the given user mode(s) set.
+#<module name="m_modenotice.so">
+
 #-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#
 # MsSQL module: Allows other SQL modules to access MS SQL Server 
 # through a unified API.
diff --git a/src/commands/cmd_modenotice.cpp b/src/commands/cmd_modenotice.cpp
deleted file mode 100644 (file)
index 852b72f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * InspIRCd -- Internet Relay Chat Daemon
- *
- *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
- *
- * This file is part of InspIRCd.  InspIRCd is free software: you can
- * redistribute it and/or modify it under the terms of the GNU General Public
- * License as published by the Free Software Foundation, version 2.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
- * details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-
-#include "inspircd.h"
-
-class CommandModeNotice : public Command
-{
- public:
-       CommandModeNotice(Module* parent) : Command(parent,"MODENOTICE",2,2)
-       {
-               syntax = "<modes> <message>";
-               flags_needed = 'o';
-       }
-
-       CmdResult Handle(const std::vector<std::string>& parameters, User *src)
-       {
-               int mlen = parameters[0].length();
-               for (LocalUserList::const_iterator i = ServerInstance->Users->local_users.begin(); i != ServerInstance->Users->local_users.end(); i++)
-               {
-                       User* user = *i;
-                       for (int n = 0; n < mlen; n++)
-                       {
-                               if (!user->IsModeSet(parameters[0][n]))
-                                       goto next_user;
-                       }
-                       user->Write(":%s NOTICE %s :*** From %s: %s", ServerInstance->Config->ServerName.c_str(),
-                               user->nick.c_str(), src->nick.c_str(), parameters[1].c_str());
-next_user:     ;
-               }
-               return CMD_SUCCESS;
-       }
-
-       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters)
-       {
-               return ROUTE_BROADCAST;
-       }
-};
-
-COMMAND_INIT(CommandModeNotice)
diff --git a/src/modules/m_modenotice.cpp b/src/modules/m_modenotice.cpp
new file mode 100644 (file)
index 0000000..8998ea8
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * InspIRCd -- Internet Relay Chat Daemon
+ *
+ *   Copyright (C) 2009 Daniel De Graaf <danieldg@inspircd.org>
+ *
+ * This file is part of InspIRCd.  InspIRCd is free software: you can
+ * redistribute it and/or modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation, version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+ * details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+
+#include "inspircd.h"
+
+class CommandModeNotice : public Command
+{
+ public:
+       CommandModeNotice(Module* parent) : Command(parent,"MODENOTICE",2,2)
+       {
+               syntax = "<modes> <message>";
+               flags_needed = 'o';
+       }
+
+       CmdResult Handle(const std::vector<std::string>& parameters, User *src)
+       {
+               int mlen = parameters[0].length();
+               for (LocalUserList::const_iterator i = ServerInstance->Users->local_users.begin(); i != ServerInstance->Users->local_users.end(); i++)
+               {
+                       User* user = *i;
+                       for (int n = 0; n < mlen; n++)
+                       {
+                               if (!user->IsModeSet(parameters[0][n]))
+                                       goto next_user;
+                       }
+                       user->Write(":%s NOTICE %s :*** From %s: %s", ServerInstance->Config->ServerName.c_str(),
+                               user->nick.c_str(), src->nick.c_str(), parameters[1].c_str());
+next_user:     ;
+               }
+               return CMD_SUCCESS;
+       }
+
+       RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters)
+       {
+               return ROUTE_OPT_BCAST;
+       }
+};
+
+class ModuleModeNotice : public Module
+{
+       CommandModeNotice cmd;
+
+ public:
+       ModuleModeNotice()
+               : cmd(this)
+       {
+       }
+
+       Version GetVersion() CXX11_OVERRIDE
+       {
+               return Version("Provides the /MODENOTICE command", VF_VENDOR);
+       }
+};
+
+MODULE_INIT(ModuleModeNotice)
index 02e11c8494f22b1f544439f577907de46073cf50..f3d6ac66ae2a5a683000f7eaee54fb59c10f1f51 100644 (file)
@@ -286,6 +286,13 @@ bool TreeSocket::PreProcessOldProtocolMessage(User*& who, std::string& cmd, std:
 
                params.insert(params.begin()+2, ConvToStr(ServerInstance->Time()));
        }
+       else if (cmd == "MODENOTICE")
+       {
+               // MODENOTICE is always supported by 2.0 but it's optional in 2.2.
+               params.insert(params.begin(), "*");
+               params.insert(params.begin()+1, cmd);
+               cmd = "ENCAP";
+       }
 
        return true; // Passthru
 }