diff --git a/__pycache__/models.cpython-313.pyc b/__pycache__/models.cpython-313.pyc new file mode 100644 index 0000000..f0762d7 Binary files /dev/null and b/__pycache__/models.cpython-313.pyc differ diff --git a/database/myp.db-shm b/database/myp.db-shm index a3e5077..c30fd58 100644 Binary files a/database/myp.db-shm and b/database/myp.db-shm differ diff --git a/fix-x11-framebuffer.sh b/fix-x11-framebuffer.sh new file mode 100644 index 0000000..c3fc3c4 --- /dev/null +++ b/fix-x11-framebuffer.sh @@ -0,0 +1,237 @@ +#!/bin/bash + +# =================================================================== +# MYP X11 Framebuffer-Fix für Raspberry Pi +# Behebt den "Cannot run in framebuffer mode" Fehler +# =================================================================== + +set -euo pipefail + +# Farben für Ausgabe +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' + +log() { + echo -e "${GREEN}[$(date '+%H:%M:%S')] $1${NC}" +} + +warning() { + echo -e "${YELLOW}[WARNUNG] $1${NC}" +} + +error() { + echo -e "${RED}[FEHLER] $1${NC}" + exit 1 +} + +info() { + echo -e "${BLUE}[INFO] $1${NC}" +} + +# Prüfe root-Berechtigung +if [ "$EUID" -ne 0 ]; then + error "Dieses Skript muss als Root ausgeführt werden: sudo $0" +fi + +log "=== X11 FRAMEBUFFER-FIX FÜR RASPBERRY PI ===" + +# Stoppe laufende X-Server +log "Stoppe laufende X-Server..." +pkill -f "X :0" 2>/dev/null || true +pkill -f "Xorg" 2>/dev/null || true +pkill -f "xinit" 2>/dev/null || true +pkill -f "chromium" 2>/dev/null || true +sleep 2 + +# Erstelle X11-Konfigurationsverzeichnis +log "Erstelle X11-Konfiguration..." +mkdir -p /etc/X11/xorg.conf.d + +# Erstelle Framebuffer-Fix-Konfiguration +cat > /etc/X11/xorg.conf.d/99-fbdev.conf << 'EOF' +# X11 Konfiguration für Raspberry Pi - behebt Framebuffer-Fehler +Section "Device" + Identifier "Raspberry Pi FBDEV" + Driver "fbdev" + Option "fbdev" "/dev/fb0" + Option "SwapbuffersWait" "true" +EndSection + +Section "Screen" + Identifier "Primary Screen" + Device "Raspberry Pi FBDEV" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1920x1080" "1680x1050" "1600x900" "1280x1024" "1280x800" "1024x768" + EndSubSection +EndSection + +Section "ServerLayout" + Identifier "Default Layout" + Screen "Primary Screen" +EndSection + +Section "ServerFlags" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" + Option "DPMS" "false" +EndSection +EOF + +# Alternative Modesetting-Konfiguration +cat > /etc/X11/xorg.conf.d/20-modesetting.conf << 'EOF' +# Alternative Modesetting-Konfiguration +Section "Device" + Identifier "Raspberry Pi Modesetting" + Driver "modesetting" + Option "AccelMethod" "none" +EndSection +EOF + +# Installiere fehlende Video-Treiber +log "Installiere Video-Treiber..." +apt-get update +apt-get install -y xserver-xorg-video-fbturbo 2>/dev/null || { + # Fallback zu Standard-Treibern + apt-get install -y xserver-xorg-video-all 2>/dev/null || true +} + +# Erstelle X11-Start-Wrapper +log "Erstelle X11-Start-Wrapper..." +cat > /usr/local/bin/start-x11-kiosk << 'EOF' +#!/bin/bash + +# X11 Kiosk-Start-Wrapper für Raspberry Pi +export DISPLAY=:0 +export XAUTHORITY=/home/kiosk/.Xauthority + +# Erstelle .Xauthority +if [ ! -f "$XAUTHORITY" ]; then + touch "$XAUTHORITY" + chown kiosk:kiosk "$XAUTHORITY" + chmod 600 "$XAUTHORITY" +fi + +# Stoppe alte X-Server +pkill -f "X :0" 2>/dev/null || true +pkill -f "Xorg" 2>/dev/null || true +sleep 2 + +echo "Starte X-Server..." + +# Versuche verschiedene Start-Methoden +if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -novtswitch -nolisten tcp -dpi 96 2>/tmp/x11-error.log; then + echo "Methode 1 fehlgeschlagen, versuche Alternative..." + + if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -config /etc/X11/xorg.conf.d/99-fbdev.conf -ignoreABI 2>>/tmp/x11-error.log; then + echo "Methode 2 fehlgeschlagen, versuche Fallback..." + xinit /home/kiosk/.xinitrc -- :0 2>>/tmp/x11-error.log + fi +fi + +if [ -f /tmp/x11-error.log ]; then + echo "X11 Fehler-Log:" + tail -20 /tmp/x11-error.log +fi +EOF + +chmod +x /usr/local/bin/start-x11-kiosk + +# Erstelle einfaches .xinitrc für kiosk +log "Erstelle korrigiertes .xinitrc..." +cat > /home/kiosk/.xinitrc << 'EOF' +#!/bin/bash + +# Fehlerlog +exec 2>/tmp/xinitrc-error.log + +# X11 Einstellungen +xset s off +xset s noblank +xset -dpms + +# Window Manager +openbox-session & +sleep 2 + +# Browser starten +BROWSER="" +if command -v chromium >/dev/null 2>&1; then + BROWSER="chromium" +elif command -v chromium-browser >/dev/null 2>&1; then + BROWSER="chromium-browser" +else + BROWSER="firefox-esr" +fi + +# Starte Browser mit GPU-Deaktivierung +exec $BROWSER \ + --kiosk \ + --no-sandbox \ + --disable-gpu \ + --disable-software-rasterizer \ + --disable-dev-shm-usage \ + --no-first-run \ + --start-fullscreen \ + http://localhost:5000 +EOF + +chmod +x /home/kiosk/.xinitrc +chown kiosk:kiosk /home/kiosk/.xinitrc + +# Konfiguriere Raspberry Pi Boot-Einstellungen +if [ -f /boot/config.txt ]; then + log "Konfiguriere Raspberry Pi GPU-Einstellungen..." + + # Backup + cp /boot/config.txt /boot/config.txt.backup + + # GPU-Einstellungen + if ! grep -q "^gpu_mem=" /boot/config.txt; then + echo "gpu_mem=128" >> /boot/config.txt + fi + + if ! grep -q "^hdmi_force_hotplug=" /boot/config.txt; then + cat >> /boot/config.txt << 'EOF' + +# X11 Kiosk-Modus Optimierungen +hdmi_force_hotplug=1 +hdmi_drive=2 +config_hdmi_boost=4 +disable_overscan=1 +framebuffer_width=1920 +framebuffer_height=1080 +framebuffer_depth=32 +framebuffer_ignore_alpha=1 +EOF + fi +fi + +log "✅ X11 Framebuffer-Fix installiert!" +info "" +info "📋 Was wurde konfiguriert:" +info " - X11 fbdev-Konfiguration erstellt" +info " - Video-Treiber installiert" +info " - X11-Start-Wrapper erstellt: /usr/local/bin/start-x11-kiosk" +info " - GPU-Einstellungen optimiert" +info "" +info "🔧 Nächste Schritte:" +info " 1. System neustarten: sudo reboot" +info " 2. Als kiosk-User einloggen" +info " 3. X11 wird automatisch mit den Fixes starten" +info "" +info "💡 Manueller Test:" +info " su - kiosk" +info " /usr/local/bin/start-x11-kiosk" +info "" + +# Prüfe ob Neustart erforderlich +if [ -f /boot/config.txt.backup ]; then + warning "⚠️ Boot-Konfiguration geändert - Neustart erforderlich!" +fi \ No newline at end of file diff --git a/logs/app/app.log b/logs/app/app.log index 37ee5cc..8bd6fe8 100644 --- a/logs/app/app.log +++ b/logs/app/app.log @@ -3930,3 +3930,23 @@ WHERE jobs.status = ?) AS anon_1] 2025-06-04 09:27:18 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) 2025-06-04 09:38:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) 2025-06-04 09:38:44 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-04 14:24:38 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\manage-your-printer\database\myp.db +2025-06-04 14:24:42 - [app] app - [INFO] INFO - SQLite für Raspberry Pi optimiert (reduzierte Cache-Größe, SD-Karten I/O) +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen +2025-06-04 14:24:42 - [app] app - [INFO] INFO - 📋 Standard-Konfiguration verwendet +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Error-Recovery-Monitoring gestartet +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ System-Control-Manager initialisiert +2025-06-04 14:24:42 - [app] app - [WARNING] WARNING - ⚠️ Kiosk-Service nicht gefunden - Kiosk-Funktionen eventuell eingeschränkt +2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen... +2025-06-04 14:24:42 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden +2025-06-04 14:24:42 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt. +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen +2025-06-04 14:24:42 - [app] app - [INFO] INFO - 📋 Standard-Konfiguration aktiv (keine Optimierungen) +2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung... +2025-06-04 14:24:42 - [app] app - [INFO] INFO - ℹ️ Keine Drucker zur Initialisierung gefunden +2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung +2025-06-04 14:24:42 - [app] app - [INFO] INFO - Job-Scheduler gestartet +2025-06-04 14:24:42 - [app] app - [INFO] INFO - 🔧 Starte Debug-Server auf 0.0.0.0:5000 (HTTP) +2025-06-04 14:24:42 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert diff --git a/setup.sh b/setup.sh index 5d2ecc0..869541f 100644 --- a/setup.sh +++ b/setup.sh @@ -1241,6 +1241,209 @@ install_minimal_x11() { log "✅ Minimale X11-Umgebung installiert" } +# =========================== X11 KONFIGURATION FÜR RASPBERRY PI =========================== +configure_x11_for_raspberry_pi() { + log "=== KONFIGURIERE X11 FÜR RASPBERRY PI ===" + + progress "Erstelle X11-Konfiguration für Raspberry Pi..." + + # Erstelle xorg.conf.d Verzeichnis + mkdir -p /etc/X11/xorg.conf.d + + # Erstelle 99-fbdev.conf um Framebuffer-Fehler zu beheben + cat > /etc/X11/xorg.conf.d/99-fbdev.conf << 'XORGEOF' +# X11 Konfiguration für Raspberry Pi - behebt Framebuffer-Fehler +Section "Device" + Identifier "Raspberry Pi FBDEV" + Driver "fbdev" + Option "fbdev" "/dev/fb0" + Option "SwapbuffersWait" "true" +EndSection + +Section "Screen" + Identifier "Primary Screen" + Device "Raspberry Pi FBDEV" + DefaultDepth 24 + SubSection "Display" + Depth 24 + Modes "1920x1080" "1680x1050" "1600x900" "1280x1024" "1280x800" "1024x768" + EndSubSection +EndSection + +Section "ServerLayout" + Identifier "Default Layout" + Screen "Primary Screen" +EndSection + +Section "ServerFlags" + Option "BlankTime" "0" + Option "StandbyTime" "0" + Option "SuspendTime" "0" + Option "OffTime" "0" + Option "DPMS" "false" +EndSection +XORGEOF + + # Alternative: Verwende modesetting Treiber statt fbdev + cat > /etc/X11/xorg.conf.d/20-modesetting.conf << 'MODESETEOF' +# Alternative Modesetting-Konfiguration +Section "Device" + Identifier "Raspberry Pi Modesetting" + Driver "modesetting" + Option "AccelMethod" "none" +EndSection +MODESETEOF + + # Erstelle Wrapper-Skript für X11-Start mit korrekten Parametern + cat > /usr/local/bin/start-x11-kiosk << 'KIOSKSTARTEOF' +#!/bin/bash + +# X11 Kiosk-Start-Wrapper für Raspberry Pi +# Behebt Framebuffer und Permission-Probleme + +export DISPLAY=:0 +export XAUTHORITY=/home/kiosk/.Xauthority + +# Erstelle .Xauthority falls nicht vorhanden +if [ ! -f "$XAUTHORITY" ]; then + touch "$XAUTHORITY" + chown kiosk:kiosk "$XAUTHORITY" + chmod 600 "$XAUTHORITY" +fi + +# Stoppe eventuell laufende X-Server +pkill -f "X :0" 2>/dev/null || true +pkill -f "Xorg" 2>/dev/null || true +sleep 2 + +# Versuche verschiedene X-Server Start-Methoden +echo "Starte X-Server für Kiosk-Modus..." + +# Methode 1: Mit vt und novtswitch (empfohlen für Raspberry Pi) +if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -novtswitch -nolisten tcp -dpi 96 2>/tmp/x11-error.log; then + echo "Methode 1 fehlgeschlagen, versuche Alternative..." + + # Methode 2: Mit config und ignoreABI + if ! xinit /home/kiosk/.xinitrc -- :0 vt7 -config /etc/X11/xorg.conf.d/99-fbdev.conf -ignoreABI 2>>/tmp/x11-error.log; then + echo "Methode 2 fehlgeschlagen, versuche Fallback..." + + # Methode 3: Minimaler Start + xinit /home/kiosk/.xinitrc -- :0 2>>/tmp/x11-error.log + fi +fi + +# Fehlerlog anzeigen bei Problem +if [ -f /tmp/x11-error.log ]; then + echo "X11 Fehler-Log:" + tail -20 /tmp/x11-error.log +fi +KIOSKSTARTEOF + + chmod +x /usr/local/bin/start-x11-kiosk + + # Installiere fehlende Video-Treiber + progress "Installiere Video-Treiber für Raspberry Pi..." + apt-get install -y xserver-xorg-video-fbturbo 2>/dev/null || { + # Fallback zu Standard-Treibern + apt-get install -y xserver-xorg-video-all 2>/dev/null || true + } + + # Raspberry Pi spezifische Video-Treiber + if [ -f /boot/config.txt ]; then + progress "Konfiguriere Raspberry Pi GPU-Einstellungen..." + + # Backup config.txt + cp /boot/config.txt /boot/config.txt.backup + + # GPU-Speicher erhöhen für bessere Grafik-Performance + if ! grep -q "^gpu_mem=" /boot/config.txt; then + echo "gpu_mem=128" >> /boot/config.txt + fi + + # HDMI-Einstellungen für bessere Kompatibilität + if ! grep -q "^hdmi_force_hotplug=" /boot/config.txt; then + cat >> /boot/config.txt << 'BOOTEOF' + +# X11 Kiosk-Modus Optimierungen +hdmi_force_hotplug=1 +hdmi_drive=2 +config_hdmi_boost=4 +disable_overscan=1 +framebuffer_width=1920 +framebuffer_height=1080 +framebuffer_depth=32 +framebuffer_ignore_alpha=1 +BOOTEOF + fi + fi + + # Erstelle alternatives .xinitrc für kiosk User + cat > /home/kiosk/.xinitrc-fixed << 'XINITRCEOF' +#!/bin/bash + +# Fehlerbehandlung +set -e +exec 2>/tmp/xinitrc-error.log + +# X11 Einstellungen +xset s off +xset s noblank +xset -dpms + +# Mauszeiger verstecken +unclutter -idle 0.1 -root -noevents & + +# Window Manager starten (lightweight) +openbox-session & + +# Warte kurz +sleep 2 + +# Browser starten +if command -v chromium >/dev/null 2>&1; then + BROWSER="chromium" +elif command -v chromium-browser >/dev/null 2>&1; then + BROWSER="chromium-browser" +else + BROWSER="firefox-esr" +fi + +# Starte Browser im Kiosk-Modus +exec $BROWSER \ + --kiosk \ + --no-sandbox \ + --disable-gpu-sandbox \ + --disable-software-rasterizer \ + --disable-dev-shm-usage \ + --disable-setuid-sandbox \ + --disable-gpu \ + --no-first-run \ + --noerrdialogs \ + --disable-infobars \ + --start-fullscreen \ + http://localhost:5000 +XINITRCEOF + + chmod +x /home/kiosk/.xinitrc-fixed + chown kiosk:kiosk /home/kiosk/.xinitrc-fixed + + # Aktualisiere die .bashrc für den alternativen Start + cat > /home/kiosk/.bashrc-kiosk << 'BASHRCEOF4' +# Kiosk-Autostart mit X11-Fixes +if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then + echo "Starte Kiosk-Modus mit X11-Fixes..." + + # Verwende das neue Start-Skript + exec /usr/local/bin/start-x11-kiosk +fi +BASHRCEOF4 + + log "✅ X11-Konfiguration für Raspberry Pi erstellt" + info " 📁 Konfiguration: /etc/X11/xorg.conf.d/" + info " 🚀 Start-Skript: /usr/local/bin/start-x11-kiosk" + info " 🔧 Alternative .xinitrc: /home/kiosk/.xinitrc-fixed" +} + # =========================== KIOSK-BENUTZER MANAGEMENT =========================== create_kiosk_user() { log "=== KIOSK-BENUTZER SETUP ===" @@ -1495,6 +1698,111 @@ EOF log "✅ Automatischer Kiosk-Start konfiguriert" info "Der Kiosk-Modus startet automatisch beim Login des $KIOSK_USER" + + # Wenn X11-Konfiguration für Raspberry Pi vorhanden ist, verwende sie + if [ -f /usr/local/bin/start-x11-kiosk ]; then + progress "Aktualisiere .bashrc für X11-Fix-Integration..." + + # Backup der aktuellen .bashrc + cp "$kiosk_home/.bashrc" "$kiosk_home/.bashrc.backup" + + # Verwende die korrigierte Version + cat > "$kiosk_home/.bashrc" << 'BASHRCFIXED' +# Automatischer Kiosk-Start beim Login mit X11-Fixes +if [ -z "$DISPLAY" ] && [ "$XDG_VTNR" = "1" ]; then + echo "Starte Kiosk-Modus mit X11-Fixes..." + + # Verwende das X11-Fix Start-Skript wenn vorhanden + if [ -x /usr/local/bin/start-x11-kiosk ]; then + exec /usr/local/bin/start-x11-kiosk + else + # Fallback zum normalen Start + startx /home/kiosk/.xinitrc -- :0 vt1 & + sleep 5 + export DISPLAY=:0 + + # Warte auf HTTP-Backend + echo "Warte auf HTTP-Backend..." + for i in {1..60}; do + if curl -s http://localhost:5000 >/dev/null 2>&1; then + echo "HTTP-Backend erreichbar" + break + fi + echo "Warte... ($i/60)" + sleep 2 + done + + # Bildschirmschoner deaktivieren + xset s off + xset s noblank + xset -dpms + + # Mauszeiger verstecken + unclutter -idle 0.1 -root -noevents & + + # Browser im Kiosk-Modus starten + if command -v chromium >/dev/null 2>&1; then + BROWSER="chromium" + elif command -v chromium-browser >/dev/null 2>&1; then + BROWSER="chromium-browser" + else + BROWSER="firefox-esr" + fi + + echo "Starte $BROWSER im Kiosk-Modus..." + + if [[ "$BROWSER" == "chromium"* ]]; then + exec $BROWSER \ + --kiosk \ + --no-sandbox \ + --disable-infobars \ + --disable-session-crashed-bubble \ + --disable-restore-session-state \ + --disable-features=TranslateUI \ + --disable-extensions \ + --disable-plugins \ + --disable-popup-blocking \ + --disable-prompt-on-repost \ + --disable-sync \ + --disable-translate \ + --noerrdialogs \ + --no-first-run \ + --no-default-browser-check \ + --autoplay-policy=no-user-gesture-required \ + --start-fullscreen \ + --start-maximized \ + --user-data-dir=/home/kiosk/.chromium-kiosk \ + --disable-background-mode \ + --force-device-scale-factor=1.0 \ + --disable-pinch \ + --overscroll-history-navigation=0 \ + --disable-dev-shm-usage \ + --memory-pressure-off \ + --max_old_space_size=512 \ + --disable-background-timer-throttling \ + --disable-backgrounding-occluded-windows \ + --disable-renderer-backgrounding \ + --disable-features=VizDisplayCompositor \ + --enable-features=OverlayScrollbar \ + --hide-scrollbars \ + --ignore-certificate-errors \ + --ignore-ssl-errors \ + --ignore-certificate-errors-spki-list \ + --disable-web-security \ + --allow-running-insecure-content \ + http://localhost:5000 + else + exec firefox-esr \ + --kiosk \ + http://localhost:5000 + fi + fi +fi +BASHRCFIXED + + chown "$KIOSK_USER:$KIOSK_USER" "$kiosk_home/.bashrc" + log "✅ .bashrc für X11-Fix-Integration aktualisiert" + fi } # =========================== ROBUSTE SSL-ZERTIFIKATE INSTALLATION =========================== @@ -2955,6 +3263,7 @@ install_full_production_system() { # Desktop-Environments entfernen und minimale X11 installieren remove_desktop_environments install_minimal_x11 + configure_x11_for_raspberry_pi # Performance-Optimierungen für Raspberry Pi Webapp optimize_webapp_performance