#!/bin/bash

#upgrading to latest version
clear

#version should change after download
version="latest"

#make sure the Upgrade directory exists
mkdir -p /var/www/Upgrade

#make sure we are in the correct directory
cd /var/www/Upgrade/

echo 'Downloading DisplaPi Upgrade...'
wget -O ./displapi-upgrade.zip https://download.displapi.com/downloads/latest/DisplaPi.zip
sudo mkdir upgradeTemp

echo 'Unzipping...'
sudo unzip ./displapi-upgrade.zip -d /var/www/Upgrade/upgradeTemp/

echo 'Getting version...'
version=$(cat /var/www/Upgrade/upgradeTemp/Settings/version.txt)

echo 'Creating log file...'
echo "Starting upgrade to version $version" > displapi_update_log-$version.txt
echo '------' >> displapi_update_log-$version.txt
if id -u "pi" >/dev/null 2>&1; then
    sudo chown pi.pi displapi_update_log-$version.txt
else
    sudo chown displapi.displapi displapi_update_log-$version.txt
fi

echo "Upgrading to $version"

echo 'Updating APT...' | tee -a  displapi_update_log-$version.txt
sudo apt-get -y -q update | tee -a  displapi_update_log-$version.txt

echo 'Upgrading APT...' | tee -a  displapi_update_log-$version.txt
sudo apt-get -y -q upgrade | tee -a  displapi_update_log-$version.txt

echo 'Installing GD for PHP...' | tee -a  displapi_update_log-$version.txt
sudo apt-get -y -q install php-gd | tee -a  displapi_update_log-$version.txt

echo 'Installing VLC' | tee -a  displapi_update_log-$version.txt
sudo apt-get -y -q install vlc | tee -a  displapi_update_log-$version.txt

echo 'Installing mpv (native slideshow renderer)' | tee -a  displapi_update_log-$version.txt
sudo apt-get -y -q install mpv | tee -a  displapi_update_log-$version.txt

echo 'Installing pygame (slideshow transition effects)' | tee -a  displapi_update_log-$version.txt
sudo apt-get -y -q install python3-pygame | tee -a  displapi_update_log-$version.txt

echo 'Intalling dbus' | tee -a displapi_update_log-$version.txt
sudo apt-get -y -q install dbus | tee -a displapi_update_log-$version.txt

echo 'Intalling jq' | tee -a displapi_update_log-$version.txt
sudo apt-get -y -q install jq | tee -a displapi_update_log-$version.txt

echo 'Adding ExFAT support'
sudo apt-get -y -q install exfat-fuse exfatprogs | tee -a displapi_update_log-$version.txt

echo 'Adding FAT32 support'
sudo apt-get -y -q install dosfstools | tee -a displapi_update_log-$version.txt

echo 'Moving scripts...' | tee -a  displapi_update_log-$version.txt
sudo rm -R /var/www/Scripts
sudo mv /var/www/Upgrade/upgradeTemp/Scripts /var/www/

echo 'Create _files directory...' | tee -a  displapi_update_log-$version.txt
[ ! -d /var/www/html/_files ] && mkdir /var/www/html/_files
[ ! -d /var/www/html/_files/ImageSlider ] && mkdir /var/www/html/_files/ImageSlider
[ ! -d /var/www/html/_files/VideoThumbs ] && mkdir /var/www/html/_files/VideoThumbs

echo 'Create _settings directory...' | tee -a  displapi_update_log-$version.txt
[ ! -d /var/www/html/_settings ] && mkdir /var/www/html/_settings
[ ! -d /var/www/html/_settings/ImageSlider ] && mkdir /var/www/html/_settings/ImageSlider

echo 'Move ImageSlider settings over if they exist in old location...' | tee -a  displapi_update_log-$version.txt
[ -f /var/www/html/Scenes/ImageSlider/settings.json ] && mv /var/www/html/Scenes/ImageSlider/settings.json /var/www/html/_settings/ImageSlider/settings.json

echo 'Move images for slider and video thumbs...' | tee -a  displapi_update_log-$version.txt
[ -d /var/www/html/Scenes/ImageSlider/images ] && mv /var/www/html/Scenes/ImageSlider/images/* /var/www/html/_files/ImageSlider
[ -d /var/www/html/Admin/Screenshots ] && mv /var/www/html/Admin/Screenshots/* /var/www/html/_files/VideoThumbs

echo 'Update image slider...' | tee -a  displapi_update_log-$version.txt
cp -r /var/www/Upgrade/upgradeTemp/html/Scenes/ImageSlider/* /var/www/html/Scenes/ImageSlider

echo 'Update weather clock...' | tee -a  displapi_update_log-$version.txt
cp -r /var/www/Upgrade/upgradeTemp/html/Scenes/WeatherClock/* /var/www/html/Scenes/WeatherClock

echo 'Moving settings files (if they dont exist yet)...' | tee -a  displapi_update_log-$version.txt
[ ! -f /var/www/Settings/browsercursor.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/browsercursor.txt /var/www/Settings/browsercursor.txt
[ ! -f /var/www/Settings/ip.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/ip.txt /var/www/Settings/ip.txt
[ ! -f /var/www/Settings/mode.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/mode.txt /var/www/Settings/mode.txt
[ ! -f /var/www/Settings/reboot.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/reboot.txt /var/www/Settings/reboot.txt
[ ! -f /var/www/Settings/scene.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/scene.txt /var/www/Settings/scene.txt
[ ! -f /var/www/Settings/settings.json ] && mv /var/www/Upgrade/upgradeTemp/Settings/settings.json /var/www/Settings/settings.json
mv /var/www/Upgrade/upgradeTemp/Settings/version.txt /var/www/Settings/version.txt
[ ! -f /var/www/Settings/website.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/website.txt /var/www/Settings/website.txt
[ ! -f /var/www/Settings/rebootschedule.txt ] && mv /var/www/Upgrade/upgradeTemp/Settings/rebootschedule.txt /var/www/Settings/rebootschedule.txt

echo 'Set WiFi Country...' | tee -a  displapi_update_log-$version.txt
sudo raspi-config nonint do_wifi_country US

echo 'Moving admin...' | tee -a  displapi_update_log-$version.txt
sudo rm -R /var/www/html/Admin
sudo mv /var/www/Upgrade/upgradeTemp/html/Admin /var/www/html/

echo 'Making upgrade script executable...' | tee -a  displapi_update_log-$version.txt
sudo chmod +x /var/www/Scripts/upgradeDisplapi.sh

echo 'Create Log directory...' | tee -a  displapi_update_log-$version.txt
mkdir /var/www/Logs

echo 'Setting file permissions...' | tee -a  displapi_update_log-$version.txt
if id -u "pi" >/dev/null 2>&1; then
    sudo chown -R pi /var/www
else
    sudo chown -R displapi /var/www
fi
sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

echo 'Adding display user to video/render groups (DRM access for mpv without X)...' | tee -a  displapi_update_log-$version.txt
if id -u "pi" >/dev/null 2>&1; then
    displayuser="pi"
else
    displayuser="displapi"
fi
sudo usermod -a -G video "$displayuser"
getent group render >/dev/null && sudo usermod -a -G render "$displayuser"

echo 'Disabling console blanking (slideshow mode draws straight to the console)...' | tee -a  displapi_update_log-$version.txt
if ! grep -q 'consoleblank=0' /boot/firmware/cmdline.txt; then
    sudo sed -i '1 s/$/ consoleblank=0/' /boot/firmware/cmdline.txt
fi

echo 'Updating bash profile...' | tee -a  displapi_update_log-$version.txt
if id -u "pi" >/dev/null 2>&1; then
    sudo cat /var/www/Scripts/boot.sh > /home/pi/.bash_profile
    sudo chown pi.pi /home/pi/.bash_profile
else
    sudo cat /var/www/Scripts/boot.sh > /home/displapi/.bash_profile
    sudo chown displapi:displapi /home/displapi/.bash_profile
fi

echo 'Configuring Openbox...'
sudo cat /var/www/Scripts/autostart.conf > /etc/xdg/openbox/autostart

echo 'Removing temp folder...' | tee -a  displapi_update_log-$version.txt
sudo rm -R /var/www/Upgrade/upgradeTemp

echo 'Removing .zip file...' | tee -a  displapi_update_log-$version.txt
sudo rm /var/www/Upgrade/displapi-upgrade.zip

echo 'Setting permissions'
sudo chmod +x /var/www/Scripts/reboot.sh
sudo chmod +x /var/www/Scripts/pinghome.sh
sudo chmod +x /var/www/Scripts/hdmion.sh
sudo chmod +x /var/www/Scripts/hdmioff.sh
sudo chmod +x /var/www/Scripts/check_wpa.sh

echo 'Done!' | tee -a  displapi_update_log-$version.txt

sleep 1

echo 'Rebooting in 10 seconds' | tee -a  displapi_update_log-$version.txt
sleep 10

sudo reboot now