]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_spy.cpp
No gaurantees this works AT ALL. do not use yet!!!
[user/henk/code/inspircd.git] / src / modules / m_spy.cpp
index 356000f97cf68624d774ed3f1512fdb5a3b03a12..76ae8cfa41e11a3298dbdea11e93a932e985ef61 100644 (file)
  * ---------------------------------------------------
  */
 
-/* NO, THIS MODULE DOES NOT SPY ON CHANNELS OR USERS.
- * IT JUST ALLOWS OPERS TO SEE +s CHANNELS IN LIST AND
- * WHOIS, WHICH IS SUPPORTED BY MOST IRCDS IN CORE.
- */
-
 /* $ModDesc: Provides SPYLIST and SPYNAMES capability, allowing opers to see who's in +s channels */
 
-#include "inspircd_config.h"
-#include "users.h" 
-#include "channels.h"
-#include "modules.h"
 #include "inspircd.h"
 #include "wildcard.h"
 
-void spy_userlist(userrec *user, chanrec *c)
+void spy_userlist(User *user, Channel *c)
 {
        char list[MAXBUF];
        size_t dlen, curlen;
 
-       dlen = curlen = snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
+       dlen = curlen = snprintf(list,MAXBUF,"353 %s %c %s :", user->nick, c->IsModeSet('s') ? '@' : c->IsModeSet('p') ? '*' : '=', c->name);
 
        int numusers = 0;
        char* ptr = list + dlen;
@@ -52,7 +43,7 @@ void spy_userlist(userrec *user, chanrec *c)
                        user->WriteServ(std::string(list));
 
                        /* reset our lengths */
-                       dlen = curlen = snprintf(list,MAXBUF,"353 %s = %s :", user->nick, c->name);
+                       dlen = curlen = snprintf(list,MAXBUF,"353 %s %c %s :", user->nick, c->IsModeSet('s') ? '@' : c->IsModeSet('p') ? '*' : '=', c->name);
                        ptr = list + dlen;
 
                        ptrlen = 0;
@@ -72,16 +63,16 @@ void spy_userlist(userrec *user, chanrec *c)
 
 /** Handle /SPYLIST
  */
-class cmd_spylist : public command_t
+class cmd_spylist : public Command
 {
   public:
-       cmd_spylist (InspIRCd* Instance) : command_t(Instance,"SPYLIST", 'o', 0)
+       cmd_spylist (InspIRCd* Instance) : Command(Instance,"SPYLIST", 'o', 0)
        {
                this->source = "m_spy.so";
-               syntax = "";
+               syntax.clear();
        }
 
-       CmdResult Handle (const char** parameters, int pcnt, userrec *user)
+       CmdResult Handle (const char** parameters, int pcnt, User *user)
        {
                ServerInstance->WriteOpers("*** Oper %s used SPYLIST to list +s/+p channels and keys.",user->nick);
                user->WriteServ("321 %s Channel :Users Name",user->nick);
@@ -94,24 +85,24 @@ class cmd_spylist : public command_t
                user->WriteServ("323 %s :End of channel list.",user->nick);
 
                /* Dont send out across the network */
-               return CMD_FAILURE;
+               return CMD_LOCALONLY;
        }
 };
 
 /** Handle /SPYNAMES
  */
-class cmd_spynames : public command_t
+class cmd_spynames : public Command
 {
   public:
-       cmd_spynames (InspIRCd* Instance) : command_t(Instance,"SPYNAMES", 'o', 0)
+       cmd_spynames (InspIRCd* Instance) : Command(Instance,"SPYNAMES", 'o', 0)
        {
                this->source = "m_spy.so";
                syntax = "{<channel>{,<channel>}}";
        }
 
-       CmdResult Handle (const char** parameters, int pcnt, userrec *user)
+       CmdResult Handle (const char** parameters, int pcnt, User *user)
        {
-               chanrec* c = NULL;
+               Channel* c = NULL;
 
                if (!pcnt)
                {
@@ -133,7 +124,7 @@ class cmd_spynames : public command_t
                        user->WriteServ("401 %s %s :No such nick/channel",user->nick, parameters[0]);
                }
 
-               return CMD_FAILURE;
+               return CMD_LOCALONLY;
        }
 };
 
@@ -161,27 +152,4 @@ class ModuleSpy : public Module
        }
 };
 
-
-class ModuleSpyFactory : public ModuleFactory
-{
- public:
-       ModuleSpyFactory()
-       {
-       }
-       
-       ~ModuleSpyFactory()
-       {
-       }
-       
-       virtual Module * CreateModule(InspIRCd* Me)
-       {
-               return new ModuleSpy(Me);
-       }
-       
-};
-
-
-extern "C" DllExport void * init_module( void )
-{
-       return new ModuleSpyFactory;
-}
+MODULE_INIT(ModuleSpy)