#!/bin/sh

echo Content-type: text/html
echo ""
echo "<head><title>Modules</title>"
echo "<link rel="stylesheet" type="text/css" href="../style.css" /> "

echo "<style type="text/css">"
echo "<!--"
echo "/* Tooltip */"
echo "a.tooltip,"
echo "a.tooltip:link,"
echo "a.tooltip:visited,"
echo "a.tooltip:active { position: relative; text-decoration: none; font-style: bold; border-bottom:0px dotted #4dbcf3; }"
echo "a.tooltip:hover { background: transparent; z-index: 100; }"
echo "a.tooltip span { display: none; text-decoration: none; }"
echo "a.tooltip:hover span { display: block; position: absolute; top: 30px; left: 0; width: 800px; z-index: 100; color: #000000; border: 1px solid; border-color: #FFFFFF #D5D7DB #D5D7DB #FFFFFF; border-left: 4px solid #4dbcf3; padding: 2px 10px 2px 10px; background: #EEEEEE; font-family: Verdana, Arial, Helvetica, Sans-serif; font-style: Normal; text-align: left; }"
echo "-->"
echo "</style>"

echo "</head>"
echo "<body>"

. /dtv/SGO.env
SELF=Modules.cgi
TMPDIR=/mtd_down/temp/
EXTDIR=/mtd_down/SGO_extensions/
SAMYGOSERVER=http://sourceforge.net/projects/samygo/files/WebIF/
#DEVELSERVER=http://server.grau.home/samsung/
MODULEFILE=readme
EXTENSION=.SGO_ext.tar.gz

#var_a=$(echo "$QUERY_STRING" | sed 's_%3A_:_g' | sed 's_%2F_\/_g' | busybox awk -F "(=|&)" ' {print $2} ')
var_a=$(echo "$QUERY_STRING" | sed 's_%3A_:_g' | sed 's_%2F_\/_g' | sed 's/.*var_a=//' | sed 's/&.*//')
#var_b=$(echo "$QUERY_STRING" | sed 's_%3A_:_g' | sed 's_%2F_\/_g' | busybox awk -F "(=|&)" ' {print $4} ')
var_b=$(echo "$QUERY_STRING" | sed 's_%3A_:_g' | sed 's_%2F_\/_g' | sed 's/.*var_b=//' | sed 's/&.*//')
#var_c=$(echo "$QUERY_STRING" | sed 's_%3A_:_g' | sed 's_%2F_\/_g' | busybox awk -F "(=|&)" ' {print $6} ')
var_c=$(echo "$QUERY_STRING" | sed 's_%3A_:_g' | sed 's_%2F_\/_g' | sed 's/.*var_c=//' | sed 's/&.*//')

[ ! -d $EXTDIR ] && mkdir $EXTDIR
[ ! -d $TMPDIR ] && mkdir $TMPDIR
[ -d $TMPDIR ] && cd $TMPDIR || exit 1

list() {
	[ "$(ls -A "$EXTDIR")" ] && ls "$EXTDIR"* | while read FILE; do
		echo "<form action="/cgi-bin/$SELF" method="GET">"
		echo "<input type="submit" name="var_a" value="remove" />"
		echo "<a class=\"tooltip\" href="#">"$(echo $FILE | sed 's_.*/__g' | sed 's_.SGO\_ext.*__g')"<span><pre>"
		cat "$FILE" | while read LIST; do
			echo "	"$SYSROOT"/"$LIST""
		done
		echo "</pre></span>"
		echo "<input type="HIDDEN" name="var_b" value="$FILE">"
		echo "</form>"
	done
}
add() {
	echo "<form action="/cgi-bin/$SELF" method="GET">"
	echo "<input type="submit" name="var_a" value="Manual Install" />"
	echo "<input type=text name="var_b" value="LINK">"
	echo "<input type=text name="var_c" value="NAME">Supply link and desired modul name"
	echo "</form>"
}
online() {
### old from forum
#	curl -s "http://forum.samygo.tv/viewtopic.php?f=21&t=3856&p=29558#p29558" |\
#	sed 's_&amp;_&_g' | busybox grep -o "###.*###" | sed 's_<br />_\n_g' | sed 's_^###.*$__g' | sed '/^$/d'| while read i; do
#		echo $i | busybox awk '{print "<form action=\"/cgi-bin/'$SELF'\" method=\"GET\">\
#		<input type=\"submit\" name=\"var_a\" value=\"install\" />\
#		<input type=text name=\"var_b\" value=\""$1"\">\
#		<input type=text name=\"var_c\" value=\""$2"\"><br>"$3,$4,$5,$6,$7,$8,$9"</form>"}'
#	done
### end

### not using curl and busybox awk
#	curl -sL http://server.grau.home/samsung/readme | sed -e '1,2d' | sed 's_\t__g' | while read i; do
	wget -q $SAMYGOSERVER$MODULEFILE -O - | sed -e '1,2d' | sed 's_\t__g' | while read i; do
#		NAME=$(echo $i | busybox awk -F "|" '{ print $1 }')
		NAME=$(echo $i | sed 's_\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\).*_\1_')
#		BUILD=$(echo $i | busybox awk -F "|" '{ print $2 }')
		BUILD=$(echo $i | sed 's_\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\).*_\2_')
#		CPU=$(echo $i | busybox awk -F "|" '{ print $3 }')
		CPU=$(echo $i | sed 's_\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\).*_\3_')
#		PLATFORM=$(echo $i | busybox awk -F "|" '{ print $4 }')
		PLATFORM=$(echo $i | sed 's_\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\).*_\4_')
#		FIRMWARE=$(echo $i | busybox awk -F "|" '{ print $5 }')
		FIRMWARE=$(echo $i | sed 's_\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\).*_\5_')
#		DESCRIPTION=$(echo $i | busybox awk -F "|" '{ print $6 }')	
		DESCRIPTION=$(echo $i | sed 's_\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\)|\([A-z0-9 .:-]*\).*_\6_')
		echo "<form action=\"/cgi-bin/$SELF\" method=\"GET\">\
<input type=\"submit\" name=\"var_a\" value=\"install\" />\
<input type=hidden name=\"var_b\" value=\"$SAMYGOSERVER$NAME$EXTENSION\">\
<input type=hidden name=\"var_c\" value=\"$NAME$EXTENSION\">$NAME<br>$DESCRIPTION</form>"
	done
}
devel() {
	curl $DEVELSERVER | busybox grep -o "[A-z_]*$EXTENSION" | while read extension; do
		echo "<form action="/cgi-bin/$SELF" method="GET">"
		echo "<input type="submit" name="var_a" value="install" />"
		echo "<input type=text name="var_b" value="$DEVELSERVER$extension" size="90">"
		echo "</form>"
	done
}
install() {
	[ -n "$1" -a -n "$2" ] && wget "$1" -O "$2"
	[ -n "$1" -a -z "$2" ] && wget "$1"
	ls | busybox grep $EXTENSION | while read extension; do
		[ -z $extension ] && continue
		echo "install $extension"
		tar -mvzxf "$extension" -C $SYSROOT/ >> $EXTDIR"$extension".log
		busybox awk ' !x[$0]++' $EXTDIR"$extension".log | busybox grep -v /$ > $EXTDIR"$extension".tmp && mv $EXTDIR"$extension".tmp $EXTDIR"$extension".log
		echo $EXTDIR"$extension".log
		rm "$extension"
	done
}
reload() {
	$SYSROOT/etc/init.d/*_poor_webif.* start
}
cleanlog() {
	ls "$EXTDIR"* | while read FILE; do
		busybox awk ' !x[$0]++' "$FILE" | busybox grep -v /$ > "$FILE".tmp && mv "$FILE".tmp "$FILE"
	done
}
uninstall() {
	[ -z "$1" ] && exit 1
	echo "<pre>"
	cat "$1" | while read FILE; do rm "$SYSROOT"/"$FILE"; done
	rm "$1"
	echo "</pre>"
}

case "$var_a" in
	install)
	install "$(echo $var_b | sed 's_%3F_?_g' | sed 's_%3D_=_g')" "$var_c"
	reload
	;;
	remove)
	uninstall "$var_b"
	;;
	online)
	online
	;;
	devel)
	[ ! -z "$DEVELSERVER" ] && devel
	;;
	*)
	echo "<form action="/cgi-bin/$SELF" method="GET"><input type="submit" name="var_a" value="online">$SAMYGOSERVER$MODULEFILE</form>"
	[ ! -z "$DEVELSERVER" ] && echo "<form action="/cgi-bin/$SELF" method="GET"><input type="submit" name="var_a" value="devel">INTERNAL TESTING</form>"
	add
	list
	;;
esac

echo "<form action="/cgi-bin/$SELF" method="GET"><input type="submit" value="BACK"></form>"

echo "BUILD=2012-04-15"
echo "</body>"

exit
