slitaz-dev-tools annotate mirror-tools/slitaz/mirror/floppies/download.php @ rev 305

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