From b13ca18b3775c0de438341849a655beb2d59d2a2 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Sun, 1 Apr 2018 18:39:46 +0200 Subject: [PATCH] firmware: reboot indicator for console #2283 --- plist | 1 + src/etc/rc.initial.firmware | 5 ++- src/opnsense/scripts/firmware/reboot.sh | 47 +++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100755 src/opnsense/scripts/firmware/reboot.sh diff --git a/plist b/plist index f316a179d..f3bb14bfc 100644 --- a/plist +++ b/plist @@ -621,6 +621,7 @@ /usr/local/opnsense/scripts/firmware/license.sh /usr/local/opnsense/scripts/firmware/lock.sh /usr/local/opnsense/scripts/firmware/plugin.sh +/usr/local/opnsense/scripts/firmware/reboot.sh /usr/local/opnsense/scripts/firmware/reinstall.sh /usr/local/opnsense/scripts/firmware/remove.sh /usr/local/opnsense/scripts/firmware/running.sh diff --git a/src/etc/rc.initial.firmware b/src/etc/rc.initial.firmware index 0390aac69..4333c5d0a 100755 --- a/src/etc/rc.initial.firmware +++ b/src/etc/rc.initial.firmware @@ -36,8 +36,8 @@ echo -n "Fetching change log information, please wait... " if /usr/local/opnsense/scripts/firmware/changelog.sh fetch; then echo "done" fi -echo +echo echo "This will automatically fetch all available updates, apply them," echo "and reboot if necessary." echo @@ -56,6 +56,9 @@ if [ -f ${UPGRADE} ]; then echo PROMPT="[${NAME}/y/N]" +elif /usr/local/opnsense/scripts/firmware/reboot.sh; then + echo "This update requires a reboot." + echo fi read -p "Proceed with this action? ${PROMPT}: " YN diff --git a/src/opnsense/scripts/firmware/reboot.sh b/src/opnsense/scripts/firmware/reboot.sh new file mode 100755 index 000000000..600908575 --- /dev/null +++ b/src/opnsense/scripts/firmware/reboot.sh @@ -0,0 +1,47 @@ +#!/bin/sh + +# Copyright (C) 2018 Franco Fichtner +# 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. + +set -e + +PKG=pkg-static + +WANT_REBOOT=1 + +$(${PKG} update) + +LQUERY=$(${PKG} query %v opnsense-update) +RQUERY=$(${PKG} rquery %v opnsense-update) + +if [ "${LQUERY%%_*}" != "${RQUERY%%_*}" ]; then + WANT_REBOOT=0 +elif opnsense-update -cbf; then + WANT_REBOOT=0 +elif opnsense-update -ckf; then + WANT_REBOOT=0 +fi + +# success is reboot: +exit ${WANT_REBOOT}