Subversion Repositories se3

Compare Revisions

Ignore whitespace Rev 6612 → Rev 6613

/branches/2.1/se3-clonage/sources/www/tftp/action_clone_tftp.php
39,10 → 39,18
// Bibliothèque prototype Ajax pour afficher en décalé l'état des machines:
echo "<script type='text/javascript' src='../includes/prototype.js'></script>\n";
 
/*
echo "<script type='text/javascript'>
Event.observe(window, 'load', function() {
Event.observe(document, 'keydown', func_KeyDown);
});
</script>\n";
*/
 
// CSS pour mes tableaux:
echo "<link type='text/css' rel='stylesheet' href='tftp.css' />\n";
 
if (is_admin("system_is_admin",$login)=="Y")
if ((is_admin("system_is_admin",$login)=="Y")||(ldap_get_right("parc_can_clone",$login)=="Y"))
{
// Choix des parcs:
$parc=isset($_POST['parc']) ? $_POST['parc'] : (isset($_GET['parc']) ? $_GET['parc'] : NULL);
63,6 → 71,7
$netmodule=isset($_POST['netmodule']) ? $_POST['netmodule'] : (isset($_GET['netmodule']) ? $_GET['netmodule'] : NULL);
$min_receivers=isset($_POST['min_receivers']) ? $_POST['min_receivers'] : (isset($_GET['min_receivers']) ? $_GET['min_receivers'] : NULL);
$max_wait=isset($_POST['max_wait']) ? $_POST['max_wait'] : (isset($_GET['max_wait']) ? $_GET['max_wait'] : NULL);
$min_wait=isset($_POST['min_wait']) ? $_POST['min_wait'] : (isset($_GET['min_wait']) ? $_GET['min_wait'] : NULL);
$start_timeout=isset($_POST['start_timeout']) ? $_POST['start_timeout'] : (isset($_GET['start_timeout']) ? $_GET['start_timeout'] : NULL);
$auto_reboot=isset($_POST['auto_reboot']) ? $_POST['auto_reboot'] : (isset($_GET['auto_reboot']) ? $_GET['auto_reboot'] : NULL);
 
78,6 → 87,17
 
echo "<h1>".gettext("Action clonage TFTP")."</h1>\n";
 
$restriction_parcs="n";
if(is_admin("system_is_admin",$login)!="Y") {
$restriction_parcs="y";
$tab_delegated_parcs=list_delegated_parcs($login);
if(count($tab_delegated_parcs)==0) {
echo "<p>Aucun parc ne vous a été délégué.</p>\n";
include ("pdp.inc.php");
die();
}
}
 
if(!isset($parc)){
 
echo "<p>Choisissez un ou des parcs:</p>\n";
106,10 → 126,12
echo "<td align='left'>\n";
}
 
echo "<label for='parc_$loop'><input type='checkbox' id='parc_$loop' name='parc[]' value=\"".$list_parcs[$loop]["cn"]."\"";
if(count($list_parcs)==1) {echo " checked";}
echo " />".$list_parcs[$loop]["cn"]."</label>\n";
echo "<br />\n";
if(($restriction_parcs=="n")||(in_array($list_parcs[$loop]["cn"], $tab_delegated_parcs))) {
echo "<label for='parc_$loop'><input type='checkbox' id='parc_$loop' name='parc[]' value=\"".$list_parcs[$loop]["cn"]."\"";
if(count($list_parcs)==1) {echo " checked";}
echo " />".$list_parcs[$loop]["cn"]."</label>\n";
echo "<br />\n";
}
}
 
echo "</td>\n";
120,8 → 142,23
 
echo "</form>\n";
 
echo "<p><a href='index.php'>Retour à l'index</a>.</p>\n";
 
echo "<script type='text/javascript'>
nb_parcs=0;
id_parc='';
for(i=0;i<$loop;i++) {
if(document.getElementById('parc_'+i)) {
nb_parcs++;
id_parc='parc_'+i;
}
}
if(nb_parcs==1) {
document.getElementById(id_parc).checked=true;
}
</script>\n";
 
echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n";
}
else {
if(!isset($id_emetteur)) {
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
285,14 → 322,22
 
}
elseif(!isset($id_recepteur)){
 
// Ajout keyser test emetteur bien allume
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
 
$sql="SELECT * FROM se3_dhcp WHERE id='$id_emetteur';";
$res=mysql_query($sql);
$lig=mysql_fetch_object($res);
echo "<p>Emetteur: $lig->name (<i>id:$id_emetteur</i>)</p>\n";
echo "<input type=\"hidden\" name=\"id_emetteur\" value=\"$id_emetteur\" />\n";
echo "<p>Emetteur: $lig->name (<i>id:$id_emetteur</i>)</p>\n";
echo "<input type=\"hidden\" name=\"id_emetteur\" value=\"$id_emetteur\" />\n";
exec("/usr/share/se3/sbin/tcpcheck 2 $lig->ip:445 | grep alive",$arrval,$return_value);
if ($return_value == "1") {
echo "<p style='color:red;'>Attention, clonage impossible. La machine $lig->name est injoignable ou proteg&#233;e par un parre feu : </p>\n ";
echo "<p><a href='".$_SERVER['PHP_SELF']."'>Retour au choix du/des parc(s)</a>.</p>\n";
include ("pdp.inc.php");
exit();
}
 
 
echo "<p>Choisissez les récepteurs.</p>\n";
504,7 → 549,7
 
 
 
echo "<form method=\"post\" action=\"".$_SERVER['PHP_SELF']."\">\n";
echo "<form method=\"post\" name=\"form_param\" action=\"".$_SERVER['PHP_SELF']."\">\n";
// Liste des parcs:
for($i=0;$i<count($parc);$i++){
echo "<input type=\"hidden\" name=\"parc[]\" value=\"$parc[$i]\" />\n";
545,8 → 590,8
if($temoin_sysresccd=="y") {
// Il faut aussi le noyau et l'initram.igz dans /tftpboot,
echo "<p>";
echo "<input type='radio' name='distrib' id='distrib_udpcast' value='udpcast' onchange='affiche_sections_distrib()' checked /><label for='distrib_udpcast'>Utiliser la distribution UdpCast</label><br />\n";
echo "<input type='radio' name='distrib' id='distrib_sysresccd' value='sysresccd' onchange='affiche_sections_distrib()' /><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>)\n";
echo "<input type='radio' name='distrib' id='distrib_udpcast' value='udpcast' onchange='affiche_sections_distrib()' /><label for='distrib_udpcast'>Utiliser la distribution UdpCast</label><br />\n";
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>)\n";
//echo "<br />\n";
echo "</p>\n";
 
604,7 → 649,6
echo "<label for='compr_none'><input type='radio' name='compr' id='compr_none' value='none' /> Aucune compression</label><br />\n";
echo "<label for='compr_gzip'><input type='radio' name='compr' id='compr_gzip' value='gzip' /> Compression GZIP</label><br />\n";
echo "<label for='compr_lzop'><input type='radio' name='compr' id='compr_lzop' value='lzop' checked /> Compression LZOP (<i>recommandé</i>)</label><br />\n";
 
echo "</td></tr>\n";
 
// A FAIRE: Relever les clonage en attente (possible) ou en cours (pas possible en l'état) pour ne pas proposer le même port...
691,6 → 735,17
echo "<input type='checkbox' name='dhcp' value='no' /> Ne pas prendre l'IP via DHCP mais directement depuis le /tftpboot/pxelinux.cfg/01-&lt;MAC&gt;\n";
echo "</td></tr>\n";
 
if(($temoin_sysresccd=="y")&&(crob_getParam('srcd_scripts_vers')>='20110910')) {
echo "<tr id='tr_authorized_keys'>\n";
echo "<td>Url authorized_keys&nbsp;: </td>\n";
echo "<td><input type='checkbox' name='prendre_en_compte_url_authorized_keys' value='y' /> \n";
echo "<input type='text' name='url_authorized_keys' value='".crob_getParam('url_authorized_keys')."' size='40' />\n";
echo "<u onmouseover=\"this.T_SHADOWWIDTH=5;this.T_STICKY=1;return escape".gettext("('Un fichier authorized_keys peut &ecirc;tre mis en place pour permettre un acc&egrave;s SSH aux postes clon&eacute;s.')")."\">\n";
echo "<img name=\"action_image3\" src=\"../elements/images/help-info.gif\"></u>\n";
echo "</td>\n";
echo "</tr>\n";
}
 
echo "<tr><td valign='top'>Rebooter en fin de clonage: </td>\n";
echo "<td>\n";
echo "<label for='auto_reboot_always'><input type='radio' name='auto_reboot' id='auto_reboot_always' value='always' checked /> Toujours</label><br />\n";
713,18 → 768,28
 
echo "<tr><td colspan='2' style='background-color: silver;'>Paramètres spécifiques à l'émetteur</td></tr>\n";
 
echo "<tr><td valign='top'>Nombre (<i>max</i>) de clients à attendre: </td>\n";
echo "<tr><td valign='top'>Nombre (<i>min</i>) de clients à attendre: </td>\n";
echo "<td>\n";
echo "<input type='text' name='min_receivers' value='".count($id_recepteur)."' size='3' />\n";
echo "<input type='text' name='min_receivers' id='min_receivers' value='".count($id_recepteur)."' size='3' onkeydown=\"clavier_2('min_receivers',event,1,100);\" autocomplete=\"off\" />\n";
echo "<br />\n";
echo "Lorsque le compte est atteint, le clonage démarre aussitôt.";
echo "Vous pouvez par exemple annoncer 10 récepteurs minimum alors que vous souhaitez en cloner 12.<br />";
echo "Dans ce cas, vous acceptez que deux récepteurs manquent dans le clonage, mais pas plus.<br />";
echo "<br />\n";
echo "Lorsque le compte est atteint, le clonage démarre aussitôt le délais ci-dessous écoulé.<br />";
echo "</td></tr>\n";
/*
echo "<tr><td valign='top'><b>Ou</b></td><td>(<i>mettre 0 ou vide pour l'option à ne pas retenir;<br />si aucun des deux champs n'est vidé l'option ci-dessus l'emporte</i>)</td></tr>\n";
*/
echo "<tr><td valign='top'>Délais minimum avant le démarrage:</td>\n";
echo "<td valign='bottom'>\n";
echo "<input type='text' id='min_wait' name='min_wait' value='10' size='3' onkeydown=\"clavier_2('min_wait',event,1,60);\" autocomplete=\"off\" /> minutes.\n";
echo "<br />\n";
echo "Si vous fixez un nombre de récepteurs inférieur au nombre max de clients pouvant être clonés, ce délais permettra d'attendre les récepteurs au-delà pendant cette durée.\n";
echo "</td></tr>\n";
 
echo "<tr><td valign='top'>Si un ou des clients<br />font défaut,<br />démarrer après: </td>\n";
echo "<td valign='bottom'>\n";
echo "<input type='text' name='max_wait' value='10' size='3' /> minutes.\n";
echo "<input type='text' id='max_wait' name='max_wait' value='15' size='4' onkeydown=\"clavier_2('max_wait',event,1,60);\" autocomplete=\"off\" /> minutes.\n";
echo "<br />\n";
echo "Néanmoins, le clonage ne démarre que si un client au moins est présent.\n";
echo "</td></tr>\n";
733,9 → 798,10
 
echo "<tr><td valign='top'>Abandonner après: </td>\n";
echo "<td>\n";
echo "<input type='text' name='start_timeout' value='15' size='3' /> minutes si le clonage ne démarre pas.\n";
//echo "<input type='text' id='start_timeout' name='start_timeout' value='20' size='3' onkeydown=\"clavier_2(this.id,event,1,60);\" autocomplete=\"off\" /> minutes si le clonage ne démarre pas.\n";
echo "<input type='text' id='start_timeout' name='start_timeout' value='20' size='3' onkeydown=\"clavier_2('start_timeout',event,1,60);\" autocomplete=\"off\" /> minutes si le clonage ne démarre pas.\n";
echo "<br />\n";
echo "Veillez à ce que le timeout soit supérieur à la valeur 'max-wait' spécifiée pour l'émetteur (<i>pour démarrer quand même si un des récepteurs fait défaut</i>).\n";
echo "Veillez à ce que le timeout soit supérieur à la valeur 'max-wait' spécifiée pour l'émetteur.\n";
echo "</td></tr>\n";
 
/*
746,13 → 812,29
 
echo "</table>\n";
 
echo "<p align='center'><input type=\"submit\" name=\"validation_parametres\" value=\"Valider\" /></p>\n";
echo "<input type='hidden' name='validation_parametres' value='y' />\n";
echo "<noscript><p align='center'><input type=\"submit\" name=\"bouton_submit_validation_parametres\" value=\"Valider 2\" /></p></noscript>\n";
echo "<p align='center'><input type=\"button\" name=\"bouton_validation_parametres\" value=\"Valider\" onclick=\"verif_et_valide_form()\" /></p>\n";
 
echo "<p id='p_message_shutdown_cmd' align='center' style='color:red;'> Attention ! si l'emetteur ne reboote pas tout seul en administrateur local, ouvrez une session administrateur local et lancez c:\\netinst\\shutdown.cmd </p>\n";
echo "</form>\n";
 
 
echo "<script type='text/javascript'>
function verif_et_valide_form() {
if(document.getElementById('min_wait').value>document.getElementById('max_wait').value) {
alert('La valeur minimale d attente de l emetteur ne devrait pas etre inferieure a la valeur maximale d attente.')
}
else {
if(document.getElementById('start_timeout').value<document.getElementById('max_wait').value) {
alert('La valeur max d attente de l emetteur ne devrait pas etre superieure a la valeur maximale d attente des recepteurs.')
}
else {
document.form_param.submit();
}
}
}
 
function affiche_sections_distrib() {
if(document.getElementById('distrib_sysresccd').checked==true) {
distrib='sysresccd';
768,6 → 850,7
document.getElementById('tr_netmodule').style.display='';
 
document.getElementById('div_ntfsclone').style.display='none';
document.getElementById('tr_authorized_keys').style.display='none';
}
else {
document.getElementById('div_sysresccd_kernel').style.display='';
775,6 → 858,7
document.getElementById('tr_netmodule').style.display='none';
 
document.getElementById('div_ntfsclone').style.display='';
document.getElementById('tr_authorized_keys').style.display='';
}
}
 
791,12 → 875,68
 
affiche_message_shutdown_cmd();
 
function clavier_2(n,e,vmin,vmax){
//alert(n);
// Fonction destinée à incrémenter/décrémenter le champ courant entre 0 et 255 (pour des composantes de couleurs)
// Modifié pour aller de vmin à vmax
touche= e.keyCode ;
//alert('touche='+touche);
if (touche == '40') {
valeur=document.getElementById(n).value;
if(valeur>vmin){
valeur--;
document.getElementById(n).value=valeur;
}
}
else{
if (touche == '38') {
valeur=document.getElementById(n).value;
if(valeur<vmax){
valeur++;
document.getElementById(n).value=valeur;
}
}
else{
if(touche == '34'){
valeur=document.getElementById(n).value;
if(valeur>vmin+10){
valeur=valeur-10;
}
else{
valeur=vmin;
}
document.getElementById(n).value=valeur;
}
else{
if(touche == '33'){
valeur=document.getElementById(n).value;
if(valeur<vmax-10){
//valeur=valeur+10;
//valeur+=10;
valeur=eval(valeur)+10;
}
else{
valeur=vmax;
}
document.getElementById(n).value=valeur;
}
}
}
}
}
 
</script>\n";
 
}
else {
echo "<h2>Validation des paramètres du clonage</h2>\n";
 
$opt_url_authorized_keys="";
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'])=='')) {
$opt_url_authorized_keys="url_authorized_keys=".$_POST['url_authorized_keys'];
crob_setParam('url_authorized_keys',$_POST['url_authorized_keys'],'Url fichier authorized_keys pour acces ssh aux clients TFTP');
}
 
//===================================
// Contrôle des variables:
$tab_compr=array('none','gzip','lzop');
946,7 → 1086,8
*/
 
$sec_max_wait=$max_wait*60;
$udpcparam="--max-wait=".$sec_max_wait." --min-receivers=".$min_receivers;
$sec_min_wait=$min_wait*60;
$udpcparam="--max-wait=".$sec_max_wait." --min-wait=".$sec_min_wait." --min-receivers=".$min_receivers;
$udpcparam_temp=strtr($udpcparam," ","_"); // Pour passer la récupération de variable dans pxe_gen_cfg.sh, l'espace dans le contenu de la variable pose un pb. On remplace par un _ et on fait la correction inverse dans pxe_gen_cfg.sh
 
$mac_machine=$lig->mac;
954,53 → 1095,68
$ip_machine=$lig->ip;
$corrige_mac=strtolower(strtr($mac_machine,":","-"));
 
$temoin_erreur="n";
 
$num_op=get_free_se3_action_tftp_num_op();
if($restriction_parcs=="y") {
$temoin_erreur='y';
for($loop=0; $loop<count($tab_delegated_parcs);$loop++) {
// La machine est-elle dans un des parcs délégués?
if(is_machine_in_parc($nom_machine,$tab_delegated_parcs[$loop])) {$temoin_erreur='n';break;}
}
}
 
$id_microtime=preg_replace('/[^0-9]/','_',microtime());
 
$chemin="/usr/share/se3/scripts";
 
if($type_os=='xp') {
// on lance la preparation du poste emetteur
$resultat=system("/usr/bin/sudo /usr/share/se3/scripts/integreDomaine.sh clone clone $ip_machine $nom_machine adminse3 $xppass > /dev/null", $retint);
if($temoin_erreur=="y") {
echo "<p style='color:red'>La machine $nom_machine ne vous est pas déléguée</p>\n";
}
else {
if ($retint) {
echo "<span style='color:red;'>ECHEC de la preparation du poste</span><br>\n";
$temoin_erreur="y";
} else {
echo "on attend le rapport de fin de la preparation<br>";
$temoin_erreur="n";
$sql="SELECT COUNT(*) FROM se3_tftp_rapports WHERE id='$id_emetteur' AND tache='preparation' AND statut='SUCCES' AND date>(now()-100);";
$num=0;
$incr=0;
while ($num==0) {
$count=mysql_query($sql);
$num=mysql_result($count, 0);
echo ".";
sleep(10);
if ($incr++==60) {
echo "<br>Probleme : pas de rapport remonte pour la preparation du clonage. Si le poste emetteur n'a pas reboote en adminstrateur local, relancez le clonage, connectez vous en administrateur local et lancez netinst\\shutdown.cmd";
$temoin_erreur="y";
break;
$num_op=get_free_se3_action_tftp_num_op();
$id_microtime=preg_replace('/[^0-9]/','_',microtime());
$chemin="/usr/share/se3/scripts";
if($type_os=='xp') {
// on lance la preparation du poste emetteur
$resultat=system("/usr/bin/sudo /usr/share/se3/scripts/integreDomaine.sh clone clone $ip_machine $nom_machine adminse3 $xppass > /dev/null", $retint);
if ($retint) {
echo "<span style='color:red;'>ECHEC de la preparation du poste</span><br>\n";
$temoin_erreur="y";
} else {
echo "on attend le rapport de fin de la preparation<br>";
$sql="SELECT COUNT(*) FROM se3_tftp_rapports WHERE id='$id_emetteur' AND tache='preparation' AND statut='SUCCES' AND date>(now()-100);";
$num=0;
$incr=0;
while ($num==0) {
$count=mysql_query($sql);
$num=mysql_result($count, 0);
echo ".";
sleep(10);
if ($incr++==60) {
echo "<br>Probleme : pas de rapport remonte pour la preparation du clonage. Si le poste emetteur n'a pas reboote en adminstrateur local, relancez le clonage, connectez vous en administrateur local et lancez netinst\\shutdown.cmd";
$temoin_erreur="y";
break;
}
}
if ("$temoin_erreur"=="n"){
echo "<br> preparation reussie <br>";
}
}
}
if ("$temoin_erreur"=="n"){
echo "<br> preparation reussie <br>";
}
if($distrib=='slitaz') {
$ajout_kernel="";
}
else {
$ajout_kernel="|kernel=$sysresccd_kernel";
}
}
 
 
if($distrib=='slitaz') {
$ajout_kernel="";
}
else {
$ajout_kernel="|kernel=$sysresccd_kernel";
}
 
if ("$temoin_erreur"=="n") {
echo "<p>Génération des fichiers dans /tftpboot/pxelinux.cfg/ pour l'émetteur.<br />\n";
echo "<p>Emetteur: $lig->name (<i>$id_emetteur</i>): \n";
1011,10 → 1167,10
else {
//$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_emetteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op' '$dhcp' '$dhcp_iface'", $retour);
if($ntfsclone_udpcast=='y') {
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_ntfsclone_udpcast_emetteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel id_microtime=$id_microtime'", $retour);
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_ntfsclone_udpcast_emetteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel id_microtime=$id_microtime $opt_url_authorized_keys'", $retour);
}
else {
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_emetteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel'", $retour);
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_emetteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour);
}
}
 
1096,7 → 1252,12
echo "<p>Génération des fichiers dans /tftpboot/pxelinux.cfg/ pour les récepteurs.<br />\n";
//$udpcparam="--start-timeout=".$start_timeout;
$sec_start_timeout=$start_timeout*60;
//$udpcparam="--start-timeout=".$sec_start_timeout;
 
//$sec_max_wait=$max_wait*60;
//$udpcparam="--start-timeout=".$sec_start_timeout." --max-wait=".$sec_max_wait." --min-wait=".$sec_min_wait;
$udpcparam="--start-timeout=".$sec_start_timeout;
$udpcparam_temp=strtr($udpcparam," ","_"); // Pour passer la récupération de variable dans pxe_gen_cfg.sh, l'espace dans le contenu de la variable pose un pb. On remplace par un _ et on fait la correction inverse dans pxe_gen_cfg.sh
 
// BOUCLE SUR LA LISTE DES $id_recepteur[$i]
 
1115,63 → 1276,76
$nom_machine=$lig->name;
$ip_machine=$lig->ip;
 
echo "Génération pour $nom_machine: ";
if($restriction_parcs=="y") {
$temoin_erreur='y';
for($loop=0; $loop<count($tab_delegated_parcs);$loop++) {
// La machine est-elle dans un des parcs délégués?
if(is_machine_in_parc($nom_machine,$tab_delegated_parcs[$loop])) {$temoin_erreur='n';break;}
}
}
 
$corrige_mac=strtolower(strtr($mac_machine,":","-"));
 
$chemin="/usr/share/se3/scripts";
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'udpcast_recepteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op'", $retour);
if($distrib=='udpcast') {
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'udpcast_recepteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op' '$dhcp' '$dhcp_iface'", $retour);
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'udpcast_recepteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface'", $retour);
}
if($temoin_erreur=="y") {
echo "<p style='color:red'>La machine $nom_machine ne vous est pas déléguée</p>\n";
}
else {
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_recepteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op' '$dhcp' '$dhcp_iface'", $retour);
if($ntfsclone_udpcast=='y') {
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_ntfsclone_udpcast_recepteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel id_microtime=$id_microtime'", $retour);
echo "Génération pour $nom_machine: ";
$corrige_mac=strtolower(strtr($mac_machine,":","-"));
$chemin="/usr/share/se3/scripts";
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'udpcast_recepteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op'", $retour);
if($distrib=='udpcast') {
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'udpcast_recepteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op' '$dhcp' '$dhcp_iface'", $retour);
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'udpcast_recepteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface'", $retour);
}
else {
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_recepteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel'", $retour);
//$resultat=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_recepteur' '$corrige_mac' '$ip_machine' '$nom_machine' '$compr' '$port' '$enableDiskmodule' '$diskmodule' '$netmodule' '$disk' '$auto_reboot' '$udpcparam' '$urlse3' '$num_op' '$dhcp' '$dhcp_iface'", $retour);
if($ntfsclone_udpcast=='y') {
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_ntfsclone_udpcast_recepteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel id_microtime=$id_microtime $opt_url_authorized_keys'", $retour);
}
else {
$resultat.=exec("/usr/bin/sudo $chemin/pxe_gen_cfg.sh 'sysresccd_udpcast_recepteur' 'mac=$corrige_mac ip=$ip_machine pc=$nom_machine compr=$compr port=$port enableDiskmodule=$enableDiskmodule diskmodule=$diskmodule netmodule=$netmodule disk=$disk auto_reboot=$auto_reboot udpcparam=$udpcparam_temp urlse3=$urlse3 num_op=$num_op dhcp=$dhcp dhcp_iface=$dhcp_iface kernel=$sysresccd_kernel $opt_url_authorized_keys'", $retour);
}
}
}
 
if(count($retour)>0){
echo "<span style='color:red;'>ECHEC de la génération du fichier</span><br />\n";
for($j=0;$j<count($retour);$j++){
echo "$retour[$j]<br />\n";
}
$temoin_erreur="y";
}
else {
$sql="DELETE FROM se3_tftp_action WHERE id='$id_recepteur[$i]';";
$suppr=mysql_query($sql);
 
$timestamp=time();
$sql="INSERT INTO se3_tftp_action SET id='$id_recepteur[$i]',
mac='$mac_machine',
name='$nom_machine',
date='$timestamp',
type='udpcast_recepteur',
num_op='$num_op',
infos='compr=$compr|disk=$disk|port=$port|enableDiskmodule=$enableDiskmodule|diskmodule=$diskmodule|netmodule=$netmodule|auto_reboot=$auto_reboot|udpcparam=${udpcparam}${ajout_kernel}';";
$insert=mysql_query($sql);
if(!$insert) {
echo "<span style='color:red;'>ECHEC de l'enregistrement dans 'se3_tftp_action'</span><br />\n";
if(count($retour)>0){
echo "<span style='color:red;'>ECHEC de la génération du fichier</span><br />\n";
for($j=0;$j<count($retour);$j++){
echo "$retour[$j]<br />\n";
}
$temoin_erreur="y";
}
 
if($temoin_erreur=="n") {
echo "<span style='color:green;'>OK</span>\n";
// Application de l'action choisie:
echo " <span id='wake_shutdown_or_reboot_$i'></span>";
 
echo "<script type='text/javascript'>
// <![CDATA[
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'});
//]]>
</script>\n";
 
echo "<br />\n";
else {
$sql="DELETE FROM se3_tftp_action WHERE id='$id_recepteur[$i]';";
$suppr=mysql_query($sql);
$timestamp=time();
$sql="INSERT INTO se3_tftp_action SET id='$id_recepteur[$i]',
mac='$mac_machine',
name='$nom_machine',
date='$timestamp',
type='udpcast_recepteur',
num_op='$num_op',
infos='compr=$compr|disk=$disk|port=$port|enableDiskmodule=$enableDiskmodule|diskmodule=$diskmodule|netmodule=$netmodule|auto_reboot=$auto_reboot|udpcparam=${udpcparam}${ajout_kernel}';";
$insert=mysql_query($sql);
if(!$insert) {
echo "<span style='color:red;'>ECHEC de l'enregistrement dans 'se3_tftp_action'</span><br />\n";
$temoin_erreur="y";
}
if($temoin_erreur=="n") {
echo "<span style='color:green;'>OK</span>\n";
// Application de l'action choisie:
echo " <span id='wake_shutdown_or_reboot_$i'></span>";
echo "<script type='text/javascript'>
// <![CDATA[
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'});
//]]>
</script>\n";
echo "<br />\n";
}
}
}
}