#!/bin/bash
##################################################################
# Transfert des dossiers perso
# Sicep - Fred P. - Novembre 2011
##################################################################

# Declaration des variables
home_source="/home"
home_rech="/home/workgroups"
liste_fichiers="liste_fichiers.log"
passage=0
fich_tempo=/tmp/fichier_user.tmp
date=`date`
#effacer le fichier de log avant de commencer ?
che_log=/var/log/infosquota
fichier_log=/var/log/infosquota/recherche-fich-users.log
chemin=0
drive=0
i=1
nbr_tab=0
module=`CreoleGet eole_module`
# debut du script
#################################################
# test de la presence de /var/log/infosquota
if [ -d $che_log ]
then
	echo $date > $fichier_log
	echo >> $fichier_log
	echo "========== debut de la recherche =========" >> $fichier_log
else
	mkdir $che_log
	echo $date > $fichier_log
	echo >> $fichier_log
	echo "========== debut de la recherche =========" >> $fichier_log
fi



#################################################
# récupération des mappages

if [ $module == "scribe" ]
then
    mappage=`ldapsearch -x | grep -B 2 sambaShareDrive`
elif [ $module == "seth" ]
then
    mappage=`LDB_URL=/var/lib/samba/private/sam.ldb ldbsearch -S '(objectClass=inetOrgPerson)' uid | grep ^uid |awk '{print $2}'`
elif [ $module == "amonecole" ]
then
    mappage=`CreoleRun "LDB_URL=/var/lib/samba/private/sam.ldb ldbsearch -S '(objectClass=inetOrgPerson)' uid" addc | grep ^uid |awk '{print $2}'`
#    mappage=`LDB_URL=/var/lib/samba/private/sam.ldb ldbsearch -S '(objectClass=inetOrgPerson)' uid | grep ^uid |awk '{print $2}'`
fi

for ligne in $mappage
do
	if [ $chemin == 1 ]
	then
		tableau[i]=$ligne
		let i=i+1
		chemin=0
	fi
	if [ $drive == 1 ]
	then
		tableau[i]=$ligne
		drive=0
		let i=i+1
	fi
	if [ $ligne = "sambaFilePath:" ]
	then
		chemin=1
	fi
	if [ $ligne = "sambaShareDrive:" ]
	then
		drive=1
	fi
done
nbr_tab=$i




#################################################
# début de la recherche

if [ $module == "scribe" ]
then
    cmd="ldapsearch -x cn=DomainUsers|grep memberUid|awk '{print \$2}'"
elif [ $module == "seth" ]
then
    export LDB_URL=/var/lib/samba/private/sam.ldb
    cmd="ldbsearch -S '(objectClass=inetOrgPerson)' uid | grep ^uid |awk '{print \$2}'"
elif [ $module == "amonecole" ]
then
    cmd="CreoleRun \"LDB_URL=/var/lib/samba/private/sam.ldb ldbsearch -S '(objectClass=inetOrgPerson)' uid\" addc | grep ^uid |awk '{print \$2}'"
fi

eval $cmd | while read i;
do
	let nb_user=nb_user+1
	echo $nb_user > $fich_tempo
done
nb_user=$(cat $fich_tempo)
rm -f $fich_tempo

eval $cmd | while read i;
do
	let passage=passage+1
	echo >> $fichier_log
	echo "--------------------------------------" >> $fichier_log
#pour un affichage l'écran de l'utilisateur en cours de recherche : décommenter [echo "$passage / $nb_user $i"]
#	echo "$passage / $nb_user $i"
	echo $i >> $fichier_log

# test si l'utilisateur a un dossier perso
	if [ $module == "scribe" ]
    then
        homedir=$home_source/${i:0:1}/$i/perso
    elif [ $module == "seth" ]
    then
        homedir=$home_source/adhomes/$i
    elif [ $module == "amonecole" ]
    then
        homedir=$home_source/adhomes/$i/perso
    fi

	if [ -d $homedir ]
	then
		echo "le dossier $homedir est présent" >> $fichier_log
		dos1="$homedir"
		che1=1
	else
		echo "Pas de dossier perso pour $i" >> $fichier_log
		che1=0
	fi

# s'il existe un dossier perso pour l'utilisateur
	if [[ ($che1 == 1) ]]
	then
		echo "fichier de  destination : $homedir/$liste_fichiers" >> $fichier_log
		echo $date > $homedir/$liste_fichiers
		echo "Liste de vos fichiers personnels stockés sur le serveur pédagogique." >> $homedir/$liste_fichiers
		echo "Ne sont pas listés ici les fichiers contenus dans u:\ " >> $homedir/$liste_fichiers
		echo "-----------" >> $homedir/$liste_fichiers
		#find $home_rech ! -regex ".*/\..*" -user $i -type f | sed -e "s+`echo $home_rech/`++" >> $homedir/$liste_fichiers
		find $home_rech ! -regex ".*/\..*" -user $i -type f  -exec ls -Glh {} \; | awk '{print $5 " " $6 " " $7 " " $8 " " $9 " " $10 " " $11 " " $12 " -> " $4}' >> $homedir/$liste_fichiers
		#fichier=`find $home_rech ! -regex ".*/\..*" -user $i -type f`
		#find $home_rech ! -regex ".*/\..*" -user $i -type f
		# traitement pour affichage dans le fichier de log de l'utilisateur
		#for ligne in $fichier
		#do
	#		echo $ligne
	#		j=1
	#		echo $ligne | grep ${tableau[$j]}
	#		if [ $? == 0 ]
	#		then
	#			echo ${tableau[$j+1]} $ligne
	#		fi
	#	done



	else
		echo "Pas de dossier destination pour $i !!!!" >> $fichier_log
	fi

	j=1
#	cp $homedir/$liste_fichiers /tmp/liste-fichiers.tmp
	while [ $j -lt $nbr_tab ]
	do
		che_sub=${tableau[$j]}
		lettre_sub=${tableau[$j+1]}
		cat $homedir/$liste_fichiers | sed -e "s+$che_sub+$lettre_sub+g" > /tmp/liste-fichiers.tmp
		cp /tmp/liste-fichiers.tmp $homedir/$liste_fichiers
		let j=j+2
	done
	cat $homedir/$liste_fichiers | sed -e "s+/home/workgroups+S:+g" > /tmp/liste-fichiers.tmp
	sed 's#\/#\\#g' /tmp/liste-fichiers.tmp > $homedir/$liste_fichiers
    if [ $module == "amonecole" ]
    then
        cp $homedir/$liste_fichiers /var/lib/lxc/reseau/rootfs/var/www/html/outils/quotas/log/$i.log
    else
        cp $homedir/$liste_fichiers /var/www/html/outils/quotas/log/$i.log
    fi
#	cp /tmp/liste-fichiers.tmp $homedir/$liste_fichiers
done

if [ $module == "amonecole" ]
then
    CreoleRun "chown -R root:www-data /var/www/html/outils/quotas/log/" reseau
    CreoleRun "chmod -R 2750 /var/www/html/outils/quotas/log/" reseau
else
    chown -R root:www-data /var/www/html/outils/quotas/log/
    chmod -R 2750 /var/www/html/outils/quotas/log/
fi

echo >> $fichier_log
echo "--------------------------------------" >> $fichier_log
echo `date` >> $fichier_log
exit 0
