final-cleanup: Produktionsfertige Konfiguration - Alle Ports auf 443 vereinheitlicht, TLS-Zertifikate vorgeneriert, Zentraler Installer erstellt

This commit is contained in:
2025-05-26 22:16:22 +02:00
parent 7aa70cf976
commit f719f74195
40 changed files with 598 additions and 11815 deletions

View File

@@ -1,169 +0,0 @@
# Häufige Fehler und Lösungen - Mercedes-Benz MYP Platform
## JavaScript-Fehler
### 1. `animateCounters is not defined`
**Problem:** Die Funktion `animateCounters` wird in `admin.js` aufgerufen, aber nicht definiert.
**Lösung:** Funktion wurde hinzugefügt in `admin.js` mit Intersection Observer für bessere Performance.
### 2. `showPrinterModal is not defined`
**Problem:** Die Funktion `showPrinterModal` wird aufgerufen, aber nicht definiert.
**Lösung:** Vollständige Modal-Funktion mit Formular-Handling wurde hinzugefügt.
### 3. `JSON.parse: unexpected character at line 1 column 1`
**Problem:** API-Aufrufe geben HTML statt JSON zurück (404-Fehler).
**Ursache:** Frontend läuft auf Port 8443, Backend auf Port 5000.
**Lösung:** Dynamische API-URL-Erkennung mit intelligentem Fallback implementiert.
## API-Fehler (404 NOT FOUND)
### 1. `/api/admin/stats/live` - 404 Fehler
**Problem:** Live-Statistiken API gibt 404 zurück.
**Ursache:** Port-Mismatch zwischen Frontend (8443) und Backend (5000).
**Lösung:**
- Dynamische API-Base-URL-Erkennung implementiert
- Automatischer Fallback von HTTPS:8443 zu HTTP:5000
- Verbesserte Fehlerbehandlung in der Route
- Sichere Admin-Berechtigung-Prüfung
### 2. `/api/admin/system/status` - 404 Fehler
**Problem:** System-Status API gibt 404 zurück.
**Lösung:**
- Dynamische URL-Erkennung implementiert
- Sichere psutil-Imports mit Fallback
- Verbesserte Fehlerbehandlung
- Graceful degradation wenn Systemüberwachung nicht verfügbar
### 3. `/api/admin/database/status` - 404 Fehler
**Problem:** Datenbank-Status API gibt 404 zurück.
**Lösung:**
- Dynamische URL-Erkennung implementiert
- Sichere Datenbankpfad-Erkennung
- Verbesserte Verbindungstests
- Fallback für fehlende Dateien
## Modal-Dialog Probleme
### 1. Automatische Weiterleitung zu 404-Seiten
**Problem:** Modal-Formulare submitten automatisch und leiten zu nicht existierenden Routen weiter.
**Ursache:** Fehlende `preventDefault()` in Form-Event-Handlers.
**Lösung:**
- `e.preventDefault()` zu allen Form-Submit-Handlers hinzugefügt
- Explizite Event-Handler-Bindung statt onclick-Attribute
- Verbesserte Modal-Schließung nach erfolgreichen Aktionen
### 2. Modal öffnet und schließt sofort
**Problem:** Modal-Dialoge erscheinen kurz und verschwinden dann.
**Ursache:** Automatische Form-Submission ohne preventDefault.
**Lösung:** Korrekte Event-Handler-Implementierung mit preventDefault.
## Port-Konfiguration Probleme
### 1. Server läuft auf Port 5000 statt 8443
**Problem:** Logs zeigen Port 5000, aber Frontend erwartet 8443.
**Ursache:** SSL-Konfiguration fehlgeschlagen, Fallback auf HTTP.
**Lösung:**
- Intelligente Port-Erkennung implementiert
- Automatischer Fallback von HTTPS:8443 zu HTTP:5000
- Dynamische API-Base-URL-Generierung
- Detailliertes Logging der URL-Erkennung
### 2. Cross-Origin-Probleme
**Problem:** CORS-Fehler bei API-Aufrufen zwischen verschiedenen Ports.
**Lösung:** Dynamische URL-Erkennung verhindert Cross-Origin-Requests.
### 3. Favicon 404-Fehler
**Problem:** `/favicon.ico` gibt 404 zurück.
**Lösung:** Route hinzugefügt die vorhandene PNG-Datei verwendet.
## Debugging-Strategien
### 1. Admin-API-Test-Route
**Zweck:** Überprüfung ob Admin-API grundsätzlich funktioniert.
**Route:** `/api/admin/test`
**Verwendung:** Zeigt Benutzer-Status und Admin-Berechtigung an.
### 2. Debug-Routen-Übersicht
**Route:** `/debug/routes`
**Zweck:** Zeigt alle registrierten Flask-Routen an.
### 3. Verbesserte Fehlerbehandlung
- Alle Admin-API-Routen haben jetzt try-catch-Blöcke
- Detaillierte Fehlermeldungen
- Graceful degradation bei fehlenden Abhängigkeiten
- Intelligente URL-Erkennung mit Logging
### 4. URL-Debugging
**Konsolen-Logs:** Alle API-Aufrufe loggen jetzt die verwendete URL
**Port-Erkennung:** Detaillierte Informationen über erkannte Ports und Protokolle
**Fallback-Mechanismus:** Automatische Umschaltung zwischen Ports
## Präventive Maßnahmen
### 1. JavaScript-Funktionen
- Alle aufgerufenen Funktionen sind jetzt definiert
- Fallback-Mechanismen für fehlende Elemente
- Bessere Fehlerbehandlung in Event-Listenern
- Korrekte Form-Event-Handler mit preventDefault
### 2. API-Routen
- Konsistente Admin-Berechtigung-Prüfung
- Sichere Datenbankzugriffe mit finally-Blöcken
- Fallback-Werte für alle Statistiken
- Dynamische URL-Erkennung für alle API-Aufrufe
### 3. Template-Handling
- Alle Admin-Templates existieren
- Korrekte Template-Pfade
- Fehlerbehandlung für fehlende Templates
### 4. Port-Management
- Intelligente Port-Erkennung
- Automatische Fallback-Mechanismen
- Cross-Origin-Problem-Vermeidung
- Detailliertes URL-Logging
## Aktuelle Status
**Behoben:**
- `animateCounters` Funktion hinzugefügt
- `showPrinterModal` Funktion implementiert
- Admin-API-Routen verbessert
- Favicon-Route hinzugefügt
- Fehlerbehandlung verstärkt
- **Dynamische API-URL-Erkennung implementiert**
- **Modal-Dialog preventDefault-Problem behoben**
- **Port-Mismatch-Problem gelöst**
- **JSON-Parse-Fehler behoben**
🔄 **In Bearbeitung:**
- SSL-Konfiguration optimieren
- Live-Updates stabilisieren
⚠️ **Zu überwachen:**
- Admin-Berechtigung-Prüfung
- Datenbankverbindung-Stabilität
- JavaScript-Performance bei Animationen
- **API-URL-Fallback-Mechanismus**
## Nächste Schritte
1. **Server-Neustart testen** - Die Port-Erkennung sollte jetzt funktionieren
2. **Admin-Dashboard-Funktionalität verifizieren** - Alle Modals sollten funktionieren
3. **Live-Updates überwachen** - API-Aufrufe sollten erfolgreich sein
4. SSL-Konfiguration finalisieren
5. Performance-Optimierungen implementieren
## Technische Details
### Port-Erkennung-Algorithmus
1. **Gleicher Port:** Wenn Frontend und Backend auf gleichem Port → relative URLs
2. **HTTPS:8443 → HTTP:5000:** Automatischer Fallback für häufigsten Fall
3. **Andere Ports:** Standard-Backend-Port basierend auf Protokoll
4. **Logging:** Alle Entscheidungen werden in der Konsole geloggt
### Modal-Dialog-Fixes
- `e.preventDefault()` in allen Form-Submit-Handlers
- Explizite Event-Listener statt onclick-Attribute
- Korrekte Modal-Schließung nach erfolgreichen API-Aufrufen
- Verbesserte Fehlerbehandlung mit Benutzer-Feedback

View File

@@ -1,351 +0,0 @@
# MYP Platform - Raspberry Pi Deployment Guide
## Übersicht
Diese Anleitung beschreibt die vollständige Installation und Konfiguration der MYP Platform auf Raspberry Pi Systemen.
## Voraussetzungen
### Hardware
- Raspberry Pi 4 (empfohlen) oder Raspberry Pi 3B+
- Mindestens 4GB RAM
- 32GB+ SD-Karte (Class 10)
- Netzwerkverbindung (Ethernet oder WiFi)
### Software
- Raspberry Pi OS (Bullseye oder neuer)
- SSH-Zugang aktiviert
- Benutzer `user` erstellt
## Installation
### 1. Projekt auf Raspberry Pi kopieren
```bash
# Auf dem Entwicklungsrechner
scp -r Projektarbeit-MYP user@raspberrypi:/home/user/
# Oder mit Git
ssh user@raspberrypi
cd /home/user
git clone <repository-url> Projektarbeit-MYP
```
### 2. Setup-Skript ausführen
```bash
ssh user@raspberrypi
cd /home/user/Projektarbeit-MYP/backend
chmod +x setup_raspberry_pi.sh
./setup_raspberry_pi.sh
```
Das Setup-Skript führt automatisch folgende Schritte aus:
1. **System-Updates**: Aktualisiert alle Pakete
2. **Abhängigkeiten**: Installiert Python, Nginx, Supervisor etc.
3. **Virtual Environment**: Erstellt isolierte Python-Umgebung
4. **Python-Pakete**: Installiert alle Requirements
5. **Verzeichnisse**: Erstellt notwendige Ordnerstruktur
6. **Datenbank**: Initialisiert SQLite-Datenbank
7. **SSL-Zertifikate**: Generiert selbstsignierte Zertifikate
8. **Services**: Konfiguriert Systemd, Nginx, Supervisor
9. **Firewall**: Öffnet notwendige Ports
10. **Drucker**: Trägt hardkodierte Drucker in DB ein
### 3. Manuelle Drucker-Konfiguration (optional)
Falls die Drucker separat konfiguriert werden sollen:
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python setup_drucker_db.py
```
## Konfiguration
### Pfadstruktur
```
/home/user/Projektarbeit-MYP/
├── backend/
│ ├── app/
│ │ ├── database/
│ │ │ └── myp.db
│ │ ├── logs/
│ │ │ ├── app/
│ │ │ ├── auth/
│ │ │ ├── jobs/
│ │ │ ├── printers/
│ │ │ ├── scheduler/
│ │ │ └── errors/
│ │ └── ...
│ ├── certs/
│ │ ├── myp.crt
│ │ └── myp.key
│ ├── venv/
│ └── requirements.txt
└── frontend/
└── ssl/
├── myp.crt
└── myp.key
```
### Hardkodierte Drucker
Die folgenden Drucker werden automatisch konfiguriert:
| Name | IP-Adresse | Status |
|------|------------|--------|
| Printer 1 | 192.168.0.100 | Available |
| Printer 2 | 192.168.0.101 | Available |
| Printer 3 | 192.168.0.102 | Available |
| Printer 4 | 192.168.0.103 | Available |
| Printer 5 | 192.168.0.104 | Available |
| Printer 6 | 192.168.0.106 | Available |
### Standard-Anmeldedaten
- **E-Mail**: admin@mercedes-benz.com
- **Passwort**: 744563017196A
## Services
### Systemd Service
```bash
# Service-Status prüfen
sudo systemctl status myp-platform
# Service neu starten
sudo systemctl restart myp-platform
# Service aktivieren/deaktivieren
sudo systemctl enable myp-platform
sudo systemctl disable myp-platform
# Logs anzeigen
sudo journalctl -u myp-platform -f
```
### Nginx
```bash
# Nginx-Status prüfen
sudo systemctl status nginx
# Konfiguration testen
sudo nginx -t
# Nginx neu laden
sudo systemctl reload nginx
```
### Supervisor
```bash
# Supervisor-Status
sudo supervisorctl status
# Service neu starten
sudo supervisorctl restart myp-platform
# Logs anzeigen
sudo supervisorctl tail -f myp-platform
```
## Zugriff
### URLs
- **HTTPS**: https://raspberrypi
- **HTTPS (IP)**: https://[IP-ADRESSE]
- **HTTP**: Automatische Weiterleitung zu HTTPS
### SSL-Zertifikat
Das System verwendet selbstsignierte SSL-Zertifikate:
- Browser-Warnung beim ersten Zugriff ist normal
- Zertifikat manuell akzeptieren
- Für Produktionsumgebung: Echte Zertifikate verwenden
## Wartung
### Logs
```bash
# Anwendungs-Logs
tail -f /home/user/Projektarbeit-MYP/backend/app/logs/app/app.log
# System-Logs
sudo journalctl -u myp-platform -f
# Nginx-Logs
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
```
### Datenbank-Backup
```bash
# Backup erstellen
cp /home/user/Projektarbeit-MYP/backend/app/database/myp.db \
/home/user/backup_$(date +%Y%m%d_%H%M%S).db
# Automatisches Backup (Crontab)
crontab -e
# Hinzufügen:
# 0 2 * * * cp /home/user/Projektarbeit-MYP/backend/app/database/myp.db /home/user/backup_$(date +\%Y\%m\%d).db
```
### Updates
```bash
# Code aktualisieren
cd /home/user/Projektarbeit-MYP
git pull
# Python-Abhängigkeiten aktualisieren
source backend/venv/bin/activate
pip install -r backend/requirements.txt
# Service neu starten
sudo systemctl restart myp-platform
```
## Troubleshooting
### Häufige Probleme
#### Service startet nicht
```bash
# Logs prüfen
sudo journalctl -u myp-platform -n 50
# Manuell starten (Debug)
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python app.py
```
#### SSL-Probleme
```bash
# Zertifikate neu generieren
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python -c "from utils.ssl_manager import ssl_manager; ssl_manager.generate_mercedes_certificate()"
# Nginx neu starten
sudo systemctl restart nginx
```
#### Datenbank-Probleme
```bash
# Datenbank neu initialisieren
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python -c "from models import init_database, create_initial_admin; init_database(); create_initial_admin()"
# Drucker neu einrichten
python setup_drucker_db.py
```
#### Port-Konflikte
```bash
# Verwendete Ports prüfen
sudo netstat -tlnp | grep :443
sudo netstat -tlnp | grep :80
# Prozesse beenden
sudo pkill -f "python app.py"
```
### Performance-Optimierung
#### Systemressourcen
```bash
# RAM-Nutzung prüfen
free -h
# CPU-Nutzung prüfen
htop
# Festplatte prüfen
df -h
```
#### Log-Rotation
```bash
# Logrotate konfigurieren
sudo tee /etc/logrotate.d/myp-platform > /dev/null <<EOF
/home/user/Projektarbeit-MYP/backend/app/logs/*/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
}
EOF
```
## Sicherheit
### Firewall
```bash
# UFW-Status prüfen
sudo ufw status
# Zusätzliche Regeln
sudo ufw allow from 192.168.0.0/24 to any port 22
sudo ufw deny 22
```
### SSL-Härtung
Für Produktionsumgebung:
1. Echte SSL-Zertifikate verwenden (Let's Encrypt)
2. HSTS aktivieren
3. Security Headers konfigurieren
4. Regelmäßige Updates
### Backup-Strategie
1. Tägliche Datenbank-Backups
2. Wöchentliche Vollbackups
3. Externe Speicherung
4. Restore-Tests
## Support
### Kontakt
- **E-Mail**: admin@mercedes-benz.com
- **Dokumentation**: /home/user/Projektarbeit-MYP/docs/
### Nützliche Befehle
```bash
# System-Informationen
hostnamectl
cat /etc/os-release
python3 --version
# Netzwerk-Informationen
ip addr show
hostname -I
# Service-Übersicht
systemctl list-units --type=service --state=running
```

View File

@@ -1,121 +0,0 @@
# MYP Platform - Raspberry Pi Setup
## Schnellstart
### 1. Projekt kopieren
```bash
scp -r Projektarbeit-MYP user@raspberrypi:/home/user/
```
### 2. Setup ausführen
```bash
ssh user@raspberrypi
cd /home/user/Projektarbeit-MYP/backend
chmod +x setup_raspberry_pi.sh
./setup_raspberry_pi.sh
```
### 3. Zugriff
- **URL**: https://raspberrypi
- **Login**: admin@mercedes-benz.com
- **Passwort**: 744563017196A
## Was wird installiert?
### System-Pakete
- Python 3 + pip + venv
- Nginx (Reverse Proxy)
- Supervisor (Process Manager)
- SQLite3 (Datenbank)
- OpenSSL (SSL-Zertifikate)
- Build-Tools (gcc, make, etc.)
### Python-Abhängigkeiten
- Flask 2.3.3 (Web Framework)
- SQLAlchemy 2.0.21 (ORM)
- cryptography 41.0.4 (SSL)
- PyP100 0.1.4 (Tapo Smart Plugs)
- psutil 5.9.5 (System Monitoring)
- gunicorn 21.2.0 (Production Server)
- RPi.GPIO 0.7.1 (Hardware Interface)
- Weitere 20+ Pakete (siehe requirements.txt)
### Services
- **myp-platform.service**: Hauptanwendung
- **nginx**: Reverse Proxy + SSL
- **supervisor**: Process Management
- **ufw**: Firewall (Ports 22, 80, 443)
### Verzeichnisstruktur
```
/home/user/Projektarbeit-MYP/
├── backend/
│ ├── app/ # Hauptanwendung
│ │ ├── database/myp.db # SQLite Datenbank
│ │ └── logs/ # Log-Dateien
│ ├── certs/ # SSL-Zertifikate
│ ├── venv/ # Python Virtual Environment
│ └── requirements.txt # Python-Abhängigkeiten
└── frontend/ssl/ # Frontend SSL-Zertifikate
```
### Hardkodierte Drucker
- **Printer 1**: 192.168.0.100
- **Printer 2**: 192.168.0.101
- **Printer 3**: 192.168.0.102
- **Printer 4**: 192.168.0.103
- **Printer 5**: 192.168.0.104
- **Printer 6**: 192.168.0.106
## Wartung
### Service-Befehle
```bash
# Status prüfen
sudo systemctl status myp-platform
# Neu starten
sudo systemctl restart myp-platform
# Logs anzeigen
sudo journalctl -u myp-platform -f
```
### Drucker neu einrichten
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python setup_drucker_db.py
```
### SSL-Zertifikate erneuern
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python -c "from utils.ssl_manager import ssl_manager; ssl_manager.generate_mercedes_certificate()"
sudo systemctl restart nginx
```
## Troubleshooting
### Service startet nicht
```bash
sudo journalctl -u myp-platform -n 50
```
### Manueller Start (Debug)
```bash
cd /home/user/Projektarbeit-MYP/backend/app
source ../venv/bin/activate
python app.py
```
### Ports prüfen
```bash
sudo netstat -tlnp | grep :443
sudo netstat -tlnp | grep :80
```
## Vollständige Dokumentation
Siehe: `DEPLOYMENT.md` für detaillierte Anweisungen.

View File

@@ -1,120 +0,0 @@
# MYP - Manage Your Printer
Ein System zur Verwaltung und Steuerung von 3D-Druckern über TP-Link Tapo P110 Smart Plugs.
## Verzeichnisstruktur
Diese MYP-Installation ist wie folgt organisiert:
- **app/** - Enthält den Anwendungscode (app.py, models.py)
- **docs/** - Enthält die Dokumentation (README, Anleitungen, Fehlerbehebung)
- **install/** - Enthält Installationsskripte und Konfigurationsdateien
## Installation
Zur Installation und Konfiguration nutzen Sie bitte das Hauptinstallationsskript:
```bash
chmod +x setup_myp.sh
./setup_myp.sh
```
Das Skript führt Sie durch die verfügbaren Optionen:
1. Standardinstallation (nur MYP-Anwendung)
2. Kiosk-Modus Installation (vollautomatischer Start nach Boot)
3. Dokumentation anzeigen
## Ausführliche Dokumentation
Die vollständige Dokumentation finden Sie im `docs/`-Verzeichnis:
- Allgemeine Anleitung: [docs/README.md](docs/README.md)
- Kiosk-Modus Anleitung: [docs/KIOSK-SETUP.md](docs/KIOSK-SETUP.md)
- Fehlerbehebung: [docs/COMMON_ERRORS.md](docs/COMMON_ERRORS.md)
- Entwicklungsplan: [docs/ROADMAP.md](docs/ROADMAP.md)
## Funktionsumfang
- Benutzer- und Rechteverwaltung (Admin/User)
- Verwaltung von Druckern und Smart Plugs
- Reservierungssystem für Drucker (Zeitplanung)
- Automatisches Ein-/Ausschalten der Drucker über Smart Plugs
- Statistikerfassung für Druckaufträge
- **NEU**: Kiosk-Modus für automatischen Start auf Raspberry Pi
## Systemvoraussetzungen
- Raspberry Pi 4 (oder kompatibel)
- Python 3.11+
- Internetzugang für die Installation (danach offline nutzbar)
- TP-Link Tapo P110 Smart Plugs im lokalen Netzwerk
## Erster Start
Beim ersten Start wird eine leere Datenbank angelegt. Es muss ein erster Administrator angelegt werden:
```
POST /api/create-initial-admin
```
Mit folgendem JSON-Body:
```json
{
"email": "admin@example.com",
"password": "sicheres-passwort",
"name": "Administrator"
}
```
## API-Dokumentation
Die Anwendung stellt folgende REST-API-Endpunkte bereit:
### Authentifizierung
- `POST /auth/register` - Neuen Benutzer registrieren
- `POST /auth/login` - Anmelden (erstellt eine Session für 7 Tage)
### Drucker
- `GET /api/printers` - Alle Drucker auflisten
- `GET /api/printers/<printerId>` - Einzelnen Drucker abrufen
- `POST /api/printers` - Neuen Drucker anlegen
- `DELETE /api/printers/<printerId>` - Drucker löschen
### Jobs/Reservierungen
- `GET /api/jobs` - Alle Reservierungen abrufen
- `POST /api/jobs` - Neue Reservierung anlegen
- `GET /api/jobs/<jobId>` - Reservierungsdetails abrufen
- `POST /api/jobs/<jobId>/finish` - Job beenden (Plug ausschalten)
- `POST /api/jobs/<jobId>/abort` - Job abbrechen (Plug ausschalten)
- `POST /api/jobs/<jobId>/extend` - Endzeit verschieben
- `GET /api/jobs/<jobId>/status` - Aktuellen Plug-Status abrufen
- `GET /api/jobs/<jobId>/remaining-time` - Restzeit in Sekunden abrufen
- `DELETE /api/jobs/<jobId>` - Job löschen
### Benutzer
- `GET /api/users` - Alle Benutzer auflisten (nur Admin)
- `GET /api/users/<userId>` - Einzelnen Benutzer abrufen
- `DELETE /api/users/<userId>` - Benutzer löschen (nur Admin)
### Sonstiges
- `GET /api/stats` - Globale Statistik (Druckzeit, etc.)
- `GET /api/test` - Health-Check
## Sicherheitshinweise
- Diese Anwendung speichert alle Zugangsdaten direkt im Code und in der Datenbank.
- Die Anwendung sollte ausschließlich in einem geschützten, lokalen Netzwerk betrieben werden.
- Es wird keine Verschlüsselung für die API-Kommunikation verwendet.
## Wartung und Troubleshooting
- Die Logdatei `myp.log` enthält alle wichtigen Ereignisse und Fehler
- Die Datenbank wird in `database/myp.db` gespeichert
- Häufig auftretende Probleme und Lösungen finden sich in [COMMON_ERRORS.md](COMMON_ERRORS.md)
- Zukünftige Entwicklungspläne sind in [ROADMAP.md](ROADMAP.md) dokumentiert

View File

@@ -1,199 +0,0 @@
# Mercedes-Benz MYP Platform - Roadmap
## Aktueller Stand (Dezember 2024)
### ✅ Abgeschlossen
#### Backend-Infrastruktur
- ✅ Flask-App mit SQLAlchemy-Modellen
- ✅ User-Management mit Admin-Rollen
- ✅ Drucker-Management-System
- ✅ Job-Scheduling-System
- ✅ Logging-System implementiert
- ✅ SSL-Konfiguration (teilweise)
#### Frontend-Grundlagen
- ✅ Admin-Dashboard HTML-Templates
- ✅ Basis-JavaScript-Funktionalität
- ✅ Responsive Design mit Bootstrap
#### API-Endpunkte
- ✅ Basis-CRUD-Operationen für alle Entitäten
- ✅ Admin-API-Routen definiert
- ✅ Authentifizierung und Autorisierung
### 🔧 Kürzlich behoben
#### JavaScript-Probleme
-`animateCounters` Funktion implementiert
-`showPrinterModal` Funktion hinzugefügt
-`animateProgressBars` Funktion erstellt
-`addHoverEffects` Funktion implementiert
#### API-Stabilität
- ✅ Verbesserte Fehlerbehandlung in Admin-API-Routen
- ✅ Sichere Admin-Berechtigung-Prüfung
- ✅ Fallback-Mechanismen für System-Monitoring
- ✅ Test-Route für Admin-API-Debugging
#### Infrastruktur
- ✅ Favicon-Route hinzugefügt
- ✅ Verbesserte Logging-Konfiguration
- ✅ COMMON_ERRORS.md aktualisiert
## 🔄 Aktuell in Bearbeitung
### Kritische Probleme
1. **SSL/HTTPS-Konfiguration**
- Server läuft auf Port 5000 statt 8443
- SSL-Zertifikate müssen überprüft werden
- Port-Konsistenz zwischen Frontend und Backend
2. **Admin-Dashboard-Stabilität**
- Live-Updates funktionieren teilweise
- Einige API-Endpunkte geben noch 404-Fehler zurück
- Modal-Funktionalität muss getestet werden
3. **Datenbankverbindung**
- Session-Management optimieren
- Connection-Pool-Konfiguration
- Backup-Strategien implementieren
## 📋 Nächste Prioritäten
### Kurzfristig (1-2 Wochen)
#### 1. SSL/HTTPS-Stabilisierung
- [ ] SSL-Zertifikate validieren
- [ ] Port-Konfiguration vereinheitlichen
- [ ] Reverse-Proxy-Setup dokumentieren
- [ ] Fallback-Mechanismus für HTTP/HTTPS
#### 2. Admin-Dashboard-Vervollständigung
- [ ] Alle Modal-Funktionen testen
- [ ] Live-Update-Mechanismus stabilisieren
- [ ] Drucker-Management-Funktionen verifizieren
- [ ] Benutzer-Management-Interface finalisieren
#### 3. API-Konsistenz
- [ ] Alle 404-Fehler beheben
- [ ] Einheitliche Error-Response-Struktur
- [ ] API-Dokumentation erstellen
- [ ] Rate-Limiting implementieren
### Mittelfristig (2-4 Wochen)
#### 1. Performance-Optimierung
- [ ] Database-Query-Optimierung
- [ ] Frontend-Asset-Minimierung
- [ ] Caching-Strategien implementieren
- [ ] Load-Testing durchführen
#### 2. Sicherheit
- [ ] Security-Audit durchführen
- [ ] CSRF-Protection verstärken
- [ ] Input-Validation verbessern
- [ ] Session-Security optimieren
#### 3. Monitoring & Analytics
- [ ] System-Monitoring-Dashboard
- [ ] Performance-Metriken sammeln
- [ ] Error-Tracking implementieren
- [ ] Usage-Analytics hinzufügen
### Langfristig (1-3 Monate)
#### 1. Feature-Erweiterungen
- [ ] Mobile-App-Unterstützung
- [ ] Push-Notifications
- [ ] Advanced-Scheduling-Features
- [ ] Reporting-System
#### 2. Skalierung
- [ ] Multi-Tenant-Architektur
- [ ] Microservices-Migration
- [ ] Container-Orchestrierung
- [ ] Cloud-Deployment
#### 3. Integration
- [ ] LDAP/Active Directory-Integration
- [ ] Drucker-API-Integration
- [ ] ERP-System-Anbindung
- [ ] Workflow-Automation
## 🚨 Bekannte Probleme
### Kritisch
- SSL-Konfiguration instabil
- Einige Admin-API-Endpunkte nicht erreichbar
- Live-Updates funktionieren nicht zuverlässig
### Wichtig
- Favicon-Requests verursachen 404-Fehler (behoben)
- JavaScript-Funktionen fehlen (behoben)
- Admin-Berechtigung-Prüfung inkonsistent (verbessert)
### Niedrig
- Logging-Performance bei hoher Last
- Frontend-Animationen können optimiert werden
- Dokumentation unvollständig
## 🎯 Erfolgskriterien
### Phase 1 (Stabilisierung)
- [ ] Alle Admin-Dashboard-Funktionen arbeiten fehlerfrei
- [ ] SSL/HTTPS funktioniert zuverlässig
- [ ] Keine 404-Fehler in der Konsole
- [ ] Live-Updates funktionieren in Echtzeit
### Phase 2 (Optimierung)
- [ ] Seitenladezeiten unter 2 Sekunden
- [ ] 99.9% Uptime
- [ ] Alle Security-Scans bestanden
- [ ] Performance-Benchmarks erreicht
### Phase 3 (Erweiterung)
- [ ] Mobile-Responsive Design
- [ ] Multi-Language-Support
- [ ] Advanced-Features implementiert
- [ ] Skalierbarkeit nachgewiesen
## 📊 Metriken & KPIs
### Technische Metriken
- Response-Zeit: < 200ms für API-Calls
- Uptime: > 99.9%
- Error-Rate: < 0.1%
- Database-Query-Zeit: < 50ms
### Business-Metriken
- Benutzer-Zufriedenheit: > 4.5/5
- Feature-Adoption-Rate: > 80%
- Support-Tickets: < 5 pro Woche
- System-Effizienz: > 95%
## 🔧 Entwicklungsrichtlinien
### Code-Qualität
- Alle Funktionen müssen getestet werden
- Code-Coverage > 80%
- Linting-Regeln befolgen
- Dokumentation für alle neuen Features
### Deployment
- Staging-Environment für Tests
- Automated-Testing vor Deployment
- Rollback-Strategien definiert
- Monitoring nach Deployment
### Sicherheit
- Regelmäßige Security-Audits
- Dependency-Updates
- Penetration-Testing
- Compliance-Checks
---
**Letzte Aktualisierung:** Dezember 2024
**Nächste Review:** In 2 Wochen
**Verantwortlich:** Entwicklungsteam Mercedes-Benz MYP

View File

@@ -1,177 +0,0 @@
# MYP Platform - Sicherheitsdokumentation
## Übersicht
Diese Dokumentation beschreibt die Sicherheitsmaßnahmen der MYP Platform, insbesondere für den Kiosk-Modus.
## Kiosk-Sicherheit
### Passwort-Schutz
- **Deaktivierungspasswort**: `744563017196A`
- Das Passwort ist als sicherer Hash gespeichert
- Fehlgeschlagene Versuche werden protokolliert
### Systemhärtung
- Kernel-Parameter für erhöhte Sicherheit
- SSH-Härtung mit Fail2Ban
- Firewall-Konfiguration (UFW)
- Automatische Sicherheitsupdates
### Überwachung
- Audit-Logs für Systemzugriffe
- Monitoring verdächtiger Prozesse
- Integritätsprüfung des Dateisystems
- Automatische Benachrichtigungen bei Sicherheitsereignissen
## Netzwerksicherheit
### Firewall-Regeln
```bash
# Eingehende Verbindungen
Port 22 (SSH) - Nur von lokalen Netzwerken
Port 80 (HTTP) - Für Web-Interface
Port 443 (HTTPS) - Für sichere Verbindungen
# Ausgehende Verbindungen
Nur notwendige Dienste erlaubt
```
### Rate Limiting
- Login-Versuche: 5 pro Minute
- API-Aufrufe: 200 pro Tag, 50 pro Stunde
- Automatische IP-Sperrung bei Missbrauch
## Authentifizierung
### Benutzerrollen
- **Admin**: Vollzugriff auf alle Funktionen
- **User**: Eingeschränkter Zugriff auf eigene Daten
- **Kiosk**: Nur Anzeige-Berechtigung
### Session-Management
- Sichere Session-Cookies
- Automatische Abmeldung nach Inaktivität
- CSRF-Schutz für alle Formulare
## Datenschutz
### Verschlüsselung
- Passwörter mit bcrypt gehashed
- HTTPS für alle Verbindungen
- Sichere Cookie-Einstellungen
### Logging
- Keine sensiblen Daten in Logs
- Strukturierte Logs für Audit-Zwecke
- Automatische Log-Rotation
## Kiosk-Deaktivierung
### Notfall-Deaktivierung
1. Zugriff auf Terminal (Strg+Alt+T)
2. API-Aufruf: `POST /api/kiosk/deactivate`
3. Passwort eingeben: `744563017196A`
4. System wird automatisch neu gestartet
### Manuelle Deaktivierung
```bash
# Service stoppen
sudo systemctl stop myp-kiosk
sudo systemctl disable myp-kiosk
# Desktop wiederherstellen
sudo systemctl set-default graphical.target
# Neustart
sudo reboot
```
## Wartung
### Regelmäßige Aufgaben
- Sicherheitsupdates installieren
- Log-Dateien überprüfen
- Backup-Integrität testen
- Benutzerkonten auditieren
### Monitoring-Befehle
```bash
# System-Status
systemctl status myp-kiosk
systemctl status myp-backend
# Logs überprüfen
journalctl -u myp-kiosk -f
tail -f /var/log/myp/security.log
# Netzwerk-Status
ufw status
fail2ban-client status
```
## Incident Response
### Bei Sicherheitsvorfällen
1. System isolieren (Netzwerk trennen)
2. Logs sichern
3. Forensische Analyse
4. System neu aufsetzen
5. Sicherheitsmaßnahmen verstärken
### Kontakte
- IT-Sicherheit: security@mercedes-benz.com
- System-Administrator: admin@mercedes-benz.com
- Notfall-Hotline: +49 711 17-0
## Compliance
### Standards
- ISO 27001 Informationssicherheit
- DSGVO Datenschutz
- Mercedes-Benz IT-Sicherheitsrichtlinien
### Audit-Anforderungen
- Monatliche Sicherheitsberichte
- Jährliche Penetrationstests
- Kontinuierliche Vulnerability-Scans
## Konfiguration
### Sicherheitsparameter
```python
# Flask-Konfiguration
SECRET_KEY = "zufälliger-256-bit-schlüssel"
SESSION_COOKIE_SECURE = True
SESSION_COOKIE_HTTPONLY = True
SESSION_COOKIE_SAMESITE = 'Lax'
# Rate Limiting
RATELIMIT_STORAGE_URL = "redis://localhost:6379"
RATELIMIT_DEFAULT = "200 per day, 50 per hour"
```
### Systemparameter
```bash
# Kernel-Härtung
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
```
## Troubleshooting
### Häufige Probleme
1. **Kiosk startet nicht**: Service-Status prüfen
2. **Passwort funktioniert nicht**: Hash-Integrität überprüfen
3. **Netzwerk blockiert**: Firewall-Regeln kontrollieren
### Debug-Modus
```bash
# Kiosk im Debug-Modus starten
sudo systemctl stop myp-kiosk
sudo -u kiosk /opt/myp/kiosk/start_kiosk.sh --debug
```
---
**WICHTIG**: Diese Dokumentation enthält sicherheitskritische Informationen und darf nur autorisierten Personen zugänglich gemacht werden.

View File

@@ -1,276 +0,0 @@
# Datenbank-Verbesserungen - MYP System
## Übersicht
Das MYP-System wurde mit umfassenden Datenbank-Verbesserungen ausgestattet, die Stabilität, Sicherheit und Performance erheblich steigern. Diese Dokumentation beschreibt alle implementierten Features.
## 🚀 Implementierte Features
### 1. Write-Ahead Logging (WAL)
- **Aktiviert**: SQLite WAL-Modus für bessere Concurrency
- **Vorteile**:
- Gleichzeitige Lese- und Schreiboperationen
- Bessere Performance bei hoher Last
- Reduzierte Sperrzeiten
- **Konfiguration**: Automatisch aktiviert in `models.py`
### 2. Connection Pooling
- **Engine-Optimierung**: Konfigurierte SQLAlchemy-Engine mit Pooling
- **Parameter**:
- Pool-Größe: 20 Verbindungen
- Max Overflow: 30 zusätzliche Verbindungen
- Connection Timeout: 30 Sekunden
- Pool Recycle: 3600 Sekunden
### 3. Intelligentes Caching-System
- **Thread-sicherer Cache**: Implementiert mit `threading.local()`
- **Cache-Strategien**:
- User-Daten: 5-10 Minuten
- Printer-Status: 1-2 Minuten
- Job-Daten: 30 Sekunden - 5 Minuten
- Statistiken: 10 Minuten
- **Cache-Invalidierung**: Automatisch bei Datenänderungen
### 4. Automatisches Backup-System
- **Tägliche Backups**: Automatisch um Mitternacht
- **Komprimierung**: Gzip-Komprimierung für Speichereffizienz
- **Rotation**: Automatische Bereinigung alter Backups (30 Tage)
- **Manueller Trigger**: Admin-Interface für sofortige Backups
### 5. Datenbank-Monitoring
- **Gesundheitsprüfung**: Integritätschecks und Performance-Monitoring
- **Statistiken**: Detaillierte DB-Metriken
- **Wartungsalerts**: Automatische Benachrichtigungen bei Problemen
### 6. Automatische Wartung
- **Scheduler**: Hintergrund-Thread für Wartungsaufgaben
- **Operationen**:
- ANALYZE für Query-Optimierung
- WAL-Checkpoints
- Incremental Vacuum
- PRAGMA optimize
## 📁 Dateistruktur
```
backend/app/
├── models.py # Erweiterte Modelle mit Caching
├── utils/
│ └── database_utils.py # Backup & Monitoring Utilities
├── database/
│ ├── myp_database.db # Hauptdatenbank
│ ├── myp_database.db-wal # WAL-Datei
│ ├── myp_database.db-shm # Shared Memory
│ └── backups/ # Backup-Verzeichnis
│ ├── myp_backup_20241201_120000.db.gz
│ └── ...
```
## 🔧 Konfiguration
### SQLite-Optimierungen
```sql
PRAGMA journal_mode = WAL;
PRAGMA synchronous = NORMAL;
PRAGMA cache_size = -64000; # 64MB Cache
PRAGMA temp_store = MEMORY;
PRAGMA mmap_size = 268435456; # 256MB Memory Map
PRAGMA foreign_keys = ON;
```
### Cache-Konfiguration
```python
# Cache-Zeiten (Sekunden)
USER_CACHE_TIME = 300 # 5 Minuten
PRINTER_CACHE_TIME = 120 # 2 Minuten
JOB_CACHE_TIME = 180 # 3 Minuten
STATS_CACHE_TIME = 600 # 10 Minuten
```
## 🛠 API-Endpunkte
### Datenbank-Statistiken
```http
GET /api/admin/database/stats
```
**Response:**
```json
{
"success": true,
"stats": {
"database_size_mb": 15.2,
"wal_size_mb": 2.1,
"journal_mode": "wal",
"cache_size": -64000,
"table_counts": {
"users": 25,
"printers": 8,
"jobs": 1247
}
}
}
```
### Gesundheitsprüfung
```http
GET /api/admin/database/health
```
**Response:**
```json
{
"success": true,
"health": {
"status": "healthy",
"issues": [],
"recommendations": []
}
}
```
### Backup erstellen
```http
POST /api/admin/database/backup
Content-Type: application/json
{
"compress": true
}
```
### Backup-Liste abrufen
```http
GET /api/admin/database/backups
```
### Backup wiederherstellen
```http
POST /api/admin/database/backup/restore
Content-Type: application/json
{
"backup_path": "/path/to/backup.db.gz"
}
```
### Datenbank optimieren
```http
POST /api/admin/database/optimize
```
### Alte Backups bereinigen
```http
POST /api/admin/database/backup/cleanup
Content-Type: application/json
{
"keep_days": 30
}
```
## 📊 Performance-Verbesserungen
### Vor den Verbesserungen
- Einzelne DB-Verbindung
- Keine Caching-Mechanismen
- Manuelle Backups erforderlich
- Keine Performance-Überwachung
### Nach den Verbesserungen
- **50-80% schnellere Abfragen** durch Caching
- **Verbesserte Concurrency** durch WAL-Modus
- **Automatische Wartung** reduziert manuelle Eingriffe
- **Proaktive Überwachung** verhindert Ausfälle
## 🔒 Sicherheitsfeatures
### Backup-Sicherheit
- Komprimierte Backups reduzieren Speicherbedarf
- Automatische Rotation verhindert Speicherüberläufe
- Sicherheitsbackup vor Wiederherstellung
### Zugriffskontrolle
- Alle Admin-Endpunkte erfordern Admin-Berechtigung
- Pfad-Validierung bei Backup-Operationen
- Fehlerbehandlung mit detailliertem Logging
### Datenintegrität
- Regelmäßige Integritätsprüfungen
- WAL-Modus verhindert Datenverlust
- Foreign Key Constraints aktiviert
## 🚨 Monitoring & Alerts
### Automatische Überwachung
- **WAL-Dateigröße**: Alert bei >100MB
- **Freier Speicherplatz**: Warnung bei <1GB
- **Integritätsprüfung**: Tägliche Checks
- **Performance-Metriken**: Kontinuierliche Sammlung
### Log-Kategorien
```
[DATABASE] - Allgemeine Datenbank-Operationen
[BACKUP] - Backup-Operationen
[CACHE] - Cache-Operationen
[MAINTENANCE] - Wartungsaufgaben
[HEALTH] - Gesundheitsprüfungen
```
## 🔄 Wartungsplan
### Automatisch (Hintergrund)
- **Täglich**: Backup, Optimierung, Gesundheitsprüfung
- **Wöchentlich**: Bereinigung alter Backups
- **Stündlich**: Cache-Bereinigung, WAL-Checkpoints
### Manuell (Admin-Interface)
- Sofortige Backups vor kritischen Änderungen
- Manuelle Optimierung bei Performance-Problemen
- Backup-Wiederherstellung bei Datenverlust
## 📈 Metriken & KPIs
### Performance-Indikatoren
- Durchschnittliche Query-Zeit
- Cache-Hit-Rate
- WAL-Checkpoint-Häufigkeit
- Backup-Erfolgsrate
### Kapazitätsplanung
- Datenbankwachstum pro Monat
- Backup-Speicherverbrauch
- Cache-Effizienz
## 🛡 Disaster Recovery
### Backup-Strategie
1. **Tägliche automatische Backups**
2. **30-Tage Aufbewahrung**
3. **Komprimierte Speicherung**
4. **Schnelle Wiederherstellung**
### Recovery-Prozess
1. System stoppen
2. Backup auswählen
3. Wiederherstellung durchführen
4. Integritätsprüfung
5. System neu starten
## 🎯 Nächste Schritte
### Geplante Erweiterungen
- [ ] Replikation für High Availability
- [ ] Erweiterte Metriken-Dashboard
- [ ] Automatische Performance-Tuning
- [ ] Cloud-Backup-Integration
### Optimierungsmöglichkeiten
- [ ] Adaptive Cache-Größen
- [ ] Intelligente Backup-Zeitpunkte
- [ ] Predictive Maintenance
- [ ] Real-time Monitoring Dashboard
---
**Status**: Vollständig implementiert und getestet
**Version**: 2.0
**Letzte Aktualisierung**: Dezember 2024

View File

@@ -1,127 +0,0 @@
# MYP Platform - 3D-Drucker Reservierungssystem
Ein Reservierungssystem für 3D-Drucker, das automatisch TP-Link Tapo P110 Smart Plugs steuert, um die Stromversorgung von Druckern basierend auf den reservierten Zeitslots zu verwalten.
## Features
- Reservierung von 3D-Druckern für bestimmte Zeiträume
- Automatische Steuerung der TP-Link Tapo P110 Smart Plugs
- Echtzeit-Überwachung von laufenden Druckaufträgen
- Administrationsbereich für Druckerverwaltung
- Benutzerauthentifizierung und Autorisierung
- Statistiken zu Druckaufträgen und Materialverbrauch
- Dark Mode für eine angenehme Nutzung bei schlechten Lichtverhältnissen
- Responsive Design für verschiedene Gerätegrößen
## Technologie-Stack
- **Backend**: Python 3.11 mit Flask
- **Frontend**: HTML/CSS/JavaScript mit Tailwind CSS
- **Datenbank**: SQLite mit SQLAlchemy ORM
- **Authentifizierung**: Flask-Login
- **Hardware-Integration**: PyP100 für Tapo Smart Plug Steuerung
- **Automatisierung**: Integrierter Job-Scheduler für Drucker-Steuerung
## Systemanforderungen
- Python 3.11+
- Node.js und npm (für Tailwind CSS)
- Netzwerkzugang zu TP-Link Tapo P110 Smart Plugs
- Unterstützte Betriebssysteme: Linux, Windows, macOS
## Installation
1. **Repository klonen**:
```bash
git clone <repository-url>
cd myp-platform
```
2. **Python-Abhängigkeiten installieren**:
```bash
cd backend/app
pip install -r requirements.txt
```
3. **Node-Abhängigkeiten installieren und CSS bauen**:
```bash
npm install
npm run build:css
```
4. **Datenbank initialisieren**:
```bash
python init_db.py
```
5. **Server starten**:
```bash
# Standardstart
python app.py
# Oder mit spezifischem Port (empfohlen)
python app.py --port=5000
```
## API Endpunkte
| Methode | Endpunkt | Beschreibung |
|---------|------------------------|--------------------------------------------------------|
| GET | /api/jobs | Gibt alle Jobs (für Admins) oder eigene Jobs zurück |
| GET | /api/jobs/active | Gibt alle aktiven Druckaufträge zurück |
| GET | /api/jobs/{id} | Gibt Details zu einem bestimmten Job zurück |
| POST | /api/jobs | Erstellt eine neue Druckerreservierung |
| GET | /api/printers | Gibt alle verfügbaren Drucker zurück |
## Scheduler
Das System enthält einen eingebauten Scheduler, der automatisch:
- Drucker einschaltet, wenn ein Auftrag beginnt
- Drucker ausschaltet, wenn ein Auftrag endet
- Den Status von Druckern aktualisiert
- Die Auftragsstatistiken sammelt
## Konfiguration
Die Konfiguration erfolgt über die Datei `config/settings.py`. Wichtige Einstellungen umfassen:
- Datenbankpfad
- Tapo-Zugangsdaten
- Drucker-Konfigurationen
- Logging-Einstellungen
- Webserver-Einstellungen
## CSS-System
Die Anwendung nutzt Tailwind CSS für das Styling mit separaten Dateien für Light- und Dark-Mode.
### Tailwind Build
```bash
# CSS bauen
npm run build:css
# CSS im Watch-Modus (für Entwicklung)
npm run watch:css
```
## Sicherheit
- Nur angemeldete Benutzer können Druckaufträge erstellen
- Nur Besitzer eines Druckauftrags können diesen verwalten
- Nur Administratoren haben Zugriff auf alle Jobs und Systemeinstellungen
- Passwörter werden mit bcrypt gesichert
## Fehlerbehandlung und Logging
Das System führt detaillierte Logs in folgenden Kategorien:
- App-Log (allgemeine Anwendungslogs)
- Auth-Log (Authentifizierungsereignisse)
- Jobs-Log (Druckauftragsoperationen)
- Printer-Log (Druckerstatusänderungen)
- Scheduler-Log (Automatisierungsaktionen)
- Error-Log (Fehlerprotokollierung)
## Entwicklung
Diese Anwendung ist für den Offline-Betrieb konzipiert und verwendet keine externen CDNs.
Weitere Informationen zur Entwicklungsumgebung finden Sie in der `TAILWIND_SETUP.md`.

View File

@@ -18,35 +18,21 @@ class AdminLiveDashboard {
}
detectApiBaseUrl() {
// Versuche verschiedene Ports zu erkennen
const currentHost = window.location.hostname;
const currentPort = window.location.port;
const currentProtocol = window.location.protocol;
const currentPort = window.location.port;
console.log('🔍 Aktuelle URL-Informationen:', {
host: currentHost,
port: currentPort,
protocol: currentProtocol,
fullUrl: window.location.href
});
console.log('🔍 Live Dashboard API URL Detection:', { currentHost, currentProtocol, currentPort });
// Wenn wir bereits auf dem richtigen Port sind, verwende relative URLs
if (currentPort === '5000' || !currentPort) {
console.log('✅ Verwende relative URLs (gleicher Port oder Standard)');
if (currentPort === '443' || !currentPort) {
console.log('✅ Verwende relative URLs (HTTPS Port 443)');
return '';
}
// Wenn wir auf 8443 sind, versuche 5000 (häufiger Fall)
if (currentPort === '8443') {
const fallbackUrl = `http://${currentHost}:5000`;
console.log('🔄 Fallback von HTTPS:8443 zu HTTP:5000:', fallbackUrl);
return fallbackUrl;
}
// Für andere Ports, verwende Standard-Backend-Port
const defaultPort = currentProtocol === 'https:' ? '8443' : '5000';
const fallbackUrl = `${currentProtocol}//${currentHost}:${defaultPort}`;
console.log('🔄 Standard-Fallback:', fallbackUrl);
// Für alle anderen Fälle, verwende HTTPS auf Port 443
const fallbackUrl = `https://${currentHost}`;
console.log('🔄 Fallback zu HTTPS:443:', fallbackUrl);
return fallbackUrl;
}

View File

@@ -12,34 +12,20 @@ let csrfToken;
// Dynamische API-Base-URL-Erkennung
function detectApiBaseUrl() {
const currentHost = window.location.hostname;
const currentPort = window.location.port;
const currentProtocol = window.location.protocol;
const currentPort = window.location.port;
console.log('🔍 Admin API URL-Informationen:', {
host: currentHost,
port: currentPort,
protocol: currentProtocol,
fullUrl: window.location.href
});
console.log('🔍 Admin API URL Detection:', { currentHost, currentProtocol, currentPort });
// Wenn wir bereits auf dem richtigen Port sind, verwende relative URLs
if (currentPort === '5000' || !currentPort) {
console.log('✅ Verwende relative URLs (gleicher Port oder Standard)');
if (currentPort === '443' || !currentPort) {
console.log('✅ Verwende relative URLs (HTTPS Port 443)');
return '';
}
// Wenn wir auf 8443 sind, versuche 5000 (häufiger Fall)
if (currentPort === '8443') {
const fallbackUrl = `http://${currentHost}:5000`;
console.log('🔄 Admin Fallback von HTTPS:8443 zu HTTP:5000:', fallbackUrl);
return fallbackUrl;
}
// Für andere Ports, verwende Standard-Backend-Port
const defaultPort = currentProtocol === 'https:' ? '8443' : '5000';
const fallbackUrl = `${currentProtocol}//${currentHost}:${defaultPort}`;
console.log('🔄 Admin Standard-Fallback:', fallbackUrl);
// Für alle anderen Fälle, verwende HTTPS auf Port 443
const fallbackUrl = `https://${currentHost}`;
console.log('🔄 Admin Fallback zu HTTPS:443:', fallbackUrl);
return fallbackUrl;
}

30
backend/myp.service Normal file
View File

@@ -0,0 +1,30 @@
[Unit]
Description=MYP Reservation Platform Backend
After=network.target
Wants=network.target
[Service]
Type=simple
User=user
Group=user
WorkingDirectory=/home/user/Projektarbeit-MYP/backend/app
Environment=PYTHONPATH=/home/user/Projektarbeit-MYP/backend/app
Environment=FLASK_ENV=production
Environment=FLASK_APP=app.py
ExecStart=/home/user/Projektarbeit-MYP/backend/venv/bin/python3 app.py --host 0.0.0.0 --port 443 --cert certs/backend.crt --key certs/backend.key
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=myp-backend
# Security settings
NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/home/user/Projektarbeit-MYP/backend/app/logs
ReadWritePaths=/home/user/Projektarbeit-MYP/backend/app/database
[Install]
WantedBy=multi-user.target