Merge pull request #6621 from Chocobo1/webui

Webui: refactor
This commit is contained in:
sledgehammer999
2017-04-17 17:08:25 +03:00
committed by GitHub
4 changed files with 85 additions and 68 deletions

View File

@@ -60,22 +60,6 @@ Server::~Server()
{
}
#ifndef QT_NO_OPENSSL
void Server::enableHttps(const QList<QSslCertificate> &certificates, const QSslKey &key)
{
m_certificates = certificates;
m_key = key;
m_https = true;
}
void Server::disableHttps()
{
m_https = false;
m_certificates.clear();
m_key.clear();
}
#endif
void Server::incomingConnection(qintptr socketDescriptor)
{
QTcpSocket *serverSocket;
@@ -104,6 +88,36 @@ void Server::incomingConnection(qintptr socketDescriptor)
}
#ifndef QT_NO_OPENSSL
bool Server::setupHttps(const QByteArray &certificates, const QByteArray &key)
{
QSslKey sslKey(key, QSsl::Rsa);
if (sslKey.isNull())
sslKey = QSslKey(key, QSsl::Ec);
const QList<QSslCertificate> certs = QSslCertificate::fromData(certificates);
const bool areCertsValid = !certs.empty() && std::all_of(certs.begin(), certs.end(), [](const QSslCertificate &c) { return !c.isNull(); });
if (!sslKey.isNull() && areCertsValid)
{
m_key = sslKey;
m_certificates = certs;
m_https = true;
return true;
}
else
{
disableHttps();
return false;
}
}
void Server::disableHttps()
{
m_https = false;
m_certificates.clear();
m_key.clear();
}
QList<QSslCipher> Server::safeCipherList() const
{
const QStringList badCiphers = {"idea", "rc4"};

View File

@@ -34,6 +34,7 @@
#define HTTP_SERVER_H
#include <QTcpServer>
#ifndef QT_NO_OPENSSL
#include <QSslCertificate>
#include <QSslCipher>
@@ -55,17 +56,18 @@ namespace Http
~Server();
#ifndef QT_NO_OPENSSL
void enableHttps(const QList<QSslCertificate> &certificates, const QSslKey &key);
bool setupHttps(const QByteArray &certificates, const QByteArray &key);
void disableHttps();
#endif
private:
IRequestHandler *m_requestHandler;
void incomingConnection(qintptr socketDescriptor);
IRequestHandler *m_requestHandler;
#ifndef QT_NO_OPENSSL
QList<QSslCipher> safeCipherList() const;
bool m_https;
QList<QSslCertificate> m_certificates;
QSslKey m_key;