<?php
/**
 * @file generer_fichier_bidon.php
 * @brief Page qui génère un fichier de taille voulue.
 *
 * @author hughes monget
 * @see http://monget.com/
 */
set_time_limit(0);
$int_taille = 1;
$str_aleas = $str_collision = '';
$str_extension = 'txt';
define('INT_1_MEGA', 1024 * 1024);
if (!empty($_REQUEST['taille']) && intval($_REQUEST['taille']) > 0)
{
    if (!empty($_REQUEST['aleas']))
    {
        $str_aleas = ' checked="checked" ';
    }
    if (!empty($_REQUEST['collision']))
    {
        $str_collision = ' checked="checked" ';
    }
    if (isset($_REQUEST['extension']) && is_string($_REQUEST['extension']) && ($str_tmp = trim($_REQUEST['extension'])))
    {
        $str_extension = $str_tmp;
    }
    $int_taille = intval($_REQUEST['taille']);
    $str_remplissage = str_repeat(chr(0), INT_1_MEGA); // Remplissage de 0
    if (!headers_sent())
    {
        $str_anticollision = '';
        if ($str_collision)
        {
            $str_anticollision = '_'.md5(uniqid(mt_rand(), 1));
        }
        header('Content-type: application/octet-stream');
        header('Content-Disposition: attachment; filename="file_'.str_pad($int_taille, 3, '0', STR_PAD_LEFT).'_mo'.$str_anticollision.'.'.$str_extension.'"');
        header('Content-Transfer-Encoding: binary');
    }
    ob_start();
    for ($ii = 0; $ii < $int_taille; $ii++)
    {
        if ($str_aleas)
        {
            /*
            ob_start();
            for ($jj = 0; $jj < $int_iteration; $jj++)
            {
                echo chr(mt_rand() % 0x100);
            }
            $str_remplissage = ob_get_clean();
            */
            $arr_aleas = range(chr(0), chr(0xff));
            shuffle($arr_aleas);
            $str_seed = md5(implode($arr_aleas), TRUE);
            $int_iteration = INT_1_MEGA / strlen($str_seed);
            ob_start();
            for ($jj = 0; $jj < $int_iteration; $jj++)
            {
                echo ($str_seed = md5($str_seed, TRUE));
            }
            $str_remplissage = ob_get_clean();
        }
        echo $str_remplissage;
    }
    ob_end_flush();
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
        <title>Générer un fichier bidon (remplissage de 0 par défaut)</title>
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
        <style type="text/css">
        </style>
    </head>
    <body>
        <form>
            <table>
                <tr>
                    <td><label for="taille">Taille en Mo</label></td>
                    <td><input type="text" id="taille" name="taille" value="<?php echo $int_taille ?>" maxlength="4" style="width:30px" /></td>
                </tr>
                <tr>
                    <td><label for="extension">Extension</label></td>
                    <td><input type="text" id="extension" name="extension" value="<?php echo $str_extension ?>" maxlength="4" style="width:30px" /></td>
                </tr>
                <tr>
                    <td><label for="aleas">Contenu aléatoire ?</label></td>
                    <td><input type="checkbox" id="aleas" name="aleas" <?php echo $str_aleas ?> /></td>
                </tr>
                <tr>
                    <td><label for="collision">Anti-collision ?</label></td>
                    <td><input type="checkbox" id="collision" name="collision" <?php echo $str_collision ?> /></td>
                </tr>
                <tr>
                    <td><input type="submit" value="générer" /></td>
                </tr>
            </table>
        </form>
<?php
echo '<hr />';
highlight_file(__FILE__);
?>
    </body>
</html>