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