X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fxline.cpp;h=33219b612014ffa726857e8bcdb1cd2e5d9d31b6;hb=f4472dd6dcdfbb5d4a2a50ddc615644c3b2c8145;hp=4bd3e51b587f85822410e645edc10f6aa9771446;hpb=590dd9292f0d3cdd95c3ba1786ad8ff9487bb400;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/xline.cpp b/src/xline.cpp index 4bd3e51b5..33219b612 100644 --- a/src/xline.cpp +++ b/src/xline.cpp @@ -3,7 +3,7 @@ * +------------------------------------+ * * InspIRCd: (C) 2002-2009 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -174,7 +174,11 @@ bool XLineManager::AddLine(XLine* line, User* user) ContainerIter x = lookup_lines.find(line->type); if (x != lookup_lines.end()) { - return false; + LookupIter i = x->second.find(line->Displayable()); + if (i != x->second.end()) + { + return false; + } } /*ELine* item = new ELine(ServerInstance, ServerInstance->Time(), duration, source, reason, ih.first.c_str(), ih.second.c_str());*/ @@ -338,6 +342,10 @@ void XLineManager::ApplyLines() { User* u = (User*)(*u2); + // Don't ban people who are exempt. + if (u->exempt) + continue; + for (std::vector::iterator i = pending_lines.begin(); i != pending_lines.end(); i++) { XLine *x = *i; @@ -434,7 +442,7 @@ bool XLine::IsBurstable() void XLine::DefaultApply(User* u, const std::string &line, bool bancache) { char sreason[MAXBUF]; - snprintf(sreason, MAXBUF, "%s-Lined: %s", line.c_str(), this->reason); + snprintf(sreason, MAXBUF, "%s-Lined: %s", line.c_str(), this->reason.c_str()); if (*ServerInstance->Config->MoronBanner) u->WriteServ("NOTICE %s :*** %s", u->nick.c_str(), ServerInstance->Config->MoronBanner); @@ -473,7 +481,7 @@ bool KLine::Matches(User *u) void KLine::Apply(User* u) { - DefaultApply(u, "K", (strcmp(this->identmask, "*") == 0) ? true : false); + DefaultApply(u, "K", (this->identmask == "*") ? true : false); } bool GLine::Matches(User *u) @@ -495,7 +503,7 @@ bool GLine::Matches(User *u) void GLine::Apply(User* u) { - DefaultApply(u, "G", (strcmp(this->identmask, "*") == 0) ? true : false); + DefaultApply(u, "G", (this->identmask == "*") ? true : false); } bool ELine::Matches(User *u) @@ -591,27 +599,32 @@ void ELine::OnAdd() void ELine::DisplayExpiry() { - ServerInstance->SNO->WriteToSnoMask('x',"Removing expired E-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,(long int)(ServerInstance->Time() - this->set_time)); + ServerInstance->SNO->WriteToSnoMask('x',"Removing expired E-Line %s@%s (set by %s %ld seconds ago)", + identmask.c_str(),hostmask.c_str(),source.c_str(),(long)(ServerInstance->Time() - this->set_time)); } void QLine::DisplayExpiry() { - ServerInstance->SNO->WriteToSnoMask('x',"Removing expired Q-Line %s (set by %s %ld seconds ago)",this->nick,this->source,(long int)(ServerInstance->Time() - this->set_time)); + ServerInstance->SNO->WriteToSnoMask('x',"Removing expired Q-Line %s (set by %s %ld seconds ago)", + nick.c_str(),source.c_str(),(long)(ServerInstance->Time() - this->set_time)); } void ZLine::DisplayExpiry() { - ServerInstance->SNO->WriteToSnoMask('x',"Removing expired Z-Line %s (set by %s %ld seconds ago)",this->ipaddr,this->source,(long int)(ServerInstance->Time() - this->set_time)); + ServerInstance->SNO->WriteToSnoMask('x',"Removing expired Z-Line %s (set by %s %ld seconds ago)", + ipaddr.c_str(),source.c_str(),(long)(ServerInstance->Time() - this->set_time)); } void KLine::DisplayExpiry() { - ServerInstance->SNO->WriteToSnoMask('x',"Removing expired K-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,(long int)(ServerInstance->Time() - this->set_time)); + ServerInstance->SNO->WriteToSnoMask('x',"Removing expired K-Line %s@%s (set by %s %ld seconds ago)", + identmask.c_str(),hostmask.c_str(),source.c_str(),(long)(ServerInstance->Time() - this->set_time)); } void GLine::DisplayExpiry() { - ServerInstance->SNO->WriteToSnoMask('x',"Removing expired G-Line %s@%s (set by %s %ld seconds ago)",this->identmask,this->hostmask,this->source,(long int)(ServerInstance->Time() - this->set_time)); + ServerInstance->SNO->WriteToSnoMask('x',"Removing expired G-Line %s@%s (set by %s %ld seconds ago)", + identmask.c_str(),hostmask.c_str(),source.c_str(),(long)(ServerInstance->Time() - this->set_time)); } const char* ELine::Displayable() @@ -631,12 +644,12 @@ const char* GLine::Displayable() const char* ZLine::Displayable() { - return ipaddr; + return ipaddr.c_str(); } const char* QLine::Displayable() { - return nick; + return nick.c_str(); } bool KLine::IsBurstable()