* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
+ * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
* E-mail:
* <brain@chatspike.net>
* <Craig@chatspike.net>
* ---------------------------------------------------
*/
+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.
{
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);
+ }
}
};
{
}
- virtual Module * CreateModule()
+ virtual Module * CreateModule(InspIRCd* Me)
{
- return new ModuleConnLUSERS;
+ return new ModuleConnLUSERS(Me);
}
};