diff options
| author | Adam <Adam@anope.org> | 2014-06-23 09:45:15 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2014-06-23 09:45:15 -0400 |
| commit | fd9bb0ea7e3c8a39f1632c2ebbdc25d0fac192a0 (patch) | |
| tree | 1d68e86065e0b012aee41533d4f9b289ee0707ac /modules/pseudoclients | |
| parent | 148b26f687ce85dc01e852a2358b03d493757ada (diff) | |
| parent | 9a947fa4359c667be58ebae4634d9ac0e53d5db4 (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.cpp | 2 | ||||
| -rw-r--r-- | modules/pseudoclients/chanserv/channel.cpp | 18 | ||||
| -rw-r--r-- | modules/pseudoclients/chanserv/chanserv.cpp | 41 | ||||
| -rw-r--r-- | modules/pseudoclients/nickserv/account.cpp | 4 | ||||
| -rw-r--r-- | modules/pseudoclients/nickserv/nickserv.cpp | 16 | ||||
| -rw-r--r-- | modules/pseudoclients/operserv.cpp | 9 |
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; |
