X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_conn_lusers.cpp;h=03abce541f80fd0c75c5181015dab5e58ebc38ee;hb=7f00015727fab50e37de46aa90d218b31c852c87;hp=c0106566a2f640d98dcfb41782ae34bedf2fe8c1;hpb=ab01aaeeee9aed655df2eec2522072233fe3aa57;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_conn_lusers.cpp b/src/modules/m_conn_lusers.cpp index c0106566a..03abce541 100644 --- a/src/modules/m_conn_lusers.cpp +++ b/src/modules/m_conn_lusers.cpp @@ -2,26 +2,24 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. - * E-mail: - * - * - * - * Written by Craig Edwards, Craig McLure, and others. + * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * * 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 "inspircd.h" /* $ModDesc: Sends the /LUSERS on connect */ + + // This has to be the simplest module ever. // The RFC doesnt specify that you should send the /LUSERS numerics // on connect, but someone asked for it, so its in a module. @@ -30,26 +28,45 @@ class ModuleConnLUSERS : public Module { private: - Server *Srv; + public: - ModuleConnLUSERS() + ModuleConnLUSERS(InspIRCd* Me) + : Module::Module(Me) { - Srv = new Server; + } virtual ~ModuleConnLUSERS() { - delete Srv; } virtual Version GetVersion() { - return Version(1,0,0,1,VF_VENDOR); + return Version(1,1,0,1,VF_VENDOR,API_VERSION); + } + + void Implements(char* List) + { + List[I_OnUserConnect] = 1; } virtual void OnUserConnect(userrec* user) { - Srv->CallCommandHandler("LUSERS", NULL, 0, user); + // if we're using a protocol module, we cant just call + // the command handler because the protocol module + // has hooked it. We must call OnPreCommand in the + // protocol module. Yes, at some point there will + // be a way to get the current protocol module's name + // from the core and probably a pointer to its class. + Module* Proto = ServerInstance->FindModule("m_spanningtree.so"); + if (Proto) + { + Proto->OnPreCommand("LUSERS", NULL, 0, user, true, "LUSERS"); + } + else + { + ServerInstance->CallCommandHandler("LUSERS", NULL, 0, user); + } } }; @@ -70,9 +87,9 @@ class ModuleConnLUSERSFactory : public ModuleFactory { } - virtual Module * CreateModule() + virtual Module * CreateModule(InspIRCd* Me) { - return new ModuleConnLUSERS; + return new ModuleConnLUSERS(Me); } };