diff options
| author | Adam <Adam@anope.org> | 2016-07-28 21:29:35 -0400 |
|---|---|---|
| committer | Adam <Adam@anope.org> | 2016-07-28 21:29:35 -0400 |
| commit | 0e758a2ac23dc4a001e8e126cec14588da9a9769 (patch) | |
| tree | 45df813323e023c5c89db7279426c4ad0943b4a9 /modules/webcpanel | |
| parent | a3c8afae00c54d5b95c620248b51f90679d7d53f (diff) | |
Allow serializable fields to use storage in the respective objects.
Split service management code nito a proper servicemanager. Make service
references managed instead of lazy lookup. Also made events and
serializable use service manager instead of their respective systems for
management
Diffstat (limited to 'modules/webcpanel')
| -rw-r--r-- | modules/webcpanel/pages/chanserv/access.cpp | 6 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/drop.cpp | 2 | ||||
| -rw-r--r-- | modules/webcpanel/pages/chanserv/utils.cpp | 2 | ||||
| -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/nickserv/access.cpp | 2 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/alist.cpp | 2 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/cert.cpp | 5 | ||||
| -rw-r--r-- | modules/webcpanel/pages/nickserv/info.cpp | 2 | ||||
| -rw-r--r-- | modules/webcpanel/pages/operserv/akill.cpp | 5 | ||||
| -rw-r--r-- | modules/webcpanel/pages/operserv/akill.h | 2 | ||||
| -rw-r--r-- | modules/webcpanel/webcpanel.cpp | 6 | ||||
| -rw-r--r-- | modules/webcpanel/webcpanel.h | 6 |
14 files changed, 25 insertions, 23 deletions
diff --git a/modules/webcpanel/pages/chanserv/access.cpp b/modules/webcpanel/pages/chanserv/access.cpp index e5d268dee..535df595f 100644 --- a/modules/webcpanel/pages/chanserv/access.cpp +++ b/modules/webcpanel/pages/chanserv/access.cpp @@ -105,11 +105,11 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s replacements["CREATORS"] = HTTPUtils::Escape(access->GetCreator()); } - if (Service::FindService("Command", "chanserv/access")) + if (ServiceManager::Get()->FindService("Command", "chanserv/access")) replacements["PROVIDERS"] = "chanserv/access"; - if (Service::FindService("Command", "chanserv/xop")) + if (ServiceManager::Get()->FindService("Command", "chanserv/xop")) replacements["PROVIDERS"] = "chanserv/xop"; - if (Service::FindService("Command", "chanserv/flags")) + if (ServiceManager::Get()->FindService("Command", "chanserv/flags")) replacements["PROVIDERS"] = "chanserv/flags"; 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 c546c0af5..b4eea6641 100644 --- a/modules/webcpanel/pages/chanserv/drop.cpp +++ b/modules/webcpanel/pages/chanserv/drop.cpp @@ -31,7 +31,7 @@ bool WebCPanel::ChanServ::Drop::OnRequest(HTTPProvider *server, const Anope::str replacements["MESSAGES"] = "Invalid Confirmation"; } - for (::ChanServ::Channel *ci : na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel)) + for (::ChanServ::Channel *ci : na->GetAccount()->GetRefs<::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->GetName(); diff --git a/modules/webcpanel/pages/chanserv/utils.cpp b/modules/webcpanel/pages/chanserv/utils.cpp index cf00de9d0..746097881 100644 --- a/modules/webcpanel/pages/chanserv/utils.cpp +++ b/modules/webcpanel/pages/chanserv/utils.cpp @@ -23,7 +23,7 @@ namespace ChanServ void BuildChanList(::NickServ::Nick *na, TemplateFileServer::Replacements &replacements) { - std::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel); + std::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(); std::sort(chans.begin(), chans.end(), ChannelSort); for (::ChanServ::Channel *ci : chans) diff --git a/modules/webcpanel/pages/hostserv/request.cpp b/modules/webcpanel/pages/hostserv/request.cpp index 522806a9f..5ff2d228f 100644 --- a/modules/webcpanel/pages/hostserv/request.cpp +++ b/modules/webcpanel/pages/hostserv/request.cpp @@ -28,7 +28,7 @@ bool WebCPanel::HostServ::Request::OnRequest(HTTPProvider *server, const Anope:: else replacements["VHOST"] = na->GetVhostHost(); } - if (ServiceReference<Command>("Command", "hostserv/request")) + if (ServiceReference<Command>("hostserv/request")) replacements["CAN_REQUEST"] = "YES"; TemplateFileServer page("hostserv/request.html"); page.Serve(server, page_name, client, message, reply, replacements); diff --git a/modules/webcpanel/pages/index.cpp b/modules/webcpanel/pages/index.cpp index 551b73a0e..f40b029b4 100644 --- a/modules/webcpanel/pages/index.cpp +++ b/modules/webcpanel/pages/index.cpp @@ -94,7 +94,7 @@ bool WebCPanel::Index::OnRequest(HTTPProvider *server, const Anope::string &page // XXX Rate limit check. ::NickServ::IdentifyRequest *req = ::NickServ::service->CreateIdentifyRequest(new WebpanelRequest(reply, message, server, page_name, client, replacements), me, user, pass); - Event::OnCheckAuthentication(&Event::CheckAuthentication::OnCheckAuthentication, nullptr, req); + EventManager::Get()->Dispatch(&Event::CheckAuthentication::OnCheckAuthentication, nullptr, req); req->Dispatch(); return false; } diff --git a/modules/webcpanel/pages/logout.cpp b/modules/webcpanel/pages/logout.cpp index b5f97258e..648b277cc 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->ShrinkOK<Anope::string>("webcpanel_id"); - na->ShrinkOK<Anope::string>("webcpanel_ip"); + na->Shrink<Anope::string>("webcpanel_id"); + na->Shrink<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/nickserv/access.cpp b/modules/webcpanel/pages/nickserv/access.cpp index 51472058d..986dfb635 100644 --- a/modules/webcpanel/pages/nickserv/access.cpp +++ b/modules/webcpanel/pages/nickserv/access.cpp @@ -31,7 +31,7 @@ bool WebCPanel::NickServ::Access::OnRequest(HTTPProvider *server, const Anope::s WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "NickServ", "nickserv/access", params, replacements); } - for (NickAccess *a : na->GetAccount()->GetRefs<NickAccess *>(nsaccess)) + for (NickAccess *a : na->GetAccount()->GetRefs<NickAccess *>()) replacements["ACCESS"] = a->GetMask(); TemplateFileServer page("nickserv/access.html"); diff --git a/modules/webcpanel/pages/nickserv/alist.cpp b/modules/webcpanel/pages/nickserv/alist.cpp index 105f1c117..26e4b6ffb 100644 --- a/modules/webcpanel/pages/nickserv/alist.cpp +++ b/modules/webcpanel/pages/nickserv/alist.cpp @@ -18,7 +18,7 @@ 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::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(::ChanServ::channel); + std::vector<::ChanServ::Channel *> chans = na->GetAccount()->GetRefs<::ChanServ::Channel *>(); std::sort(chans.begin(), chans.end(), ChannelSort); int chan_count = 0; diff --git a/modules/webcpanel/pages/nickserv/cert.cpp b/modules/webcpanel/pages/nickserv/cert.cpp index 436725b04..cdf23a1b3 100644 --- a/modules/webcpanel/pages/nickserv/cert.cpp +++ b/modules/webcpanel/pages/nickserv/cert.cpp @@ -1,8 +1,9 @@ /* - * (C) 2003-2014 Anope Team + * (C) 2003-2016 Anope Team * Contact us at team@anope.org * * Please read COPYING and README for further details. + * */ #include "../../webcpanel.h" @@ -31,7 +32,7 @@ bool WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::str WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "NickServ", "nickserv/cert", params, replacements); } - std::vector<NSCertEntry *> cl = na->GetAccount()->GetRefs<NSCertEntry *>(certentry); + std::vector<NSCertEntry *> cl = na->GetAccount()->GetRefs<NSCertEntry *>(); for (NSCertEntry *e : cl) replacements["CERTS"] = e->GetCert(); diff --git a/modules/webcpanel/pages/nickserv/info.cpp b/modules/webcpanel/pages/nickserv/info.cpp index b3c743ed3..efbf1a425 100644 --- a/modules/webcpanel/pages/nickserv/info.cpp +++ b/modules/webcpanel/pages/nickserv/info.cpp @@ -34,7 +34,7 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str const Anope::string &post_greet = HTTPUtils::URLDecode(message.post_data["greet"].replace_all_cs("+", " ")); if (post_greet.empty()) - na->GetAccount()->ShrinkOK<Anope::string>("greet"); + na->GetAccount()->Shrink<Anope::string>("greet"); else if (!greet || post_greet != *greet) na->GetAccount()->Extend<Anope::string>("greet", post_greet); diff --git a/modules/webcpanel/pages/operserv/akill.cpp b/modules/webcpanel/pages/operserv/akill.cpp index 58b68b0b2..950ed2bd9 100644 --- a/modules/webcpanel/pages/operserv/akill.cpp +++ b/modules/webcpanel/pages/operserv/akill.cpp @@ -7,15 +7,12 @@ #include "../../webcpanel.h" -WebCPanel::OperServ::Akill::Akill(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u) +WebCPanel::OperServ::Akill::Akill(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u), akills("xlinemanager/sgline") { } bool WebCPanel::OperServ::Akill::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, ::NickServ::Nick *na, TemplateFileServer::Replacements &replacements) { - - static ServiceReference<XLineManager> akills("XLineManager","xlinemanager/sgline"); - if (!na->GetAccount()->o || !na->GetAccount()->o->GetType()->HasCommand("operserv/akill")) { replacements["NOACCESS"]; diff --git a/modules/webcpanel/pages/operserv/akill.h b/modules/webcpanel/pages/operserv/akill.h index 7367f593f..5ad75eaeb 100644 --- a/modules/webcpanel/pages/operserv/akill.h +++ b/modules/webcpanel/pages/operserv/akill.h @@ -13,6 +13,8 @@ namespace OperServ class Akill : public WebPanelProtectedPage { + ServiceReference<XLineManager> akills; + public: Akill(const Anope::string &cat, const Anope::string &u); diff --git a/modules/webcpanel/webcpanel.cpp b/modules/webcpanel/webcpanel.cpp index 5da56a6d4..14889c97d 100644 --- a/modules/webcpanel/webcpanel.cpp +++ b/modules/webcpanel/webcpanel.cpp @@ -78,7 +78,7 @@ class ModuleWebCPanel : public Module template_base = Anope::DataDir + "/modules/webcpanel/templates/" + template_name; page_title = block->Get<Anope::string>("title", "Anope IRC Services"); - provider = ServiceReference<HTTPProvider>("HTTPProvider", provider_name); + provider = ServiceReference<HTTPProvider>(provider_name); if (!provider) throw ModuleException("Unable to find HTTPD provider. Is m_httpd loaded?"); @@ -250,7 +250,7 @@ namespace WebPanel { void RunCommand(const Anope::string &user, NickServ::Account *nc, const Anope::string &service, const Anope::string &c, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key) { - ServiceReference<Command> cmd("Command", c); + ServiceReference<Command> cmd(c); if (!cmd) { r[key] = "Unable to find command " + c; @@ -286,7 +286,7 @@ namespace WebPanel void RunCommandWithName(NickServ::Account *nc, const Anope::string &service, const Anope::string &c, const Anope::string &cmdname, std::vector<Anope::string> ¶ms, TemplateFileServer::Replacements &r, const Anope::string &key) { - ServiceReference<Command> cmd("Command", c); + ServiceReference<Command> cmd(c); if (!cmd) { r[key] = "Unable to find command " + c; diff --git a/modules/webcpanel/webcpanel.h b/modules/webcpanel/webcpanel.h index 8e77b975a..23350ae32 100644 --- a/modules/webcpanel/webcpanel.h +++ b/modules/webcpanel/webcpanel.h @@ -31,7 +31,9 @@ struct Section class Panel : public Section, public Service { public: - Panel(Module *c, const Anope::string &n) : Service(c, "Panel", n) { } + static constexpr const char *NAME = "panel"; + + Panel(Module *c, const Anope::string &n) : Service(c, NAME, "") { } std::vector<Section> sections; @@ -74,6 +76,7 @@ class WebPanelPage : public HTTPPage class WebPanelProtectedPage : public WebPanelPage { Anope::string category; + ServiceReference<Panel> panel; public: WebPanelProtectedPage(const Anope::string &cat, const Anope::string &u, const Anope::string &ct = "text/html") : WebPanelPage(u, ct), category(cat) @@ -82,7 +85,6 @@ class WebPanelProtectedPage : public WebPanelPage bool OnRequest(HTTPProvider *provider, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply) override final { - ServiceReference<Panel> panel("Panel", "webcpanel"); NickServ::Nick *na; if (!panel || !(na = panel->GetNickFromSession(client, message))) |
