/* * InspIRCd -- Internet Relay Chat Daemon * * Copyright (C) 2010 Daniel De Graaf * Copyright (C) 2007 Craig Edwards * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public * License as published by the Free Software Foundation, version 2. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #include "inspircd.h" #include "main.h" #include "utils.h" #include "link.h" ModResult ModuleSpanningTree::OnStats(Stats::Context& stats) { if ((stats.GetSymbol() == 'c') || (stats.GetSymbol() == 'n')) { for (std::vector >::iterator i = Utils->LinkBlocks.begin(); i != Utils->LinkBlocks.end(); ++i) { Link* L = *i; std::string ipaddr = "*@"; if (L->HiddenFromStats) ipaddr.append(""); else ipaddr.append(L->IPAddr); const std::string hook = (L->Hook.empty() ? "plaintext" : L->Hook); stats.AddRow(213, stats.GetSymbol(), ipaddr, '*', L->Name.c_str(), L->Port, hook); if (stats.GetSymbol() == 'c') stats.AddRow(244, 'H', '*', '*', L->Name.c_str()); } return MOD_RES_DENY; } else if (stats.GetSymbol() == 'U') { ConfigTagList tags = ServerInstance->Config->ConfTags("uline"); for (ConfigIter i = tags.first; i != tags.second; ++i) { std::string name = i->second->getString("server"); if (!name.empty()) stats.AddRow(248, 'U', name); } return MOD_RES_DENY; } return MOD_RES_PASSTHRU; }