X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_userip.cpp;h=861d5a0e529790a60108b89c458bc4f3ed6fc456;hb=b37a253d962ed7af1ea7a328abf2a1af74f30759;hp=a077625c80a4cd2a40ee16b733804336fe480881;hpb=eb4229deed0281ae566ef7e55a144e5d3183a4b2;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_userip.cpp b/src/modules/m_userip.cpp index a077625c8..861d5a0e5 100644 --- a/src/modules/m_userip.cpp +++ b/src/modules/m_userip.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,51 +14,71 @@ * --------------------------------------------------- */ +using namespace std; + #include #include #include "users.h" #include "channels.h" #include "modules.h" #include "helperfuncs.h" +#include "inspircd.h" /* $ModDesc: Provides support for USERIP command */ -Server *Srv; - -void handle_userip(char **parameters, int pcnt, userrec *user) +static Server *Srv; +extern InspIRCd* ServerInstance; + +class cmd_userip : public command_t { - char Return[MAXBUF],junk[MAXBUF]; - snprintf(Return,MAXBUF,"340 %s :",user->nick); - for (int i = 0; i < pcnt; i++) - { - userrec *u = Find(parameters[i]); - if (u) - { - snprintf(junk,MAXBUF,"%s%s=+%s@%s ",u->nick,strchr(u->modes,'o') ? "*" : "",u->ident,u->ip); - strlcat(Return,junk,MAXBUF); - } - } - WriteServ(user->fd,Return); -} + public: + cmd_userip () : command_t("USERIP", 'o', 1) + { + this->source = "m_userip.so"; + syntax = "{,}"; + } + void Handle (const char** parameters, int pcnt, userrec *user) + { + char Return[MAXBUF],junk[MAXBUF]; + snprintf(Return,MAXBUF,"340 %s :",user->nick); + for (int i = 0; i < pcnt; i++) + { + userrec *u = ServerInstance->FindNick(parameters[i]); + if (u) + { + snprintf(junk,MAXBUF,"%s%s=+%s@%s ",u->nick,*u->oper ? "*" : "",u->ident,u->GetIPString()); + strlcat(Return,junk,MAXBUF); + } + } + user->WriteServ(Return); + } +}; class ModuleUserIP : public Module { + cmd_userip* mycommand; public: - ModuleUserIP() + ModuleUserIP(InspIRCd* Me) + : Module::Module(Me) { - Srv = new Server; - Srv->AddCommand("USERIP",handle_userip,'o',1,"m_Userip.so"); + + mycommand = new cmd_userip(); + Srv->AddCommand(mycommand); } - virtual void On005Numeric(std::string &output) - { + void Implements(char* List) + { + List[I_On005Numeric] = 1; + } + + virtual void On005Numeric(std::string &output) + { output = output + std::string(" USERIP"); - } + } virtual ~ModuleUserIP() { - delete Srv; } virtual Version GetVersion() @@ -81,9 +101,9 @@ class ModuleUserIPFactory : public ModuleFactory { } - virtual Module * CreateModule() + virtual Module * CreateModule(InspIRCd* Me) { - return new ModuleUserIP; + return new ModuleUserIP(Me); } };