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@302
|
85 echo " · <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&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&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@302
|
158 Copyright © <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@302
|
163 <a href="http://scn.slitaz.org/">Community</a> ·
|
pascal@302
|
164 <a href="http://doc.slitaz.org/">Doc</a> ·
|
pascal@302
|
165 <a href="http://forum.slitaz.org/">Forum</a> ·
|
pascal@302
|
166 <a href="http://pkgs.slitaz.org/">Packages</a> ·
|
pascal@302
|
167 <a href="http://bugs.slitaz.org">Bugs</a> ·
|
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@302
|
172 <a href="http://twitter.com/slitaz">Twitter</a> ·
|
pascal@302
|
173 <a href="http://www.facebook.com/slitaz">Facebook</a> ·
|
pascal@302
|
174 <a href="http://distrowatch.com/slitaz">Distrowatch</a> ·
|
pascal@302
|
175 <a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a> ·
|
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>
|