summaryrefslogtreecommitdiff
path: root/modules/webcpanel
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
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')
-rw-r--r--modules/webcpanel/pages/chanserv/access.cpp24
-rw-r--r--modules/webcpanel/pages/chanserv/akick.cpp22
-rw-r--r--modules/webcpanel/pages/chanserv/drop.cpp15
-rw-r--r--modules/webcpanel/pages/chanserv/modes.cpp12
-rw-r--r--modules/webcpanel/pages/chanserv/set.cpp90
-rw-r--r--modules/webcpanel/pages/chanserv/utils.cpp17
-rw-r--r--modules/webcpanel/pages/hostserv/request.cpp2
-rw-r--r--modules/webcpanel/pages/index.cpp2
-rw-r--r--modules/webcpanel/pages/logout.cpp4
-rw-r--r--modules/webcpanel/pages/memoserv/memos.cpp36
-rw-r--r--modules/webcpanel/pages/nickserv/access.cpp9
-rw-r--r--modules/webcpanel/pages/nickserv/alist.cpp19
-rw-r--r--modules/webcpanel/pages/nickserv/cert.cpp11
-rw-r--r--modules/webcpanel/pages/nickserv/info.cpp74
-rw-r--r--modules/webcpanel/pages/operserv/akill.cpp25
-rw-r--r--modules/webcpanel/webcpanel.cpp20
-rw-r--r--modules/webcpanel/webcpanel.h6
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>("greet", post_greet);
+ na->GetAccount()->Extend<Anope::string>("greet", post_greet);
replacements["MESSAGES"] = "Greet updated";
}
- if (na->nc->HasExt("AUTOOP") != message.post_data.count("autoop"))
+ if (na->GetAccount()->HasFieldS("AUTOOP") != message.post_data.count("autoop"))
{
- if (!na->nc->HasExt("AUTOOP"))
- na->nc->Extend<bool>("AUTOOP");
+ if (!na->GetAccount()->HasFieldS("AUTOOP"))
+ na->GetAccount()->SetS<bool>("AUTOOP", true);
else
- na->nc->Shrink<bool>("AUTOOP");
+ na->GetAccount()->UnsetS<bool>("AUTOOP");
replacements["MESSAGES"] = "Autoop updated";
}
- if (na->nc->HasExt("NS_PRIVATE") != message.post_data.count("private"))
+ if (na->GetAccount()->HasFieldS("NS_PRIVATE") != message.post_data.count("private"))
{
- if (!na->nc->HasExt("NS_PRIVATE"))
- na->nc->Extend<bool>("NS_PRIVATE");
+ if (!na->GetAccount()->HasFieldS("NS_PRIVATE"))
+ na->GetAccount()->SetS<bool>("NS_PRIVATE", true);
else
- na->nc->Shrink<bool>("NS_PRIVATE");
+ na->GetAccount()->UnsetS<bool>("NS_PRIVATE");
replacements["MESSAGES"] = "Private updated";
}
- if (na->nc->HasExt("NS_SECURE") != message.post_data.count("secure"))
+ if (na->GetAccount()->HasFieldS("NS_SECURE") != message.post_data.count("secure"))
{
- if (!na->nc->HasExt("NS_SECURE"))
- na->nc->Extend<bool>("NS_SECURE");
+ if (!na->GetAccount()->HasFieldS("NS_SECURE"))
+ na->GetAccount()->SetS<bool>("NS_SECURE", true);
else
- na->nc->Shrink<bool>("NS_SECURE");
+ na->GetAccount()->UnsetS<bool>("NS_SECURE");
replacements["MESSAGES"] = "Secure updated";
}
- if (message.post_data["kill"] == "on" && !na->nc->HasExt("KILLPROTECT"))
+ if (message.post_data["kill"] == "on" && !na->GetAccount()->HasFieldS("KILLPROTECT"))
{
- na->nc->Extend<bool>("KILLPROTECT");
- na->nc->Shrink<bool>("KILL_QUICK");
+ na->GetAccount()->SetS<bool>("KILLPROTECT", true);
+ na->GetAccount()->UnsetS<bool>("KILL_QUICK");
replacements["MESSAGES"] = "Kill updated";
}
- else if (message.post_data["kill"] == "quick" && !na->nc->HasExt("KILL_QUICK"))
+ else if (message.post_data["kill"] == "quick" && !na->GetAccount()->HasFieldS("KILL_QUICK"))
{
- na->nc->Shrink<bool>("KILLPROTECT");
- na->nc->Extend<bool>("KILL_QUICK");
+ na->GetAccount()->UnsetS<bool>("KILLPROTECT");
+ na->GetAccount()->SetS<bool>("KILL_QUICK", true);
replacements["MESSAGES"] = "Kill updated";
}
- else if (message.post_data["kill"] == "off" && (na->nc->HasExt("KILLPROTECT") || na->nc->HasExt("KILL_QUICK")))
+ else if (message.post_data["kill"] == "off" && (na->GetAccount()->HasFieldS("KILLPROTECT") || na->GetAccount()->HasFieldS("KILL_QUICK")))
{
- na->nc->Shrink<bool>("KILLPROTECT");
- na->nc->Shrink<bool>("KILL_QUICK");
+ na->GetAccount()->UnsetS<bool>("KILLPROTECT");
+ na->GetAccount()->UnsetS<bool>("KILL_QUICK");
replacements["MESSAGES"] = "Kill updated";
}
}
- replacements["DISPLAY"] = HTTPUtils::Escape(na->nc->display);
- if (na->nc->email.empty() == false)
- replacements["EMAIL"] = HTTPUtils::Escape(na->nc->email);
- replacements["TIME_REGISTERED"] = Anope::strftime(na->time_registered, na->nc);
+ replacements["DISPLAY"] = HTTPUtils::Escape(na->GetAccount()->GetDisplay());
+ if (na->GetAccount()->GetEmail().empty() == false)
+ replacements["EMAIL"] = HTTPUtils::Escape(na->GetAccount()->GetEmail());
+ replacements["TIME_REGISTERED"] = Anope::strftime(na->GetTimeRegistered(), na->GetAccount());
if (na->HasVhost())
{
if (na->GetVhostIdent().empty() == false)
@@ -95,20 +95,20 @@ bool WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::str
else
replacements["VHOST"] = na->GetVhostHost();
}
- Anope::string *greet = na->nc->GetExt<Anope::string>("greet");
+ Anope::string *greet = na->GetAccount()->GetExt<Anope::string>("greet");
if (greet)
replacements["GREET"] = HTTPUtils::Escape(*greet);
- if (na->nc->HasExt("AUTOOP"))
+ if (na->GetAccount()->HasFieldS("AUTOOP"))
replacements["AUTOOP"];
- if (na->nc->HasExt("NS_PRIVATE"))
+ if (na->GetAccount()->HasFieldS("NS_PRIVATE"))
replacements["PRIVATE"];
- if (na->nc->HasExt("NS_SECURE"))
+ if (na->GetAccount()->HasFieldS("NS_SECURE"))
replacements["SECURE"];
- if (na->nc->HasExt("KILLPROTECT"))
+ if (na->GetAccount()->HasFieldS("KILLPROTECT"))
replacements["KILL_ON"];
- if (na->nc->HasExt("KILL_QUICK"))
+ if (na->GetAccount()->HasFieldS("KILL_QUICK"))
replacements["KILL_QUICK"];
- if (!na->nc->HasExt("KILLPROTECT") && !na->nc->HasExt("KILL_QUICK"))
+ if (!na->GetAccount()->HasFieldS("KILLPROTECT") && !na->GetAccount()->HasFieldS("KILL_QUICK"))
replacements["KILL_OFF"];
TemplateFileServer page("nickserv/info.html");
diff --git a/modules/webcpanel/pages/operserv/akill.cpp b/modules/webcpanel/pages/operserv/akill.cpp
index 20633c0f4..58b68b0b2 100644
--- a/modules/webcpanel/pages/operserv/akill.cpp
+++ b/modules/webcpanel/pages/operserv/akill.cpp
@@ -16,13 +16,14 @@ bool WebCPanel::OperServ::Akill::OnRequest(HTTPProvider *server, const Anope::st
static ServiceReference<XLineManager> akills("XLineManager","xlinemanager/sgline");
- if (!na->nc->o || !na->nc->o->ot->HasCommand("operserv/akill"))
+ if (!na->GetAccount()->o || !na->GetAccount()->o->GetType()->HasCommand("operserv/akill"))
{
replacements["NOACCESS"];
}
else
{
- if (akills->GetCount() == 0)
+ std::vector<XLine *> xlines = akills->GetXLines();
+ if (xlines.empty())
replacements["AKILLS"] = "No Akills to display.";
if (message.post_data.count("mask") > 0 && message.post_data.count("expiry") > 0 && message.post_data.count("reason") > 0)
@@ -34,7 +35,7 @@ bool WebCPanel::OperServ::Akill::OnRequest(HTTPProvider *server, const Anope::st
cmdstr << " " << HTTPUtils::URLDecode(message.post_data["mask"]);
cmdstr << " " << HTTPUtils::URLDecode(message.post_data["reason"]);
params.push_back(cmdstr.str());
- WebPanel::RunCommand(na->nc->display, na->nc, "OperServ", "operserv/akill", params, replacements);
+ WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "OperServ", "operserv/akill", params, replacements);
}
if (message.get_data["del"] == "1" && message.get_data.count("number") > 0)
@@ -42,18 +43,18 @@ bool WebCPanel::OperServ::Akill::OnRequest(HTTPProvider *server, const Anope::st
std::vector<Anope::string> params;
params.push_back("DEL");
params.push_back(HTTPUtils::URLDecode(message.get_data["number"]));
- WebPanel::RunCommand(na->nc->display, na->nc, "OperServ", "operserv/akill", params, replacements);
+ WebPanel::RunCommand(na->GetAccount()->GetDisplay(), na->GetAccount(), "OperServ", "operserv/akill", params, replacements);
}
- for (unsigned i = 0, end = akills->GetCount(); i < end; ++i)
+ unsigned int i = 0;
+ for (XLine *x : xlines)
{
- const XLine *x = akills->GetEntry(i);
- replacements["NUMBER"] = stringify(i + 1);
- replacements["HOST"] = x->mask;
- replacements["SETTER"] = x->by;
- replacements["TIME"] = Anope::strftime(x->created, NULL, true);
- replacements["EXPIRE"] = Anope::Expires(x->expires, na->nc);
- replacements["REASON"] = x->reason;
+ replacements["NUMBER"] = stringify(++i);
+ replacements["HOST"] = x->GetMask();
+ replacements["SETTER"] = x->GetBy();
+ replacements["TIME"] = Anope::strftime(x->GetCreated(), NULL, true);
+ replacements["EXPIRE"] = Anope::Expires(x->GetExpires(), na->GetAccount());
+ replacements["REASON"] = x->GetReason();
}
}
diff --git a/modules/webcpanel/webcpanel.cpp b/modules/webcpanel/webcpanel.cpp
index 077ed5f15..16485f1f6 100644
--- a/modules/webcpanel/webcpanel.cpp
+++ b/modules/webcpanel/webcpanel.cpp
@@ -14,7 +14,7 @@ class ModuleWebCPanel : public Module
{
ServiceReference<HTTPProvider> provider;
Panel panel;
- PrimitiveExtensibleItem<Anope::string> id, ip;
+ ExtensibleItem<Anope::string> id, ip;
StaticFileServer style_css, logo_png, cubes_png, favicon_ico;
@@ -92,7 +92,7 @@ class ModuleWebCPanel : public Module
provider->RegisterPage(&this->_register);
provider->RegisterPage(&this->confirm);
- BotInfo *NickServ = Config->GetClient("NickServ");
+ ServiceBot *NickServ = Config->GetClient("NickServ");
if (NickServ)
{
Section s;
@@ -125,7 +125,7 @@ class ModuleWebCPanel : public Module
panel.sections.push_back(s);
}
- BotInfo *ChanServ = Config->GetClient("ChanServ");
+ ServiceBot *ChanServ = Config->GetClient("ChanServ");
if (ChanServ)
{
Section s;
@@ -165,7 +165,7 @@ class ModuleWebCPanel : public Module
panel.sections.push_back(s);
}
- BotInfo *MemoServ = Config->GetClient("MemoServ");
+ ServiceBot *MemoServ = Config->GetClient("MemoServ");
if (MemoServ)
{
Section s;
@@ -180,7 +180,7 @@ class ModuleWebCPanel : public Module
panel.sections.push_back(s);
}
- BotInfo *HostServ = Config->GetClient("HostServ");
+ ServiceBot *HostServ = Config->GetClient("HostServ");
if (HostServ)
{
Section s;
@@ -195,7 +195,7 @@ class ModuleWebCPanel : public Module
panel.sections.push_back(s);
}
- BotInfo *OperServ = Config->GetClient("OperServ");
+ ServiceBot *OperServ = Config->GetClient("OperServ");
if (OperServ)
{
Section s;
@@ -260,13 +260,9 @@ namespace WebPanel
if (params.size() < cmd->min_params)
return;
- BotInfo *bi = Config->GetClient(service);
+ ServiceBot *bi = Config->GetClient(service);
if (!bi)
- {
- if (BotListByNick->empty())
- return;
- bi = BotListByNick->begin()->second; // Pick one...
- }
+ return;
struct MyComandReply : CommandReply
{
diff --git a/modules/webcpanel/webcpanel.h b/modules/webcpanel/webcpanel.h
index 67cdac0ba..66c6450c0 100644
--- a/modules/webcpanel/webcpanel.h
+++ b/modules/webcpanel/webcpanel.h
@@ -95,10 +95,10 @@ class WebPanelProtectedPage : public WebPanelPage
TemplateFileServer::Replacements replacements;
replacements["TITLE"] = page_title;
- replacements["ACCOUNT"] = na->nc->display;
+ replacements["ACCOUNT"] = na->GetAccount()->GetDisplay();
replacements["PAGE_NAME"] = page_name;
replacements["CATEGORY"] = category;
- if (na->nc->IsServicesOper())
+ if (na->GetAccount()->IsServicesOper())
replacements["IS_OPER"];
Anope::string sections, get;
@@ -143,7 +143,7 @@ class WebPanelProtectedPage : public WebPanelPage
namespace WebPanel
{
/** Run a command
- * @param User name to run command as, probably nc->display unless nc == NULL
+ * @param User name to run command as, probably nc->GetDisplay() unless nc == NULL
* @param nc Nick core to run command from
* @param service Service for source.owner and source.service
* @param c Command to run (as a service name)