summaryrefslogtreecommitdiff
path: root/modules/extra/webcpanel/pages/nickserv
diff options
context:
space:
mode:
authorAdam <Adam@anope.org>2012-09-01 18:54:51 -0400
committerAdam <Adam@anope.org>2012-09-01 18:54:51 -0400
commite3d5140dcc936ff411c438b7e3997104cb5f085a (patch)
tree49d7ee0b3e531a1c81e35fb10f25e6340fa781ba /modules/extra/webcpanel/pages/nickserv
parentf81d0113a21187d68c5fa0f1262e5514465b1953 (diff)
Added a web panel module + a default template
Diffstat (limited to 'modules/extra/webcpanel/pages/nickserv')
-rw-r--r--modules/extra/webcpanel/pages/nickserv/access.cpp39
-rw-r--r--modules/extra/webcpanel/pages/nickserv/access.h25
-rw-r--r--modules/extra/webcpanel/pages/nickserv/alist.cpp49
-rw-r--r--modules/extra/webcpanel/pages/nickserv/alist.h25
-rw-r--r--modules/extra/webcpanel/pages/nickserv/cert.cpp39
-rw-r--r--modules/extra/webcpanel/pages/nickserv/cert.h25
-rw-r--r--modules/extra/webcpanel/pages/nickserv/info.cpp111
-rw-r--r--modules/extra/webcpanel/pages/nickserv/info.h25
8 files changed, 338 insertions, 0 deletions
diff --git a/modules/extra/webcpanel/pages/nickserv/access.cpp b/modules/extra/webcpanel/pages/nickserv/access.cpp
new file mode 100644
index 000000000..c18c5ccb0
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/access.cpp
@@ -0,0 +1,39 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+#include "../../webcpanel.h"
+
+WebCPanel::NickServ::Access::Access(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
+{
+}
+
+void WebCPanel::NickServ::Access::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements)
+{
+ if (message.post_data.count("access") > 0)
+ {
+ std::vector<Anope::string> params;
+ params.push_back("ADD");
+ params.push_back(message.post_data["access"]);
+
+ WebPanel::RunCommand(na->nc->display, na->nc, Config->NickServ, "nickserv/access", params, replacements);
+ }
+ else if (message.get_data.count("del") > 0 && message.get_data.count("mask") > 0)
+ {
+ std::vector<Anope::string> params;
+ params.push_back("DEL");
+ params.push_back(message.get_data["mask"]);
+
+ WebPanel::RunCommand(na->nc->display, na->nc, Config->NickServ, "nickserv/access", params, replacements);
+ }
+
+ for (unsigned i = 0; i < na->nc->access.size(); ++i)
+ replacements["ACCESS"] = na->nc->access[i];
+
+ TemplateFileServer page("nickserv/access.html");
+ page.Serve(server, page_name, client, message, reply, replacements);
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/access.h b/modules/extra/webcpanel/pages/nickserv/access.h
new file mode 100644
index 000000000..3f4059aa4
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/access.h
@@ -0,0 +1,25 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+namespace WebCPanel
+{
+
+namespace NickServ
+{
+
+class Access : public WebPanelProtectedPage
+{
+ public:
+ Access(const Anope::string &cat, const Anope::string &u);
+
+ void OnRequest(HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &, NickAlias *, TemplateFileServer::Replacements &) anope_override;
+};
+
+}
+
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/alist.cpp b/modules/extra/webcpanel/pages/nickserv/alist.cpp
new file mode 100644
index 000000000..d3c92dcf4
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/alist.cpp
@@ -0,0 +1,49 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+#include "../../webcpanel.h"
+
+WebCPanel::NickServ::Alist::Alist(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
+{
+}
+
+void WebCPanel::NickServ::Alist::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements)
+{
+ int chan_count = 0;
+
+ for (registered_channel_map::const_iterator it = RegisteredChannelList->begin(), it_end = RegisteredChannelList->end(); it != it_end; ++it)
+ {
+ ChannelInfo *ci = it->second;
+
+ if (ci->GetFounder() && ci->GetFounder() == na->nc)
+ {
+ ++chan_count;
+
+ replacements["NUMBERS"] = stringify(chan_count);
+ replacements["CHANNELS"] = (ci->HasFlag(CI_NO_EXPIRE) ? "!" : "") + ci->name;
+ replacements["ACCESSES"] = "Founder";
+ continue;
+ }
+
+ AccessGroup access = ci->AccessFor(na->nc);
+ if (access.empty())
+ continue;
+
+ ++chan_count;
+
+ replacements["NUMBERS"] = stringify(chan_count);
+ replacements["CHANNELS"] = (ci->HasFlag(CI_NO_EXPIRE) ? "!" : "") + ci->name;
+ Anope::string access_str;
+ for (unsigned i = 0; i < access.size(); ++i)
+ access_str += ", " + access[i]->Serialize();
+ replacements["ACCESSES"] = access_str.substr(2);
+ }
+
+ TemplateFileServer page("nickserv/alist.html");
+ page.Serve(server, page_name, client, message, reply, replacements);
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/alist.h b/modules/extra/webcpanel/pages/nickserv/alist.h
new file mode 100644
index 000000000..5e4b31724
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/alist.h
@@ -0,0 +1,25 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+namespace WebCPanel
+{
+
+namespace NickServ
+{
+
+class Alist : public WebPanelProtectedPage
+{
+ public:
+ Alist(const Anope::string &cat, const Anope::string &u);
+
+ void OnRequest(HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &, NickAlias *, TemplateFileServer::Replacements &) anope_override;
+};
+
+}
+
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/cert.cpp b/modules/extra/webcpanel/pages/nickserv/cert.cpp
new file mode 100644
index 000000000..e354addca
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/cert.cpp
@@ -0,0 +1,39 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+#include "../../webcpanel.h"
+
+WebCPanel::NickServ::Cert::Cert(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
+{
+}
+
+void WebCPanel::NickServ::Cert::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements)
+{
+ if (message.post_data.count("certfp") > 0)
+ {
+ std::vector<Anope::string> params;
+ params.push_back("ADD");
+ params.push_back(message.post_data["certfp"]);
+
+ WebPanel::RunCommand(na->nc->display, na->nc, Config->NickServ, "nickserv/cert", params, replacements);
+ }
+ else if (message.get_data.count("del") > 0 && message.get_data.count("mask") > 0)
+ {
+ std::vector<Anope::string> params;
+ params.push_back("DEL");
+ params.push_back(message.get_data["mask"]);
+
+ WebPanel::RunCommand(na->nc->display, na->nc, Config->NickServ, "nickserv/cert", params, replacements);
+ }
+
+ for (unsigned i = 0; i < na->nc->cert.size(); ++i)
+ replacements["CERTS"] = na->nc->cert[i];
+
+ TemplateFileServer page("nickserv/cert.html");
+ page.Serve(server, page_name, client, message, reply, replacements);
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/cert.h b/modules/extra/webcpanel/pages/nickserv/cert.h
new file mode 100644
index 000000000..1f9f1b4ad
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/cert.h
@@ -0,0 +1,25 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+namespace WebCPanel
+{
+
+namespace NickServ
+{
+
+class Cert : public WebPanelProtectedPage
+{
+ public:
+ Cert(const Anope::string &cat, const Anope::string &u);
+
+ void OnRequest(HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &, NickAlias *, TemplateFileServer::Replacements &) anope_override;
+};
+
+}
+
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/info.cpp b/modules/extra/webcpanel/pages/nickserv/info.cpp
new file mode 100644
index 000000000..7ae07ad28
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/info.cpp
@@ -0,0 +1,111 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+#include "../../webcpanel.h"
+
+WebCPanel::NickServ::Info::Info(const Anope::string &cat, const Anope::string &u) : WebPanelProtectedPage(cat, u)
+{
+}
+
+void WebCPanel::NickServ::Info::OnRequest(HTTPProvider *server, const Anope::string &page_name, HTTPClient *client, HTTPMessage &message, HTTPReply &reply, NickAlias *na, TemplateFileServer::Replacements &replacements)
+{
+ if (message.post_data.empty() == false)
+ {
+ if (message.post_data.count("email") > 0)
+ {
+ if (message.post_data["email"] != na->nc->email)
+ {
+ if (!message.post_data["email"].empty() && !MailValidate(message.post_data["email"]))
+ replacements["ERRORS"] = "Invalid email";
+ else
+ {
+ na->nc->email = message.post_data["email"];
+ replacements["MESSAGES"] = "Email updated";
+ }
+ }
+ }
+ if (message.post_data.count("greet") > 0)
+ {
+ if (message.post_data["greet"].replace_all_cs("+", " ") != na->nc->greet)
+ {
+ na->nc->greet = HTTPUtils::URLDecode(message.post_data["greet"]);
+ replacements["MESSAGES"] = "Greet updated";
+ }
+ }
+ if (na->nc->HasFlag(NI_AUTOOP) != message.post_data.count("autoop"))
+ {
+ if (!na->nc->HasFlag(NI_AUTOOP))
+ na->nc->SetFlag(NI_AUTOOP);
+ else
+ na->nc->UnsetFlag(NI_AUTOOP);
+ replacements["MESSAGES"] = "Autoop updated";
+ }
+ if (na->nc->HasFlag(NI_PRIVATE) != message.post_data.count("private"))
+ {
+ if (!na->nc->HasFlag(NI_PRIVATE))
+ na->nc->SetFlag(NI_PRIVATE);
+ else
+ na->nc->UnsetFlag(NI_PRIVATE);
+ replacements["MESSAGES"] = "Private updated";
+ }
+ if (na->nc->HasFlag(NI_SECURE) != message.post_data.count("secure"))
+ {
+ if (!na->nc->HasFlag(NI_SECURE))
+ na->nc->SetFlag(NI_SECURE);
+ else
+ na->nc->UnsetFlag(NI_SECURE);
+ replacements["MESSAGES"] = "Secure updated";
+ }
+ if (message.post_data["kill"] == "on" && !na->nc->HasFlag(NI_KILLPROTECT))
+ {
+ na->nc->SetFlag(NI_KILLPROTECT);
+ na->nc->UnsetFlag(NI_KILL_QUICK);
+ replacements["MESSAGES"] = "Kill updated";
+ }
+ else if (message.post_data["kill"] == "quick" && !na->nc->HasFlag(NI_KILL_QUICK))
+ {
+ na->nc->UnsetFlag(NI_KILLPROTECT);
+ na->nc->SetFlag(NI_KILL_QUICK);
+ replacements["MESSAGES"] = "Kill updated";
+ }
+ else if (message.post_data["kill"] == "off" && (na->nc->HasFlag(NI_KILLPROTECT) || na->nc->HasFlag(NI_KILL_QUICK)))
+ {
+ na->nc->UnsetFlag(NI_KILLPROTECT);
+ na->nc->UnsetFlag(NI_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"] = do_strftime(na->time_registered, na->nc);
+ if (na->HasVhost())
+ {
+ if (na->GetVhostIdent().empty() == false)
+ replacements["VHOST"] = na->GetVhostIdent() + "@" + na->GetVhostHost();
+ else
+ replacements["VHOST"] = na->GetVhostHost();
+ }
+ replacements["GREET"] = HTTPUtils::Escape(na->nc->greet);
+ if (na->nc->HasFlag(NI_AUTOOP))
+ replacements["AUTOOP"];
+ if (na->nc->HasFlag(NI_PRIVATE))
+ replacements["PRIVATE"];
+ if (na->nc->HasFlag(NI_SECURE))
+ replacements["SECURE"];
+ if (na->nc->HasFlag(NI_KILLPROTECT))
+ replacements["KILL_ON"];
+ if (na->nc->HasFlag(NI_KILL_QUICK))
+ replacements["KILL_QUICK"];
+ if (!na->nc->HasFlag(NI_KILLPROTECT) && !na->nc->HasFlag(NI_KILL_QUICK))
+ replacements["KILL_OFF"];
+
+ TemplateFileServer page("nickserv/info.html");
+ page.Serve(server, page_name, client, message, reply, replacements);
+}
+
diff --git a/modules/extra/webcpanel/pages/nickserv/info.h b/modules/extra/webcpanel/pages/nickserv/info.h
new file mode 100644
index 000000000..05fc981ac
--- /dev/null
+++ b/modules/extra/webcpanel/pages/nickserv/info.h
@@ -0,0 +1,25 @@
+/*
+ * (C) 2003-2012 Anope Team
+ * Contact us at team@anope.org
+ *
+ * Please read COPYING and README for further details.
+ */
+
+namespace WebCPanel
+{
+
+namespace NickServ
+{
+
+class Info : public WebPanelProtectedPage
+{
+ public:
+ Info(const Anope::string &cat, const Anope::string &u);
+
+ void OnRequest(HTTPProvider *, const Anope::string &, HTTPClient *, HTTPMessage &, HTTPReply &, NickAlias *, TemplateFileServer::Replacements &) anope_override;
+};
+
+}
+
+}
+