diff options
-rw-r--r-- | data/modules.example.conf | 3 | ||||
-rw-r--r-- | include/modules/httpd.h | 8 | ||||
-rw-r--r-- | modules/extra/m_httpd.cpp | 6 | ||||
-rw-r--r-- | modules/extra/webcpanel/pages/chanserv/access.cpp | 2 | ||||
-rw-r--r-- | modules/extra/webcpanel/pages/chanserv/akick.cpp | 2 | ||||
-rw-r--r-- | modules/extra/webcpanel/pages/chanserv/set.cpp | 2 | ||||
-rw-r--r-- | modules/extra/webcpanel/pages/index.cpp | 6 | ||||
-rw-r--r-- | modules/extra/webcpanel/pages/logout.cpp | 2 | ||||
-rw-r--r-- | modules/extra/webcpanel/webcpanel.cpp | 2 | ||||
-rw-r--r-- | modules/extra/webcpanel/webcpanel.h | 3 |
10 files changed, 17 insertions, 19 deletions
diff --git a/data/modules.example.conf b/data/modules.example.conf index 030a01258..b284f0769 100644 --- a/data/modules.example.conf +++ b/data/modules.example.conf @@ -672,7 +672,4 @@ module { name = "help" } /* Page title. */ title = "Anope IRC Services"; - - /* Whether or not to use https on redirecting URLs. */ - ssl = no } diff --git a/include/modules/httpd.h b/include/modules/httpd.h index 6127a51e0..a2f5af04a 100644 --- a/include/modules/httpd.h +++ b/include/modules/httpd.h @@ -131,11 +131,12 @@ class HTTPProvider : public ListenSocket, public Service { Anope::string ip; unsigned short port; + bool ssl; public: Anope::string ext_ip; std::vector<Anope::string> ext_headers; - HTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p) : ListenSocket(i, p, i.find(':') != Anope::string::npos), Service(c, "HTTPProvider", n), ip(i), port(p) { } + HTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p, bool s) : ListenSocket(i, p, i.find(':') != Anope::string::npos), Service(c, "HTTPProvider", n), ip(i), port(p), ssl(s) { } const Anope::string &GetIP() const { @@ -147,6 +148,11 @@ class HTTPProvider : public ListenSocket, public Service return this->port; } + bool IsSSL() const + { + return this->ssl; + } + virtual bool RegisterPage(HTTPPage *page) = 0; virtual void UnregisterPage(HTTPPage *page) = 0; virtual HTTPPage* FindPage(const Anope::string &name) = 0; diff --git a/modules/extra/m_httpd.cpp b/modules/extra/m_httpd.cpp index bdb3ed602..50eaa3a77 100644 --- a/modules/extra/m_httpd.cpp +++ b/modules/extra/m_httpd.cpp @@ -291,9 +291,7 @@ class MyHTTPProvider : public HTTPProvider, public Timer std::list<Reference<MyHTTPClient> > clients; public: - bool ssl; - - MyHTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p, const int t, bool s) : Socket(-1, i.find(':') != Anope::string::npos), HTTPProvider(c, n, i, p), Timer(c, 10, Anope::CurTime, true), timeout(t), ssl(s) { } + MyHTTPProvider(Module *c, const Anope::string &n, const Anope::string &i, const unsigned short p, const int t, bool s) : Socket(-1, i.find(':') != Anope::string::npos), HTTPProvider(c, n, i, p, s), Timer(c, 10, Anope::CurTime, true), timeout(t) { } void Tick(time_t) anope_override { @@ -461,7 +459,7 @@ class HTTPD : public Module { MyHTTPProvider *p = it->second; - if (p->ssl && sslref) + if (p->IsSSL() && sslref) try { sslref->Init(p); diff --git a/modules/extra/webcpanel/pages/chanserv/access.cpp b/modules/extra/webcpanel/pages/chanserv/access.cpp index cb050c223..06b363b53 100644 --- a/modules/extra/webcpanel/pages/chanserv/access.cpp +++ b/modules/extra/webcpanel/pages/chanserv/access.cpp @@ -18,7 +18,7 @@ bool WebCPanel::ChanServ::Access::OnRequest(HTTPProvider *server, const Anope::s if (chname.empty()) { reply.error = HTTP_FOUND; - reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/chanserv/info"; + reply.headers["Location"] = Anope::string("http") + (server->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/chanserv/info"; return true; } diff --git a/modules/extra/webcpanel/pages/chanserv/akick.cpp b/modules/extra/webcpanel/pages/chanserv/akick.cpp index 5acb8d6da..80a8a6a3d 100644 --- a/modules/extra/webcpanel/pages/chanserv/akick.cpp +++ b/modules/extra/webcpanel/pages/chanserv/akick.cpp @@ -18,7 +18,7 @@ bool WebCPanel::ChanServ::Akick::OnRequest(HTTPProvider *server, const Anope::st if (chname.empty()) { reply.error = HTTP_FOUND; - reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/chanserv/info"; + reply.headers["Location"] = Anope::string("http") + (server->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/chanserv/info"; return true; } diff --git a/modules/extra/webcpanel/pages/chanserv/set.cpp b/modules/extra/webcpanel/pages/chanserv/set.cpp index cf3784d62..d0b54d15a 100644 --- a/modules/extra/webcpanel/pages/chanserv/set.cpp +++ b/modules/extra/webcpanel/pages/chanserv/set.cpp @@ -18,7 +18,7 @@ bool WebCPanel::ChanServ::Set::OnRequest(HTTPProvider *server, const Anope::stri if (chname.empty()) { reply.error = HTTP_FOUND; - reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/chanserv/info"; + reply.headers["Location"] = Anope::string("http") + (server->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/chanserv/info"; return true; } diff --git a/modules/extra/webcpanel/pages/index.cpp b/modules/extra/webcpanel/pages/index.cpp index be4bbbc6d..44314afc3 100644 --- a/modules/extra/webcpanel/pages/index.cpp +++ b/modules/extra/webcpanel/pages/index.cpp @@ -21,7 +21,7 @@ class WebpanelRequest : public IdentifyRequest void OnSuccess() anope_override { - if (!client) + if (!client || !server) return; NickAlias *na = NickAlias::Find(this->GetAccount()); if (!na) @@ -58,14 +58,14 @@ class WebpanelRequest : public IdentifyRequest } reply.error = HTTP_FOUND; - reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/nickserv/info"; + reply.headers["Location"] = Anope::string("http") + (server->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/nickserv/info"; client->SendReply(&reply); } void OnFail() anope_override { - if (!client) + if (!client || !server) return; replacements["INVALID_LOGIN"] = "Invalid username or password"; TemplateFileServer page("login.html"); diff --git a/modules/extra/webcpanel/pages/logout.cpp b/modules/extra/webcpanel/pages/logout.cpp index 8fafdcd4e..4cd6b1adf 100644 --- a/modules/extra/webcpanel/pages/logout.cpp +++ b/modules/extra/webcpanel/pages/logout.cpp @@ -17,7 +17,7 @@ bool WebCPanel::Logout::OnRequest(HTTPProvider *server, const Anope::string &pag na->Shrink<Anope::string>("webcpanel_ip"); reply.error = HTTP_FOUND; - reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/"; + reply.headers["Location"] = Anope::string("http") + (server->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/"; return true; } diff --git a/modules/extra/webcpanel/webcpanel.cpp b/modules/extra/webcpanel/webcpanel.cpp index f92dda579..e91152f5d 100644 --- a/modules/extra/webcpanel/webcpanel.cpp +++ b/modules/extra/webcpanel/webcpanel.cpp @@ -9,7 +9,6 @@ Module *me; Anope::string provider_name, template_name, template_base, page_title; -bool use_ssl = false; class ModuleWebCPanel : public Module { @@ -59,7 +58,6 @@ class ModuleWebCPanel : public Module template_name = block->Get<const Anope::string>("template", "default"); template_base = Anope::DataDir + "/modules/webcpanel/templates/" + template_name; page_title = block->Get<const Anope::string>("title", "Anope IRC Services"); - use_ssl = block->Get<bool>("ssl", "no"); // This is dumb, is there a better way to do this? provider = ServiceReference<HTTPProvider>("HTTPProvider", provider_name); if (!provider) diff --git a/modules/extra/webcpanel/webcpanel.h b/modules/extra/webcpanel/webcpanel.h index 638a7c1c9..5ff971ca3 100644 --- a/modules/extra/webcpanel/webcpanel.h +++ b/modules/extra/webcpanel/webcpanel.h @@ -14,7 +14,6 @@ extern Module *me; extern Anope::string provider_name, template_name, template_base, page_title; -extern bool use_ssl; struct SubSection { @@ -89,7 +88,7 @@ class WebPanelProtectedPage : public WebPanelPage if (!panel || !(na = panel->GetNickFromSession(client, message))) { reply.error = HTTP_FOUND; - reply.headers["Location"] = Anope::string("http") + (use_ssl ? "s" : "") + "://" + message.headers["Host"] + "/"; + reply.headers["Location"] = Anope::string("http") + (provider->IsSSL() ? "s" : "") + "://" + message.headers["Host"] + "/"; return true; // Access denied } |