"); $partition=$_POST['partition']; if($partition=="") { $partition=$_GET['partition']; } $classe_gr=$_POST['classe_gr']; $equipe_gr=$_POST['equipe_gr']; $matiere_gr=$_POST['matiere_gr']; $autres_gr=$_POST['autres_gr']; $user=$_POST['user']; if ( file_exists("/tmp/tmp_quota_K") or file_exists("/tmp/tmp_quota_H")) { //J'utilise le script warn_quota.sh en le patchant a deux endroits pour creer un fichier dans /tmp: ce fichier est efface immediatement si l'admin n'avait pas fixe d'avertissement en cas de depassement de quota... Pas elegant mais cela ecomise un script et warnquota.sh est rapide... // AFFICHAGE D'ALERTE DES USERS en depassement de quota exec("sudo /usr/share/se3/scripts/warn_quota.sh"); echo "

".gettext("Attention!")."

"; $arr = array("/home", "/var/se3"); foreach ($arr as $partit) { if ( $partit == "/home" ) { $disque="K"; } else {$disque="H"; } if (file_exists("/tmp/tmp_quota_$disque")) { echo "

".gettext("Liste des utilisateurs en dépassement de quota sur")." $partit :

"; echo "\n"; echo ""; if ( $partit == "/home" ) { exec("cat /tmp/tmp_quota_$disque|gawk -F \"\t\" '{print \"\"}'| sed -e \"s+#FF8C00>Expire+#FF0000>Expir\é+g\" | sed -e \"s+\"}'| sed -e \"s+#FF8C00>Expire+#FF0000>Expir\é+g\" | sed -e \"s+
\" $1 \" \" $2 \" \" $3 \"\" $5 \"
-+-+g\" > /tmp/result_quota"); exec("sed -i /tmp/result_quota -e \"s!REPERE1 !popuprecherche(\'stats_user.php?partition=$partit\&uid=!\""); exec("sed -i /tmp/result_quota -e \"s! REPERE2!','popuprecherche','width=800,height=500');!\""); system("cat /tmp/result_quota"); exec("rm /tmp/result_quota"); } else { system("cat /tmp/tmp_quota_$disque|gawk -F \"\t\" '{print \"
\" $1 \" \" $2 \" \" $3 \"\" $5 \"
-+-+g\""); } echo "
"; } } } else { //effacer les messages d'avertissements crees en trop par ce script si non desires exec("sudo /usr/share/se3/scripts/warn_quota.sh"); } echo "

".gettext("Visualisation des quotas effectivement attribués")."

"; //FILTRAGE echo "

".gettext("Quotas sur")."  

"; echo "

".gettext("Filtrer les membres des groupes suivants :")."

"; //echo "

( Pour afficher tous les quotas, valider directement. )

"; // Etablissement des listes des groupes disponibles $list_groups=search_groups("(&(cn=*) $filter )"); // Etablissement des sous listes de groupes : $j =0; $k =0; $l = 0; $m = 0; for ($loop=0; $loop < count ($list_groups) ; $loop++) { // Classe if ( preg_match ("/Classe_/", $list_groups[$loop]["cn"]) ) { $classe[$j]["cn"] = $list_groups[$loop]["cn"]; $classe[$j]["description"] = $list_groups[$loop]["description"]; $j++; } // Equipe elseif ( preg_match ("/Equipe_/", $list_groups[$loop]["cn"]) ) { $equipe[$k]["cn"] = $list_groups[$loop]["cn"]; $equipe[$k]["description"] = $list_groups[$loop]["description"]; $k++; } //Matiere elseif ( preg_match ("/Matiere_/", $list_groups[$loop]["cn"]) ) { $matiere[$l]["cn"] = $list_groups[$loop]["cn"]; $matiere[$l]["description"] = $list_groups[$loop]["description"]; $l++; } // Autres elseif (!preg_match ("/^overfill/", $list_groups[$loop]["cn"]) && !preg_match ("/^lcs-users/", $list_groups[$loop]["cn"]) && //!preg_match ("/^admins/", $list_groups[$loop]["cn"]) && !preg_match ("/Cours_/", $list_groups[$loop]["cn"]) && //!preg_match ("/Matiere_/", $list_groups[$loop]["cn"]) && !preg_match ("/^slis/", $list_groups[$loop]["cn"]) && !preg_match ("/^system/", $list_groups[$loop]["cn"]) && !preg_match ("/^machines/", $list_groups[$loop]["cn"])) { $autres[$m]["cn"] = $list_groups[$loop]["cn"]; $autres[$m]["description"] = $list_groups[$loop]["description"]; $m++; } } // Affichage des boites de slection des groupes + choix d'un user spcifique ?> "; echo "\n"; echo "\n"; echo ""; echo "
\n"; for ($loop=0; $loop < count ($classe) ; $loop++) { echo "\n"; echo "\n"; echo ""; echo "
"; echo "
"; echo "
"; //echo "
"; //echo "

Utilisateurs en depassement de quota : "; //echo "

"; // echo "
"; if ($partition<>"") { //AFFICHAGE DES RESULTATS echo "
"; //tableau des quotas: un tableau par groupe selection if ($classe_gr=="" and $equipe_gr=="" and $matiere_gr == "" and $autres_gr=="" and $user=="") { //si aucun filtre echo "

".gettext("Le traitement des quotas pour la totalité de l'annuaire est en cours: veuillez patienter...")."

"; echo "

Période de grâce actuelle sur $partition : "; system("sudo repquota $partition|grep \"Block grace time\"|cut -b19-25|sed -e \"s/ //g\"|sed -e \"s/days/ jour(s)/g\"|sed -e \"s/;//g\""); echo "

"; echo "

".gettext("Liste de tous les quotas actuels sur")." $partition :

"; echo "\n"; echo ""; //filtre pour garder les lignes intressantes: suppr entte du script repquota_filtre.sh <=> les 7 1res lignes! //le script lui, filtre certains utilisateurs comme : root, www-se3 et trie par ordre alpha => voir commentaires script exec("sudo /usr/share/se3/scripts/repquota_filtre.sh $partition |tail +7 >/tmp/quota_filtre"); //filtre les tabulations et les remplace par les balises du tableau //pour pouvoir mettre la couleur orange des qu'il y a un nombre, je la mets par defaut et la trnnsforme en rouge si delai expire, en transparent si on a un tiret: obligatoire car il y a plein de tiret dans le tableau non distingables if ($partition=="/home"){ //affiche lien vers statistiques d'occupation pour /home //filtre les tabulations et les remplace par les balises du tableau //pour pouvoir mettre la couleur orange des qu'il y a un nombre, je la mets par defaut et la trnnsforme en rouge si delai expire, en transparent si on a un tiret: obligatoire car il y a plein de tiret dans le tableau non distingables exec("cat /tmp/quota_filtre|gawk -F \"\t\" '{print \"\"}'| sed -e \"s+#FF8C00>Expire+#FF0000>Expir\é+g\" | sed -e \"s+\"}'| sed -e \"s+#FF8C00>Expire+#FF0000>Expir\é+g\" | sed -e \"s+
\" $1 \" \" $2 \" \" $3 \"\" $5 \"
-+-+g\" > /tmp/result_quota"); exec("sed -i /tmp/result_quota -e \"s!REPERE1 !popuprecherche(\'stats_user.php?partition=$partition\&uid=!\""); exec("sed -i /tmp/result_quota -e \"s! REPERE2!','popuprecherche','width=800,height=500');!\""); system("cat /tmp/result_quota"); exec("rm /tmp/result_quota"); } else { //pas de lien car script stat_user.sh non valide sur /var/se3 system("cat /tmp/quota_filtre|gawk -F \"\t\" '{print \"
\" $1 \" \" $2 \" \" $3 \"\" $5 \"
-+-+g\""); } echo "
"; } else { //si il y a eu une demande de filtrage //concatne tous les groupes cherchs dans le tableau liste_sel $i =0; $liste_sel = array(); for ($loop=0; $loop < count ($classe_gr) ; $loop++) { $liste_sel[$i] = $classe_gr[$loop]; $i++; } for ($loop=0; $loop < count ($equipe_gr) ; $loop++) { $liste_sel[$i] = $equipe_gr[$loop]; $i++; } for ($loop=0; $loop < count ($matiere_gr) ; $loop++) { $liste_sel[$i] = $matiere_gr[$loop]; $i++; } for ($loop=0; $loop < count ($autres_gr) ; $loop++) { $liste_sel[$i] = $autres_gr[$loop]; $i++; } $liste_sel[$i] = $user; //cherche user pour savoir s'il existe ensuite $tabresult=search_people("uid=$user"); echo "

Période de grâce actuelle sur $partition : "; system("sudo repquota $partition|grep \"Block grace time\"|cut -b19-25|sed -e \"s/ //g\"|sed -e \"s/days/ jours/g\"|sed -e \"s/;//g\""); echo "

"; //affiche tous les tableaux demands foreach ($liste_sel as $grp){ //TESTE si $user EXISTE OU si $grp est un utilisateur d'un groupe (et non $user) => il faut afficher le tableau! if(count($tabresult)!=0 or $grp!=$user){ if ($grp!=$user){ echo "

Liste des quotas actuels sur $partition pour $grp :

"; } else { echo "

Quota actuel sur $partition pour l'utilisateur $grp :

"; } echo "\n"; echo ""; //filtre pour garder les lignes intressantes: suppr entte du script repquota_filtre.sh <=> les 7 1res lignes! //le script lui, filtre certains utilisateurs comme : root, www-se3 et trie par ordre alpha => voir commentaires script //filtre les tabulations et les remplace par les balises du tableau exec("sudo /usr/share/se3/scripts/repquota_filtre.sh $partition $grp|tail +7 > /tmp/quota_filtre "); //filtre les tabulations et les remplace par les balises du tableau //pour pouvoir mettre la couleur orange des qu'il y a un nombre, je la mets par defaut et la trnnsforme en rouge si delai expire, en transparent si on a un tiret if ($partition=="/home"){ //affiche lien vers statistiques d'occupation sur /home exec("cat /tmp/quota_filtre|gawk -F \"\t\" '{print \"\"}'| sed -e \"s+#FF8C00>Expire+#FF0000>Expir\é+g\" | sed -e \"s+\"}'| sed -e \"s+#FF8C00>Expire+#FF0000>Expir\é+g\" | sed -e \"s+
\" $1 \" \" $2 \" \" $3 \"\" $5 \"
-+-+g\" > /tmp/result_quota"); exec("sed -i /tmp/result_quota -e \"s!REPERE1 !popuprecherche(\'stats_user.php?partition=$partition\&uid=!\""); exec("sed -i /tmp/result_quota -e \"s! REPERE2!','popuprecherche','width=800,height=500');!\""); system("cat /tmp/result_quota"); exec("rm /tmp/result_quota"); } else { //pas de stat sur /var/se3 car script stat_user.sh non valide pour cette partition system("cat /tmp/quota_filtre|gawk -F \"\t\" '{print \"
\" $1 \" \" $2 \" \" $3 \"\" $5 \"
-+-+g\""); } echo "
"; } else { //si utilisateur non valide if ($user != "") echo "

".gettext("L'utilisateur spécifié")." \"$user\" ".gettext("n'est pas valide!")."

"; } }//fin du foreach ($liste_sel... }//fin du else du if ($classe_gr=="" and $equipe_gr=="" and $autres_gr=="" and $user=="") //SUPPRIME LE FICHIER TEMPORAIRE quota_filtre CREE: exec("rm /tmp/quota_filtre"); //fin de visualisation des quotas demande }//fin du if($partition <> "") et donc de l'affichage des tableaux include ("pdp.inc.php"); ?>