summaryrefslogtreecommitdiff
path: root/src/modules/m_testnet.cpp
diff options
context:
space:
mode:
authordanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-09-27 00:22:29 +0000
committerdanieldg <danieldg@e03df62e-2008-0410-955e-edbf42e46eb7>2009-09-27 00:22:29 +0000
commit934d9a6a184b7a8600fcda30e012ba6f29f17b64 (patch)
tree44edb8dc4551777fcbdb73ef1a28e9b9d44bd9a6 /src/modules/m_testnet.cpp
parent7c1352df0c8bb2624d4f2cc8320467578c39a6ad (diff)
SendQ bugfixes
Fix DoWrite running on errored sockets Add testnet module for sendq and shutdown testing Prevent DoWrite from trying to write when writes are blocking git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@11768 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules/m_testnet.cpp')
-rw-r--r--src/modules/m_testnet.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/src/modules/m_testnet.cpp b/src/modules/m_testnet.cpp
new file mode 100644
index 000000000..a4bdfc561
--- /dev/null
+++ b/src/modules/m_testnet.cpp
@@ -0,0 +1,66 @@
+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * See: http://wiki.inspircd.org/Credits
+ *
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
+/* $ModDesc: Provides a module for testing the server while linked in a network */
+
+#include "inspircd.h"
+
+class CommandTest : public Command
+{
+ public:
+ CommandTest(Module* parent) : Command(parent, "TEST", 1)
+ {
+ syntax = "<action> <parameters>";
+ }
+
+ CmdResult Handle(const std::vector<std::string> &parameters, User *user)
+ {
+ if (parameters[0] == "flood")
+ {
+ unsigned int count = parameters.size() > 1 ? atoi(parameters[1].c_str()) : 100;
+ std::string line = parameters.size() > 2 ? parameters[2] : ":z.z NOTICE !flood :Flood text";
+ for(unsigned int i=0; i < count; i++)
+ user->Write(line);
+ }
+ else if (parameters[0] == "freeze")
+ {
+ user->Penalty += 100;
+ }
+ else if (parameters[0] == "shutdown")
+ {
+ int i = parameters.size() > 1 ? atoi(parameters[1].c_str()) : 2;
+ ServerInstance->SE->Shutdown(user->GetFd(), i);
+ }
+ return CMD_SUCCESS;
+ }
+};
+
+class ModuleTest : public Module
+{
+ CommandTest cmd;
+ public:
+ ModuleTest() : cmd(this)
+ {
+ if (!strstr(ServerInstance->Config->ServerName, ".test"))
+ throw ModuleException("Don't load modules without reading their descriptions!");
+ ServerInstance->AddCommand(&cmd);
+ }
+
+ Version GetVersion()
+ {
+ return Version("Provides a module for testing the server while linked in a network", VF_VENDOR|VF_OPTCOMMON);
+ }
+};
+
+MODULE_INIT(ModuleTest)
+