diff options
author | timoreo <contact@timoreo.fr> | 2022-09-13 14:00:10 +0200 |
---|---|---|
committer | Rachel Powers <508861+Ryex@users.noreply.github.com> | 2023-05-05 15:05:17 -0700 |
commit | 565202c99004a13f4d6b9bad6ec1e0634fb280fb (patch) | |
tree | b71a8da4ca41b025664d61d229972d007debf88e /launcher/InstanceImportTask.cpp | |
parent | 63c21c53af457673a836915ae7351111c980a4bf (diff) | |
download | PrismLauncher-565202c99004a13f4d6b9bad6ec1e0634fb280fb.tar.gz PrismLauncher-565202c99004a13f4d6b9bad6ec1e0634fb280fb.tar.bz2 PrismLauncher-565202c99004a13f4d6b9bad6ec1e0634fb280fb.zip |
Added a protection against giving a mod url
Signed-off-by: timoreo <contact@timoreo.fr>
Diffstat (limited to 'launcher/InstanceImportTask.cpp')
-rw-r--r-- | launcher/InstanceImportTask.cpp | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp index ef221bf9..4d5193ba 100644 --- a/launcher/InstanceImportTask.cpp +++ b/launcher/InstanceImportTask.cpp @@ -106,14 +106,21 @@ void InstanceImportTask::executeTask() connect(req, &NetJob::failed, this, &InstanceImportTask::downloadFailed); connect(req, &NetJob::succeeded, [array, this] { auto doc = Json::requireDocument(*array); - // Have to use ensureString then use QUrl to get proper url encoding - m_sourceUrl = QUrl( - Json::ensureString(Json::ensureObject(Json::ensureObject(doc.object()), "data"), "downloadUrl", "", "downloadUrl")); - if (!m_sourceUrl.isValid()) { - emitFailed(tr("The modpack is blocked ! Please download it manually")); - return; + // No way to find out if it's a mod or a modpack before here + // And also we need to check if it ends with .zip, instead of any better way + auto fileName = Json::ensureString(Json::ensureObject(Json::ensureObject(doc.object()), "data"), "fileName"); + if (fileName.endsWith(".zip")) { + // Have to use ensureString then use QUrl to get proper url encoding + m_sourceUrl = QUrl( + Json::ensureString(Json::ensureObject(Json::ensureObject(doc.object()), "data"), "downloadUrl", "", "downloadUrl")); + if (!m_sourceUrl.isValid()) { + emitFailed(tr("The modpack is blocked ! Please download it manually")); + return; + } + downloadFromUrl(); + } else { + emitFailed(tr("This url isn't a valid modpack !")); } - downloadFromUrl(); }); connect(req, &NetJob::progress, this, &InstanceImportTask::downloadProgressChanged); connect(req, &NetJob::stepProgress, this, &InstanceImportTask::propogateStepProgress); |