Update from xhtml to html and add /files/stat

This commit is contained in:
2025-09-17 16:03:45 +02:00
parent cc3c0cab45
commit 377996ac69
4 changed files with 66 additions and 40 deletions

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <html lang="de" prefix="og: https://ogp.me/ns#">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" prefix="og: https://ogp.me/ns#">
<head> <head>
<meta charset="UTF-8"/> <meta charset="UTF-8"/>
<title>Elwig - Elektronische Winzergenossenschaftsverwaltung</title> <title>Elwig - Elektronische Winzergenossenschaftsverwaltung</title>
@@ -39,7 +38,7 @@
<li><a href="https://git.necronda.net/winzer/">Quellcode</a></li> <li><a href="https://git.necronda.net/winzer/">Quellcode</a></li>
</ul> </ul>
<div> <div>
<a href="/en/" class="flag"><div/></a> <a href="/en/" class="flag"><div></div></a>
</div> </div>
</nav> </nav>
</header> </header>
@@ -55,11 +54,11 @@
</div> </div>
</div> </div>
</a> </a>
<div class="blur bottom"/> <div class="blur bottom"></div>
</section> </section>
<section class="about"> <section class="about">
<span id="about"/> <span id="about"></span>
<h3>Elwig</h3> <h3>Elwig</h3>
<p> <p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore etdolore magna aliquyam erat, sed diam voluptua. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore etdolore magna aliquyam erat, sed diam voluptua.
@@ -76,12 +75,12 @@
</section> </section>
<section class="picture-1 background"> <section class="picture-1 background">
<div class="blur top"/> <div class="blur top"></div>
<div class="blur bottom"/> <div class="blur bottom"></div>
</section> </section>
<section class="clients"> <section class="clients">
<span id="clients"/> <span id="clients"></span>
<h3>Die Genossenschaften</h3> <h3>Die Genossenschaften</h3>
<div class="container background"> <div class="container background">
<div> <div>
@@ -92,9 +91,9 @@
<p class="link"> <p class="link">
<a href="https://winzermatzen.at/">winzermatzen.at</a> <a href="https://winzermatzen.at/">winzermatzen.at</a>
</p> </p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
<div class="filling"/> <div class="filling"></div>
<div> <div>
<h4>Winzerkeller im Weinviertel</h4> <h4>Winzerkeller im Weinviertel</h4>
<h5><span>Winzerkeller im Weinviertel</span><br/><span>reg. Gen.m.b.H.</span></h5> <h5><span>Winzerkeller im Weinviertel</span><br/><span>reg. Gen.m.b.H.</span></h5>
@@ -103,18 +102,18 @@
<p class="link"> <p class="link">
<a href="http://www.winzerkeller.eu/">winzerkeller.eu</a> <a href="http://www.winzerkeller.eu/">winzerkeller.eu</a>
</p> </p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
<div class="filling"/> <div class="filling"></div>
<div> <div>
<h4>WG Weinland</h4> <h4>WG Weinland</h4>
<h5><span>Winzergenossenschaft Weinland,</span> <span>mit dem Sitz in Groß-Inzersdorf,</span><br/><span>reg. Gen.m.b.H.</span></h5> <h5><span>Winzergenossenschaft Weinland,</span> <span>mit dem Sitz in Groß-Inzersdorf,</span><br/><span>reg. Gen.m.b.H.</span></h5>
<h6>Zweigstellen:</h6> <h6>Zweigstellen:</h6>
<div class="branches">Groß-Inzersdorf</div> <div class="branches">Groß-Inzersdorf</div>
<p class="link"></p> <p class="link"></p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
<div class="filling"/> <div class="filling"></div>
<div> <div>
<h4>WG Baden</h4> <h4>WG Baden</h4>
<h5><span>Winzergenossenschaft</span> <span>Baden - Bad Vöslau</span><br/><span>reg. Gen.m.b.H.</span></h5> <h5><span>Winzergenossenschaft</span> <span>Baden - Bad Vöslau</span><br/><span>reg. Gen.m.b.H.</span></h5>
@@ -123,13 +122,13 @@
<p class="link"> <p class="link">
<a href="http://www.wg-baden.at/">wg-baden.at</a> <a href="http://www.wg-baden.at/">wg-baden.at</a>
</p> </p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
</div> </div>
</section> </section>
<section class="picture-2 background"> <section class="picture-2 background">
<div class="blur top"/> <div class="blur top"></div>
</section> </section>
</main> </main>

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?> <html lang="en" prefix="og: https://ogp.me/ns#">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" prefix="og: https://ogp.me/ns#">
<head> <head>
<meta charset="UTF-8"/> <meta charset="UTF-8"/>
<title>Elwig - Electronic Management for Vintners' Cooperatives</title> <title>Elwig - Electronic Management for Vintners' Cooperatives</title>
@@ -39,7 +38,7 @@
<li><a href="https://git.necronda.net/winzer/">Source&#160;Code</a></li> <li><a href="https://git.necronda.net/winzer/">Source&#160;Code</a></li>
</ul> </ul>
<div> <div>
<a href="/de/" class="flag"><div/></a> <a href="/de/" class="flag"><div></div></a>
</div> </div>
</nav> </nav>
</header> </header>
@@ -55,11 +54,11 @@
</div> </div>
</div> </div>
</a> </a>
<div class="blur bottom"/> <div class="blur bottom"></div>
</section> </section>
<section class="about"> <section class="about">
<span id="about"/> <span id="about"></span>
<h3>Elwig</h3> <h3>Elwig</h3>
<p> <p>
Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore etdolore magna aliquyam erat, sed diam voluptua. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore etdolore magna aliquyam erat, sed diam voluptua.
@@ -76,12 +75,12 @@
</section> </section>
<section class="picture-1 background"> <section class="picture-1 background">
<div class="blur top"/> <div class="blur top"></div>
<div class="blur bottom"/> <div class="blur bottom"></div>
</section> </section>
<section class="clients"> <section class="clients">
<span id="clients"/> <span id="clients"></span>
<h3>The Cooperatives</h3> <h3>The Cooperatives</h3>
<div class="container background"> <div class="container background">
<div> <div>
@@ -92,9 +91,9 @@
<p class="link"> <p class="link">
<a href="https://winzermatzen.at/">winzermatzen.at</a> <a href="https://winzermatzen.at/">winzermatzen.at</a>
</p> </p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
<div class="filling"/> <div class="filling"></div>
<div> <div>
<h4>Winzerkeller im Weinviertel</h4> <h4>Winzerkeller im Weinviertel</h4>
<h5><span>Winzerkeller im Weinviertel</span><br/><span>reg. Gen.m.b.H.</span></h5> <h5><span>Winzerkeller im Weinviertel</span><br/><span>reg. Gen.m.b.H.</span></h5>
@@ -103,18 +102,18 @@
<p class="link"> <p class="link">
<a href="http://www.winzerkeller.eu/">winzerkeller.eu</a> <a href="http://www.winzerkeller.eu/">winzerkeller.eu</a>
</p> </p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
<div class="filling"/> <div class="filling"></div>
<div> <div>
<h4>WG Weinland</h4> <h4>WG Weinland</h4>
<h5><span>Winzergenossenschaft Weinland,</span> <span>mit dem Sitz in Groß-Inzersdorf,</span><br/><span>reg. Gen.m.b.H.</span></h5> <h5><span>Winzergenossenschaft Weinland,</span> <span>mit dem Sitz in Groß-Inzersdorf,</span><br/><span>reg. Gen.m.b.H.</span></h5>
<h6>Branches:</h6> <h6>Branches:</h6>
<div class="branches">Groß-Inzersdorf</div> <div class="branches">Groß-Inzersdorf</div>
<p class="link"></p> <p class="link"></p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
<div class="filling"/> <div class="filling"></div>
<div> <div>
<h4>WG Baden</h4> <h4>WG Baden</h4>
<h5><span>Winzergenossenschaft</span> <span>Baden - Bad Vöslau</span><br/><span>reg. Gen.m.b.H.</span></h5> <h5><span>Winzergenossenschaft</span> <span>Baden - Bad Vöslau</span><br/><span>reg. Gen.m.b.H.</span></h5>
@@ -123,13 +122,13 @@
<p class="link"> <p class="link">
<a href="http://www.wg-baden.at/">wg-baden.at</a> <a href="http://www.wg-baden.at/">wg-baden.at</a>
</p> </p>
<div class="edge"/><div class="edge"/><div class="edge"/><div class="edge"/> <div class="edge"></div><div class="edge"></div><div class="edge"></div><div class="edge"></div>
</div> </div>
</div> </div>
</section> </section>
<section class="picture-2 background"> <section class="picture-2 background">
<div class="blur top"/> <div class="blur top"></div>
</section> </section>
</main> </main>

View File

@@ -3,7 +3,7 @@ require "../.php/auth.inc";
require "../.php/credentials.inc"; require "../.php/credentials.inc";
global $GITEA_TOKEN; global $GITEA_TOKEN;
if ($_SERVER['PHP_AUTH_USER'] !== 'elwig' || $_SERVER['PHP_AUTH_PW'] !== 'ganzGeheim123!') { if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] !== 'elwig' || $_SERVER['PHP_AUTH_PW'] !== 'ganzGeheim123!') {
http_401_unauthorized(); http_401_unauthorized();
} }

View File

@@ -2,6 +2,8 @@
require "../.php/format.inc"; require "../.php/format.inc";
require "../.php/auth.inc"; require "../.php/auth.inc";
$ua = $_SERVER['HTTP_USER_AGENT'] ?? null;;
if ($_SERVER['REQUEST_METHOD'] === 'PUT') { if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
authenticate(); authenticate();
@@ -49,6 +51,26 @@ if ($_SERVER['REQUEST_METHOD'] === 'PUT') {
exit("405 Method Not Allowed\n"); exit("405 Method Not Allowed\n");
} }
if ($_SERVER['PATH_INFO'] === '/stat') {
if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) || $_SERVER['PHP_AUTH_USER'] !== 'elwig' || $_SERVER['PHP_AUTH_PW'] !== 'ganzGeheim123!') {
header('Status: 401');
header('WWW-Authenticate: Basic realm="Elwig"');
header('Content-Length: 0');
exit;
}
header("Content-Type: text/html; charset=UTF-8");
echo "<!DOCTYPE html><html lang='en'><head><title>Activity Statistics - Elwig</title><style>table{border-collapse:collapse;}th,td{border:1px solid black;padding:0.25em 0.5em;}</style></head><body><table>\n";
echo "<tr><th>Timestamp</th><th>IP Address</th><th>Method</th><th>URI</th><th>Format</th><th>User Agent</th></tr>\n";
passthru(<<<EOF
cat .log.csv \
| awk -F'|' -vOFS='|' '{\$1 = strftime("%F %T", $1); print $0}' \
| sed 's:|:</td><td>:g;s:^:<tr><td>:g;s:$:</td></tr>:g'
EOF);
echo "</table></body></html>\n";
exit;
}
global $getProd; global $getProd;
global $getVers; global $getVers;
$getProd = null; $getProd = null;
@@ -56,7 +78,7 @@ $getVers = null;
$info = explode('/', $_SERVER['PATH_INFO']); $info = explode('/', $_SERVER['PATH_INFO']);
if (sizeof($info) > 1 && ($info[1] === 'elwig' || $info[1] === 'winziprint')) { if (sizeof($info) > 1 && ($info[1] === 'elwig' || $info[1] === 'winziprint')) {
$getProd = $info[1]; $getProd = $info[1];
$getVers = $info[2]; if (sizeof($info) > 2) $getVers = $info[2];
if (sizeof($info) > 3) { if (sizeof($info) > 3) {
header('Status: 404'); header('Status: 404');
header('Content-Length: 0'); header('Content-Length: 0');
@@ -78,13 +100,18 @@ foreach ($filesRaw as $file) {
$entities = []; $entities = [];
foreach ($files as $name => [$size, $mtime, $ctime]) { foreach ($files as $name => [$size, $mtime, $ctime]) {
$p1 = strrpos($name, '-') + 1; $p1 = strrpos($name, '-');
$p2 = strrpos($name, '.'); $p2 = strrpos($name, '.');
$vers = substr($name, $p1, $p2 - $p1);
$url = "https://elwig.at/files/$name"; $url = "https://elwig.at/files/$name";
if ($p1 === false || $p2 === false) {
$vers = null;
$prod = null;
} else {
$vers = substr($name, $p1 + 1, $p2 - $p1 - 1);
$prod = strtolower(substr($name, 0, $p1));
}
$mod = date(DATE_ATOM, $mtime); $mod = date(DATE_ATOM, $mtime);
$cre = date(DATE_ATOM, $ctime); $cre = date(DATE_ATOM, $ctime);
$prod = strtolower(substr($name, 0, $p1 - 1));
$entities[$name] = [ $entities[$name] = [
$prod, $prod,
$vers, $vers,
@@ -113,6 +140,8 @@ $entities = array_filter($entities, function($e) {
}); });
$format = get_fmt(); $format = get_fmt();
file_put_contents('.log.csv', time() . "|$_SERVER[REMOTE_ADDR]|$_SERVER[REQUEST_METHOD]|$_SERVER[REQUEST_URI]|$format|$ua\n", FILE_APPEND);
if ($format === 'json') { if ($format === 'json') {
header('Content-Type: application/json; charset=UTF-8'); header('Content-Type: application/json; charset=UTF-8');
echo "{\"data\": [\n"; echo "{\"data\": [\n";
@@ -135,10 +164,9 @@ if ($format === 'json') {
header('Content-Length: 0'); header('Content-Length: 0');
exit(); exit();
} }
header('Content-Type: application/xhtml+xml; charset=UTF-8'); header('Content-Type: text/html; charset=UTF-8');
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
?> ?>
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" prefix="og: https://ogp.me/ns#"> <html lang="de" prefix="og: https://ogp.me/ns#">
<head> <head>
<meta charset="UTF-8"/> <meta charset="UTF-8"/>
<title>Downloads - Elwig</title> <title>Downloads - Elwig</title>