|
| 1 | +<?php |
| 2 | +/** |
| 3 | + * Photobooth SumUp Print Wrapper |
| 4 | + * Erlaubt den Druckaufruf über die Kommandozeile unter Umgehung der Browser-Sicherheitschecks. |
| 5 | + */ |
| 6 | + |
| 7 | +// Sicherheitscheck: Script darf NUR über die Konsole (CLI) ausgeführt werden |
| 8 | +if (php_sapi_name() !== 'cli') { |
| 9 | + die('Fehler: Dieser Wrapper darf nur vom System (CLI) gestartet werden.' . PHP_EOL); |
| 10 | +} |
| 11 | + |
| 12 | +// Parameter aus der Kommandozeile auslesen ($argv[0] ist der Scriptname) |
| 13 | +$filename = $argv[1] ?? ''; |
| 14 | +$copies = $argv[2] ?? 1; |
| 15 | + |
| 16 | +if (empty($filename)) { |
| 17 | + die("Fehler: Kein Dateiname angegeben. Nutzung: php sumup_print_wrapper.php DATEINAME KOPIEN" . PHP_EOL); |
| 18 | +} |
| 19 | + |
| 20 | +// 1. Umgebungsvariablen für print.php simulieren |
| 21 | +// Wir setzen diese, BEVOR irgendwelche Header oder Sessions geladen werden. |
| 22 | +$_GET['filename'] = $filename; |
| 23 | +$_GET['copies'] = (int)$copies; |
| 24 | +$_GET['csrf'] = 'sumup_internal_bypass'; |
| 25 | + |
| 26 | +// 2. Session manuell starten und den Bypass-Token injizieren |
| 27 | +// Das verhindert "Invalid CSRF Token" Fehler in der print.php |
| 28 | +if (session_status() === PHP_SESSION_NONE) { |
| 29 | + session_start(); |
| 30 | +} |
| 31 | +$_SESSION['csrf'] = 'sumup_internal_bypass'; |
| 32 | + |
| 33 | +/** |
| 34 | + * 3. Die originale print.php laden. |
| 35 | + * Durch das 'require_once' wird der gesamte Workflow der Photobooth ausgeführt: |
| 36 | + * - Laden der Konfiguration und Bild-Bibliotheken |
| 37 | + * - Rotation (falls nötig) |
| 38 | + * - Anwendung von Rahmen (Frame) |
| 39 | + * - Generierung und Einbetten des QR-Codes |
| 40 | + * - Speichern der neuen Datei im /data/print/ Ordner mit Unique-Hash |
| 41 | + * - Ausführung des Druckbefehls (lp) |
| 42 | + */ |
| 43 | +require_once 'print.php'; |
| 44 | + |
| 45 | +echo PHP_EOL . "Druckauftrag für $filename erfolgreich an print.php übergeben." . PHP_EOL; |
0 commit comments