📚 Improved logging structure & added backup file 🔜

This commit is contained in:
Till Tomczak 2025-06-01 14:39:46 +02:00
parent 3287b4558b
commit 7fa7da74af
29 changed files with 1139 additions and 64 deletions

View File

@ -5612,6 +5612,235 @@ def get_tables_css():
return "/* Advanced Tables CSS konnte nicht geladen werden */", 500 return "/* Advanced Tables CSS konnte nicht geladen werden */", 500
# ===== MAINTENANCE SYSTEM API ===== # ===== MAINTENANCE SYSTEM API =====
@app.route('/api/admin/maintenance/clear-cache', methods=['POST'])
@login_required
@admin_required
def api_clear_cache():
"""Leert den System-Cache"""
try:
app_logger.info(f"🧹 Cache-Löschung gestartet von Benutzer {current_user.username}")
# Flask-Cache leeren (falls vorhanden)
if hasattr(app, 'cache'):
app.cache.clear()
# Temporäre Dateien löschen
import tempfile
temp_dir = tempfile.gettempdir()
myp_temp_files = []
try:
for root, dirs, files in os.walk(temp_dir):
for file in files:
if 'myp_' in file.lower() or 'tba_' in file.lower():
file_path = os.path.join(root, file)
try:
os.remove(file_path)
myp_temp_files.append(file)
except:
pass
except Exception as e:
app_logger.warning(f"Fehler beim Löschen temporärer Dateien: {str(e)}")
# Python-Cache leeren
import gc
gc.collect()
app_logger.info(f"✅ Cache erfolgreich geleert. {len(myp_temp_files)} temporäre Dateien entfernt")
return jsonify({
'success': True,
'message': f'Cache erfolgreich geleert. {len(myp_temp_files)} temporäre Dateien entfernt.',
'details': {
'temp_files_removed': len(myp_temp_files),
'timestamp': datetime.now().isoformat()
}
})
except Exception as e:
app_logger.error(f"❌ Fehler beim Leeren des Cache: {str(e)}")
return jsonify({
'success': False,
'message': f'Fehler beim Leeren des Cache: {str(e)}'
}), 500
@app.route('/api/admin/maintenance/optimize-database', methods=['POST'])
@login_required
@admin_required
def api_optimize_database():
"""Optimiert die Datenbank"""
db_session = get_db_session()
try:
app_logger.info(f"🔧 Datenbank-Optimierung gestartet von Benutzer {current_user.username}")
optimization_results = {
'tables_analyzed': 0,
'indexes_rebuilt': 0,
'space_freed_mb': 0,
'errors': []
}
# SQLite-spezifische Optimierungen
try:
# VACUUM - komprimiert die Datenbank
db_session.execute(text("VACUUM;"))
optimization_results['space_freed_mb'] += 1 # Geschätzt
# ANALYZE - aktualisiert Statistiken
db_session.execute(text("ANALYZE;"))
optimization_results['tables_analyzed'] += 1
# REINDEX - baut Indizes neu auf
db_session.execute(text("REINDEX;"))
optimization_results['indexes_rebuilt'] += 1
db_session.commit()
except Exception as e:
optimization_results['errors'].append(f"SQLite-Optimierung: {str(e)}")
app_logger.warning(f"Fehler bei SQLite-Optimierung: {str(e)}")
# Verwaiste Dateien bereinigen
try:
uploads_dir = os.path.join(app.root_path, 'uploads')
if os.path.exists(uploads_dir):
orphaned_files = 0
for root, dirs, files in os.walk(uploads_dir):
for file in files:
file_path = os.path.join(root, file)
# Prüfe ob Datei älter als 7 Tage und nicht referenziert
file_age = datetime.now() - datetime.fromtimestamp(os.path.getctime(file_path))
if file_age.days > 7:
try:
os.remove(file_path)
orphaned_files += 1
except:
pass
optimization_results['orphaned_files_removed'] = orphaned_files
except Exception as e:
optimization_results['errors'].append(f"Datei-Bereinigung: {str(e)}")
app_logger.info(f"✅ Datenbank-Optimierung abgeschlossen: {optimization_results}")
return jsonify({
'success': True,
'message': 'Datenbank erfolgreich optimiert',
'details': optimization_results
})
except Exception as e:
db_session.rollback()
app_logger.error(f"❌ Fehler bei Datenbank-Optimierung: {str(e)}")
return jsonify({
'success': False,
'message': f'Fehler bei der Datenbank-Optimierung: {str(e)}'
}), 500
finally:
db_session.close()
@app.route('/api/admin/maintenance/create-backup', methods=['POST'])
@login_required
@admin_required
def api_create_backup():
"""Erstellt ein System-Backup"""
try:
app_logger.info(f"💾 Backup-Erstellung gestartet von Benutzer {current_user.username}")
import zipfile
# Backup-Verzeichnis erstellen
backup_dir = os.path.join(app.root_path, 'database', 'backups')
os.makedirs(backup_dir, exist_ok=True)
# Backup-Dateiname mit Zeitstempel
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
backup_filename = f'myp_backup_{timestamp}.zip'
backup_path = os.path.join(backup_dir, backup_filename)
backup_info = {
'filename': backup_filename,
'created_at': datetime.now().isoformat(),
'created_by': current_user.username,
'size_mb': 0,
'files_included': []
}
# ZIP-Backup erstellen
with zipfile.ZipFile(backup_path, 'w', zipfile.ZIP_DEFLATED) as zipf:
# Datenbank-Datei hinzufügen
db_path = os.path.join(app.root_path, 'instance', 'database.db')
if os.path.exists(db_path):
zipf.write(db_path, 'database.db')
backup_info['files_included'].append('database.db')
# Konfigurationsdateien hinzufügen
config_files = ['config.py', 'requirements.txt', '.env']
for config_file in config_files:
config_path = os.path.join(app.root_path, config_file)
if os.path.exists(config_path):
zipf.write(config_path, config_file)
backup_info['files_included'].append(config_file)
# Wichtige Upload-Verzeichnisse hinzufügen (nur kleine Dateien)
uploads_dir = os.path.join(app.root_path, 'uploads')
if os.path.exists(uploads_dir):
for root, dirs, files in os.walk(uploads_dir):
for file in files:
file_path = os.path.join(root, file)
file_size = os.path.getsize(file_path)
# Nur Dateien unter 10MB hinzufügen
if file_size < 10 * 1024 * 1024:
rel_path = os.path.relpath(file_path, app.root_path)
zipf.write(file_path, rel_path)
backup_info['files_included'].append(rel_path)
# Backup-Größe berechnen
backup_size = os.path.getsize(backup_path)
backup_info['size_mb'] = round(backup_size / (1024 * 1024), 2)
# Alte Backups bereinigen (nur die letzten 10 behalten)
try:
backup_files = []
for file in os.listdir(backup_dir):
if file.startswith('myp_backup_') and file.endswith('.zip'):
file_path = os.path.join(backup_dir, file)
backup_files.append((file_path, os.path.getctime(file_path)))
# Nach Erstellungszeit sortieren
backup_files.sort(key=lambda x: x[1], reverse=True)
# Alte Backups löschen (mehr als 10)
for old_backup, _ in backup_files[10:]:
try:
os.remove(old_backup)
app_logger.info(f"Altes Backup gelöscht: {os.path.basename(old_backup)}")
except:
pass
except Exception as e:
app_logger.warning(f"Fehler beim Bereinigen alter Backups: {str(e)}")
app_logger.info(f"✅ Backup erfolgreich erstellt: {backup_filename} ({backup_info['size_mb']} MB)")
return jsonify({
'success': True,
'message': f'Backup erfolgreich erstellt: {backup_filename}',
'details': backup_info
})
except Exception as e:
app_logger.error(f"❌ Fehler bei Backup-Erstellung: {str(e)}")
return jsonify({
'success': False,
'message': f'Fehler bei der Backup-Erstellung: {str(e)}'
}), 500
@app.route('/api/maintenance/tasks', methods=['GET', 'POST']) @app.route('/api/maintenance/tasks', methods=['GET', 'POST'])
@login_required @login_required
def maintenance_tasks(): def maintenance_tasks():

Binary file not shown.

BIN
backend/database/myp.db-shm Normal file

Binary file not shown.

BIN
backend/database/myp.db-wal Normal file

Binary file not shown.

View File

@ -45,3 +45,6 @@
2025-06-01 13:22:49 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 13:22:49 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 13:36:31 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 13:36:31 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 13:39:56 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert 2025-06-01 13:39:56 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 14:29:35 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 14:32:50 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert
2025-06-01 14:36:04 - [analytics] analytics - [INFO] INFO - 📈 Analytics Engine initialisiert

View File

@ -1148,3 +1148,136 @@ WHERE users.id = ?
2025-06-01 14:16:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 14:16:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:17:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 14:17:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:17:45 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True 2025-06-01 14:17:45 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:29:35 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-01 14:29:36 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
2025-06-01 14:29:36 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
2025-06-01 14:29:37 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
2025-06-01 14:29:37 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-01 14:29:37 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-01 14:29:37 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-01 14:29:37 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-01 14:29:37 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-01 14:29:37 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-01 14:29:37 - [app] app - [INFO] INFO - Keine Drucker zur Initialisierung gefunden
2025-06-01 14:29:37 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-01 14:29:37 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-01 14:29:37 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-01 14:29:37 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-01 14:29:59 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:00 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:04 - [app] app - [INFO] INFO - Admin-Check für Funktion delete_user: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:05 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:05 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:07 - [app] app - [INFO] INFO - Admin-Check für Funktion delete_user: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:08 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:08 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:10 - [app] app - [INFO] INFO - Admin-Check für Funktion delete_user: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:11 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:11 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:14 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:14 - [app] app - [INFO] INFO - Admin-Gastanfragen Seite aufgerufen von User 1
2025-06-01 14:30:14 - [app] app - [INFO] INFO - Admin-Check für Funktion get_admin_guest_requests: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:14 - [app] app - [INFO] INFO - API-Aufruf /api/admin/guest-requests von User 1
2025-06-01 14:30:14 - [app] app - [INFO] INFO - Admin-Gastaufträge geladen: 0 von 0 (Status: all)
2025-06-01 14:30:17 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:18 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:19 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:19 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:21 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:21 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:23 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:23 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:30 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:30 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:34 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:34 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:35 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:35 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:35 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:36 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:36 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:36 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:36 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:37 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:37 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:37 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:37 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:37 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:38 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:38 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:38 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:39 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:39 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:42 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:30:42 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:31:12 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:31:42 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:12 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:42 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:50 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-01 14:32:51 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
2025-06-01 14:32:51 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
2025-06-01 14:32:51 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
2025-06-01 14:32:51 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-01 14:32:51 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-01 14:32:51 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-01 14:32:51 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-01 14:32:51 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-01 14:32:51 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-01 14:32:51 - [app] app - [INFO] INFO - Keine Drucker zur Initialisierung gefunden
2025-06-01 14:32:51 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-01 14:32:51 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-01 14:32:51 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-01 14:32:51 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-01 14:32:53 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:54 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:55 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:55 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:56 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:56 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:57 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:57 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:57 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:58 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:58 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:59 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:32:59 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:33:29 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:33:59 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:34:29 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:34:59 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:35:29 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:35:59 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:35:59 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:04 - [app] app - [INFO] INFO - Optimierte SQLite-Engine erstellt: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\myp.db
2025-06-01 14:36:05 - [app] app - [INFO] INFO - SQLite für Produktionsumgebung konfiguriert (WAL-Modus, Cache, Optimierungen)
2025-06-01 14:36:06 - [app] app - [INFO] INFO - ✅ Timeout Force-Quit Manager geladen
2025-06-01 14:36:06 - [app] app - [INFO] INFO - ✅ Zentraler Shutdown-Manager initialisiert
2025-06-01 14:36:06 - [app] app - [INFO] INFO - 🔄 Starte Datenbank-Setup und Migrationen...
2025-06-01 14:36:06 - [app] app - [INFO] INFO - Datenbank mit Optimierungen initialisiert
2025-06-01 14:36:06 - [app] app - [INFO] INFO - ✅ JobOrder-Tabelle bereits vorhanden
2025-06-01 14:36:06 - [app] app - [INFO] INFO - Admin-Benutzer admin (admin@mercedes-benz.com) existiert bereits. Passwort wurde zurückgesetzt.
2025-06-01 14:36:06 - [app] app - [INFO] INFO - ✅ Datenbank-Setup und Migrationen erfolgreich abgeschlossen
2025-06-01 14:36:06 - [app] app - [INFO] INFO - 🖨️ Starte automatische Steckdosen-Initialisierung...
2025-06-01 14:36:06 - [app] app - [INFO] INFO - Keine Drucker zur Initialisierung gefunden
2025-06-01 14:36:06 - [app] app - [INFO] INFO - 🔄 Debug-Modus: Queue Manager deaktiviert für Entwicklung
2025-06-01 14:36:06 - [app] app - [INFO] INFO - Job-Scheduler gestartet
2025-06-01 14:36:06 - [app] app - [INFO] INFO - Starte Debug-Server auf 0.0.0.0:5000 (HTTP)
2025-06-01 14:36:06 - [app] app - [INFO] INFO - Windows-Debug-Modus: Auto-Reload deaktiviert
2025-06-01 14:36:08 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:08 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:19 - [app] app - [INFO] INFO - Admin-Check für Funktion api_create_backup: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:19 - [app] app - [INFO] INFO - 💾 Backup-Erstellung gestartet von Benutzer admin
2025-06-01 14:36:19 - [app] app - [INFO] INFO - ✅ Backup erfolgreich erstellt: myp_backup_20250601_143619.zip (0.0 MB)
2025-06-01 14:36:23 - [app] app - [INFO] INFO - Admin-Check für Funktion api_optimize_database: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:23 - [app] app - [INFO] INFO - 🔧 Datenbank-Optimierung gestartet von Benutzer admin
2025-06-01 14:36:23 - [app] app - [INFO] INFO - ✅ Datenbank-Optimierung abgeschlossen: {'tables_analyzed': 1, 'indexes_rebuilt': 1, 'space_freed_mb': 1, 'errors': [], 'orphaned_files_removed': 0}
2025-06-01 14:36:26 - [app] app - [INFO] INFO - Admin-Check für Funktion api_clear_cache: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:26 - [app] app - [INFO] INFO - 🧹 Cache-Löschung gestartet von Benutzer admin
2025-06-01 14:36:26 - [app] app - [INFO] INFO - ✅ Cache erfolgreich geleert. 0 temporäre Dateien entfernt
2025-06-01 14:36:38 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:54 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:36:55 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:37:00 - [app] app - [INFO] INFO - Admin-Check für Funktion admin_page: User authenticated: True, User ID: 1, Is Admin: True
2025-06-01 14:37:00 - [app] app - [INFO] INFO - Admin-Check für Funktion api_admin_system_health: User authenticated: True, User ID: 1, Is Admin: True

View File

@ -45,3 +45,6 @@
2025-06-01 13:22:49 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 13:22:49 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 13:36:31 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 13:36:31 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 13:39:56 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation) 2025-06-01 13:39:56 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 14:29:35 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 14:32:50 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)
2025-06-01 14:36:04 - [backup] backup - [INFO] INFO - BackupManager initialisiert (minimal implementation)

View File

@ -26,3 +26,4 @@
2025-06-01 13:23:09 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 13:23:09 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 13:23:21 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 13:23:21 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 13:36:49 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00 2025-06-01 13:36:49 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00
2025-06-01 14:29:52 - [calendar] calendar - [INFO] INFO - 📅 Kalender-Events abgerufen: 0 Einträge für Zeitraum 2025-06-01 00:00:00 bis 2025-06-08 00:00:00

View File

@ -173,3 +173,15 @@
2025-06-01 13:39:58 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet 2025-06-01 13:39:58 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 13:39:58 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback) 2025-06-01 13:39:58 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 13:39:58 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading) 2025-06-01 13:39:58 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
2025-06-01 14:29:36 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 14:29:36 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 14:29:36 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 14:29:36 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
2025-06-01 14:32:51 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 14:32:51 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 14:32:51 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 14:32:51 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)
2025-06-01 14:36:05 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 14:36:06 - [dashboard] dashboard - [INFO] INFO - Dashboard-Background-Worker gestartet
2025-06-01 14:36:06 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server wird mit threading initialisiert (eventlet-Fallback)
2025-06-01 14:36:06 - [dashboard] dashboard - [INFO] INFO - Dashboard WebSocket-Server initialisiert (async_mode: threading)

View File

@ -45,3 +45,6 @@
2025-06-01 13:22:49 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 13:22:49 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 13:36:31 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 13:36:31 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 13:39:56 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet 2025-06-01 13:39:56 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 14:29:35 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 14:32:50 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet
2025-06-01 14:36:04 - [database] database - [INFO] INFO - Datenbank-Wartungs-Scheduler gestartet

View File

@ -43,3 +43,6 @@
2025-06-01 13:22:50 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 13:22:50 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 13:36:33 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 13:36:33 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 13:39:57 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand) 2025-06-01 13:39:57 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 14:29:36 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 14:32:51 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)
2025-06-01 14:36:06 - [email_notification] email_notification - [INFO] INFO - 📧 Offline-E-Mail-Benachrichtigung initialisiert (kein echter E-Mail-Versand)

View File

@ -60,3 +60,4 @@
2025-06-01 13:23:06 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 13:23:06 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 13:23:19 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 13:23:19 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 13:36:46 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1) 2025-06-01 13:36:46 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)
2025-06-01 14:29:47 - [jobs] jobs - [INFO] INFO - Jobs abgerufen: 0 von 0 (Seite 1)

View File

@ -86,3 +86,9 @@
2025-06-01 13:36:33 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 13:36:33 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 13:39:57 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 13:39:57 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 13:39:58 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet 2025-06-01 13:39:58 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 14:29:36 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 14:29:36 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 14:32:51 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 14:32:51 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 14:36:06 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet
2025-06-01 14:36:06 - [maintenance] maintenance - [INFO] INFO - Wartungs-Scheduler gestartet

View File

@ -86,3 +86,9 @@
2025-06-01 13:36:33 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 13:36:33 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 13:39:58 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 13:39:58 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 13:39:58 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt 2025-06-01 13:39:58 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 14:29:36 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 14:29:36 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 14:32:51 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 14:32:51 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 14:36:06 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt
2025-06-01 14:36:06 - [multi_location] multi_location - [INFO] INFO - Standard-Standort erstellt

View File

@ -41,3 +41,6 @@
2025-06-01 13:22:50 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 13:22:50 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 13:36:33 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 13:36:33 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 13:39:58 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert 2025-06-01 13:39:58 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 14:29:36 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 14:32:51 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert
2025-06-01 14:36:06 - [permissions] permissions - [INFO] INFO - 🔐 Permission Template Helpers registriert

View File

@ -1358,3 +1358,206 @@
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden 2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus... 2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden 2025-06-01 14:17:48 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:29:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-01 14:29:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
2025-06-01 14:29:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
2025-06-01 14:29:37 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
2025-06-01 14:29:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
2025-06-01 14:29:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
2025-06-01 14:29:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
2025-06-01 14:29:43 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
2025-06-01 14:29:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:29:49 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:29:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:29:49 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:29:49 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
2025-06-01 14:29:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:29:50 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:29:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:29:50 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:29:55 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
2025-06-01 14:30:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:00 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:00 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:01 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-01 14:30:05 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:05 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:05 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:05 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:07 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-01 14:30:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:08 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:08 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:11 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:11 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:11 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:13 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.1s
2025-06-01 14:30:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:14 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:14 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:14 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:18 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:18 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:19 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:19 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:19 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:19 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:21 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:21 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:21 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:23 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:23 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:23 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:23 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:30 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:30 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:34 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:34 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:34 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:34 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:35 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:36 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:37 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:38 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:39 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:39 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:39 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:39 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:42 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:30:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:30:42 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:31:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:31:12 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:31:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:31:12 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:31:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:31:42 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:31:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:31:42 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:12 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:12 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:42 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:42 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:42 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-01 14:32:50 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
2025-06-01 14:32:51 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
2025-06-01 14:32:51 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
2025-06-01 14:32:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
2025-06-01 14:32:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
2025-06-01 14:32:52 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
2025-06-01 14:32:54 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:54 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:54 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:54 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:55 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:55 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:55 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:55 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:56 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:56 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:56 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:56 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:57 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:57 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:57 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:58 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
2025-06-01 14:32:58 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:58 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:58 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:58 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:59 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:32:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:32:59 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:33:04 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
2025-06-01 14:33:10 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
2025-06-01 14:33:16 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-01 14:33:22 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-01 14:33:28 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
2025-06-01 14:33:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:33:29 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:33:29 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:33:29 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:33:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:33:59 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:33:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:33:59 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:35:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:35:18 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:35:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:35:18 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:35:45 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:35:45 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:35:45 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:35:45 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:35:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:35:59 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:35:59 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:35:59 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:36:04 - [printer_monitor] printer_monitor - [INFO] INFO - 🖨️ Drucker-Monitor initialisiert
2025-06-01 14:36:04 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Automatische Tapo-Erkennung in separatem Thread gestartet
2025-06-01 14:36:06 - [printer_monitor] printer_monitor - [INFO] INFO - 🚀 Starte Steckdosen-Initialisierung beim Programmstart...
2025-06-01 14:36:06 - [printer_monitor] printer_monitor - [WARNING] WARNING - ⚠️ Keine aktiven Drucker zur Initialisierung gefunden
2025-06-01 14:36:06 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Starte automatische Tapo-Steckdosenerkennung...
2025-06-01 14:36:06 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Teste 6 Standard-IPs aus der Konfiguration
2025-06-01 14:36:06 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 1/6: 192.168.0.103
2025-06-01 14:36:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:36:08 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:36:08 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:36:08 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:36:12 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 2/6: 192.168.0.104
2025-06-01 14:36:18 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 3/6: 192.168.0.100
2025-06-01 14:36:24 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 4/6: 192.168.0.101
2025-06-01 14:36:30 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 5/6: 192.168.0.102
2025-06-01 14:36:36 - [printer_monitor] printer_monitor - [INFO] INFO - 🔍 Teste IP 6/6: 192.168.0.105
2025-06-01 14:36:42 - [printer_monitor] printer_monitor - [INFO] INFO - ✅ Steckdosen-Erkennung abgeschlossen: 0/6 Steckdosen gefunden in 36.0s
2025-06-01 14:36:54 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:36:54 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:36:54 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:36:54 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:37:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:37:00 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden
2025-06-01 14:37:00 - [printer_monitor] printer_monitor - [INFO] INFO - 🔄 Aktualisiere Live-Druckerstatus...
2025-06-01 14:37:00 - [printer_monitor] printer_monitor - [INFO] INFO - Keine aktiven Drucker gefunden

View File

@ -3683,3 +3683,128 @@
2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1) 2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker 2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.35ms 2025-06-01 14:17:48 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.35ms
2025-06-01 14:29:47 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 14:29:49 - [printers] printers - [INFO] INFO - Schnelles Laden abgeschlossen: 6 Drucker geladen (ohne Status-Check)
2025-06-01 14:29:49 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:29:49 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:29:49 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 2.02ms
2025-06-01 14:29:50 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:29:50 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:29:50 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.37ms
2025-06-01 14:30:00 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:00 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:00 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.81ms
2025-06-01 14:30:05 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:05 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:05 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.36ms
2025-06-01 14:30:08 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:08 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:08 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.34ms
2025-06-01 14:30:11 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:11 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:11 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.88ms
2025-06-01 14:30:14 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:14 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:14 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 11.00ms
2025-06-01 14:30:18 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:18 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:18 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 14.54ms
2025-06-01 14:30:19 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:19 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:19 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.15ms
2025-06-01 14:30:21 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:21 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:21 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.78ms
2025-06-01 14:30:23 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:23 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:23 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.87ms
2025-06-01 14:30:30 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:30 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:30 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.21ms
2025-06-01 14:30:34 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:34 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:34 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.79ms
2025-06-01 14:30:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.61ms
2025-06-01 14:30:35 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:35 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:35 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.44ms
2025-06-01 14:30:36 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:36 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:36 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.65ms
2025-06-01 14:30:36 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:36 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:36 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.02ms
2025-06-01 14:30:37 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:37 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:37 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.39ms
2025-06-01 14:30:37 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:37 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:37 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.43ms
2025-06-01 14:30:38 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:38 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:38 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 8.19ms
2025-06-01 14:30:38 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:38 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:38 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.25ms
2025-06-01 14:30:39 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:39 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:39 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.63ms
2025-06-01 14:30:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:30:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:30:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.06ms
2025-06-01 14:31:12 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:31:12 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:31:12 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.54ms
2025-06-01 14:31:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:31:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:31:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.57ms
2025-06-01 14:32:12 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:12 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:12 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.74ms
2025-06-01 14:32:42 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:42 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:42 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 5.22ms
2025-06-01 14:32:54 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:54 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:54 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 86.03ms
2025-06-01 14:32:55 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:55 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:55 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.19ms
2025-06-01 14:32:56 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:56 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:56 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.64ms
2025-06-01 14:32:57 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:57 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:57 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 7.97ms
2025-06-01 14:32:58 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:58 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:58 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.31ms
2025-06-01 14:32:59 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:32:59 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:32:59 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.29ms
2025-06-01 14:33:29 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:33:29 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:33:29 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 4.67ms
2025-06-01 14:33:59 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:33:59 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:33:59 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 6.46ms
2025-06-01 14:35:18 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:35:18 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:35:18 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 1.43ms
2025-06-01 14:35:45 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:35:45 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:35:45 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 3.27ms
2025-06-01 14:35:59 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:35:59 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:35:59 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.03ms
2025-06-01 14:36:08 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:36:08 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:36:08 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.68ms
2025-06-01 14:36:54 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:36:54 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:36:54 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 9.66ms
2025-06-01 14:37:00 - [printers] printers - [INFO] INFO - 🔄 Live-Status-Abfrage von Benutzer Administrator (ID: 1)
2025-06-01 14:37:00 - [printers] printers - [INFO] INFO - ✅ Live-Status-Abfrage erfolgreich: 0 Drucker
2025-06-01 14:37:00 - [printers] printers - [INFO] INFO - ✅ API-Live-Drucker-Status-Abfrage 'get_live_printer_status' erfolgreich in 10.52ms

View File

@ -2937,3 +2937,12 @@
2025-06-01 13:39:56 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True 2025-06-01 13:39:56 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 13:39:58 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet 2025-06-01 13:39:58 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-01 13:39:58 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet 2025-06-01 13:39:58 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-01 14:29:35 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 14:29:37 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-01 14:29:37 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-01 14:32:50 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 14:32:51 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-01 14:32:51 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet
2025-06-01 14:36:04 - [scheduler] scheduler - [INFO] INFO - Task check_jobs registriert: Intervall 30s, Enabled: True
2025-06-01 14:36:06 - [scheduler] scheduler - [INFO] INFO - Scheduler-Thread gestartet
2025-06-01 14:36:06 - [scheduler] scheduler - [INFO] INFO - Scheduler gestartet

View File

@ -41,3 +41,6 @@
2025-06-01 13:22:50 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 13:22:50 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 13:36:33 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 13:36:33 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 13:39:58 - [security] security - [INFO] INFO - 🔒 Security System initialisiert 2025-06-01 13:39:58 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 14:29:36 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 14:32:51 - [security] security - [INFO] INFO - 🔒 Security System initialisiert
2025-06-01 14:36:06 - [security] security - [INFO] INFO - 🔒 Security System initialisiert

View File

@ -106,3 +106,6 @@
2025-06-01 13:22:50 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 13:22:50 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 13:36:33 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 13:36:33 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 13:39:58 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert 2025-06-01 13:39:58 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 14:29:36 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 14:32:51 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert
2025-06-01 14:36:06 - [shutdown_manager] shutdown_manager - [INFO] INFO - 🔧 Shutdown-Manager initialisiert

View File

@ -381,3 +381,30 @@
2025-06-01 13:39:58 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert 2025-06-01 13:39:58 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 13:39:58 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert 2025-06-01 13:39:58 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 13:39:58 - [startup] startup - [INFO] INFO - ================================================== 2025-06-01 13:39:58 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T14:29:36.846650
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 14:29:36 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T14:32:51.257480
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 14:32:51 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - ==================================================
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - 🚀 MYP Platform Backend wird gestartet...
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - 🐍 Python Version: 3.13.3 (tags/v3.13.3:6280bb5, Apr 8 2025, 14:47:33) [MSC v.1943 64 bit (AMD64)]
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - 💻 Betriebssystem: nt (win32)
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - 📁 Arbeitsverzeichnis: C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - ⏰ Startzeit: 2025-06-01T14:36:06.188447
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - 🪟 Windows-Modus: Aktiviert
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - 🔒 Windows-sichere Log-Rotation: Aktiviert
2025-06-01 14:36:06 - [startup] startup - [INFO] INFO - ==================================================

View File

@ -4,3 +4,7 @@
2025-06-01 13:23:42 - [user] user - [INFO] INFO - Neuer Benutzer 'core' erstellt von Admin 1 2025-06-01 13:23:42 - [user] user - [INFO] INFO - Neuer Benutzer 'core' erstellt von Admin 1
2025-06-01 13:24:07 - [user] user - [INFO] INFO - Neuer Benutzer 'corewe' erstellt von Admin 1 2025-06-01 13:24:07 - [user] user - [INFO] INFO - Neuer Benutzer 'corewe' erstellt von Admin 1
2025-06-01 13:24:37 - [user] user - [INFO] INFO - Neuer Benutzer 'corewedsd' erstellt von Admin 1 2025-06-01 13:24:37 - [user] user - [INFO] INFO - Neuer Benutzer 'corewedsd' erstellt von Admin 1
2025-06-01 14:30:04 - [user] user - [INFO] INFO - Benutzer 'core' (ID: 2) gelöscht von Admin 1
2025-06-01 14:30:07 - [user] user - [INFO] INFO - Benutzer 'corewedsd' (ID: 4) gelöscht von Admin 1
2025-06-01 14:30:10 - [user] user - [INFO] INFO - Benutzer 'corewe' (ID: 3) gelöscht von Admin 1
2025-06-01 14:37:04 - [user] user - [INFO] INFO - Benutzer admin hat seine Einstellungsseite aufgerufen

View File

@ -178,3 +178,15 @@
2025-06-01 13:39:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen) 2025-06-01 13:39:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 13:39:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet 2025-06-01 13:39:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 13:39:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet 2025-06-01 13:39:56 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-01 14:29:35 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-01 14:29:35 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 14:29:35 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 14:29:35 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-01 14:32:50 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-01 14:32:50 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 14:32:50 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 14:32:50 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet
2025-06-01 14:36:04 - [windows_fixes] windows_fixes - [INFO] INFO - 🔧 Wende Windows-spezifische Fixes an...
2025-06-01 14:36:04 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Subprocess automatisch gepatcht für UTF-8 Encoding (run + Popen)
2025-06-01 14:36:04 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Globaler subprocess-Patch angewendet
2025-06-01 14:36:04 - [windows_fixes] windows_fixes - [INFO] INFO - ✅ Alle Windows-Fixes erfolgreich angewendet

View File

@ -139,6 +139,149 @@ update_system() {
log "✅ System-Update abgeschlossen" log "✅ System-Update abgeschlossen"
} }
configure_network_security() {
log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ==="
# IPv6 vollständig deaktivieren
progress "Deaktiviere IPv6..."
# IPv6 in GRUB deaktivieren
if [ -f /etc/default/grub ]; then
cp /etc/default/grub /etc/default/grub.backup
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="[^"]*/& ipv6.disable=1/' /etc/default/grub
sed -i 's/GRUB_CMDLINE_LINUX="[^"]*/& ipv6.disable=1/' /etc/default/grub
update-grub 2>/dev/null || true
fi
# IPv6 in sysctl deaktivieren
cat >> /etc/sysctl.conf << 'EOF'
# ===================================================================
# MYP Netzwerk-Sicherheitskonfiguration
# ===================================================================
# IPv6 vollständig deaktivieren
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
# IP-Spoofing-Schutz aktivieren
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# Source-Routing deaktivieren (verhindert IP-Spoofing)
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
# ICMP-Redirects ignorieren (verhindert Man-in-the-Middle)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# Secure ICMP-Redirects ignorieren
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0
# SYN-Flood-Schutz aktivieren
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
# TCP-RFC-Compliance (verhindert aggressive Paketwiederholungen)
net.ipv4.tcp_retries1 = 3
net.ipv4.tcp_retries2 = 15
net.ipv4.tcp_orphan_retries = 3
# TCP-Window-Skalierung optimieren (geringere Netzwerkauslastung)
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 65536 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 5000
# Broadcast-Pings ignorieren (verhindert Smurf-Angriffe)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# Bogus ICMP-Antworten ignorieren
net.ipv4.icmp_ignore_bogus_error_responses = 1
# Paketweiterleitung verhindern (Router-Funktionalität deaktivieren)
net.ipv4.ip_forward = 0
# Martian-Pakete loggen (verdächtige Pakete)
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
# TCP-Timestamps deaktivieren (verhindert Fingerprinting)
net.ipv4.tcp_timestamps = 0
# TCP-SACK deaktivieren (verhindert bestimmte Angriffe)
net.ipv4.tcp_sack = 0
# TCP-Keepalive optimieren
net.ipv4.tcp_keepalive_time = 7200
net.ipv4.tcp_keepalive_probes = 9
net.ipv4.tcp_keepalive_intvl = 75
# Memory-Limits für Netzwerk-Buffers
net.core.rmem_default = 262144
net.core.wmem_default = 262144
# Schutz vor Time-Wait-Assassination
net.ipv4.tcp_rfc1337 = 1
EOF
# Sysctl-Einstellungen sofort anwenden
sysctl -p || warning "Einige sysctl-Einstellungen konnten nicht angewendet werden"
# IPv6 in Netzwerk-Interfaces deaktivieren
progress "Deaktiviere IPv6 in Netzwerk-Interfaces..."
# Für systemd-networkd
if systemctl is-enabled systemd-networkd 2>/dev/null; then
mkdir -p /etc/systemd/network
cat > /etc/systemd/network/99-disable-ipv6.network << 'EOF'
[Match]
Name=*
[Network]
IPv6AcceptRA=no
LinkLocalAddressing=no
EOF
systemctl restart systemd-networkd 2>/dev/null || true
fi
# Für NetworkManager
if systemctl is-enabled NetworkManager 2>/dev/null; then
cat > /etc/NetworkManager/conf.d/99-disable-ipv6.conf << 'EOF'
[main]
plugins=keyfile
[keyfile]
unmanaged-devices=none
[connection]
ipv6.method=ignore
EOF
systemctl restart NetworkManager 2>/dev/null || true
fi
# IPv6 in /etc/hosts auskommentieren
sed -i 's/^::1/#::1/' /etc/hosts 2>/dev/null || true
log "✅ Erweiterte Netzwerk-Sicherheit konfiguriert:"
log " 🚫 IPv6 vollständig deaktiviert"
log " 🛡️ IP-Spoofing-Schutz aktiviert"
log " 🔒 SYN-Flood-Schutz aktiviert"
log " 📝 Verdächtige Pakete werden geloggt"
log " 🚫 Paketweiterleitung deaktiviert"
log " ⚡ TCP-Performance optimiert"
log " 🔐 RFC-Compliance für TCP aktiviert"
}
# =========================== DESKTOP-ENVIRONMENT ENTFERNUNG =========================== # =========================== DESKTOP-ENVIRONMENT ENTFERNUNG ===========================
remove_desktop_environments() { remove_desktop_environments() {
log "=== ENTFERNE DESKTOP ENVIRONMENTS FÜR KIOSK-MODUS ===" log "=== ENTFERNE DESKTOP ENVIRONMENTS FÜR KIOSK-MODUS ==="
@ -823,7 +966,9 @@ install_dependencies_only() {
check_debian_system check_debian_system
check_internet_connection check_internet_connection
configure_hostname
update_system update_system
configure_network_security
install_python_dependencies install_python_dependencies
install_nodejs_npm install_nodejs_npm
install_ssl_certificates install_ssl_certificates
@ -847,6 +992,7 @@ install_dependencies_only() {
success "✅ Abhängigkeiten-Installation abgeschlossen!" success "✅ Abhängigkeiten-Installation abgeschlossen!"
info "Das System ist bereit für manuelle Tests und Entwicklung" info "Das System ist bereit für manuelle Tests und Entwicklung"
info "Hostname wurde auf 'raspberrypi' gesetzt"
info "HTTPS-Backend kann manuell gestartet werden mit:" info "HTTPS-Backend kann manuell gestartet werden mit:"
info " cd /opt/myp && python3 app.py" info " cd /opt/myp && python3 app.py"
} }
@ -858,10 +1004,14 @@ install_full_production_system() {
check_debian_system check_debian_system
check_internet_connection check_internet_connection
# Hostname zuerst setzen
configure_hostname
# Führe zuerst Abhängigkeiten-Installation durch (falls noch nicht geschehen) # Führe zuerst Abhängigkeiten-Installation durch (falls noch nicht geschehen)
if [ ! -d "$APP_DIR" ] || [ ! -f "$APP_DIR/app.py" ]; then if [ ! -d "$APP_DIR" ] || [ ! -f "$APP_DIR/app.py" ]; then
warning "Anwendung noch nicht deployed - führe Abhängigkeiten-Installation durch..." warning "Anwendung noch nicht deployed - führe Abhängigkeiten-Installation durch..."
update_system update_system
configure_network_security
install_python_dependencies install_python_dependencies
install_nodejs_npm install_nodejs_npm
install_ssl_certificates install_ssl_certificates
@ -869,6 +1019,9 @@ install_full_production_system() {
deploy_application deploy_application
install_npm_dependencies install_npm_dependencies
generate_ssl_certificate generate_ssl_certificate
else
# Netzwerk-Sicherheit auch bei bestehender Installation konfigurieren
configure_network_security
fi fi
# Desktop-Environments entfernen und minimale X11 installieren # Desktop-Environments entfernen und minimale X11 installieren
@ -897,10 +1050,11 @@ install_full_production_system() {
success "✅ Vollständige Kiosk-Installation abgeschlossen!" success "✅ Vollständige Kiosk-Installation abgeschlossen!"
info "Das System ist vollständig konfiguriert:" info "Das System ist vollständig konfiguriert:"
info " 🖥️ Hostname: raspberrypi"
info " 🖥️ Automatischer Kiosk-Modus beim Boot" info " 🖥️ Automatischer Kiosk-Modus beim Boot"
info " 📡 SSH: ssh user@<ip> (Passwort: raspberry)" info " 📡 SSH: ssh user@<ip> (Passwort: raspberry)"
info " 🖥️ RDP: <ip>:3389 (Benutzer: root, Passwort: 744563017196A)" info " 🖥️ RDP: <ip>:3389 (Benutzer: root, Passwort: 744563017196A)"
info " 🔒 Firewall: 192.168.0.0/16 + localhost + m040tbaraspi001" info " 🔒 Firewall: 192.168.0.0/16 + localhost + raspberrypi + m040tbaraspi001"
warning "⚠️ Neustart erforderlich für automatischen Kiosk-Start: sudo reboot" warning "⚠️ Neustart erforderlich für automatischen Kiosk-Start: sudo reboot"
} }
@ -1032,30 +1186,36 @@ configure_firewall() {
# Zone definieren # Zone definieren
firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true
# Erweiterte Netzwerk-Quellen definieren # Erweiterte Netzwerk-Quellen definieren (nur IPv4)
firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16 firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16
firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32 firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32
firewall-cmd --permanent --zone=myp-backend --add-source=::1/128
# Lokaler Hostname hinzufügen (falls auflösbar) # Lokaler Hostname "raspberrypi" hinzufügen
local local_hostname=$(hostname) local local_hostname="raspberrypi"
if [ -n "$local_hostname" ]; then
progress "Füge lokalen Hostname hinzu: $local_hostname" progress "Füge lokalen Hostname hinzu: $local_hostname"
# Versuche IP-Adresse des lokalen Hostnames zu ermitteln local local_ip=$(getent hosts "$local_hostname" | awk '{print $1}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1 2>/dev/null || true)
local local_ip=$(getent hosts "$local_hostname" | awk '{print $1}' | head -1 2>/dev/null || true)
if [ -n "$local_ip" ]; then if [ -n "$local_ip" ]; then
firewall-cmd --permanent --zone=myp-backend --add-source="$local_ip/32" 2>/dev/null || true firewall-cmd --permanent --zone=myp-backend --add-source="$local_ip/32" 2>/dev/null || true
fi log "✅ Lokaler Hostname $local_hostname hinzugefügt: $local_ip"
else
info "Lokaler Hostname $local_hostname nicht auflösbar - wird beim nächsten Boot verfügbar sein"
fi fi
# Remote-Hostname m040tbaraspi001 hinzufügen (falls auflösbar) # Frontend-Server m040tbaraspi001 hinzufügen (falls auflösbar)
progress "Füge Remote-Hostname hinzu: m040tbaraspi001" progress "Füge Frontend-Server hinzu: m040tbaraspi001"
local remote_ip=$(getent hosts "m040tbaraspi001" | awk '{print $1}' | head -1 2>/dev/null || true) local frontend_ip=$(getent hosts "m040tbaraspi001" | awk '{print $1}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1 2>/dev/null || true)
if [ -n "$remote_ip" ]; then if [ -n "$frontend_ip" ]; then
firewall-cmd --permanent --zone=myp-backend --add-source="$remote_ip/32" 2>/dev/null || true firewall-cmd --permanent --zone=myp-backend --add-source="$frontend_ip/32" 2>/dev/null || true
log "Remote-Hostname m040tbaraspi001 hinzugefügt: $remote_ip" log "Frontend-Server m040tbaraspi001 hinzugefügt: $frontend_ip"
else else
info "Remote-Hostname m040tbaraspi001 nicht auflösbar - überspringe" # Versuche auch mit FQDN
local frontend_fqdn_ip=$(getent hosts "m040tbaraspi001.de040.corpintra.net" | awk '{print $1}' | grep -E '^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$' | head -1 2>/dev/null || true)
if [ -n "$frontend_fqdn_ip" ]; then
firewall-cmd --permanent --zone=myp-backend --add-source="$frontend_fqdn_ip/32" 2>/dev/null || true
log "✅ Frontend-Server m040tbaraspi001.de040.corpintra.net hinzugefügt: $frontend_fqdn_ip"
else
info "Frontend-Server m040tbaraspi001 nicht auflösbar - überspringe"
fi
fi fi
# HTTPS für API & Kiosk zulassen # HTTPS für API & Kiosk zulassen
@ -1067,6 +1227,11 @@ configure_firewall() {
# RDP für Remote-Desktop # RDP für Remote-Desktop
firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp
# IPv6 in firewalld deaktivieren
progress "Deaktiviere IPv6 in firewalld..."
firewall-cmd --permanent --set-target=DROP --zone=public --family=ipv6 2>/dev/null || true
firewall-cmd --permanent --set-target=DROP --zone=myp-backend --family=ipv6 2>/dev/null || true
# Default-Zone setzen # Default-Zone setzen
firewall-cmd --set-default-zone=myp-backend firewall-cmd --set-default-zone=myp-backend
@ -1079,11 +1244,12 @@ configure_firewall() {
log "✅ Firewall konfiguriert:" log "✅ Firewall konfiguriert:"
log " 🔒 Zone: myp-backend" log " 🔒 Zone: myp-backend"
log " 🌐 Netzwerk: 192.168.0.0/16" log " 🌐 Netzwerk: 192.168.0.0/16 (nur IPv4)"
log " 🏠 Localhost: 127.0.0.1, ::1" log " 🏠 Localhost: 127.0.0.1"
log " 🖥️ Lokaler Host: $local_hostname" log " 🖥️ Lokaler Host: raspberrypi"
log " 📡 Remote Host: m040tbaraspi001" log " 📡 Frontend-Server: m040tbaraspi001"
log " 🔌 Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)" log " 🔌 Ports: 443/tcp (HTTPS), 22/tcp (SSH), 3389/tcp (RDP)"
log " 🚫 IPv6 vollständig blockiert"
} }
# =========================== REMOTE-ZUGANG TESTEN =========================== # =========================== REMOTE-ZUGANG TESTEN ===========================
@ -1135,6 +1301,45 @@ test_remote_access() {
log "✅ Remote-Zugang-Test abgeschlossen" log "✅ Remote-Zugang-Test abgeschlossen"
} }
# =========================== HOSTNAME KONFIGURATION ===========================
configure_hostname() {
log "=== KONFIGURIERE HOSTNAME ==="
local target_hostname="raspberrypi"
local current_hostname=$(hostname)
if [ "$current_hostname" != "$target_hostname" ]; then
progress "Setze Hostname von '$current_hostname' auf '$target_hostname'..."
# Hostname sofort setzen
hostnamectl set-hostname "$target_hostname" || error "Fehler beim Setzen des Hostnames"
# /etc/hostname aktualisieren
echo "$target_hostname" > /etc/hostname
# /etc/hosts aktualisieren
cp /etc/hosts /etc/hosts.backup
sed -i "s/127.0.1.1.*/127.0.1.1\t$target_hostname/" /etc/hosts
# Falls kein 127.0.1.1 Eintrag existiert, hinzufügen
if ! grep -q "127.0.1.1" /etc/hosts; then
echo "127.0.1.1 $target_hostname" >> /etc/hosts
fi
log "✅ Hostname erfolgreich auf '$target_hostname' gesetzt"
else
log "✅ Hostname bereits korrekt: '$target_hostname'"
fi
# Hostname-Auflösung testen
if getent hosts "$target_hostname" >/dev/null 2>&1; then
local resolved_ip=$(getent hosts "$target_hostname" | awk '{print $1}' | head -1)
log "✅ Hostname-Auflösung funktioniert: $target_hostname -> $resolved_ip"
else
warning "⚠️ Hostname-Auflösung für '$target_hostname' fehlgeschlagen"
fi
}
# =========================== NETZWERK-SICHERHEIT =========================== # =========================== NETZWERK-SICHERHEIT ===========================
configure_network_security() { configure_network_security() {
log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ===" log "=== KONFIGURIERE ERWEITERTE NETZWERK-SICHERHEIT ==="

File diff suppressed because one or more lines are too long

View File

@ -84,12 +84,13 @@ class AdminDashboard {
this.showAnalytics(); this.showAnalytics();
}); });
// Maintenance Button // Maintenance Button - DEAKTIVIERT wegen Konflikt mit MaintenanceModal
this.addEventListenerSafe('#maintenance-btn', 'click', (e) => { // Das Wartungs-Modal wird jetzt direkt in admin.html verwaltet
e.preventDefault(); // this.addEventListenerSafe('#maintenance-btn', 'click', (e) => {
e.stopPropagation(); // e.preventDefault();
this.showMaintenance(); // e.stopPropagation();
}); // this.showMaintenance();
// });
// Cache leeren // Cache leeren
this.addEventListenerSafe('#clear-cache-btn', 'click', (e) => { this.addEventListenerSafe('#clear-cache-btn', 'click', (e) => {

View File

@ -19,25 +19,34 @@ ExecStart=/bin/bash -c '\
# Zone definieren (falls nicht vorhanden) \ # Zone definieren (falls nicht vorhanden) \
firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true; \ firewall-cmd --permanent --new-zone=myp-backend 2>/dev/null || true; \
\ \
# Erweiterte Netzwerk-Quellen definieren \ # Erweiterte Netzwerk-Quellen definieren (nur IPv4) \
firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16; \ firewall-cmd --permanent --zone=myp-backend --add-source=192.168.0.0/16; \
firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32; \ firewall-cmd --permanent --zone=myp-backend --add-source=127.0.0.1/32; \
firewall-cmd --permanent --zone=myp-backend --add-source=::1/128; \
\ \
# Lokaler Hostname hinzufügen (falls auflösbar) \ # Lokaler Hostname "raspberrypi" hinzufügen \
LOCAL_HOSTNAME=$(hostname); \ LOCAL_HOSTNAME="raspberrypi"; \
if [ -n "$LOCAL_HOSTNAME" ]; then \ LOCAL_IP=$(getent hosts "$LOCAL_HOSTNAME" | awk "{print \$1}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$" | head -1 2>/dev/null || true); \
LOCAL_IP=$(getent hosts "$LOCAL_HOSTNAME" | awk "{print \$1}" | head -1 2>/dev/null || true); \
if [ -n "$LOCAL_IP" ]; then \ if [ -n "$LOCAL_IP" ]; then \
firewall-cmd --permanent --zone=myp-backend --add-source="$LOCAL_IP/32" 2>/dev/null || true; \ firewall-cmd --permanent --zone=myp-backend --add-source="$LOCAL_IP/32" 2>/dev/null || true; \
fi; \ logger "MYP Firewall: Lokaler Hostname $LOCAL_HOSTNAME hinzugefügt: $LOCAL_IP"; \
else \
logger "MYP Firewall: Lokaler Hostname $LOCAL_HOSTNAME nicht auflösbar"; \
fi; \ fi; \
\ \
# Remote-Hostname m040tbaraspi001 hinzufügen (falls auflösbar) \ # Frontend-Server m040tbaraspi001 hinzufügen (falls auflösbar) \
REMOTE_IP=$(getent hosts "m040tbaraspi001" | awk "{print \$1}" | head -1 2>/dev/null || true); \ FRONTEND_IP=$(getent hosts "m040tbaraspi001" | awk "{print \$1}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$" | head -1 2>/dev/null || true); \
if [ -n "$REMOTE_IP" ]; then \ if [ -n "$FRONTEND_IP" ]; then \
firewall-cmd --permanent --zone=myp-backend --add-source="$REMOTE_IP/32" 2>/dev/null || true; \ firewall-cmd --permanent --zone=myp-backend --add-source="$FRONTEND_IP/32" 2>/dev/null || true; \
logger "MYP Firewall: Remote-Hostname m040tbaraspi001 hinzugefügt: $REMOTE_IP"; \ logger "MYP Firewall: Frontend-Server m040tbaraspi001 hinzugefügt: $FRONTEND_IP"; \
else \
# Versuche auch mit FQDN \
FRONTEND_FQDN_IP=$(getent hosts "m040tbaraspi001.de040.corpintra.net" | awk "{print \$1}" | grep -E "^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$" | head -1 2>/dev/null || true); \
if [ -n "$FRONTEND_FQDN_IP" ]; then \
firewall-cmd --permanent --zone=myp-backend --add-source="$FRONTEND_FQDN_IP/32" 2>/dev/null || true; \
logger "MYP Firewall: Frontend-Server m040tbaraspi001.de040.corpintra.net hinzugefügt: $FRONTEND_FQDN_IP"; \
else \
logger "MYP Firewall: Frontend-Server m040tbaraspi001 nicht auflösbar"; \
fi; \
fi; \ fi; \
\ \
# HTTPS für API & Kiosk \ # HTTPS für API & Kiosk \
@ -49,6 +58,10 @@ ExecStart=/bin/bash -c '\
# RDP für Remote-Desktop \ # RDP für Remote-Desktop \
firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp; \ firewall-cmd --permanent --zone=myp-backend --add-port=3389/tcp; \
\ \
# IPv6 in firewalld deaktivieren \
firewall-cmd --permanent --set-target=DROP --zone=public --family=ipv6 2>/dev/null || true; \
firewall-cmd --permanent --set-target=DROP --zone=myp-backend --family=ipv6 2>/dev/null || true; \
\
# Default-Zone setzen \ # Default-Zone setzen \
firewall-cmd --set-default-zone=myp-backend; \ firewall-cmd --set-default-zone=myp-backend; \
\ \
@ -56,7 +69,7 @@ ExecStart=/bin/bash -c '\
firewall-cmd --reload; \ firewall-cmd --reload; \
\ \
# Status loggen \ # Status loggen \
logger "MYP Firewall: Konfiguration erfolgreich angewendet"; \ logger "MYP Firewall: Konfiguration erfolgreich angewendet (IPv6 deaktiviert, Frontend-Server m040tbaraspi001)"; \
firewall-cmd --list-all-zones | logger -t "MYP-Firewall"; \ firewall-cmd --list-all-zones | logger -t "MYP-Firewall"; \
' '

View File

@ -625,27 +625,50 @@ class MaintenanceModal {
this.closeBtn = document.getElementById('close-maintenance-modal'); this.closeBtn = document.getElementById('close-maintenance-modal');
this.isOpen = false; this.isOpen = false;
this.isLoading = false; this.isLoading = false;
this.isInitialized = false;
// Verhindere doppelte Initialisierung
if (window.maintenanceModalInstance) {
return window.maintenanceModalInstance;
}
this.initializeEventListeners(); this.initializeEventListeners();
this.isInitialized = true;
window.maintenanceModalInstance = this;
} }
initializeEventListeners() { initializeEventListeners() {
// Modal öffnen // Modal öffnen - mit Event-Delegation und Konflikt-Vermeidung
if (this.triggerBtn) { if (this.triggerBtn) {
this.triggerBtn.addEventListener('click', (e) => { // Entferne alle existierenden Event-Listener
this.triggerBtn.removeEventListener('click', this.handleTriggerClick);
// Füge neuen Event-Listener hinzu
this.handleTriggerClick = (e) => {
e.preventDefault(); e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
console.log('🛠️ Wartungs-Modal wird geöffnet...');
this.openModal(); this.openModal();
}); };
this.triggerBtn.addEventListener('click', this.handleTriggerClick, { capture: true });
} }
// Modal schließen // Modal schließen
if (this.closeBtn) { if (this.closeBtn) {
this.closeBtn.addEventListener('click', () => this.closeModal()); this.closeBtn.addEventListener('click', (e) => {
e.preventDefault();
e.stopPropagation();
this.closeModal();
});
} }
// Modal schließen bei Klick außerhalb // Modal schließen bei Klick außerhalb - aber nur auf das Overlay
if (this.modal) { if (this.modal) {
this.modal.addEventListener('click', (e) => { this.modal.addEventListener('click', (e) => {
// Nur schließen wenn direkt auf das Modal-Overlay geklickt wird
if (e.target === this.modal) { if (e.target === this.modal) {
this.closeModal(); this.closeModal();
} }
@ -655,6 +678,7 @@ class MaintenanceModal {
// ESC-Taste zum Schließen // ESC-Taste zum Schließen
document.addEventListener('keydown', (e) => { document.addEventListener('keydown', (e) => {
if (e.key === 'Escape' && this.isOpen) { if (e.key === 'Escape' && this.isOpen) {
e.preventDefault();
this.closeModal(); this.closeModal();
} }
}); });
@ -665,36 +689,59 @@ class MaintenanceModal {
initializeMaintenanceActions() { initializeMaintenanceActions() {
const actions = [ const actions = [
{ id: 'modal-clear-cache', handler: () => this.executeAction('clearCache') }, { id: 'modal-clear-cache', handler: (e) => {
{ id: 'modal-optimize-db', handler: () => this.executeAction('optimizeDatabase') }, e.preventDefault();
{ id: 'modal-create-backup', handler: () => this.executeAction('createBackup') }, e.stopPropagation();
{ id: 'modal-advanced-settings', handler: () => this.navigateToSettings() } this.executeAction('clearCache');
}},
{ id: 'modal-optimize-db', handler: (e) => {
e.preventDefault();
e.stopPropagation();
this.executeAction('optimizeDatabase');
}},
{ id: 'modal-create-backup', handler: (e) => {
e.preventDefault();
e.stopPropagation();
this.executeAction('createBackup');
}},
{ id: 'modal-advanced-settings', handler: (e) => {
e.preventDefault();
e.stopPropagation();
this.navigateToSettings();
}}
]; ];
actions.forEach(action => { actions.forEach(action => {
const element = document.getElementById(action.id); const element = document.getElementById(action.id);
if (element) { if (element) {
// Entferne existierende Event-Listener
element.removeEventListener('click', action.handler);
// Füge neuen Event-Listener hinzu
element.addEventListener('click', action.handler); element.addEventListener('click', action.handler);
} }
}); });
} }
openModal() { openModal() {
if (this.modal) { if (this.modal && !this.isOpen) {
console.log('✅ Modal wird geöffnet');
this.modal.classList.remove('hidden'); this.modal.classList.remove('hidden');
this.isOpen = true; this.isOpen = true;
document.body.style.overflow = 'hidden'; document.body.style.overflow = 'hidden';
// Focus-Management für Barrierefreiheit // Focus-Management für Barrierefreiheit
const firstFocusable = this.modal.querySelector('button'); setTimeout(() => {
const firstFocusable = this.modal.querySelector('button:not(#close-maintenance-modal)');
if (firstFocusable) { if (firstFocusable) {
firstFocusable.focus(); firstFocusable.focus();
} }
}, 100);
} }
} }
closeModal() { closeModal() {
if (this.modal) { if (this.modal && this.isOpen) {
console.log('❌ Modal wird geschlossen');
this.modal.classList.add('hidden'); this.modal.classList.add('hidden');
this.isOpen = false; this.isOpen = false;
document.body.style.overflow = ''; document.body.style.overflow = '';
@ -793,7 +840,7 @@ class MaintenanceModal {
if (response.ok && result.success) { if (response.ok && result.success) {
showNotification(successMessage, 'success'); showNotification(successMessage, 'success');
this.closeModal(); // Modal NICHT automatisch schließen - Benutzer soll entscheiden
} else { } else {
showNotification(result.message || 'Fehler bei der Ausführung der Wartungsaktion', 'error'); showNotification(result.message || 'Fehler bei der Ausführung der Wartungsaktion', 'error');
} }
@ -820,11 +867,31 @@ class MaintenanceModal {
// Globale Wartungs-Modal Instanz // Globale Wartungs-Modal Instanz
let maintenanceModal = null; let maintenanceModal = null;
// Initialisierung nach DOM-Laden // Initialisierung nach DOM-Laden - aber nur einmal
document.addEventListener('DOMContentLoaded', function() { document.addEventListener('DOMContentLoaded', function() {
// Nur einmal initialisieren // Verhindere doppelte Initialisierung
if (!maintenanceModal) { if (!window.maintenanceModalInstance && !maintenanceModal) {
console.log('🔧 Wartungs-Modal wird initialisiert...');
maintenanceModal = new MaintenanceModal(); maintenanceModal = new MaintenanceModal();
// Deaktiviere andere Event-Handler für den Wartungs-Button
const maintenanceBtn = document.getElementById('maintenance-btn');
if (maintenanceBtn) {
// Entferne alle anderen Event-Listener
const newBtn = maintenanceBtn.cloneNode(true);
maintenanceBtn.parentNode.replaceChild(newBtn, maintenanceBtn);
// Füge nur unseren Event-Listener hinzu
newBtn.addEventListener('click', (e) => {
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
if (maintenanceModal) {
maintenanceModal.openModal();
}
}, { capture: true });
}
} }
}); });