📚 Improved backend structure & logs organization 🎉
This commit is contained in:
535
backend/setup.sh
535
backend/setup.sh
@@ -5285,10 +5285,14 @@ show_main_menu() {
|
||||
echo -e "${GREEN}[4]${NC} ${YELLOW}Credentials anpassen${NC}"
|
||||
echo -e " → Passwörter und Zugangsdaten ändern"
|
||||
echo ""
|
||||
echo -e "${GREEN}[5]${NC} ${PURPLE}Desktop-Verknüpfung erstellen${NC}"
|
||||
echo -e " → Mercedes-Icon auf Desktop für Kiosk-Start"
|
||||
echo -e " → Manuelle Kiosk-Aktivierung per Klick"
|
||||
echo ""
|
||||
echo -e "${GREEN}[0]${NC} ${RED}Beenden${NC}"
|
||||
echo ""
|
||||
echo -e "${CYAN}=================================================================${NC}"
|
||||
echo -n "Ihre Auswahl [0-4]: "
|
||||
echo -n "Ihre Auswahl [0-5]: "
|
||||
}
|
||||
|
||||
handle_menu_selection() {
|
||||
@@ -5312,6 +5316,10 @@ handle_menu_selection() {
|
||||
interactive_credentials_setup
|
||||
save_credentials_override
|
||||
;;
|
||||
5)
|
||||
log "🖥️ Benutzer wählte: Desktop-Verknüpfung erstellen"
|
||||
create_desktop_shortcut_interactive
|
||||
;;
|
||||
0)
|
||||
log "👋 Benutzer beendet das Setup"
|
||||
echo -e "\n${GREEN}Auf Wiedersehen! 👋${NC}"
|
||||
@@ -5319,7 +5327,7 @@ handle_menu_selection() {
|
||||
;;
|
||||
*)
|
||||
warning "❌ Ungültige Auswahl: $choice"
|
||||
echo -e "\n${RED}Bitte wählen Sie eine Zahl zwischen 0 und 4.${NC}"
|
||||
echo -e "\n${RED}Bitte wählen Sie eine Zahl zwischen 0 und 5.${NC}"
|
||||
sleep 2
|
||||
;;
|
||||
esac
|
||||
@@ -5457,6 +5465,383 @@ show_system_status() {
|
||||
read
|
||||
}
|
||||
|
||||
create_desktop_shortcut_interactive() {
|
||||
clear
|
||||
echo -e "${CYAN}=================================================================${NC}"
|
||||
echo -e "${CYAN} DESKTOP-VERKNÜPFUNG ERSTELLEN${NC}"
|
||||
echo -e "${CYAN}=================================================================${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}🖥️ Was wird erstellt:${NC}"
|
||||
echo -e " • Desktop-Icon mit Mercedes-Logo"
|
||||
echo -e " • Kiosk-Start per Doppelklick"
|
||||
echo -e " • Automatische Browser-Erkennung"
|
||||
echo -e " • Intelligente URL-Ermittlung"
|
||||
echo ""
|
||||
echo -e "${PURPLE}📍 Verfügbare Desktop-Umgebungen:${NC}"
|
||||
|
||||
# Erkenne verfügbare Desktop-Umgebungen
|
||||
local desktops_found=()
|
||||
if [ -d "/home/$USER/Desktop" ]; then
|
||||
desktops_found+=("Aktueller Benutzer: /home/$USER/Desktop")
|
||||
fi
|
||||
if [ -d "/home/kiosk/Desktop" ]; then
|
||||
desktops_found+=("Kiosk-Benutzer: /home/kiosk/Desktop")
|
||||
fi
|
||||
if [ -d "/etc/skel/Desktop" ]; then
|
||||
desktops_found+=("System-Standard: /etc/skel/Desktop")
|
||||
fi
|
||||
|
||||
if [ ${#desktops_found[@]} -eq 0 ]; then
|
||||
echo -e " ${RED}❌ Keine Desktop-Verzeichnisse gefunden${NC}"
|
||||
echo -e " ${YELLOW}💡 Desktop-Environment möglicherweise nicht installiert${NC}"
|
||||
echo ""
|
||||
echo -n "Trotzdem fortfahren und Desktop-Verzeichnisse erstellen? (j/N): "
|
||||
read -r create_desktop
|
||||
if [[ ! "$create_desktop" =~ ^[jJyY]$ ]]; then
|
||||
echo -e "${YELLOW}Abgebrochen.${NC}"
|
||||
sleep 1
|
||||
return
|
||||
fi
|
||||
else
|
||||
for desktop in "${desktops_found[@]}"; do
|
||||
echo -e " ✅ $desktop"
|
||||
done
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo -n "Desktop-Verknüpfung erstellen? (j/N): "
|
||||
read -r confirm
|
||||
|
||||
if [[ "$confirm" =~ ^[jJyY]$ ]]; then
|
||||
log "✅ Benutzer bestätigte Desktop-Verknüpfung-Erstellung"
|
||||
create_desktop_shortcut
|
||||
echo ""
|
||||
echo -e "${GREEN}✅ Desktop-Verknüpfung erfolgreich erstellt!${NC}"
|
||||
echo -e "${BLUE}🖱️ Doppelklick auf das Mercedes-Icon zum Starten${NC}"
|
||||
echo ""
|
||||
echo -n "Drücken Sie Enter um zum Hauptmenü zurückzukehren..."
|
||||
read
|
||||
else
|
||||
log "❌ Benutzer brach Desktop-Verknüpfung-Erstellung ab"
|
||||
echo -e "${YELLOW}Erstellung abgebrochen.${NC}"
|
||||
sleep 1
|
||||
fi
|
||||
}
|
||||
|
||||
create_desktop_shortcut() {
|
||||
log "=== ERSTELLE DESKTOP-VERKNÜPFUNG ==="
|
||||
|
||||
# Erstelle Kiosk-Start-Skript
|
||||
create_kiosk_launcher_script
|
||||
|
||||
# Erstelle Desktop-Einträge für alle verfügbaren Benutzer
|
||||
create_desktop_entries
|
||||
|
||||
# Setze korrekte Berechtigungen
|
||||
fix_desktop_permissions
|
||||
|
||||
log "✅ Desktop-Verknüpfung erfolgreich erstellt"
|
||||
}
|
||||
|
||||
create_kiosk_launcher_script() {
|
||||
log "=== ERSTELLE KIOSK-LAUNCHER-SKRIPT ==="
|
||||
|
||||
mkdir -p "$APP_DIR/scripts"
|
||||
|
||||
cat > "$APP_DIR/scripts/launch_kiosk.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
# MYP Kiosk-Modus Launcher
|
||||
# Startet die MYP-Anwendung im Kiosk-Modus
|
||||
|
||||
# Logging-Setup
|
||||
LOG_FILE="/var/log/myp-desktop-launcher.log"
|
||||
exec 1> >(tee -a "$LOG_FILE")
|
||||
exec 2>&1
|
||||
|
||||
echo "=== MYP Kiosk Desktop-Start $(date) ==="
|
||||
|
||||
# Prüfe ob bereits ein Kiosk-Prozess läuft
|
||||
if pgrep -f "chromium.*kiosk.*localhost:5000" >/dev/null 2>&1; then
|
||||
echo "⚠️ Kiosk-Modus bereits aktiv - bringe Fenster in den Vordergrund"
|
||||
# Versuche existierendes Fenster zu aktivieren
|
||||
if command -v wmctrl >/dev/null 2>&1; then
|
||||
wmctrl -a "MYP Druckerverwaltung" 2>/dev/null || true
|
||||
fi
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Ermittle optimale URL
|
||||
if [ -x /opt/myp/scripts/get_kiosk_url.sh ]; then
|
||||
TARGET_URL=$(/opt/myp/scripts/get_kiosk_url.sh)
|
||||
else
|
||||
TARGET_URL="http://localhost:5000"
|
||||
fi
|
||||
|
||||
echo "🔗 Verwende URL: $TARGET_URL"
|
||||
|
||||
# Prüfe Backend-Verfügbarkeit
|
||||
echo "🔍 Prüfe Backend-Verfügbarkeit..."
|
||||
for i in {1..30}; do
|
||||
if curl -s --connect-timeout 3 --max-time 5 "$TARGET_URL" >/dev/null 2>&1; then
|
||||
echo "✅ Backend erreichbar"
|
||||
break
|
||||
fi
|
||||
echo "⏳ Warte auf Backend... ($i/30)"
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# Browser-Auswahl
|
||||
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"
|
||||
elif command -v google-chrome >/dev/null 2>&1; then
|
||||
BROWSER="google-chrome"
|
||||
elif command -v firefox-esr >/dev/null 2>&1; then
|
||||
BROWSER="firefox-esr"
|
||||
elif command -v firefox >/dev/null 2>&1; then
|
||||
BROWSER="firefox"
|
||||
else
|
||||
echo "❌ Kein unterstützter Browser gefunden!"
|
||||
zenity --error --text="Kein unterstützter Browser gefunden!\n\nBitte installieren Sie Chromium oder Firefox." --title="MYP Kiosk-Fehler" 2>/dev/null || \
|
||||
notify-send "MYP Kiosk-Fehler" "Kein unterstützter Browser gefunden!" 2>/dev/null || \
|
||||
echo "FEHLER: Kein Browser verfügbar"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "🌐 Verwende Browser: $BROWSER"
|
||||
|
||||
# Bildschirmauflösung ermitteln
|
||||
if [ -n "$DISPLAY" ]; then
|
||||
RESOLUTION=$(xrandr 2>/dev/null | grep -E '\*|\+' | head -1 | awk '{print $1}' || echo "1920x1080")
|
||||
WIDTH=$(echo $RESOLUTION | cut -d'x' -f1)
|
||||
HEIGHT=$(echo $RESOLUTION | cut -d'x' -f2)
|
||||
echo "📺 Bildschirmauflösung: ${WIDTH}x${HEIGHT}"
|
||||
else
|
||||
WIDTH=1920
|
||||
HEIGHT=1080
|
||||
echo "📺 Verwende Standard-Auflösung: ${WIDTH}x${HEIGHT}"
|
||||
fi
|
||||
|
||||
# Browser-spezifische Argumente
|
||||
if [[ "$BROWSER" == "chromium"* ]] || [[ "$BROWSER" == "google-chrome"* ]]; then
|
||||
BROWSER_ARGS=(
|
||||
--kiosk
|
||||
--no-sandbox
|
||||
--disable-dev-shm-usage
|
||||
--disable-gpu-sandbox
|
||||
--disable-software-rasterizer
|
||||
--disable-background-timer-throttling
|
||||
--disable-backgrounding-occluded-windows
|
||||
--disable-renderer-backgrounding
|
||||
--disable-features=TranslateUI
|
||||
--force-device-scale-factor=1.0
|
||||
--window-size=$WIDTH,$HEIGHT
|
||||
--window-position=0,0
|
||||
--user-data-dir=/tmp/myp-kiosk-desktop
|
||||
--disable-infobars
|
||||
--disable-session-crashed-bubble
|
||||
--disable-restore-session-state
|
||||
--disable-extensions
|
||||
--disable-plugins
|
||||
--disable-popup-blocking
|
||||
--disable-sync
|
||||
--disable-translate
|
||||
--noerrdialogs
|
||||
--no-first-run
|
||||
--no-default-browser-check
|
||||
--autoplay-policy=no-user-gesture-required
|
||||
--disable-background-mode
|
||||
--disable-pinch
|
||||
--hide-scrollbars
|
||||
--ignore-certificate-errors
|
||||
--ignore-ssl-errors
|
||||
--disable-web-security
|
||||
--allow-running-insecure-content
|
||||
--app="$TARGET_URL"
|
||||
)
|
||||
else
|
||||
# Firefox-Argumente
|
||||
BROWSER_ARGS=(
|
||||
--kiosk
|
||||
--width=$WIDTH
|
||||
--height=$HEIGHT
|
||||
--no-remote
|
||||
--new-instance
|
||||
"$TARGET_URL"
|
||||
)
|
||||
fi
|
||||
|
||||
echo "🚀 Starte $BROWSER im Kiosk-Modus..."
|
||||
|
||||
# Browser starten
|
||||
"$BROWSER" "${BROWSER_ARGS[@]}" &
|
||||
BROWSER_PID=$!
|
||||
|
||||
echo "✅ Browser gestartet (PID: $BROWSER_PID)"
|
||||
echo "🎯 Kiosk-Modus aktiv für URL: $TARGET_URL"
|
||||
|
||||
# Optional: Warte auf Browser-Beendigung
|
||||
wait $BROWSER_PID
|
||||
echo "🔚 Kiosk-Modus beendet"
|
||||
EOF
|
||||
|
||||
chmod +x "$APP_DIR/scripts/launch_kiosk.sh"
|
||||
|
||||
log "✅ Kiosk-Launcher-Skript erstellt: $APP_DIR/scripts/launch_kiosk.sh"
|
||||
}
|
||||
|
||||
create_desktop_entries() {
|
||||
log "=== ERSTELLE DESKTOP-EINTRÄGE ==="
|
||||
|
||||
# Mercedes-Icon kopieren an zentrale Stelle
|
||||
local icon_dir="/usr/share/pixmaps"
|
||||
local icon_source="$CURRENT_DIR/static/mercedes.svg"
|
||||
# Fallback-Pfade für das Mercedes-Icon
|
||||
if [ ! -f "$icon_source" ]; then
|
||||
icon_source="$APP_DIR/static/mercedes.svg"
|
||||
fi
|
||||
if [ ! -f "$icon_source" ]; then
|
||||
icon_source="$(find "$CURRENT_DIR" -name "mercedes.svg" 2>/dev/null | head -1)"
|
||||
fi
|
||||
local icon_target="$icon_dir/myp-mercedes.svg"
|
||||
|
||||
if [ -f "$icon_source" ]; then
|
||||
cp "$icon_source" "$icon_target" 2>/dev/null || {
|
||||
# Fallback: Icon in App-Verzeichnis
|
||||
mkdir -p "$APP_DIR/static"
|
||||
cp "$icon_source" "$APP_DIR/static/mercedes.svg"
|
||||
icon_target="$APP_DIR/static/mercedes.svg"
|
||||
}
|
||||
log "✅ Mercedes-Icon kopiert: $icon_target"
|
||||
else
|
||||
warning "⚠️ Mercedes-Icon nicht gefunden: $icon_source"
|
||||
icon_target="applications-graphics" # Fallback-Icon
|
||||
fi
|
||||
|
||||
# Desktop-Entry-Inhalt
|
||||
local desktop_content="[Desktop Entry]
|
||||
Version=1.0
|
||||
Type=Application
|
||||
Name=MYP Druckerverwaltung (Kiosk)
|
||||
Comment=Starte MYP Druckerverwaltung im Kiosk-Modus
|
||||
Exec=$APP_DIR/scripts/launch_kiosk.sh
|
||||
Icon=$icon_target
|
||||
Terminal=false
|
||||
Categories=Office;Graphics;3DGraphics;Engineering;
|
||||
StartupNotify=true
|
||||
StartupWMClass=chromium-browser
|
||||
Keywords=3D;Printing;Drucker;Kiosk;MYP;Mercedes;
|
||||
MimeType=model/stl;model/obj;text/x.gcode;
|
||||
Actions=OpenBrowser;OpenSettings;
|
||||
|
||||
[Desktop Action OpenBrowser]
|
||||
Name=Im Browser öffnen
|
||||
Exec=xdg-open http://localhost:5000
|
||||
|
||||
[Desktop Action OpenSettings]
|
||||
Name=Einstellungen
|
||||
Exec=$APP_DIR/scripts/launch_kiosk.sh --settings"
|
||||
|
||||
# Desktop-Einträge für verschiedene Benutzer erstellen
|
||||
local desktop_dirs=(
|
||||
"/home/$USER/Desktop"
|
||||
"/home/kiosk/Desktop"
|
||||
"/etc/skel/Desktop"
|
||||
"/usr/share/applications" # System-weit verfügbar
|
||||
)
|
||||
|
||||
for desktop_dir in "${desktop_dirs[@]}"; do
|
||||
if [ "$desktop_dir" = "/usr/share/applications" ] || [ -d "$(dirname "$desktop_dir")" ]; then
|
||||
mkdir -p "$desktop_dir" 2>/dev/null || continue
|
||||
|
||||
local desktop_file="$desktop_dir/myp-kiosk.desktop"
|
||||
echo "$desktop_content" > "$desktop_file" 2>/dev/null && {
|
||||
chmod +x "$desktop_file" 2>/dev/null || true
|
||||
log "✅ Desktop-Eintrag erstellt: $desktop_file"
|
||||
}
|
||||
fi
|
||||
done
|
||||
|
||||
# Spezielle Behandlung für aktuellen Benutzer-Desktop
|
||||
if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then
|
||||
local user_desktop="/home/$SUDO_USER/Desktop"
|
||||
mkdir -p "$user_desktop" 2>/dev/null || true
|
||||
if [ -d "$user_desktop" ]; then
|
||||
local user_desktop_file="$user_desktop/myp-kiosk.desktop"
|
||||
echo "$desktop_content" > "$user_desktop_file" 2>/dev/null && {
|
||||
chmod +x "$user_desktop_file" 2>/dev/null || true
|
||||
chown "$SUDO_USER:$SUDO_USER" "$user_desktop_file" 2>/dev/null || true
|
||||
log "✅ Benutzer-Desktop-Eintrag erstellt: $user_desktop_file"
|
||||
}
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
fix_desktop_permissions() {
|
||||
log "=== KORRIGIERE DESKTOP-BERECHTIGUNGEN ==="
|
||||
|
||||
# Desktop-Dateien für verschiedene Benutzer korrigieren
|
||||
local users=("$USER" "kiosk")
|
||||
if [ -n "$SUDO_USER" ] && [ "$SUDO_USER" != "root" ]; then
|
||||
users+=("$SUDO_USER")
|
||||
fi
|
||||
|
||||
for user in "${users[@]}"; do
|
||||
if id "$user" >/dev/null 2>&1; then
|
||||
local user_desktop="/home/$user/Desktop"
|
||||
if [ -d "$user_desktop" ]; then
|
||||
chown -R "$user:$user" "$user_desktop" 2>/dev/null || true
|
||||
find "$user_desktop" -name "*.desktop" -exec chmod +x {} \; 2>/dev/null || true
|
||||
log "✅ Berechtigungen korrigiert für: $user"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
# System-weite Desktop-Datei
|
||||
if [ -f "/usr/share/applications/myp-kiosk.desktop" ]; then
|
||||
chmod 644 "/usr/share/applications/myp-kiosk.desktop" 2>/dev/null || true
|
||||
log "✅ System-weite Desktop-Datei konfiguriert"
|
||||
fi
|
||||
|
||||
# Update Desktop-Datenbank
|
||||
if command -v update-desktop-database >/dev/null 2>&1; then
|
||||
update-desktop-database /usr/share/applications 2>/dev/null || true
|
||||
log "✅ Desktop-Datenbank aktualisiert"
|
||||
fi
|
||||
}
|
||||
|
||||
install_desktop_tools() {
|
||||
log "=== INSTALLIERE DESKTOP-TOOLS ==="
|
||||
|
||||
# Tools für bessere Desktop-Integration installieren
|
||||
local desktop_packages=(
|
||||
"wmctrl" # Fenster-Management
|
||||
"xdotool" # X11-Automatisierung
|
||||
"zenity" # GUI-Dialoge
|
||||
"notify-osd" # Desktop-Benachrichtigungen
|
||||
"libnotify-bin" # notify-send Kommando
|
||||
"unclutter" # Mauszeiger verstecken
|
||||
)
|
||||
|
||||
progress "Installiere Desktop-Integration-Tools..."
|
||||
|
||||
for package in "${desktop_packages[@]}"; do
|
||||
if ! dpkg -l | grep -q "^ii.*$package" 2>/dev/null; then
|
||||
if apt-get install -y "$package" 2>/dev/null; then
|
||||
log "✅ $package installiert"
|
||||
else
|
||||
warning "⚠️ $package konnte nicht installiert werden"
|
||||
fi
|
||||
else
|
||||
log "✅ $package bereits installiert"
|
||||
fi
|
||||
done
|
||||
|
||||
log "✅ Desktop-Tools-Installation abgeschlossen"
|
||||
}
|
||||
|
||||
# =========================== HAUPTPROGRAMM (INTERAKTIV) ===========================
|
||||
main() {
|
||||
# Stelle sicher, dass wir im richtigen Verzeichnis sind
|
||||
@@ -5566,6 +5951,9 @@ install_dependencies_only_auto() {
|
||||
deploy_application
|
||||
install_npm_dependencies
|
||||
|
||||
# Desktop-Tools für bessere Benutzererfahrung installieren
|
||||
install_desktop_tools
|
||||
|
||||
# Credentials deployen
|
||||
deploy_credentials
|
||||
|
||||
@@ -5577,6 +5965,20 @@ install_dependencies_only_auto() {
|
||||
install_systemd_services
|
||||
enable_and_start_services
|
||||
|
||||
# Intelligente Kiosk-URL-Ermittlung erstellen
|
||||
create_smart_kiosk_url_script
|
||||
|
||||
# Desktop-Verknüpfung für einfachen Zugang erstellen
|
||||
if [ -n "$DISPLAY" ] || [ -d "/home/*/Desktop" ] 2>/dev/null; then
|
||||
if create_desktop_shortcut 2>/dev/null; then
|
||||
info "✅ Desktop-Verknüpfung mit Mercedes-Icon erstellt"
|
||||
else
|
||||
warning "⚠️ Desktop-Verknüpfung konnte nicht erstellt werden"
|
||||
fi
|
||||
else
|
||||
info "ℹ️ Keine Desktop-Umgebung erkannt - Desktop-Verknüpfung übersprungen"
|
||||
fi
|
||||
|
||||
# Performance-Optimierungen auch für manuelles Testen
|
||||
optimize_webapp_performance
|
||||
optimize_static_assets
|
||||
@@ -5642,6 +6044,9 @@ install_full_production_system_auto() {
|
||||
deploy_application
|
||||
install_npm_dependencies
|
||||
|
||||
# Desktop-Tools für bessere Benutzererfahrung installieren
|
||||
install_desktop_tools
|
||||
|
||||
# Credentials deployen
|
||||
deploy_credentials
|
||||
|
||||
@@ -5673,6 +6078,16 @@ install_full_production_system_auto() {
|
||||
install_systemd_services
|
||||
enable_and_start_services
|
||||
|
||||
# Intelligente Kiosk-URL-Ermittlung erstellen
|
||||
create_smart_kiosk_url_script
|
||||
|
||||
# Desktop-Verknüpfung für einfachen Zugang erstellen
|
||||
if create_desktop_shortcut 2>/dev/null; then
|
||||
info "✅ Desktop-Verknüpfung mit Mercedes-Icon erstellt"
|
||||
else
|
||||
warning "⚠️ Desktop-Verknüpfung konnte nicht erstellt werden"
|
||||
fi
|
||||
|
||||
# Performance-Optimierungen für Raspberry Pi Webapp
|
||||
optimize_webapp_performance
|
||||
|
||||
@@ -5758,6 +6173,7 @@ show_final_summary() {
|
||||
echo -e " ✅ Automatischer Kiosk-Start beim Boot"
|
||||
echo -e " ✅ Firewall und Sicherheitskonfiguration"
|
||||
echo -e " ✅ Performance-Optimierungen"
|
||||
echo -e " ✅ Desktop-Verknüpfung mit Mercedes-Icon"
|
||||
echo ""
|
||||
echo -e "${YELLOW}🚀 System-Status:${NC}"
|
||||
echo -e " 🌐 Webapp: $HTTP_URL"
|
||||
@@ -5779,6 +6195,7 @@ show_final_summary() {
|
||||
echo -e " ✅ Anwendung deployed nach: $APP_DIR"
|
||||
echo -e " ✅ Systemd-Services installiert"
|
||||
echo -e " ✅ Performance-Optimierungen"
|
||||
echo -e " ✅ Desktop-Verknüpfung mit Mercedes-Icon"
|
||||
echo ""
|
||||
echo -e "${YELLOW}🚀 System-Status:${NC}"
|
||||
echo -e " 🌐 Webapp: $HTTP_URL"
|
||||
@@ -5786,9 +6203,10 @@ show_final_summary() {
|
||||
echo ""
|
||||
echo -e "${PURPLE}💡 Nächste Schritte:${NC}"
|
||||
echo -e " 1. Webapp testen: $HTTP_URL"
|
||||
echo -e " 2. Manuelle Tests durchführen"
|
||||
echo -e " 3. Entwicklung starten: cd $APP_DIR"
|
||||
echo -e " 4. Für Kiosk-Modus: sudo $0 --production"
|
||||
echo -e " 2. Kiosk-Modus testen: Doppelklick auf Mercedes-Icon"
|
||||
echo -e " 3. Manuelle Tests durchführen"
|
||||
echo -e " 4. Entwicklung starten: cd $APP_DIR"
|
||||
echo -e " 5. Für Produktions-Kiosk: sudo $0 --production"
|
||||
;;
|
||||
esac
|
||||
|
||||
@@ -5808,5 +6226,110 @@ show_final_summary() {
|
||||
echo -e "${CYAN}=================================================================${NC}"
|
||||
}
|
||||
|
||||
# =========================== INTELLIGENTE KIOSK-URL KONFIGURATION ===========================
|
||||
get_kiosk_url() {
|
||||
log "=== ERMITTLE OPTIMALE KIOSK-URL ==="
|
||||
|
||||
local kiosk_url="http://localhost:5000"
|
||||
local intranet_url="https://m040tbaraspi001.de040.corpintra.net"
|
||||
|
||||
# Prüfe ob localhost erreichbar ist
|
||||
if curl -s --connect-timeout 3 --max-time 5 "http://localhost:5000" >/dev/null 2>&1; then
|
||||
log "✅ Localhost erreichbar - verwende lokale URL"
|
||||
echo "$kiosk_url"
|
||||
return
|
||||
fi
|
||||
|
||||
# Prüfe ob Intranet erreichbar ist
|
||||
if curl -s --connect-timeout 5 --max-time 10 "$intranet_url" >/dev/null 2>&1; then
|
||||
log "✅ Intranet erreichbar - verwende Intranet-URL"
|
||||
echo "$intranet_url"
|
||||
return
|
||||
fi
|
||||
|
||||
# Fallback: Versuche lokale IP-Adresse
|
||||
local local_ip=$(ip route get 1 2>/dev/null | awk '{print $7}' | head -1)
|
||||
if [ -n "$local_ip" ] && [ "$local_ip" != "127.0.0.1" ]; then
|
||||
local ip_url="http://$local_ip:5000"
|
||||
if curl -s --connect-timeout 3 --max-time 5 "$ip_url" >/dev/null 2>&1; then
|
||||
log "✅ Lokale IP erreichbar - verwende IP-URL: $ip_url"
|
||||
echo "$ip_url"
|
||||
return
|
||||
fi
|
||||
fi
|
||||
|
||||
# Finaler Fallback: localhost
|
||||
log "⚠️ Fallback auf localhost - Backend möglicherweise noch nicht gestartet"
|
||||
echo "$kiosk_url"
|
||||
}
|
||||
|
||||
create_smart_kiosk_url_script() {
|
||||
log "=== ERSTELLE INTELLIGENTE KIOSK-URL ERMITTLUNG ==="
|
||||
|
||||
cat > "$APP_DIR/scripts/get_kiosk_url.sh" << 'EOF'
|
||||
#!/bin/bash
|
||||
# Intelligente Kiosk-URL-Ermittlung für MYP
|
||||
# Priorisiert lokale Verbindung, fällt auf Intranet zurück
|
||||
|
||||
LOCALHOST_URL="http://localhost:5000"
|
||||
INTRANET_URL="https://m040tbaraspi001.de040.corpintra.net"
|
||||
|
||||
# Funktion: URL testen
|
||||
test_url() {
|
||||
local url="$1"
|
||||
local timeout="${2:-5}"
|
||||
|
||||
curl -s --connect-timeout "$timeout" --max-time "$timeout" "$url" >/dev/null 2>&1
|
||||
return $?
|
||||
}
|
||||
|
||||
# Priorisierte URL-Tests
|
||||
echo "[$(date)] Ermittle optimale Kiosk-URL..." >> /var/log/kiosk-url.log
|
||||
|
||||
# 1. Priorität: Localhost (schnellste Option für Kiosk)
|
||||
if test_url "$LOCALHOST_URL" 3; then
|
||||
echo "[$(date)] Localhost verfügbar: $LOCALHOST_URL" >> /var/log/kiosk-url.log
|
||||
echo "$LOCALHOST_URL"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 2. Priorität: Intranet-URL (für Remote-Zugang)
|
||||
if test_url "$INTRANET_URL" 8; then
|
||||
echo "[$(date)] Intranet verfügbar: $INTRANET_URL" >> /var/log/kiosk-url.log
|
||||
echo "$INTRANET_URL"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# 3. Priorität: Lokale IP-Adresse
|
||||
LOCAL_IP=$(ip route get 1 2>/dev/null | awk '{print $7}' | head -1)
|
||||
if [ -n "$LOCAL_IP" ] && [ "$LOCAL_IP" != "127.0.0.1" ]; then
|
||||
IP_URL="http://$LOCAL_IP:5000"
|
||||
if test_url "$IP_URL" 5; then
|
||||
echo "[$(date)] Lokale IP verfügbar: $IP_URL" >> /var/log/kiosk-url.log
|
||||
echo "$IP_URL"
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
|
||||
# 4. Fallback: Hostname-URL
|
||||
HOSTNAME_URL="http://$(hostname):5000"
|
||||
if test_url "$HOSTNAME_URL" 5; then
|
||||
echo "[$(date)] Hostname verfügbar: $HOSTNAME_URL" >> /var/log/kiosk-url.log
|
||||
echo "$HOSTNAME_URL"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Finaler Fallback: Localhost (auch wenn nicht erreichbar)
|
||||
echo "[$(date)] Fallback auf Localhost: $LOCALHOST_URL" >> /var/log/kiosk-url.log
|
||||
echo "$LOCALHOST_URL"
|
||||
EOF
|
||||
|
||||
chmod +x "$APP_DIR/scripts/get_kiosk_url.sh"
|
||||
|
||||
log "✅ Intelligente Kiosk-URL-Ermittlung erstellt: $APP_DIR/scripts/get_kiosk_url.sh"
|
||||
}
|
||||
|
||||
# =========================== KIOSK-KONFIGURATION MIT INTELLIGENTER URL ===========================
|
||||
|
||||
# Skript starten mit automatischer Modus-Erkennung
|
||||
main "$@"
|
||||
main "$@"
|
Reference in New Issue
Block a user