bool XLineManager::AddLine(XLine* line, User* user)
{
- /*IdentHostPair ih = IdentSplit(hostmask);*/
-
ServerInstance->BanCache->RemoveEntries(line->type, false); // XXX perhaps remove ELines here?
- if (DelLine(line->Displayable(), line->type, user, true))
- return false;
+ /* If the line exists, check if its an expired line */
+ ContainerIter x = lookup_lines.find(line->type);
+ if (x != lookup_lines.end())
+ {
+ LookupIter i = x->second.find(line->Displayable());
+ if (i != x->second.end())
+ {
+ if (i->second->duration && ServerInstance->Time() > i->second->expiry)
+ ExpireLine(x, i);
+ else
+ return false;
+ }
+ }
/*ELine* item = new ELine(ServerInstance, ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());*/
XLineFactory* xlf = GetFactory(line->type);
if (u->exempt)
return false;
- if (InspIRCd::Match(u->ident, this->identmask, NULL))
+ if (InspIRCd::Match(u->ident, this->identmask))
{
- if (InspIRCd::MatchCIDR(u->host, this->hostmask, NULL) ||
- InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask, NULL))
+ if (InspIRCd::MatchCIDR(u->host, this->hostmask) ||
+ InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask))
{
return true;
}
if (u->exempt)
return false;
- if (InspIRCd::Match(u->ident, this->identmask, NULL))
+ if (InspIRCd::Match(u->ident, this->identmask))
{
- if (InspIRCd::MatchCIDR(u->host, this->hostmask, NULL) ||
- InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask, NULL))
+ if (InspIRCd::MatchCIDR(u->host, this->hostmask) ||
+ InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask))
{
return true;
}
if (u->exempt)
return false;
- if (InspIRCd::Match(u->ident, this->identmask, NULL))
+ if (InspIRCd::Match(u->ident, this->identmask))
{
- if (InspIRCd::MatchCIDR(u->host, this->hostmask, NULL) ||
- InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask, NULL))
+ if (InspIRCd::MatchCIDR(u->host, this->hostmask) ||
+ InspIRCd::MatchCIDR(u->GetIPString(), this->hostmask))
{
return true;
}
if (u->exempt)
return false;
- if (InspIRCd::MatchCIDR(u->GetIPString(), this->ipaddr, NULL))
+ if (InspIRCd::MatchCIDR(u->GetIPString(), this->ipaddr))
return true;
else
return false;
bool QLine::Matches(User *u)
{
- if (u->exempt)
- return false;
-
- if (InspIRCd::Match(u->nick, this->nick, lowermap))
+ if (InspIRCd::Match(u->nick, this->nick))
return true;
return false;
bool ZLine::Matches(const std::string &str)
{
- if (InspIRCd::MatchCIDR(str, this->ipaddr, NULL))
+ if (InspIRCd::MatchCIDR(str, this->ipaddr))
return true;
else
return false;
bool QLine::Matches(const std::string &str)
{
- if (InspIRCd::Match(str, this->nick, lowermap))
+ if (InspIRCd::Match(str, this->nick))
return true;
return false;
bool ELine::Matches(const std::string &str)
{
- return (InspIRCd::MatchCIDR(str, matchtext, NULL));
+ return (InspIRCd::MatchCIDR(str, matchtext));
}
bool KLine::Matches(const std::string &str)
{
- return (InspIRCd::MatchCIDR(str.c_str(), matchtext, NULL));
+ return (InspIRCd::MatchCIDR(str.c_str(), matchtext));
}
bool GLine::Matches(const std::string &str)
{
- return (InspIRCd::MatchCIDR(str, matchtext, NULL));
+ return (InspIRCd::MatchCIDR(str, matchtext));
}
void ELine::OnAdd()