[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

/se3-clonage/sources/www/tftp/ -> consultation_tftp.php (source)

   1  <?php
   2  /* $Id: consultation_tftp.php 7214 2012-05-23 13:35:44Z crob $
   3  ===========================================
   4  Projet SE3
   5  Dispositif SE3+TFTP+Sauvegarde/Restauration/Clonage
   6  Stephane Boireau
   7  Distribué selon les termes de la licence GPL
   8  =============================================
   9  */
  10  
  11  // loading libs and init
  12  include  "entete.inc.php";
  13  include  "ldap.inc.php";
  14  include  "ihm.inc.php";
  15  //require_once "../dhcp/dhcpd.inc.php";
  16  include  "printers.inc.php";
  17  
  18  require ("lib_action_tftp.php");
  19  
  20  //aide
  21  $_SESSION["pageaide"]="Le_module_Clonage_des_stations#Consulter_le_r.C3.A9sultat_d.27une_action";
  22  
  23  // On active les rapports d'erreurs:
  24  //error_reporting(E_ALL);
  25  
  26  // CSS pour mes tableaux:
  27  echo "<link type='text/css' rel='stylesheet' href='tftp.css' />\n";
  28  
  29  if ((is_admin("system_is_admin",$login)=="Y")||(ldap_get_right("parc_can_clone",$login)=="Y"))
  30  {
  31  
  32      $mode_rech=isset($_POST['mode_rech']) ? $_POST['mode_rech'] : (isset($_GET['mode_rech']) ? $_GET['mode_rech'] : NULL);
  33  
  34      //$action=isset($_POST['action']) ? $_POST['action'] : (isset($_GET['action']) ? $_GET['action'] : NULL);
  35  
  36      $parc=isset($_POST['parc']) ? $_POST['parc'] : (isset($_GET['parc']) ? $_GET['parc'] : NULL);
  37  
  38      $parametrage_action=isset($_POST['parametrage_action']) ? $_POST['parametrage_action'] : (isset($_GET['parametrage_action']) ? $_GET['parametrage_action'] : NULL);
  39  
  40      $id_machine=isset($_POST['id_machine']) ? $_POST['id_machine'] : (isset($_GET['id_machine']) ? $_GET['id_machine'] : NULL);
  41      $num_op=isset($_POST['num_op']) ? $_POST['num_op'] : (isset($_GET['num_op']) ? $_GET['num_op'] : NULL);
  42  
  43  
  44      $restriction_parcs="n";
  45      if(is_admin("system_is_admin",$login)!="Y") {
  46          $restriction_parcs="y";
  47          $tab_delegated_parcs=list_delegated_parcs($login);
  48          if(count($tab_delegated_parcs)==0) {
  49              echo "<p>Aucun parc ne vous a été délégué.</p>\n";
  50              include ("pdp.inc.php");
  51              die();
  52          }
  53      }
  54  
  55  
  56      $suppr=isset($_POST['suppr']) ? $_POST['suppr'] : NULL;
  57      if(isset($suppr)){
  58          for($i=0;$i<count($suppr);$i++){
  59              // Suppression du fichier en /tftpboot/pxelinux.cfg/
  60  
  61              if(is_admin("system_is_admin",$login)!="Y") {
  62                  $temoin_erreur="y";
  63                  $nom="";
  64  
  65                  $sql="SELECT name FROM se3_dhcp WHERE id='$suppr[$i]';";
  66                  $res=mysql_query($sql);
  67                  if(mysql_num_rows($res)>0) {
  68                      $lig=mysql_fetch_object($res);
  69                      $nom=$lig->name;
  70      
  71                      for($loop=0;$loop<count($tab_delegated_parcs);$loop++) {
  72                          // La machine est-elle dans un des parcs délégués?
  73                          if(is_machine_in_parc($nom,$tab_delegated_parcs[$loop])) {
  74                              $temoin_erreur='n';
  75                              break;
  76                          }
  77                      }
  78                  }
  79                  if($temoin_erreur=="y") {
  80                      echo "<p style='color:red'>La machine $nom n'est pas dans un de vos parcs delegues.</p>\n";
  81                      die();
  82                  }
  83              }
  84  
  85              // Récupérer l'adresse MAC:
  86              $sql="SELECT mac FROM se3_dhcp WHERE id='$suppr[$i]';";
  87              //echo "$sql<br />\n";
  88              $res_mac=mysql_query($sql);
  89              if(mysql_num_rows($res_mac)==0) {
  90                  $sql="SELECT mac FROM se3_tftp_action WHERE id='$suppr[$i]';";
  91                  //echo "$sql<br />\n";
  92                  $res_mac=mysql_query($sql);
  93                  if(mysql_num_rows($res_mac)==0) {
  94                      echo "<span style='color:red'>ERREUR:</span> L'adresse MAC de la machine d'identifiant $suppr[$i] n'a pas été trouvée dans les tables 'se3_dhcp' ni 'se3_tftp_action'. Il se peut qu'il subsiste un fichier /tftpboot/pxelinux.cfg/01-ADRESSE_MAC qui pourrait perturber le démarrage de la machine.<br />\n";
  95                  }
  96                  else {
  97                      $lig_mac=mysql_fetch_object($res_mac);
  98                      //$corrige_mac=strtolower(strtr($mac_machine,":","-"));
  99                      $corrige_mac=strtolower(strtr($lig_mac->mac,":","-"));
 100                      //echo "Test de /tftpboot/pxelinux.cfg/01-$corrige_mac<br />\n";
 101                      if(file_exists("/tftpboot/pxelinux.cfg/01-$corrige_mac")) {
 102                          //echo "Suppression de /tftpboot/pxelinux.cfg/01-$corrige_mac<br />\n";
 103                          unlink("/tftpboot/pxelinux.cfg/01-$corrige_mac");
 104                      }
 105                  }
 106              }
 107              else {
 108                  $lig_mac=mysql_fetch_object($res_mac);
 109                  //$corrige_mac=strtolower(strtr($mac_machine,":","-"));
 110                  $corrige_mac=strtolower(strtr($lig_mac->mac,":","-"));
 111                  //echo "Test de /tftpboot/pxelinux.cfg/01-$corrige_mac<br />\n";
 112                  if(file_exists("/tftpboot/pxelinux.cfg/01-$corrige_mac")) {
 113                      //echo "Suppression de /tftpboot/pxelinux.cfg/01-$corrige_mac<br />\n";
 114                      unlink("/tftpboot/pxelinux.cfg/01-$corrige_mac");
 115                  }
 116              }
 117  
 118              // Suppression de l'action dans la table:
 119              $sql="DELETE FROM se3_tftp_action WHERE id='$suppr[$i]';";
 120              //echo "$sql<br />\n";
 121              $suppression=mysql_query($sql);
 122  
 123              // Suppression de la tâche recup_rapport.php?
 124              //$dossier="/var/se3/tmp/tftp/$suppr[$i]";
 125              $dossier="/etc/se3/www-tools/tftp/$suppr[$i]";
 126              $lanceur_recup="$dossier/lanceur_recup_rapport_action_tftp.sh";
 127              if(file_exists($lanceur_recup)) {
 128                  unlink($lanceur_recup);
 129              }
 130          }
 131      }
 132  
 133      // Création de la table dès que possible:
 134      creation_tftp_tables();
 135  
 136      echo "<h1>".gettext("Consultation TFTP")."</h1>\n";
 137  
 138      if(is_admin("system_is_admin",$login)!="Y") {
 139          $mode_rech="parc";
 140      }
 141  
 142      if(!isset($mode_rech)){
 143          echo "<p>Choisissez le mode de consultation:</p>\n";
 144          echo "<ul>\n";
 145          echo "<li><a href='".$_SERVER['PHP_SELF']."?mode_rech=parc'>Sélectionner un parc</a>.</li>\n";
 146  
 147          $sql="SELECT 1=1 FROM se3_tftp_action WHERE type='sauvegarde';";
 148          $test=mysql_query($sql);
 149          if(mysql_num_rows($test)>0) {
 150              echo "<li><a href='".$_SERVER['PHP_SELF']."?mode_rech=svg'>Afficher les sauvegardes en attente</a>.</li>\n";
 151          }
 152  
 153          $sql="SELECT 1=1 FROM se3_tftp_action WHERE type='restauration';";
 154          $test=mysql_query($sql);
 155          if(mysql_num_rows($test)>0) {
 156              echo "<li><a href='".$_SERVER['PHP_SELF']."?mode_rech=rest'>Afficher les restaurations en attente</a>.</li>\n";
 157          }
 158  
 159          $sql="SELECT 1=1 FROM se3_tftp_action WHERE type LIKE 'udpcast_%';";
 160          $test=mysql_query($sql);
 161          if(mysql_num_rows($test)>0) {
 162              echo "<li><a href='".$_SERVER['PHP_SELF']."?mode_rech=clone'>Afficher les clonages en attente</a>.</li>\n";
 163          }
 164  
 165          $sql="SELECT 1=1 FROM se3_tftp_action WHERE type='rapport';";
 166          $test=mysql_query($sql);
 167          if(mysql_num_rows($test)>0) {
 168              echo "<li><a href='".$_SERVER['PHP_SELF']."?mode_rech=rapport'>Afficher les remontées de rapports en attente</a>.</li>\n";
 169          }
 170  
 171          $sql="SELECT 1=1 FROM se3_tftp_action WHERE type='unattend_xp';";
 172          $test=mysql_query($sql);
 173          if(mysql_num_rows($test)>0) {
 174              echo "<li><a href='".$_SERVER['PHP_SELF']."?mode_rech=unattend_xp'>Afficher les installations unattend XP en attente</a>.</li>\n";
 175          }
 176  
 177          echo "</ul>\n";
 178  
 179          echo "<p><a href='index.php'>Retour à l'index</a>.</p>\n";
 180      }
 181      else {
 182          if($mode_rech=="parc"){
 183              if(!isset($parc)){
 184                  echo "<p>Choisissez un ou des parcs:</p>\n";
 185  
 186                  $list_parcs=search_machines("objectclass=groupOfNames","parcs");
 187                  if (count($list_parcs)==0) {
 188                      echo "<br><br>";
 189                      echo gettext("Il n'existe aucun parc. Vous devez d'abord créer un parc");
 190                      include ("pdp.inc.php");
 191                      exit;
 192                  }
 193                  sort($list_parcs);
 194  
 195                  echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 196                  echo "<input type=\"hidden\" name=\"mode_rech\" value=\"$mode_rech\" />\n";
 197  
 198                  // Affichage des parcs sur 3/4 colonnes
 199                  $nb_parcs_par_colonne=round(count($list_parcs)/3);
 200                  echo "<table border='0'>\n";
 201                  echo "<tr valign='top'>\n";
 202                  echo "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
 203                  echo "<td align='left'>\n";
 204                  for ($loop=0; $loop < count($list_parcs); $loop++) {
 205                      //array_push($parcs,$list_parcs[$loop]["cn"]);
 206  
 207                      if(($loop>0)&&(round($loop/$nb_parcs_par_colonne)==$loop/$nb_parcs_par_colonne)){
 208                          echo "</td>\n";
 209                          echo "<td align='left'>\n";
 210                      }
 211  
 212                      if(($restriction_parcs=="n")||(in_array($list_parcs[$loop]["cn"], $tab_delegated_parcs))) {
 213                          echo "<label for='parc_$loop'><input type='checkbox' id='parc_$loop' name='parc[]' value=\"".$list_parcs[$loop]["cn"]."\"";
 214                          //if(count($list_parcs)==1) {echo " checked";}
 215                          echo " />".$list_parcs[$loop]["cn"]."</label>\n";
 216                          echo "<br />\n";
 217                      }
 218                  }
 219  
 220                  echo "</td>\n";
 221                  echo "</tr>\n";
 222                  echo "</table>\n";
 223  
 224                  echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n";
 225  
 226                  echo "<script type='text/javascript'>
 227  nb_parcs=0;
 228  id_parc='';
 229  for(i=0;i<$loop;i++) {
 230      if(document.getElementById('parc_'+i)) {
 231          nb_parcs++;
 232          id_parc='parc_'+i;
 233      }
 234  }
 235  if(nb_parcs==1) {
 236      document.getElementById(id_parc).checked=true;
 237  }
 238  </script>\n";
 239  
 240                  echo "</form>\n";
 241              }
 242              else {
 243                  echo "<script type='text/javascript' src='../includes/prototype.js'></script>\n";
 244                  // Afficher un tableau des parcs avec les machines qui ont une action programmée...
 245  
 246                  echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 247                  echo "<input type=\"hidden\" name=\"mode_rech\" value=\"$mode_rech\" />\n";
 248  
 249                  $max_eff_parc=0;
 250                  for($i=0;$i<count($parc);$i++){
 251                      echo "<input type='hidden' name='parc[]' value='$parc[$i]' />\n";
 252  
 253                      echo "<h2>Parc $parc[$i]</h2>\n";
 254  
 255                      $mp=gof_members($parc[$i],"parcs",1);
 256                      $nombre_machine=count($mp);
 257                      sort($mp);
 258  
 259                      //echo "<table border='1'>\n";
 260                      echo "<table class='crob'>\n";
 261                      echo "<tr>\n";
 262  
 263                      echo "<th>Nom</th>\n";
 264                      echo "<th>Etat</th>\n";
 265                      echo "<th>Session</th>\n";
 266                      echo "<th>Config DHCP</th>\n";
 267  
 268                      echo "<th>Action</th>\n";
 269  
 270                      echo "<th>Supprimer l'action<br />\n";
 271                      echo "<a href='#' onclick='check_suppr($i,\"check\");return false'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Tout cocher\" title=\"Tout cocher\" /></a>\n";
 272                      echo " / <a href='#' onclick='check_suppr($i,\"uncheck\");return false'><img src=\"../elements/images/disabled.gif\" border='0' alt=\"Tout décocher\" title=\"Tout décocher\" /></a>\n";
 273                      echo "</th>\n";
 274  
 275                      echo "<th>Rapports</th>\n";
 276                      echo "<th>Sauvegardes<br />antérieures</th>\n";
 277  
 278                      //echo "<th></th>\n";
 279                      echo "</tr>\n";
 280  
 281                      for ($loop=0; $loop < count($mp); $loop++) {
 282                          $mpenc=urlencode($mp[$loop]);
 283  
 284                          // Test si on a une imprimante ou une machine
 285                          $resultat=search_imprimantes("printer-name=$mpenc","printers");
 286                          $suisje_printer="non";
 287                          for ($loopp=0; $loopp < count($resultat); $loopp++) {
 288                              if ($mpenc==$resultat[$loopp]['printer-name']) {
 289                                  $suisje_printer="yes";
 290                                  continue;
 291                              }
 292                          }
 293  
 294                          if($suisje_printer=="non") {
 295                              // Réinitialisation:
 296                              $id_machine="";
 297  
 298                              echo "<tr>\n";
 299                              echo "<td width='20%'>".$mp[$loop]."</td>\n";
 300  
 301                              // Etat: allumé ou éteint
 302                              echo "<td width='20%'>";
 303                              $mp_curr=search_machines2("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 304                              if ($mp_curr[0]["ipHostNumber"]) {
 305                                  $iphost=$mp_curr[0]["ipHostNumber"];
 306  
 307                                  echo "<div id='divip$loop'>Patientez</div>\n";
 308  
 309                                  echo "<script type='text/javascript'>
 310                                      // <![CDATA[
 311                                      new Ajax.Updater($('divip$loop'),'ajax_lib.php?ip=$iphost&mode=ping_ip',{method: 'get'});
 312                                      //]]>
 313                                  </script>\n";
 314  
 315                              }
 316                              echo "</td>\n";
 317  
 318  
 319                              // Session: ouverte ou pas... sous quelle identité
 320                              echo "<td width='20%'>\n";
 321                              echo "<div id='divsession$loop'>Patientez</div>\n";
 322  
 323                              echo "<script type='text/javascript'>
 324                                  // <![CDATA[
 325                                  new Ajax.Updater($('divsession$loop'),'ajax_lib.php?nom_machine=".$mp[$loop]."&mode=session',{method: 'get'});
 326                                  //]]>
 327                              </script>\n";
 328  
 329                              echo "</td>\n";
 330  
 331  
 332                              // Etat config DHCP:
 333                              // Par la suite il ne faudra pas prendre les IP dans l'annuaire,
 334                              // mais dans la config DHCP parce que ce sont ces IP qui seront attribuées lors du boot PXE
 335                              echo "<td width='20%'>\n";
 336                              //$mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 337                              if ($mp_curr[0]["macAddress"]) {
 338                                  $sql="SELECT * FROM se3_dhcp WHERE mac='".$mp_curr[0]["macAddress"]."';";
 339                                  //echo "$sql<br />";
 340                                  $res=mysql_query($sql);
 341                                  if(mysql_num_rows($res)>0) {
 342                                      $lig=mysql_fetch_object($res);
 343                                      $id_machine=$lig->id;
 344  
 345                                      //echo $lig->id;
 346                                      echo "<img src=\"../elements/images/enabled.gif\" border='0' alt=\"$lig->ip\" title=\"$lig->ip\" />";
 347                                  }
 348                                  else {
 349                                      echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse IP attribuée\" title=\"Pas d'adresse IP attribuée\" />";
 350                                  }
 351                              }
 352                              else {
 353                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse MAC dans l'annuaire???\" title=\"Pas d'adresse MAC dans l'annuaire???\" />";
 354                              }
 355                              echo "</td>\n";
 356  
 357  
 358                              // Action programmée
 359                              echo "<td width='20%'>\n";
 360                              /*
 361                              foreach($mp_curr[0] as $champ => $valeur) {
 362                                  echo "\$mp_curr[0]['$champ']=$valeur<br />";
 363                              }
 364                              */
 365                              $temoin_action="n";
 366                              if($id_machine!=""){
 367                                  $sql="SELECT * FROM se3_tftp_action WHERE id='".$id_machine."';";
 368                                  $res=mysql_query($sql);
 369                                  if(mysql_num_rows($res)>0) {
 370                                      $lig=mysql_fetch_object($res);
 371                                      echo "<a href='visu_action.php?id_machine=$id_machine' target='_blank'>$lig->type</a> (<i>$lig->num_op</i>)";
 372  
 373                                      //echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".preg_replace("/'/","",preg_replace("/'/","",visu_tache($mp_curr[0]["macAddress"],'light')))."</center>')")."\"><img name=\"action_image$loop\" src=\"../elements/images/detail.gif\" /></u>";
 374  
 375                                      //echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".preg_replace("/'/","",visu_tache($mp_curr[0]["macAddress"],'light'))."</center>')")."\"><img name=\"action_image$loop\"  src=\"../elements/images/detail.gif\"></u>";
 376                                      // CELA MERDOUILLE QUAND LA TACHE EST UN CLONAGE... JE NE SAISIS PAS POURQUOI...
 377                                      echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".preg_replace('/"/','',preg_replace("/'/","",visu_tache($mp_curr[0]["macAddress"],'light')))."</center>')")."\"><img name=\"action_image$loop\"  src=\"../elements/images/detail.gif\"></u>";
 378  
 379                                      $temoin_action="y";
 380  
 381                                      //echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".preg_replace("/'/"," ",visu_tache($mp_curr[0]["macAddress"],'light'))."</center>')")."\"><img name=\"action_image$loop\"  src=\"../elements/images/detail.gif\" /></u>";
 382  
 383                                      //echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".visu_tache($mp_curr[0]["macAddress"],'light')."</center>')")."\"><img name=\"action_image$loop\"  src=\"../elements/images/detail.gif\" /></u>";
 384                                  }
 385                                  else {
 386                                      echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'action programmée\" title=\"Pas d'action programmée\" />";
 387                                  }
 388                              }
 389                              else {
 390                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Il faut commencer par effectuer la configuration DHCP\" title=\"Il faut commencer par effectuer la configuration DHCP\" />";
 391                              }
 392                              echo "</td>\n";
 393  
 394                              if($temoin_action=="y") {
 395                                  echo "<td>\n";
 396                                  echo "<input type='checkbox' name='suppr[]' id='suppr_".$i."_".$loop."' value='$id_machine' />\n";
 397                                  echo "</td>\n";
 398                              }
 399                              else {
 400                                  echo "<td>\n";
 401                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'action à supprimer\" title=\"Pas d'action à supprimer\" />\n";
 402                                  echo "</td>\n";
 403                              }
 404  
 405                              // Rapports
 406                              echo "<td width='20%'>\n";
 407                              if($id_machine!=""){
 408                                  $sql="SELECT * FROM se3_tftp_rapports WHERE id='".$id_machine."' ORDER BY date DESC;";
 409                                  $res=mysql_query($sql);
 410                                  if(mysql_num_rows($res)>0) {
 411                                      $lig=mysql_fetch_object($res);
 412                                      echo "<a href='visu_rapport.php?id_machine=$id_machine' target='_blank'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Visualiser le(s) rapport(s) existant(s)\" title=\"Visualiser le(s) rapport(s) existant(s)\" /></a>";
 413                                      echo "<br />\n";
 414                                      echo "<span style='font-size: x-small;' title='Dernier rapport: $lig->tache ($lig->statut)'>".mysql_date_to_fr_date($lig->date)."</span>\n";
 415                                  }
 416                                  else {
 417                                      echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucun rapport existant\" title=\"Aucun rapport existant\" />";
 418                                  }
 419                              }
 420                              else {
 421                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucun rapport existant\" title=\"Aucun rapport existant\" />";
 422                              }
 423                              echo "</td>\n";
 424  
 425  
 426                              // Sauvegardes existantes
 427                              echo "<td width='20%'>\n";
 428                              if($id_machine!=""){
 429                                  $sql="SELECT * FROM se3_tftp_sauvegardes WHERE id='".$id_machine."' ORDER BY date DESC;";
 430                                  $res=mysql_query($sql);
 431                                  if(mysql_num_rows($res)>0) {
 432                                      $lig=mysql_fetch_object($res);
 433                                      echo "<a href='visu_svg.php?id_machine=$id_machine' target='_blank'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Visualiser la(les) sauvegarde(s) existante(s)\" title=\"Visualiser la(les) sauvegarde(s) existante(s)\" /></a>";
 434                                      echo "<br />\n";
 435                                      echo "<span style='font-size: x-small;' title='Dernière sauvegarde: $lig->image'>".mysql_date_to_fr_date($lig->date)."</span>\n";
 436                                  }
 437                                  else {
 438                                      echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucune sauvegarde existante\" title=\"Aucune sauvegarde existante\" />";
 439                                  }
 440                              }
 441                              else {
 442                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucune sauvegarde existante\" title=\"Aucune sauvegarde existante\" />";
 443                              }
 444                              echo "</td>\n";
 445  
 446                              echo "</tr>\n";
 447                          }
 448                      }
 449                      echo "</table>\n";
 450                      if($max_eff_parc<$loop) {$max_eff_parc=$loop;}
 451                  }
 452  
 453                  echo "<script type='text/javascript'>
 454  	function check_suppr(num_parc,mode) {
 455          for(i=0;i<$max_eff_parc;i++){
 456              if(document.getElementById('suppr_'+num_parc+'_'+i)){
 457                  if(mode=='check'){
 458                      document.getElementById('suppr_'+num_parc+'_'+i).checked=true;
 459                  }
 460                  else{
 461                      document.getElementById('suppr_'+num_parc+'_'+i).checked=false;
 462                  }
 463              }
 464          }
 465      }
 466  </script>\n";
 467  
 468                  echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider les suppressions\" /></p>\n";
 469                  echo "</form>\n";
 470  
 471                  echo "<p><i>NOTE:</i> Ajouter l'affichage du rapport s'il existe, des sauvegardes existantes,...</p>";
 472  
 473                  //echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du(des) parc(s)</a>.</p>\n";
 474              }
 475          }
 476          //elseif($mode_rech=="svg"){
 477          //elseif(($mode_rech=="svg")||($mode_rech=="rest")){
 478          elseif(($mode_rech=="svg")||($mode_rech=="rest")||($mode_rech=="rapport")||($mode_rech=="unattend_xp")){
 479              echo "<script type='text/javascript' src='../includes/prototype.js'></script>\n";
 480  
 481              echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 482              echo "<input type=\"hidden\" name=\"mode_rech\" value=\"$mode_rech\" />\n";
 483  
 484              // Afficher un tableau des parcs avec les machines qui ont une action programmée...
 485              //for($i=0;$i<count($parc);$i++){
 486  
 487                  if($mode_rech=="svg") {
 488                      echo "<h2>Sauvegardes en attente</h2>\n";
 489  
 490                      $sql="SELECT * FROM se3_tftp_action WHERE type='sauvegarde' ORDER BY num_op,name;";
 491                      $res=mysql_query($sql);
 492                      if(mysql_num_rows($res)==0){
 493                          echo "<p>Aucune sauvegarde n'est en attente.</p>\n";
 494                          include ("pdp.inc.php");
 495                          exit();
 496                      }
 497                  }
 498                  elseif($mode_rech=="rest") {
 499                      echo "<h2>Restaurations en attente</h2>\n";
 500  
 501                      $sql="SELECT * FROM se3_tftp_action WHERE type='restauration' ORDER BY num_op,name;";
 502                      $res=mysql_query($sql);
 503                      if(mysql_num_rows($res)==0){
 504                          echo "<p>Aucune restauration n'est en attente.</p>\n";
 505                          include ("pdp.inc.php");
 506                          exit();
 507                      }
 508                  }
 509                  elseif($mode_rech=="rapport") {
 510                      echo "<h2>Remontées de rapports programmées</h2>\n";
 511  
 512                      $sql="SELECT * FROM se3_tftp_action WHERE type='rapport' ORDER BY num_op,name;";
 513                      $res=mysql_query($sql);
 514                      if(mysql_num_rows($res)==0){
 515                          echo "<p>Aucune remontée de rapport n'est en attente.</p>\n";
 516                          include ("pdp.inc.php");
 517                          exit();
 518                      }
 519                  }
 520                  elseif($mode_rech=="unattend_xp") {
 521                      echo "<h2>Remontées de rapports programmées</h2>\n";
 522  
 523                      $sql="SELECT * FROM se3_tftp_action WHERE type='unattend_xp' ORDER BY num_op,name;";
 524                      $res=mysql_query($sql);
 525                      if(mysql_num_rows($res)==0){
 526                          echo "<p>Aucune installation unattend xp n'est en attente.</p>\n";
 527                          include ("pdp.inc.php");
 528                          exit();
 529                      }
 530                  }
 531  
 532                  //$mp=gof_members($parc[$i],"parcs",1);
 533                  $nombre_machine=mysql_num_rows($res);
 534                  $mp=array();
 535                  //sort($mp);
 536                  while($lig=mysql_fetch_object($res)) {
 537                      $mp[]=$lig->name;
 538                  }
 539  
 540                  //echo "<table border='1'>\n";
 541                  echo "<table class='crob'>\n";
 542                  echo "<tr>\n";
 543  
 544                  //echo "<th>Numéro d'opération</th>\n";
 545                  echo "<th>Nom</th>\n";
 546                  echo "<th>Etat</th>\n";
 547                  echo "<th>Session</th>\n";
 548                  echo "<th>Config DHCP</th>\n";
 549  
 550                  echo "<th>Action</th>\n";
 551  
 552                  echo "<th>Supprimer l'action<br />\n";
 553                  echo "<a href='#' onclick='check_suppr(\"check\");return false'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Tout cocher\" title=\"Tout cocher\" /></a>\n";
 554                  echo " / <a href='#' onclick='check_suppr(\"uncheck\");return false'><img src=\"../elements/images/disabled.gif\" border='0' alt=\"Tout décocher\" title=\"Tout décocher\" /></a>\n";
 555                  echo "</th>\n";
 556  
 557                  echo "<th>Rapports</th>\n";
 558                  echo "<th>Sauvegardes<br />antérieures</th>\n";
 559  
 560                  //echo "<th></th>\n";
 561                  echo "</tr>\n";
 562  
 563                  for ($loop=0; $loop < count($mp); $loop++) {
 564                      $mpenc=urlencode($mp[$loop]);
 565  
 566                      // Test si on a une imprimante ou une machine
 567                      $resultat=search_imprimantes("printer-name=$mpenc","printers");
 568                      $suisje_printer="non";
 569                      for ($loopp=0; $loopp < count($resultat); $loopp++) {
 570                          if ($mpenc==$resultat[$loopp]['printer-name']) {
 571                              $suisje_printer="yes";
 572                              continue;
 573                          }
 574                      }
 575  
 576                      if($suisje_printer=="non") {
 577                          // Réinitialisation:
 578                          $id_machine="";
 579  
 580                          echo "<tr>\n";
 581                          //echo "<td width='20%'></td>\n";
 582                          echo "<td width='20%'>".$mp[$loop]."</td>\n";
 583  
 584                          // Etat: allumé ou éteint
 585                          echo "<td width='20%'>";
 586                          $mp_curr=search_machines2("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 587                          if ($mp_curr[0]["ipHostNumber"]) {
 588                              $iphost=$mp_curr[0]["ipHostNumber"];
 589  
 590                              echo "<div id='divip$loop'>Patientez</div>\n";
 591                              echo "<script type='text/javascript'>
 592                                  // <![CDATA[
 593                                  new Ajax.Updater($('divip$loop'),'ajax_lib.php?ip=$iphost&mode=ping_ip',{method: 'get'});
 594                                  //]]>
 595                              </script>\n";
 596                          }
 597                          echo "</td>\n";
 598  
 599  
 600                          // Session: ouverte ou pas... sous quelle identité
 601                          echo "<td width='20%'>\n";
 602                          echo "<div id='divsession$loop'>Patientez</div>\n";
 603                          echo "<script type='text/javascript'>
 604                              // <![CDATA[
 605                              new Ajax.Updater($('divsession$loop'),'ajax_lib.php?nom_machine=".$mp[$loop]."&mode=session',{method: 'get'});
 606                              //]]>
 607                          </script>\n";
 608                          echo "</td>\n";
 609  
 610  
 611                          // Etat config DHCP:
 612                          // Par la suite il ne faudra pas prendre les IP dans l'annuaire,
 613                          // mais dans la config DHCP parce que ce sont ces IP qui seront attribuées lors du boot PXE
 614                          echo "<td width='20%'>\n";
 615                          //$mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 616                          if ($mp_curr[0]["macAddress"]) {
 617                              $sql="SELECT * FROM se3_dhcp WHERE mac='".$mp_curr[0]["macAddress"]."';";
 618                              //echo "$sql<br />";
 619                              $res=mysql_query($sql);
 620                              if(mysql_num_rows($res)>0) {
 621                                  $lig=mysql_fetch_object($res);
 622                                  $id_machine=$lig->id;
 623  
 624                                  //echo $lig->ip;
 625                                  echo "<img src=\"../elements/images/enabled.gif\" border='0' alt=\"$lig->ip\" title=\"$lig->ip\" />";
 626                              }
 627                              else {
 628                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse IP attribuée\" title=\"Pas d'adresse IP attribuée\" />";
 629                              }
 630                          }
 631                          else {
 632                              echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse MAC dans l'annuaire???\" title=\"Pas d'adresse MAC dans l'annuaire???\" />";
 633                          }
 634                          echo "</td>\n";
 635  
 636  
 637                          // Action programmée
 638                          echo "<td width='20%'>\n";
 639                          /*
 640                          foreach($mp_curr[0] as $champ => $valeur) {
 641                              echo "\$mp_curr[0]['$champ']=$valeur<br />";
 642                          }
 643                          */
 644                          if($id_machine!=""){
 645                              $sql="SELECT * FROM se3_tftp_action WHERE id='".$id_machine."';";
 646                              $res=mysql_query($sql);
 647                              if(mysql_num_rows($res)>0) {
 648                                  $lig=mysql_fetch_object($res);
 649                                  //echo "<a href='visu_action.php?id_machine=$id_machine' target='_blank'>$lig->type</a>";
 650                                  echo "<a href='visu_action.php?id_machine=$id_machine' target='_blank'>$lig->type</a> (<i>$lig->num_op</i>)";
 651                                  //echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".preg_replace('/\n/',"",preg_replace("/'/","",visu_tache($mp_curr[0]["macAddress"],'light')))."</center>')")."\"><img name=\"action_image$loop\"  src=\"../elements/images/detail.gif\"></u>";
 652                                  echo " <u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('<center>".preg_replace("/'/","",visu_tache($mp_curr[0]["macAddress"],'light'))."</center>')")."\"><img name=\"action_image$loop\"  src=\"../elements/images/detail.gif\"></u>";
 653                              }
 654                              else {
 655                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'action programmée\" title=\"Pas d'action programmée\" />";
 656                              }
 657                          }
 658                          else {
 659                              echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Il faut commencer par effectuer la configuration DHCP\" title=\"Il faut commencer par effectuer la configuration DHCP\" />";
 660                          }
 661                          echo "</td>\n";
 662  
 663                          echo "<td>\n";
 664                          echo "<input type='checkbox' name='suppr[]' id='suppr_".$loop."' value='$id_machine' />\n";
 665                          echo "</td>\n";
 666  
 667                          // Rapports
 668                          echo "<td width='20%'>\n";
 669                          if($id_machine!=""){
 670                              $sql="SELECT * FROM se3_tftp_rapports WHERE id='".$id_machine."';";
 671                              $res=mysql_query($sql);
 672                              if(mysql_num_rows($res)>0) {
 673                                  $lig=mysql_fetch_object($res);
 674                                  echo "<a href='visu_rapport.php?id_machine=$id_machine' target='_blank'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Visualiser le(s) rapport(s) existant(s)\" title=\"Visualiser le(s) rapport(s) existant(s)\" /></a>";
 675                              }
 676                              else {
 677                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucun rapport existant\" title=\"Aucun rapport existant\" />";
 678                              }
 679                          }
 680                          else {
 681                              echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucun rapport existant\" title=\"Aucun rapport existant\" />";
 682                          }
 683                          echo "</td>\n";
 684  
 685  
 686                          // Sauvegardes existantes
 687                          echo "<td width='20%'>\n";
 688                          if($id_machine!=""){
 689                              $sql="SELECT * FROM se3_tftp_sauvegardes WHERE id='".$id_machine."';";
 690                              $res=mysql_query($sql);
 691                              if(mysql_num_rows($res)>0) {
 692                                  $lig=mysql_fetch_object($res);
 693                                  echo "<a href='visu_svg.php?id_machine=$id_machine' target='_blank'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Visualiser la(les) sauvegarde(s) existante(s)\" title=\"Visualiser la(les) sauvegarde(s) existante(s)\" /></a>";
 694                              }
 695                              else {
 696                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucune sauvegarde existante\" title=\"Aucune sauvegarde existante\" />";
 697                              }
 698                          }
 699                          else {
 700                              echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Aucune sauvegarde existante\" title=\"Aucune sauvegarde existante\" />";
 701                          }
 702                          echo "</td>\n";
 703  
 704                          echo "</tr>\n";
 705                      }
 706                  }
 707                  echo "</table>\n";
 708              //}
 709  
 710              echo "<script type='text/javascript'>
 711  	function check_suppr(mode) {
 712          for(i=0;i<$nombre_machine;i++){
 713              if(document.getElementById('suppr_'+i)){
 714                  if(mode=='check'){
 715                      document.getElementById('suppr_'+i).checked=true;
 716                  }
 717                  else{
 718                      document.getElementById('suppr_'+i).checked=false;
 719                  }
 720              }
 721          }
 722      }
 723  </script>\n";
 724  
 725              echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider les suppressions\" /></p>\n";
 726              echo "</form>\n";
 727  
 728              //echo "<p><i>NOTE:</i> Ajouter l'affichage du rapport s'il existe, des sauvegardes existantes,...</p>";
 729  
 730              //echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du(des) parc(s)</a>.</p>\n";
 731  
 732          }
 733          elseif($mode_rech=="clone"){
 734              if(!isset($num_op)) {
 735                  echo "<h2>Clonages en attente</h2>\n";
 736  
 737                  $sql="SELECT * FROM se3_tftp_action WHERE type='udpcast_emetteur' ORDER BY num_op;";
 738                  $res=mysql_query($sql);
 739                  if(mysql_num_rows($res)>0) {
 740  
 741                      echo "<table class='crob'>\n";
 742                      echo "<tr>\n";
 743                      echo "<th>Numéro d'opération</th>\n";
 744                      echo "<th>Emetteur</th>\n";
 745                      echo "<th>Clones</th>\n";
 746                      echo "<th>Disque/Partition</th>\n";
 747                      echo "<th>Port</th>\n";
 748                      echo "<th>Compression</th>\n";
 749                      echo "</tr>\n";
 750                      while($lig=mysql_fetch_object($res)) {
 751                          echo "<tr>\n";
 752                          echo "<td><a href='".$_SERVER['PHP_SELF']."?num_op=$lig->num_op&amp;mode_rech=clone'>$lig->num_op</a></td>\n";
 753                          echo "<td>$lig->name</td>\n";
 754  
 755                          echo "<td>";
 756                          $sql="SELECT * FROM se3_tftp_action WHERE num_op='$lig->num_op' AND type='udpcast_recepteur' ORDER BY name;";
 757                          //echo "$sql<br />";
 758                          $res2=mysql_query($sql);
 759                          if(mysql_num_rows($res2)>0) {
 760                              $cpt=0;
 761                              while($lig2=mysql_fetch_object($res2)) {
 762                                  if($cpt>0) {echo ", ";}
 763                                      echo $lig2->name;
 764                                  $cpt++;
 765                              }
 766                          }
 767                          else {
 768                              echo "<span style='color:red'>Aucun récepteur</span>";
 769                          }
 770                          echo "</td>\n";
 771  
 772                          // Rechercher dans le fichier de conf... ou dans $lig->infos
 773                          $tab_infos=decoupe_infos($lig->infos);
 774                          echo "<td>";
 775                          if(isset($tab_infos['disk'])) {echo $tab_infos['disk'];}else{echo "<span style='color:red'>NaN</span>";}
 776                          echo "</td>\n";
 777                          echo "<td>";
 778                          if(isset($tab_infos['port'])) {echo $tab_infos['port'];}else{echo "<span style='color:red'>NaN</span>";}
 779                          echo "</td>\n";
 780                          echo "<td>";
 781                          if(isset($tab_infos['compr'])) {echo $tab_infos['compr'];}else{echo "<span style='color:red'>NaN</span>";}
 782                          echo "</td>\n";
 783                          echo "</tr>\n";
 784                      }
 785                      echo "</table>\n";
 786  
 787                      echo "<p><i>A FAIRE:</i></p>\n";
 788                      echo "<ul>\n";
 789                      echo "<li>Permettre d'ajouter une ou des machines dans une opération de clonage</li>\n";
 790                      echo "<li>Supprimer automatiquement les opérations udpcast_recepteur si on supprime l'action udpcast_emetteur</li>\n";
 791                      echo "</ul>\n";
 792                  }
 793                  else {
 794                      echo "<p>Aucun clonage n'est en attente.</p>\n";
 795                  }
 796              }
 797              else {
 798                  echo "<h2>Clonage n°$num_op</h2>\n";
 799  
 800                  $sql="SELECT * FROM se3_tftp_action WHERE num_op='$num_op';";
 801                  $res=mysql_query($sql);
 802                  $nombre_machine=mysql_num_rows($res);
 803                  if($nombre_machine>0) {
 804  
 805                      echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 806                      echo "<input type=\"hidden\" name=\"mode_rech\" value=\"$mode_rech\" />\n";
 807  
 808                      echo "<table class='crob'>\n";
 809                      echo "<tr>\n";
 810                      echo "<th>Numéro d'opération</th>\n";
 811                      echo "<th>Nom</th>\n";
 812                      echo "<th>Statut</th>\n";
 813                      echo "<th>Supprimer l'action<br />\n";
 814                      echo "<a href='#' onclick='check_suppr(\"check\");return false'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Tout cocher\" title=\"Tout cocher\" /></a>\n";
 815                      echo " / <a href='#' onclick='check_suppr(\"uncheck\");return false'><img src=\"../elements/images/disabled.gif\" border='0' alt=\"Tout décocher\" title=\"Tout décocher\" /></a>\n";
 816                      echo "</th>\n";
 817                      echo "</tr>\n";
 818  
 819                      $cpt=0;
 820                      while($lig=mysql_fetch_object($res)) {
 821                          echo "<tr>\n";
 822                          echo "<td>$lig->num_op</td>\n";
 823                          echo "<td>$lig->name</td>\n";
 824                          echo "<td>";
 825                          if($lig->type=="udpcast_emetteur") {echo "Emetteur";} else {echo "Récepteur";}
 826                          echo "</td>\n";
 827  
 828                          echo "<td>\n";
 829                          echo "<input type='checkbox' name='suppr[]' id='suppr_".$cpt."' value='$lig->id' />\n";
 830                          echo "</td>\n";
 831  
 832                          echo "</tr>\n";
 833                          $cpt++;
 834                      }
 835  
 836                      echo "</table>\n";
 837  
 838                      echo "<script type='text/javascript'>
 839  	function check_suppr(mode) {
 840          for(i=0;i<$nombre_machine;i++){
 841              if(document.getElementById('suppr_'+i)){
 842                  if(mode=='check'){
 843                      document.getElementById('suppr_'+i).checked=true;
 844                  }
 845                  else{
 846                      document.getElementById('suppr_'+i).checked=false;
 847                  }
 848              }
 849          }
 850      }
 851  </script>\n";
 852  
 853                      echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider les suppressions\" /></p>\n";
 854                      echo "</form>\n";
 855                  }
 856                  else {
 857                      echo "<p>Aucune machine ne correspond au numéro d'opération choisi.</p>\n";
 858                  }
 859              }
 860              //echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au menu de consultation</a>.</p>\n";
 861          }
 862          echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au menu de consultation</a>.</p>\n";
 863      }
 864  }
 865  else {
 866      print (gettext("Vous n'avez pas les droits nécessaires pour ouvrir cette page..."));
 867  }
 868  
 869  // Footer
 870  include ("pdp.inc.php");
 871  
 872  ?>


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