bool InspIRCd::NickMatchesEveryone(const std::string &nick, User* user) { long matches = 0; ConfigTag* insane = Config->ConfValue("insane"); if (insane->getBool("nickmasks")) return false; float itrigger = insane->getFloat("trigger", 95.5); for (user_hash::iterator u = this->Users->clientlist->begin(); u != this->Users->clientlist->end(); u++) { if (InspIRCd::Match(u->second->nick, nick)) matches++; } if (!matches) return false; float percent = ((float)matches / (float)this->Users->clientlist->size()) * 100; if (percent > itrigger) { SNO->WriteToSnoMask('a', "\2WARNING\2: %s tried to set a Q line mask of %s, which covers %.2f%% of the network!",user->nick.c_str(),nick.c_str(),percent); return true; } return false; }
bool InsaneBan::MatchesEveryone(const std::string& mask, MatcherBase& test, User* user, const char* bantype, const char* confkey) { ConfigTag* insane = ServerInstance->Config->ConfValue("insane"); if (insane->getBool(confkey)) return false; float itrigger = insane->getFloat("trigger", 95.5); long matches = test.Run(mask); if (!matches) return false; float percent = ((float)matches / (float)ServerInstance->Users->GetUsers().size()) * 100; if (percent > itrigger) { ServerInstance->SNO->WriteToSnoMask('a', "\2WARNING\2: %s tried to set a %s-line mask of %s, which covers %.2f%% of the network!", user->nick.c_str(), bantype, mask.c_str(), percent); return true; } return false; }