slitaz-forge annotate mirror/floppies/download.php @ rev 707

Add btn_donate_SM.gif
author Pascal Bellard <pascal.bellard@slitaz.org>
date Wed Nov 27 11:38:10 2019 +0100 (2019-11-27)
parents 4ea260d6c590
children
rev   line source
pascal@265 1 <?php
pascal@265 2
pascal@265 3 $fdsz=80*18*1024;
pascal@265 4 $cpiopad=512;
pascal@265 5 function download($name, $size, $cmd)
pascal@265 6 {
pascal@265 7 header("Content-Type: application/octet-stream");
pascal@265 8 header("Content-Length: ".$size);
pascal@265 9 header("Content-Disposition: attachment; filename=".$name);
pascal@265 10 echo `$cmd 2> /dev/null`;
pascal@265 11 exit;
pascal@265 12 }
pascal@265 13
pascal@265 14 function my_filesize($path) // 2G+ file support
pascal@265 15 {
pascal@265 16 return rtrim(shell_exec("stat -c %s '".$path."'"));
pascal@265 17 }
pascal@265 18
pascal@265 19 if (isset($_GET['iso']))
pascal@265 20 $_POST['iso'] = $_GET['iso'];
pascal@265 21
pascal@265 22 if (isset($_GET['file']))
pascal@265 23 {
pascal@265 24 $max = floor((my_filesize("../".$_GET["iso"]) + $fdsz - 1 + $cpiopad) / $fdsz);
pascal@265 25 $cmd = "cd ../".dirname($_GET['iso'])."; ls ".
pascal@265 26 basename($_GET['iso'],".iso").".*".
pascal@265 27 " | cpio -o -H newc | cat - /dev/zero ";
pascal@265 28 if ($_GET['file'] == "md5sum") {
pascal@696 29 $cmd .= "| for i in \$(seq 1 $max); do dd conv=sync bs=4k ".
pascal@696 30 "count=".($fdsz/4096)." 2> /dev/null | md5sum | ".
pascal@265 31 "sed \"s/-\\\$/\$(printf 'fdiso%02d.img' \$i)/\"; done";
pascal@696 32 $len = 46 * $max;
pascal@696 33 $cmd .= "; md5sum ".basename($_GET['iso']);
pascal@696 34 $len += strlen(basename($_GET['iso'])) + 35;
pascal@696 35 download("md5sum", $len, $cmd);
pascal@265 36 }
pascal@265 37 else {
pascal@696 38 $cmd .= "| dd bs=4k count=".($fdsz/4096)." conv=sync skip=".
pascal@696 39 (($_GET['file'] - 1)*($fdsz/4096))." ";
pascal@265 40 download(sprintf("fdiso%02d.img",$_GET['file']), $fdsz, $cmd);
pascal@265 41 }
pascal@265 42 }
pascal@625 43 ?><!DOCTYPE html>
pascal@625 44 <html lang="en">
pascal@265 45 <head>
pascal@625 46 <meta charset="UTF-8">
pascal@265 47 <title>SliTaz Boot Floppies</title>
pascal@625 48 <meta name="description" content="slitaz boot floppies">
pascal@625 49 <meta name="robots" content="index, nofollow">
pascal@625 50 <meta name="author" content="SliTaz Contributors">
pascal@625 51 <link rel="shortcut icon" href="static/favicon.ico">
pascal@625 52 <link rel="stylesheet" href="static/slitaz.min.css">
pascal@265 53 <style type="text/css">
pascal@625 54 .block_info { width: 40%; }
pascal@625 55 nav table { margin: 6px 0 0 0; }
pascal@625 56 nav table a { color: #215090; }
pascal@625 57 nav header::before { content: url(pics/floppy.png); vertical-align: middle; padding: 0 6px 0 0; }
pascal@625 58 pre, tt, code { font-size: 0.9rem; }
pascal@265 59 </style>
pascal@265 60 </head>
pascal@625 61 <body>
pascal@625 62
pascal@625 63 <script>de=document.documentElement;de.className+=(("ontouchstart" in de)?' touch':' no-touch');</script>
pascal@625 64
pascal@625 65 <header>
pascal@625 66 <h1 id="top"><a href="http://www.slitaz.org/">Boot floppies</a></h1>
pascal@625 67
pascal@625 68 <div class="network">
pascal@625 69 <a href="http://www.slitaz.org/" class="home"></a>
pascal@366 70 <a href="floppy-grub4dos" title="Boot tools">Generic boot floppy</a>
pascal@366 71 <a href="http://tiny.slitaz.org/" title="SliTaz in one floppy !">Tiny SliTaz</a>
pascal@366 72 <a href="builder/index.php" title="Build floppies with your own kernel and initramfs">Floppy set web builder</a>
pascal@265 73 <a href="builder/bootloader" title="Build your floppy sets without Internet">Shell builder</a>
pascal@265 74 </div>
pascal@625 75 </header>
pascal@265 76
pascal@265 77 <!-- Block -->
pascal@625 78 <div class="block"><div>
pascal@625 79
pascal@265 80 <!-- Information/image -->
pascal@625 81 <div class="block_info">
pascal@625 82 <header>Available boot floppies</header>
pascal@265 83 <ul>
pascal@366 84 <?php
pascal@366 85 for ($i = 1; file_exists("index-$i.0.html") ; $i++);
pascal@366 86 while (--$i > 0) {
pascal@625 87 echo " <li><a href=\"index-$i.0.html\">SliTaz $i.0</a>";
pascal@696 88 foreach (array("loram","web","mini") as $flavor)
pascal@696 89 if (file_exists("index-".$flavor."-".$i.".0.html"))
pascal@696 90 echo " &middot; <a href=\"index-".$flavor."-$i.0.html\">".$flavor."</a>";
pascal@625 91 echo " </li>\n";
pascal@366 92 }
pascal@366 93 ?>
pascal@265 94 </ul>
pascal@265 95 </div>
pascal@265 96
pascal@625 97
pascal@625 98 <!-- Navigation -->
pascal@625 99 <nav>
pascal@625 100 <header>Download 1.44MB images for <?php $dir = explode('/',$_POST["iso"]); echo $dir[1]; ?></header>
pascal@625 101 <table>
pascal@625 102 <?php
pascal@625 103 $max = floor((my_filesize("../".$_POST["iso"]) + $fdsz - 1 + $cpiopad) / $fdsz);
pascal@625 104 for ($i = 1; $i <= $max ; $i++) {
pascal@625 105 if ($i % 6 == 1) echo " <tr>\n";
pascal@625 106 echo " <td><a href=\"download.php?file=$i&amp;iso=".
pascal@625 107 urlencode($_POST["iso"])."\">fdiso".sprintf("%02d",$i);
pascal@625 108 echo "</a></td>\n";
pascal@625 109 if ($i % 6 == 0) echo " </tr>\n";
pascal@625 110 }
pascal@625 111 if ($max % 6 != 0) {
pascal@625 112 while ($max % 6 != 5) { echo " <td> </td>"; $max++; }
pascal@625 113 }
pascal@625 114 else echo " <tr>\n";
pascal@625 115 echo " <td><a href=\"download.php?file=md5sum&amp;iso=".
pascal@625 116 urlencode($_POST["iso"])."\">md5</a></td>\n </tr>";
pascal@625 117 ?>
pascal@625 118 </table>
pascal@625 119 </nav>
pascal@625 120 </div></div>
pascal@625 121
pascal@265 122
pascal@265 123 <!-- Content -->
pascal@625 124 <main>
pascal@265 125
pascal@265 126 <h2>ISO image floppy set</h2>
pascal@265 127
pascal@625 128 <p>You can restore the <a href="../<?php echo $_POST['iso'].
pascal@625 129 '">'.basename($_POST['iso']); ?></a> ISO image on your hard disk using:</p>
pascal@625 130
pascal@265 131 <pre>
pascal@265 132 # dd if=/dev/fd0 of=fdiso01.img
pascal@265 133 # dd if=/dev/fd0 of=fdiso02.img
pascal@265 134 # ...
pascal@265 135 # cat fdiso*.img | cpio -i
pascal@265 136 </pre>
pascal@265 137
pascal@265 138
pascal@625 139 <!-- End of content -->
pascal@625 140 </main>
pascal@265 141
pascal@625 142
pascal@625 143 <script>
pascal@625 144 function QRCodePNG(str, obj) {
pascal@625 145 try {
pascal@625 146 obj.height = obj.width += 300;
pascal@625 147 return QRCode.generatePNG(str, {ecclevel: 'H'});
pascal@625 148 }
pascal@625 149 catch (any) {
pascal@625 150 var element = document.createElement("script");
pascal@625 151 element.src = "/static/qrcode.min.js";
pascal@625 152 element.type = "text/javascript";
pascal@625 153 element.onload = function() {
pascal@625 154 obj.src = QRCode.generatePNG(str, {ecclevel: 'H'});
pascal@625 155 };
pascal@625 156 document.body.appendChild(element);
pascal@625 157 }
pascal@625 158 }
pascal@625 159 </script>
pascal@625 160
pascal@625 161 <footer>
pascal@625 162 <div>
pascal@696 163 Copyright &copy; <span class="year"></span>
pascal@625 164 <a href="http://www.slitaz.org/">SliTaz</a>
pascal@625 165 </div>
pascal@625 166 <div>
pascal@625 167 Network:
pascal@696 168 <a href="http://scn.slitaz.org/">Community</a> &middot;
pascal@696 169 <a href="http://doc.slitaz.org/">Doc</a> &middot;
pascal@696 170 <a href="http://forum.slitaz.org/">Forum</a> &middot;
pascal@696 171 <a href="http://pkgs.slitaz.org/">Packages</a> &middot;
pascal@696 172 <a href="http://bugs.slitaz.org">Bugs</a> &middot;
pascal@625 173 <a href="http://hg.slitaz.org/?sort=lastchange">Hg</a>
pascal@625 174 </div>
pascal@625 175 <div>
pascal@625 176 SliTaz @
pascal@696 177 <a href="http://twitter.com/slitaz">Twitter</a> &middot;
pascal@696 178 <a href="http://www.facebook.com/slitaz">Facebook</a> &middot;
pascal@696 179 <a href="http://distrowatch.com/slitaz">Distrowatch</a> &middot;
pascal@696 180 <a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a> &middot;
pascal@625 181 <a href="http://flattr.com/profile/slitaz">Flattr</a>
pascal@625 182 </div>
pascal@625 183 <img src="/static/qr.png" alt="#" onmouseover="this.title = location.href"
pascal@625 184 onclick="this.src = QRCodePNG(location.href, this)"/>
pascal@625 185 </footer>
pascal@265 186
pascal@265 187 </body>
pascal@265 188 </html>