X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fmodules%2Fm_check.cpp;h=964a8c0756268a90128324bf0ae2512316ce9535;hb=6d57bbe05c31c79eaad02fe81cfb9c1ed6b79c58;hp=7f85b186972a09245c693099b4a1307ffbbab70a;hpb=7eea21b8d43b0d5993e88b62d9d4894c2af49303;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_check.cpp b/src/modules/m_check.cpp index 7f85b1869..964a8c075 100644 --- a/src/modules/m_check.cpp +++ b/src/modules/m_check.cpp @@ -20,7 +20,6 @@ class CommandCheck : public Command { public: - std::set meta_seen; CommandCheck (InspIRCd* Instance, Module* parent) : Command(Instance,parent,"CHECK", "o", 1) { syntax = "||| "; @@ -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 extlist; - ext->GetExtList(extlist); std::stringstream dumpkeys; - for(std::deque::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(creator, 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); } @@ -118,8 +120,7 @@ class CommandCheck : public Command 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) { @@ -152,8 +153,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 { @@ -203,24 +203,16 @@ class ModuleCheck : public Module ServerInstance->AddCommand(&mycommand); } - virtual ~ModuleCheck() - { - } - - virtual Version GetVersion() + ~ModuleCheck() { - return Version("$Id$", VF_VENDOR|VF_OPTCOMMON, API_VERSION); } - virtual void ProtoSendMetaData(void* opaque, Extensible* target, const std::string& name, const std::string& value) + Version GetVersion() { - User* user = static_cast(opaque); - ServerInstance->DumpText(user, std::string(":") + ServerInstance->Config->ServerName + " 304 " + std::string(user->nick) - + " :CHECK meta:" + name + " " + value); - mycommand.meta_seen.insert(name); + return Version("CHECK command, view user/channel details", VF_VENDOR|VF_OPTCOMMON); } - virtual std::string ProtoTranslate(Extensible* item) + std::string ProtoTranslate(Extensible* item) { User* u = dynamic_cast(item); Channel* c = dynamic_cast(item);