#!/bin/ash

# Configuracoes
SERVER="10.0.1.226"
FOLDER="/tmp"

#IP
IP=`ip -4 addr show br-mgmt | sed -Ene 's/^.*inet ([0-9.]+)\/.*$/\1/p'`
if [ -z "$IP" ];
then
	IP=`ip -4 addr show br-lan.11 | sed -Ene 's/^.*inet ([0-9.]+)\/.*$/\1/p'`
	if [ -z "$IP" ];
	then
	        IP=`ip -4 addr show br-lan.1 | sed -Ene 's/^.*inet ([0-9.]+)\/.*$/\1/p'`
		if [ -z "$IP" ];
		then
			IP=`ip -4 addr show eth1 | sed -Ene 's/^.*inet ([0-9.]+)\/.*$/\1/p'`
			if [ -z "$IP" ];
			then
				IP=`ip -4 addr show wlan0 | sed -Ene 's/^.*inet ([0-9.]+)\/.*$/\1/p'`
				if [ -z "$IP" ];
				then
					IP=`ip -4 addr show br-lan | sed -Ene 's/^.*inet ([0-9.]+)\/.*$/\1/p'`
				fi
			fi
		fi
	fi
fi

#Versoes
wget -q http://$SERVER/releases -O $FOLDER/releases

BRAND=`ubus call system board | grep board | cut -d"\"" -f4 | cut -d"," -f1`
MODEL=`ubus call system board | grep board | cut -d"\"" -f4 | cut -d"," -f2`

LOCAL_MAJOR=`ubus call system board | grep version | awk -F ":" '{print $2}' | awk -F "\"" '{print $2}' | awk -F "." '{print $1}'`
LOCAL_MENIOR=`ubus call system board | grep version | awk -F ":" '{print $2}' | awk -F "\"" '{print $2}' | awk -F "." '{print $2}'`
LOCAL_SERVICE=`ubus call system board | grep version | awk -F ":" '{print $2}' | awk -F "\"" '{print $2}' | awk -F "." '{print $3}'`

UPGRADE() { 
	for VERSAO in `cat $FOLDER/releases`; do
		LAST_MAJOR=`echo $VERSAO | cut -d"v" -f2 | cut -d"." -f1`
        	LAST_MENIOR=`echo $VERSAO | cut -d"v" -f2 | cut -d"." -f2`
	        LAST_SERVICE=`echo $VERSAO | cut -d"v" -f2 | cut -d"." -f3`
		if [ $LAST_MAJOR -le $LOCAL_MAJOR ];
		then
			if [ $LAST_MENIOR -le $LOCAL_MENIOR ];
                	then
				if [ $LAST_SERVICE -ge $LOCAL_SERVICE ];
		                then
					DOWNLOAD
				fi
			else
				DOWNLOAD
                        fi
		else
			DOWNLOAD
                fi
		if [ -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz ] ;
	        then
        	        break
        	elif [ -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin ] ;
	        then
        	        break
	        fi
        done

}

INSTALL() { 
	if [ -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz ] ;
        then
		echo "Atual: v$LOCAL_MAJOR.$LOCAL_MENIOR.$LOCAL_SERVICE"
		echo ""
		read -p "Confirmar instalacao do firmware? (y/N) " CONFIRM
		if [ "$CONFIRM" = "y" ];
		then
			FIRMWARE="1"
			/usr/bin/backup
		        sysupgrade -n $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz
		else
	        	echo "Operacao cancelada"
	        	exit 0
		fi
	else
		if [  -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin ] ;
	        then
	                echo "Atual: v$LOCAL_MAJOR.$LOCAL_MENIOR.$LOCAL_SERVICE"
	                echo ""
	                read -p "Confirmar instalacao do firmware? (y/N) " CONFIRM
	                if [ "$CONFIRM" = "y" ];
	                then
				FIRMWARE="1"
				/usr/bin/backup
	                        sysupgrade -n $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin
	                else
	                        echo "Operacao cancelada"
	                        exit 0
	                fi
		fi
	fi
}

DOWNLOAD() { 
	if [ -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz ] ;
        then
                rm $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz
        elif [ -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin ] ;
        then
        	rm $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin
        fi
	wget -q http://$SERVER/$VERSAO/builds/$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz -O $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz
        if [ ! -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz ] ;
        then
                wget -q http://$SERVER/$VERSAO/builds/$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin -O $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin
        fi
}

case $1 in
        "reinstall") # reinstalacao
		VERSAO=`ubus call system board | grep version | awk -F ":" '{print $2}' | awk -F "\"" '{print $2}'`
	        VERSAO=`echo v$VERSAO`
		DOWNLOAD;
		INSTALL;
        ;; # fim reinstalacao
        "upgrade") # upgrade
		UPGRADE
		if [ -f $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-ext4-sysupgrade.img.gz ] ;
        	then
			echo "Nova:  $VERSAO"
	                INSTALL;
        	else
	                if [  -f  $FOLDER/$VERSAO-$IP-$BRAND-$MODEL-squashfs-sysupgrade.bin ] ;
	                then
				echo "Nova:  $VERSAO"
	                        INSTALL;
        	        else
                	        echo "Ultima versao instalada"
        	        fi
	        fi
        ;; # fim dist-upgrade
        *) echo "Opcao Invalida" ;;
esac
