summaryrefslogtreecommitdiff
path: root/modules/webcpanel/pages/chanserv/access.cpp
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2014-11-24 14:27:23 -0500
committerAdam <Adam@anope.org>2014-11-24 14:27:23 -0500
commit42238034490fb5479d787bd1695750387d508200 (patch)
treec93c62e0e1c936e656ae5b9ee1b62380ce2a194c /modules/webcpanel/pages/chanserv/access.cpp
parentd492923610d9c9146b2a2b63de38deab2cfd4ca7 (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/pages/chanserv/access.cpp')
-rw-r--r--modules/webcpanel/pages/chanserv/access.cpp24
1 files changed, 14 insertions, 10 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;