[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3master/var/www/se3/parcs/ -> delete_parc.php (source)

   1  <?php
   2  
   3  
   4     /**
   5     
   6     * Supprime un  parc
   7     * @Version $Id: delete_parc.php 8307 2014-12-09 10:06:23Z keyser $ 
   8     
   9     * @Projet LCS / SambaEdu 
  10     
  11     * @auteurs Equipe Tice academie de Caen 
  12  
  13     * @Licence Distribue selon les termes de la licence GPL
  14     
  15     * @note 
  16     
  17     */
  18  
  19     /**
  20  
  21     * @Repertoire: parcs/
  22     * file: delete_parc.php
  23  
  24    */    
  25  
  26  
  27  
  28  include "config.inc.php";
  29  include  "entete.inc.php";
  30  include  "ldap.inc.php";
  31  include  "ihm.inc.php";
  32  include  "printers.inc.php";
  33  include "fonc_parc.inc.php";
  34  
  35  // traduction
  36  require_once  ("lang.inc.php");
  37  bindtextdomain('se3-parcs',"/var/www/se3/locale");
  38  textdomain ('se3-parcs');
  39  
  40  
  41  $parc=$_POST['parc'];
  42  $delparc=$_POST['delparc'];
  43  $delete_parc=$_POST['delete_parc'];
  44  $old_computers=$_POST['old_computers'];
  45  $supprime_all=$_POST['supprime_all'];
  46  
  47  
  48  
  49  
  50  /*******************************************************************/
  51  
  52  if (is_admin("computers_is_admin",$login)=="Y") {
  53      //aide
  54      $_SESSION["pageaide"]="Gestion_des_parcs#Suppression_de_machines";
  55      // Titre
  56      echo "<h1>".gettext("Suppression de machine")."</h1>";
  57  
  58      // Affichage du formulaire de selection de parc
  59      if ((!isset($parc)) && ($delparc!=2)) {
  60          // La variable parc est vide on affiche une selecion
  61          // On retourne de choix :
  62          // delparc = 0 on efface des machines du parc
  63          // delparc = 1 on efface tout le parc
  64          echo "<H3>".gettext("S&#233;lection du parc &#224; modifier")."</H3>";
  65          $list_parcs=search_machines("objectclass=groupOfNames","parcs");
  66          if ( count($list_parcs)>0) {
  67              echo "<FORM method=\"post\" action=\"delete_parc.php\">\n"; 
  68              echo "<SELECT NAME=\"delparc\" SIZE=\"1\">\n";
  69              echo "<option value=\"0\">".gettext("Effacer des machines du parc\n"); 
  70              echo "<option value=\"1\">".gettext("Effacer le parc\n");
  71              echo "<option value=\"2\">".gettext("Effacer une machine sans parc\n"); 
  72              echo "</SELECT>\n";
  73              echo "<SELECT NAME=\"parc\" SIZE=\"1\">";
  74              echo "<option value=\"\">S&#233;lectionner\n";
  75              for ($loop=0; $loop < count($list_parcs); $loop++) {
  76                  echo "<option value=\"".$list_parcs[$loop]["cn"]."\">".$list_parcs[$loop]["cn"]."\n";
  77              }
  78              echo "</SELECT>&nbsp;&nbsp;\n";
  79              echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
  80              echo "<u onmouseover=\"return escape".gettext("('<b>Effacer les machines d\'un parc</b> S&#233;lectionner un parc dans lequel vous souhaitez supprimer des machines.<br>La suppression de toutes les machines d\'un parc provoque la suppression du parc.<br><b>Effacer le parc</b> provoque la suppression du parc, mais pas la suppression des machines dans l\'annuaire.<br>Pour supprimer proprement les machines, vous devez aller dans Etat par nom de machine et s&#233;lectionner la machine &#224; supprimer.<br><b>Supprimer une machine sans parc</b> permet de supprimer compl&#233;tement une machine n\'appartenant &#224; aucun parc.')")."\"><img name=\"action_image2\"  src=\"../elements/images/system-help.png\" alt=\"help\"></u> ";
  81              echo "</FORM>\n";
  82          }                     
  83      } else {
  84          // Suppression des machines sans parc
  85          // cas delparc = 2
  86          if ($delparc == "2") {
  87              // Filtrage des noms
  88              echo "<FORM action=\"delete_parc.php\" method=\"post\">\n";
  89              echo "<P>".gettext("Lister les noms contenant: ");
  90              echo "<INPUT TYPE=\"text\" NAME=\"filtrecomp\"\n VALUE=\"$filtrecomp\" SIZE=\"8\">";
  91              echo "<input type=\"hidden\" name=\"delparc\" value=\"2\">\n";
  92              echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
  93              echo "</FORM>\n";
  94              // On recherche les machines sans parc
  95              $list_computer=search_machines("(&(cn=*)(objectClass=ipHost))","computers");
  96              if ( count($list_computer)>0) {
  97                  $form = "<form action=\"delete_parc.php\" method=\"post\">\n";
  98                  $form.="<p>".gettext("S&#233;lectionnez les machines sans parc &#224; supprimer : ")."</p>\n";
  99                  $form.="<p><select size=\"".$size."\" name=\"supprime_all[]\" multiple=\"multiple\">\n";
 100                  for ($loopa=0; $loopa < count($list_computer); $loopa++) {
 101                      if($list_computer[$loopa]["cn"]!=$netbios_name) {
 102                          $exist_parc = search_parcs($list_computer[$loopa]["cn"]);
 103                          // Si pas de parc on affiche
 104                          if (($exist_parc[0]["cn"])=="") {
 105                              $mpenc=$list_computer[$loopa]['cn']; 
 106                              // Filtrage selon critere
 107                              if ("$filtrecomp"=="") {
 108                                  $form .= "<option value=".$mpenc.">".$mpenc;
 109                              } else {
 110                                  //$lmloop=0;
 111                                  $mpcount=count($mpenc);
 112                                  $mach=$mpenc;
 113                                  if (preg_match("/$filtrecomp/",$mach)) {
 114                                      $form .= "<option value=".$mpenc.">".$mpenc;
 115                                  }
 116                              }
 117                          }
 118                      }
 119                  }
 120                  $form.="</select></p>\n";
 121                  $form.="<input type=\"hidden\" name=\"delparc\" value=\"0\">\n";
 122                  $form.="<input type=\"hidden\" name=\"parc\" value=\"000001\">\n";
 123                  $form.="<input type=\"hidden\" name=\"delete_parc\" value=\"true\">\n";
 124                  $form.="<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
 125                  $form.="</form>\n";
 126                  echo $form;
 127              }    
 128              // On quitte
 129              include ("pdp.inc.php");
 130              exit;
 131          }
 132          // Affichage du formulaire de suppression des machines du parc
 133          // la variable parc n'est pas vide
 134          // delparc = 0 
 135          // On propose les machines a supprimer qui existent dans ce parc
 136          if ((!$delete_parc )&&($delparc!="1")) {
 137              // Filtrage des noms
 138              echo "<FORM action=\"delete_parc.php\" method=\"post\">\n";
 139              echo "<P>".gettext("Lister les noms contenant: ");
 140              echo "<INPUT TYPE=\"text\" NAME=\"filtrecomp\"\n VALUE=\"$filtrecomp\" SIZE=\"8\">";
 141              echo "<input type=\"hidden\" name=\"parc\" value=\"$parc\">\n";
 142              echo "<input type=\"submit\" value=\"".gettext("Valider")."\">\n";
 143              echo "</FORM>\n";
 144              // Lecture des membres du parc
 145              $mp_all=gof_members($parc,"parcs",1);
 146              // Filtrage selon critere
 147              if ("$filtrecomp"=="") {
 148                  $mp=$mp_all;
 149              } else {
 150                  $lmloop=0;
 151                  $mpcount=count($mp_all);
 152                  for ($loop=0; $loop < count($mp_all); $loop++) {
 153                      $mach=$mp_all[$loop];
 154                      if (preg_match("/$filtrecomp/",$mach)) $mp[$lmloop++]=$mach;
 155                  }
 156              }
 157              if ( count($mp)>15) $size=15; else $size=count($mp);
 158              if ( count($mp)>0) {
 159                  $form = "<form action=\"delete_parc.php\" method=\"post\">\n";
 160                  $form.="<p>".gettext("S&#233;lectionnez les machines &#224; enlever du parc : ")."$parc</p>\n";
 161                  $form.="<p><select size=\"".$size."\" name=\"old_computers[]\" multiple=\"multiple\">\n";
 162                  echo $form;
 163                  for ($loop=0; $loop < count($mp); $loop++) {
 164                      echo "<option value=".$mp[$loop].">".$mp[$loop];
 165                  }
 166                  $form="</select></p>\n";
 167                  // Si il ne reste qu'une seule machine
 168                  if ( count($mp)==1) {
 169                      $form.=gettext("Si vous supprimez la derni&#232;re machine, le parc sera supprim&#233;.");
 170                      $form.="<br>";    
 171                      $form.="<input type=\"hidden\" name=\"delparc\" value=\"1\">\n";
 172                  }
 173                  $form.="<input type=\"hidden\" name=\"delete_parc\" value=\"true\">\n";
 174                  $form.="<input type=\"hidden\" name=\"parc\" value=\"$parc\">\n";
 175                  $form.="<input type=\"reset\" value=\"".gettext("R&#233;initialiser la s&#233;lection")."\">\n";
 176                  $form.="<input type=\"submit\" value=\"".gettext("Valider")."\" onclick= \"return getconfirm();\">\n";
 177                  $form.="</form>\n";
 178                  echo $form;
 179              } else {
 180                  $message =  gettext("Il n'y a pas de machines &#224; supprimer !");
 181                  echo "<br><br>";
 182                  echo $message;
 183              }
 184          } else { 
 185              // Si on veut supprimer tout le parc sans supprimer les machines de l'annuaire
 186              // Il faut delparc = 1 et parc non vide
 187              if ($delparc=="1")  {
 188                  if ($parc=="") {
 189                      echo "Vous devez s&#233;lectionner un parc !";
 190                      echo "<br><br><CENTER>";
 191                      echo "<a href=\"delete_parc.php\">Retour</A>";
 192                      echo "</CENTER>";
 193                      exit;
 194                  } else {    
 195                      // Suppression du parc 
 196                      echo "<H3>".gettext("Suppression du parc")." <U>$parc</U></H3>";             
 197                      $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 
 198                      exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\"");
 199                      // on la vire d'italc
 200                      // On relance le script
 201                      exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh");
 202                      
 203                      echo "<BR>";
 204                      echo gettext("Le template de ce parc n'a pas &#233;t&#233; supprim&#233;.");
 205                      echo "<BR>";
 206                      echo gettext("Vous devez le faire &#224; la main");
 207                                          echo "<br><br><CENTER>";
 208                      echo "<a href=\"delete_parc.php\">Retour</A>";
 209                      echo "</CENTER>";
 210                  }
 211              } else {
 212                  // Suppression des machines dans le parc
 213                  // Il faut parc non vide
 214                  // Si le nombre de machine a supprimer = nombre de machine dans le parc on supprime 
 215                  // aussi le parc
 216                  if ($parc=="000001") {
 217                      echo "<H3>".gettext("Suppression de machine(s) sans parc")."</H3>";
 218                      echo "<P>".gettext("Vous avez s&#233;lectionn&#233; "). count($supprime_all).gettext(" machine(s)")."<BR>\n";
 219                  } else {
 220                      echo "<H3>".gettext("Suppression de machines dans le parc")." <U>$parc</U></H3>";
 221                      echo "<P>".gettext("Vous avez s&#233;lectionn&#233; "). count($old_computers).gettext(" machine(s)")."<BR>\n";
 222                  }
 223                  // On compte si la demande ne porte pas sur toutes les machines
 224                  $mp_all=gof_members($parc,"parcs",1);
 225                  $mpcount=count($mp_all);
 226                  // Si la demande porte sur toutes les machines du parc
 227                  // On vire le parc
 228                  if ($mpcount == count($old_computers)) {
 229                      if($parc!="000001") { // cas des machines sans parc    
 230                          echo "<H3>".gettext("Suppression du parc")." <U>$parc</U></H3>";             
 231                          echo gettext("Vous avez demand&#233; &#224; supprimer toutes les machines du parc $parc");
 232                          echo "<br><br>";
 233                          echo gettext("le parc sera aussi supprim&#233;");
 234                          $cDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn; 
 235                          exec ("/usr/share/se3/sbin/entryDel.pl \"$cDn\"");
 236  
 237                          // On vire pour italc
 238                          exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh");
 239                          // on reconstruira a la fin
 240                          //    exec ("/usr/share/se3/sbin/printers_group.pl");
 241                      }
 242                  } else {
 243                      // on extrait les machines a virer
 244                      for ($loop=0; $loop < count($old_computers); $loop++) {
 245                          $computer=$old_computers[$loop];
 246                          if($computer==$netbios_name) {
 247                              echo "<span style='color:red'>On ne supprime pas le serveur SE3 lui-même&nbsp;: $netbios_name</span><br />\n";
 248                          }
 249                          else {
 250                              // On verifie si ce n'est pas une imprimante
 251                              $resultat=search_imprimantes("printer-name=$computer","printers");
 252                              $suisje_printer="non";
 253                              for ($loopp=0; $loopp < count($resultat); $loopp++) {
 254                                  if ($computer==$resultat[$loopp]['printer-name']) {
 255                                      $suisje_printer="yes";    
 256                                      continue;
 257                                  }    
 258                              }
 259                              $pDn = "cn=".$parc.",".$parcsRdn.",".$ldap_base_dn;
 260                              if ($suisje_printer=="yes") {
 261                                  // je suis une imprimante
 262                                  echo gettext("Suppression de l'imprimante")." $computer ".gettext("du parc")." <U>$parc</U><BR>\n";
 263                                          $cDn = "cn=".$computer.",".$printersRdn.",".$ldap_base_dn;
 264                              } else {
 265                                  // je suis un ordinateur
 266                                  echo gettext("Suppression de l'ordinateur")." $computer ".gettext("du parc")." <U>$parc</U><BR>\n";
 267                                  $cDn = "cn=".$computer.",".$computersRdn.",".$ldap_base_dn;
 268                                  // Test la machine prof pour italc
 269                                  $machine_prof=search_description_parc("$parc");
 270                                  if($computer==$machine_prof) {
 271                                      echo "<br>Attention : vous ne disposez plus de machine professeur pour le parc $parc";
 272                                          modif_description_parc ($parc,"0");
 273                                  }
 274                              }
 275                              // on supprime
 276                              exec ("/usr/share/se3/sbin/groupDelEntry.pl \"$cDn\" \"$pDn\"");
 277  
 278                              // Modif pour italc
 279                              exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh");
 280                              echo "<br />";
 281                          }
 282                      }
 283                  }
 284                  // si demande de suppression complete
 285                  if (count($supprime_all)>0) {
 286                      // On teste si la machine appartient a d'autres parcs
 287                      // Si oui il faut verifier que cela n'implique pas la suppression de l'autre parc.
 288                      for ($loopa=0; $loopa < count($supprime_all); $loopa++) {
 289                          if($computer==$netbios_name) {
 290                              echo "<span style='color:red'>On ne supprime pas le serveur SE3 lui-même&nbsp;: $netbios_name</span><br />\n";
 291                          }
 292                          else {
 293                              $computer=$supprime_all[$loopa];
 294                              // On verifie si ce n'est pas une imprimante
 295                              $resultat=search_imprimantes("printer-name=$computer","printers");
 296                              $suisje_printer="non";
 297                              for ($loopp=0; $loopp < count($resultat); $loopp++) {
 298                                  if ($computer==$resultat[$loopp]['printer-name']) {
 299                                      $suisje_printer="yes";    
 300                                      continue;
 301                                  }
 302                              }    
 303                              if ($suisje_printer=="yes") {
 304                                  echo "<h3>".gettext("Avertissement")."</h3>";
 305                                  echo "<br>";
 306                                  echo "$computer ";
 307                                  echo gettext("est une imprimante.");
 308                                  echo "<br>";
 309                                  echo gettext("Vous devez passer par le menu imprimante pour la supprimer d&#233;finitivement");
 310                              } else {
 311                                  // on a bien une machine, on peut la supprimer
 312                                  // On cherche d'abord si elle appartient pas a un autre parc.
 313                                  $list_parcs=search_machines("(&(member=cn=$computer,$computersRdn,$ldap_base_dn)(objectClass=groupOfNames))","parcs");
 314                                  if (count($list_parcs)>0) {
 315                                      echo "<br>";
 316                                      echo "<h3>".gettext("Suppression des autres parcs")."</h3>";
 317                                      echo "<br>";
 318                                      for ($loop=0; $loop < count($list_parcs); $loop++) {
 319                                          echo "Suppression du parc : ";
 320                                          $parc = $list_parcs[$loop]["cn"];    
 321                                          supprime_machine_parc($computer,$parc);
 322                                          echo $parc;
 323                                          echo "<BR>";
 324                                          // Test la machine prof pour italc
 325                                          $machine_prof=search_description_parc("$parc");
 326                                          if($computer==$machine_prof) {
 327                                              echo "Attention : vous ne disposez plus de machine professeur pour le parc $parc";
 328                                                  modif_description_parc ($parc,"0");
 329                                          }
 330                                      }
 331                                  }
 332                                  // Puis enfin on supprime la machine elle meme de l'annuaire
 333                                  echo "<h3>".gettext("Suppression compl&#233;te de ")." $computer ".gettext("de l'annuaire")."</h3>";
 334                                  // Nettoyage de l'inventaire
 335                                  echo "Suppression de l'inventaire";
 336                                  echo "<br>";
 337                                  suppr_inventaire($computer);
 338                                  // voir si on doit pas nettoyer les connexions
 339                                  // Vire dans le dhcp
 340                                  // On teste si la table existe
 341                                  /*
 342                                  $exec = mysql_query("SHOW TABLES FROM `se3db` LIKE 'se3_dhcp'");
 343                                  $tables =array();
 344                                  while($row = mysql_fetch_row($exec)) {
 345                                      $tables[] = $row[0];
 346                                  }
 347                                  if(in_array('se3_dhcp',$tables)){
 348                                      $dhcp_ok = 1;
 349                                  }
 350                                  if ($dhcp_ok==1) {
 351                                  */
 352                                  if ($dhcp=="1") {
 353                                      echo "Suppression du dhcp";
 354                                      echo "<br>";
 355                                      $suppr_query = "DELETE FROM `se3_dhcp` where `name` = '$computer'";
 356                                      mysql_query($suppr_query);
 357                                      // On relance dhcp si celui-ci est active.
 358                                      exec("sudo /usr/share/se3/scripts/makedhcpdconf",$ret);
 359                                  }
 360                          
 361                                  // La virer de wpkg 
 362                                      echo "Suppression des rapports wpkg";
 363                                  echo "<br>";
 364                                  $rapport_computer="/var/se3/unattended/install/wpkg/rapports/".$computer.".txt";
 365                                  $log_computer="/var/se3/unattended/install/wpkg/rapports/".$computer.".log";
 366                                  if(file_exists($rapport_computer)) { @unlink($rapport_computer); }
 367                                  if(file_exists($log_computer)) { @unlink($log_computer);}
 368                              
 369                                  // On relance le script pour italc
 370                                  echo "Suppression d'italc";
 371                                  exec ("/usr/bin/sudo /usr/share/se3/scripts/italc_generate.sh");
 372  
 373                              
 374                                  exec ("/usr/share/se3/sbin/entryDel.pl cn=$computer,".$dn["computers"],$output,$returnval);
 375                                  exec ("/usr/share/se3/sbin/entryDel.pl uid=$computer$,".$dn["computers"]);
 376                                  exec("/usr/bin/touch /tmp/csvtodo",$ret);
 377                                  exec("sudo /usr/share/se3/sbin/update-csv.sh",$ret);
 378                              }
 379                          }
 380                      }
 381                  }
 382                  // Suppression des delegations sans parc
 383                  echo "<H3>".gettext("Suppression des d&#233;l&#233;gations sans parc")."</H3>";
 384                  nettoie_delegation();
 385                  // NJ 10-2004 reconstruction des partages imprimantes
 386                  exec ("/usr/share/se3/sbin/printers_group.pl");
 387                  // Lance le script de mise a jour pour wpkg
 388                  update_wpkg();
 389                                  echo "<br><br><CENTER>";
 390                  echo "<A HREF=\"show_parc.php?parc=$parc\">Retour</A>";
 391                                  //echo "<a href=\"delete_parc.php\">Retour</A>";
 392                  echo "</CENTER>";
 393              }
 394          }
 395      }
 396  }
 397  include ("pdp.inc.php");
 398  ?>


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