]> git.netwichtig.de Git - user/henk/code/inspircd.git/blobdiff - src/modules/m_check.cpp
Increase penalty for KNOCK
[user/henk/code/inspircd.git] / src / modules / m_check.cpp
index 0a0ecab2bdcf12fc01cff4f85482c15cf00e247f..231064431c8a6752398318acb1b317f10ae83c1a 100644 (file)
@@ -2,7 +2,7 @@
  *       | Inspire Internet Relay Chat Daemon |
  *       +------------------------------------+
  *
- *  InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ *  InspIRCd: (C) 2002-2010 InspIRCd Development Team
  * See: http://wiki.inspircd.org/Credits
  *
  * This program is free but copyrighted software; see
@@ -41,9 +41,9 @@ class CommandCheck : public Command
                        ExtensionItem* item = i->first;
                        std::string value = item->serialize(FORMAT_USER, ext, i->second);
                        if (!value.empty())
-                               user->SendText(checkstr + " meta:" + item->key + " " + value);
-                       else if (!item->key.empty())
-                               dumpkeys << " " << item->key;
+                               user->SendText(checkstr + " meta:" + item->name + " " + value);
+                       else if (!item->name.empty())
+                               dumpkeys << " " << item->name;
                }
                if (!dumpkeys.str().empty())
                        user->SendText(checkstr + " metadata", dumpkeys);
@@ -157,6 +157,20 @@ class CommandCheck : public Command
                                user->SendText(checkstr + " member " + tmpbuf);
                        }
 
+                       irc::modestacker modestack(true);
+                       std::string letter_b("b");
+                       for(BanList::iterator b = targchan->bans.begin(); b != targchan->bans.end(); ++b)
+                       {
+                               modestack.Push('b', b->data);
+                       }
+                       std::vector<std::string> stackresult;
+                       std::vector<TranslateType> dummy;
+                       while (modestack.GetStackedLine(stackresult))
+                       {
+                               creator->ProtoSendMode(user, TYPE_CHANNEL, targchan, stackresult, dummy);
+                               stackresult.clear();
+                       }
+                       FOREACH_MOD(I_OnSyncChannel,OnSyncChannel(targchan,creator,user));
                        dumpExt(user, checkstr, targchan);
                }
                else
@@ -211,6 +225,22 @@ class ModuleCheck : public Module
        {
        }
 
+       void ProtoSendMode(void* uv, TargetTypeFlags, void*, const std::vector<std::string>& result, const std::vector<TranslateType>&)
+       {
+               User* user = (User*)uv;
+               std::string checkstr(":");
+               checkstr.append(ServerInstance->Config->ServerName);
+               checkstr.append(" 304 ");
+               checkstr.append(user->nick);
+               checkstr.append(" :CHECK modelist");
+               for(unsigned int i=0; i < result.size(); i++)
+               {
+                       checkstr.append(" ");
+                       checkstr.append(result[i]);
+               }
+               user->SendText(checkstr);
+       }
+
        Version GetVersion()
        {
                return Version("CHECK command, view user/channel details", VF_VENDOR|VF_OPTCOMMON);