[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  <?php
   2  /* $Id: action_chgt_mdp_boot_loader.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#Changer_mdp_boot_loader";
  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      $distrib=isset($_POST['distrib']) ? $_POST['distrib'] : "slitaz";
  42      $sysresccd_kernel=isset($_POST['sysresccd_kernel']) ? $_POST['sysresccd_kernel'] : "rescue32";
  43  
  44      /*
  45      // Création de la table dès que possible:
  46      $sql="CREATE TABLE IF NOT EXISTS se3_tftp_action (
  47              id INT(11),
  48              mac VARCHAR(255),
  49              name VARCHAR(255),
  50              date INT(11),
  51              type VARCHAR(255),
  52              num_op INT(11)
  53              );";
  54      $creation_table=mysql_query($sql);
  55      */
  56      creation_tftp_tables();
  57  
  58      // Paramètres SliTaz:
  59      /*
  60      $nom_image=isset($_POST['nom_image']) ? $_POST['nom_image'] : (isset($_GET['nom_image']) ? $_GET['nom_image'] : NULL);
  61      $src_part=isset($_POST['src_part']) ? $_POST['src_part'] : (isset($_GET['src_part']) ? $_GET['src_part'] : NULL);
  62      $dest_part=isset($_POST['dest_part']) ? $_POST['dest_part'] : (isset($_GET['dest_part']) ? $_GET['dest_part'] : NULL);
  63      */
  64      $auto_reboot=isset($_POST['auto_reboot']) ? $_POST['auto_reboot'] : (isset($_GET['auto_reboot']) ? $_GET['auto_reboot'] : NULL);
  65      $delais_reboot=isset($_POST['delais_reboot']) ? $_POST['delais_reboot'] : (isset($_GET['delais_reboot']) ? $_GET['delais_reboot'] : NULL);
  66  
  67      $changer_mdp_linux=isset($_POST['changer_mdp_linux']) ? $_POST['changer_mdp_linux'] : (isset($_GET['changer_mdp_linux']) ? $_GET['changer_mdp_linux'] : "n");
  68      $changer_mdp_sauve=isset($_POST['changer_mdp_sauve']) ? $_POST['changer_mdp_sauve'] : (isset($_GET['changer_mdp_sauve']) ? $_GET['changer_mdp_sauve'] : "n");
  69      $changer_mdp_restaure=isset($_POST['changer_mdp_restaure']) ? $_POST['changer_mdp_restaure'] : (isset($_GET['changer_mdp_restaure']) ? $_GET['changer_mdp_restaure'] : "n");
  70  
  71      $mdp_linux=isset($_POST['mdp_linux']) ? $_POST['mdp_linux'] : (isset($_GET['mdp_linux']) ? $_GET['mdp_linux'] : "");
  72      $mdp_sauve=isset($_POST['mdp_sauve']) ? $_POST['mdp_sauve'] : (isset($_GET['mdp_sauve']) ? $_GET['mdp_sauve'] : "");
  73      $mdp_restaure=isset($_POST['mdp_restaure']) ? $_POST['mdp_restaure'] : (isset($_GET['mdp_restaure']) ? $_GET['mdp_restaure'] : "");
  74  
  75      // Paramètres concernant l'action immédiate sur les machines choisies:
  76      $wake=isset($_POST['wake']) ? $_POST['wake'] : (isset($_GET['wake']) ? $_GET['wake'] : "n");
  77      $shutdown_reboot=isset($_POST['shutdown_reboot']) ? $_POST['shutdown_reboot'] : (isset($_GET['shutdown_reboot']) ? $_GET['shutdown_reboot'] : NULL);
  78  
  79  
  80      echo "<h1>".gettext("Action changement de mot de passe Boot Loader")."</h1>\n";
  81  
  82      $restriction_parcs="n";
  83      if(is_admin("system_is_admin",$login)!="Y") {
  84          $restriction_parcs="y";
  85          $tab_delegated_parcs=list_delegated_parcs($login);
  86          if(count($tab_delegated_parcs)==0) {
  87              echo "<p>Aucun parc ne vous a été délégué.</p>\n";
  88              include ("pdp.inc.php");
  89              die();
  90          }
  91      }
  92  
  93      //echo "is_machine_in_parc('xpbof', 'parc_xp')=".is_machine_in_parc('xpbof', 'parc_xp')."<br />";
  94  
  95      //========================================
  96      $temoin_sysresccd=check_sysresccd_files();
  97  
  98      if($temoin_sysresccd!="y") {
  99          echo "<p style='color:red'>Le dispositif nécessite l'utilisation de SysRescCD.<br />Voir <a href='config_tftp.php'>Configuration TFTP</a></p>\n";
 100          include ("pdp.inc.php");
 101          die();
 102      }
 103  
 104      $srcd_scripts_vers=crob_getParam('srcd_scripts_vers');
 105      if(($srcd_scripts_vers=='')||($srcd_scripts_vers<20111003)) {
 106          echo "<p style='color:red'>Le dispositif nécessite des scripts SysRescCD en version supérieure ou égale à 20111003.<br />Voir <a href='config_tftp.php'>Configuration TFTP</a></p>\n";
 107          include ("pdp.inc.php");
 108          die();
 109      }
 110      //========================================
 111  
 112      if(!isset($parc)) {
 113  
 114          echo "<p>Choisissez un ou des parcs&nbsp;:</p>\n";
 115  
 116          $list_parcs=search_machines("objectclass=groupOfNames","parcs");
 117          if (count($list_parcs)==0) {
 118              echo "<br><br>";
 119              echo gettext("Il n'existe aucun parc. Vous devez d'abord créer un parc");
 120              include ("pdp.inc.php");
 121              exit;
 122          }
 123          sort($list_parcs);
 124  
 125          echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 126  
 127          // Affichage des parcs sur 3/4 colonnes
 128          $nb_parcs_par_colonne=round(count($list_parcs)/3);
 129          echo "<table border='0'>\n";
 130          echo "<tr valign='top'>\n";
 131          echo "<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>\n";
 132          echo "<td align='left'>\n";
 133          for ($loop=0; $loop < count($list_parcs); $loop++) {
 134              if(($loop>0)&&(round($loop/$nb_parcs_par_colonne)==$loop/$nb_parcs_par_colonne)){
 135                  echo "</td>\n";
 136                  echo "<td align='left'>\n";
 137              }
 138  
 139              if(($restriction_parcs=="n")||(in_array($list_parcs[$loop]["cn"], $tab_delegated_parcs))) {
 140                  echo "<label for='parc_$loop'><input type='checkbox' id='parc_$loop' name='parc[]' value=\"".$list_parcs[$loop]["cn"]."\"";
 141                  if(count($list_parcs)==1) {echo " checked";}
 142                  echo " />".$list_parcs[$loop]["cn"]."</label>\n";
 143                  echo "<br />\n";
 144              }
 145          }
 146  
 147          echo "</td>\n";
 148          echo "</tr>\n";
 149          echo "</table>\n";
 150  
 151          echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n";
 152  
 153          echo "</form>\n";
 154  
 155  
 156          echo "<script type='text/javascript'>
 157  nb_parcs=0;
 158  id_parc='';
 159  for(i=0;i<$loop;i++) {
 160      if(document.getElementById('parc_'+i)) {
 161          nb_parcs++;
 162          id_parc='parc_'+i;
 163      }
 164  }
 165  if(nb_parcs==1) {
 166      document.getElementById(id_parc).checked=true;
 167  }
 168  </script>\n";
 169  
 170          echo "<p><a href='index.php'>Retour à l'index</a>.</p>\n";
 171      }
 172      else {
 173          if(!isset($_POST['parametrage_action'])) {
 174  
 175              echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 176              echo "<input type=\"hidden\" name=\"parametrage_action\" value=\"1\" />\n";
 177              $max_eff_parc=0;
 178              for($i=0;$i<count($parc);$i++){
 179  
 180                  echo "<h2>Parc $parc[$i]</h2>\n";
 181                  echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n";
 182  
 183                  $mp=gof_members($parc[$i],"parcs",1);
 184                  $nombre_machine=count($mp);
 185                  sort($mp);
 186  
 187                  //echo "<table border='1'>\n";
 188                  echo "<table class='crob'>\n";
 189                  echo "<tr>\n";
 190  
 191                  echo "<th>Nom</th>\n";
 192                  echo "<th>Etat</th>\n";
 193                  echo "<th>Session</th>\n";
 194                  echo "<th>Config DHCP</th>\n";
 195  
 196                  //echo "<th>Sauvegarde</th>\n";
 197                  echo "<th>Changer le mot de passe<br />\n";
 198                  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";
 199                  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";
 200                  echo "</th>\n";
 201                  echo "<th>Actions programmées</th>\n";
 202                  echo "</tr>\n";
 203  
 204                  for ($loop=0; $loop < count($mp); $loop++) {
 205                      $mpenc=urlencode($mp[$loop]);
 206  
 207                      // Test si on a une imprimante ou une machine
 208                      $resultat=search_imprimantes("printer-name=$mpenc","printers");
 209                      $suisje_printer="non";
 210                      for ($loopp=0; $loopp < count($resultat); $loopp++) {
 211                          if ($mpenc==$resultat[$loopp]['printer-name']) {
 212                              $suisje_printer="yes";
 213                              continue;
 214                          }
 215                      }
 216  
 217                      if($suisje_printer=="non") {
 218                          // Réinitialisation:
 219                          $id_machine="";
 220  
 221                          echo "<tr>\n";
 222                          echo "<td width='20%'>".$mp[$loop]."</td>\n";
 223  
 224                          // Etat: allumé ou éteint
 225                          echo "<td width='20%'>";
 226                          $mp_curr=search_machines2("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 227                          if ($mp_curr[0]["ipHostNumber"]) {
 228                              $iphost=$mp_curr[0]["ipHostNumber"];
 229  
 230                              echo "<div id='divip$loop'>Patientez</div>\n";
 231                              echo "<script type='text/javascript'>
 232                                  // <![CDATA[
 233                                  new Ajax.Updater($('divip$loop'),'ajax_lib.php?ip=$iphost&mode=ping_ip',{method: 'get'});
 234                                  //]]>
 235                              </script>\n";
 236                          }
 237                          echo "</td>\n";
 238  
 239  
 240                          // Session: ouverte ou pas... sous quelle identité
 241                          echo "<td width='20%'>\n";
 242                          echo "<div id='divsession$loop'>Patientez</div>\n";
 243                          echo "<script type='text/javascript'>
 244                              // <![CDATA[
 245                              new Ajax.Updater($('divsession$loop'),'ajax_lib.php?nom_machine=".$mp[$loop]."&mode=session',{method: 'get'});
 246                              //]]>
 247                          </script>\n";
 248                          echo "</td>\n";
 249  
 250  
 251                          // Etat config DHCP:
 252                          // Par la suite il ne faudra pas prendre les IP dans l'annuaire,
 253                          // mais dans la config DHCP parce que ce sont ces IP qui seront attribuées lors du boot PXE
 254                          echo "<td width='20%'>\n";
 255                          //$mp_curr=search_machines("(&(cn=$mpenc)(objectClass=ipHost))","computers");
 256                          if ($mp_curr[0]["macAddress"]) {
 257                              $sql="SELECT * FROM se3_dhcp WHERE mac='".$mp_curr[0]["macAddress"]."';";
 258                              //echo "$sql<br />";
 259                              $res=mysql_query($sql);
 260                              if(mysql_num_rows($res)>0) {
 261                                  $lig=mysql_fetch_object($res);
 262                                  $id_machine=$lig->id;
 263  
 264                                  //echo $lig->ip;
 265                                  echo "<img src=\"../elements/images/enabled.gif\" border='0' alt=\"$lig->ip\" title=\"$lig->ip\" />";
 266                              }
 267                              else {
 268                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'adresse IP attribuée\" title=\"Pas d'adresse IP attribuée\" />";
 269                              }
 270                          }
 271                          else {
 272                              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???\" />";
 273                          }
 274                          echo "</td>\n";
 275  
 276  
 277                          // Sélection des machines à sauvegarder:
 278                          echo "<td width='20%'>\n";
 279                          /*
 280                          foreach($mp_curr[0] as $champ => $valeur) {
 281                              echo "\$mp_curr[0]['$champ']=$valeur<br />";
 282                          }
 283                          */
 284                          if($id_machine!=""){
 285                              echo "<input type='checkbox' name='id_machine[]' id='machine_".$i."_".$loop."' value='$id_machine' />\n";
 286                          }
 287                          else {
 288                              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\" />";
 289                          }
 290                          echo "</td>\n";
 291  
 292  
 293                          // Action programmée
 294                          echo "<td>\n";
 295                          if($id_machine!=""){
 296                              $sql="SELECT * FROM se3_tftp_action WHERE id='".$id_machine."';";
 297                              $res=mysql_query($sql);
 298                              if(mysql_num_rows($res)>0) {
 299                                  $lig=mysql_fetch_object($res);
 300                                  echo "<a href='visu_action.php?id_machine=$id_machine' target='_blank'>$lig->type programmé(e)</a>";
 301                              }
 302                              else {
 303                                  echo "<img src=\"../elements/images/disabled.gif\" border='0' alt=\"Pas d'action programmée\" title=\"Pas d'action programmée\" />";
 304                              }
 305                          }
 306                          echo "</td>\n";
 307  
 308                          echo "</tr>\n";
 309                      }
 310                  }
 311                  echo "</table>\n";
 312                  if($max_eff_parc<$loop) {$max_eff_parc=$loop;}
 313              }
 314  
 315              echo "<script type='text/javascript'>
 316  	function check_machine(num_parc,mode) {
 317          for(i=0;i<$max_eff_parc;i++){
 318              if(document.getElementById('machine_'+num_parc+'_'+i)){
 319                  if(mode=='check'){
 320                      document.getElementById('machine_'+num_parc+'_'+i).checked=true;
 321                  }
 322                  else{
 323                      document.getElementById('machine_'+num_parc+'_'+i).checked=false;
 324                  }
 325              }
 326          }
 327      }
 328  </script>\n";
 329  
 330              echo "<p align='center'><input type=\"submit\" name=\"submit\" value=\"Valider\" /></p>\n";
 331              echo "</form>\n";
 332  
 333  
 334          }
 335          else {
 336              $validation_parametres=isset($_POST['validation_parametres']) ? $_POST['validation_parametres'] : (isset($_GET['validation_parametres']) ? $_GET['validation_parametres'] : NULL);
 337              if(!isset($validation_parametres)) {
 338                  echo "<h2>Paramétrage du changement de mot de passe</h2>\n";
 339  
 340                  $nombre_machines=count($id_machine);
 341                  if($nombre_machines==0){
 342                      echo "<p>ERREUR&nbsp;: Il faut choisir au moins une machine.</p>\n";
 343  
 344                      echo "<p><a href='#' onclick='history.go(-1);'>Retour au choix des machines pour lesquelles changer le mot de passe du Boot Loader</a>.</p>\n";
 345  
 346                      echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n";
 347                      include ("pdp.inc.php");
 348                      exit();
 349                  }
 350  
 351                  echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 352                  echo "<input type=\"hidden\" name=\"parametrage_action\" value=\"1\" />\n";
 353                  // Liste des parcs:
 354                  for($i=0;$i<count($parc);$i++){
 355                      echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n";
 356                  }
 357  
 358                  // Liste des machines sur lesquelles lancer la sauvegarde:
 359                  $chaine="";
 360                  for($i=0;$i<count($id_machine);$i++){
 361                      if($i>0) {$chaine.=", ";}
 362                      $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';";
 363                      //echo "$sql<br />";
 364                      $res=mysql_query($sql);
 365                      if(mysql_num_rows($res)>0) {
 366                          $lig=mysql_fetch_object($res);
 367                          $chaine.=$lig->name;
 368                          echo "<input type=\"hidden\" name=\"id_machine[]\" value=\"$id_machine[$i]\" />\n";
 369                      }
 370                  }
 371                  if(count($id_machine)>1){$s="s";}else{$s="";}
 372                  echo "<p>Machine$s concernée$s&nbsp;: $chaine</p>\n";
 373  
 374  
 375                  // Date pour le nom de l'image à générer:
 376                  $aujourdhui = getdate();
 377                  $mois_se3 = sprintf("%02d",$aujourdhui['mon']);
 378                  $jour_se3 = sprintf("%02d",$aujourdhui['mday']);
 379                  $annee_se3 = $aujourdhui['year'];
 380                  $heure_se3 = sprintf("%02d",$aujourdhui['hours']);
 381                  $minute_se3 = sprintf("%02d",$aujourdhui['minutes']);
 382                  $seconde_se3 = sprintf("%02d",$aujourdhui['seconds']);
 383  
 384                  $date_se3=$annee_se3.$mois_se3.$jour_se3;
 385  
 386                  echo "<p>Choisissez les paramètres de changement de mot de passe Boot Loader&nbsp;: <br />\n";
 387  
 388                  $temoin_sysresccd=check_sysresccd_files();
 389  
 390                  if($temoin_sysresccd!="y") {
 391                      echo "<p style='color:red'>Le dispositif nécessite l'utilisation de SysRescCD.<br />Voir <a href='config_tftp.php'>Configuration TFTP</a></p>\n";
 392                      include ("pdp.inc.php");
 393                      die();
 394                  }
 395  
 396                  $srcd_scripts_vers=crob_getParam('srcd_scripts_vers');
 397                  if(($srcd_scripts_vers=='')||($srcd_scripts_vers<20111003)) {
 398                      echo "<p style='color:red'>Le dispositif nécessite des scripts SysRescCD en version supérieure ou égale à 20111003.<br />Voir <a href='config_tftp.php'>Configuration TFTP</a></p>\n";
 399                      include ("pdp.inc.php");
 400                      die();
 401                  }
 402  
 403                  if($temoin_sysresccd=="y") {
 404                      // Il faut aussi le noyau et l'initram.igz dans /tftpboot, 
 405                      //echo "<input type='radio' name='distrib' id='distrib_slitaz' value='slitaz' onchange='affiche_sections_distrib()' /><label for='distrib_slitaz'>Utiliser la distribution SliTaz</label><br />\n";
 406                      echo "<input type='hidden' name='distrib' id='distrib_slitaz' value='slitaz' />\n";
 407                      echo "<input type='radio' name='distrib' id='distrib_sysresccd' value='sysresccd' onchange='affiche_sections_distrib()' checked /><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";
 408  
 409  echo "<div id='div_sysresccd_kernel'>\n";
 410  echo "<table border='0'>\n";
 411  echo "<tr>\n";
 412  echo "<td valign='top'>\n";
 413  echo "Utiliser le noyau&nbsp;: ";
 414  echo "</td>\n";
 415  echo "<td>\n";
 416  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_auto' value='auto' checked /><label for='sysresccd_kernel_auto'>auto</label><br />\n";
 417  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_rescue32' value='rescue32' /><label for='sysresccd_kernel_rescue32'>rescue32</label><br />\n";
 418  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_altker32' value='altker32' /><label for='sysresccd_kernel_altker32'>altker32</label><br />\n";
 419  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_rescue64' value='rescue64' /><label for='sysresccd_kernel_rescue64'>rescue64</label><br />\n";
 420  echo "<input type='radio' name='sysresccd_kernel' id='sysresccd_kernel_altker64' value='altker64' /><label for='sysresccd_kernel_altker64'>altker64</label><br />\n";
 421  echo "</td>\n";
 422  echo "</tr>\n";
 423  echo "</table>\n";
 424  echo "</div>\n";
 425  
 426                  }
 427                  else {
 428                      echo "<input type=\"hidden\" name=\"distrib\" value=\"slitaz\" />\n";
 429                  }
 430  
 431                  echo "<table border='0'>\n";
 432                  echo "<tr>\n";
 433                  echo "<td>\n";
 434                  echo "<input type='checkbox' name='changer_mdp_linux' id='changer_mdp_linux' value='y' />\n";
 435                  //echo "</td>\n";
 436                  //echo "<td>\n";
 437                  echo "<label for='changer_mdp_linux'> Changer le mot de passe Linux&nbsp;: </label></td><td><input type='text' name='mdp_linux' id='mdp_linux' value='' />\n";
 438                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Si vous laissez vide, le mot de passe Linux sera vidé.')")."\"><img name=\"action_image1\"  src=\"../elements/images/help-info.gif\"></u>\n";
 439                  echo " <a href='javascript:copier_pass()'><img src='../elements/images/magic.png' width='22' height='24' alt='Recopier le mot de passe pour Sauve et Restaure' title='Recopier le mot de passe pour Sauve et Restaure' /></a>\n";
 440                  echo "</td>\n";
 441                  echo "</tr>\n";
 442  
 443                  echo "<tr>\n";
 444                  echo "<td>\n";
 445                  echo "<input type='checkbox' name='changer_mdp_sauve' id='changer_mdp_sauve' value='y' />\n";
 446                  //echo "</td>\n";
 447                  //echo "<td>\n";
 448                  echo "<label for='changer_mdp_sauve'> Changer le mot de passe Sauve&nbsp;: </label></td><td><input type='text' name='mdp_sauve' id='mdp_sauve' value='' />\n";
 449                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Si vous laissez vide, le mot de passe Sauve sera vidé.')")."\"><img name=\"action_image1\"  src=\"../elements/images/help-info.gif\"></u>\n";
 450                  echo "</td>\n";
 451                  echo "</tr>\n";
 452  
 453                  echo "<tr>\n";
 454                  echo "<td>\n";
 455                  echo "<input type='checkbox' name='changer_mdp_restaure' id='changer_mdp_restaure' value='y' />\n";
 456                  //echo "</td>\n";
 457                  //echo "<td>\n";
 458                  echo "<label for='changer_mdp_restaure'> Changer le mot de passe Restaure&nbsp;: </label></td><td><input type='text' name='mdp_restaure' id='mdp_restaure' value='' />\n";
 459                  echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Si vous laissez vide, le mot de passe Restaure sera vidé.')")."\"><img name=\"action_image1\"  src=\"../elements/images/help-info.gif\"></u>\n";
 460                  echo "</td>\n";
 461                  echo "</tr>\n";
 462                  /*
 463                  echo "<tr><td>Partition à sauvegarder: </td><td><input type='text' name='src_part' value='auto' />\n";
 464                  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";
 465                  echo "</td></tr>\n";
 466  
 467                  echo "<tr><td>Partition de stockage&nbsp;: </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  
 472                  if(($temoin_sysresccd=="y")&&(crob_getParam('srcd_scripts_vers')>='20110910')) {
 473                      echo "<tr id='tr_authorized_keys'>\n";
 474                      echo "<td>Url authorized_keys&nbsp;: </td>\n";
 475                      echo "<td><input type='checkbox' name='prendre_en_compte_url_authorized_keys' value='y' /> \n";
 476                      echo "<input type='text' name='url_authorized_keys' value='".crob_getParam('url_authorized_keys')."' size='40' />\n";
 477                      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";
 478                      echo "<img name=\"action_image3\"  src=\"../elements/images/help-info.gif\"></u>\n";
 479                      echo "</td>\n";
 480                      echo "</tr>\n";
 481                  }
 482  
 483                  echo "<tr><td valign='top'>Rebooter en fin d'op&eacute;ration&nbsp;: </td>\n";
 484                  echo "<td>\n";
 485                  echo "<input type='checkbox' name='auto_reboot' value='y' checked />\n";
 486                  echo "</td>\n";
 487                  echo "</tr>\n";
 488                  /*
 489                  echo "<tr><td valign='top'>Eteindre en fin de sauvegarde&nbsp;: </td>\n";
 490                  echo "<td>\n";
 491                  echo "<input type='radio' name='auto_reboot' value='halt' />\n";
 492                  echo "</td>\n";
 493                  echo "</tr>\n";
 494  
 495                  echo "<tr><td valign='top'>Ne pas rebooter ni éteindre la machine<br />en fin de sauvegarde&nbsp;: </td>\n";
 496                  echo "<td>\n";
 497                  echo "<input type='radio' name='auto_reboot' value='n' />\n";
 498                  echo "</td>\n";
 499                  echo "</tr>\n";
 500                  */
 501  
 502                  echo "<tr><td valign='top'>\n";
 503                  echo "Délai avant reboot/arrêt:</td>\n";
 504                  echo "<td>\n";
 505                  echo "<input type='text' name='delais_reboot' value='90' size='3' />\n";
 506                  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 d opération.')")."\"><img name=\"action_image4\"  src=\"../elements/images/help-info.gif\"></u>\n";
 507                  echo "</td>\n";
 508                  echo "</tr>\n";
 509  
 510                  echo "<tr><td valign='top'>Pour la ou les machines sélectionnées&nbsp;: </td>\n";
 511                  echo "<td>\n";
 512                      echo "<table border='0'>\n";
 513                      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";
 514                      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";
 515                      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";
 516                      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";
 517                      echo "</table>\n";
 518                  echo "</td></tr>\n";
 519  
 520                  echo "</table>\n";
 521  
 522                  echo "<p align='center'><input type=\"submit\" name=\"validation_parametres\" value=\"Valider\" /></p>\n";
 523                  echo "</form>\n";
 524  
 525  
 526  echo "<script type='text/javascript'>
 527  function copier_pass() {
 528      if((document.getElementById('mdp_linux'))&&(document.getElementById('mdp_sauve'))) {
 529          document.getElementById('mdp_sauve').value=document.getElementById('mdp_linux').value;
 530      }
 531      if((document.getElementById('mdp_linux'))&&(document.getElementById('mdp_restaure'))) {
 532          document.getElementById('mdp_restaure').value=document.getElementById('mdp_linux').value;
 533      }
 534      if(document.getElementById('changer_mdp_linux')) {
 535          document.getElementById('changer_mdp_linux').checked=true;
 536      }
 537      if(document.getElementById('changer_mdp_sauve')) {
 538          document.getElementById('changer_mdp_sauve').checked=true;
 539      }
 540      if(document.getElementById('changer_mdp_restaure')) {
 541          document.getElementById('changer_mdp_restaure').checked=true;
 542      }
 543  }
 544  
 545  function affiche_sections_distrib() {
 546      if(document.getElementById('distrib_sysresccd').checked==true) {
 547          distrib='sysresccd';
 548      }
 549      else {
 550          distrib='slitaz';
 551      }
 552      
 553      if(distrib=='slitaz') {
 554          document.getElementById('div_sysresccd_kernel').style.display='none';
 555          document.getElementById('tr_authorized_keys').style.display='none';
 556      }
 557      else {
 558          document.getElementById('div_sysresccd_kernel').style.display='block';
 559          document.getElementById('tr_authorized_keys').style.display='';
 560      }
 561  }
 562  
 563  affiche_sections_distrib();
 564  </script>\n";
 565  /*
 566                  //======================================================
 567                  $temoin_svg_existantes=0;
 568                  $chaine_tab="<p>Liste des sauvegardes existantes&nbsp;:</p>\n";
 569                  $chaine_tab.="<table class='crob'>\n";
 570                  $chaine_tab.="<tr>\n";
 571                  $chaine_tab.="<th>Id</th>\n";
 572                  $chaine_tab.="<th>Nom</th>\n";
 573                  $chaine_tab.="<th>Partition</th>\n";
 574                  $chaine_tab.="<th>Sauvegarde</th>\n";
 575                  $chaine_tab.="<th>Date</th>\n";
 576                  $chaine_tab.="<th>Descriptif</th>\n";
 577                  $chaine_tab.="</tr>\n";
 578                  for($i=0;$i<count($id_machine);$i++){
 579                      $sql="SELECT * FROM se3_tftp_sauvegardes WHERE id='".$id_machine[$i]."' ORDER BY date DESC;";
 580                      //echo "$sql<br />";
 581                      $res=mysql_query($sql);
 582                      if(mysql_num_rows($res)>0) {
 583                          while($lig=mysql_fetch_object($res)) {
 584                              $chaine_tab.="<tr>\n";
 585                              $chaine_tab.="<td>$lig->id</td>\n";
 586                              $chaine_tab.="<td>$lig->name</td>\n";
 587                              $chaine_tab.="<td>$lig->partition</td>\n";
 588                              $chaine_tab.="<td>$lig->image</td>\n";
 589                              $chaine_tab.="<td>".mysql_date_to_fr_date($lig->date)."</td>\n";
 590                              $chaine_tab.="<td style='text-align:left'><pre>$lig->descriptif</pre></td>\n";
 591                              $chaine_tab.="</tr>\n";
 592      
 593                              $temoin_svg_existantes++;
 594                          }
 595                      }
 596                  }
 597                  $chaine_tab.="</table>\n";
 598                  $chaine_tab.="<p><br /></p>\n";
 599                  if($temoin_svg_existantes>0) {
 600                      echo $chaine_tab;
 601                  }
 602                  //======================================================
 603  */
 604                  echo "<p><i>NOTES&nbsp;:</i></p>\n";
 605                  echo "<ul>\n";
 606                  echo "<li>Ce choix nécessite que SysRescCD soit installé sur une partition de la machine.</li>\n";
 607  /*
 608                  echo "<li><b>Attention&nbsp;:</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 />
 609                  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 />
 610                  Une tâche cron se charge d'effectuer le 'wget' sur les infos, puis le remplissage d'une table MySQL.<br />
 611                  La tâche cron est lancée toutes les 60s.</li>\n";
 612                  echo "<li>Si le nom de sauvegarde fourni correspond à un nom de sauvegarde existante, la sauvegarde précédente est supprimée.</li>\n";
 613                  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";
 614  */
 615                  echo "</ul>\n";
 616              }
 617              else {
 618                  echo "<h2>Validation des paramètres de changement de mot de passe Boot Loader</h2>\n";
 619                  //debug_var();
 620  
 621                  $opt_url_authorized_keys="";
 622                  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'])=='')) {
 623                      $opt_url_authorized_keys="url_authorized_keys=".$_POST['url_authorized_keys'];
 624                      crob_setParam('url_authorized_keys',$_POST['url_authorized_keys'],'Url fichier authorized_keys pour acces ssh aux clients TFTP');
 625                  }
 626  
 627                  echo "<p>Rappel des paramètres&nbsp;:</p>\n";
 628  
 629                  $temoin_sysresccd=check_sysresccd_files();
 630  
 631                  if($temoin_sysresccd=="y") {
 632                      echo "<table class='crob'>\n";
 633                      echo "<tr>\n";
 634                      echo "<th style='text-align:left;'>Distribution linux à utiliser&nbsp;: </th>\n";
 635                      echo "<td>\n";
 636                      echo $distrib;
 637                      if($distrib=='sysresccd') {
 638                          echo " (<i>noyau $sysresccd_kernel</i>)";
 639                      }
 640                      echo "<input type=\"hidden\" name=\"distrib\" value=\"$distrib\" />\n";
 641                      echo "</td>\n";
 642                      echo "</tr>\n";
 643                  }
 644                  else {
 645                      echo "<input type=\"hidden\" name=\"distrib\" value=\"slitaz\" />\n";
 646                      echo "<table class='crob'>\n";
 647                  }
 648  
 649                  echo "<tr>\n";
 650                  echo "<th style='text-align:left;'>Changement du mot de passe Linux&nbsp;: </th>\n";
 651                  echo "<td>\n";
 652                  if($changer_mdp_linux=="y") {
 653                      echo "<span style='color:green;'>Oui</span> avec le nouveau mot de passe Linux '$mdp_linux'.";
 654                  }
 655                  else {
 656                      echo "<span style='color:red;'>Non</span>.";
 657                  }
 658                  echo "</td>\n";
 659                  echo "</tr>\n";
 660  
 661                  echo "<tr>\n";
 662                  echo "<th style='text-align:left;'>Changement du mot de passe Sauve&nbsp;: </th>\n";
 663                  echo "<td>\n";
 664                  if($changer_mdp_sauve=="y") {
 665                      echo "<span style='color:green;'>Oui</span> avec le nouveau mot de passe Sauve '$mdp_linux'.";
 666                  }
 667                  else {
 668                      echo "<span style='color:red;'>Non</span>.";
 669                  }
 670                  echo "</td>\n";
 671                  echo "</tr>\n";
 672  
 673                  echo "<tr>\n";
 674                  echo "<th style='text-align:left;'>Changement du mot de passe Restaure&nbsp;: </th>\n";
 675                  echo "<td>\n";
 676                  if($changer_mdp_restaure=="y") {
 677                      echo "<span style='color:green;'>Oui</span> avec le nouveau mot de passe Restaure '$mdp_restaure'.";
 678                  }
 679                  else {
 680                      echo "<span style='color:red;'>Non</span>.";
 681                  }
 682                  echo "</td>\n";
 683                  echo "</tr>\n";
 684  
 685                  echo "<tr>\n";
 686                  echo "<th style='text-align:left;'>Rebooter en fin de changement de mot de passe&nbsp;: </th>\n";
 687                  echo "<td>\n";
 688                  if($auto_reboot=="y") {
 689                      echo "<span style='color:green;'>Oui</span>.";
 690                  }
 691                  else {
 692                      echo "<span style='color:red;'>Non</span>.";
 693                  }
 694                  echo "</td>\n";
 695                  echo "</tr>\n";
 696  
 697                  //if($auto_reboot=='y') {
 698                  if(($auto_reboot=='y')||($auto_reboot=='halt')) {
 699                      echo "<tr>\n";
 700                      echo "<th style='text-align:left;'>Délai avant reboot&nbsp;: </th>\n";
 701                      echo "<td>\n";
 702                      echo "$delais_reboot s";
 703                      echo "</td>\n";
 704                      echo "</tr>\n";
 705                  }
 706                  echo "</table>\n";
 707  
 708  
 709                  echo "<p>Génération du fichier dans /tftpboot/pxelinux.cfg/ pour le changement de mot de passe.<br />\n";
 710  
 711                  // BOUCLE SUR LA LISTE DES $id_machine[$i]
 712  
 713                  // Numéro de l'opération de sauvegarde:
 714                  $num_op=get_free_se3_action_tftp_num_op();
 715                  for($i=0;$i<count($id_machine);$i++) {
 716                      $sql="SELECT * FROM se3_dhcp WHERE id='".$id_machine[$i]."';";
 717                      //echo "$sql<br />";
 718                      $res=mysql_query($sql);
 719                      if(mysql_num_rows($res)==0) {
 720                          echo "<span style='color:red;'>La machine d'identifiant $id_machine[$i] n'existe pas dans 'se3_dhcp'.</span><br />\n";
 721                          $traiter_machine_courante='n';
 722                      }
 723                      else {
 724                          $temoin_erreur="n";
 725  
 726                          $lig=mysql_fetch_object($res);
 727                          $mac_machine=$lig->mac;
 728                          $nom_machine=$lig->name;
 729                          $ip_machine=$lig->ip;
 730  
 731                          if($restriction_parcs=="y") {
 732                              $temoin_erreur='y';
 733                              for($loop=0; $loop<count($tab_delegated_parcs);$loop++) {
 734                                  // La machine est-elle dans un des parcs délégués?
 735                                  if(is_machine_in_parc($nom_machine,$tab_delegated_parcs[$loop])) {$temoin_erreur='n';break;}
 736                              }
 737                          }
 738  
 739                          if($temoin_erreur=="y") {
 740                              echo "<p style='color:red'>La machine $nom_machine ne vous est pas déléguée</p>\n";
 741                          }
 742                          else {
 743                              echo "Génération pour $nom_machine&nbsp;: ";
 744      
 745                              $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 746      
 747                              $chemin="/usr/share/se3/scripts";
 748  
 749                              if($distrib=='slitaz') {
 750                                  $ajout_kernel="";
 751                              }
 752                              else {
 753                                  $ajout_kernel="|kernel=$sysresccd_kernel";
 754                              }
 755  
 756                              $infos_pxe="";
 757                              if($changer_mdp_linux=='y') {$infos_pxe.="mdp_linux=$mdp_linux ";}
 758                              if($changer_mdp_sauve=='y') {$infos_pxe.="mdp_sauve=$mdp_sauve ";}
 759                              if($changer_mdp_restaure=='y') {$infos_pxe.="mdp_restaure=$mdp_restaure ";}
 760  
 761                              if((isset($delais_reboot))&&($delais_reboot!='')) {
 762                                  $infos_pxe.=" delais_reboot=$delais_reboot";
 763                              }
 764  
 765                              if($distrib=='slitaz') {
 766                                  $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'chg_mdp_bootloader' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine $infos_pxe auto_reboot=$auto_reboot'", $retour);
 767                                  echo "/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'chg_mdp_bootloader' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine $infos_pxe auto_reboot=$auto_reboot'<br />";
 768                              }
 769                              else {
 770                                  $resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'chg_mdp_bootloader_sysresccd' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine $infos_pxe auto_reboot=$auto_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour);
 771                                  echo "/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'chg_mdp_bootloader_sysresccd' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine $infos_pxe auto_reboot=$auto_reboot kernel=$sysresccd_kernel $opt_url_authorized_keys'<br />";
 772                              }
 773      
 774                              if(count($retour)>0){
 775                                  //echo "<p>";
 776                                  //echo "<span style='color:red;'>Il semble que la génération du fichier ait échoué...</span><br />\n";
 777                                  echo "<span style='color:red;'>ECHEC de la génération du fichier</span><br />\n";
 778                                  for($j=0;$j<count($retour);$j++){
 779                                      echo "$retour[$j]<br />\n";
 780                                  }
 781                                  $temoin_erreur="y";
 782                                  //echo "</p>\n";
 783                              }
 784                              else {
 785                                  $sql="DELETE FROM se3_tftp_action WHERE id='$id_machine[$i]';";
 786                                  $suppr=mysql_query($sql);
 787      
 788                                  $infos_sql="";
 789                                  if($changer_mdp_linux=='y') {$infos_sql.="mdp_linux=$mdp_linux|";}
 790                                  if($changer_mdp_sauve=='y') {$infos_sql.="mdp_sauve=$mdp_sauve|";}
 791                                  if($changer_mdp_restaure=='y') {$infos_sql.="mdp_restaure=$mdp_restaure|";}
 792                                  $timestamp=time();
 793                                  $sql="INSERT INTO se3_tftp_action SET id='$id_machine[$i]',
 794                                                                          mac='$mac_machine',
 795                                                                          name='$nom_machine',
 796                                                                          date='$timestamp',
 797                                                                          type='chg_mdp_bootloader',
 798                                                                          num_op='$num_op',
 799                                                                          infos='".$infos_sql."auto_reboot=$auto_reboot|$ajout_kernel}';";
 800                                  $insert=mysql_query($sql);
 801                                  if(!$insert) {
 802                                      echo "<span style='color:red;'>ECHEC de l'enregistrement dans 'se3_tftp_action'</span><br />\n";
 803                                      $temoin_erreur="y";
 804                                  }
 805  
 806  /*
 807                                  // Génération du lanceur de récupération:
 808                                  //$dossier="/var/se3/tmp/tftp/$id_machine[$i]";
 809                                  $dossier="/etc/se3/www-tools/tftp/$id_machine[$i]";
 810                                  if(!file_exists($dossier)) { mkdir($dossier,0700);}
 811                                  $lanceur_recup="$dossier/lanceur_recup_rapport_action_tftp.sh";
 812                                  $fich=fopen($lanceur_recup,"w+");
 813                                  $timestamp_limit=time()+4*3600;
 814                                  //fwrite($fich,"/usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' 'sauvegarde' '$timestamp_limit'");
 815                                  if($distrib=='slitaz') {
 816                                      $mode_sauvegarde="chg_mdp_bootloader";
 817                                  }
 818                                  else {
 819                                      $mode_sauvegarde="chg_mdp_bootloader_sysresccd";
 820                                  }
 821                                  fwrite($fich,"sudo /usr/share/se3/scripts/recup_rapport.php '$id_machine[$i]' '$ip_machine' '$mode_sauvegarde' '$timestamp_limit'");
 822                                  fclose($fich);
 823                                  chmod($lanceur_recup,0750);
 824  
 825                                  // Ménage dans les tâches précédentes
 826                                  @exec("sudo /usr/share/se3/scripts/se3_tftp_menage_atq.sh $id_machine[$i]",$retour);
 827  
 828                                  // Planification de la tâche
 829                                  //@exec("at -f $lanceur_recup now + 1 minute 2>/dev/null",$retour);
 830                                  @exec("at -f $lanceur_recup now + 1 minute 2>$dossier/at.txt",$retour);
 831                                  if($retour) {
 832                                      echo "<span style='color:red;'>ECHEC de la planification de la tâche.</span><br />\n";
 833                                      for($j=0;$j<count($retour);$j++){echo "$retour[$j]<br />\n";}
 834                                      $temoin_erreur="y";
 835                                  }
 836  */
 837                                  if($temoin_erreur=="n") {
 838                                      //echo "<span style='color:green;'>OK</span><br />\n";
 839                                      echo "<span style='color:green;'>OK</span>\n";
 840                                      // Application de l'action choisie:
 841                                      echo " <span id='wake_shutdown_or_reboot_$i'></span>";
 842      
 843                                      echo "<script type='text/javascript'>
 844                                          // <![CDATA[
 845                                          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'});
 846                                          //]]>
 847                                      </script>\n";
 848      
 849      
 850                                      echo "<br />\n";
 851                                  }
 852                              }
 853                          }
 854                      }
 855                  }
 856  
 857                  // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 858                  // POUVOIR TAGUER DANS LA TABLE se3_dhcp LES MACHINES QUI PEUVENT BOOTER EN PXE
 859                  // Ajouter un champ?
 860                  // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
 861  
 862  
 863                  // On n'affiche le fichier que pour le dernier (à titre d'info):
 864                  if(isset($corrige_mac)) {
 865                      //$fich=fopen("/tftpboot/pxelinux.cfg/01-$lig1->mac","r");
 866                      $fich=fopen("/tftpboot/pxelinux.cfg/01-$corrige_mac","r");
 867                      if($fich) {
 868                          echo "<p>Pour information, voici le contenu du fichier généré&nbsp;:<br />\n";
 869                          echo "<pre style='border:1px solid black; color:green;'>";
 870                          while(!feof($fich)) {
 871                              $ligne=fgets($fich,4096);
 872                              echo htmlentities($ligne);
 873                          }
 874                          echo "</pre>\n";
 875                          fclose($fich);
 876                      }
 877                      else {
 878                          echo "<p style='color:red;'>Il n'a pas été possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-$corrige_mac</p>\n";
 879                      }
 880                  }
 881              }
 882          }
 883          echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n";
 884      }
 885  
 886      echo "<p><em>NOTES&nbsp;:</em></p>
 887  <ul>
 888  <li><p>Cette page est destinée à effectuer le changement de mot de passe d'un LILO ou GRUB d'une distribution SysRescCD installée sur des postes.</p></li>
 889  <li><p>Dans le cas d'un LILO installé, avec des mots de passe supprimés par précaution du lilo.conf, il est indispensable de changer tous les mots de passe (<em>Linux, Sauve et Restaure</em>), sinon c'est XXXXXX qui est pris comme nouveau mot de passe pour ces choix non faits.</p></li>
 890  <li><p><b>Attention&nbsp;:</b> Les mots de passe circulent <b>en clair</b> sur le réseau le temps du boot des stations.<br />Evitez de choisir des mots de passe utilisés ailleurs pour protéger des données plus sensibles.</p></li>
 891  </ul>\n";
 892  
 893  }
 894  else {
 895      print (gettext("Vous n'avez pas les droits nécessaires pour ouvrir cette page..."));
 896  }
 897  
 898  // Footer
 899  include ("pdp.inc.php");
 900  ?>


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