#!/bin/sh

. /mnt/mmcblk0p1/userconfig.txt
 
# Auf keinen Fall löschen, wird für PHP benötigt!
remote_version=$(wget -q -O - http://"$UPDATESERVER"/version)

update()
{
	echo "Update started, downloading image..."
	cd /var

	if ! $(wget http://"$UPDATESERVER"/qstreamer-$remote_version.tar.xz)
	then
		echo "File not downloaded, exiting!"
		rm /var/qstreamer*
		exit
	fi

	if !$(wget http://"$UPDATESERVER"/md5sum); then
		echo "Could not download md5sum, exiting!"
		rm /var/qstreamer*
		rm /var/md5sum
		exit
	fi

	if md5sum -c md5sum
	then
		echo "File downloaded, md5sum checked and it's ok, continuing update..."
		mount -o remount,rw /mnt/mmcblk0p1
		rm -rfv /mnt/mmcblk0p1/oldsystem
		files=$(ls /mnt/mmcblk0p1)
		echo "Making a backup on the SD-card in case anything goes wrong..."
		mkdir /mnt/mmcblk0p1/oldsystem
		cd /mnt/mmcblk0p1
		mv  $files /mnt/mmcblk0p1/oldsystem
		echo "Installing downloaded image to SD-card..."
		tar xf /var/qstreamer-$remote_version.tar.xz
		echo "Restoring userconfiguration file..."
		cp /mnt/mmcblk0p1/oldsystem/userconfig.txt /mnt/mmcblk0p1/
		echo "Everything done, rebooting now, please stand by..."
		reboot
	else echo "File downloaded, but incorrect md5sum, exiting!"
		exit
	fi
}

case $1 in
	update)
		update
	;;

	check)
		if $(remote_version=$(wget -T 4 -q -O - http://"$UPDATESERVER"/version))
		then
			local_version=$(cat /mnt/mmcblk0p1/version)

			remote_version_major=$(echo $remote_version | awk -F. '{print $1}')
			remote_version_minor=$(echo $remote_version | awk -F. '{print $2}')
			remote_version_micro=$(echo $remote_version | awk -F. '{print $3}')
			local_version_major=$(echo $local_version | awk -F. '{print $1}')  
			local_version_minor=$(echo $local_version | awk -F. '{print $2}')
			local_version_micro=$(echo $local_version | awk -F. '{print $3}')

			echo $remote_version
			echo $local_version

			echo "Remote version is: $remote_version"
			echo "Local version is:  $local_version" 

			if [ "$remote_version_major" -gt "$local_version_major" ]
			then
				echo "Remote major version number higher than local one"
				exit 0

				echo "No higher remote major version number found, checking minor..."
				if [ "$remote_version_minor" -gt "$local_version_minor" ]
				then
					echo "Remote minor version higher than local one"
					exit 0
				else
					echo "No higher remote minor version number found, checking micro..."
					if [ "$remote_version_micro" -gt "$local_version_micro" ]
					then
						echo "Remote micro version higher than local one"
						exit 0
					else
						echo "Nothing to do, version seems up to date"
						exit 1
					fi
				fi
			fi
		else
			echo "Could not find remote version...";
			cat /mnt/mmcblk0p1/version
		fi

	;;
esac
