files: update parsing
This commit is contained in:
@ -2,7 +2,20 @@
|
|||||||
require "../format.inc";
|
require "../format.inc";
|
||||||
$TITLE = 'Downloads';
|
$TITLE = 'Downloads';
|
||||||
|
|
||||||
if ($_SERVER['PATH_INFO'] !== '') {
|
global $getProd;
|
||||||
|
global $getVers;
|
||||||
|
$getProd = null;
|
||||||
|
$getVers = null;
|
||||||
|
$info = explode('/', $_SERVER['PATH_INFO']);
|
||||||
|
if ($info[1] === 'elwig' || $info[1] === 'winziprint') {
|
||||||
|
$getProd = $info[1];
|
||||||
|
$getVers = $info[2];
|
||||||
|
if (sizeof($info) > 3) {
|
||||||
|
header('Status: 404');
|
||||||
|
header('Content-Length: 0');
|
||||||
|
exit();
|
||||||
|
}
|
||||||
|
} else if ($_SERVER['PATH_INFO'] !== '') {
|
||||||
header('Status: 404');
|
header('Status: 404');
|
||||||
header('Content-Length: 0');
|
header('Content-Length: 0');
|
||||||
exit();
|
exit();
|
||||||
@ -14,37 +27,68 @@ foreach (scandir('.') as $file) {
|
|||||||
$files[$file] = [filesize($file), filemtime($file), filectime($file)];
|
$files[$file] = [filesize($file), filemtime($file), filectime($file)];
|
||||||
}
|
}
|
||||||
|
|
||||||
$format = get_fmt();
|
$entities = [];
|
||||||
if ($format === 'json') {
|
|
||||||
header('Content-Type: application/json; charset=UTF-8');
|
|
||||||
echo "{\"status\": \"success\", \"data\": [\n";
|
|
||||||
$first = true;
|
|
||||||
foreach ($files as $name => [$size, $mtime, $ctime]) {
|
foreach ($files as $name => [$size, $mtime, $ctime]) {
|
||||||
if (!$first) echo ",\n";
|
|
||||||
$p1 = strrpos($name, '-') + 1;
|
$p1 = strrpos($name, '-') + 1;
|
||||||
$p2 = strrpos($name, '.');
|
$p2 = strrpos($name, '.');
|
||||||
$vers = substr($name, $p1, $p2 - $p1);
|
$vers = substr($name, $p1, $p2 - $p1);
|
||||||
$url = "https://www.necronda.net/elwig/files/$name";
|
$url = "https://www.necronda.net/elwig/files/$name";
|
||||||
$mod = date(DATE_ATOM, $mtime);
|
$mod = date(DATE_ATOM, $mtime);
|
||||||
$cre = date(DATE_ATOM, $ctime);
|
$cre = date(DATE_ATOM, $ctime);
|
||||||
echo " {\"version\": \"$vers\", \"name\": \"$name\", \"url\": \"$url\", \"size\": $size, \"created\": \"$cre\", \"modified\": \"$mod\"}";
|
$prod = strtolower(substr($name, 0, $p1 - 1));
|
||||||
|
$entities[$name] = [
|
||||||
|
$prod,
|
||||||
|
$vers,
|
||||||
|
$url,
|
||||||
|
$size,
|
||||||
|
$mtime,
|
||||||
|
$ctime,
|
||||||
|
$mod,
|
||||||
|
$cre
|
||||||
|
];
|
||||||
|
}
|
||||||
|
$versions = [];
|
||||||
|
if ($getVers === 'latest') {
|
||||||
|
foreach ($entities as $name => [$prod, $vers, $url, $size, $mtime, $ctime, $mod, $cre]) {
|
||||||
|
$versions[$prod] = $vers;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$entities = array_filter($entities, function($e) {
|
||||||
|
global $getProd;
|
||||||
|
global $getVers;
|
||||||
|
return (empty($getProd) || $getProd === $e[0]) && (empty($getVers) || $getVers === $e[1]);
|
||||||
|
});
|
||||||
|
|
||||||
|
$format = get_fmt();
|
||||||
|
if ($format === 'json') {
|
||||||
|
header('Content-Type: application/json; charset=UTF-8');
|
||||||
|
echo "{\"status\": \"success\", \"data\": [\n";
|
||||||
|
$first = true;
|
||||||
|
foreach ($entities as $name => [$prod, $vers, $url, $size, $mtime, $ctime, $mod, $cre]) {
|
||||||
|
if (!$first) echo ",\n";
|
||||||
|
echo " {\"product\": \"$prod\", \"version\": \"$vers\", \"name\": \"$name\", \"url\": \"$url\", \"size\": $size, \"created\": \"$cre\", \"modified\": \"$mod\"}";
|
||||||
$first = false;
|
$first = false;
|
||||||
}
|
}
|
||||||
echo "\n]}\n";
|
echo "\n]}\n";
|
||||||
} else if ($format === 'text') {
|
} else if ($format === 'text') {
|
||||||
header('Content-Type: text/plain; charset=UTF-8');
|
header('Content-Type: text/plain; charset=UTF-8');
|
||||||
foreach ($files as $name => [$size, $mtime, $ctime]) {
|
foreach ($entities as $name => [$prod, $vers, $url, $size, $mtime, $ctime, $mod, $cre]) {
|
||||||
echo "$name\t" . number_format($size / 1024 / 1024, 1) . " MB\n";
|
echo "$name\t" . number_format($size / 1024 / 1024, 1) . " MB\n";
|
||||||
}
|
}
|
||||||
} else if ($format === 'html') {
|
} else if ($format === 'html') {
|
||||||
|
if (isset($getProd) && isset($getVers) && sizeof($entities) === 1) {
|
||||||
|
header('Status: 303');
|
||||||
|
header('Location: ' . $entities[array_key_first($entities)][2]);
|
||||||
|
exit();
|
||||||
|
}
|
||||||
header('Content-Type: text/html; charset=UTF-8');
|
header('Content-Type: text/html; charset=UTF-8');
|
||||||
require "../header.inc"; ?>
|
require "../header.inc"; ?>
|
||||||
<h1>Downloads</h1>
|
<h1>Downloads</h1>
|
||||||
<table>
|
<table>
|
||||||
<thead><tr><th>Name</th><th>Größe</th></tr></thead>
|
<thead><tr><th>Name</th><th>Größe</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php foreach ($files as $name => [$size, $mtime, $ctime]) {
|
<?php foreach ($entities as $name => [$prod, $vers, $url, $size, $mtime, $ctime, $mod, $cre]) {
|
||||||
echo " <tr><td><a href='$name'>$name</a></td><td>" . number_format($size / 1024 / 1024, 1) . " MB</td></tr>\n";
|
echo " <tr><td><a href='files/$name'>$name</a></td><td>" . number_format($size / 1024 / 1024, 1) . " MB</td></tr>\n";
|
||||||
} ?>
|
} ?>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
|
Reference in New Issue
Block a user