From 9fd4b658857a14cfddf25141acaac89a4d6e9927 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Wed, 8 Jun 2016 18:50:12 -0400 Subject: Rework pkg_mgr_install.php: - Stop using id parameter for additional packages, keep using it only for firmware upgrades - Created to control variables $completed and $confirmed to check all the stages and make it easy to understand what is happening - Stop using $pkgid and use $pkgname instead - Set $pkgname early and validate the port name - Use $firmwareupdate everywhere to check if it's a firmware upgrade - Add hidden input called confirmed to control when user has confirmed installation / upgrade / removal - Add specific messages for reinstall all - Remove an extra form submit and just changes progress bar and informative panel when json process finished successfully --- src/usr/local/www/pkg_mgr.php | 2 +- src/usr/local/www/pkg_mgr_install.php | 120 +++++++++++++++++----------------- 2 files changed, 62 insertions(+), 60 deletions(-) diff --git a/src/usr/local/www/pkg_mgr.php b/src/usr/local/www/pkg_mgr.php index 7ce9821..6eb6bc8 100644 --- a/src/usr/local/www/pkg_mgr.php +++ b/src/usr/local/www/pkg_mgr.php @@ -144,7 +144,7 @@ function get_pkg_table() { $pkgtbl .= '' . "\n"; $pkgtbl .= '' . "\n"; - $pkgtbl .= 'Install' . "\n"; + $pkgtbl .= 'Install' . "\n"; if (!$g['disablepackageinfo'] && $index['pkginfolink'] && $index['pkginfolink'] != $index['www']) { $pkgtbl .= 'info' . "\n"; diff --git a/src/usr/local/www/pkg_mgr_install.php b/src/usr/local/www/pkg_mgr_install.php index 677e3b7..fe683b5 100644 --- a/src/usr/local/www/pkg_mgr_install.php +++ b/src/usr/local/www/pkg_mgr_install.php @@ -237,25 +237,33 @@ if (!empty($_REQUEST['mode'])) { $pkgmode = $_REQUEST['mode']; } -if ($_POST) { - if (empty($_POST['id']) && $pkgmode != 'reinstallall') { +$confirmed = isset($_POST['confirmed']) && $_POST['confirmed'] == 'true'; +$completed = isset($_POST['completed']) && $_POST['completed'] == 'true'; + +if (!empty($_REQUEST['id'])) { + if ($_REQUEST['id'] != "firmware") { header("Location: pkg_mgr_installed.php"); return; } -} else if ($_GET && !$_GET['id']) { - if (empty($_GET['pkg']) && ($pkgmode != 'reinstallall')) { + $firmwareupdate = true; +} elseif (!$completed && empty($_REQUEST['pkg']) && $pkgmode != 'reinstallall') { + header("Location: pkg_mgr_installed.php"); + return; +} + +$pkgname = ''; +if (!empty($_REQUEST['pkg'])) { + $pkgname = $_REQUEST['pkg']; + + if (!pkg_valid_name($pkgname)) { header("Location: pkg_mgr_installed.php"); return; } } -if ($_GET && $_GET['id'] == "firmware") { - $firmwareupdate = true; -} - $tab_array = array(); -if ($firmwareupdate || ($_POST['id'] == "firmware")) { +if ($firmwareupdate) { $pgtitle = array(gettext("System"), gettext("Update"), gettext("System Update")); $tab_array[] = array(gettext("System Update"), true, ""); $tab_array[] = array(gettext("Update Settings"), false, "system_update_settings.php"); @@ -267,13 +275,11 @@ if ($firmwareupdate || ($_POST['id'] == "firmware")) { } include("head.inc"); - -if (!empty($_POST['id']) || $pkgmode == "reinstallall"): ?> - - + + ", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['id'], ENT_QUOTES | ENT_HTML401)); - } else if (!empty($pkgmode) && !empty($_GET['pkg'])) { - $pkgname = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['pkg'], ENT_QUOTES | ENT_HTML401)); - } - +if (!$confirmed && !$completed && + ($firmwareupdate || $pkgmode == 'reinstallall' || !empty($pkgname))): switch ($pkgmode) { case 'reinstallpkg': $pkgtxt = sprintf(gettext('Confirmation Required to reinstall package %s.'), $pkgname); @@ -356,6 +357,7 @@ if (($_POST['completed'] != "true") && (empty($pkgmode) && $_GET['id']) || (!emp
+
-