[ Index ] |
PHP Cross Reference of Unnamed Project |
[Summary view] [Print] [Text view]
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ée pour <b>$name</b>"; 555 } 556 else { 557 if($limit==1) {$html.="La derniàre sauvegarde :";} 558 elseif($limit>1) {$html.="Les $limit derniàres sauvegardes :";} 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ée pour <b>$name</b>"; 625 } 626 else { 627 if($limit==1) {$html.="Le dernier rapport :";} 628 elseif($limit>1) {$html.="Les $limit derniers rapports :";} 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 ?>
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Mar 17 22:47:18 2015 | Cross-referenced by PHPXref 0.7.1 |