Upload via GUI (28 Dateien)

This commit is contained in:
2026-10-21 16:55:37 +00:00
parent 4abd3453c9
commit 65b336373d
12 changed files with 315 additions and 3 deletions
+11
View File
@@ -15,6 +15,7 @@ $storage = getenv('BAKE_STORAGE_DIR') ?: '/data';
$hash = trim((string) @file_get_contents($secrets . '/admin_hash'));
$key = (string) @file_get_contents($secrets . '/signing_key');
$access = trim((string) @file_get_contents($secrets . '/catalog_key'));
$fcm = (string) @file_get_contents($secrets . '/fcm_service_account'); // optional: Firebase-Dienstkonto für den Push-Dienst
$base = rtrim((string) getenv('BASE_URL'), '/');
$user = (string) getenv('ADMIN_USER');
@@ -28,7 +29,15 @@ if (!$private) $fail('signing_key ist kein gültiger privater Schlüssel (PEM).'
$details = openssl_pkey_get_details($private);
if (($details['type'] ?? null) !== OPENSSL_KEYTYPE_RSA || ($details['bits'] ?? 0) < 2048) $fail('Der Signierschlüssel muss RSA mit mindestens 2048 Bit sein.');
$fcmFile = '';
if (trim($fcm) !== '') {
$sa = json_decode($fcm, true);
if (!is_array($sa) || ($sa['type'] ?? '') !== 'service_account' || empty($sa['client_email']) || empty($sa['project_id']) || !@openssl_pkey_get_private((string) ($sa['private_key'] ?? ''))) $fail('fcm_service_account ist keine gültige Firebase-Dienstkonto-Datei (JSON).');
$fcmFile = $keyDir . '/fcm-dienstkonto.json';
}
@mkdir($keyDir, 0750, true);
if ($fcmFile !== '') file_put_contents($fcmFile, $fcm);
file_put_contents($keyDir . '/herausgeber-privat.pem', $key);
$cfg = [
'site_name' => (string) (getenv('SITE_NAME') ?: 'DeskHub Plugins und Themes'),
@@ -38,7 +47,9 @@ $cfg = [
'signing_key_file' => $keyDir . '/herausgeber-privat.pem',
'storage_dir' => $storage,
'access_key' => $access,
'fcm_service_account_file' => $fcmFile,
'locked' => true,
];
file_put_contents($configPath, "<?php\nreturn " . var_export($cfg, true) . ";\n");
echo $fcmFile !== '' ? "Push-Dienst: Firebase-Dienstkonto fest eingebaut.\n" : "Push-Dienst: KEIN Firebase-Dienstkonto eingebaut (schluessel/firebase-dienstkonto.json fehlt).\n";
echo "Zugang für \"{$user}\" und Signierschlüssel fest eingebaut. Öffentlicher Schlüssel:\n" . $details['key'];