From 46bc6e545a17e77202aaf01ec0cd8d5a46567525 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Tue, 25 Aug 2015 08:08:24 -0300 Subject: Move main pfSense content to src/ --- src/usr/local/www/pkg_mgr_install.php | 323 ++++++++++++++++++++++++++++++++++ 1 file changed, 323 insertions(+) create mode 100644 src/usr/local/www/pkg_mgr_install.php (limited to 'src/usr/local/www/pkg_mgr_install.php') diff --git a/src/usr/local/www/pkg_mgr_install.php b/src/usr/local/www/pkg_mgr_install.php new file mode 100644 index 0000000..1de2a40 --- /dev/null +++ b/src/usr/local/www/pkg_mgr_install.php @@ -0,0 +1,323 @@ + + Copyright (C) 2005 Colin Smith + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, + INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY + AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, + OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. +*/ +/* + pfSense_BUILDER_BINARIES: /bin/rm + pfSense_MODULE: pkgs +*/ + +##|+PRIV +##|*IDENT=page-system-packagemanager-installpackage +##|*NAME=System: Package Manager: Install Package page +##|*DESCR=Allow access to the 'System: Package Manager: Install Package' page. +##|*MATCH=pkg_mgr_install.php* +##|-PRIV + +ini_set('max_execution_time', '0'); + +require("guiconfig.inc"); +require_once("functions.inc"); +require_once("filter.inc"); +require_once("shaper.inc"); +require_once("pkg-utils.inc"); + +global $static_output; + +$static_output = ""; +$static_status = ""; +$sendto = "output"; + +$pgtitle = array(gettext("System"), gettext("Package Manager"), gettext("Install Package")); +include("head.inc"); + +if ($_POST) { + if (isset($_POST['pkgcancel']) || (empty($_POST['id']) && $_POST['mode'] != 'reinstallall')) { + header("Location: pkg_mgr_installed.php"); + return; + } +} else if ($_GET) { + switch ($_GET['mode']) { + case 'reinstallall': + case 'showlog': + break; + case 'installedinfo': + case 'reinstallxml': + case 'reinstallpkg': + case 'delete': + if (empty($_GET['pkg'])) { + header("Location: pkg_mgr_installed.php"); + return; + } + break; + default: + if (empty($_GET['id'])) { + header("Location: pkg_mgr_installed.php"); + return; + } + break; + } +} + +?> + + + +
+
+ + + + +", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['id'], ENT_QUOTES | ENT_HTML401)); + $pkgmode = 'installed'; + } else if (!empty($_GET['mode']) && !empty($_GET['pkg'])) { + $pkgname = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['pkg'], ENT_QUOTES | ENT_HTML401)); + $pkgmode = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['mode'], ENT_QUOTES | ENT_HTML401)); + } else if ($_GET['mode'] == 'reinstallall') { + $pkgmode = 'reinstallall'; + } + $pkg_gui_xml_text = ""; + switch ($pkgmode) { + case 'reinstallall': + $pkgname = 'All packages'; + $pkgtxt = 'reinstalled'; + break; + case 'reinstallxml': + $pkg_gui_xml_text = " GUI XML components"; + case 'reinstallpkg': + $pkgtxt = 'reinstalled'; + break; + case 'delete': + $pkgtxt = 'deleted'; + break; + default: + $pkgtxt = $pkgmode; + break; + } +?> + + + + + + + + +
+ +
+ + + + + +
Package: will be .
+ Please confirm the action.
+
+ + + + +
+
+ + + + + + +
+ + + + +
+ /images/misc/bar_blue.gif' width="0" height="15" name="progressbar" id="progressbar" alt="progress bar" /> +
+
+
+
+ + +
+ + +
+
+
+ + + +", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['pkg'], ENT_QUOTES | ENT_HTML401)); + switch ($_GET['mode']) { + case 'showlog': + if (strpos($pkgname, ".")) { + update_output_window(gettext("Something is wrong on the request.")); + } else if (file_exists("/tmp/pkg_mgr_{$pkgname}.log")) { + update_output_window(@file_get_contents("/tmp/pkg_mgr_{$pkgname}.log")); + } else { + update_output_window(gettext("Log was not retrievable.")); + } + break; + case 'installedinfo': + if (file_exists("/tmp/{$pkgname}.info")) { + $status = @file_get_contents("/tmp/{$pkgname}.info"); + update_status("{$pkgname} " . gettext("installation completed.")); + update_output_window($status); + } else { + update_output_window(sprintf(gettext("Could not find %s."), $pkgname)); + } + break; + default: + break; + } +} else if ($_POST) { + $pkgid = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_POST['id'], ENT_QUOTES | ENT_HTML401)); + + /* All other cases make changes, so mount rw fs */ + conf_mount_rw(); + /* Write out configuration to create a backup prior to pkg install. */ + write_config(gettext("Creating restore point before package installation.")); + + switch ($_POST['mode']) { + case 'delete': + uninstall_package($pkgid); + update_status(gettext("Package deleted.")); + $static_output .= "\n" . gettext("Package deleted."); + update_output_window($static_output); + filter_configure(); + break; + case 'reinstallxml': + pkg_fetch_config_file($pkgid); + pkg_fetch_additional_files($pkgid); + break; + case 'reinstallpkg': + delete_package_xml($pkgid); + if (install_package($pkgid) != 0) { + update_status(gettext("Package reinstallation failed.")); + $static_output .= "\n" . gettext("Package reinstallation failed."); + update_output_window($static_output); + } else { + update_status(gettext("Package reinstalled.")); + $static_output .= "\n" . gettext("Package reinstalled."); + update_output_window($static_output); + filter_configure(); + } + @file_put_contents("/tmp/{$pkgid}.info", $static_output); + $pkgid = htmlspecialchars($pkgid); + echo ""; + send_event("service restart packages"); + break; + case 'reinstallall': + if (is_array($config['installedpackages']) && is_array($config['installedpackages']['package'])) { + $todo = array(); + foreach ($config['installedpackages']['package'] as $package) { + $todo[] = array('name' => $package['name'], 'version' => $package['version']); + } + foreach ($todo as $pkgtodo) { + $static_output = ""; + if ($pkgtodo['name']) { + update_output_window($static_output); + uninstall_package($pkgtodo['name']); + install_package($pkgtodo['name']); + } + } + update_status(gettext("All packages reinstalled.")); + $static_output .= "\n" . gettext("All packages reinstalled."); + update_output_window($static_output); + filter_configure(); + send_event("service restart packages"); + } else { + update_output_window(gettext("No packages are installed.")); + } + break; + case 'installed': + default: + $status = install_package($pkgid); + if ($status != 0) { + update_status(gettext("Installation of") . " {$pkgid} " . gettext("FAILED!")); + $static_output .= "\n" . gettext("Installation halted."); + update_output_window($static_output); + } else { + $status_a = gettext(sprintf("Installation of %s completed.", $pkgid)); + update_status($status_a); + $status = get_after_install_info($pkgid); + if ($status) { + $static_output .= "\n" . gettext("Installation completed.") . "\n{$pkgid} " . gettext("setup instructions") . ":\n{$status}"; + } else { + $static_output .= "\n" . gettext("Installation completed. Please check to make sure that the package is configured from the respective menu then start the package."); + } + + @file_put_contents("/tmp/{$pkgid}.info", $static_output); + echo ""; + } + filter_configure(); + break; + } + + // Delete all temporary package tarballs and staging areas. + unlink_if_exists("/tmp/apkg_*"); + rmdir_recursive("/var/tmp/instmp*"); + + // close log + if ($fd_log) { + fclose($fd_log); + } + + /* Restore to read only fs */ + conf_mount_ro(); +} +?> + + + -- cgit v1.1