summaryrefslogtreecommitdiff
path: root/modules/pseudoclients
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-06-23 09:45:15 -0400
committerAdam <Adam@anope.org>2014-06-23 09:45:15 -0400
commitfd9bb0ea7e3c8a39f1632c2ebbdc25d0fac192a0 (patch)
tree1d68e86065e0b012aee41533d4f9b289ee0707ac /modules/pseudoclients
parent148b26f687ce85dc01e852a2358b03d493757ada (diff)
parent9a947fa4359c667be58ebae4634d9ac0e53d5db4 (diff)
Merge branch '2.0' into 2.1
Conflicts: cmake/Anope.cmake cmake/FindGettext.cmake include/access.h include/messages.h include/modes.h include/modules.h include/users.h modules/CMakeLists.txt modules/commands/bs_bot.cpp modules/commands/cs_access.cpp modules/commands/cs_ban.cpp modules/commands/cs_clone.cpp modules/commands/cs_flags.cpp modules/commands/cs_info.cpp modules/commands/cs_list.cpp modules/commands/cs_log.cpp modules/commands/cs_mode.cpp modules/commands/cs_status.cpp modules/commands/cs_suspend.cpp modules/commands/cs_updown.cpp modules/commands/cs_xop.cpp modules/commands/ms_check.cpp modules/commands/ns_access.cpp modules/commands/ns_cert.cpp modules/commands/ns_group.cpp modules/commands/ns_register.cpp modules/commands/ns_set.cpp modules/commands/ns_suspend.cpp modules/commands/os_session.cpp modules/commands/os_svs.cpp modules/extra/m_ldap_authentication.cpp modules/extra/m_regex_pcre.cpp modules/extra/m_sql_authentication.cpp modules/extra/stats/m_chanstats.cpp modules/protocol/bahamut.cpp modules/protocol/hybrid.cpp modules/protocol/inspircd12.cpp modules/protocol/inspircd20.cpp modules/protocol/unreal.cpp modules/pseudoclients/chanserv.cpp modules/pseudoclients/chanserv/channel.cpp modules/pseudoclients/nickserv/nickserv.cpp modules/webcpanel/pages/chanserv/access.cpp src/access.cpp src/bots.cpp src/channels.cpp src/language.cpp src/modes.cpp src/modulemanager.cpp src/process.cpp src/users.cpp src/version.sh
Diffstat (limited to 'modules/pseudoclients')
-rw-r--r--modules/pseudoclients/botserv/botserv.cpp2
-rw-r--r--modules/pseudoclients/chanserv/channel.cpp18
-rw-r--r--modules/pseudoclients/chanserv/chanserv.cpp41
-rw-r--r--modules/pseudoclients/nickserv/account.cpp4
-rw-r--r--modules/pseudoclients/nickserv/nickserv.cpp16
-rw-r--r--modules/pseudoclients/operserv.cpp9
6 files changed, 43 insertions, 47 deletions
diff --git a/modules/pseudoclients/botserv/botserv.cpp b/modules/pseudoclients/botserv/botserv.cpp
index cbb76599a..c4f1c3381 100644
--- a/modules/pseudoclients/botserv/botserv.cpp
+++ b/modules/pseudoclients/botserv/botserv.cpp
@@ -220,7 +220,7 @@ class BotServCore : public Module, public BotServ::BotServService
void OnUserKicked(const MessageSource &source, User *target, const Anope::string &channel, ChannelStatus &status, const Anope::string &kickmsg) 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/chanserv/channel.cpp b/modules/pseudoclients/chanserv/channel.cpp
index 5364075ae..98840186f 100644
--- a/modules/pseudoclients/chanserv/channel.cpp
+++ b/modules/pseudoclients/chanserv/channel.cpp
@@ -58,8 +58,7 @@ ChannelImpl::ChannelImpl(const ChanServ::Channel &ci)
ChanServ::AccessProvider *provider = taccess->provider;
ChanServ::ChanAccess *newaccess = provider->Create();
- newaccess->ci = this;
- newaccess->mask = taccess->mask;
+ newaccess->SetMask(taccess->Mask(), this);
newaccess->creator = taccess->creator;
newaccess->last_seen = taccess->last_seen;
newaccess->created = taccess->created;
@@ -192,7 +191,7 @@ Serializable* ChannelImpl::Unserialize(Serializable *obj, Serialize::Data &data)
}
catch (const ConvertException &) { }
}
- BotInfo *bi = BotInfo::Find(sbi);
+ BotInfo *bi = BotInfo::Find(sbi, true);
if (*ci->bi != bi)
{
if (bi)
@@ -322,19 +321,6 @@ BotInfo *ChannelImpl::WhoSends() const
void ChannelImpl::AddAccess(ChanServ::ChanAccess *taccess)
{
this->access->push_back(taccess);
-
- const NickServ::Nick *na = NickServ::FindNick(taccess->mask);
- if (na != NULL)
- {
- na->nc->AddChannelReference(this);
- taccess->nc = na->nc;
- }
- else
- {
- ChanServ::Channel *ci = ChanServ::Find(taccess->mask);
- if (ci != NULL)
- ci->AddChannelReference(this->name);
- }
}
ChanServ::ChanAccess *ChannelImpl::GetAccess(unsigned index) const
diff --git a/modules/pseudoclients/chanserv/chanserv.cpp b/modules/pseudoclients/chanserv/chanserv.cpp
index a667fb08d..660fab1b6 100644
--- a/modules/pseudoclients/chanserv/chanserv.cpp
+++ b/modules/pseudoclients/chanserv/chanserv.cpp
@@ -228,33 +228,40 @@ class ChanServCore : public Module
if (it != access->ci->access->end())
access->ci->access->erase(it);
- const NickServ::Nick *na = NickServ::FindNick(access->mask);
+ const NickServ::Nick *na = NickServ::FindNick(access->Mask());
if (na != NULL)
na->nc->RemoveChannelReference(access->ci);
else
{
- ChanServ::Channel *c = this->Find(access->mask);
+ ChanServ::Channel *c = this->Find(access->Mask());
if (c)
c->RemoveChannelReference(access->ci->name);
}
}
}
- void Serialize(const ChanServ::ChanAccess *, Serialize::Data &data) override
+ void Serialize(const ChanServ::ChanAccess *access, Serialize::Data &data) override
{
+ data["provider"] << access->provider->name;
+ data["ci"] << access->ci->name;
+ data["mask"] << access->Mask();
+ data["creator"] << access->creator;
+ data.SetType("last_seen", Serialize::Data::DT_INT); data["last_seen"] << access->last_seen;
+ data.SetType("created", Serialize::Data::DT_INT); data["created"] << access->created;
+ data["data"] << access->AccessSerialize();
}
bool Matches(const ChanServ::ChanAccess *access, const User *u, const NickServ::Account *acc, ChanServ::ChanAccess::Path &p) override
{
- if (access->nc)
- return access->nc == acc;
+ if (access->GetAccount())
+ return access->GetAccount() == acc;
if (u)
{
- bool is_mask = access->mask.find_first_of("!@?*") != Anope::string::npos;
- if (is_mask && Anope::Match(u->nick, access->mask))
+ bool is_mask = access->Mask().find_first_of("!@?*") != Anope::string::npos;
+ if (is_mask && Anope::Match(u->nick, access->Mask()))
return true;
- else if (Anope::Match(u->GetDisplayedMask(), access->mask))
+ else if (Anope::Match(u->GetDisplayedMask(), access->Mask()))
return true;
}
@@ -263,14 +270,14 @@ class ChanServCore : public Module
for (unsigned i = 0; i < acc->aliases->size(); ++i)
{
const NickServ::Nick *na = acc->aliases->at(i);
- if (Anope::Match(na->nick, access->mask))
+ if (Anope::Match(na->nick, access->Mask()))
return true;
}
}
- if (IRCD->IsChannelValid(access->mask))
+ if (IRCD->IsChannelValid(access->Mask()))
{
- ChanServ::Channel *tci = Find(access->mask);
+ ChanServ::Channel *tci = Find(access->Mask());
if (tci)
{
for (unsigned i = 0; i < tci->GetAccessCount(); ++i)
@@ -315,7 +322,9 @@ class ChanServCore : public Module
else
access = aprovider->Create();
access->ci = ci;
- data["mask"] >> access->mask;
+ Anope::string m;
+ data["mask"] >> m;
+ access->SetMask(m, ci);
data["creator"] >> access->creator;
data["last_seen"] >> access->last_seen;
data["created"] >> access->created;
@@ -413,7 +422,7 @@ class ChanServCore : public Module
for (unsigned j = 0; j < ci->GetAccessCount(); ++j)
{
const ChanServ::ChanAccess *ca = ci->GetAccess(j);
- const NickServ::Account *anc = NickServ::FindAccount(ca->mask);
+ const NickServ::Account *anc = ca->GetAccount();
if (!anc || (!anc->IsServicesOper() && max_reg && anc->channelcount >= max_reg) || (anc == nc))
continue;
@@ -421,7 +430,7 @@ class ChanServCore : public Module
highest = ca;
}
if (highest)
- newowner = NickServ::FindAccount(highest->mask);
+ newowner = highest->GetAccount();
}
if (newowner)
@@ -445,7 +454,7 @@ class ChanServCore : public Module
for (unsigned j = 0; j < ci->GetAccessCount(); ++j)
{
const ChanServ::ChanAccess *ca = ci->GetAccess(j);
- const NickServ::Account *anc = NickServ::FindAccount(ca->mask);
+ const NickServ::Account *anc = ca->GetAccount();
if (anc && anc == nc)
{
@@ -483,7 +492,7 @@ class ChanServCore : public Module
{
ChanServ::ChanAccess *a = c->GetAccess(j);
- if (a->mask.equals_ci(ci->name))
+ if (a->Mask().equals_ci(ci->name))
{
delete a;
break;
diff --git a/modules/pseudoclients/nickserv/account.cpp b/modules/pseudoclients/nickserv/account.cpp
index 55c537a0c..675a58acb 100644
--- a/modules/pseudoclients/nickserv/account.cpp
+++ b/modules/pseudoclients/nickserv/account.cpp
@@ -165,6 +165,10 @@ void AccountImpl::SetDisplay(const NickServ::Nick *na)
NickServ::nickcore_map& map = NickServ::service->GetAccountList();
+ /* this affects the serialized aliases */
+ for (unsigned i = 0; i < aliases->size(); ++i)
+ aliases->at(i)->QueueUpdate();
+
/* Remove the core from the list */
map.erase(this->display);
diff --git a/modules/pseudoclients/nickserv/nickserv.cpp b/modules/pseudoclients/nickserv/nickserv.cpp
index 75d68c430..895fc2937 100644
--- a/modules/pseudoclients/nickserv/nickserv.cpp
+++ b/modules/pseudoclients/nickserv/nickserv.cpp
@@ -29,7 +29,7 @@ class NickServCollide : public Timer
Reference<NickServ::Nick> na;
public:
- NickServCollide(NickServ::NickServService *nss, User *user, NickServ::Nick *nick, time_t delay) : Timer(delay), service(nss), u(user), ts(user->timestamp), na(nick)
+ NickServCollide(Module *me, NickServ::NickServService *nss, User *user, NickServ::Nick *nick, time_t delay) : Timer(me, delay), service(nss), u(user), ts(user->timestamp), na(nick)
{
}
@@ -52,7 +52,7 @@ class NickServHeld : public Timer
Reference<NickServ::Nick> na;
Anope::string nick;
public:
- NickServHeld(NickServ::Nick *n, long l) : Timer(l), na(n), nick(na->nick)
+ NickServHeld(Module *me, NickServ::Nick *n, long l) : Timer(me, l), na(n), nick(na->nick)
{
n->Extend<bool>("HELD");
}
@@ -74,8 +74,8 @@ class NickServRelease : public User, public Timer
Anope::string nick;
public:
- NickServRelease(NickServ::Nick *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get<const Anope::string>("enforceruser", "user"),
- Config->GetModule("nickserv")->Get<const Anope::string>("enforcerhost", "services.localhost.net"), "", "", Me, "Services Enforcer", Anope::CurTime, "", Servers::TS6_UID_Retrieve(), NULL), Timer(delay), nick(na->nick)
+ NickServRelease(Module *me, NickServ::Nick *na, time_t delay) : User(na->nick, Config->GetModule("nickserv")->Get<const Anope::string>("enforceruser", "user"),
+ Config->GetModule("nickserv")->Get<const Anope::string>("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<NickServRelease *>::iterator nit = NickServReleases.find(this->nick);
@@ -139,12 +139,12 @@ class NickServCore : public Module, public NickServ::NickServService
{
collided.Unset(na);
- new NickServHeld(na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m"));
+ new NickServHeld(this, na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m"));
if (IRCD->CanSVSHold)
IRCD->SendSVSHold(na->nick, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m"));
else
- new NickServRelease(na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m"));
+ new NickServRelease(this, na, Config->GetModule("nickserv")->Get<time_t>("releasetimeout", "1m"));
}
}
@@ -249,13 +249,13 @@ class NickServCore : public Module, public NickServ::NickServService
{
time_t killquick = Config->GetModule("nickserv")->Get<time_t>("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<time_t>("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);
}
}
diff --git a/modules/pseudoclients/operserv.cpp b/modules/pseudoclients/operserv.cpp
index 428484f1b..2f0eaa0fc 100644
--- a/modules/pseudoclients/operserv.cpp
+++ b/modules/pseudoclients/operserv.cpp
@@ -55,13 +55,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;