From df321a118e7dd44dcd3a389f8ee75e9ff915b55e Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 14 May 2014 19:10:23 -0400 Subject: Fix access lists showing the wrong mask if the display nick for a group expires but the group still exists. This can cause access entries for nicks to not be deleted whenever the nicks are deleted. --- modules/pseudoclients/chanserv.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'modules/pseudoclients') diff --git a/modules/pseudoclients/chanserv.cpp b/modules/pseudoclients/chanserv.cpp index 250296f55..3640a006c 100644 --- a/modules/pseudoclients/chanserv.cpp +++ b/modules/pseudoclients/chanserv.cpp @@ -154,7 +154,7 @@ class ChanServCore : public Module, public ChanServService for (unsigned j = 0; j < ci->GetAccessCount(); ++j) { const ChanAccess *ca = ci->GetAccess(j); - const NickCore *anc = NickCore::Find(ca->mask); + NickCore *anc = ca->GetAccount(); if (!anc || (!anc->IsServicesOper() && max_reg && anc->channelcount >= max_reg) || (anc == nc)) continue; @@ -162,7 +162,7 @@ class ChanServCore : public Module, public ChanServService highest = ca; } if (highest) - newowner = NickCore::Find(highest->mask); + newowner = highest->GetAccount(); } if (newowner) @@ -186,9 +186,8 @@ class ChanServCore : public Module, public ChanServService for (unsigned j = 0; j < ci->GetAccessCount(); ++j) { const ChanAccess *ca = ci->GetAccess(j); - const NickCore *anc = NickCore::Find(ca->mask); - if (anc && anc == nc) + if (ca->GetAccount() == nc) { delete ci->EraseAccess(j); break; @@ -224,7 +223,7 @@ class ChanServCore : public Module, public ChanServService { ChanAccess *a = c->GetAccess(j); - if (a->mask.equals_ci(ci->name)) + if (a->Mask().equals_ci(ci->name)) { delete a; break; -- cgit From 866f3f32ab3713e9867747f150df3698e456744e Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 20 May 2014 21:10:49 -0400 Subject: Speed up akill xline checks Cache xline nick, user, host, etc instead of rebuilding it everytime its requested. Store users ip in sockaddr form and not string form to prevent having to rebuild sockaddrs when checking xlines. Also do not try to convert empty config values in Config::Get as this can be rather common if a non string configuration value is not set, and the cost of the ConvertException is great. --- modules/pseudoclients/operserv.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) (limited to 'modules/pseudoclients') diff --git a/modules/pseudoclients/operserv.cpp b/modules/pseudoclients/operserv.cpp index 1a07bb009..67eaecd45 100644 --- a/modules/pseudoclients/operserv.cpp +++ b/modules/pseudoclients/operserv.cpp @@ -53,13 +53,10 @@ class SGLineManager : public XLineManager if (!x->GetReal().empty() && !Anope::Match(u->realname, x->GetReal())) return false; - if (x->GetHost().find('/') != Anope::string::npos) - { - if (cidr(x->GetHost()).match(sockaddrs(u->ip))) - return true; - } + if (x->c && x->c->match(u->ip)) + return true; - if (x->GetHost().empty() || Anope::Match(u->host, x->GetHost()) || Anope::Match(u->ip, x->GetHost())) + if (x->GetHost().empty() || Anope::Match(u->host, x->GetHost()) || Anope::Match(u->ip.addr(), x->GetHost())) return true; return false; -- cgit From f627a3bacd0d058e94260dac1555790cafd9a926 Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 21 May 2014 08:50:40 -0400 Subject: Core prep for p10 stuff --- modules/pseudoclients/botserv.cpp | 2 +- modules/pseudoclients/nickserv.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) (limited to 'modules/pseudoclients') diff --git a/modules/pseudoclients/botserv.cpp b/modules/pseudoclients/botserv.cpp index 144433631..48d604a6c 100644 --- a/modules/pseudoclients/botserv.cpp +++ b/modules/pseudoclients/botserv.cpp @@ -198,7 +198,7 @@ class BotServCore : public Module void OnUserKicked(const MessageSource &source, User *target, const Anope::string &channel, ChannelStatus &status, const Anope::string &kickmsg) anope_override { - BotInfo *bi = BotInfo::Find(target->nick); + BotInfo *bi = BotInfo::Find(target->GetUID()); if (bi) /* Bots get rejoined */ bi->Join(channel, &status); diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index 0c314e500..e5ae04091 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -67,7 +67,7 @@ class NickServRelease : public User, public Timer public: NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get("enforceruser", "user"), - Config->GetModule("nickserv")->Get("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", Servers::TS6_UID_Retrieve(), NULL), Timer(delay), nick(na->nick) + Config->GetModule("nickserv")->Get("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", IRCD->UID_Retrieve(), NULL), Timer(delay), nick(na->nick) { /* Erase the current release timer and use the new one */ Anope::map::iterator nit = NickServReleases.find(this->nick); -- cgit From a6af422184034bb62421bdf4adce7c9eaede8aee Mon Sep 17 00:00:00 2001 From: Adam Date: Tue, 27 May 2014 12:48:41 -0400 Subject: Set timer owner for nickserv timers --- modules/pseudoclients/nickserv.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'modules/pseudoclients') diff --git a/modules/pseudoclients/nickserv.cpp b/modules/pseudoclients/nickserv.cpp index e5ae04091..25c29a52f 100644 --- a/modules/pseudoclients/nickserv.cpp +++ b/modules/pseudoclients/nickserv.cpp @@ -21,7 +21,7 @@ class NickServCollide : public Timer Reference na; public: - NickServCollide(NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(delay), service(nss), u(user), ts(user->timestamp), na(nick) + NickServCollide(Module *me, NickServService *nss, User *user, NickAlias *nick, time_t delay) : Timer(me, delay), service(nss), u(user), ts(user->timestamp), na(nick) { } @@ -44,7 +44,7 @@ class NickServHeld : public Timer Reference na; Anope::string nick; public: - NickServHeld(NickAlias *n, long l) : Timer(l), na(n), nick(na->nick) + NickServHeld(Module *me, NickAlias *n, long l) : Timer(me, l), na(n), nick(na->nick) { n->Extend("HELD"); } @@ -66,8 +66,8 @@ class NickServRelease : public User, public Timer Anope::string nick; public: - NickServRelease(NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get("enforceruser", "user"), - Config->GetModule("nickserv")->Get("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", IRCD->UID_Retrieve(), NULL), Timer(delay), nick(na->nick) + NickServRelease(Module *me, NickAlias *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get("enforceruser", "user"), + Config->GetModule("nickserv")->Get("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", IRCD->UID_Retrieve(), NULL), Timer(me, delay), nick(na->nick) { /* Erase the current release timer and use the new one */ Anope::map::iterator nit = NickServReleases.find(this->nick); @@ -103,12 +103,12 @@ class NickServCore : public Module, public NickServService { collided.Unset(na); - new NickServHeld(na, Config->GetModule("nickserv")->Get("releasetimeout", "1m")); + new NickServHeld(this, na, Config->GetModule("nickserv")->Get("releasetimeout", "1m")); if (IRCD->CanSVSHold) IRCD->SendSVSHold(na->nick, Config->GetModule("nickserv")->Get("releasetimeout", "1m")); else - new NickServRelease(na, Config->GetModule("nickserv")->Get("releasetimeout", "1m")); + new NickServRelease(this, na, Config->GetModule("nickserv")->Get("releasetimeout", "1m")); } } @@ -184,13 +184,13 @@ class NickServCore : public Module, public NickServService { time_t killquick = Config->GetModule("nickserv")->Get("killquick", "20s"); u->SendMessage(NickServ, _("If you do not change within %s, I will change your nick."), Anope::Duration(killquick, u->Account()).c_str()); - new NickServCollide(this, u, na, killquick); + new NickServCollide(this, this, u, na, killquick); } else { time_t kill = Config->GetModule("nickserv")->Get("kill", "60s"); u->SendMessage(NickServ, _("If you do not change within %s, I will change your nick."), Anope::Duration(kill, u->Account()).c_str()); - new NickServCollide(this, u, na, kill); + new NickServCollide(this, this, u, na, kill); } } -- cgit