mirror of
https://github.com/pfsense/pfsense.git
synced 2025-10-26 11:38:35 +00:00
Changes to accommodate new pfSense-upgrade
This commit is contained in:
parent
b397cc725f
commit
98a58bee75
@ -1,161 +0,0 @@
|
||||
#!/bin/sh
|
||||
|
||||
|
||||
# Copyright (c) 2004-2015 Electric Sheep Fencing, LLC. 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.
|
||||
#
|
||||
# 3. All advertising materials mentioning features or use of this software
|
||||
# must display the following acknowledgment:
|
||||
# "This product includes software developed by the pfSense Project
|
||||
# for use in the pfSense® software distribution. (http://www.pfsense.org/).
|
||||
#
|
||||
# 4. The names "pfSense" and "pfSense Project" must not be used to
|
||||
# endorse or promote products derived from this software without
|
||||
# prior written permission. For written permission, please contact
|
||||
# coreteam@pfsense.org.
|
||||
#
|
||||
# 5. Products derived from this software may not be called "pfSense"
|
||||
# nor may "pfSense" appear in their names without prior written
|
||||
# permission of the Electric Sheep Fencing, LLC.
|
||||
#
|
||||
# 6. Redistributions of any form whatsoever must retain the following
|
||||
# acknowledgment:
|
||||
#
|
||||
# "This product includes software developed by the pfSense Project
|
||||
# for use in the pfSense software distribution (http://www.pfsense.org/).
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE pfSense PROJECT ``AS IS'' AND ANY
|
||||
# EXPRESSED 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 pfSense PROJECT OR
|
||||
# ITS CONTRIBUTORS 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.
|
||||
|
||||
# Script is a simple wrapper around pfSense-upgrade. It is called from pkg_install.php to perform an
|
||||
# installation or remval.
|
||||
# FIFO is set up, log files named
|
||||
|
||||
message () {
|
||||
if ( $VERBOSE ) ; then
|
||||
echo "$1"
|
||||
fi
|
||||
}
|
||||
|
||||
usage () {
|
||||
echo "pfSense-upgrade-GUI.sh [flags] [-i || -r] PACKAGE_NAME"
|
||||
echo "Allows the web GUI to invoke the package installation script"
|
||||
echo " -f : Force (Ignore lockfile)"
|
||||
echo " -h : This help"
|
||||
echo " -r : Install package"
|
||||
echo " -i : Remove package"
|
||||
echo " -v : Verbose"
|
||||
}
|
||||
|
||||
if [ $# -lt 2 ] ; then
|
||||
echo "Usage: inst.sh [-i || -r] PACKAGE"
|
||||
echo "e.g.: inst.sh -i pfSense-pkg-sudo"
|
||||
fi
|
||||
|
||||
VERBOSE=false
|
||||
FORCE=false
|
||||
|
||||
while getopts fhirv opt; do
|
||||
case ${opt} in
|
||||
f)
|
||||
FORCE=true
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
i)
|
||||
ACTION="-i"
|
||||
;;
|
||||
r)
|
||||
ACTION="-r"
|
||||
;;
|
||||
v)
|
||||
VERBOSE=true
|
||||
;;
|
||||
*)
|
||||
echo "Error: Unsupported option $(opt)"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
shift $((OPTIND-1))
|
||||
PKG=$1
|
||||
|
||||
if [ $ACTION == "-i" ] ; then
|
||||
message "Installing $PKG"
|
||||
elif [ $ACTION == "-r" ] ; then
|
||||
message "Removing $PKG"
|
||||
fi
|
||||
|
||||
UPDATEINPROGRESS=2
|
||||
LOCKFILE=/tmp/pkg-upgate-GUI.lck
|
||||
LOGFILE="webgui-log.txt"
|
||||
FIFO=/tmp/upgr.fifo
|
||||
JSONFILE="/cf/conf/webgui-log.json"
|
||||
|
||||
if [ -e $LOCKFILE ] ; then
|
||||
if ( $FORCE ) ; then
|
||||
message "Removing lockfile $LOCKFILE"
|
||||
rm -f $LOCKFILE
|
||||
else
|
||||
eval $(stat -s $LOCKFILE)
|
||||
NOW=`date +%s`
|
||||
let AGE="$NOW-$st_ctime" >/dev/null
|
||||
|
||||
if [ $AGE -lt 300 ] ; then
|
||||
message "Update in progress!"
|
||||
exit $UPDATEINPROGRESS
|
||||
else
|
||||
message "Removing stale lockfile $LOCKFILE"
|
||||
rm -f $LOCKFILE
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
touch $LOCKFILE
|
||||
|
||||
if [ -e $FIFO ] ; then
|
||||
rm $FIFO 2>/dev/null
|
||||
fi
|
||||
|
||||
rm -f $JSONFILE
|
||||
rm -f /cf/conf/$LOGFILE
|
||||
|
||||
mkfifo $FIFO
|
||||
|
||||
# Capture the JSON progress status and send it to the file we are watching
|
||||
tail -f $FIFO >$JSONFILE &
|
||||
TAILPID=$!
|
||||
|
||||
message "Calling pfSense-upgrade with -l $LOGFILE -p $FIFO $ACTION $PKG"
|
||||
|
||||
/usr/local/sbin/pfSense-upgrade -l $LOGFILE -p $FIFO $ACTION $PKG >/dev/null
|
||||
|
||||
kill $TAILPID
|
||||
rm $FIFO 2>/dev/null
|
||||
rm $LOCKFILE
|
||||
|
||||
exit 0
|
||||
@ -324,64 +324,22 @@ if ($_GET) {
|
||||
|
||||
switch ($_POST['mode']) {
|
||||
case 'delete':
|
||||
$pid = mwexec('/usr/local/sbin/pfSense-upgrade-GUI.sh -r ' . $pkgid, false, false, true);
|
||||
$pid = mwexec('/usr/local/sbin/pfSense-upgrade -l webgui-log.txt -p /cf/conf/webgui-log -r ' . $pkgid, false, false, true);
|
||||
$start_polling = true;
|
||||
filter_configure();
|
||||
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 "<script type='text/javascript'>document.location=\"pkg_mgr_install.php?mode=installedinfo&pkg={$pkgid}\";</script>";
|
||||
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."));
|
||||
}
|
||||
case 'reinstallpkg':
|
||||
$pid = mwexec('/usr/local/sbin/pfSense-upgrade -l webgui-log.txt -p /cf/conf/webgui-log -i ' . $pkgid . ' -f', false, false, true);
|
||||
filter_configure();
|
||||
$start_polling = true;
|
||||
break;
|
||||
|
||||
case 'installed':
|
||||
default:
|
||||
$pid = mwexec('/usr/local/sbin/pfSense-upgrade-GUI.sh -i ' . $pkgid, false, false, true);
|
||||
$pid = mwexec('/usr/local/sbin/pfSense-upgrade -l webgui-log.txt -p /cf/conf/webgui-log -i ' . $pkgid, false, false, true);
|
||||
$start_polling = true;
|
||||
|
||||
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));
|
||||
}
|
||||
|
||||
filter_configure();
|
||||
break;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user