-bool InspIRCd::IPMatchesEveryone(const std::string &ip, userrec* user)
-{
- char itrigger[MAXBUF];
- long matches = 0;
-
- if (!Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF))
- strlcpy(itrigger,"95.5",MAXBUF);
-
- if (Config->ConfValueBool(Config->config_data, "insane","ipmasks",0))
- return false;
-
- for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
- {
- if (match(u->second->GetIPString(),ip.c_str(),true))
- matches++;
- }
-
- float percent = ((float)matches / (float)clientlist.size()) * 100;
- if (percent > (float)atof(itrigger))
- {
- WriteOpers("*** \2WARNING\2: %s tried to set a Z line mask of %s, which covers %.2f%% of the network!",user->nick,ip.c_str(),percent);
- return true;
- }
- return false;
-}
-
-bool InspIRCd::NickMatchesEveryone(const std::string &nick, userrec* user)
-{
- char itrigger[MAXBUF];
- long matches = 0;
-
- if (!Config->ConfValue(Config->config_data, "insane","trigger",0,itrigger,MAXBUF))
- strlcpy(itrigger,"95.5",MAXBUF);
-
- if (Config->ConfValueBool(Config->config_data, "insane","nickmasks",0))
- return false;
-
- for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
- {
- if (match(u->second->nick,nick.c_str()))
- matches++;
- }
-
- float percent = ((float)matches / (float)clientlist.size()) * 100;
- if (percent > (float)atof(itrigger))
- {
- WriteOpers("*** \2WARNING\2: %s tried to set a Q line mask of %s, which covers %.2f%% of the network!",user->nick,nick.c_str(),percent);
- return true;
- }
- return false;
-}
-
-/* LoopCall is used to call a command classes handler repeatedly based on the contents of a comma seperated list.
- * There are two overriden versions of this method, one of which takes two potential lists and the other takes one.
- * We need a version which takes two potential lists for JOIN, because a JOIN may contain two lists of items at once,
- * the channel names and their keys as follows:
- * JOIN #chan1,#chan2,#chan3 key1,,key3
- * Therefore, we need to deal with both lists concurrently. The first instance of this method does that by creating
- * two instances of irc::commasepstream and reading them both together until the first runs out of tokens.
- * The second version is much simpler and just has the one stream to read, and is used in NAMES, WHOIS, PRIVMSG etc.
- * Both will only parse until they reach ServerInstance->Config->MaxTargets number of targets, to stop abuse via spam.
- */
-int CommandParser::LoopCall(userrec* user, command_t* CommandObj, const char** parameters, int pcnt, unsigned int splithere, unsigned int extra)
-{
- /* First check if we have more than one item in the list, if we don't we return zero here and the handler