From 445410f6ef77340d87a164fbb99868da49b9acb8 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Thu, 28 Sep 2023 09:47:41 +0200 Subject: [PATCH 1/2] Revert "migrate: Fix false positives once more" This reverts commit 436bac321a426a1cdff36e2dfbda3b91cba25287. --- application/controllers/MigrateController.php | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/application/controllers/MigrateController.php b/application/controllers/MigrateController.php index fc46fbe5..4978ccb1 100644 --- a/application/controllers/MigrateController.php +++ b/application/controllers/MigrateController.php @@ -107,13 +107,8 @@ class MigrateController extends Controller foreach ($urls as $urlString) { $url = Url::fromPath($urlString); $filter = QueryString::parse($url->getQueryString()); - - $newFilter = $traverseFilter($filter); - if ($newFilter !== null) { - $result[] = rawurldecode($url->setParams([])->setFilter($newFilter)->getAbsoluteUrl()); - } else { - $result[] = $url->getAbsoluteUrl(); - } + $filter = $traverseFilter($filter) ?? $filter; + $result[] = rawurldecode($url->setParams([])->setFilter($filter)->getAbsoluteUrl()); } $response = $this->getResponse()->json(); From a6f608f58073924b689134b85a782584ed5ba965 Mon Sep 17 00:00:00 2001 From: Johannes Meyer Date: Thu, 28 Sep 2023 09:48:05 +0200 Subject: [PATCH 2/2] migrate.js: Decode container urls with `decodeURIComponent` `decodeURI` only decodes the path. `decodeURIComponent` decodes everything, just like PHP's `rawurldecode`, which is used by the server. --- public/js/migrate.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/public/js/migrate.js b/public/js/migrate.js index 82302c7e..dddbaed8 100644 --- a/public/js/migrate.js +++ b/public/js/migrate.js @@ -115,7 +115,7 @@ $target.each((_, container) => { let $container = $(container); - let href = decodeURI($container.data('icingaUrl')); + let href = decodeURIComponent($container.data('icingaUrl')); let containerId = $container.attr('id'); if (!!href) { @@ -178,12 +178,12 @@ var containerUrl = ''; if ($container.length) { - containerUrl = decodeURI($container.data('icingaUrl')); + containerUrl = decodeURIComponent($container.data('icingaUrl')); } if (suggestionUrl !== containerUrl) { var $newContainer = $('#main > .container').filter(function () { - return decodeURI($(this).data('icingaUrl')) === suggestionUrl; + return decodeURIComponent($(this).data('icingaUrl')) === suggestionUrl; }); if ($newContainer.length) { // Container moved @@ -222,7 +222,7 @@ var $button = $(event.target).closest('button'); var $suggestion = $button.parent(); var $container = $('#' + $suggestion.data('containerId')); - var containerUrl = decodeURI($container.data('icingaUrl')); + var containerUrl = decodeURIComponent($container.data('icingaUrl')); if ($button.attr('value') === '1') { // Yes @@ -472,7 +472,7 @@ this.Popup().find('li').each(function () { var $suggestion = $(this); var $container = $('#' + $suggestion.data('containerId')); - var containerUrl = decodeURI($container.data('icingaUrl')); + var containerUrl = decodeURIComponent($container.data('icingaUrl')); if ( // Unknown url, yet typeof _this.knownMigrations[containerUrl] === 'undefined'