X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_conn_lusers.cpp;h=06718348ef30b7d8e42f0cdbf7767cf6c03d0f3c;hb=bcac49dca78631687975771c6d0a76b595171664;hp=6cbd6847d0c3154ee128f3357c87328706d68632;hpb=f057bf32b9e9d559b48f762f13a14cf76d38bcfd;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_conn_lusers.cpp b/src/modules/m_conn_lusers.cpp index 6cbd6847d..06718348e 100644 --- a/src/modules/m_conn_lusers.cpp +++ b/src/modules/m_conn_lusers.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * @@ -14,12 +14,17 @@ * --------------------------------------------------- */ +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. @@ -28,26 +33,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) { - 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); + } } }; @@ -68,9 +92,9 @@ class ModuleConnLUSERSFactory : public ModuleFactory { } - virtual Module * CreateModule() + virtual Module * CreateModule(InspIRCd* Me) { - return new ModuleConnLUSERS; + return new ModuleConnLUSERS(Me); } };