Enable SSL and HTTP/2

main
Simon Quigley 1 week ago
parent f3bd66b872
commit fddc635957

@ -23,16 +23,18 @@
#include <QtHttpServer/QHttpServer> #include <QtHttpServer/QHttpServer>
#include <QtHttpServer/QHttpServerRequest> #include <QtHttpServer/QHttpServerRequest>
#include <QtHttpServer/QHttpServerResponse> #include <QtHttpServer/QHttpServerResponse>
#include <QTcpServer> #include <QSslServer>
#include <QDir> #include <QDir>
#include <QFile> #include <QFile>
#include <QDateTime> #include <QDateTime>
#include <QJsonArray> #include <QJsonArray>
#include <QDebug> #include <QDebug>
#include <QtConcurrent/QtConcurrent> #include <QtConcurrent/QtConcurrent>
#include <QFile>
#include <QFuture> #include <QFuture>
#include <QSqlQuery> #include <QSqlQuery>
#include <QSqlError> #include <QSqlError>
#include <QSslKey>
// C++ includes // C++ includes
#include <iostream> #include <iostream>
@ -965,13 +967,32 @@ bool WebServer::start_server(quint16 port) {
}); });
}); });
// Attempt to listen on `port` {
if (!tcp_server_.listen(QHostAddress::Any, port) || !http_server_.bind(&tcp_server_)) { QSslConfiguration ssl_config = QSslConfiguration::defaultConfiguration();
QFile cert_file("/srv/lubuntu-ci/repos/ci-tools/server.crt");
cert_file.open(QIODevice::ReadOnly);
ssl_config.setLocalCertificate(QSslCertificate(&cert_file, QSsl::Pem));
cert_file.close();
QFile key_file("/srv/lubuntu-ci/repos/ci-tools/server.key");
key_file.open(QIODevice::ReadOnly);
ssl_config.setPrivateKey(QSslKey(&key_file, QSsl::Rsa, QSsl::Pem));
key_file.close();
ssl_config.setPeerVerifyMode(QSslSocket::VerifyNone);
ssl_config.setProtocol(QSsl::TlsV1_3);
ssl_server_.setSslConfiguration(ssl_config);
QHttp2Configuration Http2Conf = QHttp2Configuration();
Http2Conf.setServerPushEnabled(true);
http_server_.setHttp2Configuration(Http2Conf);
}
if (!ssl_server_.listen(QHostAddress::Any, port) || !http_server_.bind(&ssl_server_)) {
std::cerr << timestamp_now() << " [ERROR] Could not bind to port " << port << std::endl; std::cerr << timestamp_now() << " [ERROR] Could not bind to port " << port << std::endl;
return false; return false;
} }
std::cout << timestamp_now() << " [INFO] Web server running on port " std::cout << timestamp_now() << " [INFO] Web server running on port "
<< tcp_server_.serverPort() << std::endl; << ssl_server_.serverPort() << std::endl;
return true; return true;
} }

@ -25,7 +25,7 @@
#include <QMap> #include <QMap>
#include <QSqlDatabase> #include <QSqlDatabase>
#include <QString> #include <QString>
#include <QTcpServer> #include <QSslServer>
#include <string> #include <string>
class WebServer : public QObject { class WebServer : public QObject {
@ -41,7 +41,7 @@ private:
void load_tokens(QSqlDatabase& p_db); void load_tokens(QSqlDatabase& p_db);
QHttpServer http_server_; QHttpServer http_server_;
QTcpServer tcp_server_; QSslServer ssl_server_;
std::unique_ptr<TaskQueue> task_queue; std::unique_ptr<TaskQueue> task_queue;
std::jthread expire_tokens_thread_; std::jthread expire_tokens_thread_;
std::jthread process_sources_thread_; std::jthread process_sources_thread_;

Loading…
Cancel
Save