diff --git a/src/app/AppController.cpp b/src/app/AppController.cpp index bce6160..9f67a35 100644 --- a/src/app/AppController.cpp +++ b/src/app/AppController.cpp @@ -27,6 +27,7 @@ AppController::~AppController() void AppController::initialize() { m_security->initialize(); + m_server->setSslConfiguration(m_security->sslConfiguration()); LocalSend::InfoDto info = buildInfoDto(); m_server->setLocalInfo(info, m_security->fingerprint()); diff --git a/src/core/include/LocalSendCore/Constants.h b/src/core/include/LocalSendCore/Constants.h index 474926c..5c77395 100644 --- a/src/core/include/LocalSendCore/Constants.h +++ b/src/core/include/LocalSendCore/Constants.h @@ -22,6 +22,12 @@ namespace ApiRoute { constexpr const char* UPLOAD = "/api/localsend/v2/upload"; constexpr const char* CANCEL = "/api/localsend/v2/cancel"; constexpr const char* SHOW = "/api/localsend/v2/show"; + + constexpr const char* V1_INFO = "/api/localsend/v1/info"; + constexpr const char* V1_REGISTER = "/api/localsend/v1/register"; + constexpr const char* V1_PREPARE_UPLOAD = "/api/localsend/v1/send-request"; + constexpr const char* V1_UPLOAD = "/api/localsend/v1/send"; + constexpr const char* V1_CANCEL = "/api/localsend/v1/cancel"; } } diff --git a/src/core/src/HttpServer.cpp b/src/core/src/HttpServer.cpp index 72bdcc1..7a60085 100644 --- a/src/core/src/HttpServer.cpp +++ b/src/core/src/HttpServer.cpp @@ -4,6 +4,7 @@ #ifdef HAS_QTHTTPSERVER #include +#include #include #include #include @@ -77,21 +78,32 @@ bool HttpServer::checkPin(const QHttpServerRequest& request, const QHostAddress& bool HttpServer::start(quint16 port, bool https) { - Q_UNUSED(https) - if (m_tcpServer && m_tcpServer->isListening()) { stop(); } m_port = port; - m_tcpServer = new QTcpServer(this); - if (!m_tcpServer->listen(QHostAddress::Any, port)) { - delete m_tcpServer; - m_tcpServer = nullptr; - return false; + if (https && !m_sslConfig.isNull()) { + auto* sslServer = new QSslServer(this); + sslServer->setSslConfiguration(m_sslConfig); + if (!sslServer->listen(QHostAddress::Any, port)) { + delete sslServer; + return false; + } + m_tcpServer = sslServer; + m_server->bind(m_tcpServer); + qDebug() << "[HttpServer] Listening on HTTPS port:" << port; + } else { + m_tcpServer = new QTcpServer(this); + if (!m_tcpServer->listen(QHostAddress::Any, port)) { + delete m_tcpServer; + m_tcpServer = nullptr; + return false; + } + m_server->bind(m_tcpServer); + qDebug() << "[HttpServer] Listening on HTTP port:" << port; } - m_server->bind(m_tcpServer); return true; } @@ -165,30 +177,33 @@ void HttpServer::respondToPrepareUpload(const QString& sessionId, bool accepted, void HttpServer::setupRoutes() { - m_server->route(ApiRoute::INFO, QHttpServerRequest::Method::Get, - [this](const QHttpServerRequest&) { - return handleInfoRequest(); - }); - - m_server->route(ApiRoute::REGISTER, QHttpServerRequest::Method::Post, - [this](const QHttpServerRequest& request) { - return handleRegisterRequest(request, request.remoteAddress()); - }); - - m_server->route(ApiRoute::PREPARE_UPLOAD, QHttpServerRequest::Method::Post, - [this](const QHttpServerRequest& request) { - return handlePrepareUploadRequest(request); - }); - - m_server->route(ApiRoute::UPLOAD, QHttpServerRequest::Method::Post, - [this](const QHttpServerRequest& request) { - return handleUploadRequest(request); - }); - - m_server->route(ApiRoute::CANCEL, QHttpServerRequest::Method::Post, - [this](const QHttpServerRequest& request) { - return handleCancelRequest(request); - }); + auto infoHandler = [this](const QHttpServerRequest&) { + return handleInfoRequest(); + }; + auto registerHandler = [this](const QHttpServerRequest& request) { + return handleRegisterRequest(request, request.remoteAddress()); + }; + auto prepareUploadHandler = [this](const QHttpServerRequest& request) { + return handlePrepareUploadRequest(request); + }; + auto uploadHandler = [this](const QHttpServerRequest& request) { + return handleUploadRequest(request); + }; + auto cancelHandler = [this](const QHttpServerRequest& request) { + return handleCancelRequest(request); + }; + + m_server->route(ApiRoute::INFO, QHttpServerRequest::Method::Get, infoHandler); + m_server->route(ApiRoute::REGISTER, QHttpServerRequest::Method::Post, registerHandler); + m_server->route(ApiRoute::PREPARE_UPLOAD, QHttpServerRequest::Method::Post, prepareUploadHandler); + m_server->route(ApiRoute::UPLOAD, QHttpServerRequest::Method::Post, uploadHandler); + m_server->route(ApiRoute::CANCEL, QHttpServerRequest::Method::Post, cancelHandler); + + m_server->route(ApiRoute::V1_INFO, QHttpServerRequest::Method::Get, infoHandler); + m_server->route(ApiRoute::V1_REGISTER, QHttpServerRequest::Method::Post, registerHandler); + m_server->route(ApiRoute::V1_PREPARE_UPLOAD, QHttpServerRequest::Method::Post, prepareUploadHandler); + m_server->route(ApiRoute::V1_UPLOAD, QHttpServerRequest::Method::Post, uploadHandler); + m_server->route(ApiRoute::V1_CANCEL, QHttpServerRequest::Method::Post, cancelHandler); } QHttpServerResponse HttpServer::handleInfoRequest() diff --git a/src/core/src/Settings.cpp b/src/core/src/Settings.cpp index 243b66c..aa4d622 100644 --- a/src/core/src/Settings.cpp +++ b/src/core/src/Settings.cpp @@ -53,7 +53,7 @@ void Settings::setPort(quint16 port) bool Settings::https() const { - return m_settings.value(QStringLiteral("https"), false).toBool(); + return m_settings.value(QStringLiteral("https"), true).toBool(); } void Settings::setHttps(bool enabled)