X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_spy.cpp;h=4ded5374fdc2119fb2ff339c46cd196b5bec0a97;hb=f9636a2eff46f6829bf9e01c711ab1ba45a7d50a;hp=fb2fededc0d3a7661072e75429a42224f1f97b3c;hpb=9d2bcbdfd90733ab3faf3b31f051bdd4fd9bcd82;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_spy.cpp b/src/modules/m_spy.cpp index fb2fededc..4ded5374f 100644 --- a/src/modules/m_spy.cpp +++ b/src/modules/m_spy.cpp @@ -28,11 +28,7 @@ using namespace std; #include #include "globals.h" #include "inspircd_config.h" -#ifdef GCC3 #include -#else -#include -#endif #include "users.h" #include "channels.h" #include "modules.h" @@ -42,22 +38,15 @@ using namespace std; #include "inspircd.h" #include "inspstring.h" #include "hashcomp.h" -#include "message.h" #include "xline.h" #include "typedefs.h" #include "cull_list.h" #include "aes.h" -#ifdef GCC3 #define nspace __gnu_cxx -#else -#define nspace std -#endif - static Server *Srv; -extern ServerConfig* Config; extern InspIRCd* ServerInstance; extern chan_hash chanlist; @@ -65,32 +54,30 @@ void spy_userlist(userrec *user,chanrec *c) { static char list[MAXBUF]; - if ((!c) || (!user)) - return; - - snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name); - - std::map *ulist= c->GetUsers(); - for (std::map::iterator i = ulist->begin(); i != ulist->end(); i++) - { - char* o = i->second; - userrec* otheruser = (userrec*)o; - strlcat(list,cmode(otheruser,c),MAXBUF); - strlcat(list,otheruser->nick,MAXBUF); - strlcat(list," ",MAXBUF); - if (strlen(list)>(480-NICKMAX)) - { - /* list overflowed into - * multiple numerics */ - WriteServ_NoFormat(user->fd,list); - snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name); - } - } - /* if whats left in the list isnt empty, send it */ - if (list[strlen(list)-1] != ':') - { - WriteServ_NoFormat(user->fd,list); - } + if ((!c) || (!user)) + return; + + snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name); + + CUList *ulist= c->GetUsers(); + for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++) + { + strlcat(list,c->GetStatusChar(i->second),MAXBUF); + strlcat(list,i->second->nick,MAXBUF); + strlcat(list," ",MAXBUF); + if (strlen(list)>(480-NICKMAX)) + { + /* list overflowed into + * multiple numerics */ + user->WriteServ(std::string(list)); + snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name); + } + } + /* if whats left in the list isnt empty, send it */ + if (list[strlen(list)-1] != ':') + { + user->WriteServ(std::string(list)); + } } @@ -98,57 +85,59 @@ void spy_userlist(userrec *user,chanrec *c) class cmd_spylist : public command_t { public: - cmd_spylist () : command_t("SPYLIST", 'o', 0) - { - this->source = "m_spy.so"; - } + cmd_spylist () : command_t("SPYLIST", 'o', 0) + { + this->source = "m_spy.so"; + syntax = ""; + } - void Handle (char **parameters, int pcnt, userrec *user) + void Handle (const char** parameters, int pcnt, userrec *user) { - WriteOpers("*** Oper %s used SPYLIST to list +s/+p channels and keys.",user->nick); - WriteServ(user->fd,"321 %s Channel :Users Name",user->nick); - for (chan_hash::const_iterator i = chanlist.begin(); i != chanlist.end(); i++) - { - WriteServ(user->fd,"322 %s %s %d :[+%s] %s",user->nick,i->second->name,usercount_i(i->second),chanmodes(i->second,true),i->second->topic); - } - WriteServ(user->fd,"323 %s :End of channel list.",user->nick); + ServerInstance->WriteOpers("*** Oper %s used SPYLIST to list +s/+p channels and keys.",user->nick); + user->WriteServ("321 %s Channel :Users Name",user->nick); + for (chan_hash::const_iterator i = chanlist.begin(); i != chanlist.end(); i++) + { + user->WriteServ("322 %s %s %d :[+%s] %s",user->nick,i->second->name,i->second->GetUserCounter(),i->second->ChanModes(true),i->second->topic); + } + user->WriteServ("323 %s :End of channel list.",user->nick); } }; class cmd_spynames : public command_t { public: - cmd_spynames () : command_t("SPYNAMES", 'o', 0) - { - this->source = "m_spy.so"; - } - - void cmd_spynames::Handle (char **parameters, int pcnt, userrec *user) - { - chanrec* c; - - if (!pcnt) - { - WriteServ(user->fd,"366 %s * :End of /NAMES list.",user->nick); - return; - } - - if (ServerInstance->Parser->LoopCall(this,parameters,pcnt,user,0,pcnt-1,0)) - return; - - WriteOpers("*** Oper %s used SPYNAMES to view the users on %s",user->nick,parameters[0]); - - c = FindChan(parameters[0]); - if (c) - { - spy_userlist(user,c); - WriteServ(user->fd,"366 %s %s :End of /NAMES list.", user->nick, c->name); - } - else - { - WriteServ(user->fd,"401 %s %s :No such nick/channel",user->nick, parameters[0]); - } - } + cmd_spynames () : command_t("SPYNAMES", 'o', 0) + { + this->source = "m_spy.so"; + syntax = "{{,}}"; + } + + void Handle (const char** parameters, int pcnt, userrec *user) + { + chanrec* c; + + if (!pcnt) + { + user->WriteServ("366 %s * :End of /NAMES list.",user->nick); + return; + } + + if (ServerInstance->Parser->LoopCall(user, this, parameters, pcnt, 1)) + return; + + ServerInstance->WriteOpers("*** Oper %s used SPYNAMES to view the users on %s",user->nick,parameters[0]); + + c = ServerInstance->FindChan(parameters[0]); + if (c) + { + spy_userlist(user,c); + user->WriteServ("366 %s %s :End of /NAMES list.", user->nick, c->name); + } + else + { + user->WriteServ("401 %s %s :No such nick/channel",user->nick, parameters[0]); + } + } }; class ModuleSpy : public Module