slitaz-dev-tools annotate mirror-tools/slitaz/mirror/dir-generator.php @ rev 94

mirror-tools: new style & 2G+ file support
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon May 30 13:29:45 2011 +0200 (2011-05-30)
parents 84721689334b
children eafccab82109
rev   line source
slaxemulator@10 1 <?php
slaxemulator@10 2 function redirect()
slaxemulator@10 3 {
slaxemulator@10 4 ?>
slaxemulator@10 5 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
slaxemulator@10 6 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
slaxemulator@10 7 <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
slaxemulator@10 8 <head>
slaxemulator@10 9 <title>SliTaz mirror redirection</title>
slaxemulator@10 10 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
slaxemulator@10 11 <meta name="description" content="slitaz mirror redirection" />
slaxemulator@10 12 <meta name="robots" content="index, nofollow" />
slaxemulator@10 13 <meta name="author" content="SliTaz Contributors" />
slaxemulator@10 14 <meta http-equiv="Refresh" content="0;url=http://mirror.slitaz.org/">
slaxemulator@10 15 </head>
slaxemulator@10 16 <?php
slaxemulator@10 17 }
slaxemulator@10 18
slaxemulator@10 19 $VERSION = "0.2-slitaz";
slaxemulator@10 20
slaxemulator@10 21 /* Lighttpd Enhanced Directory Listing Script
slaxemulator@10 22 * ------------------------------------------
slaxemulator@10 23 * Authors: Evan Fosmark <me@evanfosmark.com>,
slaxemulator@10 24 * Pascal Bellard <pascal.bellard@slitaz.org>
slaxemulator@10 25 * Christophe Lincoln <pankso@slitaz.org>
slaxemulator@10 26 *
slaxemulator@10 27 *
slaxemulator@10 28 * GNU License Agreement
slaxemulator@10 29 * ---------------------
slaxemulator@10 30 * This program is free software; you can redistribute it and/or modify
slaxemulator@10 31 * it under the terms of the GNU General Public License as published by
slaxemulator@10 32 * the Free Software Foundation; either version 2 of the License, or
slaxemulator@10 33 * (at your option) any later version.
slaxemulator@10 34 *
slaxemulator@10 35 * This program is distributed in the hope that it will be useful,
slaxemulator@10 36 * but WITHOUT ANY WARRANTY; without even the implied warranty of
slaxemulator@10 37 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
slaxemulator@10 38 * GNU General Public License for more details.
slaxemulator@10 39 *
slaxemulator@10 40 * You should have received a copy of the GNU General Public License
slaxemulator@10 41 * along with this program; if not, write to the Free Software
slaxemulator@10 42 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
slaxemulator@10 43 *
slaxemulator@10 44 * http://www.gnu.org/licenses/gpl.txt
slaxemulator@10 45 */
slaxemulator@10 46
slaxemulator@10 47 // Get the path (cut out the query string from the request_uri)
slaxemulator@10 48 list($path) = explode('?', $_SERVER['REQUEST_URI']);
slaxemulator@10 49
slaxemulator@10 50
slaxemulator@10 51 // Get the path that we're supposed to show.
slaxemulator@10 52 $path = ltrim(rawurldecode($path), '/');
slaxemulator@10 53
slaxemulator@10 54
slaxemulator@10 55 if(strlen($path) == 0) {
slaxemulator@10 56 $path = "./";
slaxemulator@10 57 }
slaxemulator@10 58
slaxemulator@10 59
slaxemulator@10 60 // Can't call the script directly since REQUEST_URI won't be a directory
slaxemulator@10 61 if($_SERVER['PHP_SELF'] == '/'.$path) {
slaxemulator@10 62 redirect();
slaxemulator@10 63 // die("Unable to call " . $path . " directly.");
slaxemulator@10 64 }
slaxemulator@10 65
slaxemulator@10 66
slaxemulator@10 67 $vpath = ($path != "./")?$path:"";
slaxemulator@10 68 // Make sure it is valid.
slaxemulator@10 69 if(!is_dir($path)) {
slaxemulator@10 70 // die("<b>" . $path . "</b> is not a valid path.");
slaxemulator@10 71 $path = dirname($_SERVER["SCRIPT_FILENAME"]);
slaxemulator@10 72 list($vpath) = explode('?', $_SERVER['REQUEST_URI']);
slaxemulator@10 73 $vpath = ltrim(rawurldecode($vpath), '/');
slaxemulator@10 74 }
slaxemulator@10 75
slaxemulator@10 76
slaxemulator@10 77 //
slaxemulator@10 78 // This function returns the file size of a specified $file.
slaxemulator@10 79 //
slaxemulator@10 80 function format_bytes($size, $precision=1) {
slaxemulator@10 81 $sizes = array('Y', 'Z', 'E', 'P', 'T', 'G', 'M', 'K', '');
slaxemulator@10 82 $total = count($sizes);
slaxemulator@10 83
slaxemulator@10 84 while($total-- && $size > 1024) $size /= 1024;
slaxemulator@10 85 if ($sizes[$total] == '') {
slaxemulator@10 86 $size /= 1024;
slaxemulator@10 87 $total--;
slaxemulator@10 88 }
slaxemulator@10 89 return sprintf('%.'.$precision.'f', $size).$sizes[$total];
slaxemulator@10 90 }
slaxemulator@10 91
slaxemulator@10 92 //
slaxemulator@10 93 // Get some variables from /etc/lighttpd/lighttpd.conf
slaxemulator@10 94 //
slaxemulator@10 95 $conf_lightty = file_get_contents("/etc/lighttpd/lighttpd.conf");
slaxemulator@10 96
slaxemulator@10 97 function get_conf($var,$start,$stop,$default='') {
slaxemulator@10 98 global $conf_lightty;
slaxemulator@10 99
slaxemulator@10 100 if (!preg_match('/'.$var.'/',$conf_lightty)) return $default;
slaxemulator@10 101 $filter = '/(.*\n)*'.$var.'\s*=\s*'.$start.'(([^'.$stop.']*\n*)*)'.$stop.'(.*\n)*/';
slaxemulator@10 102 return preg_replace($filter,'$2',$conf_lightty);
slaxemulator@10 103 }
slaxemulator@10 104
slaxemulator@10 105 $encoding = get_conf('dir-listing.encoding','"','"','ascii');
slaxemulator@10 106 $external_css = get_conf('dir-listing.external-css','"','"');
slaxemulator@10 107
slaxemulator@10 108 $show_hidden_files = false;
slaxemulator@10 109 if (get_conf('dir-listing.hide-dotfile','"','"','disable') == "disable") {
slaxemulator@10 110 $show_hidden_files = true;
slaxemulator@10 111 }
slaxemulator@10 112 // get_conf('dir-listing.exclude','\(','\)');
slaxemulator@10 113 // get_conf('dir-listing.set-footer','"','"');
slaxemulator@10 114
slaxemulator@10 115 $mime_types = array();
slaxemulator@10 116 foreach (explode(',',get_conf('mimetype.assign','\(','\)')) as $item) {
slaxemulator@10 117 $filter = '/\s*"(.*)"\s*=>\s*"(.*)".*/';
slaxemulator@10 118 $val = explode(',',preg_replace($filter,'$1,$2',$item));
slaxemulator@10 119 if (isset($val[1])) $mime_types[$val[0]] = $val[1];
slaxemulator@10 120 }
slaxemulator@10 121
slaxemulator@10 122 //
slaxemulator@10 123 // This function returns the mime type of $file.
slaxemulator@10 124 //
slaxemulator@10 125 function get_file_type($file) {
slaxemulator@10 126 global $mime_types;
slaxemulator@10 127
slaxemulator@10 128 $file = basename($file);
slaxemulator@10 129 $default_type = "application/octet-stream";
slaxemulator@10 130 if (isset($mime_types[$file])) {
slaxemulator@10 131 return $mime_types[$file];
slaxemulator@10 132 }
slaxemulator@10 133 $pos = strrpos($file, ".");
slaxemulator@10 134 if ($pos === false) {
slaxemulator@10 135 return $default_type;
slaxemulator@10 136 }
slaxemulator@10 137 //FIXME .tar.gz
slaxemulator@10 138 $ext = '.'.rtrim(substr($file, $pos+1), "~");
slaxemulator@10 139 if (isset($mime_types[$ext])) {
slaxemulator@10 140 return $mime_types[$ext];
slaxemulator@10 141 }
slaxemulator@10 142 return $default_type;
slaxemulator@10 143 }
slaxemulator@10 144
slaxemulator@10 145 //$slitaz_style = (dirname($_SERVER["PHP_SELF"]) == '/');
slaxemulator@10 146 $slitaz_style = ($_SERVER["SERVER_NAME"] == "mirror.slitaz.org");
slaxemulator@10 147 if ($slitaz_style) {
slaxemulator@10 148 $fvalue = "";
slaxemulator@10 149 if (isset($_GET[f])) $fvalue = 'value="'.$_GET[f].'"';
slaxemulator@10 150 print <<<EOT
slaxemulator@10 151 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
slaxemulator@10 152 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
slaxemulator@10 153 <html xml:lang="en" xmlns="http://www.w3.org/1999/xhtml" lang="en">
slaxemulator@10 154 <head>
slaxemulator@10 155 <title>Index of /$vpath</title>
slaxemulator@10 156 <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />
slaxemulator@10 157 <meta name="description" content=">Index of /$vpath" />
slaxemulator@10 158 <meta name="robots" content="index, nofollow" />
slaxemulator@10 159 <meta name="author" content="SliTaz Contributors" />
slaxemulator@10 160 <link rel="shortcut icon" href="/css/favicon.ico" />
slaxemulator@10 161 <link rel="stylesheet" type="text/css" href="/css/slitaz.css" />
slaxemulator@10 162 <style type='text/css'>
slaxemulator@10 163 div.list { background-color: white; padding-bottom: 14px;}
pascal@94 164 table { width: 100% ;}
slaxemulator@10 165 th, td { font: 90% monospace; text-align: left;}
slaxemulator@10 166 th { font-weight: bold; padding-right: 14px; padding-bottom: 3px;}
slaxemulator@10 167 td {padding-right: 14px;}
slaxemulator@10 168 td.s, th.s {text-align: right;}
slaxemulator@10 169 </style>
slaxemulator@10 170 </head>
slaxemulator@10 171 <body>
slaxemulator@10 172
slaxemulator@10 173 <!-- Header -->
slaxemulator@10 174 <div id="header">
pascal@94 175 <div id="logo"></div>
pascal@94 176 <div id="network">
pascal@94 177 <a href="http://www.slitaz.org/">
pascal@94 178 <img src="/css/pics/network.png" alt="network.png" /></a>
pascal@94 179 <a href="http://scn.slitaz.org/">Community</a>
pascal@94 180 <a href="http://doc.slitaz.org/">Doc</a>
pascal@94 181 <a href="http://forum.slitaz.org/">Forum</a>
pascal@94 182 <a href="http://bugs.slitaz.org">Bugs</a>
pascal@94 183 <a href="http://hg.slitaz.org/">Hg</a>
pascal@94 184 </div>
pascal@94 185 <h1><a href="http://mirror.slitaz.org/">SliTaz Mirror</a> /${vpath}</h1>
slaxemulator@10 186 </div>
slaxemulator@10 187
pascal@94 188 <!-- Block -->
pascal@94 189 <div id="block">
pascal@94 190 <!-- Navigation -->
pascal@94 191 <div id="block_nav">
pascal@94 192 <h4><img src="/css/pics/network.png" alt=".png" />Mirrors</h4>
pascal@94 193 <div>
pascal@94 194 EOT;
slaxemulator@10 195
pascal@94 196 // Mirror list
slaxemulator@10 197 $mirrors = array();
slaxemulator@10 198 $fp = @fopen(dirname($_SERVER["SCRIPT_FILENAME"])."/mirrors","r");
slaxemulator@10 199 if ($fp) {
slaxemulator@10 200 while (($line = fgets($fp)) !== false) {
slaxemulator@10 201 $line = chop($line);
slaxemulator@10 202 $url = parse_url($line);
slaxemulator@10 203 if ($_SERVER["SERVER_NAME"] == $url['host']) continue;
slaxemulator@10 204 $host = explode('.',$url['host']);
slaxemulator@10 205 $mirrors[$host[count($host)-2].".".
slaxemulator@10 206 $host[count($host)-1]] = $line;
slaxemulator@10 207 }
slaxemulator@10 208 }
slaxemulator@10 209 fclose($fp);
slaxemulator@10 210 foreach($mirrors as $name => $url) {
slaxemulator@10 211 echo "<a href=\"$url$vpath\" title=\"$name mirror\">$name</a>\n";
slaxemulator@10 212 }
pascal@94 213
slaxemulator@10 214 print <<<EOT
pascal@94 215 </div>
pascal@94 216 <p>
pascal@94 217 <strong>Online tools:</strong>
pascal@94 218 <a href="http://pizza.slitaz.org/">Live Builder</a> -
pascal@94 219 <a href="http://boot.slitaz.org/">Web Boot</a>
slaxemulator@10 220 </p>
slaxemulator@10 221 </div>
pascal@94 222 <!-- Information/image -->
pascal@94 223 <div id="block_info">
pascal@94 224 <h4>Welcome to Open Source!</h4>
pascal@94 225 EOT;
pascal@94 226 if ($_SERVER["SERVER_NAME"] == "mirror.slitaz.org") print <<<EOT
pascal@94 227 <p>This is the SliTaz GNU/Linux main mirror. The server runs naturally
pascal@94 228 SliTaz (stable) in an lguest virtual machine provided by
pascal@94 229 <a href="http://www.ads-lu.com/">ADS</a>.
pascal@94 230 <a href="/info/">Mirror info...</a></p>
pascal@94 231 EOT;
pascal@94 232 print <<<EOT
pascal@94 233 <form action="${_SERVER["REQUEST_URI"]}" method="get" style="width: 300px;">
pascal@94 234 <p><input type="text" name="f" $fvalue
pascal@94 235 style="height: 14px; border-radius: 4px;" /></p>
pascal@94 236 </form>
pascal@94 237 </div>
slaxemulator@10 238 </div>
slaxemulator@10 239
pascal@94 240 <!-- Content -->
pascal@94 241 <div id="content">
pascal@94 242
slaxemulator@10 243 EOT;
slaxemulator@10 244 }
slaxemulator@10 245 else {
slaxemulator@10 246
slaxemulator@10 247 // Print the heading stuff
slaxemulator@10 248 print "<?xml version='1.0' encoding='$encoding'?>
slaxemulator@10 249 <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' 'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>
slaxemulator@10 250 <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
slaxemulator@10 251 <head>
slaxemulator@10 252 <title>Index of /" .$vpath. "</title>
slaxemulator@10 253 ";
slaxemulator@10 254 if ($external_css != '') {
slaxemulator@10 255 print " <link rel='stylesheet' type='text/css' href='".$external_css."' />
slaxemulator@10 256 ";
slaxemulator@10 257 }
slaxemulator@10 258 else {
slaxemulator@10 259 print " <style type='text/css'>
slaxemulator@10 260 a, a:active {text-decoration: none; color: blue;}
slaxemulator@10 261 a:visited {color: #48468F;}
slaxemulator@10 262 a:hover, a:focus {text-decoration: underline; color: red;}
slaxemulator@10 263 body {background-color: #F5F5F5;}
slaxemulator@10 264 h2 {margin-bottom: 12px;}
slaxemulator@10 265 table {margin-left: 12px;}
slaxemulator@10 266 th, td { font: 90% monospace; text-align: left;}
slaxemulator@10 267 th { font-weight: bold; padding-right: 14px; padding-bottom: 3px;}
slaxemulator@10 268 td {padding-right: 14px;}
slaxemulator@10 269 td.s, th.s {text-align: right;}
slaxemulator@10 270 div.list { background-color: white; border-top: 1px solid #646464; border-bottom: 1px solid #646464; padding-top: 10px; padding-bottom: 14px;}
slaxemulator@10 271 div.foot { font: 90% monospace; color: #787878; padding-top: 4px;}
slaxemulator@10 272 </style>
slaxemulator@10 273 ";
slaxemulator@10 274 }
slaxemulator@10 275 print " </head>
slaxemulator@10 276 <boby>
slaxemulator@10 277 <h2>Index of /" . $vpath ."</h2>
slaxemulator@10 278 ";
slaxemulator@10 279 }
slaxemulator@10 280
slaxemulator@10 281 print " <div class='list'>
slaxemulator@10 282 <table summary='Directory Listing' cellpadding='0' cellspacing='0'>
slaxemulator@10 283 ";
slaxemulator@10 284
pascal@94 285 function my_is_file($path) // 2G+ file support
pascal@94 286 {
pascal@94 287 exec("[ -f '".$path."' ]", $tmp, $ret);
pascal@94 288 return $ret == 0;
pascal@94 289 }
slaxemulator@10 290
pascal@94 291 function my_filesize($path) // 2G+ file support
pascal@94 292 {
pascal@94 293 return rtrim(shell_exec("stat -c %s '".$path."'"));
pascal@94 294 }
pascal@94 295
pascal@94 296 function my_filemtime($path) // 2G+ file support
pascal@94 297 {
pascal@94 298 return rtrim(shell_exec("stat -c %Y '".$path."'"));
pascal@94 299 }
slaxemulator@10 300
slaxemulator@10 301 // Get all of the folders and files.
slaxemulator@10 302 $folderlist = array();
slaxemulator@10 303 $filelist = array();
slaxemulator@10 304 if($handle = @opendir($path)) {
slaxemulator@10 305 while(($item = readdir($handle)) !== false) {
slaxemulator@10 306 if ($item == "index.php") continue;
slaxemulator@10 307 if ($item == "dir-generator.php") continue;
slaxemulator@10 308 if (isset($_GET['f'])) {
slaxemulator@10 309 $filter = $_GET['f'];
slaxemulator@10 310 if (substr($filter,0,1) != '/')
slaxemulator@10 311 $filter = '/'.$filter.'/i';
slaxemulator@10 312 if (!preg_match($filter,$item)) continue;
slaxemulator@10 313 }
slaxemulator@10 314 if(is_dir($path.'/'.$item) and $item != '.' and $item != '..') {
slaxemulator@10 315 $folderlist[] = array(
slaxemulator@10 316 'name' => $item,
slaxemulator@10 317 'size' => 0,
slaxemulator@10 318 'modtime'=> filemtime($path.'/'.$item),
slaxemulator@10 319 'file_type' => "Directory"
slaxemulator@10 320 );
slaxemulator@10 321 }
pascal@94 322 elseif(my_is_file($path.'/'.$item)) {
slaxemulator@10 323 if(!$show_hidden_files) {
slaxemulator@10 324 if(substr($item, 0, 1) == "." or substr($item, -1) == "~") {
slaxemulator@10 325 continue;
slaxemulator@10 326 }
slaxemulator@10 327 }
slaxemulator@10 328 $filelist[] = array(
slaxemulator@10 329 'name'=> $item,
pascal@94 330 'size'=> my_filesize($path.'/'.$item),
pascal@94 331 'modtime'=> my_filemtime($path.'/'.$item),
slaxemulator@10 332 'file_type' => get_file_type($path.'/'.$item)
slaxemulator@10 333 );
slaxemulator@10 334 }
slaxemulator@10 335 }
slaxemulator@10 336 closedir($handle);
slaxemulator@10 337 }
slaxemulator@10 338
slaxemulator@10 339
slaxemulator@10 340 if(!isset($_GET['s'])) {
slaxemulator@10 341 $_GET['s'] = 'name';
slaxemulator@10 342 }
slaxemulator@10 343
slaxemulator@10 344 // Figure out what to sort files by
slaxemulator@10 345 $file_order_by = array();
slaxemulator@10 346 foreach ($filelist as $key=>$row) {
slaxemulator@10 347 $file_order_by[$key] = $row[$_GET['s']];
slaxemulator@10 348 }
slaxemulator@10 349
slaxemulator@10 350 // Figure out what to sort folders by
slaxemulator@10 351 $folder_order_by = array();
slaxemulator@10 352 foreach ($folderlist as $key=>$row) {
slaxemulator@10 353 $folder_order_by[$key] = $row[$_GET['s']];
slaxemulator@10 354 }
slaxemulator@10 355
slaxemulator@10 356 // Order the files and folders
slaxemulator@10 357 $sort_type = SORT_ASC;
slaxemulator@10 358 $order = "&amp;o=d";
slaxemulator@10 359 if(isset($_GET['o'])) {
slaxemulator@10 360 $sort_type = SORT_DESC;
slaxemulator@10 361 $order = "";
slaxemulator@10 362 }
slaxemulator@10 363 array_multisort($folder_order_by, $sort_type, $folderlist);
slaxemulator@10 364 array_multisort($file_order_by, $sort_type, $filelist);
slaxemulator@10 365
slaxemulator@10 366
slaxemulator@10 367 // Show sort methods
slaxemulator@10 368 print "<thead><tr>";
slaxemulator@10 369
slaxemulator@10 370 $sort_methods = array();
slaxemulator@10 371 $sort_methods['name'] = "Name";
slaxemulator@10 372 $sort_methods['modtime'] = "Last Modified";
slaxemulator@10 373 $sort_methods['size'] = "Size";
slaxemulator@10 374 $sort_methods['file_type'] = "Type";
slaxemulator@10 375
slaxemulator@10 376 foreach($sort_methods as $key=>$item) {
slaxemulator@10 377 if ($_GET['s'] == $key) $key = "$key$order";
slaxemulator@10 378 print "<th class='n'><a href='?s=$key'>$item</a></th>";
slaxemulator@10 379 }
slaxemulator@10 380 print "</tr></thead>\n<tbody>\n";
slaxemulator@10 381
slaxemulator@10 382
slaxemulator@10 383
slaxemulator@10 384 // Parent directory link
slaxemulator@10 385 if($path != "./") {
slaxemulator@10 386 print "<tr><td class='n'><a href='..'>Parent Directory</a>/</td>";
slaxemulator@10 387 print "<td class='m'>&nbsp;</td>";
slaxemulator@10 388 print "<td class='s'>- &nbsp;</td>";
slaxemulator@10 389 print "<td class='t'>Directory</td></tr>\n";
slaxemulator@10 390 }
slaxemulator@10 391
slaxemulator@10 392
slaxemulator@10 393
slaxemulator@10 394 // Print folder information
slaxemulator@10 395 foreach($folderlist as $folder) {
slaxemulator@10 396 print "<tr><td class='n'><a href='" . addslashes($folder['name']). "'>" .htmlentities($folder['name']). "</a>/</td>";
slaxemulator@10 397 print "<td class='m'>" . date('Y-M-d H:m:s', $folder['modtime']) . "</td>";
slaxemulator@10 398 print "<td class='s'>- &nbsp;</td>";
slaxemulator@10 399 print "<td class='t'>" . $folder['file_type'] . "</td></tr>\n";
slaxemulator@10 400 }
slaxemulator@10 401
slaxemulator@10 402
slaxemulator@10 403 // Print file information
slaxemulator@10 404 foreach($filelist as $file) {
slaxemulator@10 405 print "<tr><td class='n'><a href='" . addslashes($file['name']). "'>" .htmlentities($file['name']). "</a></td>";
slaxemulator@10 406 print "<td class='m'>" . date('Y-M-d H:m:s', $file['modtime']) . "</td>";
slaxemulator@10 407 print "<td class='s'>" . format_bytes($file['size']) . "</td>";
slaxemulator@10 408 print "<td class='t'>" . $file['file_type'] . "</td></tr>\n";
slaxemulator@10 409 }
slaxemulator@10 410
slaxemulator@10 411 // Print ending stuff
slaxemulator@10 412 $soft = explode('/',$_SERVER["SERVER_SOFTWARE"]);
slaxemulator@10 413 $tag = get_conf('server.tag','"','"',$soft[0].' &lt;'.$soft[1].'&gt;');
slaxemulator@10 414 print "</tbody>
slaxemulator@10 415 </table>
slaxemulator@10 416 </div>";
slaxemulator@10 417 if ($slitaz_style) { ?>
slaxemulator@10 418
slaxemulator@10 419 <!-- End of content -->
slaxemulator@10 420 </div>
slaxemulator@10 421
slaxemulator@10 422 <!-- Footer -->
slaxemulator@10 423 <div id="footer">
pascal@94 424 Copyright &copy; <span class="year"></span>
pascal@94 425 <a href="http://www.slitaz.org/">SliTaz</a> - Network:
pascal@94 426 <a href="http://scn.slitaz.org/">Community</a>
pascal@94 427 <a href="http://doc.slitaz.org/">Doc</a>
pascal@94 428 <a href="http://forum.slitaz.org/">Forum</a>
pascal@94 429 <a href="http://pkgs.slitaz.org/">Packages</a>
pascal@94 430 <a href="http://bugs.slitaz.org">Bugs</a>
pascal@94 431 <a href="http://hg.slitaz.org/">Hg</a>
pascal@94 432 <p>
pascal@94 433 SliTaz @
pascal@94 434 <a href="http://twitter.com/slitaz">Twitter</a>
pascal@94 435 <a href="http://www.facebook.com/slitaz">Facebook</a>
pascal@94 436 <a href="http://distrowatch.com/slitaz">Distrowatch</a>
pascal@94 437 <a href="http://en.wikipedia.org/wiki/SliTaz">Wikipedia</a>
pascal@94 438 <a href="http://flattr.com/profile/slitaz">Flattr</a>
pascal@94 439 </p>
slaxemulator@10 440 </div>
slaxemulator@10 441
slaxemulator@10 442 <?php }
slaxemulator@10 443 else print "
slaxemulator@10 444 <form action='".$_SERVER["REQUEST_URI"]."' method='get'>
slaxemulator@10 445 <div class='foot'>".$tag."
slaxemulator@10 446 <input type='text' name='f'/>
slaxemulator@10 447 <!-- <input type='submit' value='Filter' /> -->
slaxemulator@10 448 </div>
slaxemulator@10 449 </form>
slaxemulator@10 450 ";
slaxemulator@10 451 print "</body>
slaxemulator@10 452 </html>";
slaxemulator@10 453 ?>