mynode/rootfs/standard/usr/bin/mynode_upgrade.sh
2022-01-24 21:50:13 -06:00

91 lines
2.7 KiB
Bash
Executable File

#!/bin/bash
set -x
#set -e
source /usr/share/mynode/mynode_config.sh
BETA=0
while test $# -gt 0
do
case "$1" in
beta) echo "Installing a beta..."
BETA=1
;;
*) echo "Unknown Argument: $1"
exit 1
;;
esac
shift
done
# Setup
rm -rf /opt/mynode_release_latest.tar.gz
rm -rf /opt/mynode_release.pub
rm -rf /opt/upgrade/
mkdir -p /opt/upgrade/
mkdir -p /home/admin/upgrade_logs/
# Download Latest
if [ $BETA = 0 ]; then
torify wget $UPGRADE_DOWNLOAD_URL -O /opt/mynode_release_latest.tar.gz || \
wget $UPGRADE_DOWNLOAD_URL -O /opt/mynode_release_latest.tar.gz
torify wget $UPGRADE_DOWNLOAD_SIGNATURE_URL -O /opt/mynode_release_latest.sha256 || \
wget $UPGRADE_DOWNLOAD_SIGNATURE_URL -O /opt/mynode_release_latest.sha256
else
torify wget $UPGRADE_BETA_DOWNLOAD_URL -O /opt/mynode_release_latest.tar.gz || \
wget $UPGRADE_BETA_DOWNLOAD_URL -O /opt/mynode_release_latest.tar.gz
torify wget $UPGRADE_BETA_DOWNLOAD_SIGNATURE_URL -O /opt/mynode_release_latest.sha256 || \
wget $UPGRADE_BETA_DOWNLOAD_SIGNATURE_URL -O /opt/mynode_release_latest.sha256
fi
torify wget $UPGRADE_PUBKEY_URL -O /opt/mynode_release.pub || \
wget $UPGRADE_PUBKEY_URL -O /opt/mynode_release.pub
openssl dgst -sha256 -verify /opt/mynode_release.pub -signature /opt/mynode_release_latest.sha256 /opt/mynode_release_latest.tar.gz
if [ $? -ne 0 ]; then
echo "UPGRADE FAILED! Hash did not match!" >> /var/log/upgrade.log
exit 1
fi
# Clear beta install marking
rm -f /usr/share/mynode/beta_version
# Extract to temp location
tar -xf /opt/mynode_release_latest.tar.gz -C /opt/upgrade/
# Install files (migrate all to rsync?)
VERSION=$(cat /opt/upgrade/out/rootfs_*/usr/share/mynode/version)
if [ $IS_X86 = 1 ] || [ $IS_RASPI4_ARM64 = 1 ] || [ $IS_ROCKPI4 = 1 ]; then
rsync -r -K /opt/upgrade/out/rootfs_${DEVICE_TYPE}/* / 2>&1
else
cp -rf /opt/upgrade/out/rootfs_${DEVICE_TYPE}/* / 2>&1
fi
sleep 1
sync
sleep 1
VERSION=$(cat /usr/share/mynode/version)
# Clear old upgrade logs
rm -f /home/admin/upgrade_logs/upgrade_log_${VERSION}_post_*
rm -f /home/admin/upgrade_logs/upgrade_log_latest_post_*
# Run post upgrade script
touch $UPGRADE_ERROR_FILE
for i in {1..5}
do
/bin/bash /usr/bin/mynode_post_upgrade.sh 2>&1
RC=$?
if [ "${RC}" -eq "0" ]; then
rm -f $UPGRADE_ERROR_FILE
break
fi
printf "\n\n\n"
printf "##################################################\n"
printf "Post upgrade script failed attempt $i. Retrying. \n"
printf "##################################################\n"
printf "\n\n\n"
sleep 10s
done
chown -R admin:admin /home/admin/upgrade_logs
sync