diff options
Diffstat (limited to 'src/etc/rc.firmware_auto')
-rwxr-xr-x | src/etc/rc.firmware_auto | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/etc/rc.firmware_auto b/src/etc/rc.firmware_auto new file mode 100755 index 0000000..5b355df --- /dev/null +++ b/src/etc/rc.firmware_auto @@ -0,0 +1,72 @@ +#!/bin/sh + +# /etc/rc.firmware_auto +# Copyright (C) 2005-2015 Electric Sheep Fencing LLC +# Part of pfSense + +# $Id$ + +FMBASEURL=$1 +FMFILENAME=$2 +FETCHFILENAME=$1/$2 + +product=`cat /etc/inc/globals.inc | grep product_name | cut -d'"' -f4` + +# wait 5 seconds before beginning +sleep 5 + +logger -p daemon.info -i -t AutoUpgrade "Auto Upgrade started" + +HTTP_AUTH="" + +# if username and password is passed, let fetch utilize. +if [ $# -gt 3 ]; then +HTTP_AUTH="basic:*:$3:$4" +fi + +if [ $# -gt 1 ]; then + echo "Downloading $FMFILENAME from $FMBASEURL ..." | logger -p daemon.info -i -t AutoUpgrade + /usr/bin/fetch -o /tmp/latest.tgz $FETCHFILENAME | logger -p daemon.info -i -t AutoUpgrade + echo "Downloading $FMFILENAME.sha256 from $FMBASEURL ..." | logger -p daemon.info -i -t AutoUpgrade + /usr/bin/fetch -o /tmp/latest.tgz.sha256 $FETCHFILENAME.sha256 | logger -p daemon.info -i -t AutoUpgrade +fi + +DLHASH=`/bin/cat /tmp/latest.tgz.sha256 | cut -d" " -f4 ` +FILEHASH=`/sbin/sha256 /tmp/latest.tgz | cut -d" " -f4` + +PLATFORM=`cat /etc/platform` + +echo " Package sha256: ${DLHASH}" | logger -p daemon.info -i -t AutoUpgrade +echo "Downloaded sha256: ${FILEHASH}" | logger -p daemon.info -i -t AutoUpgrade + +if [ "$DLHASH" = "" ]; then + echo "Downloaded sha256 is null. Require proxy auth?" | logger -p daemon.info -i -t AutoUpgrade + exit 1 +fi + +if [ "$FILEHASH" = "" ]; then + echo "Downloaded file's sha256 is null." | logger -p daemon.info -i -t AutoUpgrade + exit 1 +fi + +if [ "$DLHASH" = "$FILEHASH" ]; then + echo "sha256 hashes match." | logger -p daemon.info -i -t AutoUpgrade + echo "Beginning ${product} upgrade." | wall + if [ "$PLATFORM" = "nanobsd" ]; then + /usr/local/bin/php-cgi /etc/rc.conf_mount_rw + fi + if [ -r "/tmp/custom.tgz" ]; then + sh /etc/rc.firmware pfSenseupgrade /tmp/latest.tgz /tmp/custom.tgz + else + if [ "$PLATFORM" = "nanobsd" ]; then + sh /etc/rc.firmware pfSenseNanoBSDupgrade /tmp/latest.tgz + else + sh /etc/rc.firmware pfSenseupgrade /tmp/latest.tgz + fi + fi + exit 0 +fi + +echo "sha256 hashes do not match. Upgrade aborted." | logger -p daemon.info -i -t AutoUpgrade +rm /tmp/latest* +exit 1 |