echo "</td>\n";
 echo "</tr>\n";
 //if($auto_reboot=='y') {
 if ($auto_reboot == 'y' || $auto_reboot == 'halt') {
     echo "<tr>\n";
     echo "<th style='text-align:left;'>Délai avant reboot: </th>\n";
     echo "<td>\n";
     echo "{$delais_reboot} s";
     echo "</td>\n";
     echo "</tr>\n";
 }
 echo "</table>\n";
 echo "<p>Génération du fichier dans /tftpboot/pxelinux.cfg/ pour la remontée de rapports.<br />\n";
 // BOUCLE SUR LA LISTE DES $id_machine[$i]
 // Numéro de l'opération de remontée de rapport:
 $num_op = get_free_se3_action_tftp_num_op();
 for ($i = 0; $i < count($id_machine); $i++) {
     $sql = "SELECT * FROM se3_dhcp WHERE id='" . $id_machine[$i] . "';";
     //echo "$sql<br />";
     $res = mysql_query($sql);
     if (mysql_num_rows($res) == 0) {
         echo "<span style='color:red;'>La machine d'identifiant {$id_machine[$i]} n'existe pas dans 'se3_dhcp'.</span><br />\n";
     } else {
         $temoin_erreur = "n";
         $lig = mysql_fetch_object($res);
         $mac_machine = $lig->mac;
         $nom_machine = $lig->name;
         $ip_machine = $lig->ip;
         if ($restriction_parcs == "y") {
             $temoin_erreur = 'y';
             for ($loop = 0; $loop < count($tab_delegated_parcs); $loop++) {
Example #2
0
/**

* ecriture des fichiers pressed en fction des infos précendentes 
* @Parametres $id_machine
* @Return 
*/
function valid_dist($id_machine)
{
    echo "<h2>Validation des param&egrave;tres du lancement de l'installation</h2>\n";
    //debug_var();
    //while read A;do B=$(echo "$A"|cut -d"'" -f2);echo "\$$B=isset($A) ? $A : 'on';";done < liste_champs.txt
    //while read A;do B=$(echo "$A"|cut -d"'" -f2);echo "$B=\$$B";done < liste_champs.txt
    //echo "$_POST[arch]";
    //=========================
    // Extraction de paramètres nécessaires par la suite
    $query = "SELECT * from params where name='xppass' OR name='se3_domain' OR name='se3ip'";
    $result = mysql_query($query);
    while ($resultat = mysql_fetch_assoc($result)) {
        $infos[$resultat['name']] = $resultat['value'];
    }
    $xppass = $infos['xppass'];
    $domaine_local = $infos['se3_domain'];
    $se3ip = $infos['se3ip'];
    //=========================
    //=========================
    // Mirroir
    $mirroir = isset($_POST['mirroir']) ? explode('/', $_POST['mirroir']) : explode('/', 'ftp.fr.debian.org/debian');
    $mirror['hostname'] = $mirroir[0];
    //$mirror['directory'] = $mirroir[1];
    $mirror['directory'] = "/depot/debian";
    //=========================
    //=========================
    // Architecture
    $arch = isset($_POST['arch']) ? $_POST['arch'] : 'i386';
    //=========================
    //=========================
    // environnement de bureau
    $envbur = isset($_POST['envbur']) ? $_POST['envbur'] : 'xfce';
    //=========================
    //=========================
    // Partitionnement
    $fdisk = isset($_POST['fdisk']) ? $_POST['fdisk'] : 1;
    // Au cas où l'admin a désactivé Javascript, on installe dans une partition libre ...
    //=========================
    //=========================
    // Serveur de temps NTP
    $ntpserv = isset($_POST['ntpserv']) ? $_POST['ntpserv'] : 'ntp.ac-creteil.fr';
    //$sql="SELECT value FROM params WHERE name='dhcp_ntp';";
    //$res=mysql_query($sql);
    //if(mysql_num_rows($res)>0) {
    //	$lig=mysql_fetch_object($res);
    //	if($lig->value!="") {$dhcp_ntp=$lig->value;}
    //	// Il faudrait contrôler que l'adresse est valide, non?
    //}
    //=========================
    //=========================
    // Mot de passe root
    $root_pass = isset($_POST['root_mdp']) ? crypt($_POST['root_mdp']) : crypt($xppass);
    //=========================
    //=========================
    // Nouvel utilisateur
    $newuser_name = isset($_POST['newuser_name']) ? $_POST['newuser_name'] : "enseignant";
    $newuser_pass = isset($_POST['newuser_mdp']) ? crypt($_POST['newuser_mdp']) : crypt(enseignant);
    //=========================
    //=========================
    // Mot de passe grub
    $grub_pass = isset($_POST['grub_mdp']) ? crypt($_POST['grub_mdp']) : crypt($xppass);
    //=========================
    //=========================
    // Serveur TFTP
    $dhcp_tftp_server = $_SERVER["SERVER_ADDR"];
    //=========================
    // rECUP VARIABLES WAKE ET SHUTDOWN
    $wake = $_POST["wake"];
    $shutdown_reboot = $_POST["shutdown_reboot"];
    $sql = "SELECT value FROM params WHERE name='dhcp_tftp_server';";
    $res = mysql_query($sql);
    if (mysql_num_rows($res) > 0) {
        $lig = mysql_fetch_object($res);
        if ($lig->value != "") {
            $dhcp_tftp_server = $lig->value;
        }
        // Il faudrait contrôler que l'adresse est valide, non?
    }
    //=========================
    echo "<p>";
    for ($i = 0; $i < count($id_machine); $i++) {
        $sql = "SELECT * FROM se3_dhcp WHERE id='" . $id_machine[$i] . "';";
        $res = mysql_query($sql);
        if (mysql_num_rows($res) == 0) {
            echo "<span style='color:red;'>La machine d'identifiant {$id_machine[$i]} n'existe pas dans 'se3_dhcp'.</span><br />\n";
        } else {
            $lig = mysql_fetch_object($res);
            $nom_machine = $lig->name;
            // On écrit le fichier preseed dans le bon dossier
            $dossier_preseed = "/var/www/se3/tmp/";
            $dossier_preseed_src = "/var/www/install/";
            $preseeddebian = "preseed_debian.cfg";
            $preseedmonreseau = "preseed_debian_monreseau.cfg";
            //$dossier_unattend_txt="/var/www/preseeds";
            $preseeddest = $dossier_preseed . $nom_machine . "_preseed.cfg";
            if ($fdisk == 0) {
                $preseedsrc = $dossier_preseed_src . "preseed_debian_" . $envbur . ".cfg";
                $preseedboot = "preseed_debian_only.cfg";
            } else {
                if ($fdisk == 1) {
                    $preseedsrc = $dossier_preseed_src . "preseed_debian_" . $envbur . "_dboot.cfg";
                    $preseedboot = "preseed_debian_dboot.cfg";
                }
            }
            $fu = fopen($dossier_preseed . $nom_machine . "_preseed.cfg", "w+");
            if (!copy($preseedsrc, $preseeddest)) {
                echo "<p>ERREUR lors de la cr&eacute;ation de " . $dossier_preseed . "/" . $nom_machine . "_preseed.cfg</p>\n";
                include "pdp.inc.php";
                die;
            }
            $fu = fopen($dossier_preseed . $preseeddebian, "w+");
            copy($dossier_preseed_src . $preseeddebian, $dossier_preseed . $preseeddebian);
            $fu = fopen($dossier_preseed . $preseedmonreseau, "w+");
            copy($dossier_preseed_src . $preseedmonreseau, $dossier_preseed . $preseedmonreseau);
            $fu = fopen($dossier_preseed . $preseedboot, "w+");
            copy($dossier_preseed_src . $preseedboot, $dossier_preseed . $preseedboot);
        }
    }
    echo "<p>G&eacute;n&eacute;ration des fichiers dans /tftpboot/pxelinux.cfg/ pour l'installation automatique<br />\n";
    // BOUCLE SUR LA LISTE DES $id_machine[$i]
    // Numéro de l'opération de remontée de rapport:
    $num_op = get_free_se3_action_tftp_num_op();
    for ($i = 0; $i < count($id_machine); $i++) {
        $sql = "SELECT * FROM se3_dhcp WHERE id='" . $id_machine[$i] . "';";
        $res = mysql_query($sql);
        if (mysql_num_rows($res) == 0) {
            echo "<span style='color:red;'>La machine d'identifiant {$id_machine[$i]} n'existe pas dans 'se3_dhcp'.</span><br />\n";
        } else {
            $temoin_erreur = "n";
            $lig = mysql_fetch_object($res);
            $mac_machine = $lig->mac;
            $nom_machine = $lig->name;
            $ip_machine = $lig->ip;
            //Ajouter ici le domaine local et l'url du preseed à  passer à  pxe_gen_cfg_debian.sh
            // domaine fait au début du script
            $url_du_preseed = "http://" . $se3ip . ":909/tmp/" . $nom_machine . "_preseed.cfg";
            echo "G&eacute;n&eacute;ration pour {$nom_machine} : ";
            $corrige_mac = strtolower(strtr($mac_machine, ":", "-"));
            $chemin = "/usr/share/se3/scripts";
            $resultat = exec("{$chemin}/pxe_gen_cfg.sh 'install_linux' '{$corrige_mac}' '{$ip_machine}' '{$nom_machine}'  '{$url_du_preseed}' '{$arch}'", $retour);
            if (count($retour) > 0) {
                echo "<span style='color:red;'>ECHEC de la g&eacute;n&eacute;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_machine[$i]}';";
                $suppr = mysql_query($sql);
                $timestamp = time();
                $sql = "INSERT INTO se3_tftp_action SET id='{$id_machine[$i]}',\n\tmac='{$mac_machine}',\n\tname='{$nom_machine}',\n\tdate='{$timestamp}',\n\ttype='auto_linux',\n\tnum_op='{$num_op}',\n\tinfos='';";
                $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 != "y") {
                    echo "<span style='color:green;'>OK</span>\n";
                    echo " <span id='wake_shutdown_or_reboot_{$i}'></span>";
                    echo "<script type='text/javascript'>\n\t// <![CDATA[\n\tnew 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'});\n\t//]]>\n</script>\n";
                    echo "<br />\n";
                }
            }
        }
    }
    // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
    // POUVOIR TAGUER DANS LA TABLE se3_dhcp LES MACHINES QUI PEUVENT BOOTER EN PXE
    // Ajouter un champ?
    // +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
    // On n'affiche le fichier que pour le dernier (à  titre d'info):
    if (isset($corrige_mac)) {
        $fich = fopen("/tftpboot/pxelinux.cfg/01-{$corrige_mac}", "r");
        if ($fich) {
            echo "<p>Pour information, voici le contenu du fichier g&eacute;n&eacute;r&eacute;:<br />\n";
            echo "<pre style='border:1px solid black; color:green;'>";
            while (!feof($fich)) {
                $ligne = fgets($fich, 4096);
                echo htmlentities($ligne);
            }
            echo "</pre>\n";
            fclose($fich);
        } else {
            echo "<p style='color:red;'>Il n'a pas &eacute;t&eacute; possible d'ouvrir le fichier /tftpboot/pxelinux.cfg/01-{$corrige_mac}</p>\n";
        }
    }
}