if (InspIRCd::Match(u->GetFullHost(), matchtext) || InspIRCd::Match(u->GetFullRealHost(), matchtext) || InspIRCd::Match(u->nick+"!"+u->ident+"@"+u->GetIPString(), matchtext))
return true;
+ if (InspIRCd::MatchCIDR(u->GetIPString(), matchtext, ascii_case_insensitive_map))
+ return true;
+
return false;
}
if (parameters.size() == 1)
{
- if (ServerInstance->XLines->DelLine(target.c_str(), "SHUN", user))
+ if (ServerInstance->XLines->DelLine(parameters[0].c_str(), "SHUN", user))
+ {
+ ServerInstance->SNO->WriteToSnoMask('x', "%s removed SHUN on %s", user->nick.c_str(), parameters[0].c_str());
+ }
+ else if (ServerInstance->XLines->DelLine(target.c_str(), "SHUN", user))
{
- ServerInstance->SNO->WriteToSnoMask('x',"%s removed SHUN on %s",user->nick.c_str(),target.c_str());
+ ServerInstance->SNO->WriteToSnoMask('x',"%s removed SHUN on %s", user->nick.c_str(), target.c_str());
}
else
{
- user->WriteNotice("*** Shun " + target + " not found in list, try /stats H.");
+ user->WriteNotice("*** Shun " + parameters[0] + " not found in list, try /stats H.");
return CMD_FAILURE;
}
}
ServerInstance->XLines->UnregisterFactory(&f);
}
- void Prioritize()
+ void Prioritize() CXX11_OVERRIDE
{
Module* alias = ServerInstance->Modules->Find("m_alias.so");
ServerInstance->Modules->SetPriority(this, I_OnPreCommand, PRIORITY_BEFORE, alias);
ShunEnabledCommands.clear();
- std::stringstream dcmds(cmds);
+ irc::spacesepstream dcmds(cmds);
std::string thiscmd;
- while (dcmds >> thiscmd)
+ while (dcmds.GetToken(thiscmd))
{
ShunEnabledCommands.insert(thiscmd);
}