diff options
-rw-r--r-- | src/modules/m_conn_lusers.cpp | 107 | ||||
-rw-r--r-- | src/users.cpp | 6 |
2 files changed, 6 insertions, 107 deletions
diff --git a/src/modules/m_conn_lusers.cpp b/src/modules/m_conn_lusers.cpp deleted file mode 100644 index 03abce541..000000000 --- a/src/modules/m_conn_lusers.cpp +++ /dev/null @@ -1,107 +0,0 @@ -/* +------------------------------------+ - * | Inspire Internet Relay Chat Daemon | - * +------------------------------------+ - * - * 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. - * - * --------------------------------------------------- - */ - -#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. - -class ModuleConnLUSERS : public Module -{ - private: - - - public: - ModuleConnLUSERS(InspIRCd* Me) - : Module::Module(Me) - { - - } - - virtual ~ModuleConnLUSERS() - { - } - - virtual Version GetVersion() - { - return Version(1,1,0,1,VF_VENDOR,API_VERSION); - } - - void Implements(char* List) - { - List[I_OnUserConnect] = 1; - } - - virtual void OnUserConnect(userrec* 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); - } - } -}; - - -// -// The ModuleConnLUSERSFactory class inherits from ModuleFactory -// and creates a ModuleConnLUSERS object when requested. -// - -class ModuleConnLUSERSFactory : public ModuleFactory -{ - public: - ModuleConnLUSERSFactory() - { - } - - ~ModuleConnLUSERSFactory() - { - } - - virtual Module * CreateModule(InspIRCd* Me) - { - return new ModuleConnLUSERS(Me); - } - -}; - - -// -// The "C" linkage factory0() function creates the ModuleConnLUSERSFactory -// class for this library -// - -extern "C" void * init_module( void ) -{ - return new ModuleConnLUSERSFactory; -} - diff --git a/src/users.cpp b/src/users.cpp index 59d19adff..637d7aaf8 100644 --- a/src/users.cpp +++ b/src/users.cpp @@ -1060,6 +1060,12 @@ void userrec::FullConnect() if (ServerInstance->unregistered_count) ServerInstance->unregistered_count--; + /* Trigger LUSERS output, give modules a chance too */ + int MOD_RESULT = 0; + FOREACH_RESULT(I_OnPreCommand, OnPreCommand("LUSERS", NULL, 0, this, true, "LUSERS")); + if (!MOD_RESULT) + ServerInstance->CallCommandHandler("LUSERS", NULL, 0, this); + /* * fix 3 by brain, move registered = 7 below these so that spurious modes and host * changes dont go out onto the network and produce 'fake direction'. |