From 67db0c03d72557db0b0ab994534c585a6d54a9ad Mon Sep 17 00:00:00 2001 From: "Stiliyan Tonev (Bark)" Date: Fri, 10 Jan 2025 09:56:21 +0200 Subject: [PATCH] fix: Add check for Content-Type when downloading tracker list. Check if the URL from where we are downloading the trackers returns `Content-Type` as `text`. Otherwise consider it might be a non-usable format for this functionality (html,xml,etc.ect.) --- src/base/net/downloadhandlerimpl.cpp | 1 + src/base/net/downloadmanager.h | 1 + src/gui/trackersadditiondialog.cpp | 7 +++++++ 3 files changed, 9 insertions(+) diff --git a/src/base/net/downloadhandlerimpl.cpp b/src/base/net/downloadhandlerimpl.cpp index 370347946..61a516088 100644 --- a/src/base/net/downloadhandlerimpl.cpp +++ b/src/base/net/downloadhandlerimpl.cpp @@ -143,6 +143,7 @@ void Net::DownloadHandlerImpl::processFinishedDownload() #else m_result.data = m_reply->readAll(); #endif + m_result.contentType = m_reply->header(QNetworkRequest::ContentTypeHeader).toString(); if (m_downloadRequest.saveToFile()) { diff --git a/src/base/net/downloadmanager.h b/src/base/net/downloadmanager.h index 8f74c2f9d..a13768e9d 100644 --- a/src/base/net/downloadmanager.h +++ b/src/base/net/downloadmanager.h @@ -107,6 +107,7 @@ namespace Net QByteArray data; Path filePath; QString magnetURI; + QString contentType; }; class DownloadHandler : public QObject diff --git a/src/gui/trackersadditiondialog.cpp b/src/gui/trackersadditiondialog.cpp index 0014d5a55..4c93aacbc 100644 --- a/src/gui/trackersadditiondialog.cpp +++ b/src/gui/trackersadditiondialog.cpp @@ -109,6 +109,13 @@ void TrackersAdditionDialog::onTorrentListDownloadFinished(const Net::DownloadRe m_ui->downloadButton->setEnabled(true); setCursor(Qt::ArrowCursor); + if (!result.contentType.contains(u"text/plain"_s, Qt::CaseInsensitive)) + { + QMessageBox::warning(this, tr("Download trackers list error") + , tr("The content type of the downloaded file is not plain text. Content-Type: \"%1\"").arg(result.contentType)); + return; + } + if (result.status != Net::DownloadStatus::Success) { QMessageBox::warning(this, tr("Download trackers list error")