Upload via GUI (452 Dateien)

This commit is contained in:
2026-11-05 21:21:59 +00:00
parent 2277cf5493
commit a7577a234d
10 changed files with 1316 additions and 0 deletions
@@ -15,6 +15,16 @@ putenv('PLUGIN_SITE_STORAGE=' . $tmp . '/storage');
putenv('PLUGIN_SITE_BASE_URL=https://plugins.example.test');
putenv('PLUGIN_SITE_TESTING=1');
$cnf = $tmp . '/cnf';
file_put_contents($cnf, "[req]
distinguished_name=req_dn
[req_dn]
");
$kp = openssl_pkey_new(['config' => $cnf, 'private_key_bits' => 2048, 'private_key_type' => OPENSSL_KEYTYPE_RSA]);
openssl_pkey_export($kp, $privPem, null, ['config' => $cnf]);
file_put_contents($tmp . '/sign.pem', $privPem);
putenv('PLUGIN_SITE_SIGNING_KEY=' . $tmp . '/sign.pem');
require_once __DIR__ . '/fixtures/paths.php';
$siteDir = website_dir_or_skip('plugin_website_apps');
require_once $siteDir . '/inc/lib.php';
@@ -60,6 +70,21 @@ $check(site_app_release('unbekannt') === null, 'unbekannte Plattform liefert nic
$p = site_app_platforms();
$check(isset($p['wordpress'], $p['chrome']) && $p['chrome']['file'] === 'deskhub-chrome-erweiterung.zip', 'Plattformliste enthält WordPress und Chrome');
// ── System-Update des Servers ────────────────────────────────────────────────
$srv = fn(string $v) => $makeZip(['deskhub/version.php' => "<?php\ndefine('DESKHUB_VERSION', '{$v}');", 'deskhub/index.php' => '<?php // ' . $pad]);
$check(site_zip_app_version('server', $srv('1.0.88')) === '1.0.88', 'Server-Paket: Version steht in version.php');
$check(site_zip_app_version('server', $makeZip(['a.php' => '<?php // x'])) === null, 'ZIP ohne version.php ist kein DeskHub-Paket');
$r = site_publish_app('server', $srv('1.0.88'), '', 'Neu: Plugin-Updates');
$check($r['ok'] && $r['version'] === '1.0.88', 'System-Update wird veröffentlicht: ' . json_encode($r));
$check(!site_publish_app('server', $makeZip(['a.php' => '<?php // ' . $pad]), '', '')['ok'], 'Paket ohne version.php wird abgelehnt');
$check(site_publish_app('server', $srv('1.0.90'), '', '')['ok'] && site_publish_app('server', $srv('1.0.89'), '', '')['ok'], 'weitere Versionen werden angenommen');
$vers = array_column(site_app_versions('server'), 'version');
$check($vers === ['1.0.90', '1.0.89', '1.0.88'], 'Versionen werden neueste zuerst aufgelistet: ' . implode(',', $vers));
$check(site_app_release('server')['version'] === '1.0.90', 'Aktuell ist die höchste Version');
$sig = site_sign_update('v1.0.90', str_repeat('a', 64));
$check($sig !== '' && openssl_verify("deskhub-update\n1.0.90\n" . str_repeat('a', 64), base64_decode($sig), openssl_pkey_get_details($kp)['key'], OPENSSL_ALGO_SHA256) === 1, 'Signatur passt zur Nachricht, die DeskHub prüft');
$check(isset(site_app_platforms()['server']) && site_app_platforms()['server']['ext'] === 'zip', 'Plattformliste enthält den Server');
// ── Vorschaubild bleibt erhalten ─────────────────────────────────────────────
$png = $tmp . '/vorschau.png';
file_put_contents($png, base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8BQDwAEhQGAhKmMIQAAAABJRU5ErkJggg=='));