]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_check.cpp
Remove InspIRCd* parameters and fields
[user/henk/code/inspircd.git] / src / modules / m_check.cpp
index 7f85b186972a09245c693099b4a1307ffbbab70a..e3de633254728e10f3a43a75b5ae8913e77e786a 100644 (file)
 class CommandCheck : public Command
 {
  public:
-       std::set<std::string> meta_seen;
-       CommandCheck (InspIRCd* Instance, Module* parent) : Command(Instance,parent,"CHECK", "o", 1)
+       CommandCheck(Module* parent) : Command(parent,"CHECK", 1)
        {
-               syntax = "<nickname>|<ip>|<hostmask>|<channel> <server>";
+               flags_needed = 'o'; syntax = "<nickname>|<ip>|<hostmask>|<channel> <server>";
        }
 
        std::string timestring(time_t time)
@@ -34,17 +33,20 @@ class CommandCheck : public Command
                return std::string(timebuf);
        }
 
-       void dumpExtra(User* user, std::string checkstr, Extensible* ext)
+       void dumpExt(User* user, std::string checkstr, Extensible* ext)
        {
-               std::deque<std::string> extlist;
-               ext->GetExtList(extlist);
                std::stringstream dumpkeys;
-               for(std::deque<std::string>::iterator i = extlist.begin(); i != extlist.end(); i++)
+               for(ExtensibleStore::const_iterator i = ext->GetExtList().begin(); i != ext->GetExtList().end(); i++)
                {
-                       if (meta_seen.find(*i) == meta_seen.end())
-                               dumpkeys << " " << *i;
+                       ExtensionItem* item = Extensible::GetItem(i->first);
+                       std::string value;
+                       if (item)
+                               value = item->serialize(FORMAT_USER, ext, i->second);
+                       if (value.empty())
+                               dumpkeys << " " << i->first;
+                       else
+                               ServerInstance->DumpText(user, checkstr + " meta:" + i->first + " " + value);
                }
-               meta_seen.clear();
                if (!dumpkeys.str().empty())
                        ServerInstance->DumpText(user,checkstr + " metadata", dumpkeys);
        }
@@ -113,13 +115,17 @@ class CommandCheck : public Command
                        else
                                ServerInstance->DumpText(user, checkstr + " onip " + targuser->GetIPString());
 
-                       chliststr = targuser->ChannelList(targuser);
+                       for (UCListIter i = targuser->chans.begin(); i != targuser->chans.end(); i++)
+                       {
+                               Channel* c = *i;
+                               chliststr.append(c->GetPrefixChar(targuser)).append(c->name).append(" ");
+                       }
+
                        std::stringstream dump(chliststr);
 
                        ServerInstance->DumpText(user,checkstr + " onchans", dump);
 
-                       FOREACH_MOD_I(ServerInstance,I_OnSyncUser,OnSyncUser(targuser,creator,(void*)user));
-                       dumpExtra(user, checkstr, targuser);
+                       dumpExt(user, checkstr, targuser);
                }
                else if (targchan)
                {
@@ -139,10 +145,10 @@ class CommandCheck : public Command
 
                        /* now the ugly bit, spool current members of a channel. :| */
 
-                       CUList *ulist= targchan->GetUsers();
+                       const UserMembList *ulist= targchan->GetUsers();
 
                        /* note that unlike /names, we do NOT check +i vs in the channel */
-                       for (CUList::iterator i = ulist->begin(); i != ulist->end(); i++)
+                       for (UserMembCIter i = ulist->begin(); i != ulist->end(); i++)
                        {
                                char tmpbuf[MAXBUF];
                                /*
@@ -152,8 +158,7 @@ class CommandCheck : public Command
                                ServerInstance->DumpText(user, checkstr + " member " + tmpbuf);
                        }
 
-                       FOREACH_MOD_I(ServerInstance,I_OnSyncChannel,OnSyncChannel(targchan,creator,(void*)user));
-                       dumpExtra(user, checkstr, targchan);
+                       dumpExt(user, checkstr, targchan);
                }
                else
                {
@@ -198,37 +203,18 @@ class ModuleCheck : public Module
  private:
        CommandCheck mycommand;
  public:
-       ModuleCheck(InspIRCd* Me) : Module(Me), mycommand(Me, this)
+       ModuleCheck() : mycommand(this)
        {
                ServerInstance->AddCommand(&mycommand);
        }
 
-       virtual ~ModuleCheck()
-       {
-       }
-
-       virtual Version GetVersion()
-       {
-               return Version("$Id$", VF_VENDOR|VF_OPTCOMMON, API_VERSION);
-       }
-
-       virtual void ProtoSendMetaData(void* opaque, Extensible* target, const std::string& name, const std::string& value)
+       ~ModuleCheck()
        {
-               User* user = static_cast<User*>(opaque);
-               ServerInstance->DumpText(user, std::string(":") + ServerInstance->Config->ServerName + " 304 " + std::string(user->nick)
-                       + " :CHECK meta:" + name + " " + value);
-               mycommand.meta_seen.insert(name);
        }
 
-       virtual std::string ProtoTranslate(Extensible* item)
+       Version GetVersion()
        {
-               User* u = dynamic_cast<User*>(item);
-               Channel* c = dynamic_cast<Channel*>(item);
-               if (u)
-                       return u->nick;
-               if (c)
-                       return c->name;
-               return "?";
+               return Version("CHECK command, view user/channel details", VF_VENDOR|VF_OPTCOMMON);
        }
 };