[ Index ]

PHP Cross Reference of Unnamed Project

title

Body

[close]

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

   1  <?php
   2  /*
   3  * $Id: lib_action_tftp.php 8362 2015-01-02 20:42:05Z keyser $
   4  ===========================================
   5     Projet SE3
   6     Dispositif SE3+TFTP+Sauvegarde/Restauration/Clonage
   7     Stephane Boireau
   8     Distribué selon les termes de la licence GPL
   9  =============================================
  10  */
  11  
  12  function creation_tftp_tables () {
  13      $retour=true;
  14      $sql="CREATE TABLE IF NOT EXISTS se3_tftp_action (
  15  id INT(11),
  16  mac VARCHAR(255),
  17  name VARCHAR(255),
  18  date INT(11),
  19  type VARCHAR(255),
  20  num_op INT(11),
  21  infos VARCHAR(255)
  22  );";
  23      $creation_table=mysql_query($sql);
  24      if(!$creation_table) {
  25          echo "<span style='color:red'>Erreur lors de la création de la table d'après la requête: </span><br /><pre style='color:green; border:1px solid red;'>$sql</pre>\n";
  26          $retour=false;
  27      }
  28  
  29      $sql="CREATE TABLE IF NOT EXISTS se3_tftp_rapports (
  30  `id` INT( 11 ) NOT NULL ,
  31  `name` VARCHAR( 255 ) NOT NULL ,
  32  `mac` VARCHAR( 255 ) NOT NULL ,
  33  `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  34  `tache` VARCHAR( 255 ) NOT NULL ,
  35  `statut` VARCHAR( 255 ) NOT NULL ,
  36  `descriptif` TEXT NOT NULL,
  37  identifiant int(11) NOT NULL auto_increment,
  38  PRIMARY KEY  (identifiant)
  39  );";
  40      $creation_table=mysql_query($sql);
  41      if(!$creation_table) {
  42          echo "<span style='color:red'>Erreur lors de la création de la table d'après la requête: </span><br /><pre style='color:green; border:1px solid red;'>$sql</pre>\n";
  43          $retour=false;
  44      }
  45  
  46      $sql="CREATE TABLE IF NOT EXISTS se3_tftp_sauvegardes (
  47  `id` INT( 11 ) NOT NULL ,
  48  `name` VARCHAR( 255 ) NOT NULL ,
  49  `mac` VARCHAR( 255 ) NOT NULL ,
  50  `partition` VARCHAR( 255 ) NOT NULL ,
  51  `image` VARCHAR( 255 ) NOT NULL ,
  52  `date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
  53  `descriptif` TEXT NOT NULL,
  54  `df` TEXT NOT NULL,
  55  `partitionnement` TEXT NOT NULL,
  56  identifiant int(11) NOT NULL auto_increment,
  57  PRIMARY KEY  (identifiant)
  58  );";
  59      $creation_table=mysql_query($sql);
  60      if(!$creation_table) {
  61          echo "<span style='color:red'>Erreur lors de la création de la table d'après la requête: </span><br /><pre style='color:green; border:1px solid red;'>$sql</pre>\n";
  62          $retour=false;
  63      }
  64  
  65      $sql="CREATE TABLE IF NOT EXISTS se3_tftp_infos (
  66  `id` INT( 11 ) NOT NULL ,
  67  `name` VARCHAR( 255 ) NOT NULL ,
  68  `mac` VARCHAR( 255 ) NOT NULL ,
  69  `nom` VARCHAR( 255 ) NOT NULL ,
  70  `valeur` VARCHAR( 255 ) NOT NULL ,
  71  identifiant int(11) NOT NULL auto_increment,
  72  PRIMARY KEY  (identifiant)
  73  );";
  74      $creation_table=mysql_query($sql);
  75      if(!$creation_table) {
  76          echo "<span style='color:red'>Erreur lors de la création de la table d'après la requête: </span><br /><pre style='color:green; border:1px solid red;'>$sql</pre>\n";
  77          $retour=false;
  78      }
  79  
  80      return $retour;
  81  }
  82  
  83  //====================================================
  84  function decoupe_infos($texte) {
  85      $motif=array('disk','compr','port','udpcparam','src_part','dest_part','nom_image','auto_reboot','delais_reboot','enableDiskmodule','diskmodule','netmodule');
  86      $tab_txt=explode("|",$texte);
  87      $tab_retour=array();
  88      for($i=0;$i<count($tab_txt);$i++) {
  89          // Reconnaitre une des chaines disk=, port=,...
  90          for($j=0;$j<count($motif);$j++) {
  91              if(preg_match("/^$motif[$j]=/", $tab_txt[$i])) {
  92                  if($motif[$j]=='udpcparam') {
  93                      $udpcparam=explode(",",preg_replace("/--/",",",preg_replace("/^udpcparam=/", "", $tab_txt[$i])));
  94                      for($k=0;$k<count($udpcparam);$k++) {
  95                          if(preg_match("/^max-wait=/", $udpcparam[$k])) {
  96                              $tab_retour['max-wait']=preg_replace("/^max-wait=/", "", $udpcparam[$k]);
  97                          }
  98                          elseif(preg_match("/^min-receivers=/", $udpcparam[$k])) {
  99                              $tab_retour['min-receivers']=preg_replace("/^min-receivers=/", "", $udpcparam[$k]);
 100                          }
 101                          elseif(preg_match("/^start-timeout=/", $udpcparam[$k])) {
 102                              $tab_retour['start-timeout']=preg_replace("/^start-timeout=/", "", $udpcparam[$k]);
 103                          }
 104                      }
 105                  }
 106                  else {
 107                      $tab_retour[$motif[$j]]=preg_replace("/^$motif[$j]=/", "", $tab_txt[$i]);
 108                  }
 109                  break;
 110              }
 111          }
 112      }
 113      return $tab_retour;
 114  }
 115  
 116  //====================================================
 117  function get_free_se3_action_tftp_num_op () {
 118      $sql="SELECT MAX(num_op) AS num_op_max FROM se3_tftp_action;";
 119      $res=mysql_query($sql);
 120      if($res) {
 121          if(mysql_num_rows($res)==0){
 122              return 1;
 123          }
 124          else {
 125              $lig_tmp=mysql_fetch_object($res);
 126              $tmp_num=$lig_tmp->num_op_max+1;
 127              return $tmp_num;
 128          }
 129      }
 130      else {
 131          return false;
 132      }
 133  }
 134  //====================================================
 135  function search_machines2 ($filter,$branch) {
 136      /*
 137      Function: search_machines2
 138      Il s'agit d'une modification de search_machines() destinée à récupérer aussi l'adresse MAC
 139  
 140      Recherche de machines dans l'ou $branch
 141  
 142      Parameters:
 143          $filter - Un filtre de recherche permettant l'extraction de l'annuaire des machines
 144          $branch - L'ou correspondant à l'ou contenant les machines
 145  
 146      Return:
 147      Retourne un tableau avec les machines
 148      */
 149  
 150      global $ldap_server, $ldap_port, $dn;
 151      global $error;
 152  
 153      // Initialisation
 154      $computers=array();
 155  
 156      // LDAP attributs
 157      if ("$branch"=="computers") {
 158              $ldap_computer_attr = array (
 159                  "cn",
 160                  "ipHostNumber",   // ip Host
 161                  "macAddress",   // Adresse MAC
 162                  "l",                        // Status de la machine
 163                  "description"        // Description de la machine
 164              );
 165      }
 166      else {
 167              $ldap_computer_attr = array (
 168                  "cn"
 169              );
 170      }
 171  
 172      $ds = @ldap_connect ( $ldap_server, $ldap_port );
 173      if ( $ds ) {
 174              $r = @ldap_bind ( $ds ); // Bind anonyme
 175              if ($r) {
 176                  $result = @ldap_list ( $ds, $dn[$branch], $filter, $ldap_computer_attr );
 177                  if ($result) {
 178                      $info = @ldap_get_entries ( $ds, $result );
 179                      if ( $info["count"]) {
 180                          for ($loop=0; $loop < $info["count"]; $loop++) {
 181                                  $computers[$loop]["cn"] = $info[$loop]["cn"][0];
 182                                  if ("$branch"=="computers") {
 183                                      $computers[$loop]["ipHostNumber"] = $info[$loop]["iphostnumber"][0];
 184                                      $computers[$loop]["macAddress"] = $info[$loop]["macaddress"][0];
 185                                      if(isset($info[$loop]["l"][0])) {$computers[$loop]["l"] = $info[$loop]["l"][0];}
 186                                      if(isset($info[$loop]["description"][0])) {$computers[$loop]["description"] = utf8_decode($info[$loop]["description"][0]);}
 187                                  }
 188                          }
 189                      }
 190                      @ldap_free_result ( $result );
 191                  }
 192              }
 193              @ldap_close($ds);
 194      }
 195  
 196      return $computers;
 197  }
 198  //====================================================
 199  function timestamp_to_mysql_date($timestamp) {
 200      return strftime("%Y-%m-%d %H:%M:%S",$timestamp);
 201  }
 202  //====================================================
 203  function mysql_date_to_fr_date($date) {
 204      $tab1=explode(" ",$date);
 205      $tab11=explode("-",$tab1[0]);
 206      $tab21=explode(":",$tab1[1]);
 207      //return sprintf("%02d",$tab11[2])."/".sprintf("%02d",$tab11[1])."/".$tab11[0]." à ".sprintf("%02d",$tab21[0])."H".sprintf("%02d",$tab21[1])."M".sprintf("%02d",$tab21[2])."S";
 208      return sprintf("%02d",$tab11[2])."/".sprintf("%02d",$tab11[1])."/".$tab11[0]." à ".sprintf("%02d",$tab21[0]).":".sprintf("%02d",$tab21[1]).":".sprintf("%02d",$tab21[2]);
 209      //return sprintf("%02d",$tab11[2])."/".sprintf("%02d",$tab11[1])."/".$tab11[0]." à ".sprintf("%02d",$tab21[0])."H";
 210  }
 211  //====================================================
 212  function affiche_pxe_cfg($texte) {
 213          echo "<div id='fich_cfg_off'>\n";
 214          echo "<p><a href='#' onClick=\"fich_cfg(true);return false;\">Visualiser</a> le fichier de configuration en /tftpboot/pxelinux.cfg/</p>\n";
 215          echo "</div>\n";
 216  
 217          echo "<div id='fich_cfg_on'>\n";
 218          echo "<p>Voici le fichier en /tftpboot/pxelinux.cfg/ (<i><a href='#' onClick=\"fich_cfg(false);return false;\">Masquer</a></i>):</p>\n";
 219          echo $texte;
 220          echo "</div>\n";
 221  
 222  
 223          echo "<script type='text/javascript'>
 224  	function fich_cfg(mode) {
 225          if(mode==true) {
 226              document.getElementById('fich_cfg_off').style.display='none';
 227              document.getElementById('fich_cfg_on').style.display='';
 228          }
 229          else {
 230              document.getElementById('fich_cfg_off').style.display='';
 231              document.getElementById('fich_cfg_on').style.display='none';
 232          }
 233      }
 234  
 235      fich_cfg(false);
 236  </script>\n";
 237  }
 238  //====================================================
 239  function visu_tache($mac_machine,$mode=NULL) {
 240      // On lit le fichier dans /tftpboot/pxelinux.cfg/
 241  
 242      // On passe sinon un $mode=light
 243      if(!isset($mode)) {
 244          echo "<p>Voici les paramètres de l'action programmée: <br />";
 245      }
 246  
 247      $corrige_mac=strtolower(strtr($mac_machine,":","-"));
 248  
 249      $type_action="";
 250  
 251      $fich=fopen("/tftpboot/pxelinux.cfg/01-$corrige_mac","r");
 252      if($fich) {
 253          $infos="";
 254          $chaine_fichier="<pre style='color:green; border: 1px solid black;'>";
 255          while(!feof($fich)) {
 256              $ligne=fgets($fich,4096);
 257              if(strstr($ligne, "# Date de generation du fichier: ")) {
 258                  $date_prog_action=preg_replace("/# Date de generation du fichier: /", "", $ligne);
 259  
 260              }
 261              //if(strstr($ligne, "default tazsvg")) {
 262              if(strstr($ligne, "label tazsvg")) {
 263                  $type_action="Sauvegarde";
 264              }
 265              //elseif(strstr($ligne, "default tazrst")) {
 266              elseif(strstr($ligne, "label tazrst")) {
 267                  $type_action="Restauration";
 268              }
 269              //elseif(strstr($ligne, "default u1auto")) {
 270              elseif(strstr($ligne, "label u1auto")) {
 271                  $type_action="Emetteur UdpCast";
 272              }
 273              //elseif(strstr($ligne, "default u2auto")) {
 274              elseif(strstr($ligne, "label u2auto")) {
 275                  $type_action="Récepteur UdpCast";
 276              }
 277                          elseif(strstr($ligne, "label linuxinst")) {
 278                  $type_action="Installation client Linux";
 279              }
 280              elseif(strstr($ligne, "label install")) {
 281                  $type_action="Installation XP unattend";
 282              }
 283                          
 284  
 285              if($type_action=="Sauvegarde") {
 286                  //   append initrd=rootfs.gz rw root=/dev/null lang=fr_FR kmap=fr vga=normal sound=no src_part=$src_part dest_part=$dest_part auto_reboot=$auto_reboot delais_reboot=$delais_reboot work=/root/bin/sauve_part.sh
 287  
 288                  if(strstr($ligne, "append initrd=rootfs.gz rw root=/dev/null lang=fr_FR kmap=fr vga=normal sound=no src_part=")) {
 289                      //echo $ligne."<br />";
 290                      unset($tab);
 291                      $tab=explode(" ",$ligne);
 292                      for($i=0;$i<count($tab);$i++){
 293                          if(preg_match("/^src_part=/", $tab[$i])) {
 294                              $src_part=preg_replace("/^src_part=/", "", $tab[$i]);
 295                              //echo "\$src_part=$src_part<br />";
 296                              $infos.="<tr><th>Partition sauvegardée</th><td>$src_part</td></tr>";
 297                          }
 298                          elseif(preg_match("/^dest_part=/", $tab[$i])) {
 299                              $dest_part=preg_replace("/^dest_part=/", "", $tab[$i]);
 300                              //echo "\$dest_part=$dest_part<br />";
 301                              $infos.="<tr><th>Partition de stockage<br />de la sauvegarde</th><td>$dest_part</td></tr>";
 302                          }
 303                          elseif(preg_match("/^nom_image=/", $tab[$i])) {
 304                              $nom_image=preg_replace("/^nom_image=/", "", $tab[$i]);
 305                              //echo "\$nom_image=$nom_image<br />";
 306                              $infos.="<tr><th>Nom de l'image</th><td>$nom_image</td></tr>";
 307                          }
 308                          elseif(preg_match("/^auto_reboot=/", $tab[$i])) {
 309                              $auto_reboot=preg_replace("/^auto_reboot=/", "", $tab[$i]);
 310                              //echo "\$auto_reboot=$auto_reboot<br />";
 311                              $infos.="<tr><th>Auto-reboot</th><td>$auto_reboot</td></tr>";
 312                          }
 313                          elseif(preg_match("/^delais_reboot=/", $tab[$i])) {
 314                              $delais_reboot=preg_replace("/^delais_reboot=/", "", $tab[$i]);
 315                              //echo "\$delais_reboot=$delais_reboot<br />";
 316                              $infos.="<tr><th>Délai avant reboot</th><td>$delais_reboot</td></tr>";
 317                          }
 318                      }
 319                  }
 320              }
 321              elseif($type_action=="Restauration") {
 322                  if(strstr($ligne, "append initrd=rootfs.gz rw root=/dev/null lang=fr_FR kmap=fr vga=normal sound=no src_part=")) {
 323                      //echo $ligne."<br />";
 324                      unset($tab);
 325                      $tab=explode(" ",$ligne);
 326                      for($i=0;$i<count($tab);$i++){
 327                          if(preg_match("/^src_part=/", $tab[$i])) {
 328                              $src_part=preg_replace("/^src_part=/", "", $tab[$i]);
 329                              $infos.="<tr><th>Partition de stockage</th><td>$src_part</td></tr>";
 330                          }
 331                          elseif(preg_match("/^dest_part=/", $tab[$i])) {
 332                              $dest_part=preg_replace("/^dest_part=/", "", $tab[$i]);
 333                              $infos.="<tr><th>Partition restaurée</th><td>$dest_part</td></tr>";
 334                          }
 335                          elseif(preg_match("/^nom_image=/", $tab[$i])) {
 336                              $nom_image=preg_replace("/^nom_image=/", "", $tab[$i]);
 337                              //echo "\$nom_image=$nom_image<br />";
 338                              $infos.="<tr><th>Nom de l'image</th><td>$nom_image</td></tr>";
 339                          }
 340                          elseif(preg_match("/^auto_reboot=/", $tab[$i])) {
 341                              $auto_reboot=preg_replace("/^auto_reboot=/", "", $tab[$i]);
 342                              $infos.="<tr><th>Auto-reboot</th><td>$auto_reboot</td></tr>";
 343                          }
 344                          elseif(preg_match("/^delais_reboot=/", $tab[$i])) {
 345                              $delais_reboot=preg_replace("/^delais_reboot=/", "", $tab[$i]);
 346                              $infos.="<tr><th>Délai avant reboot</th><td>$delais_reboot</td></tr>";
 347                          }
 348                      }
 349                  }
 350              }
 351              elseif($type_action=="Emetteur UdpCast") {
 352                  //append initrd=udprd root=01:00 persoparams=oui lang=FR kbmap=FR dhcp=yes compr=$compr port=$port umode=snd disk=$disk auto_reboot=$auto_reboot enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule udpcparam=$udpcparam
 353                  if(strstr($ligne, "append initrd=udprd root=01:00 persoparams=oui lang=FR kbmap=FR dhcp=yes compr=")) {
 354                      unset($tab);
 355                      $tab=explode(" ",$ligne);
 356                      for($i=0;$i<count($tab);$i++){
 357                          if(preg_match("/^compr=/", $tab[$i])) {
 358                              $compr=preg_replace("/^compr=/", "", $tab[$i]);
 359                              $infos.="<tr><th>Compression</th><td>$compr</td></tr>";
 360                          }
 361                          elseif(preg_match("/^port=/", $tab[$i])) {
 362                              $port=preg_replace("/^port=/", "", $tab[$i]);
 363                              $infos.="<tr><th>Port</th><td>$port</td></tr>";
 364                          }
 365                          elseif(preg_match("/^disk=/", $tab[$i])) {
 366                              $disk=preg_replace("/^disk=/", "", $tab[$i]);
 367                              $infos.="<tr><th>Disque ou partition émis(e)</th><td>$disk</td></tr>";
 368                          }
 369                          elseif(preg_match("/^enableDiskmodule=/", $tab[$i])) {
 370                              $enableDiskmodule=preg_replace("/^enableDiskmodule=/", "", $tab[$i]);
 371                              $infos.="<tr><th>Chargement d'un module disque</th><td>$enableDiskmodule</td></tr>";
 372                          }
 373                          elseif(preg_match("/^diskmodule=/", $tab[$i])) {
 374                              $diskmodule=preg_replace("/^diskmodule=/", "", $tab[$i]);
 375                              $infos.="<tr><th>Module/pilote disque</th><td>$diskmodule</td></tr>";
 376                          }
 377                          elseif(preg_match("/^netmodule=/", $tab[$i])) {
 378                              $netmodule=preg_replace("/^netmodule=/", "", $tab[$i]);
 379                              $infos.="<tr><th>Pilote réseau</th><td>$netmodule</td></tr>";
 380                          }
 381                          elseif(preg_match("/^udpcparam=/", $tab[$i])) {
 382                              //$udpcparam="--max-wait=".$max_wait."--min-receivers=".$min_receivers;
 383                              $udpcparam=explode(",",preg_replace("/--/",",",preg_replace("/^udpcparam=/", "", $tab[$i])));
 384                              for($j=0;$j<count($udpcparam);$j++) {
 385                                  if(preg_match("/^max-wait=/", $udpcparam[$j])) {
 386                                      $max_wait=preg_replace("/^max-wait=/", "", $udpcparam[$j]);
 387                                      $infos.="<tr><th>Délai maximum avant de lancer le clonage<br />même si un client fait défaut</th><td>$max_wait</td></tr>";
 388                                  }
 389                                  elseif(preg_match("/^min-receivers=/", $udpcparam[$j])) {
 390                                      $min_receivers=preg_replace("/^min-receivers=/", "", $udpcparam[$j]);
 391                                      $infos.="<tr><th>Nombre de clients à attendre</th><td>$min_receivers</td></tr>";
 392                                  }
 393                              }
 394                          }
 395                          elseif(preg_match("/^auto_reboot=/", $tab[$i])) {
 396                              $auto_reboot=preg_replace("/^auto_reboot=/", "", $tab[$i]);
 397                              $infos.="<tr><th>Auto-reboot</th><td>$auto_reboot</td></tr>";
 398                          }
 399                      }
 400                  }
 401              }
 402              elseif($type_action=="Récepteur UdpCast") {
 403                  //append initrd=udprd root=01:00 persoparams=oui lang=FR kbmap=FR dhcp=yes compr=$compr port=$port umode=rcv disk=$disk auto_reboot=$auto_reboot enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule udpcparam=$udpcparam
 404                  if(strstr($ligne, "append initrd=udprd root=01:00 persoparams=oui lang=FR kbmap=FR dhcp=yes compr=")) {
 405                      unset($tab);
 406                      $tab=explode(" ",$ligne);
 407                      for($i=0;$i<count($tab);$i++){
 408                          if(preg_match("/^compr=/", $tab[$i])) {
 409                              $compr=preg_replace("/^compr=/", "", $tab[$i]);
 410                              $infos.="<tr><th>Compression</th><td>$compr</td></tr>";
 411                          }
 412                          elseif(preg_match("/^port=/", $tab[$i])) {
 413                              $port=preg_replace("/^port=/", "", $tab[$i]);
 414                              $infos.="<tr><th>Port</th><td>$port</td></tr>";
 415                          }
 416                          elseif(preg_match("/^disk=/", $tab[$i])) {
 417                              $disk=preg_replace("/^disk=/", "", $tab[$i]);
 418                              $infos.="<tr><th>Disque ou partition écrasé(e)</th><td>$disk</td></tr>";
 419                          }
 420                          elseif(preg_match("/^enableDiskmodule=/", $tab[$i])) {
 421                              $enableDiskmodule=preg_replace("/^enableDiskmodule=/", "", $tab[$i]);
 422                              $infos.="<tr><th>Chargement d'un module disque</th><td>$enableDiskmodule</td></tr>";
 423                          }
 424                          elseif(preg_match("/^diskmodule=/", $tab[$i])) {
 425                              $diskmodule=preg_replace("/^diskmodule=/", "", $tab[$i]);
 426                              $infos.="<tr><th>Module/pilote disque</th><td>$diskmodule</td></tr>";
 427                          }
 428                          elseif(preg_match("/^netmodule=/", $tab[$i])) {
 429                              $netmodule=preg_replace("/^netmodule=/", "", $tab[$i]);
 430                              $infos.="<tr><th>Pilote réseau</th><td>$netmodule</td></tr>";
 431                          }
 432                          elseif(preg_match("/^udpcparam=/", $tab[$i])) {
 433                              //$udpcparam="--start-timeout=".$start_timeout;
 434                              $udpcparam=preg_replace("/^udpcparam=--start-timeout=/", "", $tab[$i]);
 435                              $infos.="<tr><th>Délai avant abandon<br />si le clonage ne démarre pas</th><td>$udpcparam</td></tr>";
 436                          }
 437                          elseif(preg_match("/^auto_reboot=/", $tab[$i])) {
 438                              $auto_reboot=preg_replace("/^auto_reboot=/", "", $tab[$i]);
 439                              $infos.="<tr><th>Auto-reboot</th><td>$auto_reboot</td></tr>";
 440                          }
 441                      }
 442                  }
 443              }
 444              elseif($type_action=="Installation XP unattend") {
 445                  $infos="<tr><td>Installation d'un systeme Windows XP via unattended</td></tr>\n";
 446              }
 447              $chaine_fichier.=htmlentities($ligne);
 448          }
 449          $chaine_fichier.="</pre>\n";
 450          fclose($fich);
 451  
 452          // On passe sinon un $mode=light
 453          if(!isset($mode)) {
 454              echo "<h3>$type_action</h3>";
 455              echo "<table border=1>";
 456              echo $infos;
 457              echo "</table>";
 458  
 459              affiche_pxe_cfg($chaine_fichier);
 460          }
 461          else {
 462              $tmp_chaine="<h3>$type_action</h3>";
 463              $tmp_chaine.="<table border='1'>";
 464              $tmp_chaine.=$infos;
 465              $tmp_chaine.="</table>";
 466              //$tmp_chaine.="Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla Blablabla ";
 467              return $tmp_chaine;
 468          }
 469      }
 470      else {
 471          echo "<p>Il n'a pas été possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-$corrige_mac</p>\n";
 472      }
 473  }
 474  // Fin de visu_tache()
 475  //====================================================
 476  function crob_getParam($name) {
 477      $sql="SELECT value FROM params WHERE name='".addslashes($name)."';";
 478      $res=mysql_query($sql);
 479      if(mysql_num_rows($res)>0) {
 480          $lig=mysql_fetch_object($res);
 481          return $lig->value;
 482      }
 483      else {
 484          return "";
 485      }
 486  }
 487  //====================================================
 488  function crob_setParam($name,$value,$descr) {
 489      $sql="DELETE FROM params WHERE name='".addslashes($name)."';";
 490      $del=mysql_query($sql);
 491  
 492      $sql="INSERT INTO params SET name='$name', descr='$descr', cat='7', value='".addslashes($value)."';";
 493      $insert=mysql_query($sql);
 494      if($insert) {return true;} else  {return false;}
 495  }
 496  //====================================================
 497  function check_sysresccd_files() {
 498      $tab_fichiers_sysresccd=array("/var/www/sysresccd/sysrcd.dat","/var/www/sysresccd/sysrcd.md5","/var/www/sysresccd/autorun2","/var/www/sysresccd/scripts.tar.gz", "/tftpboot/rescue32", "/tftpboot/initram.igz");
 499      $temoin_sysresccd="n";
 500      $cpt_sysresccd=0;
 501      foreach($tab_fichiers_sysresccd as $key => $value) {
 502          if(file_exists("$value")) {
 503              //echo "<p>Le fichier /var/www/sysresccd/$value est present.</p>";
 504              $cpt_sysresccd++;
 505          }
 506      }
 507      if($cpt_sysresccd==count($tab_fichiers_sysresccd)) {
 508          //echo "<p>Tout est en place</p>";
 509          $temoin_sysresccd="y";
 510      }
 511      return $temoin_sysresccd;
 512  }
 513  //====================================================
 514  function liste_sauvegardes($name,$id="",$mac="",$order_by='date DESC',$limit="") {
 515      $tab=array();
 516  
 517      $champs=array('id', 'name', 'mac', 'partition', 'image', 'date', 'descriptif', 'df', 'partitionnement', 'identifiant');
 518  
 519      // Une machine peut changer de nom
 520      // Une recherche par MAC ou ID donnera plus de réponses... mais peut-être avec des sauvegardes dans lesquelles la machine avait un autre nom
 521      if($mac!="") {
 522          $sql="select * from se3_tftp_sauvegardes WHERE mac='$mac' ORDER BY $order_by";
 523      }
 524      elseif($id!="") {
 525          $sql="select * from se3_tftp_sauvegardes WHERE id='$id' ORDER BY $order_by";
 526      }
 527      else {
 528          $sql="select * from se3_tftp_sauvegardes WHERE name='$name' ORDER BY $order_by";
 529      }
 530      if($limit!="") {$sql.=" LIMIT $limit;";}
 531      $res=mysql_query($sql);
 532      if(mysql_num_rows($res)>0) {
 533          $cpt=0;
 534          while($lig=mysql_fetch_object($res)) {
 535              $tab[$cpt]=array();
 536  
 537              for($loop=0;$loop<count($champs);$loop++) {
 538                  $champ_courant=$champs[$loop];
 539                  $tab[$cpt][$champ_courant]=$lig->$champ_courant;
 540              }
 541              $cpt++;
 542          }
 543      }
 544  
 545      return $tab;
 546  }
 547  
 548  function tableau_liste_sauvegardes($name,$id="",$mac="",$order_by='date DESC',$limit="") {
 549      $html="";
 550  
 551      $tab=liste_sauvegardes($name,$id,$mac,$order_by,$limit);
 552  
 553      if(count($tab)==0) {
 554          $html="Aucune sauvegarde n'est recens&eacute;e pour <b>$name</b>";
 555      }
 556      else {
 557          if($limit==1) {$html.="La derni&agrave;re sauvegarde&nbsp;:";}
 558          elseif($limit>1) {$html.="Les $limit derni&agrave;res sauvegardes&nbsp;:";}
 559          $html.="<table class='crob'>\n";
 560          $html.="<tr>\n";
 561          $html.="<th>Id</th>\n";
 562          $html.="<th>Nom</th>\n";
 563          $html.="<th>Partition</th>\n";
 564          $html.="<th>Sauvegarde</th>\n";
 565          $html.="<th>Date</th>\n";
 566          $html.="<th>Descriptif</th>\n";
 567          $html.="</tr>\n";
 568          for($loop=0;$loop<count($tab);$loop++) {
 569              $html.="<tr>\n";
 570              $html.="<td>".$tab[$loop]['id']."</td>\n";
 571              $html.="<td>".$tab[$loop]['name']."</td>\n";
 572              $html.="<td>".$tab[$loop]['partition']."</td>\n";
 573              $html.="<td>".$tab[$loop]['image']."</td>\n";
 574              $html.="<td>".mysql_date_to_fr_date($tab[$loop]['date'])."</td>\n";
 575              $html.="<td style='text-align:left'><pre>".$tab[$loop]['descriptif']."</pre></td>\n";
 576              $html.="</tr>\n";
 577          }
 578          $html.="</table>\n";
 579      }
 580  
 581      return $html;
 582  }
 583  //====================================================
 584  function liste_rapports($name,$id="",$mac="",$order_by='date DESC',$limit="") {
 585      $tab=array();
 586  
 587      $champs=array('id', 'name', 'mac', 'date', 'tache', 'statut', 'descriptif', 'identifiant');
 588  
 589      // Une machine peut changer de nom
 590      // Une recherche par MAC ou ID donnera plus de réponses... mais peut-être avec des sauvegardes dans lesquelles la machine avait un autre nom
 591      if($mac!="") {
 592          $sql="select * from se3_tftp_rapports WHERE mac='$mac' ORDER BY $order_by";
 593      }
 594      elseif($id!="") {
 595          $sql="select * from se3_tftp_rapports WHERE id='$id' ORDER BY $order_by";
 596      }
 597      else {
 598          $sql="select * from se3_tftp_rapports WHERE name='$name' ORDER BY $order_by";
 599      }
 600      if($limit!="") {$sql.=" LIMIT $limit;";}
 601      $res=mysql_query($sql);
 602      if(mysql_num_rows($res)>0) {
 603          $cpt=0;
 604          while($lig=mysql_fetch_object($res)) {
 605              $tab[$cpt]=array();
 606  
 607              for($loop=0;$loop<count($champs);$loop++) {
 608                  $champ_courant=$champs[$loop];
 609                  $tab[$cpt][$champ_courant]=$lig->$champ_courant;
 610              }
 611              $cpt++;
 612          }
 613      }
 614  
 615      return $tab;
 616  }
 617  
 618  function tableau_liste_rapports($name,$id="",$mac="",$order_by='date DESC', $limit="") {
 619      $html="";
 620  
 621      $tab=liste_rapports($name,$id,$mac,$order_by,$limit);
 622  
 623      if(count($tab)==0) {
 624          $html="Aucune sauvegarde n'est recens&eacute;e pour <b>$name</b>";
 625      }
 626      else {
 627          if($limit==1) {$html.="Le dernier rapport&nbsp;:";}
 628          elseif($limit>1) {$html.="Les $limit derniers rapports&nbsp;:";}
 629          $html.="<table class='crob'>\n";
 630          $html.="<tr>\n";
 631          $html.="<th>Id</th>\n";
 632          $html.="<th>Nom</th>\n";
 633          $html.="<th>Partition</th>\n";
 634          $html.="<th>Sauvegarde</th>\n";
 635          $html.="<th>Date</th>\n";
 636          $html.="<th>Descriptif</th>\n";
 637          $html.="</tr>\n";
 638          for($loop=0;$loop<count($tab);$loop++) {
 639              $html.="<tr>\n";
 640              $html.="<td>".$tab[$loop]['id']."</td>\n";
 641              $html.="<td>".$tab[$loop]['name']."</td>\n";
 642              $html.="<td>".$tab[$loop]['partition']."</td>\n";
 643              $html.="<td>".$tab[$loop]['image']."</td>\n";
 644              $html.="<td>".mysql_date_to_fr_date($tab[$loop]['date'])."</td>\n";
 645              $html.="<td style='text-align:left'><pre>".$tab[$loop]['descriptif']."</pre></td>\n";
 646              $html.="</tr>\n";
 647          }
 648          $html.="</table>\n";
 649      }
 650  
 651      return $html;
 652  }
 653  
 654  function list_delegated_parcs($login) {
 655      $tab=array();
 656  
 657      $sql="select * from delegation WHERE login='$login' AND niveau='manage' ORDER BY parc;";
 658      $res=mysql_query($sql);
 659      if(mysql_num_rows($res)>0) {
 660          $cpt=0;
 661          while($lig=mysql_fetch_object($res)) {
 662              $tab[]=$lig->parc;
 663          }
 664      }
 665  
 666      return $tab;
 667  }
 668  
 669  /*
 670  function is_machine_in_parc($machine,$parc) {
 671      global $ldap_server, $ldap_port, $dn;
 672      global $error;
 673  
 674      $retour="n";
 675      $filtre="(&(cn=$parc)(member=cn=$machine,*))";
 676      //$filtre="(&(cn=$parc)(member=*$machine*))";
 677      $branche="parcs";
 678  
 679      $attribut=array('cn');
 680  
 681      $ds=@ldap_connect($ldap_server,$ldap_port);
 682      if($ds){
 683          $r=@ldap_bind($ds);// Bind anonyme
 684          if($r) {
 685              $result=ldap_search($ds,$dn[$branche],"$filtre",$attribut);
 686              echo "<p>ldap_search($ds,".$dn[$branche].",\"$filtre\",$attribut);</p>";
 687              if ($result){
 688                  //echo "\$result=$result<br />";
 689                  $info=@ldap_get_entries($ds,$result);
 690                  if(($info)&&($info["count"]!=0)){
 691                      $retour="y";
 692                  }
 693              }
 694          }
 695      }
 696      return $retour;
 697  }
 698  */
 699  function is_machine_in_parc($machine,$parc) {
 700      $retour="n";
 701      $mp=gof_members($parc,"parcs",1);
 702      $nombre_machine=count($mp);
 703      for ($loop=0; $loop < count($mp); $loop++) {
 704          if(strtolower($mp[$loop])==strtolower($machine)) {
 705              $retour="y";
 706              break;
 707          }
 708      }
 709      return $retour;
 710  }
 711  
 712  ?>


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