[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
1 <?php 2 3 4 /** 5 6 * Permet de supprimer un partage 7 * @Version $Id: delete_share.php 5594 2010-06-04 21:03:07Z keyser $ 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 18 19 */ 20 21 /** 22 23 * @Repertoire: partages/ 24 * file: delete_share.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 foreach ($_POST as $cle=>$val) { 39 $$cle = $val; 40 } 41 42 if (is_admin("se3_is_admin",$login)=="Y") { 43 44 45 //aide 46 $_SESSION["pageaide"]="Ressources_et_partages"; 47 48 echo "<h1>".gettext("Suppression de partage")."</h1>"; 49 50 // Definition des messages d'alerte 51 $alerte_1="<div class='error_msg'>\n".gettext("Votre demande de suppression d'un partage n'a pas été prise en compte car une tâche d'administration est en cours sur le serveur <b>\n"); 52 $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"; 53 $alerte_3="<div class='error_msg'>".gettext("Votre demande suppression d'un partage d'unpartage a échouée. Si le problème persiste, veuillez contacter le super-utilisateur du serveur SE3.")."</div><BR>\n"; 54 $alerte_4="<div class='error_msg'>".gettext("Il n'y a pas de partage à supprimer sur le serveur")." <b>$cn_srv</b> !</div>\n"; 55 // Definition des messages d'info 56 $info_1 = gettext("Cette tâche est ordonnancée, vous recevrez un mail de confirmation de suppression dans quelques instants..."); 57 58 if ( mono_srv() ) { 59 // configuration mono serveur : determination des parametres du serveur 60 $serveur=search_machines ("(l=maitre)", "computers"); 61 $cn_srv= $serveur[0]["cn"]; 62 $stat_srv = $serveur[0]["l"]; 63 $ipHostNumber = $serveur[0]["ipHostNumber"]; 64 } else { 65 // configuration multi-serveurs : presentation d'un form de selection du serveur 66 if ( !$selected_srv && !$End_ph1) { 67 echo "<H3>".gettext("Sélection du serveur ou vous souhaitez supprimer un partage :")." </H3>\n"; 68 $servers=search_computers ("(|(l=esclave)(l=maitre))"); 69 echo "<form action=\"delete_share.php\" method=\"post\">\n"; 70 for ($loop=0; $loop < count($servers); $loop++) { 71 echo $servers[$loop]["description"]." ".$servers[$loop]["cn"]." <input type=\"radio\" name=\"cn_srv\" value =\"".$servers[$loop]["cn"]."\""; 72 if ($loop==0) echo "checked"; 73 echo "><BR>\n"; 74 } 75 $form="<input type=\"reset\" value=\"".gettext("Réinitialiser la sélection")."\">\n"; 76 $form ="<input type=\"hidden\" name=\"selected_srv\" value=\"true\">\n"; 77 $form.="<input type=\"submit\" value=\"".gettext("Valider")."\">\n"; 78 $form.="</form>\n"; 79 echo $form; 80 } else { 81 // Determination des parametres du serveur cible dans le cas d'une conf multi-serveurs 82 $serveur=search_machines ("(cn=$cn_srv)", "computers"); 83 $stat_srv = $serveur[0]["l"]; 84 $ipHostNumber = $serveur[0]["ipHostNumber"]; 85 } 86 } 87 // Fin selection et recherche des caracteristiques du serveur 88 // Phase 1 : Selection du partage a supprimer 89 if ( !$End_ph1 && $stat_srv ) { 90 echo "<h3>".gettext("Suppression d'un partage sur")." $cn_srv : </h3>\n"; 91 echo "<h6>".gettext("[Phase1] Sélection du partage à supprimer :")."</h6>\n"; 92 // Recherche de la liste des partages supprimables 93 if ( $stat_srv == "maitre" ) { 94 // Cas d'un serveur maitre 95 exec ("/bin/grep \"#</\" /etc/samba/smb_etab.conf", $AllOutPut, $ReturnValueShareName); 96 } else { 97 // Cas d'un serveur esclave 98 exec ("ssh -l remote_adm $ipHostNumber '/bin/grep \"#</\" /etc/samba/smb.conf'", $AllOutPut, $ReturnValueShareName); 99 } 100 // Fin recherche de la liste des partages supprimables 101 if ( $ReturnValueShareName != 0 ) { 102 // Il n'y a pas de partages supprimables 103 echo $alerte_4; 104 } else { 105 // Nettoyage des balises <> dans $AllOutPut 106 for ($loop=0; $loop<count ($AllOutPut); $loop++) { 107 $ShareName[$loop] = substr($AllOutPut[$loop],3,strlen($AllOutPut[$loop])-4); 108 #echo "DEBUG >> ".htmlentities($ShareName[$loop])."<br>"; 109 } 110 // Presentation du form de selection du partage a supprimer 111 $form = "<form action=\"delete_share.php\" method=\"post\">\n"; 112 $form .= "<p>".gettext("Sélectionnez le partage à supprimer :")."</p>\n"; 113 // Affichage liste des partageses a supprimer 114 $form .= "<select size=\"".$size."\" name=\"del_sharename\">\n"; 115 for ($loop=0; $loop<count($ShareName);$loop++) { 116 $form .= "<option value=".$ShareName[$loop].">".$ShareName[$loop]."\n"; 117 } 118 $form .= "</select><br>\n"; 119 $form .= "<input type=\"hidden\" name=\"cn_srv\" value=\"$cn_srv\">\n"; 120 $form .= "<input type=\"hidden\" name=\"stat_srv\" value=\"$stat_srv\">\n"; 121 $form .= "<input type=\"hidden\" name=\"ipHostNumber\" value=\"$ipHostNumber\">\n"; 122 $form .= "<input type='hidden' value='true' name='End_ph1'>\n"; 123 $form .= "<p></p><input type=\"reset\" value=\"".gettext("Réinitialiser la sélection")."\">\n"; 124 $form .= "<input type=\"submit\" value=\"Valider\" onclick= \"return getconfirm();\"></p></p>\n"; 125 $form .= "</form>\n"; 126 echo $form; 127 // Fin presentation du form de selection du partage a supprimer 128 } 129 } elseif ( $End_ph1 && $stat_srv ) { 130 // Phase 2 : Preparation du script admind.sh 131 echo "<H3>".gettext("Suppresion du partage")." $del_sharename ".gettext("sur")." $cn_srv : </h3>\n"; 132 echo "<H6>".gettext("[Phase 2] :")."</h6>\n"; 133 // Creation du script bash pour admind 134 $commandes = "#!/bin/bash\n"; 135 $commandes .= "SMBCONF=/etc/samba/smb_etab.conf\n"; 136 $commandes .= "SHARENAME=$del_sharename\n"; 137 $commandes .= "mv \$SMBCONF \$SMBCONF.share_orig\n"; 138 $commandes .= "test=true\n"; 139 $commandes .= "share=false\n"; 140 #=========================================================== 141 # AJOUT: 19/02/2006 142 #$commandes .= "cat \$SMBCONF.share_orig | grep -B1000 \"include = /etc/samba/printers_se3/%m.inc\" > /etc/samba/smb.conf\n"; 143 #$commandes .= "cat \$SMBCONF.share_orig | grep -A1000 \"include = /etc/samba/printers_se3/%m.inc\" | grep -v \"include = /etc/samba/printers_se3/%m.inc\" > /etc/samba/fin_du_smb.conf\n"; 144 #=========================================================== 145 #$commandes .= "cat \$SMBCONF.share_orig | while (\$test)\n"; 146 $commandes .= "cat \$SMBCONF.share_orig | while (\$test)\n"; 147 $commandes .= "do\n"; 148 $commandes .= " read ligne || test=false\n"; 149 $commandes .= " if [ \$test = false ]; then\n"; 150 $commandes .= " exit 0;\n"; 151 $commandes .= " fi\n"; 152 $commandes .= " if [ \"\$ligne\" = \"#<\$SHARENAME>\" ]; then\n"; 153 $commandes .= " share=true\n"; 154 $commandes .= " fi\n"; 155 $commandes .= " if [ \$share = false ]; then\n"; 156 $commandes .= " notab=false\n"; 157 $commandes .= " echo \$ligne | grep \"\[\" > /dev/null && notab=true\n"; 158 $commandes .= " echo \$ligne | grep \"#\" > /dev/null && notab=true\n"; 159 $commandes .= " if [ \$notab = true ]; then\n"; 160 $commandes .= " echo \"\$ligne\" >>\$SMBCONF\n"; 161 $commandes .= " else\n"; 162 $commandes .= " echo \" \$ligne\" >>\$SMBCONF\n"; 163 $commandes .= " fi\n"; 164 $commandes .= " fi\n"; 165 $commandes .= " if [ \"\$ligne\" = \"#</\$SHARENAME>\" ]; then\n"; 166 $commandes .= " share=false\n"; 167 $commandes .= " fi\n"; 168 $commandes .= "done\n"; 169 // mel CR de creation ressources Classes 170 $Subject=gettext("[SE3 Tâche d'administration] Suppresion d'un partage\n"); 171 list($user,$groups)=people_get_variables("admin", true); 172 $mel_adm=$user["email"]; 173 $commandes.="\n#".gettext("Mel CR Suppresion d'un partage")."\n"; 174 $commandes.="cat > /tmp/admind.tmp <<-EOF\n"; 175 $commandes.= gettext("La suppression du partage")." $del_sharename\n"; 176 $commandes.= gettext("sur le serveur")." $cn_srv ".gettext("a été effectuée avec succès.\n"); 177 $commandes.= "\n"; 178 $commandes.= "EOF\n"; 179 $commandes.= "mail -s \"$Subject\" $mel_adm < /tmp/admind.tmp\n"; 180 // Fin Preparation du script admind.sh 181 182 // Creation du script tmp_$stat_srv.sh sur le serveur maitre 183 $fp=@fopen("/var/remote_adm/tmp_".$stat_srv.".sh","w"); 184 if($fp) { 185 fputs($fp,$commandes."\n"); 186 fclose($fp); 187 chmod ("/var/remote_adm/tmp_$stat_srv.sh", 0600); 188 // Si creation sur le maitre 189 if ( $stat_srv == "maitre" ) { 190 // Si pas de presence de admin.sh 191 if ( !is_file("/var/remote_adm/admin.sh") ) { 192 // Renommage et chmod +x du script sur le maitre 193 rename ("/var/remote_adm/tmp_".$stat_srv.".sh", "/var/remote_adm/admin.sh"); 194 chmod ("/var/remote_adm/admin.sh", 0750); 195 if (file_exists("/var/remote_adm/admin.sh")) 196 echo $info_1; 197 else echo $alerte_3; 198 } else { 199 // Message d'alerte : Presence d'un admin.sh !! 200 echo $alerte_1.$stat_srv." ".$cn_srv.$alerte_2; 201 } 202 // Si creation sur un esclave 203 } elseif ( $stat_srv == "esclave" ) { 204 // Copie du maitre vers l'esclave 205 // Recherche de la presence d'un admin.sh sur le serveur esclave 206 exec ("ssh -l remote_adm $ipHostNumber 'ls /var/remote_adm/admin.sh'", $AllOutput, $ReturnValue); 207 # echo "DEBUG >> ssh -v -l remote_adm $ipHostNumber 'ls /var/remote_adm/admin.sh'<br>"; 208 // Si pas de presence de admin.sh sur l'esclave 209 if (! $AllOutput[0]) { 210 // Copie du script sur l'esclave avec scp 211 exec ("/usr/bin/scp /var/remote_adm/tmp_$stat_srv.sh remote_adm@$ipHostNumber:tmp_$stat_srv.sh", $AllOutput, $ReturnValue); 212 # echo "DEBUG >> /usr/bin/scp /var/remote_adm/tmp_$stat_srv.sh remote_adm@$ipHostNumber:tmp_$stat_srv.sh<br>"; 213 // chmod +x , renommage du script bash 214 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); 215 if ($ReturnValue==0) { 216 // Effacement de tmp_esclave.sh cree sur le maitre 217 unlink ("/var/remote_adm/tmp_esclave.sh"); 218 echo $info_1; 219 } else echo $alerte_3; 220 } else { 221 // Message d'alerte : Presence d'un admin_esclave.sh !! 222 echo $alerte_1.$stat_srv." ".$cn_srv.$alerte_2; 223 } 224 } // Fin elseif ( $stat_srv == "esclave" ) 225 } else { // Fin if ($fp) 226 echo "<div class='error_msg'>".gettext("ERREUR : Impossible de créer le fichier d'ordonnancement de création de ressources classes !"). "</div>\n"; 227 } 228 } // Fin elseif ( $End_ph1 && $stat_srv ) { 229 } // Fin if is_admin 230 include ("pdp.inc.php");
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 |