#!/bin/bash
#########################################################################################################################
# Version 0.1 vom 23.10.2005												#
# Diese Skript wurde entwickelt um beim ausslogen von Usern die Home dirs automatisch zurückzusetzen.			#
# Warum braucht man so was?												#
# Das Skript läuft auf einem Terminalserver der auf Messen eingesetzt wird und dort sollen die accounts von Besuchern	#
# nach dem logout zurück gesetzt werden damit der neue Besucher beim einloggen wieder einen default Desktop sieht.	#
#															#
# ACHTUNG! Diese Skript befindet sich immer noch in der Testphase und ist bestimmmt noch nicht frei von BUGS		#
# Bugs bitte an bugs@juliux.de melden											#
#															#
# Diese Skript steht unter de GPL!!											#
# Es wurde von Julius Bloch(juliux@ubuntusers.de) aka juliux entwickelt,						#
# bei der Syntax findung von awk war netterweise andre_r aus #ubuntu-de auf freenode behilflich				#
#########################################################################################################################
PATH=/bin:/usr/bin ;
resetuser=$(echo "blalba"); #set resetuser to a default value
resetminute=$(echo "60"); #set resetminute to a default value
while true; do
	month=$(LC_ALL=C date +%b); #fetch month in the english format, 
	day=$(date +%d); #fetch actual day
	hour=$(date +%k); #fetch actual hour
	minute=$(date +%M); #fetch actual minute
	#check if there is a log out in /var/log/auth.log
	logedout=$(cat /var/log/auth.log |grep closed |grep $month |grep $day | grep $hour | grep $minute);
	#test if $logedout ist empty 
	if test -z $logedout ; then
		echo "no log out";
	else
		#this check with timestap is in the last found logout, need to find only the actual logout and not old
		rday=$(echo $logedout | awk '{print $(NF-9)}');
		rhour=$(echo $logedout | awk '{print $(NF-8)}' | awk 'BEGIN {FS=":"} {print $1}');
		rminute=$(echo $logedout | awk '{print $(NF-8)}' | awk 'BEGIN {FS=":"} {print $2}');
		#fetch the user who logedout
		user=$(echo $logedout | awk '{print $NF}');
		#test if it is a real logout or an old one
		if [ $minute = $rminute ] && [ $hour = $rhour ] && [ $day = $rday ]; then
			echo "real logout";
			#this is that the home dirs are only wirte over and one time			
			if [ $resetminute != $rminute ]; then
				resetuser=$(echo "BLA");
				echo "User reset";
			fi
			if [ $user != $resetuser ]; then
				resetuser=$(echo "BLU");
				echo "User reset";
			fi
			#check if the found user is in the group homereset
			if (cat /etc/group | grep homereset |grep $user >> /dev/null); then
				#here you have to define the source and the target for overwrite
				if echo $user|grep edubuntu >> /dev/null && [ $resetuser != $user ]; then
					#at first there is only a dummy
					echo "reset edubuntu";
					#this is a possible solution who you can overwrite the home dir

					#rm -R /home/$user/*;
					#cp -fr /home/sys/defaultubuntu/* /home/$user/*;
					#chown $user:$user -R /home/$user;
					#this is for the check if the home dir is overwritten in at the actual minute
					resetuser=$(echo "$user");
					resetminute=$(echo "$minute");
				elif  echo $user|grep ubuntu >> /dev/null && [ $resetuser != $user ]; then
					#s.o.					
					echo "reset ubuntu";
					resetuser=$(echo "$user");
					resetminute=$(echo "$minute");
				fi
				
			fi
		fi		
	fi
	#this is that there is only a check every second
	sleep 1;
done
#<------------------------------------END OF FILE---------------------------------------------------------------------->#
