summaryrefslogtreecommitdiffstats
path: root/etc/rc.firmware_auto
blob: 1e604a35e2ec2afd7f759de09c061abad24966b2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/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" = "net45xx" ]; then
		/usr/local/bin/php /etc/rc.conf_mount_rw
	fi
	if [ "$PLATFORM" = "nanobsd" ]; then
		/usr/local/bin/php /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
OpenPOWER on IntegriCloud