X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_conn_lusers.cpp;h=06718348ef30b7d8e42f0cdbf7767cf6c03d0f3c;hb=bcac49dca78631687975771c6d0a76b595171664;hp=a16df457018cd45665c213fe921e8a214ac53a6a;hpb=cff3a40e0bce1b8df5e4b4f1eba91c4a2603718a;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_conn_lusers.cpp b/src/modules/m_conn_lusers.cpp index a16df4570..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) { - 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); + } } }; @@ -68,9 +92,9 @@ class ModuleConnLUSERSFactory : public ModuleFactory { } - virtual Module * CreateModule() + virtual Module * CreateModule(InspIRCd* Me) { - return new ModuleConnLUSERS; + return new ModuleConnLUSERS(Me); } };