#!/bin/sh
# backup by obi
boxtype=`cat /etc/model`

ART=$1
if [ "$ART" == "kernel" ] || [ "$ART" == "var" ] || [ "$ART" == "root" ] || [ "$ART" == "full" ];then
	echo "ART=$ART"
else
	echo "Use <kernel|var|root|full>"
	exit 1
fi
killall -9 rcS
killall -9 enigma2
killall -9 `grep emu= /var/etc/autostart/start-config | cut -d \" -f2 | cut -d " " -f0`
killall -9 showiframe
swap swapalloff
infobox 30 BACKUP "started $ART backup to /tmp" & 
sleep 1
stfbcontrol a 0
sleep 1
echo "0" > /proc/progress
sleep 1
showiframe -p /var/etc/boot/start.mvi &
rm -r /tmp/*
echo "Backup started" > /dev/vfd
time=`date +"%Y.%m.%d_%H.%M.%S"`
version=`cat /etc/version`
#mtd=`cat /proc/mtd | cut -d : -f1 | tail -n1 | sed 's/mtd//'`
#mtd="5"

if [ "$boxtype" = "ipbox910" ] || [ "$boxtype" = "ipbox900" ] || [ "$boxtype" = "ipbox9000" ] || [ "$boxtype" = "ipbox91" ]; then 
	mtd="7"
elif [ "$boxtype" = "ufs910" ] || [ "$boxtype" = "at7000" ]; then 
	mtd="5"
elif [ "$boxtype" = "ufs922" ]; then 
	mtd="4"
fi

if [ "$mtd" = "4" ]; then
	if [ "$ART" == "full" ]; then
		name="$boxtype"_3p1_full_mtd"$mtd"
	fi

	if [ "$ART" == "root" ]; then
		mtd=2
		name="$boxtype"_3p1_root_mtd"$mtd"
	fi

	if [ "$ART" == "var" ]; then
		mtd=3
		name="$boxtype"_3p1_var_mtd"$mtd"
	fi
	if [ "$ART" == "kernel" ]; then
		mtd=1
		name="$boxtype"_3p1_kernel_mtd"$mtd"
	fi
elif [ "$mtd" = "5" ]; then
	if [ "$ART" == "full" ]; then
		name="$boxtype"_3p1_full_mtd"$mtd"
	fi

	if [ "$ART" == "root" ]; then
		mtd=2
		name="$boxtype"_3p1_root_mtd"$mtd"
	fi

	if [ "$ART" == "var" ]; then
		mtd=3
		name="$boxtype"_3p1_var_mtd"$mtd"
	fi
	if [ "$ART" == "kernel" ]; then
		mtd=1
		name="$boxtype"_3p1_kernel_mtd"$mtd"
	fi
fi
if [ "$mtd" = "7" ]; then
	if [ "$ART" == "full" ]; then
		name="$boxtype"_3p1_full_mtd"$mtd"
	fi

	if [ "$ART" == "root" ]; then
		mtd=3
		name="$boxtype"_3p1_root_mtd"$mtd"
	fi

	if [ "$ART" == "var" ]; then
		mtd=4
		name="$boxtype"_3p1_var_mtd"$mtd"
	fi
	if [ "$ART" == "kernel" ]; then
		mtd=2
		name="$boxtype"_3p1_kernel_mtd"$mtd"
	fi
fi
killall -9 infobox
infobox 10020 BACKUP "your system" "$name" &
dd if=/dev/mtdblock"$mtd" of=/tmp/"$time"_"$version"_"$name"_backup.img 
#showiframe -p /var/etc/boot/backup.mvi
FULLNAME=`ls -1 /tmp/*_"$name"_backup.img | sed 's/\/tmp\///g' | sed 's/.img//g'`

stfbcontrol a 0
sleep 1
#killall -9 showiframe
#sleep 1
#echo "0" > /proc/progress
#sleep 1
#showiframe -p /var/etc/boot/end.mvi &

if [ "$boxtype" = "ufs910" ]; then 
	if [ "$ART" == "full" ]; then
		echo "[Image]" > /tmp/"$FULLNAME".kim
		echo desc="$FULLNAME".img >> /tmp/"$FULLNAME".kim
		echo binfile="$FULLNAME".img >> /tmp/"$FULLNAME".kim
		echo bootargs=\"console=ttyAS0,115200 root=/dev/mtdblock2 ip={IP}:{SERVERIP}:{GATEWAY}:255.255.255.0:kathrein:eth0:off mem=64m coprocessor_mem=4m@0x10000000,4m@0x10400000 rootdelay=1 nwhwconf=device:eth0,hwaddr:{MAC} init=/bin/devinit\" >> /tmp/"$FULLNAME".kim
		echo bootcmd=\"bootm a0040000\" >> /tmp/"$FULLNAME".kim
	fi
fi

echo "[BACKUP] Create MD5 File"
echo "[BACKUP] $FULLNAME"
/sbin/md5sum /tmp/"$FULLNAME".img | cut -d "/" -f1 > /tmp/"$FULLNAME".md5

sleep 2
echo "Backup ready" > /dev/vfd
sleep 2
number=`ls -l /tmp/ | wc -l`
until false
do
	count=`ls -l /tmp/ | wc -l`
	if [ "$number" = "$count" ]; then
		killall -9 infobox
		infobox 7 BACKUP "Please copy your Backup and remove this !!"  "/tmp/$FULLNAME" &
		echo "waiting" > /dev/vfd
		sleep 2
		echo "Please copy your" > /dev/vfd
		sleep 2
		echo "Backup and" > /dev/vfd
		sleep 2
		echo "remove this !!" > /dev/vfd
		sleep 2
	else
		killall -9 infobox
		infobox 5 BACKUP "Thanks Rebooting..." &
		sleep 2
		echo "Thanks" > /dev/vfd
		sleep 2
		echo "[BACKUP] Reboot now"
		echo "Reboot now" > /dev/vfd
		/sbin/reboot -f
	fi
done

echo "[BACKUP] done"