#!/bin/bash

#for debugging
#set -x

GNCDIR=$1

for T in `find $GNCDIR -name gnc `; do
	echo $T
	NAMEDIR=$(dirname $T)
	echo NAMEDIR $NAMEDIR
	NAMEDIRBASE=$(dirname $NAMEDIR)
	echo NAMEDIRBASE $NAMEDIRBASE
	OLDNAME=$(basename $NAMEDIR)
	echo OLDNAME $OLDNAME
	ORDER=$(echo $OLDNAME | sed 's/-.*//')
	echo ORDER $ORDER
	NEWNAME=$(echo $OLDNAME | sed 's/^[^-]*-//')
	echo NEWNAME $NEWNAME
	cat $T |  tail -n +5 > $T.bottom
	echo "####################################     Groovix Net Control Parameters   #####################################" > $T.header
	echo "GNC_ORDER=$ORDER" >> $T.header
	#sed -n 4p $T  >  $T.args 
	#sed -n 3p $T  >  $T.args 
	egrep "^GNC_PARAMETERS" $T  >  $T.args
	sed -i 's/--attemptonce/--fail-override complete/g'  $T.args
	sed -i 's/--skip/--not-mode /g'  $T.args
	sed -i 's/--only/--if-mode /g'  $T.args
	grep runonce $T.args || sed -i "s/GNC_PARAMETERS='/GNC_PARAMETERS=' --run always /" $T.args
	sed -i 's/--runonce/--run once/'  $T.args

	echo "## GNC_ORDER must be defined before GNC_PARAMETERS.  GNC_PARAMETERS may include:" > $T.help
	echo "## --abort --run (always|once|disabled) --(if|not)-mode (build|install|live|normal)  " >> $T.help
	echo "## --fail-override (warning|skip|success|complete|disabled) --cache " >> $T.help
	#echo "## --runonce --abort --attemptonce --skipinstall --skiplive --skipbuild --onlyinstall --onlylive --onlybuild" >> $T.help
	#echo "###############################################################################################################" >> $T.help


	################################################################
	########  script changes  ######################################
	################################################################

	#fix double slashies in paths so we can always just match singles in replaces
	sed -i 's/\/\//\//g' $T.bottom
	# except if its like http://
	sed -i 's/:\//:\/\//g' $T.bottom

	perl -ni -e 'print unless /GK_OO_QUICKSTART_ENABLE/' $T.bottom

	sed -i 's/pac.conf/groovix.conf/g'  $T.bottom
	sed -i 's/netcustomization.conf/groovix.conf/g'  $T.bottom
	sed -i 's/bashconfset.pl/bashconfset/g'  $T.bottom
	sed -i 's/pyconfset.pl/pyconfset/g'  $T.bottom

	sed -i 's/cat \/etc\/groovix\/label/groovix-get-parameter GX_LABEL /' $T.bottom
	sed -i 's/cat \/etc\/groovix\/site/groovix-get-parameter GX_SITE /' $T.bottom
	sed -i 's/cat \/etc\/groovix\/type/groovix-get-parameter GX_TYPES /' $T.bottom
	
	sed -i 's/GK_CANCEL_PRINT_JOBS_ON_LOGOUT/GX_CANCEL_PRINT_JOBS_ON_LOGOUT/g'  $T.bottom
	sed -i 's/GK_GROOVIXGUARDIAN_ENABLE/GX_FILTER_ENABLE/g'  $T.bottom
	sed -i 's/GK_NUMLOCK_ON/GX_NUMLOCK_ON/g'  $T.bottom
	sed -i 's/GK_PACTIME_ENABLE/GX_PACTIME_ENABLE/g'  $T.bottom
	sed -i 's/GK_CMON_ENABLE/GX_CMON_ENABLE/g'  $T.bottom
	sed -i 's/GK_PACREZ_ENABLE/GX_PACREZ_ENABLE/g'  $T.bottom
	sed -i 's/GK_LOGOUT_TIME/GX_LOGOUT_TIME/g'  $T.bottom
	sed -i 's/SAKLOCKSAVER_RUN_IN_USER_SESSION/GX_SCREENSAVER_RUN_DURING_USER_SESSION/g'  $T.bottom
	sed -i 's/apt-get-dontask/groovix-auto-apt-get/g'  $T.bottom
	sed -i 's/GK_TIMEZONE/GX_TIMEZONE/g'  $T.bottom
	sed -i 's/PAC_BROWSER_STARTUP_HOMEPAGE/GX_BROWSER_HOMEPAGE/g'  $T.bottom
	sed -i 's/PAC_CUSTOM_SCREENSAVER_IMAGES_URL_DIR/GX_CUSTOM_SCREENSAVER_IMAGES_URL_DIR/g'  $T.bottom
	sed -i 's/PAC_CUSTOM_SCREENSAVER_IMAGES_URL_LIST/GX_CUSTOM_SCREENSAVER_IMAGES_URL_LIST/g'  $T.bottom

	sed -i 's/GK_FIREFOX_CLOSE_LOGOUT/GX_LOGOUT_AFTER_BROWSER_CLOSE/' $T.bottom
	sed -i 's/GK_ACCEPT_USE/GX_ACCEPT_USE/' $T.bottom

	sed -i 's/adduser /adduser --no-create-home --home \/home\/guest /' $T.bottom

	sed -i 's/c2g.bash/groovix-support-tunnel/' $T.bottom
	sed -i 's/c2g.conf/NEED-TO-GET-C2G-ENTRIES-INTO groovix.conf; MANUALLY UPDATE TO 2013 ERROR HERE /' $T.bottom


	perl -ni -e 'print unless /bashconfset GDM_TIMED_LOGIN_DELAY/' $T.bottom
	perl -pi -e 's/bashconfset GDM_TIMED_LOGIN_USER (.*) \/etc\/groovix\/groovix.conf/pyconfset groovix-autologin-user=$1 \/etc\/lightdm\/lightdm.conf \necho $1 \>\> \/etc\/groovix\/passwordlesslogins/' $T.bottom
	perl -pi -e 's/bashconfset GDM_TIMED_LOGIN_ENABLE.*true.*\/etc\/groovix\/groovix.conf/pyconfset groovix-autologin-enable=1 \/etc\/lightdm\/lightdm.conf/i' $T.bottom
	perl -pi -e 's/bashconfset GDM_TIMED_LOGIN_ENABLE.*false*\/etc\/groovix\/groovix.conf/pyconfset groovix-autologin-enable=0 \/etc\/lightdm\/lightdm.conf/i' $T.bottom
	perl -pi -e 's/bashconfset GDM_WELCOME_MESSAGE\s+(.*)\s+\/etc\/groovix\/groovix.conf/pyconfset groovix-welcome-message=$1 \/etc\/lightdm\/lightdm.conf/' $T.bottom

	grep "\/var\/lib\/groovix\/pac\/images\/desktop_background.png" $T.bottom
	if [ $? -eq 0 ] ; then
		sed -i 's/\/var\/lib\/groovix\/pac\/images\/desktop_background.png/\/var\/lib\/groovix\/session-files\/global\/desktop-background.jpg/g'  $T.bottom
		mkdir -p $NAMEDIRBASE/$OLDNAME//var/lib/groovix/session-files/global/
		mv $NAMEDIRBASE/$OLDNAME/var/lib/groovix/pac/images/desktop_background.png $NAMEDIRBASE/$OLDNAME//var/lib/groovix/session-files/global/desktop-background.jpg
	fi

	# should we diable this - don't want old gnc format files getting retrieved and run by new gnc, must manually make sure conversion has been done first before enabling
	#sed -i 's/GNC_LOCAL_SERVER_URL/GNC_SERVER_URLS_OLD_VERSION_AUTO_DISABLED/' $T.bottom
	sed -i 's/GNC_LOCAL_SERVER_URL/GNC_SERVER_URLS[1]/' $T.bottom

	sed -i 's/\/var\/lib\/groovix\/kiosk\/screensaver/\/var\/lib\/groovix\/screensaver\/images/g'  $T.bottom
	sed -i 's/\/var\/lib\/groovix\/saklock\/imagecache\/.xscreensaver-getimage.cache/\/var\/lib\/groovix\/gxscreensaver\/.xscreensaver-getimage.cache/g' $T.bottom

	#sed -i 's///g'  $T.bottom

	grep groovix-filesystem-restorer-custom-end.bash $T.bottom
	if [ $? -eq 0 ] ; then
		mkdir -p $NAMEDIRBASE/$OLDNAME//etc/groovix/session-setup.d/
		mv $NAMEDIRBASE/$OLDNAME//usr/bin/groovix-filesystem-restorer-custom-end.bash $NAMEDIRBASE/$OLDNAME//etc/groovix/session-setup.d/35-custom-guest-overrides
		sed -i 's/\/usr\/bin\/groovix-filesystem-restorer-custom-end.bash/\/etc\/groovix\/session-setup.d\/35-custom-guest-overrides/g' $T.bottom
	fi

	perl -pi -e 's/gncget.*\/var\/lib\/groovix\/pac\/home\/(.*)\.cpio/gncget --tgz --clean \/var\/lib\/groovix\/home\/$1/' $T.bottom


	sed -i 's/SHUTDOWN_UPDATE_DELAY/GX_CLOSING_UPDATE_DELAY/' $T.bottom

	#sed -i 's/PAC_SHUTDOWN_LAST_WARNING_DELAY/GX_CLOSING_WARNING_MINUTES/' $T.bottom
	perl -pi -e 's/PAC_SHUTDOWN_LAST_WARNING_DELAY\s+\"*(\d+)m\"*.*/GX_CLOSING_LAST_WARNING_MINUTES $1/' $T.bottom
	sed -i 's/PAC_SHUTDOWN_LAST_WARNING_MESSAGE/GX_CLOSING_WARNING_MESSAGE/' $T.bottom

	#sed -i 's/PAC_SHUTDOWN_WARNING_DELAY /GX_CLOSING_WARNING_MINUTES ;this_gnc_needs_manual_adjustment_look_at_message_for_minutes /' $T.bottom
	perl -pi -e 's/PAC_SHUTDOWN_WARNING_DELAY\s+\"*(\d+)m\"*.*/GX_CLOSING_WARNING_MINUTES $1 \/etc\/groovix\/groovix.conf ; error-echo-this_gnc_needs_manual_adjustment_look_at_closing_warning_message_for_accurate_minutes /' $T.bottom
	grep PAC_SHUTDOWN_WARNING_DELAY $T.bottom
	if [ $? -eq 0 ] ; then
		error-echo-'this-gnc-needs-manual-adjustment for GX_CLOSING_WARNING_MINUTES parameter -  look at GX_CLOSING_WARNING_MESSAGE for actual minutes' >> $T.bottom
	fi
	sed -i 's/PAC_SHUTDOWN_WARNING_MESSAGE/GX_CLOSING_WARNING_MESSAGE/' $T.bottom

	## there are no "FINAL_WARNING" variables ! - why was this in here?
	##sed -i 's/PAC_SHUTDOWN_FINAL_WARNING_DELAY/GX_CLOSING_FINAL_WARNING_MINUTES/' $T.bottom
	#perl -pi -e 's/PAC_SHUTDOWN_FINAL_WARNING_DELAY\s+(\d+)m*/GX_CLOSING_FINAL_WARNING_MINUTES $1/' $T.bottom
	#sed -i 's/PAC_SHUTDOWN_FINAL_WARNING_MESSAGE/GX_CLOSING_FINAL_WARNING_MESSAGE/' $T.bottom

	grep groovix-shutdown-procedure $T.bottom
	if [ $? -eq 0 ] ; then
		echo >> $T.bottom
		echo 'error-echo-this-gnc-probably-needs-manual-adjustment for groovix-shutdown-procedure lines, change/remove cron lines to use new format using actual close time - GX_CLOSING_LOGOFF_MINUTES minutes before closing that people actually are kicked off: ' >> $T.bottom
		echo '#bashconfset GX_CLOSING_LOGOFF_MINUTES 5 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[default]=21:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Mon]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Tue]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Wed]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Thu]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Fri]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Sat]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo '#bashconfset GX_CLOSING_TIME[Sun]=17:00 /etc/groovix/groovix.conf' >> $T.bottom
		echo >> $T.bottom
	fi


	sed -i 's/bashconfset GK_SITE_WHITELIST_DEST(.*)\/etc\//need to manually set whitelist target=$1 in \/etc\/groovix\/filter\/whitelist\/squidGuard.conf /' $T.bottom
	perl -pi -e 's/bashconfset GK_SITE_WHITELIST(.*)(\/etc\/.*)/bashconfset GX_FILTER_ENABLE=true $2\nbashconfset GX_FILTER_PROFILE=whitelist $2\ngroovix-filter-set-whitelist-from-csv $1  \/var\/lib\/squidguard\/db\/custom-whitelist\/domains /' $T.bottom
	
	##### old obsolete commands, get rid of em
	sed -i 's/saklocksaver_lock_off//' $T.bottom


	#WILL REQUIRE MANUAL INTERVENTION
	sed -i 's/bashconfset GK_CUSTOM_APP_BEGINSESS/change this to \/etc\/groovix\/session-startup.d\//' $T.bottom
	sed -i 's/bashconfset GK_CUSTOM_APP_PREFF/change this to \/etc\/groovix\/session-startup.d\//' $T.bottom



	################################################################
	# TODO : clean up empty dirs
	find $NAMEDIRBASE/$OLDNAME/ -type d -empty -delete;

	#TODO: duplicate file check - save space and avoid conflicts - run across all gncs for that version


	################################################################
	################################################################
	################################################################

	cp $T $T.pre-groovix-13
	cat $T.header $T.args $T.help $T.bottom > $T
	rm $T.header $T.args $T.help $T.bottom

	#finally move dir
	#get rid of dup names
	mv $NAMEDIRBASE/$NEWNAME $NAMEDIRBASE/$NEWNAME.NAME-CONFLICT-NEEDS-RESOLUTION 2>/dev/null
	echo mv $NAMEDIRBASE/$OLDNAME $NAMEDIRBASE/$NEWNAME
	mv $NAMEDIRBASE/$OLDNAME $NAMEDIRBASE/$NEWNAME
	gnc-bump --upgrade $NAMEDIRBASE/$NEWNAME
done

