]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_foobar.cpp
So much stuff changed in this one, i forgot most of it.
[user/henk/code/inspircd.git] / src / modules / m_foobar.cpp
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..93b1848fed8d820279a5b7ee665aa94120065ed1 100644 (file)
@@ -0,0 +1,136 @@
+/*       +------------------------------------+
+ *       | Inspire Internet Relay Chat Daemon |
+ *       +------------------------------------+
+ *
+ *  InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
+ *                       E-mail:
+ *                <brain@chatspike.net>
+ *               <Craig@chatspike.net>
+ *     
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ *            the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
+
+using namespace std;
+
+#include "users.h"
+#include "channels.h"
+#include "modules.h"
+#include "helperfuncs.h"
+#include "inspircd.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(Server* Me)
+               : Module::Module(Me)
+       {
+               // The constructor just makes a copy of the server class
+       
+               Srv = Me;
+       }
+       
+       virtual ~ModuleFoobar()
+       {
+       }
+       
+       virtual Version GetVersion()
+       {
+               // this method instantiates a class of type Version, and returns
+               // the modules version information using it.
+       
+               return Version(1,0,0,1,VF_VENDOR);
+       }
+
+       void Implements(char* List)
+       {
+               List[I_OnUserConnect] = List[I_OnUserQuit] = List[I_OnUserJoin] = List[I_OnUserPart] = 1;
+       }
+       
+       virtual void OnUserConnect(userrec* user)
+       {
+               // method called when a user connects
+       
+               std::string b = user->nick;
+               log(DEBUG,"Foobar: User connecting: "+b);
+       }
+
+       virtual void OnUserQuit(userrec* user, const std::string &reason)
+       {
+               // method called when a user disconnects
+       
+               std::string b = user->nick;
+               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;
+               log(DEBUG,"Foobar: User "+b+" joined "+c);
+       }
+
+       virtual void OnUserPart(userrec* user, chanrec* channel, const std::string &partreason)
+       {
+               // method called when a user parts a channel
+       
+               std::string c = channel->name;
+               std::string b = user->nick;
+               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(Server* Me)
+       {
+               return new ModuleFoobar(Me);
+       }
+       
+};
+
+
+//
+// The "C" linkage factory0() function creates the ModuleFoobarFactory
+// class for this library
+//
+
+extern "C" void * init_module( void )
+{
+       return new ModuleFoobarFactory;
+}
+