[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  <?php
   2  /* $Id: action_svg_tftp.php 8426 2015-02-03 08:08:34Z 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#Programmer_une_sauvegarde";
  22  
  23  // On active les rapports d'erreurs:
  24  //error_reporting(E_ALL);
  25  
  26  // Bibliothèque prototype Ajax pour afficher en décalé l'état des machines:
  27  echo "<script type='text/javascript' src='../includes/prototype.js'></script>\n";
  28  
  29  // CSS pour mes tableaux:
  30  echo "<link type='text/css' rel='stylesheet' href='tftp.css' />\n";
  31  
  32  if ((is_admin("system_is_admin",$login)=="Y")||(ldap_get_right("parc_can_clone",$login)=="Y"))
  33  {
  34      // Choix des parcs:
  35      $parc=isset($_POST['parc']) ? $_POST['parc'] : (isset($_GET['parc']) ? $_GET['parc'] : NULL);
  36      // Choix des machines:
  37      $id_machine=isset($_POST['id_machine']) ? $_POST['id_machine'] : (isset($_GET['id_machine']) ? $_GET['id_machine'] : NULL);
  38  
  39      $parametrage_action=isset($_POST['parametrage_action']) ? $_POST['parametrage_action'] : (isset($_GET['parametrage_action']) ? $_GET['parametrage_action'] : NULL);
  40  
  41      $pref_distrib_svgrest=crob_getParam('pref_distrib_svgrest');
  42      if(($pref_distrib_svgrest=='slitaz')||($pref_distrib_svgrest=='sysresccd')) {$valeur_par_defaut=$pref_distrib_svgrest;}
  43      else {$valeur_par_defaut="slitaz";}
  44      $distrib=isset($_POST['distrib']) ? $_POST['distrib'] : $valeur_par_defaut;
  45      $sysresccd_kernel=isset($_POST['sysresccd_kernel']) ? $_POST['sysresccd_kernel'] : "rescue32";
  46  
  47      /*
  48      // Création de la table dès que possible:
  49      $sql="CREATE TABLE IF NOT EXISTS se3_tftp_action (
  50              id INT(11),
  51              mac VARCHAR(255),
  52              name VARCHAR(255),
  53              date INT(11),
  54              type VARCHAR(255),
  55              num_op INT(11)
  56              );";
  57      $creation_table=mysql_query($sql);
  58      */
  59      creation_tftp_tables();
  60  
  61      // Paramètres SliTaz:
  62      $nom_image=isset($_POST['nom_image']) ? $_POST['nom_image'] : (isset($_GET['nom_image']) ? $_GET['nom_image'] : NULL);
  63      $src_part=isset($_POST['src_part']) ? $_POST['src_part'] : (isset($_GET['src_part']) ? $_GET['src_part'] : NULL);
  64      $dest_part=isset($_POST['dest_part']) ? $_POST['dest_part'] : (isset($_GET['dest_part']) ? $_GET['dest_part'] : NULL);
  65      $auto_reboot=isset($_POST['auto_reboot']) ? $_POST['auto_reboot'] : (isset($_GET['auto_reboot']) ? $_GET['auto_reboot'] : NULL);
  66      $delais_reboot=isset($_POST['delais_reboot']) ? $_POST['delais_reboot'] : (isset($_GET['delais_reboot']) ? $_GET['delais_reboot'] : NULL);
  67  
  68      // Paramètres concernant l'action immédiate sur les machines choisies:
  69      $wake=isset($_POST['wake']) ? $_POST['wake'] : (isset($_GET['wake']) ? $_GET['wake'] : "n");
  70      $shutdown_reboot=isset($_POST['shutdown_reboot']) ? $_POST['shutdown_reboot'] : (isset($_GET['shutdown_reboot']) ? $_GET['shutdown_reboot'] : NULL);
  71  
  72  
  73      $type_dest_part=isset($_POST['type_dest_part']) ? $_POST['type_dest_part'] : "partition";
  74      $dest_srv=isset($_POST['dest_srv']) ? $_POST['dest_srv'] : "";
  75      $dest_partage=isset($_POST['dest_partage']) ? $_POST['dest_partage'] : "";
  76      $dest_sous_dossier=isset($_POST['dest_sous_dossier']) ? $_POST['dest_sous_dossier'] : "";
  77      $dest_compte=isset($_POST['dest_compte']) ? $_POST['dest_compte'] : "";
  78      $dest_mdp=isset($_POST['dest_mdp']) ? $_POST['dest_mdp'] : "";
  79  
  80      $type_svg=isset($_POST['type_svg']) ? $_POST['type_svg'] : "partimage";
  81  
  82      echo "<h1>".gettext("Action sauvegarde TFTP")."</h1>\n";
  83  
  84      $restriction_parcs="n";
  85      if(is_admin("system_is_admin",$login)!="Y") {
  86          $restriction_parcs="y";
  87          $tab_delegated_parcs=list_delegated_parcs($login);
  88          if(count($tab_delegated_parcs)==0) {
  89              echo "<p>Aucun parc ne vous a été délégué.</p>\n";
  90              include ("pdp.inc.php");
  91              die();
  92          }
  93      }
  94  
  95      //echo "is_machine_in_parc('xpbof', 'parc_xp')=".is_machine_in_parc('xpbof', 'parc_xp')."<br />";
  96  
  97      $temoin_fichiers_requis="y";
  98      $chemin_tftpboot="/tftpboot";
  99      $tab_udpcast_file=array("bzImage", "rootfs.gz");
 100      for($loop=0;$loop<count($tab_udpcast_file);$loop++) {
 101          if(!file_exists($chemin_tftpboot."/".$tab_udpcast_file[$loop])) {
 102              echo "<span style='color:red'>".$chemin_tftpboot."/".$tab_udpcast_file[$loop]." est absent.</span><br />\n";
 103              echo "Effectuez le telechargement SliTaz en <a href='config_tftp.php'>Configurer le module TFTP</a><br />\n";
 104              $temoin_fichiers_requis="n";
 105          }
 106      }
 107  
 108      if($temoin_fichiers_requis=="n") {
 109          echo "<p style='color:red'>ABANDON&nbsp;: Un ou des fichiers requis sont manquants.</p>\n";
 110          include ("pdp.inc.php");
 111          die();
 112      }
 113  
 114      if(!isset($parc)) {
 115  
 116          echo "<p>Choisissez un ou des parcs:</p>\n";
 117  
 118          $list_parcs=search_machines("objectclass=groupOfNames","parcs");
 119          if (count($list_parcs)==0) {
 120              echo "<br><br>";
 121              echo gettext("Il n'existe aucun parc. Vous devez d'abord créer un parc");
 122              include ("pdp.inc.php");
 123              exit;
 124          }
 125          sort($list_parcs);
 126  
 127          echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 128  
 129          // Affichage des parcs sur 3/4 colonnes
 130          $nb_parcs_par_colonne=round(count($list_parcs)/3);
 131          echo "<table border='0'>\n";
 132          echo "<tr valign='top'>\n";
 133          echo "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
 134          echo "<td align='left'>\n";
 135          for ($loop=0; $loop < count($list_parcs); $loop++) {
 136              if(($loop>0)&&(round($loop/$nb_parcs_par_colonne)==$loop/$nb_parcs_par_colonne)){
 137                  echo "</td>\n";
 138                  echo "<td align='left'>\n";
 139              }
 140  
 141              if(($restriction_parcs=="n")||(in_array($list_parcs[$loop]["cn"], $tab_delegated_parcs))) {
 142                  echo "<label for='parc_$loop'><input type='checkbox' id='parc_$loop' name='parc[]' value=\"".$list_parcs[$loop]["cn"]."\"";
 143                  if(count($list_parcs)==1) {echo " checked";}
 144                  echo " />".$list_parcs[$loop]["cn"]."</label>\n";
 145                  echo "<br />\n";
 146              }
 147          }
 148  
 149          echo "</td>\n";
 150          echo "</tr>\n";
 151          echo "</table>\n";
 152  
 153          echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n";
 154  
 155          echo "</form>\n";
 156  
 157  
 158          echo "<script type='text/javascript'>
 159  nb_parcs=0;
 160  id_parc='';
 161  for(i=0;i<$loop;i++) {
 162      if(document.getElementById('parc_'+i)) {
 163          nb_parcs++;
 164          id_parc='parc_'+i;
 165      }
 166  }
 167  if(nb_parcs==1) {
 168      document.getElementById(id_parc).checked=true;
 169  }
 170  </script>\n";
 171  
 172          echo "<p><a href='index.php'>Retour à l'index</a>.</p>\n";
 173      }
 174      else {
 175          if(!isset($_POST['parametrage_action'])) {
 176  
 177              echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 178              echo "<input type=\"hidden\" name=\"parametrage_action\" value=\"1\" />\n";
 179              $max_eff_parc=0;
 180              for($i=0;$i<count($parc);$i++){
 181  
 182                  echo "<h2>Parc $parc[$i]</h2>\n";
 183                  echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n";
 184  
 185                  $mp=gof_members($parc[$i],"parcs",1);
 186                  $nombre_machine=count($mp);
 187                  sort($mp);
 188  
 189                  //echo "<table border='1'>\n";
 190                  echo "<table class='crob'>\n";
 191                  echo "<tr>\n";
 192  
 193                  echo "<th>Nom</th>\n";
 194                  echo "<th>Etat</th>\n";
 195                  echo "<th>Session</th>\n";
 196                  echo "<th>Config DHCP</th>\n";
 197                                  echo "<th>Dernier Rapport</th>\n";
 198                                  
 199  
 200                  //echo "<th>Sauvegarde</th>\n";
 201                  echo "<th>Sauvegarde<br />\n";
 202                  echo "<a href='#' onclick='check_machine($i,\"check\");return false'><img src=\"../elements/images/enabled.gif\" border='0' alt=\"Tout cocher\" title=\"Tout cocher\" /></a>\n";
 203                  echo " / <a href='#' onclick='check_machine($i,\"uncheck\");return false'><img src=\"../elements/images/disabled.gif\" border='0' alt=\"Tout décocher\" title=\"Tout décocher\" /></a>\n";
 204                  echo "</th>\n";
 205                  echo "<th>Actions programmées</th>\n";
 206                  echo "</tr>\n";
 207  
 208                  for ($loop=0; $loop < count($mp); $loop++) {
 209                      $mpenc=urlencode($mp[$loop]);
 210  
 211                      // Test si on a une imprimante ou une machine
 212                      $resultat=search_imprimantes("printer-name=$mpenc","printers");
 213                      $suisje_printer="non";
 214                      for ($loopp=0; $loopp < count($resultat); $loopp++) {
 215                          if ($mpenc==$resultat[$loopp]['printer-name']) {
 216                              $suisje_printer="yes";
 217                              continue;
 218                          }
 219                      }
 220  
 221                      if($suisje_printer=="non") {
 222                          // Réinitialisation:
 223                          $id_machine="";
 224  
 225                          echo "<tr>\n";
 226                          echo "<td width='20%'>".$mp[$loop]."</td>\n";
 227  
 228                          // Etat: allumé ou éteint
 229                          echo "<td width='20%'>";
 230                          $mp_curr=search_machines2("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 231                          if ($mp_curr[0]["ipHostNumber"]) {
 232                              $iphost=$mp_curr[0]["ipHostNumber"];
 233  
 234                              echo "<div id='divip$loop'>Patientez</div>\n";
 235                              echo "<script type='text/javascript'>
 236                                  // <![CDATA[
 237                                  new Ajax.Updater($('divip$loop'),'ajax_lib.php?ip=$iphost&mode=ping_ip',{method: 'get'});
 238                                  //]]>
 239                              </script>\n";
 240                          }
 241                          echo "</td>\n";
 242  
 243  
 244                          // Session: ouverte ou pas... sous quelle identité
 245                          echo "<td width='20%'>\n";
 246                          echo "<div id='divsession$loop'>Patientez</div>\n";
 247                          echo "<script type='text/javascript'>
 248                              // <![CDATA[
 249                              new Ajax.Updater($('divsession$loop'),'ajax_lib.php?nom_machine=".$mp[$loop]."&mode=session',{method: 'get'});
 250                              //]]>
 251                          </script>\n";
 252                          echo "</td>\n";
 253  
 254  
 255                          // Etat config DHCP:
 256                          // Par la suite il ne faudra pas prendre les IP dans l'annuaire,
 257                          // mais dans la config DHCP parce que ce sont ces IP qui seront attribuées lors du boot PXE
 258                          echo "<td width='20%'>\n";
 259                          //$mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 260                          if ($mp_curr[0]["macAddress"]) {
 261                              $sql="SELECT * FROM se3_dhcp WHERE mac='".$mp_curr[0]["macAddress"]."';";
 262                              //echo "$sql<br />";
 263                              $res=mysql_query($sql);
 264                              if(mysql_num_rows($res)>0) {
 265                                  $lig=mysql_fetch_object($res);
 266                                  $id_machine=$lig->id;
 267  
 268                                  //echo $lig->ip;
 269                                  echo "<img src=\"../elements/images/enabled.gif\" border='0' alt=\"$lig->ip\" title=\"$lig->ip\" />";
 270                              }
 271                              else {
 272                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse IP attribuée\" title=\"Pas d'adresse IP attribuée\" />";
 273                              }
 274                          }
 275                          else {
 276                              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???\" />";
 277                          }
 278                          echo "</td>\n";
 279  
 280                                                  //dernier rapport
 281                                                  
 282                                                  $sql="SELECT * FROM se3_tftp_rapports WHERE name='".$mp[$loop]."' ORDER BY date DESC LIMIT 1;";
 283                                                  $res_rapport_tftp=mysql_query($sql);
 284                                                  if(mysql_num_rows($res_rapport_tftp)>0) {
 285                                                      $lig=mysql_fetch_object($res_rapport_tftp);
 286                                                      echo "<td align=\"center\">";
 287                                                      echo "<span style='font-size: x-small;' title='Dernier rapport: $lig->tache ($lig->statut)'><a href=\"../tftp/visu_rapport.php?id_machine=$lig->id\" target='_blank'>".$lig->date."</a></span>\n";
 288                                                      $st="$lig->statut";
 289                                                      if($st=="SUCCES") {
 290                              $cl="green";
 291                              } else {
 292                              $cl="red";
 293                                                          }
 294                                                      echo "<FONT color=$cl size=1>"."$lig->statut"."</font>";
 295                                                      echo "</td>\n";
 296                                                  }
 297                                                  else {
 298                                                      echo "<td align=\"center\" style='color:purple'>".gettext("Aucun rapport")."</td>\n";
 299                                                      }
 300                                                  
 301                                                  
 302                          // Sélection des machines à sauvegarder:
 303                          echo "<td width='20%'>\n";
 304                          /*
 305                          foreach($mp_curr[0] as $champ => $valeur) {
 306                              echo "\$mp_curr[0]['$champ']=$valeur<br />";
 307                          }
 308                          */
 309                          if($id_machine!=""){
 310                              echo "<input type='checkbox' name='id_machine[]' id='machine_".$i."_".$loop."' value='$id_machine' />\n";
 311                          }
 312                          else {
 313                              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\" />";
 314                          }
 315                          echo "</td>\n";
 316  
 317  
 318                          // Action programmée
 319                          echo "<td>\n";
 320                          if($id_machine!=""){
 321                              $sql="SELECT * FROM se3_tftp_action WHERE id='".$id_machine."';";
 322                              $res=mysql_query($sql);
 323                              if(mysql_num_rows($res)>0) {
 324                                  $lig=mysql_fetch_object($res);
 325                                  echo "<a href='visu_action.php?id_machine=$id_machine' target='_blank'>$lig->type programmé(e)</a>";
 326                              }
 327                              else {
 328                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'action programmée\" title=\"Pas d'action programmée\" />";
 329                              }
 330                          }
 331                          echo "</td>\n";
 332  
 333                          echo "</tr>\n";
 334                      }
 335                  }
 336                  echo "</table>\n";
 337                  if($max_eff_parc<$loop) {$max_eff_parc=$loop;}
 338              }
 339  
 340              echo "<script type='text/javascript'>
 341  	function check_machine(num_parc,mode) {
 342          for(i=0;i<$max_eff_parc;i++){
 343              if(document.getElementById('machine_'+num_parc+'_'+i)){
 344                  if(mode=='check'){
 345                      document.getElementById('machine_'+num_parc+'_'+i).checked=true;
 346                  }
 347                  else{
 348                      document.getElementById('machine_'+num_parc+'_'+i).checked=false;
 349                  }
 350              }
 351          }
 352      }
 353  </script>\n";
 354  
 355              echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n";
 356              echo "</form>\n";
 357  
 358  
 359          }
 360          else {
 361              $validation_parametres=isset($_POST['validation_parametres']) ? $_POST['validation_parametres'] : (isset($_GET['validation_parametres']) ? $_GET['validation_parametres'] : NULL);
 362              //$validation_parametres2=isset($_POST['validation_parametres2']) ? $_POST['validation_parametres2'] : (isset($_GET['validation_parametres2']) ? $_GET['validation_parametres2'] : NULL);
 363  
 364              //if((!isset($validation_parametres))&&(!isset($validation_parametres2))) {
 365              if(!isset($validation_parametres)) {
 366                  echo "<h2>Paramétrage de la sauvegarde</h2>\n";
 367  
 368                  $nombre_machines=count($id_machine);
 369                  if($nombre_machines==0){
 370                      echo "<p>ERREUR: Il faut choisir au moins une machine.</p>\n";
 371  
 372                      echo "<p><a href='#' onclick='history.go(-1);'>Retour au choix des machines à sauvegarder</a>.</p>\n";
 373  
 374                      echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n";
 375                      include ("pdp.inc.php");
 376                      exit();
 377                  }
 378  
 379                  echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\" name=\"form1\">\n";
 380                  echo "<input type=\"hidden\" name=\"parametrage_action\" value=\"1\" />\n";
 381                  // Liste des parcs:
 382                  for($i=0;$i<count($parc);$i++){
 383                      echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n";
 384                  }
 385  
 386                  // Liste des machines sur lesquelles lancer la sauvegarde:
 387                  $chaine="";
 388                  for($i=0;$i<count($id_machine);$i++){
 389                      if($i>0) {$chaine.=", ";}
 390                      $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';";
 391                      //echo "$sql<br />";
 392                      $res=mysql_query($sql);
 393                      if(mysql_num_rows($res)>0) {
 394                          $lig=mysql_fetch_object($res);
 395                          $chaine.=$lig->name;
 396                          echo "<input type=\"hidden\" name=\"id_machine[]\" value=\"$id_machine[$i]\" />\n";
 397                      }
 398                  }
 399                  if(count($id_machine)>1){$s="s";}else{$s="";}
 400                  echo "<p>Machine$s concernée$s: $chaine</p>\n";
 401  
 402  
 403                  // Date pour le nom de l'image à générer:
 404                  $aujourdhui = getdate();
 405                  $mois_se3 = sprintf("%02d",$aujourdhui['mon']);
 406                  $jour_se3 = sprintf("%02d",$aujourdhui['mday']);
 407                  $annee_se3 = $aujourdhui['year'];
 408                  $heure_se3 = sprintf("%02d",$aujourdhui['hours']);
 409                  $minute_se3 = sprintf("%02d",$aujourdhui['minutes']);
 410                  $seconde_se3 = sprintf("%02d",$aujourdhui['seconds']);
 411  
 412                  $date_se3=$annee_se3.$mois_se3.$jour_se3;
 413  
 414                  echo "<p>Choisissez les paramètres de sauvegarde: <br />\n";
 415  
 416                  $temoin_sysresccd=check_sysresccd_files();
 417  
 418                  if($temoin_sysresccd=="y") {
 419                      // Il faut aussi le noyau et l'initram.igz dans /tftpboot, 
 420                      echo "<input type='radio' name='distrib' id='distrib_slitaz' value='slitaz' onchange='affiche_sections_distrib()' ";
 421                      if($pref_distrib_svgrest!="sysresccd") {echo "checked ";}
 422                      echo "/><label for='distrib_slitaz'>Utiliser la distribution SliTaz</label><br />\n";
 423                      echo "<input type='radio' name='distrib' id='distrib_sysresccd' value='sysresccd' onchange='affiche_sections_distrib()' ";
 424                      if($pref_distrib_svgrest=="sysresccd") {echo "checked ";}
 425                      echo "/><label for='distrib_sysresccd'>Utiliser la distribution SysRescCD</label> (<i>plus long à booter et 300Mo de RAM minimum, mais meilleure détection des pilotes</i>)<br />\n";
 426  
 427  echo "<div id='div_sysresccd_kernel'>\n";
 428  echo "<table border='0'>\n";
 429  echo "<tr>\n";
 430  echo "<td valign='top'>\n";
 431  echo "Utiliser le noyau&nbsp;: ";
 432  echo "</td>\n";
 433  echo "<td>\n";
 434  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_auto' value='auto' checked /><label for='sysresccd_kernel_auto'>auto</label><br />\n";
 435  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_rescue32' value='rescue32' /><label for='sysresccd_kernel_rescue32'>rescue32</label><br />\n";
 436  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_altker32' value='altker32' /><label for='sysresccd_kernel_altker32'>altker32</label><br />\n";
 437  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_rescue64' value='rescue64' /><label for='sysresccd_kernel_rescue64'>rescue64</label><br />\n";
 438  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_altker64' value='altker64' /><label for='sysresccd_kernel_altker64'>altker64</label><br />\n";
 439  echo "</td>\n";
 440  echo "</tr>\n";
 441  echo "</table>\n";
 442  echo "</div>\n";
 443  
 444                  }
 445                  else {
 446                      echo "<p style='color:red'>SysRescCD est absent (<em>c'est pourtant le choix recommandé</em>).<br />Vous pouvez provoquer le téléchargement dans le menu Serveur TFTP/Configurer le module.<br />A défaut, SliTaz sera utilisé.</p>\n";
 447                      echo "<input type=\"hidden\" name=\"distrib\" value=\"slitaz\" />\n";
 448                  }
 449  
 450                  echo "<table border='0'>\n";
 451                  echo "<tr><td>Nom de la sauvegarde: </td><td><input type='text' name='nom_image' value='image_$date_se3' />\n";
 452                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Si vous laissez vide, un nom du type image_NOM_PARTITION_DATE_HEURE_MINUTE_SECONDE sera utilisé.')")."\"><img name=\"action_image1\"  src=\"../elements/images/help-info.gif\"></u>\n";
 453                  echo "</td></tr>\n";
 454  
 455                  echo "<tr><td>Partition à sauvegarder: </td><td><input type='text' name='src_part' value='auto' />\n";
 456                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Proposer hda1, sda1,... selon les cas, ou laissez \'auto\' si la première partition du disque est bien la partition système à sauvegarder.')")."\"><img name=\"action_image2\"  src=\"../elements/images/help-info.gif\"></u>\n";
 457                  echo "</td></tr>\n";
 458  
 459                  /*
 460                  echo "<tr><td>Partition de stockage: </td><td><input type='text' name='dest_part' value='auto' />\n";
 461                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Proposer hda5, sda5,... selon les cas, ou laissez \'auto\' si la première partition Linux (<i>ou à défaut W$ après la partition système</i>) est bien la partition de stockage.')")."\"><img name=\"action_image3\"  src=\"../elements/images/help-info.gif\"></u>\n";
 462                  echo "</td></tr>\n";
 463                  */
 464  
 465                  $srcd_scripts_vers=crob_getParam('srcd_scripts_vers');
 466                  if(($temoin_sysresccd=="y")&&($srcd_scripts_vers!='')&&($srcd_scripts_vers>=20111005)) {
 467                      echo "<tr><td><input type='radio' name='type_dest_part' id='type_dest_part_partition' value='partition' checked /><label for='type_dest_part_partition'> Partition de stockage: </label></td><td><input type='text' name='dest_part' value='auto' />\n";
 468                      echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Proposer hda5, sda5,... selon les cas, ou laissez \'auto\' si la première partition Linux (<i>ou à défaut W$ après la partition système</i>) est bien la partition de stockage.')")."\"><img name=\"action_image3\"  src=\"../elements/images/help-info.gif\"></u>\n";
 469                      echo "</td></tr>\n";
 470  
 471                      echo "<tr id='tr_dest_part_smb'><td style='vertical-align:top'><b>Ou</b><br /><input type='radio' name='type_dest_part' id='type_dest_part_smb' value='smb' /><label for='type_dest_part_smb'> Effectuer une sauvegarde vers un partage Window$/Samba&nbsp;:</label><br />(<i>tous les champs doivent être renseignés<br />si vous optez pour ce choix</i>)</td>\n";
 472                      echo "<td>\n";
 473  
 474                          $svg_default_srv=crob_getParam('svg_default_srv');
 475                          if($svg_default_srv=='') {$svg_default_srv=crob_getParam('se3ip');}
 476                          $svg_default_partage=crob_getParam('svg_default_partage');
 477                          $svg_default_dossier=crob_getParam('svg_default_dossier');
 478                          $svg_default_compte=crob_getParam('svg_default_compte');
 479  
 480                          echo "<table>\n";
 481                          echo "<tr>\n";
 482                          echo "<td>Serveur&nbsp;:</td>\n";
 483  
 484                          echo "<td><input type='text' name='dest_srv' id='dest_srv' value='".$svg_default_srv."' onchange=\"document.getElementById('type_dest_part_smb').checked=true;\" /></td>\n";
 485                          echo "</tr>\n";
 486  
 487                          echo "<tr>\n";
 488                          echo "<td>Partage&nbsp;:</td>\n";
 489                          echo "<td><input type='text' name='dest_partage' id='dest_partage' value='$svg_default_partage' onchange=\"document.getElementById('type_dest_part_smb').checked=true;\" /></td>\n";
 490                          echo "</tr>\n";
 491  
 492                          echo "<tr>\n";
 493                          echo "<td>Sous-dossier&nbsp;:</td>\n";
 494                          echo "<td><input type='text' name='dest_sous_dossier' id='dest_sous_dossier' value='$svg_default_dossier' onchange=\"document.getElementById('type_dest_part_smb').checked=true;\" /></td>\n";
 495                          echo "</tr>\n";
 496  
 497                          echo "<tr>\n";
 498                          echo "<td>Compte&nbsp;:</td>\n";
 499                          echo "<td><input type='text' name='dest_compte' id='dest_compte' value='$svg_default_compte' onchange=\"document.getElementById('type_dest_part_smb').checked=true;\" /></td>\n";
 500                          echo "</tr>\n";
 501  
 502                          echo "<tr>\n";
 503                          echo "<td style='vertical-align:top'>Mot de passe&nbsp;:</td>\n";
 504                          echo "<td><input type='text' name='dest_mdp' id='dest_mdp' value='' onchange=\"document.getElementById('type_dest_part_smb').checked=true;\" autocomplete=\"off\" /><br /><b>Attention&nbsp;:</b> Le mot de passe circule en clair.<br />Evitez d'utiliser un compte comme admin ou adminse3.</td>\n";
 505                          echo "</tr>\n";
 506                          echo "</table>\n";
 507                      echo "</td></tr>\n";
 508  
 509                      echo "<tr><td style='vertical-align:top'>Type de sauvegarde&nbsp;: </td>\n";
 510                      echo "<td>\n";
 511                      echo "<input type='radio' name='type_svg' id='type_svg_partimage' value='partimage' ";
 512                      $svg_default_type_svg=crob_getParam('svg_default_type_svg');
 513                      if(($svg_default_type_svg=="")||($svg_default_type_svg=="partimage")) {
 514                          echo "checked ";
 515                      }
 516                      echo "/><label for='type_svg_partimage'> partimage</label><br />\n";
 517                      echo "<input type='radio' name='type_svg' id='type_svg_ntfsclone' value='ntfsclone' ";
 518                      if($svg_default_type_svg=="ntfsclone") {
 519                          echo "checked ";
 520                      }
 521                      echo " /><label for='type_svg_ntfsclone'> ntfsclone</label><br />\n";
 522                      echo "<input type='radio' name='type_svg' id='type_svg_fsarchiver' value='fsarchiver' ";
 523                      if($svg_default_type_svg=="fsarchiver") {
 524                          echo "checked ";
 525                      }
 526                      echo "/><label for='type_svg_fsarchiver'> fsarchiver</label><br />\n";
 527                      echo "</td></tr>\n";
 528                  }
 529                  else {
 530                      echo "<tr><td>Partition de stockage: </td><td><input type='text' name='dest_part' value='auto' />\n";
 531                      echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Proposer hda5, sda5,... selon les cas, ou laissez \'auto\' si la première partition Linux (<i>ou à défaut W$ après la partition système</i>) est bien la partition de stockage.')")."\"><img name=\"action_image3\"  src=\"../elements/images/help-info.gif\"></u>\n";
 532                      echo "</td></tr>\n";
 533                  }
 534  
 535  // Proposer de supprimer Toutes les sauvegardes anterieures (all) ou de plus de N mois
 536  // Modifier sauve_part.sh pour SysRescCD
 537  // Modifier pxe_gen_cfg.sh pour prendre en compte del_old_svg
 538                  echo "<tr><td>Supprimer les sauvegardes antérieures: </td><td><input type='checkbox' name='suppr_old_svg' value='y' />\n";
 539                  //echo "<br />\n";
 540                  echo "&nbsp;";
 541                  echo "<select name='del_old_svg'>\n";
 542                  echo "<option value='all'>Toutes les sauvegardes antérieures</option>\n";
 543                  for($loop=1;$loop<=24;$loop++) {
 544                      echo "<option value='$loop'>Les sauvegardes de plus de $loop mois</option>\n";
 545                  }
 546                  echo "</select>\n";
 547                  echo "</td></tr>\n";
 548  
 549                  if(($temoin_sysresccd=="y")&&(crob_getParam('srcd_scripts_vers')>='20110910')) {
 550                      echo "<tr id='tr_authorized_keys'>\n";
 551                      echo "<td>Url authorized_keys&nbsp;: </td>\n";
 552                      echo "<td><input type='checkbox' name='prendre_en_compte_url_authorized_keys' value='y' /> \n";
 553                      echo "<input type='text' name='url_authorized_keys' value='".crob_getParam('url_authorized_keys')."' size='40' />\n";
 554                      echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Un fichier authorized_keys peut &ecirc;tre mis en place pour permettre un acc&egrave;s SSH au poste sauvegard&eacute;.')")."\">\n";
 555                      echo "<img name=\"action_image3\"  src=\"../elements/images/help-info.gif\"></u>\n";
 556                      echo "</td>\n";
 557                      echo "</tr>\n";
 558                  }
 559  
 560                  echo "<tr><td valign='top'>Rebooter en fin de sauvegarde: </td>\n";
 561                  echo "<td>\n";
 562                  echo "<input type='radio' name='auto_reboot' value='y' checked />\n";
 563                  echo "</td>\n";
 564                  echo "</tr>\n";
 565  
 566                  echo "<tr><td valign='top'>Eteindre en fin de sauvegarde: </td>\n";
 567                  echo "<td>\n";
 568                  echo "<input type='radio' name='auto_reboot' value='halt' />\n";
 569                  echo "</td>\n";
 570                  echo "</tr>\n";
 571  
 572                  echo "<tr><td valign='top'>Ne pas rebooter ni éteindre la machine<br />en fin de sauvegarde: </td>\n";
 573                  echo "<td>\n";
 574                  echo "<input type='radio' name='auto_reboot' value='n' />\n";
 575                  echo "</td>\n";
 576                  echo "</tr>\n";
 577  
 578                  echo "<tr><td valign='top'>\n";
 579                  echo "Délai avant reboot/arrêt:</td>\n";
 580                  echo "<td>\n";
 581                  echo "<input type='text' name='delais_reboot' value='90' size='3' />\n";
 582                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Le délai doit être supérieur à 60 secondes pour permettre la récupération du rapport de sauvegarde.')")."\"><img name=\"action_image4\"  src=\"../elements/images/help-info.gif\"></u>\n";
 583                  echo "</td>\n";
 584                  echo "</tr>\n";
 585  
 586                  echo "<tr><td valign='top'>Pour la ou les machines sélectionnées: </td>\n";
 587                  echo "<td>\n";
 588                      echo "<table border='0'>\n";
 589                      echo "<tr><td valign='top'><input type='checkbox' id='wake' name='wake' value='y' checked /> </td><td><label for='wake'>Démarrer les machines par Wake-On-Lan/etherwake<br />si elles sont éteintes.</label></td></tr>\n";
 590                      echo "<tr><td valign='top'><input type='radio' id='shutdown_reboot_wait1' name='shutdown_reboot' value='wait1' /> </td><td><label for='shutdown_reboot_wait1'>Attendre le reboot des machines<br />même si aucune session n'est ouverte,</label></td></tr>\n";
 591                      echo "<tr><td valign='top'><input type='radio' id='shutdown_reboot_wait2' name='shutdown_reboot' value='wait2' checked /> </td><td><label for='shutdown_reboot_wait2'>Redémarrer les machines sans session ouverte<br />et attendre le reboot pour les machines<br />qui ont des sessions ouvertes,</label></td></tr>\n";
 592                      echo "<tr><td valign='top'><input type='radio' id='shutdown_reboot_reboot' name='shutdown_reboot' value='reboot' /> </td><td><label for='shutdown_reboot_reboot'>Redémarrer les machines<br />même si une session est ouverte (<i>pô cool</i>).</label></td></tr>\n";
 593                      echo "</table>\n";
 594                  echo "</td></tr>\n";
 595  
 596                  echo "</table>\n";
 597  
 598                  echo "<input type=\"hidden\" name=\"validation_parametres\" value=\"y\" />\n";
 599  
 600                  echo "<p id='bouton_submit' style='text-align:center; display:none;'><input type=\"button\" name=\"bouton_validation_parametres2\" value=\"Valider\" onclick=\"check_smb_et_valide_formulaire('Un ou des champs ne sont pas remplis. Etes-vous s&ucirc;r de vouloir poursuivre ?');\" /></p>\n";
 601  
 602                  echo "<noscript>";
 603                  echo "<p align='center'><input type=\"submit\" name=\"bouton_validation_parametres\" value=\"Valider\" /></p>\n";
 604                  echo "</noscript>";
 605  
 606                  echo "</form>\n";
 607  
 608  
 609  echo "<script type='text/javascript'>
 610  // Si javascript est actif, on de-cache le bouton_submit:
 611  if(document.getElementById('bouton_submit')) {document.getElementById('bouton_submit').style.display='';}
 612  
 613  function affiche_sections_distrib() {
 614      if(document.getElementById('distrib_sysresccd').checked==true) {
 615          distrib='sysresccd';
 616      }
 617      else {
 618          distrib='slitaz';
 619      }
 620      
 621      if(distrib=='slitaz') {
 622          document.getElementById('div_sysresccd_kernel').style.display='none';
 623          document.getElementById('tr_authorized_keys').style.display='none';
 624          if(document.getElementById('tr_dest_part_smb')) {document.getElementById('tr_dest_part_smb').style.display='none';}
 625      }
 626      else {
 627          document.getElementById('div_sysresccd_kernel').style.display='block';
 628          document.getElementById('tr_authorized_keys').style.display='';
 629          if(document.getElementById('tr_dest_part_smb')) {document.getElementById('tr_dest_part_smb').style.display='';}
 630      }
 631  }
 632  
 633  affiche_sections_distrib();
 634  
 635  function check_smb_et_valide_formulaire(themessage) {
 636      if(document.getElementById('type_dest_part_smb')) {
 637          if(document.getElementById('type_dest_part_smb').checked==true) {
 638              // On vérifie si les champs sont non vides
 639              dest_srv=''
 640              dest_partage=''
 641              dest_sous_dossier=''
 642              dest_compte=''
 643              dest_mdp=''
 644              if(document.getElementById('dest_srv')) {dest_srv=document.getElementById('dest_srv').value;}
 645              if(document.getElementById('dest_partage')) {dest_partage=document.getElementById('dest_partage').value;}
 646              if(document.getElementById('dest_sous_dossier')) {dest_sous_dossier=document.getElementById('dest_sous_dossier').value;}
 647              if(document.getElementById('dest_compte')) {dest_compte=document.getElementById('dest_compte').value;}
 648              if(document.getElementById('dest_mdp')) {dest_mdp=document.getElementById('dest_mdp').value;}
 649  
 650              if((dest_srv!='')&&(dest_partage!='')&&(dest_sous_dossier!='')&&(dest_compte!='')&&(dest_mdp!='')) {
 651                  document.form1.submit();
 652              }
 653              else {
 654                  var is_confirmed = confirm(themessage);
 655                  if(is_confirmed){
 656                      document.form1.submit();
 657                  }
 658              }
 659          }
 660          else {
 661              document.form1.submit();
 662          }
 663      }
 664      else {
 665          document.form1.submit();
 666      }
 667  }
 668  
 669  </script>\n";
 670  
 671                  //======================================================
 672                  $temoin_svg_existantes=0;
 673                  $chaine_tab="<p>Liste des sauvegardes existantes:</p>\n";
 674                  $chaine_tab.="<table class='crob'>\n";
 675                  $chaine_tab.="<tr>\n";
 676                  $chaine_tab.="<th>Id</th>\n";
 677                  $chaine_tab.="<th>Nom</th>\n";
 678                  $chaine_tab.="<th>Partition</th>\n";
 679                  $chaine_tab.="<th>Sauvegarde</th>\n";
 680                  $chaine_tab.="<th>Date</th>\n";
 681                  $chaine_tab.="<th>Descriptif</th>\n";
 682                  $chaine_tab.="</tr>\n";
 683                  for($i=0;$i<count($id_machine);$i++){
 684                      $sql="SELECT * FROM se3_tftp_sauvegardes WHERE id='".$id_machine[$i]."' ORDER BY date DESC;";
 685                      //echo "$sql<br />";
 686                      $res=mysql_query($sql);
 687                      if(mysql_num_rows($res)>0) {
 688                          while($lig=mysql_fetch_object($res)) {
 689                              $chaine_tab.="<tr>\n";
 690                              $chaine_tab.="<td>$lig->id</td>\n";
 691                              $chaine_tab.="<td>$lig->name</td>\n";
 692                              $chaine_tab.="<td>$lig->partition</td>\n";
 693                              $chaine_tab.="<td>$lig->image</td>\n";
 694                              $chaine_tab.="<td>".mysql_date_to_fr_date($lig->date)."</td>\n";
 695                              $chaine_tab.="<td style='text-align:left'><pre>$lig->descriptif</pre></td>\n";
 696                              $chaine_tab.="</tr>\n";
 697      
 698                              $temoin_svg_existantes++;
 699                          }
 700                      }
 701                  }
 702                  $chaine_tab.="</table>\n";
 703                  $chaine_tab.="<p><br /></p>\n";
 704                  if($temoin_svg_existantes>0) {
 705                      echo $chaine_tab;
 706                  }
 707                  //======================================================
 708  
 709                  echo "<p><i>NOTES:</i></p>\n";
 710                  echo "<ul>\n";
 711                  echo "<li>Ce choix nécessite une partition de sauvegarde sur la machine.</li>\n";
 712                  echo "<li><b>Attention:</b > Le délai avant reboot ajouté au temps de l'opération lancée doit dépasser la périodicité du script controle_actions_tftp.sh en crontab.<br />
 713                  Ce délai doit aussi permettre de récupérer en http://IP_CLIENT/~hacker/Public/*.txt des informations sur le succès ou l'échec de l'opération.<br />
 714                  Une tâche cron se charge d'effectuer le 'wget' sur les infos, puis le remplissage d'une table MySQL.<br />
 715                  La tâche cron est lancée toutes les 60s.</li>\n";
 716                  echo "<li>Si le nom de sauvegarde fourni correspond à un nom de sauvegarde existante, la sauvegarde précédente est supprimée.</li>\n";
 717                  echo "<li>Pour que la sauvegarde puisse être entièrement provoquée depuis le serveur, il faut que les postes clients soient configurés pour booter en PXE (<i>ou au moins s'éveiller (wol) en bootant sur le réseau</i>).<br />Dans le cas contraire, vous devrez passer sur les postes et presser F12 pour choisir de booter en PXE.</li>\n";
 718                  echo "</ul>\n";
 719              }
 720              else {
 721                  echo "<h2>Validation des paramètres de la sauvegarde</h2>\n";
 722                  //debug_var();
 723  
 724                  $opt_url_authorized_keys="";
 725                  if((isset($_POST['prendre_en_compte_url_authorized_keys']))&&(isset($_POST['url_authorized_keys']))&&($_POST['url_authorized_keys']!='')&&(preg_replace('|[A-Za-z0-9/:_\.\-]|','',$_POST['url_authorized_keys'])=='')) {
 726                      $opt_url_authorized_keys="url_authorized_keys=".$_POST['url_authorized_keys'];
 727                      crob_setParam('url_authorized_keys',$_POST['url_authorized_keys'],'Url fichier authorized_keys pour acces ssh aux clients TFTP');
 728                  }
 729  
 730                  echo "<p>Rappel des paramètres:</p>\n";
 731  
 732                  $sauvegarde_pref=crob_setParam('pref_distrib_svgrest', $distrib, 'Distrib preferee pour les sauvegardes et restaurations');
 733  
 734                  $temoin_sysresccd=check_sysresccd_files();
 735  
 736                  if($temoin_sysresccd=="y") {
 737                      echo "<table class='crob'>\n";
 738                      echo "<tr>\n";
 739                      echo "<th style='text-align:left;'>Distribution linux à utiliser: </th>\n";
 740                      echo "<td>\n";
 741                      echo $distrib;
 742                      if($distrib=='sysresccd') {
 743                          echo " (<i>noyau $sysresccd_kernel</i>)";
 744                      }
 745                      echo "<input type=\"hidden\" name=\"distrib\" value=\"$distrib\" />\n";
 746                      echo "</td>\n";
 747                      echo "</tr>\n";
 748                  }
 749                  else {
 750                      echo "<input type=\"hidden\" name=\"distrib\" value=\"slitaz\" />\n";
 751                      echo "<table class='crob'>\n";
 752                  }
 753  
 754                  echo "<tr>\n";
 755                  echo "<th style='text-align:left;'>Nom de l'image: </th>\n";
 756                  echo "<td>\n";
 757                  if($nom_image=="") {echo "Nom généré automatiquement lors de la sauvegarde.";} else {echo $nom_image;}
 758                  echo "</td>\n";
 759                  echo "</tr>\n";
 760  
 761                  echo "<tr>\n";
 762                  echo "<th style='text-align:left;'>Partition à sauvegarder: </th>\n";
 763                  echo "<td>\n";
 764                  if($src_part=="auto") {echo "Détectée automatiquement lors de la sauvegarde.";} else {echo $src_part;}
 765                  echo "</td>\n";
 766                  echo "</tr>\n";
 767  
 768                  if($type_dest_part=='partition') {
 769                      echo "<tr>\n";
 770                      echo "<th style='text-align:left;'>Partition de stockage de la sauvegarde: </th>\n";
 771                      echo "<td>\n";
 772                      if($dest_part=="auto") {echo "Détectée automatiquement lors de la sauvegarde.";} else {echo $dest_part;}
 773                      echo "</td>\n";
 774                      echo "</tr>\n";
 775                  }
 776                  elseif($type_dest_part=='smb') {
 777                      if($dest_srv!='') {crob_setParam('svg_default_srv',$_POST['dest_srv'],'Serveur samba par défaut de destination des sauvegardes (TFTP)');}
 778                      if($dest_partage!='') {crob_setParam('svg_default_partage',$_POST['dest_partage'],'Partage samba par défaut de destination des sauvegardes (TFTP)');}
 779                      if($dest_sous_dossier!='') {crob_setParam('svg_default_dossier',$_POST['dest_sous_dossier'],'Sous-dossier par défaut de destination des sauvegardes (TFTP)');}
 780                      if($dest_compte!='') {crob_setParam('svg_default_compte',$_POST['dest_compte'],'Compte par défaut pour le montage de la destination des sauvegardes (TFTP)');}
 781  
 782                      echo "<tr>\n";
 783                      echo "<th style='text-align:left; vertical-align:top;'>Sauvegarde dans un partage Window$/Samba: </th>\n";
 784                      echo "<td>\n";
 785                          echo "<table>\n";
 786                          echo "<tr>\n";
 787                          echo "<td>Serveur&nbsp;:</td>\n";
 788                          echo "<td>$dest_srv</td>\n";
 789                          echo "</tr>\n";
 790  
 791                          echo "<tr>\n";
 792                          echo "<td>Partage&nbsp;:</td>\n";
 793                          echo "<td>$dest_partage</td>\n";
 794                          echo "</tr>\n";
 795  
 796                          echo "<tr>\n";
 797                          echo "<td>Sous-dossier&nbsp;:</td>\n";
 798                          echo "<td>$dest_sous_dossier</td>\n";
 799                          echo "</tr>\n";
 800  
 801                          echo "<tr>\n";
 802                          echo "<td>Compte&nbsp;:</td>\n";
 803                          echo "<td>$dest_compte</td>\n";
 804                          echo "</tr>\n";
 805  
 806                          echo "<tr>\n";
 807                          echo "<td>Mot de passe&nbsp;:</td>\n";
 808                          echo "<td>XXXXXXXX</td>\n";
 809                          echo "</tr>\n";
 810                          echo "</table>\n";
 811  
 812                      echo "</td>\n";
 813                      echo "</tr>\n";
 814                  }
 815                  else {
 816                      echo "</table>\n";
 817                      echo "<p style='color:red'>ANOMALIE&nbsp;: Le type de la destination de sauvegarde est inconnu.</p>\n";
 818                      include ("pdp.inc.php");
 819                      die();
 820                  }
 821  
 822                  echo "<tr>\n";
 823                  echo "<th style='text-align:left;'>Type de sauvegarde: </th>\n";
 824                  echo "<td>";
 825                  echo $type_svg;
 826                  if($type_svg!='') {crob_setParam('svg_default_type_svg',$_POST['type_svg'],'Type par defaut des sauvegardes.');}
 827  
 828                  echo "</td>\n";
 829                  echo "</tr>\n";
 830  
 831                  if((isset($_POST['suppr_old_svg']))&&($_POST['suppr_old_svg']=='y')) {
 832                      $del_old_svg=$_POST['del_old_svg'];
 833                      echo "<tr>\n";
 834                      echo "<th style='text-align:left;'>Suppression des sauvegardes antérieures: </th>\n";
 835                      echo "<td>\n";
 836                      if($del_old_svg=="all") {echo "Toutes les sauvegardes antérieures.";} else {echo "Les sauvegardes de plus de $del_old_svg mois?";}
 837                      echo "</td>\n";
 838                      echo "</tr>\n";
 839                  }
 840  
 841                  echo "<tr>\n";
 842                  echo "<th style='text-align:left;'>Rebooter en fin de sauvegarde: </th>\n";
 843                  echo "<td>\n";
 844                  echo $auto_reboot;
 845                  echo "</td>\n";
 846                  echo "</tr>\n";
 847  
 848                  //if($auto_reboot=='y') {
 849                  if(($auto_reboot=='y')||($auto_reboot=='halt')) {
 850                      echo "<tr>\n";
 851                      echo "<th style='text-align:left;'>Délai avant reboot: </th>\n";
 852                      echo "<td>\n";
 853                      echo "$delais_reboot s";
 854                      echo "</td>\n";
 855                      echo "</tr>\n";
 856                  }
 857  
 858                  echo "</table>\n";
 859  
 860  
 861                  echo "<p>Génération du fichier dans /tftpboot/pxelinux.cfg/ pour la sauvegarde.<br />\n";
 862  
 863                  // BOUCLE SUR LA LISTE DES $id_machine[$i]
 864  
 865                  // Numéro de l'opération de sauvegarde:
 866                  $num_op=get_free_se3_action_tftp_num_op();
 867                  for($i=0;$i<count($id_machine);$i++) {
 868                      $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';";
 869                      //echo "$sql<br />";
 870                      $res=mysql_query($sql);
 871                      if(mysql_num_rows($res)==0) {
 872                          echo "<span style='color:red;'>La machine d'identifiant $id_machine[$i] n'existe pas dans 'se3_dhcp'.</span><br />\n";
 873                          $traiter_machine_courante='n';
 874                      }
 875                      else {
 876                          $temoin_erreur="n";
 877  
 878                          $lig=mysql_fetch_object($res);
 879                          $mac_machine=$lig->mac;
 880                          $nom_machine=$lig->name;
 881                          $ip_machine=$lig->ip;
 882  
 883                          if($restriction_parcs=="y") {
 884                              $temoin_erreur='y';
 885                              for($loop=0; $loop<count($tab_delegated_parcs);$loop++) {
 886                                  // La machine est-elle dans un des parcs délégués?
 887                                  if(is_machine_in_parc($nom_machine,$tab_delegated_parcs[$loop])) {$temoin_erreur='n';break;}
 888                              }
 889                          }
 890  
 891                          if($temoin_erreur=="y") {
 892                              echo "<p style='color:red'>La machine $nom_machine ne vous est pas déléguée</p>\n";
 893                          }
 894                          else {
 895                              echo "Génération pour $nom_machine: ";
 896      
 897                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 898      
 899                              $chemin="/usr/share/se3/scripts";
 900      
 901                              $ajout="";
 902                              $ajout2="";
 903                              $ajout3="";
 904                              if(isset($del_old_svg)) {
 905                                  $ajout=" '$del_old_svg'";
 906                                  $ajout2="|del_old_svg=$del_old_svg";
 907      
 908                                  $ajout3=" 'del_old_svg=$del_old_svg'";
 909                              }
 910      
 911                              if($distrib=='slitaz') {
 912                                  $ajout_kernel="";
 913                              }
 914                              else {
 915                                  $ajout_kernel="|kernel=$sysresccd_kernel";
 916                              }
 917  
 918                              if($distrib=='slitaz') {
 919                                  //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sauve' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'$ajout", $retour);
 920                                  $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sauve' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot $ajout3'", $retour);
 921                                  echo "/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sauve' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot $ajout3'<br />";
 922  
 923                                  $info_dest_part=$dest_part;
 924                              }
 925                              else {
 926                                  //echo "\$resultat=exec(\"/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'\", $retour);<br />";
 927                                  //$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' '$corrige_mac' '$ip_machine' '$nom_machine' '$nom_image' '$src_part' '$dest_part' '$auto_reboot' '$delais_reboot'$ajout", $retour);
 928                                  if($type_dest_part=='smb') {
 929                                      $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=smb:$dest_compte:$dest_mdp@$dest_srv:$dest_partage:$dest_sous_dossier type_svg=$type_svg auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $ajout3 $opt_url_authorized_keys'", $retour);
 930  
 931                                      $info_dest_part="smb:$dest_compte:XXXXXXXX@$dest_srv:$dest_partage:$dest_sous_dossier";
 932                                  }
 933                                  else {
 934                                      $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_sauve' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine nom_image=$nom_image src_part=$src_part dest_part=$dest_part type_svg=$type_svg auto_reboot=$auto_reboot delais_reboot=$delais_reboot kernel=$sysresccd_kernel $ajout3 $opt_url_authorized_keys'", $retour);
 935  
 936                                      $info_dest_part=$dest_part;
 937                                  }
 938                              }
 939      
 940                              if(count($retour)>0){
 941                                  //echo "<p>";
 942                                  //echo "<span style='color:red;'>Il semble que la génération du fichier ait échoué...</span><br />\n";
 943                                  echo "<span style='color:red;'>ECHEC de la génération du fichier</span><br />\n";
 944                                  for($j=0;$j<count($retour);$j++){
 945                                      echo "$retour[$j]<br />\n";
 946                                  }
 947                                  $temoin_erreur="y";
 948                                  //echo "</p>\n";
 949                              }
 950                              else {
 951                                  $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine[$i]';";
 952                                  $suppr=mysql_query($sql);
 953      
 954                                  $timestamp=time();
 955                                  $sql="INSERT INTO se3_tftp_action SET id='$id_machine[$i]',
 956                                                                          mac='$mac_machine',
 957                                                                          name='$nom_machine',
 958                                                                          date='$timestamp',
 959                                                                          type='sauvegarde',
 960                                                                          num_op='$num_op',
 961                                                                          infos='nom_image=$nom_image|src_part=$src_part|dest_part=$info_dest_part|auto_reboot=$auto_reboot|delais_reboot=${delais_reboot}${ajout_kernel}${ajout2}';";
 962                                  $insert=mysql_query($sql);
 963                                  if(!$insert) {
 964                                      echo "<span style='color:red;'>ECHEC de l'enregistrement dans 'se3_tftp_action'</span><br />\n";
 965                                      $temoin_erreur="y";
 966                                  }
 967      
 968                                  // Génération du lanceur de récupération:
 969                                  //$dossier="/var/se3/tmp/tftp/$id_machine[$i]";
 970                                  $dossier="/etc/se3/www-tools/tftp/$id_machine[$i]";
 971                                  if(!file_exists($dossier)) { mkdir($dossier,0700);}
 972                                  $lanceur_recup="$dossier/lanceur_recup_rapport_action_tftp.sh";
 973                                  $fich=fopen($lanceur_recup,"w+");
 974                                  $timestamp_limit=time()+4*3600;
 975                                  //fwrite($fich,"/usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'sauvegarde' '$timestamp_limit'");
 976                                  if($distrib=='slitaz') {
 977                                      $mode_sauvegarde="sauvegarde";
 978                                  }
 979                                  else {
 980                                      $mode_sauvegarde="sauvegarde_sysresccd";
 981                                  }
 982                                  fwrite($fich,"sudo /usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' '$mode_sauvegarde' '$timestamp_limit'");
 983                                  fclose($fich);
 984                                  chmod($lanceur_recup,0750);
 985      
 986                                  // Ménage dans les tâches précédentes
 987                                  @exec("sudo /usr/share/se3/scripts/se3_tftp_menage_atq.sh $id_machine[$i]",$retour);
 988      
 989                                  // Planification de la tâche
 990                                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 991                                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 992                                  if($retour) {
 993                                      echo "<span style='color:red;'>ECHEC de la planification de la tâche.</span><br />\n";
 994                                      for($j=0;$j<count($retour);$j++){echo "$retour[$j]<br />\n";}
 995                                      $temoin_erreur="y";
 996                                  }
 997      
 998                                  if($temoin_erreur=="n") {
 999                                      //echo "<span style='color:green;'>OK</span><br />\n";
1000                                      echo "<span style='color:green;'>OK</span>\n";
1001                                      // Application de l'action choisie:
1002                                      echo " <span id='wake_shutdown_or_reboot_$i'></span>";
1003      
1004                                      echo "<script type='text/javascript'>
1005                                          // <![CDATA[
1006                                          new Ajax.Updater($('wake_shutdown_or_reboot_$i'),'ajax_lib.php?ip=$ip_machine&nom=$nom_machine&mode=wake_shutdown_or_reboot&wake=$wake&shutdown_reboot=$shutdown_reboot',{method: 'get'});
1007                                          //]]>
1008                                      </script>\n";
1009      
1010      
1011                                      echo "<br />\n";
1012                                  }
1013                              }
1014                          }
1015                      }
1016                  }
1017  
1018                  // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1019                  // POUVOIR TAGUER DANS LA TABLE se3_dhcp LES MACHINES QUI PEUVENT BOOTER EN PXE
1020                  // Ajouter un champ?
1021                  // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
1022  
1023  
1024                  // On n'affiche le fichier que pour le dernier (à titre d'info):
1025                  if(isset($corrige_mac)) {
1026                      //$fich=fopen("/tftpboot/pxelinux.cfg/01-$lig1->mac","r");
1027                      $fich=fopen("/tftpboot/pxelinux.cfg/01-$corrige_mac","r");
1028                      if($fich) {
1029                          echo "<p>Pour information, voici le contenu du fichier généré:<br />\n";
1030                          echo "<pre style='border:1px solid black; color:green;'>";
1031                          while(!feof($fich)) {
1032                              $ligne=fgets($fich,4096);
1033                              echo htmlentities($ligne);
1034                          }
1035                          echo "</pre>\n";
1036                          fclose($fich);
1037                      }
1038                      else {
1039                          echo "<p style='color:red;'>Il n'a pas été possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-$corrige_mac</p>\n";
1040                      }
1041                  }
1042              }
1043          }
1044          echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n";
1045      }
1046  }
1047  else {
1048      print (gettext("Vous n'avez pas les droits nécessaires pour ouvrir cette page..."));
1049  }
1050  
1051  // Footer
1052  include ("pdp.inc.php");
1053  ?>


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