[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 6 * Permet de supprimer un partage Classe 7 * @Version $Id: delete_folders_classes.php 6176 2011-02-27 23:00:23Z dbo $ 8 9 * @Projet LCS / SambaEdu 10 11 * @auteurs jLCF >:> jean-luc.chretien@tice.ac-caen.fr 12 * @auteurs Equipe TICE Crdp de Caen 13 * @auteurs Olivier LECLUSE 14 15 * @Licence Distribue selon les termes de la licence GPL 16 17 * @note Ce script est conserve pour le cas d'un serveur esclave avec repertoires classes deportes (utilise admind) 18 * @note Remplace par rep_classe.php 19 */ 20 21 /** 22 23 * @Repertoire: partages/ 24 * file: delete_folders_classes.php 25 26 */ 27 28 29 30 include "entete.inc.php"; 31 include "ldap.inc.php"; 32 include "ihm.inc.php"; 33 34 require_once ("lang.inc.php"); 35 bindtextdomain('se3-partages',"/var/www/se3/locale"); 36 textdomain ('se3-partages'); 37 38 39 if (is_admin("se3_is_admin",$login)=="Y") { 40 41 echo "<h1>".gettext("Suppression de répertoire classe")."</h1>"; 42 43 // Definition des messages d'alerte 44 $alerte_1="<div class='error_msg'>".gettext("Votre demande de suppression de ressources classes n'a pas été prise en compte car une tâche d'administration est en cours sur le serveur <b>"); 45 $alerte_2=gettext("</b>, veuillez réitérer votre demande plus tard. Si le problème persiste, veuillez contacter le super-utilisateur du serveur SE3.")."</div><BR>\n"; 46 $alerte_3="<div class='error_msg'>".gettext("Votre demande de suppression de ressources classes a échouée. Si le problème persiste, veuillez contacter le super-utilisateur du serveur SE3.")."</div><BR>\n"; 47 48 // Definition des messages d'info 49 $info_1 = gettext("Cette tâche est ordonnancée, vous recevrez un mail de confirmation de suppression de ressources dans quelques instants..."); 50 51 // Prepositionnement variables 52 $mono_srv = false; 53 $multi_srv = false; 54 // Recherche de la nature mono ou multi serveur de la plateforme SE3 55 $master=search_machines ("(l=maitre)", "computers"); 56 $slaves= search_machines ("(l=esclave)", "computers"); 57 if ( count($master) == 0 ) { 58 echo gettext("<P>ERREUR : Il n'y a pas de serveur maitre déclaré dans l'annuaire ! <BR>Veuillez contacter le super utilisateur du serveur SE3.</P>"); 59 } elseif ( count($master) == 1 && count($slaves) == 0 ) { 60 // Plateforme mono-serveur 61 $mono_srv = true; 62 } elseif ( count($master) == 1 && count($slaves) > 0 ) { 63 $multi_srv = true; 64 } 65 66 // Fin Recherche de la nature mono ou multi serveur de la plateforme SE3 67 if ( $mono_srv ) { 68 // configuration mono serveur : determination des parametres du serveur 69 $serveur=search_machines ("(l=maitre)", "computers"); 70 $cn_srv= $serveur[0]["cn"]; 71 $stat_srv = $serveur[0]["l"]; 72 $ipHostNumber = $serveur[0]["ipHostNumber"]; 73 } elseif ($multi_srv) { 74 // configuration multi-serveurs : presentation d'un form de selection du serveur 75 if ( !$selected_srv && !$del_folders_classes) { 76 echo "<P><H3>".gettext("Sélection du serveur ou vous souhaitez supprimer des ressources classes:")." </H3>"; 77 $servers=search_computers ("(|(l=esclave)(l=maitre))"); 78 echo "<form action=\"delete_folders_classes.php\" method=\"post\">\n"; 79 for ($loop=0; $loop < count($servers); $loop++) { 80 echo $servers[$loop]["description"]." ".$servers[$loop]["cn"]." <input type=\"radio\" name=\"cn_srv\" value =\"".$servers[$loop]["cn"]."\""; 81 if ($loop==0) echo "checked"; 82 echo "><BR>\n"; 83 } 84 85 $form="<input type=\"reset\" value=\"".gettext("Réinitialiser la sélection")."\">\n"; 86 $form ="<input type=\"hidden\" name=\"selected_srv\" value=\"true\">\n"; 87 $form.="<input type=\"submit\" value=\"".gettext("Valider")."\">\n"; 88 $form.="</form>\n"; 89 echo $form; 90 91 } elseif ( $selected_srv && $multi_srv) { 92 // configuration multi serveurs : determination des parametres du serveur 93 $serveur=search_machines ("(cn=$cn_srv)", "computers"); 94 $stat_srv = $serveur[0]["l"]; 95 $ipHostNumber = $serveur[0]["ipHostNumber"]; 96 } 97 } 98 99 // Recherche des ressources classes existantes 100 if ($stat_srv == "maitre") { 101 // Serveur maitre : Recherche des ressources classes existantes 102 // ouverture du repertoire Classes 103 $loop=0; 104 $repClasses = dir ("/var/se3/Classes/"); 105 // recuperation de chaque entree 106 while ($ressource = $repClasses->read()) { 107 if ( preg("/^Classe_/", $ressource) ) { 108 $list_ressources[$loop]= $ressource; 109 $loop++; 110 } 111 } 112 113 $repClasses->close(); 114 } elseif ($stat_srv == "esclave") { 115 // Serveur esclave : Recherche des ressources classes existantes 116 exec ("ssh -l remote_adm $ipHostNumber 'ls /var/se3/Classes'", $list_ressources, $ReturnValue); 117 } 118 // Fin Recherche des ressources classes existantes 119 120 // Presentaion du formulaire de selection des ressources a supprimer 121 if ( (!$del_folders_classes && ($stat_srv == "maitre" || $stat_srv == "esclave") ) || ( $del_folders_classes && count($list_del_classes)==0 ) ) { 122 echo "<H3>".gettext("Suppression de ressources Classes sur le serveur "). "$cn_srv</H3>\n"; 123 if (count($list_ressources) == 0 ) { 124 echo "<P>".gettext("Pas de ressources a supprimer sur ce serveur !")."</P>\n"; 125 } else { 126 if ( count($list_ressources)>10) $size=10; else $size=count($list_ressources); 127 echo "<form action=\"delete_folders_classes.php\" method=\"post\">\n"; 128 echo "<P>".gettext("Sélectionnez les ressources classes à supprimer :")."<BR>\n"; 129 // Affichage liste des ressources a supprimer 130 echo "<select size=\"".$size."\" name=\"list_del_classes[]\" multiple=\"multiple\">\n"; 131 for ($loop=0; $loop<count($list_ressources);$loop++) { 132 echo "<option value=".$list_ressources[$loop].">".$list_ressources[$loop]."\n"; 133 } 134 echo "</select><br>\n"; 135 echo "<input type=\"hidden\" name=\"del_folders_classes\" value=\"true\">\n"; 136 echo "<input type=\"hidden\" name=\"cn_srv\" value=\"$cn_srv\">\n"; 137 echo "<input type=\"hidden\" name=\"stat_srv\" value=\"$stat_srv\">\n"; 138 echo "<input type=\"hidden\" name=\"ipHostNumber\" value=\"$ipHostNumber\">\n"; 139 echo "<input type=\"reset\" value=\"".gettext("Réinitialiser la sélection")."\">\n"; 140 echo "<input type=\"submit\" value=\"Valider\" onclick= \"return getconfirm();\">\n"; 141 echo "</form>\n"; 142 143 // Verification selection d'au moins une classe 144 if ( $del_folders_classes && count($list_del_classes)==0 ) { 145 echo "<div class='error_msg'>".gettext("Vous devez sélectionner au moins une classe !")."</div>\n"; 146 } 147 } 148 } elseif ($del_folders_classes) { 149 150 // Creation du script bash 151 echo "<h3>".gettext("Vous avez sélectionné "). count($list_del_classes).gettext(" classe(s) à supprimer sur le serveur")." $stat_srv <b>$cn_srv</b></h3>\n"; 152 // Construction du script admin.sh 153 $path_Classes="/var/se3/Classes"; 154 $commandes = "#!/bin/bash\n"; 155 $commandes .="#".gettext(" Effacement repertoire(s) Classe")." \n"; 156 $commandes .="cd $path_Classes\n"; 157 for ($loop=0; $loop<count($list_del_classes); $loop++) { 158 if ($list_del_classes[$loop]) $commandes .="rm -R ".$list_del_classes[$loop]."\n"; 159 } 160 161 // mel CR de suppression ressources Classes 162 $Subject=gettext("[SE3 Tâche d'administration] Suppression de ressources Classes")."\n"; 163 list($user,$groups)=people_get_variables("admin", true); 164 $mel_adm=$user["email"]; 165 166 $commandes.="\n#".gettext("Mel CR suppression de ressources Classes")."\n"; 167 $commandes.="cat > /tmp/admind.tmp <<-EOF\n"; 168 $commandes.= gettext("La suppression des ressources Classes suivantes :\n"); 169 170 for ($loop=0; $loop < count($list_del_classes); $loop++) { 171 $commandes.=$list_del_classes[$loop]."\n"; 172 } 173 $commandes.= gettext("sur le serveur")." $cn_srv ".gettext("a été effectuée avec succès.")."\n"; 174 $commandes.= "\n"; 175 $commandes.= "EOF\n"; 176 $commandes.= "mail -s \"$Subject\" $mel_adm < /tmp/admind.tmp\n"; 177 178 // Depot du script tmp_$stat_srv.sh sur le serveur maitre 179 $fp=@fopen("/var/remote_adm/tmp_".$stat_srv.".sh","w"); 180 if($fp) { 181 fputs($fp,$commandes."\n"); 182 fclose($fp); 183 chmod ("/var/remote_adm/tmp_$stat_srv.sh", 0600); 184 // Si creation sur le maitre 185 if ( $stat_srv == "maitre" ) { 186 // Si pas de presence de admin.sh 187 if ( !is_file("/var/remote_adm/admin.sh") ) { 188 // Renommage et chmod +x du script sur le maitre 189 rename ("/var/remote_adm/tmp_".$stat_srv.".sh", "/var/remote_adm/admin.sh"); 190 chmod ("/var/remote_adm/admin.sh", 0700); 191 if (file_exists("/var/remote_adm/admin.sh")) 192 echo $info_1; 193 else echo $alerte_3; 194 } else { 195 196 // Message d'alerte : Presence d'un admin.sh !! 197 echo $alerte_1.$stat_srv." ".$cn_srv.$alerte_2; 198 } 199 200 // Si creation sur un esclave copie du maitre vers l'esclave 201 } elseif ( $stat_srv == "esclave" ) { 202 203 // Recherche de la presence d'un admin.sh sur le serveur esclave 204 exec ("ssh -l remote_adm $ipHostNumber 'ls /var/remote_adm/admin.sh'", $AllOutput, $ReturnValue); 205 // Si pas de presence de admin.sh sur l'esclave 206 if (! $AllOutput[0]) { 207 // Copie du script sur l'esclave avec scp 208 exec ("/usr/bin/scp /var/remote_adm/tmp_$stat_srv.sh remote_adm@$ipHostNumber:tmp_$stat_srv.sh", $AllOutput, $ReturnValue); 209 // chmod +x , renommage du script bash et gogogo 210 exec ("ssh -l remote_adm $ipHostNumber 'chmod +x /var/remote_adm/tmp_$stat_srv.sh;mv /var/remote_adm/tmp_$stat_srv.sh /var/remote_adm/admin.sh'", $AllOutput, $ReturnValue); 211 if ($ReturnValue==0) { 212 // Effacement de tmp_esclave.sh cree sur le maitre 213 unlink ("/var/remote_adm/tmp_esclave.sh"); 214 echo $info_1; 215 }else echo $alerte_3; 216 } else { 217 218 // Message d'alerte : Presence d'un admin.sh sur l'esclave!! 219 echo $alerte_1.$stat_srv." ".$cn_srv.$alerte_2; 220 } 221 } 222 } else { 223 echo "<div class='error_msg'>".gettext("ERREUR : Impossible de créer le fichier"). "$path_to_wwwse3/Admin/tmp_$stat_srv</div>\n"; 224 } 225 226 } // Fin creation du script bash 227 } // Fin if is_admin 228 include ("pdp.inc.php"); 229 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |