#!/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
	
	# Update nach 2.x vorbereiten
	
	
	
	if ! $(wget http://"$UPDATESERVER"/aroio-"$remote_version"-embedded.img.xz)
	then
		echo "File not downloaded, exiting!"
		rm /var/aroio-*
		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 -p /var/oldsystem
		cd /mnt/mmcblk0p1
		cp  $files /var/oldsystem
		echo "Unmounting SD-Card..."
		cd /
		umount /mnt/mmcblk0p1
		echo "Installing downloaded image to SD-card..."
		unxz -c /var/aroio-"$remote_version"-embedded.img.xz | dd of=/dev/mmcblk0 && rm /var/aroio-"$remote_version"-embedded.img.xz
		echo "Mounting updated Partition..."
		mount /dev/mmcblk0p1 /mnt/mmcblk0p1
		echo "Restoring userconfiguration file..."
		cp /var/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
