diff --git a/src/webui/webapplication.cpp b/src/webui/webapplication.cpp index 94c7b3ca3..1b83b9915 100644 --- a/src/webui/webapplication.cpp +++ b/src/webui/webapplication.cpp @@ -74,6 +74,7 @@ const QString DEFAULT_SESSION_COOKIE_NAME = u"SID"_s; const QString WWW_FOLDER = u":/www"_s; const QString PUBLIC_FOLDER = u"/public"_s; const QString PRIVATE_FOLDER = u"/private"_s; +const QString INDEX_HTML = u"/index.html"_s; namespace { @@ -194,7 +195,7 @@ void WebApplication::sendWebUIFile() const QString path = (request().path != u"/") ? request().path - : u"/index.html"_s; + : INDEX_HTML; Path localPath = m_rootFolder / Path(session() ? PRIVATE_FOLDER : PUBLIC_FOLDER) @@ -208,7 +209,17 @@ void WebApplication::sendWebUIFile() if (m_isAltUIUsed) { if (!Utils::Fs::isRegularFile(localPath)) + { +#ifdef DISABLE_GUI + if (path == INDEX_HTML) + { + auto *preferences = Preferences::instance(); + preferences->setAltWebUIEnabled(false); + preferences->apply(); + } +#endif throw InternalServerErrorHTTPError(tr("Unacceptable file type, only regular file is allowed.")); + } const QString rootFolder = m_rootFolder.data(); @@ -216,7 +227,17 @@ void WebApplication::sendWebUIFile() while (fileInfo.path() != rootFolder) { if (fileInfo.isSymLink()) + { +#ifdef DISABLE_GUI + if (path == INDEX_HTML) + { + auto *preferences = Preferences::instance(); + preferences->setAltWebUIEnabled(false); + preferences->apply(); + } +#endif throw InternalServerErrorHTTPError(tr("Symlinks inside alternative UI folder are forbidden.")); + } fileInfo.setFile(fileInfo.path()); }