Commit 70998ed9 authored by Franco Fichtner's avatar Franco Fichtner

firmware: add locking layer

parent c7d03899
...@@ -78,6 +78,7 @@ CORE_DEPENDS?= apinger \ ...@@ -78,6 +78,7 @@ CORE_DEPENDS?= apinger \
filterdns \ filterdns \
filterlog \ filterlog \
ifinfo \ ifinfo \
flock \
flowd \ flowd \
igmpproxy \ igmpproxy \
isc-dhcp43-client \ isc-dhcp43-client \
......
...@@ -25,17 +25,11 @@ ...@@ -25,17 +25,11 @@
# POSSIBILITY OF SUCH DAMAGE. # POSSIBILITY OF SUCH DAMAGE.
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PATCHES=${1} PATCH=${1}
# Check if another pkg process is already running
# (not strictly necessary, but we're modifying pkg files)
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
echo "***GOT REQUEST TO HOTFIX: ${PATCHES}***" >> ${PKG_PROGRESS_FILE} echo "***GOT REQUEST TO HOTFIX: ${PATCH}***" >> ${PKG_PROGRESS_FILE}
/usr/local/sbin/opnsense-patch ${PATCHES} >> ${PKG_PROGRESS_FILE} 2>&1 /usr/local/sbin/opnsense-patch ${PATCH} >> ${PKG_PROGRESS_FILE} 2>&1
echo '***DONE***' >> ${PKG_PROGRESS_FILE} echo '***DONE***' >> ${PKG_PROGRESS_FILE}
...@@ -28,11 +28,6 @@ ...@@ -28,11 +28,6 @@
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PACKAGE=$1 PACKAGE=$1
# Check if another pkg process is already running
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
......
#!/bin/sh
# Copyright (C) 2016 Franco Fichtner <franco@opnsense.org>
# 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.
BASEDIR="/usr/local/opnsense/scripts/firmware"
LOCKFILE="/tmp/pkg_upgrade.progress"
FLOCK="/usr/local/bin/flock -n -o"
COMMANDS="
hotfix
install
lock
reinstall
remove
unlock
upgrade
"
SELECTED=${1}
ARGUMENT=${2}
for COMMAND in ${COMMANDS}; do
if [ "${SELECTED}" != ${COMMAND} ]; then
continue
fi
if [ -n "$(pgrep pkg)" ]; then
break
fi
${FLOCK} ${LOCKFILE} ${BASEDIR}/${COMMAND}.sh ${ARGUMENT}
done
...@@ -28,11 +28,6 @@ ...@@ -28,11 +28,6 @@
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PACKAGE=$1 PACKAGE=$1
# Check if another pkg process is already running
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
......
...@@ -28,11 +28,6 @@ ...@@ -28,11 +28,6 @@
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PACKAGE=$1 PACKAGE=$1
# Check if another pkg process is already running
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
......
...@@ -28,11 +28,6 @@ ...@@ -28,11 +28,6 @@
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PACKAGE=$1 PACKAGE=$1
# Check if another pkg process is already running
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
......
...@@ -28,11 +28,6 @@ ...@@ -28,11 +28,6 @@
PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PACKAGE=$1 PACKAGE=$1
# Check if another pkg process is already running
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
......
...@@ -29,11 +29,6 @@ PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress ...@@ -29,11 +29,6 @@ PKG_PROGRESS_FILE=/tmp/pkg_upgrade.progress
PACKAGE=$1 PACKAGE=$1
REBOOT= REBOOT=
# Check if another pkg process is already running
if [ -n "$(pgrep pkg)" ]; then
exit 0
fi
# Truncate upgrade progress file # Truncate upgrade progress file
: > ${PKG_PROGRESS_FILE} : > ${PKG_PROGRESS_FILE}
......
...@@ -5,41 +5,47 @@ type:script_output ...@@ -5,41 +5,47 @@ type:script_output
message:retrieve package status message:retrieve package status
[upgrade] [upgrade]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/upgrade.sh command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh upgrade
parameters:%s parameters:%s
type:script type:script
message:upgrading %s message:upgrading %s
[reinstall] [reinstall]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/reinstall.sh command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh reinstall
parameters:%s parameters:%s
type:script type:script
message: reinstalling firmware package %s message: reinstalling firmware package %s
[lock] [lock]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/lock.sh command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh lock
parameters:%s parameters:%s
type:script type:script
message: locking firmware package %s message: locking firmware package %s
[unlock] [unlock]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/unlock.sh command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh unlock
parameters:%s parameters:%s
type:script type:script
message: unlocking firmware package %s message: unlocking firmware package %s
[install] [install]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/install.sh command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh install
parameters:%s parameters:%s
type:script type:script
message: installing firmware package %s message: installing firmware package %s
[remove] [remove]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/remove.sh command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh remove
parameters:%s parameters:%s
type:script type:script
message: remove firmware package %s message: remove firmware package %s
[hotfix]
command: /usr/sbin/daemon -f /usr/local/opnsense/scripts/firmware/launcher.sh hotfix
parameters:%s
type:script
message:issued firmware hotfix for %s
[status] [status]
command: /usr/bin/touch /tmp/pkg_upgrade.progress 2>&1; /bin/cat /tmp/pkg_upgrade.progress 2>&1 command: /usr/bin/touch /tmp/pkg_upgrade.progress 2>&1; /bin/cat /tmp/pkg_upgrade.progress 2>&1
parameters: parameters:
...@@ -82,12 +88,6 @@ parameters: ...@@ -82,12 +88,6 @@ parameters:
type:script type:script
message:issued firmware power off message:issued firmware power off
[hotfix]
command:/usr/local/opnsense/scripts/firmware/hotfix.sh
parameters:%s
type:script
message:issued firmware hotfix for %s
[auto-update] [auto-update]
command:/usr/local/etc/rc.firmware command:/usr/local/etc/rc.firmware
description:Automatic firmware update description:Automatic firmware update
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment