diff options
| author | Adam <Adam@anope.org> | 2014-11-24 14:27:23 -0500 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2014-11-24 14:27:23 -0500 |
| commit | 42238034490fb5479d787bd1695750387d508200 (patch) | |
| tree | c93c62e0e1c936e656ae5b9ee1b62380ce2a194c /modules/webcpanel | |
| parent | d492923610d9c9146b2a2b63de38deab2cfd4ca7 (diff) | |
Rewrite serializable to have field level granularity
Represent serializable objects in a digraph, and as a result made most
object relationships implicitly defined, and use the graph to trace
references between objects to determine relationships. Edges may
also be marked as having a dependency of the object they point to,
which allows for automatic cleanup and deletion of most objects when
no longer needed.
Additionally, this allows not having to require in-memory copies of
everything when using external databases. db_sql has been rewritten
for this and now always requires a database to function. db_sql with
MySQL now requires InnoDB to make use of transactions and foreign
key constraints.
Diffstat (limited to 'modules/webcpanel')
| -rw-r--r-- | modules/webcpanel/pages/chanserv/access.cpp | 24 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/akick.cpp | 22 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/drop.cpp | 15 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/modes.cpp | 12 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/set.cpp | 90 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/utils.cpp | 17 | ||||
| -rw-r--r-- | modules/webcpanel/pages/hostserv/request.cpp | 2 | ||||
| -rw-r--r-- | modules/webcpanel/pages/index.cpp | 2 | ||||
| -rw-r--r-- | modules/webcpanel/pages/logout.cpp | 4 | ||||
| -rw-r--r-- | modules/webcpanel/pages/memoserv/memos.cpp | 36 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/access.cpp | 9 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/alist.cpp | 19 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/cert.cpp | 11 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/info.cpp | 74 | ||||
| -rw-r--r-- | modules/webcpanel/pages/operserv/akill.cpp | 25 | ||||
| -rw-r--r-- | modules/webcpanel/webcpanel.cpp | 20 | ||||
| -rw-r--r-- | modules/webcpanel/webcpanel.h | 6 |
17 files changed, 189 insertions, 199 deletions
diff --git a/modules/webcpanel/pages/chanserv/access.cpp b/modules/webcpanel/pages/chanserv/access.cpp index 158a71637..27659344d 100644 --- a/modules/webcpanel/pages/chanserv/access.cpp +++ b/modules/webcpanel/pages/chanserv/access.cpp @@ -34,8 +34,8 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s return true; } - ::ChanServ::AccessGroup u_access = ci->AccessFor(na->nc); - bool has_priv = na->nc->IsServicesOper() && na->nc->o->ot->HasPriv("chanserv/access/modify"); + ::ChanServ::AccessGroup u_access = ci->AccessFor(na->GetAccount()); + bool has_priv = na->GetAccount()->IsServicesOper() && na->GetAccount()->o->GetType()->HasPriv("chanserv/access/modify"); if (!u_access.HasPriv("ACCESS_LIST") && !has_priv) { @@ -46,21 +46,22 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s replacements["ACCESS_LIST"] = "YES"; - const ::ChanServ::ChanAccess *highest = u_access.Highest(); + ::ChanServ::ChanAccess *highest = u_access.Highest(); if (u_access.HasPriv("ACCESS_CHANGE") || has_priv) { if (message.get_data["del"].empty() == false && message.get_data["mask"].empty() == false) { std::vector<Anope::string> params; - params.push_back(ci->name); + params.push_back(ci->GetName()); params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/access", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "ChanServ", "chanserv/access", params, replacements); } else if (message.post_data["mask"].empty() == false && message.post_data["access"].empty() == false && message.post_data["provider"].empty() == false) { +#if 0 // Generic access add code here, works with any provider (so we can't call a command exactly) ServiceReference<::ChanServ::AccessProvider> a("AccessProvider", "access/" + message.post_data["provider"]); @@ -92,8 +93,8 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s else if (!denied) { ::ChanServ::ChanAccess *new_acc = a->Create(); - new_acc->SetMask(message.post_data["mask"], ci); - new_acc->creator = na->nc->display; + //new_acc->SetMask(message.post_data["mask"], ci); + new_acc->SetCreator(na->GetAccount()->GetDisplay()); try { new_acc->AccessUnserialize(message.post_data["access"]); @@ -106,8 +107,8 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s } if (new_acc) { - new_acc->last_seen = 0; - new_acc->created = Anope::CurTime; + new_acc->SetLastSeen(0); + new_acc->SetCreated(Anope::CurTime); if ((!highest || *highest <= *new_acc) && !u_access.founder && !has_priv) delete new_acc; @@ -124,6 +125,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s } } } +#endif } } @@ -136,12 +138,14 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s replacements["MASKS"] = HTTPUtils::Escape(access->Mask()); replacements["ACCESSES"] = HTTPUtils::Escape(access->AccessSerialize()); - replacements["CREATORS"] = HTTPUtils::Escape(access->creator); + replacements["CREATORS"] = HTTPUtils::Escape(access->GetCreator()); } +#if 0 if (::ChanServ::service) for (::ChanServ::AccessProvider *p : ::ChanServ::service->GetProviders()) replacements["PROVIDERS"] = p->name; +#endif Page.Serve(server, page_name, client, message, reply, replacements); return true; diff --git a/modules/webcpanel/pages/chanserv/akick.cpp b/modules/webcpanel/pages/chanserv/akick.cpp index a77995048..0cfaaaba9 100644 --- a/modules/webcpanel/pages/chanserv/akick.cpp +++ b/modules/webcpanel/pages/chanserv/akick.cpp @@ -35,8 +35,8 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st return true; } - ::ChanServ::AccessGroup u_access = ci->AccessFor(na->nc); - bool has_priv = na->nc->IsServicesOper() && na->nc->o->ot->HasPriv("chanserv/access/modify"); + ::ChanServ::AccessGroup u_access = ci->AccessFor(na->GetAccount()); + bool has_priv = na->GetAccount()->IsServicesOper() && na->GetAccount()->o->GetType()->HasPriv("chanserv/access/modify"); if (!u_access.HasPriv("AKICK") && !has_priv) { @@ -50,22 +50,22 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st if (message.get_data["del"].empty() == false && message.get_data["mask"].empty() == false) { std::vector<Anope::string> params; - params.push_back(ci->name); + params.push_back(ci->GetName()); params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/akick", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "ChanServ", "chanserv/akick", params, replacements); } else if (message.post_data["mask"].empty() == false) { std::vector<Anope::string> params; - params.push_back(ci->name); + params.push_back(ci->GetName()); params.push_back("ADD"); params.push_back(message.post_data["mask"]); if (message.post_data["reason"].empty() == false) params.push_back(message.post_data["reason"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/akick", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "ChanServ", "chanserv/akick", params, replacements); } replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); @@ -74,12 +74,12 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st { AutoKick *ak = ci->GetAkick(i); - if (ak->nc) - replacements["MASKS"] = HTTPUtils::Escape(ak->nc->display); + if (ak->GetAccount()) + replacements["MASKS"] = HTTPUtils::Escape(ak->GetAccount()->GetDisplay()); else - replacements["MASKS"] = HTTPUtils::Escape(ak->mask); - replacements["CREATORS"] = HTTPUtils::Escape(ak->creator); - replacements["REASONS"] = HTTPUtils::Escape(ak->reason); + replacements["MASKS"] = HTTPUtils::Escape(ak->GetMask()); + replacements["CREATORS"] = HTTPUtils::Escape(ak->GetCreator()); + replacements["REASONS"] = HTTPUtils::Escape(ak->GetReason()); } Page.Serve(server, page_name, client, message, reply, replacements); diff --git a/modules/webcpanel/pages/chanserv/drop.cpp b/modules/webcpanel/pages/chanserv/drop.cpp index c81543c57..c546c0af5 100644 --- a/modules/webcpanel/pages/chanserv/drop.cpp +++ b/modules/webcpanel/pages/chanserv/drop.cpp @@ -25,23 +25,18 @@ bool WebCPanel::ChanServ::Drop::OnRequest(HTTPProvider *server, const Anope::str params.push_back(channel); params.push_back(channel); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/drop", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "ChanServ", "chanserv/drop", params, replacements); } else replacements["MESSAGES"] = "Invalid Confirmation"; } - std::deque<::ChanServ::Channel *> queue; - na->nc->GetChannelReferences(queue); - for (unsigned i = 0; i < queue.size(); ++i) - { - ::ChanServ::Channel *ci = queue[i]; - if ((ci->HasExt("SECUREFOUNDER") ? ci->AccessFor(na->nc).founder : ci->AccessFor(na->nc).HasPriv("FOUNDER")) || (na->nc->IsServicesOper() && na->nc->o->ot->HasCommand("chanserv/drop"))) + for (::ChanServ::Channel *ci : na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel)) + if ((ci->HasFieldS("SECUREFOUNDER") ? ci->AccessFor(na->GetAccount()).founder : ci->AccessFor(na->GetAccount()).HasPriv("FOUNDER")) || (na->GetAccount()->IsServicesOper() && na->GetAccount()->o->GetType()->HasCommand("chanserv/drop"))) { - replacements["CHANNEL_NAMES"] = ci->name; - replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->name); + replacements["CHANNEL_NAMES"] = ci->GetName(); + replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->GetName()); } - } if (message.get_data.count("channel") > 0) { diff --git a/modules/webcpanel/pages/chanserv/modes.cpp b/modules/webcpanel/pages/chanserv/modes.cpp index 6dd0db276..e9e2498a6 100644 --- a/modules/webcpanel/pages/chanserv/modes.cpp +++ b/modules/webcpanel/pages/chanserv/modes.cpp @@ -44,8 +44,8 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st return true; } - ::ChanServ::AccessGroup u_access = ci->AccessFor(na->nc); - bool has_priv = na->nc->IsServicesOper() && na->nc->o->ot->HasPriv("chanserv/administration"); + ::ChanServ::AccessGroup u_access = ci->AccessFor(na->GetAccount()); + bool has_priv = na->GetAccount()->IsServicesOper() && na->GetAccount()->o->GetType()->HasPriv("chanserv/administration"); if (!u_access.HasPriv("MODE") && !has_priv) { @@ -78,20 +78,20 @@ bool WebCPanel::ChanServ::Modes::OnRequest(HTTPProvider *server, const Anope::st if (message.get_data["del"].empty() == false && message.get_data["mask"].empty() == false) { std::vector<Anope::string> params; - params.push_back(ci->name); + params.push_back(ci->GetName()); params.push_back("SET"); params.push_back("-" + Anope::string(cm->mchar)); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "ChanServ", "chanserv/mode", params, replacements); } else if (message.post_data["mask"].empty() == false) { std::vector<Anope::string> params; - params.push_back(ci->name); + params.push_back(ci->GetName()); params.push_back("SET"); params.push_back("+" + Anope::string(cm->mchar)); params.push_back(message.post_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "ChanServ", "chanserv/mode", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "ChanServ", "chanserv/mode", params, replacements); } std::pair<Channel::ModeList::iterator, Channel::ModeList::iterator> ml = c->GetModeList(cm->name); diff --git a/modules/webcpanel/pages/chanserv/set.cpp b/modules/webcpanel/pages/chanserv/set.cpp index c2ea480d4..7e6453622 100644 --- a/modules/webcpanel/pages/chanserv/set.cpp +++ b/modules/webcpanel/pages/chanserv/set.cpp @@ -36,7 +36,7 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri replacements["OKAY"]; - if (ci->AccessFor(na->nc).HasPriv("SET")) + if (ci->AccessFor(na->GetAccount()).HasPriv("SET")) { replacements["CAN_SET"]; can_set = true; @@ -44,101 +44,101 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri if (can_set && message.post_data.empty() == false) { - if (ci->HasExt("KEEPTOPIC") != message.post_data.count("keeptopic")) + if (ci->HasFieldS("KEEPTOPIC") != message.post_data.count("keeptopic")) { - if (!ci->HasExt("KEEPTOPIC")) - ci->Extend<bool>("KEEPTOPIC"); + if (!ci->HasFieldS("KEEPTOPIC")) + ci->SetS<bool>("KEEPTOPIC", true); else - ci->Shrink<bool>("KEEPTOPIC"); + ci->UnsetS<bool>("KEEPTOPIC"); replacements["MESSAGES"] = "Secure updated"; } - if (ci->HasExt("PEACE") != message.post_data.count("peace")) + if (ci->HasFieldS("PEACE") != message.post_data.count("peace")) { - if (!ci->HasExt("PEACE")) - ci->Extend<bool>("PEACE"); + if (!ci->HasFieldS("PEACE")) + ci->SetS<bool>("PEACE", true); else - ci->Shrink<bool>("PEACE"); + ci->UnsetS<bool>("PEACE"); replacements["MESSAGES"] = "Peace updated"; } - if (ci->HasExt("CS_PRIVATE") != message.post_data.count("private")) + if (ci->HasFieldS("CS_PRIVATE") != message.post_data.count("private")) { - if (!ci->HasExt("CS_PRIVATE")) - ci->Extend<bool>("CS_PRIVATE"); + if (!ci->HasFieldS("CS_PRIVATE")) + ci->SetS<bool>("CS_PRIVATE", true); else - ci->Shrink<bool>("CS_PRIVATE"); + ci->UnsetS<bool>("CS_PRIVATE"); replacements["MESSAGES"] = "Private updated"; } - if (ci->HasExt("RESTRICTED") != message.post_data.count("restricted")) + if (ci->HasFieldS("RESTRICTED") != message.post_data.count("restricted")) { - if (!ci->HasExt("RESTRICTED")) - ci->Extend<bool>("RESTRICTED"); + if (!ci->HasFieldS("RESTRICTED")) + ci->SetS<bool>("RESTRICTED", true); else - ci->Shrink<bool>("RESTRICTED"); + ci->UnsetS<bool>("RESTRICTED"); replacements["MESSAGES"] = "Restricted updated"; } - if (ci->HasExt("CS_SECURE") != message.post_data.count("secure")) + if (ci->HasFieldS("CS_SECURE") != message.post_data.count("secure")) { - if (!ci->HasExt("CS_SECURE")) - ci->Extend<bool>("CS_SECURE"); + if (!ci->HasFieldS("CS_SECURE")) + ci->SetS<bool>("CS_SECURE", true); else - ci->Shrink<bool>("CS_SECURE"); + ci->UnsetS<bool>("CS_SECURE"); replacements["MESSAGES"] = "Secure updated"; } - if (ci->HasExt("SECUREOPS") != message.post_data.count("secureops")) + if (ci->HasFieldS("SECUREOPS") != message.post_data.count("secureops")) { - if (!ci->HasExt("SECUREOPS")) - ci->Extend<bool>("SECUREOPS"); + if (!ci->HasFieldS("SECUREOPS")) + ci->SetS<bool>("SECUREOPS", true); else - ci->Shrink<bool>("SECUREOPS"); + ci->UnsetS<bool>("SECUREOPS"); replacements["MESSAGES"] = "Secureops updated"; } - if (ci->HasExt("TOPICLOCK") != message.post_data.count("topiclock")) + if (ci->HasFieldS("TOPICLOCK") != message.post_data.count("topiclock")) { - if (!ci->HasExt("TOPICLOCK")) - ci->Extend<bool>("TOPICLOCK"); + if (!ci->HasFieldS("TOPICLOCK")) + ci->SetS<bool>("TOPICLOCK", true); else - ci->Shrink<bool>("TOPICLOCK"); + ci->UnsetS<bool>("TOPICLOCK"); replacements["MESSAGES"] = "Topiclock updated"; } } - replacements["CHANNEL"] = HTTPUtils::Escape(ci->name); - replacements["CHANNEL_ESCAPED"] = HTTPUtils::URLEncode(ci->name); + replacements["CHANNEL"] = HTTPUtils::Escape(ci->GetName()); + replacements["CHANNEL_ESCAPED"] = HTTPUtils::URLEncode(ci->GetName()); if (ci->GetFounder()) - replacements["FOUNDER"] = ci->GetFounder()->display; + replacements["FOUNDER"] = ci->GetFounder()->GetDisplay(); if (ci->GetSuccessor()) - replacements["SUCCESSOR"] = ci->GetSuccessor()->display; - replacements["TIME_REGISTERED"] = Anope::strftime(ci->time_registered, na->nc); - replacements["LAST_USED"] = Anope::strftime(ci->last_used, na->nc); + replacements["SUCCESSOR"] = ci->GetSuccessor()->GetDisplay(); + replacements["TIME_REGISTERED"] = Anope::strftime(ci->GetTimeRegistered(), na->GetAccount()); + replacements["LAST_USED"] = Anope::strftime(ci->GetLastUsed(), na->GetAccount()); replacements["ESCAPED_CHANNEL"] = HTTPUtils::URLEncode(chname); - if (!ci->last_topic.empty()) + if (!ci->GetLastTopic().empty()) { - replacements["LAST_TOPIC"] = HTTPUtils::Escape(ci->last_topic); - replacements["LAST_TOPIC_SETTER"] = HTTPUtils::Escape(ci->last_topic_setter); + replacements["LAST_TOPIC"] = HTTPUtils::Escape(ci->GetLastTopic()); + replacements["LAST_TOPIC_SETTER"] = HTTPUtils::Escape(ci->GetLastTopicSetter()); } if (can_set) { - if (ci->HasExt("KEEPTOPIC")) + if (ci->HasFieldS("KEEPTOPIC")) replacements["KEEPTOPIC"]; - if (ci->HasExt("PEACE")) + if (ci->HasFieldS("PEACE")) replacements["PEACE"]; - if (ci->HasExt("CS_PRIVATE")) + if (ci->HasFieldS("CS_PRIVATE")) replacements["PRIVATE"]; - if (ci->HasExt("RESTRICTED")) + if (ci->HasFieldS("RESTRICTED")) replacements["RESTRICTED"]; - if (ci->HasExt("CS_SECURE")) + if (ci->HasFieldS("CS_SECURE")) replacements["SECURE"]; - if (ci->HasExt("SECUREOPS")) + if (ci->HasFieldS("SECUREOPS")) replacements["SECUREOPS"]; - if (ci->HasExt("TOPICLOCK")) + if (ci->HasFieldS("TOPICLOCK")) replacements["TOPICLOCK"]; } diff --git a/modules/webcpanel/pages/chanserv/utils.cpp b/modules/webcpanel/pages/chanserv/utils.cpp index f14595a82..cf00de9d0 100644 --- a/modules/webcpanel/pages/chanserv/utils.cpp +++ b/modules/webcpanel/pages/chanserv/utils.cpp @@ -11,7 +11,7 @@ namespace { bool ChannelSort(ChanServ::Channel *ci1, ChanServ::Channel *ci2) { - return ci::less()(ci1->name, ci2->name); + return ci::less()(ci1->GetName(), ci2->GetName()); } } @@ -23,19 +23,16 @@ namespace ChanServ void BuildChanList(::NickServ::Nick *na, TemplateFileServer::Replacements &replacements) { - std::deque<::ChanServ::Channel *> queue; - na->nc->GetChannelReferences(queue); - std::sort(queue.begin(), queue.end(), ChannelSort); + std::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel); + std::sort(chans.begin(), chans.end(), ChannelSort); - for (unsigned i = 0; i < queue.size(); ++i) + for (::ChanServ::Channel *ci : chans) { - ::ChanServ::Channel *ci = queue[i]; - - if (na->nc != ci->GetFounder() && ci->AccessFor(na->nc).empty()) + if (na->GetAccount() != ci->GetFounder() && ci->AccessFor(na->GetAccount()).empty()) continue; - replacements["CHANNEL_NAMES"] = ci->name; - replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->name); + replacements["CHANNEL_NAMES"] = ci->GetName(); + replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->GetName()); } } diff --git a/modules/webcpanel/pages/hostserv/request.cpp b/modules/webcpanel/pages/hostserv/request.cpp index 605e0082c..522806a9f 100644 --- a/modules/webcpanel/pages/hostserv/request.cpp +++ b/modules/webcpanel/pages/hostserv/request.cpp @@ -18,7 +18,7 @@ bool WebCPanel::HostServ::Request::OnRequest(HTTPProvider *server, const Anope:: std::vector<Anope::string> params; params.push_back(HTTPUtils::URLDecode(message.post_data["req"])); - WebPanel::RunCommand(na->nc->display, na->nc, "HostServ", "hostserv/request", params, replacements, "CMDR"); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "HostServ", "hostserv/request", params, replacements, "CMDR"); } if (na->HasVhost()) diff --git a/modules/webcpanel/pages/index.cpp b/modules/webcpanel/pages/index.cpp index d2a99becd..e3a8de96c 100644 --- a/modules/webcpanel/pages/index.cpp +++ b/modules/webcpanel/pages/index.cpp @@ -46,7 +46,7 @@ class WebpanelRequest : public NickServ::IdentifyRequestListener { HTTPReply::cookie c; - c.push_back(std::make_pair("account", na->nick)); + c.push_back(std::make_pair("account", na->GetNick())); c.push_back(std::make_pair("Path", "/")); reply.cookies.push_back(c); } diff --git a/modules/webcpanel/pages/logout.cpp b/modules/webcpanel/pages/logout.cpp index 648b277cc..b5f97258e 100644 --- a/modules/webcpanel/pages/logout.cpp +++ b/modules/webcpanel/pages/logout.cpp @@ -13,8 +13,8 @@ WebCPanel::Logout::Logout(const Anope::string &u) : WebPanelProtectedPage("", u) bool WebCPanel::Logout::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, ::NickServ::Nick *na, TemplateFileServer::Replacements &replacements) { - na->Shrink<Anope::string>("webcpanel_id"); - na->Shrink<Anope::string>("webcpanel_ip"); + na->ShrinkOK<Anope::string>("webcpanel_id"); + na->ShrinkOK<Anope::string>("webcpanel_ip"); reply.error = HTTP_FOUND; reply.headers["Location"] = Anope::string("http") + (server->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/"; diff --git a/modules/webcpanel/pages/memoserv/memos.cpp b/modules/webcpanel/pages/memoserv/memos.cpp index 845e7becd..470ad764c 100644 --- a/modules/webcpanel/pages/memoserv/memos.cpp +++ b/modules/webcpanel/pages/memoserv/memos.cpp @@ -15,7 +15,7 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st { const Anope::string &chname = message.get_data["channel"]; ::ChanServ::Channel *ci; - const ::MemoServ::MemoInfo *mi; + ::MemoServ::MemoInfo *mi; ::MemoServ::Memo *m; if (::ChanServ::service) @@ -23,17 +23,17 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st { ci = it.second; - if (ci->AccessFor(na->nc).HasPriv("MEMO")) + if (ci->AccessFor(na->GetAccount()).HasPriv("MEMO")) { - replacements["CHANNEL_NAMES"] = ci->name; - replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->name); + replacements["CHANNEL_NAMES"] = ci->GetName(); + replacements["ESCAPED_CHANNEL_NAMES"] = HTTPUtils::URLEncode(ci->GetName()); } } if (chname.empty()) { replacements["MESSAGES"] = "No Channel specified, displaying the memos for your Nick"; - mi = na->nc->memos; + mi = na->GetAccount()->GetMemos(); } else { @@ -41,16 +41,16 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st if (ci) { replacements["MESSAGES"] = "Displaying the memos for " + chname + "."; - mi = ci->memos; + mi = ci->GetMemos(); } else { replacements["MESSAGES"] = "Channel " + chname + " not found, displaying the memos for your nick"; - mi = na->nc->memos; + mi = na->GetAccount()->GetMemos(); } - replacements["CHANNEL_NAME"] = ci->name; - replacements["ESCAPED_CHANNEL_NAME"] = HTTPUtils::URLEncode(ci->name); + replacements["CHANNEL_NAME"] = ci->GetName(); + replacements["ESCAPED_CHANNEL_NAME"] = HTTPUtils::URLEncode(ci->GetName()); } if (message.post_data.count("receiver") > 0 && message.post_data.count("message") > 0) { @@ -58,7 +58,7 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st params.push_back(HTTPUtils::URLDecode(message.post_data["receiver"])); params.push_back(HTTPUtils::URLDecode(message.post_data["message"])); - WebPanel::RunCommand(na->nc->display, na->nc, "MemoServ", "memoserv/send", params, replacements, "CMDR"); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "MemoServ", "memoserv/send", params, replacements, "CMDR"); } if (message.get_data.count("del") > 0 && message.get_data.count("number") > 0) { @@ -67,7 +67,7 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st params.push_back(chname); params.push_back(message.get_data["number"]); - WebPanel::RunCommand(na->nc->display, na->nc, "MemoServ", "memoserv/del", params, replacements, "CMDR"); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "MemoServ", "memoserv/del", params, replacements, "CMDR"); } if (message.get_data.count("read") > 0 && message.get_data.count("number") > 0) { @@ -90,21 +90,21 @@ bool WebCPanel::MemoServ::Memos::OnRequest(HTTPProvider *server, const Anope::st if (!m) replacements["MESSAGES"] = "ERROR - invalid memo number."; else if (message.get_data["read"] == "1") - m->unread = false; + m->SetUnread(false); else if (message.get_data["read"] == "2") - m->unread = true; + m->SetUnread(true); } } if (mi) - for (unsigned i = 0; i < mi->memos->size(); ++i) + for (unsigned i = 0; i < mi->GetMemos().size(); ++i) { m = mi->GetMemo(i); replacements["NUMBER"] = stringify(i+1); - replacements["SENDER"] = m->sender; - replacements["TIME"] = Anope::strftime(m->time); - replacements["TEXT"] = HTTPUtils::Escape(m->text); - if (m->unread) + replacements["SENDER"] = m->GetSender(); + replacements["TIME"] = Anope::strftime(m->GetTime()); + replacements["TEXT"] = HTTPUtils::Escape(m->GetText()); + if (m->GetUnread()) replacements["UNREAD"] = "YES"; else replacements["UNREAD"] = "NO"; diff --git a/modules/webcpanel/pages/nickserv/access.cpp b/modules/webcpanel/pages/nickserv/access.cpp index 59082d307..779f891b5 100644 --- a/modules/webcpanel/pages/nickserv/access.cpp +++ b/modules/webcpanel/pages/nickserv/access.cpp @@ -6,6 +6,7 @@ */ #include "../../webcpanel.h" +#include "modules/ns_access.h" WebCPanel::NickServ::Access::Access(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u) { @@ -19,7 +20,7 @@ bool WebCPanel::NickServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back("ADD"); params.push_back(message.post_data["access"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/access", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "NickServ", "nickserv/access", params, replacements); } else if (message.get_data.count("del") > 0 && message.get_data.count("mask") > 0) { @@ -27,11 +28,11 @@ bool WebCPanel::NickServ::Access::OnRequest(HTTPProvider *server, const Anope::s params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/access", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "NickServ", "nickserv/access", params, replacements); } - for (unsigned i = 0; i < na->nc->access.size(); ++i) - replacements["ACCESS"] = na->nc->access[i]; + for (NickAccess *a : na->GetAccount()->GetRefs<NickAccess *>(nsaccess)) + replacements["ACCESS"] = a->GetMask(); TemplateFileServer page("nickserv/access.html"); page.Serve(server, page_name, client, message, reply, replacements); diff --git a/modules/webcpanel/pages/nickserv/alist.cpp b/modules/webcpanel/pages/nickserv/alist.cpp index 04d1d1cd4..105f1c117 100644 --- a/modules/webcpanel/pages/nickserv/alist.cpp +++ b/modules/webcpanel/pages/nickserv/alist.cpp @@ -9,7 +9,7 @@ static bool ChannelSort(ChanServ::Channel *ci1, ChanServ::Channel *ci2) { - return ci::less()(ci1->name, ci2->name); + return ci::less()(ci1->GetName(), ci2->GetName()); } WebCPanel::NickServ::Alist::Alist(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u) @@ -18,34 +18,31 @@ WebCPanel::NickServ::Alist::Alist(const Anope::string &cat, const Anope::string bool WebCPanel::NickServ::Alist::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, ::NickServ::Nick *na, TemplateFileServer::Replacements &replacements) { - std::deque<::ChanServ::Channel *> queue; - na->nc->GetChannelReferences(queue); - std::sort(queue.begin(), queue.end(), ChannelSort); + std::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel); + std::sort(chans.begin(), chans.end(), ChannelSort); int chan_count = 0; - for (unsigned q = 0; q < queue.size(); ++q) + for (::ChanServ::Channel *ci : chans) { - ::ChanServ::Channel *ci = queue[q]; - - if (ci->GetFounder() == na->nc) + if (ci->GetFounder() == na->GetAccount()) { ++chan_count; replacements["NUMBERS"] = stringify(chan_count); - replacements["CHANNELS"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; + replacements["CHANNELS"] = (ci->HasFieldS("CS_NO_EXPIRE") ? "!" : "") + ci->GetName(); replacements["ACCESSES"] = "Founder"; continue; } - ::ChanServ::AccessGroup access = ci->AccessFor(na->nc); + ::ChanServ::AccessGroup access = ci->AccessFor(na->GetAccount()); if (access.empty()) continue; ++chan_count; replacements["NUMBERS"] = stringify(chan_count); - replacements["CHANNELS"] = (ci->HasExt("CS_NO_EXPIRE") ? "!" : "") + ci->name; + replacements["CHANNELS"] = (ci->HasFieldS("CS_NO_EXPIRE") ? "!" : "") + ci->GetName(); Anope::string access_str; for (unsigned i = 0; i < access.size(); ++i) access_str += ", " + access[i]->AccessSerialize(); diff --git a/modules/webcpanel/pages/nickserv/cert.cpp b/modules/webcpanel/pages/nickserv/cert.cpp index 52c5a31a0..25958ca73 100644 --- a/modules/webcpanel/pages/nickserv/cert.cpp +++ b/modules/webcpanel/pages/nickserv/cert.cpp @@ -20,7 +20,7 @@ bool WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::str params.push_back("ADD"); params.push_back(message.post_data["certfp"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "NickServ", "nickserv/cert", params, replacements); } else if (message.get_data.count("del") > 0 && message.get_data.count("mask") > 0) { @@ -28,13 +28,12 @@ bool WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::str params.push_back("DEL"); params.push_back(message.get_data["mask"]); - WebPanel::RunCommand(na->nc->display, na->nc, "NickServ", "nickserv/cert", params, replacements); + WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "NickServ", "nickserv/cert", params, replacements); } - NSCertList *cl = na->nc->GetExt<NSCertList>("certificates"); - if (cl) - for (unsigned i = 0; i < cl->GetCertCount(); ++i) - replacements["CERTS"] = cl->GetCert(i); + std::vector<NSCertEntry *> cl = na->GetAccount()->GetRefs<NSCertEntry *>(certentry); + for (NSCertEntry *e : cl) + replacements["CERTS"] = e->GetCert(); TemplateFileServer page("nickserv/cert.html"); page.Serve(server, page_name, client, message, reply, replacements); diff --git a/modules/webcpanel/pages/nickserv/info.cpp b/modules/webcpanel/pages/nickserv/info.cpp index 1e9e660b4..b3c743ed3 100644 --- a/modules/webcpanel/pages/nickserv/info.cpp +++ b/modules/webcpanel/pages/nickserv/info.cpp @@ -17,77 +17,77 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str { if (message.post_data.count("email") > 0) { - if (message.post_data["email"] != na->nc->email) + if (message.post_data["email"] != na->GetAccount()->GetEmail()) { if (!message.post_data["email"].empty() && !Mail::Validate(message.post_data["email"])) replacements["ERRORS"] = "Invalid email"; else { - na->nc->email = message.post_data["email"]; + na->GetAccount()->SetEmail(message.post_data["email"]); replacements["MESSAGES"] = "Email updated"; } } } if (message.post_data.count("greet") > 0) { - Anope::string *greet = na->nc->GetExt<Anope::string>("greet"); + Anope::string *greet = na->GetAccount()->GetExt<Anope::string>("greet"); const Anope::string &post_greet = HTTPUtils::URLDecode(message.post_data["greet"].replace_all_cs("+", " ")); if (post_greet.empty()) - na->nc->Shrink<Anope::string>("greet"); + na->GetAccount()->ShrinkOK<Anope::string>("greet"); else if (!greet || post_greet != *greet) - na->nc->Extend<Anope::string |
