diff --git a/plist b/plist index 43e523c4a..0d511bed1 100644 --- a/plist +++ b/plist @@ -589,6 +589,7 @@ /usr/local/opnsense/scripts/firmware/reinstall.sh /usr/local/opnsense/scripts/firmware/remove.sh /usr/local/opnsense/scripts/firmware/running.sh +/usr/local/opnsense/scripts/firmware/sets.sh /usr/local/opnsense/scripts/firmware/type.sh /usr/local/opnsense/scripts/firmware/unlock.sh /usr/local/opnsense/scripts/firmware/upgrade.sh diff --git a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php index b75b6572e..bef3fa008 100644 --- a/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php +++ b/src/opnsense/mvc/app/controllers/OPNsense/Core/Api/FirmwareController.php @@ -665,6 +665,9 @@ class FirmwareController extends ApiControllerBase } foreach ($keys as $key) { $translated[$key] = $expanded[$index++]; + if (empty($translated[$key])) { + $translated[$key] = gettext('N/A'); + } } /* mark remote packages as "provided", local as "installed" */ diff --git a/src/opnsense/scripts/firmware/lock.sh b/src/opnsense/scripts/firmware/lock.sh index eeffbd6c7..268d6d2e3 100755 --- a/src/opnsense/scripts/firmware/lock.sh +++ b/src/opnsense/scripts/firmware/lock.sh @@ -28,14 +28,17 @@ PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PACKAGE=${1} -if [ -z "${PACKAGE}" ]; then - opnsense-update -L - exit 0 -fi - # Truncate upgrade progress file : > ${PKG_PROGRESS_FILE} echo "***GOT REQUEST TO LOCK: ${PACKAGE}***" >> ${PKG_PROGRESS_FILE} -pkg lock -y ${PACKAGE} >> ${PKG_PROGRESS_FILE} 2>&1 +if [ "${PACKAGE}" = "base" ]; then + echo "Locking base set" >> ${PKG_PROGRESS_FILE} + opnsense-update -bL >> ${PKG_PROGRESS_FILE} 2>&1 +elif [ "${PACKAGE}" = "kernel" ]; then + echo "Locking kernel set" >> ${PKG_PROGRESS_FILE} + opnsense-update -kL >> ${PKG_PROGRESS_FILE} 2>&1 +else + pkg lock -y ${PACKAGE} >> ${PKG_PROGRESS_FILE} 2>&1 +fi echo '***DONE***' >> ${PKG_PROGRESS_FILE} diff --git a/src/opnsense/scripts/firmware/sets.sh b/src/opnsense/scripts/firmware/sets.sh new file mode 100755 index 000000000..b137b8907 --- /dev/null +++ b/src/opnsense/scripts/firmware/sets.sh @@ -0,0 +1,42 @@ +#!/bin/sh + +# Copyright (C) 2017 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. + +LIC="BSD2CLAUSE" +OS="FreeBSD" +SEP=${1:-","} + +BV=$(opnsense-update -bv) +KV=$(opnsense-update -kv) + +BL=0 +KL=0 + +# XXX pragmatic approach, we don't have a portable command yet +[ -f /usr/local/opnsense/version/base.lock ] && BL=1 +[ -f /usr/local/opnsense/version/kernel.lock ] && KL=1 + +echo "base${SEP}${BV%-*}${SEP}${OS} userland set${SEP}${SEP}${BL}${SEP}${LIC}" +echo "kernel${SEP}${KV%-*}${SEP}${OS} kernel set${SEP}${SEP}${KL}${SEP}${LIC}" diff --git a/src/opnsense/scripts/firmware/unlock.sh b/src/opnsense/scripts/firmware/unlock.sh index d6f061242..b36ee3c03 100755 --- a/src/opnsense/scripts/firmware/unlock.sh +++ b/src/opnsense/scripts/firmware/unlock.sh @@ -28,14 +28,17 @@ PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PACKAGE=${1} -if [ -z "${PACKAGE}" ]; then - opnsense-update -U - exit 0 -fi - # Truncate upgrade progress file : > ${PKG_PROGRESS_FILE} echo "***GOT REQUEST TO UNLOCK: ${PACKAGE}***" >> ${PKG_PROGRESS_FILE} -pkg unlock -y ${PACKAGE} >> ${PKG_PROGRESS_FILE} 2>&1 +if [ "${PACKAGE}" = "base" ]; then + echo "Unlocking base set" >> ${PKG_PROGRESS_FILE} + opnsense-update -bU >> ${PKG_PROGRESS_FILE} 2>&1 +elif [ "${PACKAGE}" = "kernel" ]; then + echo "Unlocking kernel set" >> ${PKG_PROGRESS_FILE} + opnsense-update -kU >> ${PKG_PROGRESS_FILE} 2>&1 +else + pkg unlock -y ${PACKAGE} >> ${PKG_PROGRESS_FILE} 2>&1 +fi echo '***DONE***' >> ${PKG_PROGRESS_FILE} diff --git a/src/opnsense/service/conf/actions.d/actions_firmware.conf b/src/opnsense/service/conf/actions.d/actions_firmware.conf index 047f9f233..8b67d82df 100644 --- a/src/opnsense/service/conf/actions.d/actions_firmware.conf +++ b/src/opnsense/service/conf/actions.d/actions_firmware.conf @@ -132,7 +132,8 @@ type:script_output message:Querying %s package details [local] -command:pkg query "%n|||%v|||%c|||%sh|||%k|||%L" +command: pkg query "%n|||%v|||%c|||%sh|||%k|||%L"; \ + /usr/local/opnsense/scripts/firmware/sets.sh '|||' parameters: type:script_output message:view local packages