[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/partages/ -> delete_share.php (source)

   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 &#233;t&#233; prise en compte car une t&#226;che d'administration est en cours sur le serveur <b>\n");
  52          $alerte_2=gettext("</b>, veuillez r&#233;it&#233;rer votre demande plus tard. Si le probl&#232;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 &#233;chou&#233;e. Si le probl&#232;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 &#224; supprimer sur le serveur")." <b>$cn_srv</b> !</div>\n";
  55          // Definition des messages d'info
  56          $info_1 = gettext("Cette t&#226;che est ordonnanc&#233e, 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&#233lection 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"]."&nbsp;<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&#233initialiser la s&#233lection")."\">\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&#233lection du partage &#224 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&#233lectionnez le partage &#224 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&#233initialiser la s&#233lection")."\">\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&#226;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 &#233;t&#233; effectu&#233;e avec succ&#232;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."&nbsp;".$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."&nbsp;".$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&#233er le fichier d'ordonnancement de cr&#233ation de ressources classes !"). "</div>\n";
 227                  }
 228          } // Fin elseif (  $End_ph1 &&  $stat_srv ) {
 229  } // Fin if is_admin
 230    include ("pdp.inc.php");


Generated: Tue Mar 17 22:47:18 2015 Cross-referenced by PHPXref 0.7.1