Upload via GUI (346 Dateien)

This commit is contained in:
2026-10-28 07:54:52 +00:00
parent f3ba8c20b1
commit a86036c657
7 changed files with 259 additions and 3 deletions
+5 -3
View File
@@ -201,7 +201,9 @@ try {
[$s] = $http('POST', '/admin.php', ['jar' => $jar, 'data' => ['action' => 'login', 'user' => 'admin', 'password' => 'Sehr-Sicheres-Passwort-1']]);
$check($s === 302, 'richtiges Passwort meldet an');
[$s, $body] = $http('GET', '/admin.php', ['jar' => $jar]);
$check($s === 200 && str_contains($body, 'Neues Paket veröffentlichen') && str_contains($body, 'Signierschlüssel eingerichtet'), 'Verwaltung nach der Anmeldung');
$check($s === 200 && str_contains($body, 'Signierschlüssel') && str_contains($body, 'Eingerichtet'), 'Verwaltung nach der Anmeldung (Übersicht)');
[$s, $body] = $http('GET', '/admin.php?tab=packages', ['jar' => $jar]);
$check($s === 200 && str_contains($body, 'Neues Paket veröffentlichen'), 'Reiter „Pakete“ zeigt das Upload-Formular');
preg_match('/name="csrf" value="([a-f0-9]+)"/', $body, $m);
$csrf = $m[1] ?? '';
[$s, $body] = $http('POST', '/admin.php', ['jar' => $jar, 'data' => ['action' => 'publish', 'type' => 'theme', 'csrf' => 'falsch', 'package' => new CURLFile($themeZip('2.0.0'), 'application/zip', 'x.zip')]]);
@@ -215,8 +217,8 @@ try {
[$s, $body] = $http('POST', '/admin.php', ['jar' => $jar, 'data' => ['action' => 'publish', 'type' => 'plugin', 'csrf' => $csrf, 'package' => new CURLFile($makeZip(['nur.txt' => 'x']), 'application/zip', 'k.zip')]]);
$check(str_contains($body, 'plugin.json wurde im Paket nicht gefunden'), 'ungültiges Paket zeigt eine verständliche Meldung');
// Löschen über die Verwaltung: Version entfernen, dann verschwindet auch der Eintrag samt Paketdatei und Katalogzeile
[$s, $body] = $http('GET', '/admin.php', ['jar' => $jar]);
$check(preg_match_all('/<form method="post" data-confirm="[^"]*"><input type="hidden" name="action" value="delete"><input type="hidden" name="csrf" value="[a-f0-9]+"><input type="hidden" name="id" value="(\d+)">/', $body, $dm) >= 1, 'die Verwaltung zeigt Entfernen-Schaltflächen');
[$s, $body] = $http('GET', '/admin.php?tab=packages', ['jar' => $jar]);
$check(preg_match_all('/<form method="post" class="inline" data-confirm="[^"]*"><input type="hidden" name="action" value="delete"><input type="hidden" name="csrf" value="[a-f0-9]+"><input type="hidden" name="id" value="(\d+)">/', $body, $dm) >= 1, 'die Verwaltung zeigt Entfernen-Schaltflächen');
$abId = (int) site_db()->query("SELECT v.id FROM versions v JOIN items i ON i.id = v.item_id WHERE i.slug = 'abendrot'")->fetchColumn();
$abFile = (string) site_db()->query("SELECT v.file FROM versions v JOIN items i ON i.id = v.item_id WHERE i.slug = 'abendrot'")->fetchColumn();
$check($abId > 0 && is_file($tmp . '/storage/packages/' . $abFile), 'Paketdatei liegt vor dem Löschen im Speicher');