[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   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&#233;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 &#233;t&#233; prise en compte car une t&#226;che d'administration est en cours sur le serveur <b>");
  45          $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";
  46          $alerte_3="<div class='error_msg'>".gettext("Votre demande de suppression de ressources classes a &#233;chou&#233;e. Si le probl&#232;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&#226;che est ordonnanc&#233e, 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&#233clar&#233 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&#233lection 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"]."&nbsp;<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&#233initialiser la s&#233lection")."\">\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&#233lectionnez les ressources classes &#224 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&#233initialiser la s&#233lection")."\">\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&#233lectionner 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&#233lectionn&#233 "). count($list_del_classes).gettext(" classe(s)  &#224 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&#226;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 &#233;t&#233; effectu&#233;e avec succ&#232;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."&nbsp;".$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."&nbsp;".$cn_srv.$alerte_2;
 220                         }
 221                  }
 222                } else {
 223                  echo "<div  class='error_msg'>".gettext("ERREUR : Impossible de cr&#233er 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  ?>


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