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/chanserv | |
| 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/chanserv')
| -rw-r--r-- | modules/pseudoclients/chanserv/channel.cpp | 18 | ||||
| -rw-r--r-- | modules/pseudoclients/chanserv/chanserv.cpp | 41 |
2 files changed, 27 insertions, 32 deletions
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; |
