| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- #!/bin/sh
- if [ -L /dev/fd ]; then
- echo "fd exists" > /dev/null
- else
- echo "fd does not exist, link" > /dev/null
- ln -s /proc/self/fd /dev/fd
- fi
- LOG_FILE=/opt/upgrade_wz_mini.log
- exec > >(busybox tee -a ${LOG_FILE}) 2>&1
- BRANCH="master"
- setup() {
- echo "Create Upgrade staging directory"
- mkdir /opt/.Upgrade
- echo "Create backup files directory"
- mkdir /opt/.Upgrade/preserve
- echo "Download latest $BRANCH"
- wget --no-check-certificate https://github.com/gtxaspec/wz_mini_hacks/archive/refs/heads/$BRANCH.tar.gz -O /opt/.Upgrade/wz_mini.tar.gz; sync
- echo "Extract $BRANCH archive"
- mkdir /opt/.Upgrade/wz_mini_hacks
- tar -xf /opt/.Upgrade/wz_mini.tar.gz -C /opt/.Upgrade/wz_mini_hacks --strip-components 1
- echo "Verify extracted file integrity"
- cd /opt/.Upgrade/wz_mini_hacks
- md5sum -c file.chk
- if [ $? -eq 0 ]; then
- echo "File verification successful!"
- echo "Move staging directory to perform upgrade"
- mv /opt/.Upgrade/ /opt/Upgrade/
- install_upgrade_script
- else
- echo "Failure: Extracted files may be corrupt. Aborting upgrade."
- echo "Delete failed upgrade staging directory"
- rm -rf /opt/.Upgrade
- exit 1
- fi
- }
- install_upgrade_script() {
- echo "Installing latest upgrade-run from repo"
- cp /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/bin/upgrade-run.sh /opt/wz_mini/bin/upgrade-run.sh
- sleep 5
- echo "Launching latest upgrade-script"
- /opt/wz_mini/bin/upgrade-run.sh backup_begin &
- echo "Exit old script"
- rm -f /dev/fd
- exit 0
- }
- backup_begin() {
- echo "Resume upgrade-run, latest version"
- sleep 5
- echo "Backup user config"
- cp /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/
- cp -r /opt/wz_mini/etc/configs /opt/Upgrade/preserve/
- cp -r /opt/wz_mini/etc/ssh /opt/Upgrade/preserve/
- cp -r /opt/wz_mini/etc/wireguard /opt/Upgrade/preserve/
- sync
- echo "Rebooting into UPGRADE MODE"
- reboot
- }
- upgrade_mode_start() {
- export WZMINI_CFG=/opt/wz_mini/wz_mini.conf
- [ -f $WZMINI_CFG ] && source $WZMINI_CFG
- set -x
- #Set the correct GPIO for the audio driver (T31 only)
- if [ -f /opt/wz_mini/tmp/.HL_PAN2 ]; then
- GPIO=7
- elif [ -f /opt/wz_mini/tmp/.WYZE_CAKP2JFUS ]; then
- GPIO=63
- fi
- if [ -f /opt/wz_mini/tmp/.T20 ]; then
- insmod /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/lib/modules/3.10.14/extra/audio.ko
- LD_LIBRARY_PATH='/opt/wz_mini/lib' /opt/wz_mini/bin/audioplay_t20 /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/usr/share/audio/upgrade_mode_v2.wav $AUDIO_PROMPT_VOLUME
- rmmod audio
- else
- insmod /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/lib/modules/3.10.14__isvp_swan_1.0__/extra/audio.ko spk_gpio=$GPIO alc_mode=0 mic_gain=0
- /opt/wz_mini/bin/audioplay_t31 /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/usr/share/audio/upgrade_mode.wav $AUDIO_PROMPT_VOLUME
- rmmod audio
- fi
- echo "UPGRADE MODE"
- echo "Verify extracted file integrity"
- cd /opt/Upgrade/wz_mini_hacks
- md5sum -c file.chk
- if [ $? -eq 0 ]; then
- echo "File verification successful!"
- else
- echo "Failure: Extracted files may be corrupt. Aborting upgrade."
- echo "Delete failed upgrade directory"
- rm -rf /opt/Upgrade
- reboot
- fi
- if [ -f /opt/wz_mini/tmp/.T20 ]; then
- echo "Upgrading kernel"
- flashcp -v /opt/Upgrade/wz_mini_hacks/v2_install/v2_kernel.bin /dev/mtd1
- fi
- umount -l /opt/wz_mini/tmp
- ls -l /opt/wz_mini/
- rm -rf /opt/wz_mini/*
- sync
- mv /opt/Upgrade/wz_mini_hacks/SD_ROOT/wz_mini/* /opt/wz_mini/
- rm -f /opt/factory_t31_ZMC6tiIDQN
- mv /opt/Upgrade/wz_mini_hacks/SD_ROOT/factory_t31_ZMC6tiIDQN /opt/factory_t31_ZMC6tiIDQN
- diff /opt/wz_mini/wz_mini.conf /opt/Upgrade/preserve/wz_mini.conf
- if [ $(cat /opt/Upgrade/preserve/wz_mini.conf | wc -l) != $(cat /opt/wz_mini/wz_mini.conf | wc -l) ]; then
- echo "doesn't match, keep old config"
- mv /opt/wz_mini/wz_mini.conf /opt/wz_mini/wz_mini.conf.dist
- cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
- else
- echo "configs match"
- cp /opt/Upgrade/preserve/wz_mini.conf /opt/wz_mini/
- fi
- cp /opt/Upgrade/preserve/ssh/* /opt/wz_mini/etc/ssh/
- cp /opt/Upgrade/preserve/configs/* /opt/wz_mini/etc/configs
- cp -r /opt/Upgrade/preserve/wireguard /opt/wz_mini/etc/
- rm -rf /opt/Upgrade
- sync
- reboot
- }
- if [[ "$1" == "unattended" ]]; then
- echo "Unattended upgrade!"
- rm -rf /opt/.Upgrade
- rm -rf /opt/Upgrade
- sync
- setup
- else
- if [[ -e /tmp/dbgflag ]]; then
- upgrade_mode_start
- else
- if [ "$1" == "backup_begin" ]; then
- backup_begin
- else
- read -r -p "${1:-wz_mini, this will download the latest version from github and upgrade your system. Are you sure? [y/N]} " response
- case "$response" in
- [yY][eE][sS]|[yY])
- if [[ -d /opt/.Upgrade ]]; then
- echo "WARNING: Old Upgrade directory exists"
- read -r -p "${1:-Unable to proceed, must DELETE old Upgrade directory, are you sure? [y/N]} " response
- case "$response" in
- [yY][eE][sS]|[yY])
- rm -rf /opt/.Upgrade
- rm -rf /opt/Upgrade
- sync
- setup
- ;;
- *)
- echo "User denied directory removal, exit"
- ;;
- esac
- else
- setup
- fi
- ;;
- *)
- echo "User declined system update, exit"
- ;;
- esac
- fi
- fi
- fi
|