diff options
author | jim-p <jimp@pfsense.org> | 2012-04-30 15:32:47 -0400 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2012-05-08 09:03:02 -0400 |
commit | cb01726c5a6b7572a36d3552ca4e4e1bc50dfc12 (patch) | |
tree | 2bf10045423b3b1c21f704a863526c4da2b0a89e /etc | |
parent | c8deb6241b442e934bfceb4cdbbe8434f5eb73bd (diff) | |
download | pfsense-cb01726c5a6b7572a36d3552ca4e4e1bc50dfc12.zip pfsense-cb01726c5a6b7572a36d3552ca4e4e1bc50dfc12.tar.gz |
Move the stop_packages code to a function, and call the function from the shell script, and call the function directly for a reboot. Fixes #2402 and ticket #1564
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/pkg-utils.inc | 44 | ||||
-rw-r--r-- | etc/inc/system.inc | 3 | ||||
-rwxr-xr-x | etc/rc.stop_packages | 75 |
3 files changed, 49 insertions, 73 deletions
diff --git a/etc/inc/pkg-utils.inc b/etc/inc/pkg-utils.inc index feb0fab..69fdab2 100644 --- a/etc/inc/pkg-utils.inc +++ b/etc/inc/pkg-utils.inc @@ -1247,4 +1247,48 @@ function pkg_reinstall_all() { } } +function stop_packages() { + require_once("config.inc"); + require_once("functions.inc"); + require_once("filter.inc"); + require_once("shaper.inc"); + require_once("captiveportal.inc"); + require_once("pkg-utils.inc"); + require_once("pfsense-utils.inc"); + require_once("service-utils.inc"); + + global $config, $g, $rcfileprefix; + + log_error("Stopping all packages."); + + $rcfiles = glob("{$rcfileprefix}*.sh"); + if (!$rcfiles) + $rcfiles = array(); + else { + $rcfiles = array_flip($rcfiles); + if (!$rcfiles) + $rcfiles = array(); + } + + if (is_array($config['installedpackages']['package'])) { + foreach($config['installedpackages']['package'] as $package) { + echo " Stopping package {$package['name']}..."; + stop_service($package['name']); + unset($rcfiles["{$rcfileprefix}{$package['name']}.sh"]); + echo "done.\n"; + } + } + + $shell = @popen("/bin/sh", "w"); + if ($shell) { + foreach ($rcfiles as $rcfile => $number) { + echo " Stopping {$rcfile}..."; + fwrite($shell, "{$rcfile} stop >>/tmp/bootup_messages 2>&1"); + echo "done.\n"; + } + + pclose($shell); + } +} + ?> diff --git a/etc/inc/system.inc b/etc/inc/system.inc index 2d4fd12..d918e17 100644 --- a/etc/inc/system.inc +++ b/etc/inc/system.inc @@ -1215,7 +1215,8 @@ function system_reboot_cleanup() { captiveportal_radius_stop_all(); require_once("voucher.inc"); voucher_save_db_to_config(); - mwexec("/etc/rc.stop_packages"); + require_once("pkg-utils.inc"); + stop_packages(); } function system_do_shell_commands($early = 0) { diff --git a/etc/rc.stop_packages b/etc/rc.stop_packages index 43080e9..b7a87f1 100755 --- a/etc/rc.stop_packages +++ b/etc/rc.stop_packages @@ -1,74 +1,5 @@ -#!/bin/sh - -/usr/local/bin/php -q <<ENDPHP +#!/usr/local/bin/php -f <?php -/* $Id$ */ -/* - rc.stop_packages - part of pfSense (http://www.pfSense.com) - Copyright (C) 2004 Scott Ullrich - 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. -*/ - -require_once("config.inc"); -require_once("functions.inc"); -require_once("filter.inc"); -require_once("shaper.inc"); -require_once("captiveportal.inc"); require_once("pkg-utils.inc"); -require_once("pfsense-utils.inc"); -require_once("service-utils.inc"); - -log_error("Stopping all packages."); - -$rcfiles = glob("{$rcfileprefix}*.sh"); -if (!$rcfiles) - $rcfiles = array(); -else { - $rcfiles = array_flip($rcfiles); - if (!$rcfiles) - $rcfiles = array(); -} - -if (is_array($config['installedpackages']['package'])) { - foreach($config['installedpackages']['package'] as $package) { - echo " Stopping package {$package['name']}..."; - stop_service($package['name']); - unset($rcfiles["{$rcfileprefix}{$package['name']}.sh"]); - echo "done.\n"; - } -} - -$shell = @popen("/bin/sh", "w"); -if ($shell) { - foreach ($rcfiles as $rcfile => $number) { - echo " Stopping {$rcfile}..."; - fwrite($shell, "{$rcfile} stop >>/tmp/bootup_messages 2>&1"); - echo "done.\n"; - } - - pclose($shell); -} -?> -ENDPHP
\ No newline at end of file +stop_packages(); +?>
\ No newline at end of file |