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