:> jean-luc.chretien@tice.ac-caen.fr * @auteurs Equipe TICE Crdp de Caen * @auteurs Olivier LECLUSE * @Licence Distribue selon les termes de la licence GPL * @note */ /** * @Repertoire: partages/ * file: delete_share.php */ include "entete.inc.php"; include "ldap.inc.php"; include "ihm.inc.php"; require_once ("lang.inc.php"); bindtextdomain('se3-partages',"/var/www/se3/locale"); textdomain ('se3-partages'); foreach ($_POST as $cle=>$val) { $$cle = $val; } if (is_admin("se3_is_admin",$login)=="Y") { //aide $_SESSION["pageaide"]="Ressources_et_partages"; echo "

".gettext("Suppression de partage")."

"; // Definition des messages d'alerte $alerte_1="
\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 \n"); $alerte_2=gettext(", veuillez réitérer votre demande plus tard. Si le problème persiste, veuillez contacter le super-utilisateur du serveur SE3.")."

\n"; $alerte_3="
".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.")."

\n"; $alerte_4="
".gettext("Il n'y a pas de partage à supprimer sur le serveur")." $cn_srv !
\n"; // Definition des messages d'info $info_1 = gettext("Cette tâche est ordonnancée, vous recevrez un mail de confirmation de suppression dans quelques instants..."); if ( mono_srv() ) { // configuration mono serveur : determination des parametres du serveur $serveur=search_machines ("(l=maitre)", "computers"); $cn_srv= $serveur[0]["cn"]; $stat_srv = $serveur[0]["l"]; $ipHostNumber = $serveur[0]["ipHostNumber"]; } else { // configuration multi-serveurs : presentation d'un form de selection du serveur if ( !$selected_srv && !$End_ph1) { echo "

".gettext("Sélection du serveur ou vous souhaitez supprimer un partage :")."

\n"; $servers=search_computers ("(|(l=esclave)(l=maitre))"); echo "
\n"; for ($loop=0; $loop < count($servers); $loop++) { echo $servers[$loop]["description"]." ".$servers[$loop]["cn"]." 
\n"; } $form="\n"; $form ="\n"; $form.="\n"; $form.="
\n"; echo $form; } else { // Determination des parametres du serveur cible dans le cas d'une conf multi-serveurs $serveur=search_machines ("(cn=$cn_srv)", "computers"); $stat_srv = $serveur[0]["l"]; $ipHostNumber = $serveur[0]["ipHostNumber"]; } } // Fin selection et recherche des caracteristiques du serveur // Phase 1 : Selection du partage a supprimer if ( !$End_ph1 && $stat_srv ) { echo "

".gettext("Suppression d'un partage sur")." $cn_srv :

\n"; echo "
".gettext("[Phase1] Sélection du partage à supprimer :")."
\n"; // Recherche de la liste des partages supprimables if ( $stat_srv == "maitre" ) { // Cas d'un serveur maitre exec ("/bin/grep \"# dans $AllOutPut for ($loop=0; $loop> ".htmlentities($ShareName[$loop])."
"; } // Presentation du form de selection du partage a supprimer $form = "
\n"; $form .= "

".gettext("Sélectionnez le partage à supprimer :")."

\n"; // Affichage liste des partageses a supprimer $form .= "
\n"; $form .= "\n"; $form .= "\n"; $form .= "\n"; $form .= "\n"; $form .= "

\n"; $form .= "

\n"; $form .= "
\n"; echo $form; // Fin presentation du form de selection du partage a supprimer } } elseif ( $End_ph1 && $stat_srv ) { // Phase 2 : Preparation du script admind.sh echo "

".gettext("Suppresion du partage")." $del_sharename ".gettext("sur")." $cn_srv :

\n"; echo "
".gettext("[Phase 2] :")."
\n"; // Creation du script bash pour admind $commandes = "#!/bin/bash\n"; $commandes .= "SMBCONF=/etc/samba/smb_etab.conf\n"; $commandes .= "SHARENAME=$del_sharename\n"; $commandes .= "mv \$SMBCONF \$SMBCONF.share_orig\n"; $commandes .= "test=true\n"; $commandes .= "share=false\n"; #=========================================================== # AJOUT: 19/02/2006 #$commandes .= "cat \$SMBCONF.share_orig | grep -B1000 \"include = /etc/samba/printers_se3/%m.inc\" > /etc/samba/smb.conf\n"; #$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"; #=========================================================== #$commandes .= "cat \$SMBCONF.share_orig | while (\$test)\n"; $commandes .= "cat \$SMBCONF.share_orig | while (\$test)\n"; $commandes .= "do\n"; $commandes .= " read ligne || test=false\n"; $commandes .= " if [ \$test = false ]; then\n"; $commandes .= " exit 0;\n"; $commandes .= " fi\n"; $commandes .= " if [ \"\$ligne\" = \"#<\$SHARENAME>\" ]; then\n"; $commandes .= " share=true\n"; $commandes .= " fi\n"; $commandes .= " if [ \$share = false ]; then\n"; $commandes .= " notab=false\n"; $commandes .= " echo \$ligne | grep \"\[\" > /dev/null && notab=true\n"; $commandes .= " echo \$ligne | grep \"#\" > /dev/null && notab=true\n"; $commandes .= " if [ \$notab = true ]; then\n"; $commandes .= " echo \"\$ligne\" >>\$SMBCONF\n"; $commandes .= " else\n"; $commandes .= " echo \" \$ligne\" >>\$SMBCONF\n"; $commandes .= " fi\n"; $commandes .= " fi\n"; $commandes .= " if [ \"\$ligne\" = \"#\" ]; then\n"; $commandes .= " share=false\n"; $commandes .= " fi\n"; $commandes .= "done\n"; // mel CR de creation ressources Classes $Subject=gettext("[SE3 Tâche d'administration] Suppresion d'un partage\n"); list($user,$groups)=people_get_variables("admin", true); $mel_adm=$user["email"]; $commandes.="\n#".gettext("Mel CR Suppresion d'un partage")."\n"; $commandes.="cat > /tmp/admind.tmp <<-EOF\n"; $commandes.= gettext("La suppression du partage")." $del_sharename\n"; $commandes.= gettext("sur le serveur")." $cn_srv ".gettext("a été effectuée avec succès.\n"); $commandes.= "\n"; $commandes.= "EOF\n"; $commandes.= "mail -s \"$Subject\" $mel_adm < /tmp/admind.tmp\n"; // Fin Preparation du script admind.sh // Creation du script tmp_$stat_srv.sh sur le serveur maitre $fp=@fopen("/var/remote_adm/tmp_".$stat_srv.".sh","w"); if($fp) { fputs($fp,$commandes."\n"); fclose($fp); chmod ("/var/remote_adm/tmp_$stat_srv.sh", 0600); // Si creation sur le maitre if ( $stat_srv == "maitre" ) { // Si pas de presence de admin.sh if ( !is_file("/var/remote_adm/admin.sh") ) { // Renommage et chmod +x du script sur le maitre rename ("/var/remote_adm/tmp_".$stat_srv.".sh", "/var/remote_adm/admin.sh"); chmod ("/var/remote_adm/admin.sh", 0750); if (file_exists("/var/remote_adm/admin.sh")) echo $info_1; else echo $alerte_3; } else { // Message d'alerte : Presence d'un admin.sh !! echo $alerte_1.$stat_srv." ".$cn_srv.$alerte_2; } // Si creation sur un esclave } elseif ( $stat_srv == "esclave" ) { // Copie du maitre vers l'esclave // Recherche de la presence d'un admin.sh sur le serveur esclave exec ("ssh -l remote_adm $ipHostNumber 'ls /var/remote_adm/admin.sh'", $AllOutput, $ReturnValue); # echo "DEBUG >> ssh -v -l remote_adm $ipHostNumber 'ls /var/remote_adm/admin.sh'
"; // Si pas de presence de admin.sh sur l'esclave if (! $AllOutput[0]) { // Copie du script sur l'esclave avec scp exec ("/usr/bin/scp /var/remote_adm/tmp_$stat_srv.sh remote_adm@$ipHostNumber:tmp_$stat_srv.sh", $AllOutput, $ReturnValue); # echo "DEBUG >> /usr/bin/scp /var/remote_adm/tmp_$stat_srv.sh remote_adm@$ipHostNumber:tmp_$stat_srv.sh
"; // chmod +x , renommage du script bash 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); if ($ReturnValue==0) { // Effacement de tmp_esclave.sh cree sur le maitre unlink ("/var/remote_adm/tmp_esclave.sh"); echo $info_1; } else echo $alerte_3; } else { // Message d'alerte : Presence d'un admin_esclave.sh !! echo $alerte_1.$stat_srv." ".$cn_srv.$alerte_2; } } // Fin elseif ( $stat_srv == "esclave" ) } else { // Fin if ($fp) echo "
".gettext("ERREUR : Impossible de créer le fichier d'ordonnancement de création de ressources classes !"). "
\n"; } } // Fin elseif ( $End_ph1 && $stat_srv ) { } // Fin if is_admin include ("pdp.inc.php");