User* GetUser() const { return user; }
+ void DumpListMode(const ListModeBase::ModeList* list)
+ {
+ if (!list)
+ return;
+
+ CheckContext::List modelist(*this, "modelist");
+ for (ListModeBase::ModeList::const_iterator i = list->begin(); i != list->end(); ++i)
+ modelist.Add(i->mask);
+
+ modelist.Flush();
+ }
+
+ void DumpExt(Extensible* ext)
+ {
+ CheckContext::List extlist(*this, "metadata");
+ for(Extensible::ExtensibleStore::const_iterator i = ext->GetExtList().begin(); i != ext->GetExtList().end(); ++i)
+ {
+ ExtensionItem* item = i->first;
+ std::string value = item->serialize(FORMAT_USER, ext, i->second);
+ if (!value.empty())
+ Write("meta:" + item->name, value);
+ else if (!item->name.empty())
+ extlist.Add(item->name);
+ }
+
+ extlist.Flush();
+ }
+
class List : public Numeric::GenericBuilder<' ', false, Numeric::WriteRemoteNumericSink>
{
public:
return ret;
}
- static void dumpListMode(CheckContext& context, const ListModeBase::ModeList* list)
- {
- if (!list)
- return;
-
- CheckContext::List modelist(context, "modelist");
- for (ListModeBase::ModeList::const_iterator i = list->begin(); i != list->end(); ++i)
- modelist.Add(i->mask);
-
- modelist.Flush();
- }
-
public:
CommandCheck(Module* parent)
: Command(parent,"CHECK", 1)
return ret;
}
- void dumpExt(CheckContext& context, Extensible* ext)
- {
- CheckContext::List extlist(context, "metadata");
- for(Extensible::ExtensibleStore::const_iterator i = ext->GetExtList().begin(); i != ext->GetExtList().end(); i++)
- {
- ExtensionItem* item = i->first;
- std::string value = item->serialize(FORMAT_USER, ext, i->second);
- if (!value.empty())
- context.Write("meta:" + item->name, value);
- else if (!item->name.empty())
- extlist.Add(item->name);
- }
-
- extlist.Flush();
- }
-
CmdResult Handle (const std::vector<std::string> ¶meters, User *user)
{
if (parameters.size() > 1 && parameters[1] != ServerInstance->Config->ServerName)
chanlist.Flush();
- dumpExt(context, targuser);
+ context.DumpExt(targuser);
}
else if (targchan)
{
const ModeParser::ListModeList& listmodes = ServerInstance->Modes->GetListModes();
for (ModeParser::ListModeList::const_iterator i = listmodes.begin(); i != listmodes.end(); ++i)
- dumpListMode(context, (*i)->GetList(targchan));
+ context.DumpListMode((*i)->GetList(targchan));
- dumpExt(context, targchan);
+ context.DumpExt(targchan);
}
else
{
RouteDescriptor GetRouting(User* user, const std::vector<std::string>& parameters)
{
- if (parameters.size() > 1)
+ if ((parameters.size() > 1) && (parameters[1].find('.') != std::string::npos))
return ROUTE_OPT_UCAST(parameters[1]);
return ROUTE_LOCALONLY;
}