Skip to content

Commit 4ab5d32

Browse files
authored
Add files via upload
1 parent a0c342d commit 4ab5d32

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

api/sumup_print_wrapper.php

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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

Comments
 (0)