From 4466c959f79266c0d8f9b6c2213f72b1c68b2f1a Mon Sep 17 00:00:00 2001 From: M_Viper Date: Mon, 19 Oct 2026 18:06:02 +0000 Subject: [PATCH] Upload via GUI (267 Dateien) --- DeskHub-Webseite/staff/_footer.php | 2 +- DeskHub-Webseite/staff/_header.php | 9 +--- DeskHub-Webseite/staff/ticket_print.php | 1 + DeskHub-Webseite/staff/ticket_rules.php | 8 +-- DeskHub-Webseite/staff/ticket_view.php | 62 +++++++++++++++++++---- DeskHub-Webseite/staff/update.php | 66 +++++++++++++++++++++++-- 6 files changed, 125 insertions(+), 23 deletions(-) diff --git a/DeskHub-Webseite/staff/_footer.php b/DeskHub-Webseite/staff/_footer.php index 9d019e33..685f98f2 100644 --- a/DeskHub-Webseite/staff/_footer.php +++ b/DeskHub-Webseite/staff/_footer.php @@ -1,5 +1,5 @@ - + diff --git a/DeskHub-Webseite/staff/_header.php b/DeskHub-Webseite/staff/_header.php index d276974f..6aa925a0 100644 --- a/DeskHub-Webseite/staff/_header.php +++ b/DeskHub-Webseite/staff/_header.php @@ -24,15 +24,10 @@ if (file_exists(__DIR__ . '/../includes/push.php')) { "> - - + - - - - +
diff --git a/DeskHub-Webseite/staff/update.php b/DeskHub-Webseite/staff/update.php index 75f64383..fa19b0d3 100644 --- a/DeskHub-Webseite/staff/update.php +++ b/DeskHub-Webseite/staff/update.php @@ -133,6 +133,25 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } $action = $_POST['action'] ?? ''; + // Zugangstoken für den Update-Server speichern oder entfernen (nur Admins erreichen diese Seite) + if ($action === 'save_update_token') { + $newToken = trim((string) ($_POST['update_token'] ?? '')); + if ($newToken === '' || !preg_match('/^[A-Za-z0-9_\-.]{20,200}$/', $newToken)) { + $errors[] = 'Das Token sieht ungültig aus (erwartet: 20 bis 200 Zeichen aus Buchstaben, Ziffern, _ - .). Bitte genau so einfügen, wie Gitea es anzeigt.'; + } else { + set_setting('update_token', encrypt_secret($newToken)); + audit_log($staff['id'], 'Zugangstoken für den Update-Server gespeichert'); + flash('success', 'Zugangstoken gespeichert. Die Release-Liste wird jetzt damit geladen.'); + redirect('/staff/update.php'); + } + } + if ($action === 'remove_update_token') { + set_setting('update_token', ''); + audit_log($staff['id'], 'Zugangstoken für den Update-Server entfernt'); + flash('success', 'Zugangstoken entfernt.'); + redirect('/staff/update.php'); + } + // Manueller Upload if ($action === 'upload_update') { $f = $_FILES['update_zip'] ?? []; @@ -259,7 +278,9 @@ if ($code === 200) { usort($all, fn($a, $b) => version_compare($b['tag_name'], $a['tag_name'])); $releases = $all; } else { - $relErr = "API HTTP $code" . (update_http_headers() === [] ? ' (Ist das Repository privat? Dann in config/config.php unter update → token ein Lese-Token eintragen.)' : ''); + $relErr = "API HTTP $code" . (update_http_headers() === [] + ? ($code === 404 || $code === 401 || $code === 403 ? ' – das Repository ist vermutlich privat. Unten unter „Zugang zum Update-Server“ ein Lese-Token eintragen.' : '') + : ($code === 404 || $code === 401 || $code === 403 ? ' – das eingetragene Token wird nicht akzeptiert (falsch, abgelaufen oder ohne Leserecht).' : '')); } $signedOnly = update_signature_required(); // Version frisch aus Datei lesen @@ -284,6 +305,10 @@ require __DIR__ . '/_header.php';
+ +
Die Liste der Versionen konnte nicht geladen werden:
+ +
@@ -365,12 +390,47 @@ require __DIR__ . '/_header.php';
+ +
+

Zugang zum Update-Server

+

+ Nur nötig, wenn das Repository mit den Releases privat ist. Gitea meldet dann beim Laden der Versionen „404“. Ein Token mit Leserecht genügt + (in Gitea: Einstellungen → Anwendungen → Zugriffstoken erzeugen, Berechtigung „repository: Lesen“). Es wird verschlüsselt gespeichert. +

+ +

✓ Token aus config/config.php wird verwendet. Es hat Vorrang vor einem hier gespeicherten.

+ +

✓ Token gespeichert. Zum Ersetzen unten ein neues eintragen.

+ +

Kein Token eingetragen (öffentlicher Zugriff).

+ +
+ + +
+ + +
+ +
+ +
+ + +
+ +
Alternative: in config/config.php eintragen +

In der Datei config/config.php (Hauptordner von DeskHub, im Ordner config) als eigener Eintrag im großen return [ … ];, zum Beispiel direkt unter 'app_key':

+
'update' => ['token' => 'HIER_DAS_TOKEN'],
+
+
+

Hinweise

  • config/config.php und database/deskhub.sqlite werden niemals überschrieben
  • -
  • Nur signierte Releases: Updates werden nur installiert, wenn sie mit dem Schlüssel des Herausgebers signiert sind. Ein manipuliertes Paket wird abgelehnt. (Ein manuell hochgeladenes ZIP wird nicht geprüft: Laden Sie nur Pakete aus vertrauenswürdiger Quelle hoch.)
  • -
  • Release-Liste konnte nicht geladen werden:
  • +
  • Nur signierte Releases: Updates werden nur installiert, wenn sie mit dem Schlüssel des Herausgebers signiert sind. Ein manipuliertes Paket wird abgelehnt. (Ein manuell hochgeladenes ZIP wird nicht geprüft: Laden Sie nur Pakete aus vertrauenswürdiger Quelle hoch.)
  • +
  • Nach dem Update Browser-Cache leeren Strg+F5