summaryrefslogtreecommitdiff
path: root/src/modules
diff options
context:
space:
mode:
authorbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2004-04-12 16:05:08 +0000
committerbrain <brain@e03df62e-2008-0410-955e-edbf42e46eb7>2004-04-12 16:05:08 +0000
commit9ed4641ba3aaac8e133a73ec1c3d42965ee59241 (patch)
tree4bbd24979c93a410ff719603acf850b0b3e5c983 /src/modules
parent30aea7a691da96b17509502dab300fe6421e7beb (diff)
Added preliminary support for a bottler-detection module
Fixed broken rewrite in OnServerRaw git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@566 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/m_antibottler.cpp94
-rw-r--r--src/modules/m_foobar.cpp113
2 files changed, 94 insertions, 113 deletions
diff --git a/src/modules/m_antibottler.cpp b/src/modules/m_antibottler.cpp
new file mode 100644
index 000000000..d6a47fa90
--- /dev/null
+++ b/src/modules/m_antibottler.cpp
@@ -0,0 +1,94 @@
+#include "users.h"
+#include "channels.h"
+#include "modules.h"
+
+/* $ModDesc: Changes the ident of connecting bottler clients to 'bottler' */
+
+class ModuleAntiBottler : public Module
+{
+ private:
+
+ Server *Srv;
+ public:
+ ModuleAntiBottler()
+ {
+ Srv = new Server;
+ }
+
+ virtual ~ModuleAntiBottler()
+ {
+ delete Srv;
+ }
+
+ virtual Version GetVersion()
+ {
+ return Version(1,0,0,0);
+ }
+
+
+ virtual void OnServerRaw(std::string &raw, bool inbound)
+ {
+ if (inbound)
+ {
+ char data[MAXBUF];
+ strncpy(data,raw.c_str(),MAXBUF);
+ bool not_bottler = false;
+ if (!strncmp(data,"user ",5))
+ {
+ for (int j = 0; j < strlen(data); j++)
+ {
+ if (data[j] = ':')
+ break;
+
+ if (data[j] = '"')
+ {
+ not_bottler = true;
+ }
+ }
+ char *user = strtok(data," ");
+ char *ident = strtok(NULL," ");
+ char *local = strtok(NULL," ");
+ char *remote = strtok(NULL," :");
+ char *gecos = strtok(NULL,"\r\n");
+ for (int j = 0; j < strlen(remote); j++)
+ {
+ if (((remote[j] < '0') || (remote[j] > '9')) && (remote[j] != '.'))
+ {
+ not_bottler = true;
+ }
+ }
+
+ if (!not_bottler)
+ {
+ raw = "USER bottler "+std::string(local)+" "+std::string(remote)+" "+std::string(gecos)+" [Possible bottler, ident: "+std::string(ident)+"]";
+ }
+ }
+ }
+ }
+};
+
+
+class ModuleAntiBottlerFactory : public ModuleFactory
+{
+ public:
+ ModuleAntiBottlerFactory()
+ {
+ }
+
+ ~ModuleAntiBottlerFactory()
+ {
+ }
+
+ virtual Module * CreateModule()
+ {
+ return new ModuleAntiBottler;
+ }
+
+};
+
+
+extern "C" void * init_module( void )
+{
+ return new ModuleAntiBottlerFactory;
+}
+
diff --git a/src/modules/m_foobar.cpp b/src/modules/m_foobar.cpp
index ab3fa759b..e69de29bb 100644
--- a/src/modules/m_foobar.cpp
+++ b/src/modules/m_foobar.cpp
@@ -1,113 +0,0 @@
-#include "users.h"
-#include "channels.h"
-#include "modules.h"
-
-/* $ModDesc: A dummy module for testing */
-
-// Class ModuleFoobar inherits from Module
-// It just outputs simple debug strings to show its methods are working.
-
-class ModuleFoobar : public Module
-{
- private:
-
- // It is recommended that your class makes use of one or more Server
- // objects. A server object is a class which contains methods which
- // encapsulate the exports from the core of the ircd.
- // such methods include Debug, SendChannel, etc.
-
- Server *Srv;
- public:
- ModuleFoobar()
- {
- // The constructor just creates an instance of the server class
-
- Srv = new Server;
- }
-
- virtual ~ModuleFoobar()
- {
- // destructor deletes the instance of the server class
-
- delete Srv;
- }
-
- virtual Version GetVersion()
- {
- // this method instantiates a class of type Version, and returns
- // the modules version information using it.
-
- return Version(1,0,0,0);
- }
-
- virtual void OnUserConnect(userrec* user)
- {
- // method called when a user connects
-
- std::string b = user->nick;
- Srv->Log(DEBUG,"Foobar: User connecting: " + b);
- }
-
- virtual void OnUserQuit(userrec* user)
- {
- // method called when a user disconnects
-
- std::string b = user->nick;
- Srv->Log(DEBUG,"Foobar: User quitting: " + b);
- }
-
- virtual void OnUserJoin(userrec* user, chanrec* channel)
- {
- // method called when a user joins a channel
-
- std::string c = channel->name;
- std::string b = user->nick;
- Srv->Log(DEBUG,"Foobar: User " + b + " joined " + c);
- }
-
- virtual void OnUserPart(userrec* user, chanrec* channel)
- {
- // method called when a user parts a channel
-
- std::string c = channel->name;
- std::string b = user->nick;
- Srv->Log(DEBUG,"Foobar: User " + b + " parted " + c);
- }
-
-};
-
-
-//
-// The ModuleFoobarFactory class inherits from ModuleFactory
-// and creates a ModuleFoobar object when requested.
-//
-
-class ModuleFoobarFactory : public ModuleFactory
-{
- public:
- ModuleFoobarFactory()
- {
- }
-
- ~ModuleFoobarFactory()
- {
- }
-
- virtual Module * CreateModule()
- {
- return new ModuleFoobar;
- }
-
-};
-
-
-//
-// The "C" linkage factory0() function creates the ModuleFoobarFactory
-// class for this library
-//
-
-extern "C" void * init_module( void )
-{
- return new ModuleFoobarFactory;
-}
-