Gestion des comptes orphelins
\n";
$html .= "
Opérations courantes
\n";
if ($do !="1") $html .= "
Transfert des comptes orphelins dans la corbeille".msgaide($msg1)."\n";
if ($do !="2") $html .= "
Examiner le contenu de la corbeille".msgaide($msg2)."\n";
$html .= "
Récupération de comptes orphelins depuis la corbeille".msgaide($msg3)."\n";
//if ($do !="3") $html .= "
Effacer les homes des comptes orphelins".msgaide($msg4)."\n";
if ($do !="3") {
$html .= "
Effacer les «homes» des comptes orphelins".msgaide($msg4)."ou les deplacer vers un dossier temporaire _Trash_users".msgaide($msg4bis)."\n";
$html .= "
Supprimer le dossier temporaire _Trash_users".msgaide($msg8)."\n";
}
if ($do !="4") $html .= "
Vider la corbeille et purger les fichiers inutiles sur /var/se3".msgaide($msg5)."\n";
$html .= "
Résolution de problème
\n";
$html .= "
Programmer la recherche et la suppression des fichiers utilisateurs obsolètes sur les partitions de stockage".msgaide($msg7)."\n";
$html .="
";
echo $html;
// Actions
switch ($do) {
case 1:
// Transfert des comptes orphelins dans la corbeille
if ( $phase != 1 )
// Affichage du sablier
echo "
Transfert des comptes orphelins dans la corbeille en cours. Veuillez patienter...
";
else {
// On commence par controler s'il n'y a pas des utilisateurs qui ne sont plus ni dans Profs ni dans Eleves alors qu'ils ont le droit no_Trash_user
$tmp_tab_no_Trash_user=gof_members("no_Trash_user","rights",1);
if(count($tmp_tab_no_Trash_user)>0) {
echo "
Controle des titulaires du droit no_Trash_user avant d'effectuer le transfert des comptes orphelins.
\n";
echo "
\n";
$cpt_retablissement_no_trash=0;
$attribut=array("cn");
for($loop=0;$loop";
/*
$grp_no_Trash="";
$tabtmp=get_tab_attribut("groups", "(&(cn=Profs)(memberuid=$uid))", $attribut);
if(count($tabtmp)>0) {
$grp_no_Trash="Profs";
}
else {
$tabtmp=get_tab_attribut("groups", "(&(cn=Eleves)(memberuid=$uid))", $attribut);
if(count($tabtmp)>0) {
$grp_no_Trash="Eleves";
}
}
*/
// S'ils ont ete supprimes de Eleves et Profs, on ne peut plus les reaffecter dans le bon groupe
// Par defaut, on les declare Profs (parce qu'il y a plus de chance qu'on mette un Prof en no_Trash_user qu'un eleve) et on alerte.
$grp_no_Trash="Profs";
//echo "\$grp_no_Trash=$grp_no_Trash
";
//if($grp_no_Trash!="") {
if(($grp_no_Trash!="")&&($uid!="admin")) {
$attribut=array("uid");
$compte_existe=get_tab_attribut("people", "uid=$uid", $attribut);
if(count($compte_existe)==0) {
// Le compte n'existe plus... et on a oublie de nettoyer no_Trash_user
$attributs=array();
$attributs["member"]="uid=$uid,".$dn["people"];
echo "Le compte $uid n'existe plus.
Suppression de l'association de $uid au droit no_Trash_user: ";
if(modify_attribut("cn=no_Trash_user", "rights", $attributs, "del")) {
echo "SUCCES";
}
else {
echo "ECHEC";
}
}
else {
// On controle si le compte est membre du groupe $grp_no_Trash
$attribut=array("memberuid");
$memberUid=get_tab_attribut("groups", "(&(cn=$grp_no_Trash)(memberuid=$uid))", $attribut);
if(count($memberUid)>0) {
echo "$uid est deja membre du groupe $grp_no_Trash.";
}
else {
echo "Rétablissement de $uid comme membre du groupe $grp_no_Trash: ";
$attributs=array();
$attributs["memberuid"]=$uid;
if(modify_attribut ("cn=$grp_no_Trash", "groups", $attributs, "add")) {
echo "SUCCES";
}
else {
echo "ECHEC";
}
$cpt_retablissement_no_trash++;
}
}
echo "
\n";
}
}
if($cpt_retablissement_no_trash>0) {
echo "Un ou des utilisateurs ont été rétablis comme membres du groupe Profs pour éviter une mise à la corbeille.
Si ce n'était pas leur groupe d'appartenance initiale, il faudra corriger manuellement dans Annuaire/Accès à l'annuaire
\n";
}
echo "
\n";
}
// Transfert des comptes orphelins dans la corbeille
exec ("/usr/share/se3/sbin/searchAndDelete.pl" ,$AllOutPut,$ReturnValue);
if ($ReturnValue == "0")
echo "Le transfert des comptes orphelins dans la corbeille s'est déroulé avec succès.
";
else
echo "
Echec du tansfert des comptes orphelins dans la corbeille !
";
}
break;
case 2 :
//Examiner le contenu de la corbeille
if ( $phase != 1 )
// Affichage du sablier
echo "
Examen du contenu de la poubelle. Veuillez patienter...
";
else {
$users = search_people_trash ("cn=*");
echo "
Il y a ".count($users)." utilisateur";
if (count($users) > 1 ) echo "s";
echo " dans la corbeille.
\n";
echo "
\n";
for ($loop=0; $loop".utf8_decode($users[$loop]["cn"])."\n";
echo "
\n";
}
break;
case 3 :
// Nettoyage des repertoires home
if ( $phase != 1 )
// Affichage du sablier
echo "
Le nettoyage des répertoires «homes» est en cours. Veuillez patienter...
";
else {
//echo "\$_GET['mode_clean']=".$_GET['mode_clean']."
";
if($mode_clean=='mv') {
echo "
Déplacement des homes des comptes orhelins en cours...
";
system ("/usr/bin/sudo /usr/share/se3/scripts/clean_homes.sh -m" ,$ReturnValue);
//echo "\$ReturnValue=$ReturnValue
";
if($ReturnValue!="0") {echo "
Une erreur s'est produite !
";}
for($loop=0;$loop
";
echo $AllOutPut[$loop]." ";
}
echo "
Terminé.
\n";
}
else {
system ("/usr/bin/sudo /usr/share/se3/scripts/clean_homes.sh -d" ,$ReturnValue);
if ($ReturnValue == "0") {
echo "Le nettoyage des répertoires «homes» s'est déroulé avec succès.
";
}
else {
echo "
Echec du nettoyage des répertoires «homes» !
";
}
}
}
break;
case 4;
// Vidage de la corbeille
if ( $phase != 1 && $phase != 2 )
// Affichage du message de confirmation
echo "
$msg_confirm
";
elseif ($phase == 1 )
// Affichage du sablier
echo "
Vidage de la corbeille en cours. Veuillez patienter...
";
elseif ($phase == 2 ) {
//echo "Le nettoyage de la corbeille s'est déroulé avec succès.
";
$users = search_people_trash ("cn=*");
for ($loop=0; $loop
";
echo "Une recherche sur les ressources partagées pour suppression des fichiers obsolètes a été lancée en arrière plan.
";
echo "Un mail récapitulatif vous sera envoyé";
system ("/usr/bin/sudo /usr/share/se3/scripts/clean_homes.sh -sv " ,$ReturnValue);
// if ($ReturnValue == "0") {
// echo "
Le nettoyage de /var/se3 s'est déroulé avec succès.
";
// }
// else {
// echo "Echec du nettoyage des répertoires «/var/se3» !
";
// }
}
else echo "Echec du nettoyage de la corbeille !
";
}
break;
case 5 :
//Grand menage !!
echo "Grand ménage : suppression des fichiers obsolètes sur /home et /var/se3
";
system ("/usr/bin/sudo /usr/share/se3/scripts/clean_homes.sh -sc" ,$ReturnValue);
//echo "\$ReturnValue=$ReturnValue
";
if($ReturnValue!="0") {echo "Une erreur s'est produite???
";}
else {
echo "Programmation pour 20h00 effectuée, un mail récapitulatif vous sera envoyé.
";
}
break;
echo "Un mail récapitulatif vous sera envoyé";
case 6 :
//Supression de trash_users !!
echo "Supression du dossier /home/admin/Trash_users en cours....
";
system ("/usr/bin/sudo /usr/share/se3/scripts/clean_homes.sh -t" ,$ReturnValue);
//echo "\$ReturnValue=$ReturnValue
";
if($ReturnValue!="0") {
echo "Une erreur s'est produite !
"; }
else {
echo "Suppression Ok !
";
}
break;
case 10;
// Recuperation de comptes orphelins
// Choix d'un filtre de recherche
if ( $phase != 1 && $phase != 2 && $phase != 3) {
$html="Recherche des comptes orphelins à transférer :
\n";
$html.="\n";
$html.="
\n";
echo $html;
} elseif ( $phase == 1 ) {
// Affichage de la liste des comptes orphelins
// Interpretation du type de filtre
if ($filter_type == "contient" ) if ($filtre!="*") $filtre="*".$filtre."*";
if ($filter_type == "commence" ) $filtre=$filtre."*";
if ($filter_type == "finit" ) $filtre="*".$filtre;
// Recherche des utilisateurs repondant au critere
$users = search_people_trash ("cn=$filtre");
echo " Il y a
".count($users)." utilisateur";
if ( count($users) >= 2 ) echo "s";
echo " dans la corbeille qui répond";
if ( count($users) >= 2 ) echo "ent";
echo " au
filtre de recherche.
\n";
// Affichage de la liste des utilisateurs a recuperer
if ( count($users) > 0) {
$html="