1
0
mirror of https://github.com/anope/anope.git synced 2026-06-30 12:26:38 +02:00

Fix a few of the earlier changes to os_forbid

This commit is contained in:
Adam
2013-04-13 16:36:39 -05:00
parent 81483ae5e7
commit baabc91ead
2 changed files with 19 additions and 18 deletions
+15 -17
View File
@@ -16,32 +16,31 @@
class MyForbidService : public ForbidService
{
Serialize::Checker<std::vector<ForbidData *>[FT_SIZE]> forbid_data;
Serialize::Checker<std::vector<ForbidData *>[FT_SIZE - 1]> forbid_data;
inline std::vector<ForbidData *>* forbids() { return *this->forbid_data; }
inline std::vector<ForbidData *>& forbids(unsigned t) { return (*this->forbid_data)[t - 1]; }
public:
MyForbidService(Module *m) : ForbidService(m), forbid_data("ForbidData") { }
void AddForbid(ForbidData *d) anope_override
{
this->forbids()[d->type].push_back(d);
this->forbids(d->type).push_back(d);
}
void RemoveForbid(ForbidData *d) anope_override
{
std::vector<ForbidData *>::iterator it = std::find(this->forbids()[d->type].begin(), this->forbids()[d->type].end(), d);
if (it != this->forbids()[d->type].end())
this->forbids()[d->type].erase(it);
std::vector<ForbidData *>::iterator it = std::find(this->forbids(d->type).begin(), this->forbids(d->type).end(), d);
if (it != this->forbids(d->type).end())
this->forbids(d->type).erase(it);
delete d;
}
ForbidData *FindForbid(const Anope::string &mask, ForbidType ftype) anope_override
{
const std::vector<ForbidData *> &forbids = this->forbids()[ftype];
for (unsigned i = forbids.size(); i > 0; --i)
for (unsigned i = this->forbids(ftype).size(); i > 0; --i)
{
ForbidData *d = forbids[i - 1];
ForbidData *d = this->forbids(ftype)[i - 1];
if (Anope::Match(mask, d->mask, false, true))
return d;
@@ -51,11 +50,11 @@ class MyForbidService : public ForbidService
std::vector<ForbidData *> GetForbids() anope_override
{
std::vector<ForbidData *> forbids;
for (unsigned j = 0; j < FT_SIZE; ++j)
for (unsigned i = this->forbids()[j].size(); i > 0; --i)
std::vector<ForbidData *> f;
for (unsigned j = FT_NICK; j < FT_SIZE; ++j)
for (unsigned i = this->forbids(j).size(); i > 0; --i)
{
ForbidData *d = this->forbids()[j].at(i - 1);
ForbidData *d = this->forbids(j).at(i - 1);
if (d->expires && Anope::CurTime >= d->expires)
{
@@ -68,15 +67,14 @@ class MyForbidService : public ForbidService
ftype = "email";
Log(LOG_NORMAL, "expire/forbid") << "Expiring forbid for " << d->mask << " type " << ftype;
std::vector<ForbidData *> &forbids = this->forbids()[j];
forbids.erase(forbids.begin() + i - 1);
this->forbids(j).erase(this->forbids(j).begin() + i - 1);
delete d;
}
else
forbids.push_back(d);
f.push_back(d);
}
return forbids;
return f;
}
};
+4 -1
View File
@@ -3,7 +3,7 @@
enum ForbidType
{
FT_NICK,
FT_NICK = 1,
FT_CHAN,
FT_EMAIL,
FT_REGISTER,
@@ -70,6 +70,9 @@ Serializable* ForbidData::Unserialize(Serializable *obj, Serialize::Data &data)
data["type"] >> t;
fb->type = static_cast<ForbidType>(t);
if (t > FT_SIZE - 1)
return NULL;
if (!obj)
forbid_service->AddForbid(fb);
return fb;