test
This commit is contained in:
@ -1 +1,344 @@
|
||||
|
||||
# 🚀 MYP Frontend Build System
|
||||
|
||||
## Air-Gapped Build System für Mercedes-Benz TBA Marienfelde
|
||||
|
||||
Dieses Build-System ermöglicht die lokale Kompilierung und Optimierung aller Frontend-Assets für den **air-gapped Betrieb** (ohne Internetverbindung).
|
||||
|
||||
---
|
||||
|
||||
## 📋 **Schnellstart**
|
||||
|
||||
### **1. Initial Setup (einmalig mit Internet)**
|
||||
|
||||
```bash
|
||||
# Im backend-Verzeichnis
|
||||
cd backend
|
||||
|
||||
# Dependencies installieren
|
||||
npm install
|
||||
```
|
||||
|
||||
### **2. Build ausführen**
|
||||
|
||||
```bash
|
||||
# Vollständiger Build
|
||||
npm run build
|
||||
|
||||
# Entwicklungsmodus (Watch)
|
||||
npm run dev
|
||||
```
|
||||
|
||||
### **3. Air-Gapped Installation**
|
||||
|
||||
```bash
|
||||
# Für Systeme ohne Internet
|
||||
npm run install:air-gapped
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ **Verfügbare Befehle**
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
|--------|-------------|
|
||||
| `npm run build` | Vollständiger Production-Build |
|
||||
| `npm run build:tailwind` | Nur Tailwind CSS kompilieren |
|
||||
| `npm run build:css` | Alias für build:tailwind |
|
||||
| `npm run build:js` | JavaScript minifizieren |
|
||||
| `npm run watch` | Watch-Modus für Entwicklung |
|
||||
| `npm run dev` | Entwicklungsmodus starten |
|
||||
| `npm run clean` | Build-Artefakte löschen |
|
||||
| `npm run optimize` | Build + Komprimierung |
|
||||
| `npm run compress` | Assets mit gzip komprimieren |
|
||||
| `npm run analyze` | CSS-Analyse und Debug-Output |
|
||||
|
||||
---
|
||||
|
||||
## 📁 **Dateistruktur**
|
||||
|
||||
```
|
||||
backend/
|
||||
├── package.json # Node.js Dependencies
|
||||
├── tailwind.config.js # Tailwind CSS Konfiguration
|
||||
├── postcss.config.js # PostCSS Setup
|
||||
├── scripts/
|
||||
│ └── compress-assets.js # Asset-Komprimierung
|
||||
├── static/
|
||||
│ ├── css/
|
||||
│ │ ├── input.css # Tailwind Source
|
||||
│ │ ├── tailwind.min.css # Kompilierte Ausgabe
|
||||
│ │ └── *.css.gz # Komprimierte Versionen
|
||||
│ └── js/
|
||||
│ ├── *.js # JavaScript Source
|
||||
│ └── *.min.js # Minifizierte Versionen
|
||||
└── templates/ # HTML Templates
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 **Tailwind CSS Konfiguration**
|
||||
|
||||
### **Mercedes-Benz Design System**
|
||||
|
||||
Das Build-System enthält vordefinierte Mercedes-Benz Farben und Komponenten:
|
||||
|
||||
```css
|
||||
/* Verfügbare CSS-Klassen */
|
||||
.btn-mercedes /* Mercedes-Benz Button */
|
||||
.mercedes-form-input /* Formulareingaben */
|
||||
.dashboard-card /* Dashboard-Karten */
|
||||
.glassmorphism /* Glassmorphism-Effekt */
|
||||
```
|
||||
|
||||
### **Custom Farben**
|
||||
|
||||
```css
|
||||
/* Mercedes-Benz Corporate Colors */
|
||||
bg-mercedes-black /* #000000 */
|
||||
bg-mercedes-blue /* #0073ce */
|
||||
bg-mercedes-silver /* #aaa9ad */
|
||||
bg-mercedes-gray /* #5e5e5e */
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 **Air-Gapped Setup**
|
||||
|
||||
### **Schritt 1: Online-Vorbereitung**
|
||||
|
||||
Auf einem System **mit Internet**:
|
||||
|
||||
```bash
|
||||
# 1. Repository klonen
|
||||
git clone <repository-url>
|
||||
cd backend
|
||||
|
||||
# 2. Dependencies installieren
|
||||
npm install
|
||||
|
||||
# 3. Initialen Build erstellen
|
||||
npm run build
|
||||
|
||||
# 4. node_modules packen für Offline-Transfer
|
||||
tar -czf node_modules_backup.tar.gz node_modules/
|
||||
```
|
||||
|
||||
### **Schritt 2: Offline-Installation**
|
||||
|
||||
Auf dem **air-gapped System**:
|
||||
|
||||
```bash
|
||||
# 1. Repository-Dateien übertragen
|
||||
# 2. node_modules entpacken
|
||||
tar -xzf node_modules_backup.tar.gz
|
||||
|
||||
# 3. Lokale Installation versuchen
|
||||
npm run install:air-gapped
|
||||
|
||||
# 4. Build ausführen
|
||||
npm run build
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 **Performance-Optimierung**
|
||||
|
||||
### **Asset-Komprimierung**
|
||||
|
||||
```bash
|
||||
# Komprimiert alle CSS/JS-Dateien mit gzip
|
||||
npm run compress
|
||||
```
|
||||
|
||||
**Ergebnis:**
|
||||
- `tailwind.min.css` (221KB) → `tailwind.min.css.gz` (28KB)
|
||||
- Typische Einsparung: **70-85%**
|
||||
|
||||
### **Production-Build**
|
||||
|
||||
```bash
|
||||
# Für Production-Deployment
|
||||
NODE_ENV=production npm run build
|
||||
```
|
||||
|
||||
**Optimierungen:**
|
||||
- CSS Purging (entfernt ungenutzte Klassen)
|
||||
- Minimierung und Komprimierung
|
||||
- Autoprefixer für Browser-Kompatibilität
|
||||
- Critical CSS Extraction
|
||||
|
||||
---
|
||||
|
||||
## 🚨 **Troubleshooting**
|
||||
|
||||
### **Problem: npm install schlägt fehl**
|
||||
|
||||
```bash
|
||||
# Lösung 1: Cache leeren
|
||||
npm cache clean --force
|
||||
|
||||
# Lösung 2: Offline-Modus verwenden
|
||||
npm install --offline --no-optional
|
||||
|
||||
# Lösung 3: Registry auf lokal setzen
|
||||
npm config set registry http://localhost:4873
|
||||
```
|
||||
|
||||
### **Problem: Tailwind CSS wird nicht kompiliert**
|
||||
|
||||
```bash
|
||||
# 1. Input-Datei prüfen
|
||||
ls -la static/css/input.css
|
||||
|
||||
# 2. Tailwind Config validieren
|
||||
npx tailwindcss --help
|
||||
|
||||
# 3. Manueller Build
|
||||
npx tailwindcss -i ./static/css/input.css -o ./static/css/tailwind.min.css --minify
|
||||
```
|
||||
|
||||
### **Problem: Assets werden nicht komprimiert**
|
||||
|
||||
```bash
|
||||
# 1. Node.js Version prüfen
|
||||
node --version # Sollte >= 18.0.0 sein
|
||||
|
||||
# 2. Skript-Berechtigungen setzen
|
||||
chmod +x scripts/compress-assets.js
|
||||
|
||||
# 3. Manuell ausführen
|
||||
node scripts/compress-assets.js
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔄 **Update-Prozess**
|
||||
|
||||
### **1. Dependencies aktualisieren (mit Internet)**
|
||||
|
||||
```bash
|
||||
# Prüfe auf Updates
|
||||
npm outdated
|
||||
|
||||
# Update alle Dependencies
|
||||
npm update
|
||||
|
||||
# Oder spezifische Pakete
|
||||
npm install tailwindcss@latest
|
||||
```
|
||||
|
||||
### **2. Tailwind CSS erweitern**
|
||||
|
||||
**Neue Komponenten hinzufügen:**
|
||||
|
||||
```javascript
|
||||
// tailwind.config.js
|
||||
module.exports = {
|
||||
// ...
|
||||
plugins: [
|
||||
function({ addComponents }) {
|
||||
addComponents({
|
||||
'.neue-komponente': {
|
||||
// CSS-Eigenschaften
|
||||
}
|
||||
})
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
### **3. Custom CSS erweitern**
|
||||
|
||||
```css
|
||||
/* static/css/input.css */
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
/* Custom Styles */
|
||||
.meine-klasse {
|
||||
/* Eigene CSS-Regeln */
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 **Monitoring & Analytics**
|
||||
|
||||
### **Build-Größe überwachen**
|
||||
|
||||
```bash
|
||||
# CSS-Größe analysieren
|
||||
npm run analyze
|
||||
|
||||
# Detaillierte Bundle-Analyse
|
||||
npx bundlesize
|
||||
```
|
||||
|
||||
### **Performance-Metriken**
|
||||
|
||||
```bash
|
||||
# Komprimierungsstatistiken
|
||||
npm run compress
|
||||
|
||||
# Dateigröße vor/nach
|
||||
ls -lh static/css/tailwind.min.css*
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛡️ **Sicherheit**
|
||||
|
||||
### **Dependency-Scanning**
|
||||
|
||||
```bash
|
||||
# Security-Audit
|
||||
npm audit
|
||||
|
||||
# Automatische Fixes
|
||||
npm audit fix
|
||||
```
|
||||
|
||||
### **Air-Gapped Best Practices**
|
||||
|
||||
1. **Regelmäßige Updates** der node_modules auf Online-System
|
||||
2. **Signatur-Verifizierung** der übertragenen Pakete
|
||||
3. **Isolierte Build-Umgebung** verwenden
|
||||
4. **Backup** der funktionierenden node_modules
|
||||
|
||||
---
|
||||
|
||||
## 📞 **Support**
|
||||
|
||||
### **Häufige Fragen**
|
||||
|
||||
**Q: Kann ich das System ohne Node.js verwenden?**
|
||||
A: Nein, aber die kompilierten Assets funktionieren ohne Node.js.
|
||||
|
||||
**Q: Wie oft sollte ich das Build-System aktualisieren?**
|
||||
A: Alle 3-6 Monate oder bei kritischen Sicherheitsupdates.
|
||||
|
||||
**Q: Funktioniert es auf Windows?**
|
||||
A: Ja, vollständig Windows-kompatibel.
|
||||
|
||||
### **Technische Spezifikationen**
|
||||
|
||||
- **Node.js**: ≥18.0.0
|
||||
- **npm**: ≥9.0.0
|
||||
- **Tailwind CSS**: 3.4.4
|
||||
- **PostCSS**: 8.4.38
|
||||
- **Komprimierung**: gzip Level 9
|
||||
|
||||
---
|
||||
|
||||
## 🎯 **Nächste Schritte**
|
||||
|
||||
1. ✅ Führen Sie `npm install` aus
|
||||
2. ✅ Testen Sie `npm run build`
|
||||
3. ✅ Prüfen Sie die generierten Assets
|
||||
4. ✅ Konfigurieren Sie Ihren Webserver für `.gz`-Dateien
|
||||
5. ✅ Implementieren Sie das Build-System in Ihren CI/CD-Pipeline
|
||||
|
||||
---
|
||||
|
||||
**Mercedes-Benz TBA Marienfelde - Frontend Build System v1.0.0**
|
@ -1,553 +0,0 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
MYP Druckerverwaltung - OPTIMIERTE PRODUKTIONS-VERSION
|
||||
=====================================================
|
||||
|
||||
Standalone Flask App für Raspberry Pi Produktionsbetrieb:
|
||||
- Nur HTTPS Port 443 (kein HTTP Port 5000)
|
||||
- Browser-kompatible SSL-Zertifikate
|
||||
- Optimierte Performance für Kiosk-Modus
|
||||
- Minimale Firewall-Exposition
|
||||
- Keine Proxy-Dependencies
|
||||
|
||||
Version: 5.0.0 Production
|
||||
"""
|
||||
|
||||
import os
|
||||
import sys
|
||||
import ssl
|
||||
import logging
|
||||
import platform
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
# Füge App-Verzeichnis zum Python-Pfad hinzu
|
||||
sys.path.insert(0, '/opt/myp')
|
||||
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
# Import der Haupt-App
|
||||
from app import app, app_logger
|
||||
|
||||
# Flask-Imports für Request-Handling
|
||||
from flask import request, redirect
|
||||
|
||||
# SSL und Sicherheits-Imports
|
||||
from utils.ssl_config import ensure_ssl_certificates, get_ssl_context
|
||||
|
||||
# =========================== PRODUKTIONS-KONFIGURATION ===========================
|
||||
|
||||
class ProductionConfig:
|
||||
"""Optimierte Produktions-Konfiguration für Raspberry Pi"""
|
||||
|
||||
# HTTPS-Only Konfiguration
|
||||
FORCE_HTTPS = True
|
||||
SSL_REQUIRED = True
|
||||
HTTPS_PORT = 443
|
||||
HTTP_DISABLED = True
|
||||
|
||||
# Performance-Optimierungen
|
||||
DEBUG = False
|
||||
TESTING = False
|
||||
OPTIMIZED_MODE = True
|
||||
USE_MINIFIED_ASSETS = True
|
||||
DISABLE_ANIMATIONS = True
|
||||
|
||||
# Sicherheits-Einstellungen
|
||||
SESSION_COOKIE_SECURE = True
|
||||
SESSION_COOKIE_HTTPONLY = True
|
||||
SESSION_COOKIE_SAMESITE = 'Strict'
|
||||
WTF_CSRF_ENABLED = True
|
||||
|
||||
# SSL-Konfiguration
|
||||
SSL_CERT_PATH = '/opt/myp/ssl/cert.pem'
|
||||
SSL_KEY_PATH = '/opt/myp/ssl/key.pem'
|
||||
|
||||
# Firewall-freundliche Konfiguration
|
||||
SINGLE_PORT_MODE = True
|
||||
NO_ADDITIONAL_PORTS = True
|
||||
|
||||
# Wende Produktions-Konfiguration an
|
||||
app.config.from_object(ProductionConfig)
|
||||
|
||||
# =========================== SSL-SETUP ===========================
|
||||
|
||||
def setup_production_ssl():
|
||||
"""Stelle sicher, dass browser-kompatible SSL-Zertifikate vorhanden sind"""
|
||||
|
||||
# Plattform-spezifische SSL-Pfade
|
||||
if platform.system() == 'Windows':
|
||||
ssl_dir = os.path.join(os.path.dirname(__file__), 'ssl')
|
||||
else:
|
||||
ssl_dir = '/opt/myp/ssl'
|
||||
|
||||
cert_file = f'{ssl_dir}/cert.pem'
|
||||
key_file = f'{ssl_dir}/key.pem'
|
||||
|
||||
app_logger.info("🔐 Prüfe SSL-Zertifikate für Produktionsbetrieb...")
|
||||
|
||||
# Erstelle SSL-Verzeichnis
|
||||
os.makedirs(ssl_dir, exist_ok=True)
|
||||
|
||||
# Prüfe ob Zertifikate existieren und gültig sind
|
||||
cert_valid = False
|
||||
if os.path.exists(cert_file) and os.path.exists(key_file):
|
||||
try:
|
||||
# Prüfe Zertifikat-Gültigkeit
|
||||
import subprocess
|
||||
result = subprocess.run([
|
||||
'openssl', 'x509', '-in', cert_file, '-noout', '-checkend', '86400'
|
||||
], capture_output=True, text=True)
|
||||
|
||||
if result.returncode == 0:
|
||||
# Prüfe Browser-Kompatibilität
|
||||
cert_info = subprocess.run([
|
||||
'openssl', 'x509', '-in', cert_file, '-noout', '-text'
|
||||
], capture_output=True, text=True)
|
||||
|
||||
if ('Digital Signature' in cert_info.stdout and
|
||||
'Key Encipherment' in cert_info.stdout and
|
||||
'TLS Web Server Authentication' in cert_info.stdout and
|
||||
'Subject Alternative Name' in cert_info.stdout):
|
||||
cert_valid = True
|
||||
app_logger.info("✅ Browser-kompatible SSL-Zertifikate gefunden")
|
||||
else:
|
||||
app_logger.warning("⚠️ SSL-Zertifikate nicht browser-kompatibel")
|
||||
else:
|
||||
app_logger.warning("⚠️ SSL-Zertifikate abgelaufen")
|
||||
|
||||
except Exception as e:
|
||||
app_logger.warning(f"⚠️ SSL-Zertifikat-Prüfung fehlgeschlagen: {e}")
|
||||
|
||||
# Erstelle neue browser-kompatible Zertifikate falls nötig
|
||||
if not cert_valid:
|
||||
app_logger.info("🔧 Erstelle neue browser-kompatible SSL-Zertifikate...")
|
||||
|
||||
try:
|
||||
# Führe SSL-Fix-Skript aus falls vorhanden
|
||||
ssl_fix_script = '/opt/myp/fix_ssl_raspberry.sh'
|
||||
if os.path.exists(ssl_fix_script):
|
||||
import subprocess
|
||||
result = subprocess.run(['sudo', ssl_fix_script],
|
||||
capture_output=True, text=True, timeout=60)
|
||||
if result.returncode == 0:
|
||||
app_logger.info("✅ SSL-Fix-Skript erfolgreich ausgeführt")
|
||||
else:
|
||||
app_logger.error(f"❌ SSL-Fix-Skript Fehler: {result.stderr}")
|
||||
raise Exception("SSL-Fix-Skript fehlgeschlagen")
|
||||
else:
|
||||
# Fallback: Manuelle SSL-Erstellung
|
||||
create_production_ssl_certificates(ssl_dir)
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"❌ SSL-Zertifikat-Erstellung fehlgeschlagen: {e}")
|
||||
raise
|
||||
|
||||
return cert_file, key_file
|
||||
|
||||
def create_production_ssl_certificates(ssl_dir):
|
||||
"""Erstelle browser-kompatible SSL-Zertifikate plattformübergreifend"""
|
||||
|
||||
app_logger.info("🔧 Erstelle browser-kompatible SSL-Zertifikate...")
|
||||
|
||||
# Versuche OpenSSL (Linux/Raspberry Pi)
|
||||
if platform.system() != 'Windows':
|
||||
try:
|
||||
create_ssl_with_openssl(ssl_dir)
|
||||
return
|
||||
except Exception as e:
|
||||
app_logger.warning(f"⚠️ OpenSSL fehlgeschlagen: {e}")
|
||||
|
||||
# Fallback: Python Cryptography Library (Windows + Linux)
|
||||
try:
|
||||
create_ssl_with_python(ssl_dir)
|
||||
except ImportError as e:
|
||||
app_logger.error("❌ Cryptography Library nicht installiert")
|
||||
app_logger.error("💡 Installiere mit: pip install cryptography")
|
||||
app_logger.error("💡 Dann starte das Skript neu")
|
||||
raise Exception("SSL-Zertifikat-Erstellung erfordert 'cryptography' library")
|
||||
|
||||
def create_ssl_with_openssl(ssl_dir):
|
||||
"""Erstelle SSL-Zertifikate mit OpenSSL"""
|
||||
import subprocess
|
||||
import tempfile
|
||||
|
||||
# OpenSSL-Konfiguration für Browser-Kompatibilität
|
||||
openssl_config = f"""[req]
|
||||
distinguished_name = req_distinguished_name
|
||||
req_extensions = v3_req
|
||||
prompt = no
|
||||
|
||||
[req_distinguished_name]
|
||||
C = DE
|
||||
ST = Baden-Wuerttemberg
|
||||
L = Stuttgart
|
||||
O = Mercedes-Benz AG
|
||||
OU = MYP Druckerverwaltung
|
||||
CN = m040tbaraspi001
|
||||
|
||||
[v3_req]
|
||||
# KRITISCH für Browser-Kompatibilität
|
||||
basicConstraints = critical, CA:FALSE
|
||||
keyUsage = critical, digitalSignature, keyEncipherment, keyAgreement
|
||||
extendedKeyUsage = critical, serverAuth, clientAuth
|
||||
subjectAltName = critical, @alt_names
|
||||
nsCertType = server
|
||||
nsComment = "MYP Production SSL - Browser Compatible"
|
||||
|
||||
[alt_names]
|
||||
# Lokale Entwicklung
|
||||
DNS.1 = localhost
|
||||
DNS.2 = *.localhost
|
||||
IP.1 = 127.0.0.1
|
||||
IP.2 = ::1
|
||||
|
||||
# Raspberry Pi Hostname
|
||||
DNS.3 = m040tbaraspi001
|
||||
DNS.4 = m040tbaraspi001.local
|
||||
DNS.5 = raspberrypi
|
||||
DNS.6 = raspberrypi.local
|
||||
|
||||
# Intranet-Domain
|
||||
DNS.7 = m040tbaraspi001.de040.corpintra.net
|
||||
DNS.8 = *.de040.corpintra.net
|
||||
"""
|
||||
|
||||
# Schreibe Konfiguration in temporäre Datei
|
||||
with tempfile.NamedTemporaryFile(mode='w', suffix='.conf', delete=False) as f:
|
||||
f.write(openssl_config)
|
||||
config_file = f.name
|
||||
|
||||
try:
|
||||
# Generiere Private Key
|
||||
subprocess.run([
|
||||
'openssl', 'genrsa', '-out', f'{ssl_dir}/key.pem', '2048'
|
||||
], check=True, capture_output=True)
|
||||
|
||||
# Generiere browser-kompatibles Zertifikat
|
||||
subprocess.run([
|
||||
'openssl', 'req', '-new', '-x509',
|
||||
'-key', f'{ssl_dir}/key.pem',
|
||||
'-out', f'{ssl_dir}/cert.pem',
|
||||
'-days', '365',
|
||||
'-config', config_file,
|
||||
'-extensions', 'v3_req',
|
||||
'-sha256'
|
||||
], check=True, capture_output=True)
|
||||
|
||||
# Setze korrekte Berechtigungen
|
||||
os.chmod(f'{ssl_dir}/cert.pem', 0o644)
|
||||
os.chmod(f'{ssl_dir}/key.pem', 0o600)
|
||||
|
||||
app_logger.info("✅ Browser-kompatible SSL-Zertifikate mit OpenSSL erstellt")
|
||||
|
||||
finally:
|
||||
# Räume temporäre Datei auf
|
||||
try:
|
||||
os.unlink(config_file)
|
||||
except:
|
||||
pass
|
||||
|
||||
def create_ssl_with_python(ssl_dir):
|
||||
"""Erstelle SSL-Zertifikate mit Python Cryptography Library"""
|
||||
from cryptography import x509
|
||||
from cryptography.x509.oid import NameOID, ExtensionOID
|
||||
from cryptography.hazmat.primitives import hashes, serialization
|
||||
from cryptography.hazmat.primitives.asymmetric import rsa
|
||||
import ipaddress
|
||||
|
||||
app_logger.info("🐍 Erstelle SSL-Zertifikate mit Python Cryptography...")
|
||||
|
||||
# Generiere Private Key
|
||||
private_key = rsa.generate_private_key(
|
||||
public_exponent=65537,
|
||||
key_size=2048,
|
||||
)
|
||||
|
||||
# Subject und Issuer
|
||||
subject = issuer = x509.Name([
|
||||
x509.NameAttribute(NameOID.COUNTRY_NAME, "DE"),
|
||||
x509.NameAttribute(NameOID.STATE_OR_PROVINCE_NAME, "Baden-Wuerttemberg"),
|
||||
x509.NameAttribute(NameOID.LOCALITY_NAME, "Stuttgart"),
|
||||
x509.NameAttribute(NameOID.ORGANIZATION_NAME, "Mercedes-Benz AG"),
|
||||
x509.NameAttribute(NameOID.ORGANIZATIONAL_UNIT_NAME, "MYP Druckerverwaltung"),
|
||||
x509.NameAttribute(NameOID.COMMON_NAME, "m040tbaraspi001"),
|
||||
])
|
||||
|
||||
# Subject Alternative Names für Browser-Kompatibilität
|
||||
san_list = [
|
||||
# Lokale Entwicklung
|
||||
x509.DNSName("localhost"),
|
||||
x509.DNSName("*.localhost"),
|
||||
x509.IPAddress(ipaddress.IPv4Address("127.0.0.1")),
|
||||
x509.IPAddress(ipaddress.IPv6Address("::1")),
|
||||
|
||||
# Raspberry Pi Hostname
|
||||
x509.DNSName("m040tbaraspi001"),
|
||||
x509.DNSName("m040tbaraspi001.local"),
|
||||
x509.DNSName("raspberrypi"),
|
||||
x509.DNSName("raspberrypi.local"),
|
||||
|
||||
# Intranet-Domain
|
||||
x509.DNSName("m040tbaraspi001.de040.corpintra.net"),
|
||||
x509.DNSName("*.de040.corpintra.net"),
|
||||
]
|
||||
|
||||
# Erstelle Zertifikat
|
||||
cert = x509.CertificateBuilder().subject_name(
|
||||
subject
|
||||
).issuer_name(
|
||||
issuer
|
||||
).public_key(
|
||||
private_key.public_key()
|
||||
).serial_number(
|
||||
x509.random_serial_number()
|
||||
).not_valid_before(
|
||||
datetime.now()
|
||||
).not_valid_after(
|
||||
datetime.now() + timedelta(days=365)
|
||||
).add_extension(
|
||||
x509.SubjectAlternativeName(san_list),
|
||||
critical=True,
|
||||
).add_extension(
|
||||
x509.BasicConstraints(ca=False, path_length=None),
|
||||
critical=True,
|
||||
).add_extension(
|
||||
x509.KeyUsage(
|
||||
digital_signature=True,
|
||||
key_encipherment=True,
|
||||
key_agreement=True,
|
||||
key_cert_sign=False,
|
||||
crl_sign=False,
|
||||
content_commitment=False,
|
||||
data_encipherment=False,
|
||||
encipher_only=False,
|
||||
decipher_only=False
|
||||
),
|
||||
critical=True,
|
||||
).add_extension(
|
||||
x509.ExtendedKeyUsage([
|
||||
x509.oid.ExtendedKeyUsageOID.SERVER_AUTH,
|
||||
x509.oid.ExtendedKeyUsageOID.CLIENT_AUTH,
|
||||
]),
|
||||
critical=True,
|
||||
).sign(private_key, hashes.SHA256())
|
||||
|
||||
# Schreibe Private Key
|
||||
with open(f'{ssl_dir}/key.pem', 'wb') as f:
|
||||
f.write(private_key.private_bytes(
|
||||
encoding=serialization.Encoding.PEM,
|
||||
format=serialization.PrivateFormat.PKCS8,
|
||||
encryption_algorithm=serialization.NoEncryption()
|
||||
))
|
||||
|
||||
# Schreibe Zertifikat
|
||||
with open(f'{ssl_dir}/cert.pem', 'wb') as f:
|
||||
f.write(cert.public_bytes(serialization.Encoding.PEM))
|
||||
|
||||
# Setze Berechtigungen falls möglich
|
||||
try:
|
||||
os.chmod(f'{ssl_dir}/cert.pem', 0o644)
|
||||
os.chmod(f'{ssl_dir}/key.pem', 0o600)
|
||||
except:
|
||||
pass # Windows hat andere Berechtigungen
|
||||
|
||||
app_logger.info("✅ Browser-kompatible SSL-Zertifikate mit Python erstellt")
|
||||
|
||||
|
||||
|
||||
# =========================== PRODUKTIONS-SSL-KONTEXT ===========================
|
||||
|
||||
def get_production_ssl_context():
|
||||
"""Erstelle optimierten SSL-Kontext für Produktionsbetrieb"""
|
||||
|
||||
cert_file, key_file = setup_production_ssl()
|
||||
|
||||
# Erstelle SSL-Kontext mit optimalen Einstellungen
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||
|
||||
# Lade Zertifikat und Key
|
||||
context.load_cert_chain(cert_file, key_file)
|
||||
|
||||
# Optimale SSL-Einstellungen für Browser-Kompatibilität
|
||||
context.set_ciphers('ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:!aNULL:!MD5:!DSS')
|
||||
context.options |= ssl.OP_NO_SSLv2
|
||||
context.options |= ssl.OP_NO_SSLv3
|
||||
context.options |= ssl.OP_NO_TLSv1
|
||||
context.options |= ssl.OP_NO_TLSv1_1
|
||||
context.options |= ssl.OP_SINGLE_DH_USE
|
||||
context.options |= ssl.OP_SINGLE_ECDH_USE
|
||||
|
||||
# Deaktiviere Kompression (CRIME-Angriff-Schutz)
|
||||
context.options |= ssl.OP_NO_COMPRESSION
|
||||
|
||||
app_logger.info("✅ Produktions-SSL-Kontext konfiguriert")
|
||||
return context
|
||||
|
||||
# =========================== HTTPS-REDIRECT MIDDLEWARE ===========================
|
||||
|
||||
@app.before_request
|
||||
def force_https():
|
||||
"""Erzwinge HTTPS für alle Anfragen"""
|
||||
if not request.is_secure and app.config.get('FORCE_HTTPS', False):
|
||||
# Redirect zu HTTPS
|
||||
url = request.url.replace('http://', 'https://', 1)
|
||||
# Ändere Port zu 443 falls anders
|
||||
if ':5000' in url:
|
||||
url = url.replace(':5000', ':443')
|
||||
elif ':80' in url:
|
||||
url = url.replace(':80', ':443')
|
||||
|
||||
return redirect(url, code=301)
|
||||
|
||||
# =========================== SICHERHEITS-HEADERS ===========================
|
||||
|
||||
@app.after_request
|
||||
def add_security_headers(response):
|
||||
"""Füge Sicherheits-Headers für Produktionsbetrieb hinzu"""
|
||||
|
||||
# HTTPS-Sicherheits-Headers
|
||||
response.headers['Strict-Transport-Security'] = 'max-age=31536000; includeSubDomains'
|
||||
response.headers['X-Content-Type-Options'] = 'nosniff'
|
||||
response.headers['X-Frame-Options'] = 'SAMEORIGIN'
|
||||
response.headers['X-XSS-Protection'] = '1; mode=block'
|
||||
response.headers['Referrer-Policy'] = 'strict-origin-when-cross-origin'
|
||||
|
||||
# Content Security Policy für Kiosk-Modus
|
||||
csp = (
|
||||
"default-src 'self'; "
|
||||
"script-src 'self' 'unsafe-inline' 'unsafe-eval'; "
|
||||
"style-src 'self' 'unsafe-inline'; "
|
||||
"img-src 'self' data: blob:; "
|
||||
"font-src 'self'; "
|
||||
"connect-src 'self'; "
|
||||
"frame-ancestors 'self'"
|
||||
)
|
||||
response.headers['Content-Security-Policy'] = csp
|
||||
|
||||
# Cache-Control für statische Assets
|
||||
if request.endpoint and 'static' in request.endpoint:
|
||||
response.headers['Cache-Control'] = 'public, max-age=31536000'
|
||||
|
||||
return response
|
||||
|
||||
# =========================== PRODUKTIONS-LOGGING ===========================
|
||||
|
||||
def setup_production_logging():
|
||||
"""Konfiguriere optimiertes Logging für Produktionsbetrieb"""
|
||||
|
||||
# Reduziere Log-Level für Performance
|
||||
logging.getLogger('werkzeug').setLevel(logging.WARNING)
|
||||
logging.getLogger('urllib3').setLevel(logging.WARNING)
|
||||
|
||||
# Produktions-Log-Format
|
||||
formatter = logging.Formatter(
|
||||
'%(asctime)s [%(levelname)s] %(name)s: %(message)s',
|
||||
datefmt='%Y-%m-%d %H:%M:%S'
|
||||
)
|
||||
|
||||
# Stelle sicher, dass App-Logger korrekt konfiguriert ist
|
||||
app_logger.setLevel(logging.INFO)
|
||||
|
||||
# Entferne Debug-Handler falls vorhanden
|
||||
for handler in app_logger.handlers[:]:
|
||||
if handler.level == logging.DEBUG:
|
||||
app_logger.removeHandler(handler)
|
||||
|
||||
app_logger.info("✅ Produktions-Logging konfiguriert")
|
||||
|
||||
# =========================== HAUPTFUNKTION ===========================
|
||||
|
||||
def main():
|
||||
"""Hauptfunktion für Produktions-Server"""
|
||||
|
||||
try:
|
||||
app_logger.info("🚀 MYP Produktions-Server startet...")
|
||||
app_logger.info(f"📅 Start-Zeit: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
|
||||
app_logger.info(f"🖥️ Hostname: {platform.node()}")
|
||||
app_logger.info(f"🐍 Python: {sys.version}")
|
||||
|
||||
# Produktions-Logging einrichten
|
||||
setup_production_logging()
|
||||
|
||||
# Prüfe Root-Berechtigung für Port 443 (nur Unix/Linux)
|
||||
if hasattr(os, 'geteuid') and os.geteuid() != 0:
|
||||
app_logger.error("❌ Root-Berechtigung erforderlich für Port 443")
|
||||
app_logger.error("💡 Führe aus mit: sudo python3 app_production.py")
|
||||
sys.exit(1)
|
||||
elif platform.system() == 'Windows':
|
||||
app_logger.info("🪟 Windows-Modus: Root-Check übersprungen")
|
||||
|
||||
# SSL-Kontext erstellen
|
||||
ssl_context = get_production_ssl_context()
|
||||
|
||||
# Datenbank initialisieren (aus Haupt-App)
|
||||
from app import init_database, create_initial_admin
|
||||
init_database()
|
||||
create_initial_admin()
|
||||
|
||||
# Queue Manager und Scheduler starten
|
||||
from app import start_queue_manager, get_job_scheduler
|
||||
start_queue_manager()
|
||||
|
||||
scheduler = get_job_scheduler()
|
||||
if scheduler:
|
||||
scheduler.start()
|
||||
app_logger.info("✅ Job-Scheduler gestartet")
|
||||
|
||||
# Server-Konfiguration
|
||||
host = '0.0.0.0' # Alle Interfaces
|
||||
port = 443 # Nur HTTPS Port 443
|
||||
|
||||
app_logger.info("🔐 HTTPS-Only Produktions-Modus")
|
||||
app_logger.info(f"🌐 Server läuft auf: https://{host}:{port}")
|
||||
app_logger.info(f"🏠 Lokaler Zugriff: https://localhost")
|
||||
app_logger.info(f"🌍 Intranet-Zugriff: https://m040tbaraspi001.de040.corpintra.net")
|
||||
app_logger.info("🔥 Firewall: Nur Port 443 erforderlich")
|
||||
app_logger.info("🛡️ SSL-Zertifikate: Browser-kompatibel")
|
||||
|
||||
# Starte Flask-Server mit SSL
|
||||
app.run(
|
||||
host=host,
|
||||
port=port,
|
||||
ssl_context=ssl_context,
|
||||
threaded=True,
|
||||
debug=False,
|
||||
use_reloader=False
|
||||
)
|
||||
|
||||
except PermissionError:
|
||||
app_logger.error("❌ Berechtigung verweigert für Port 443")
|
||||
if platform.system() != 'Windows':
|
||||
app_logger.error("💡 Führe aus mit: sudo python3 app_production.py")
|
||||
else:
|
||||
app_logger.error("💡 Führe als Administrator aus")
|
||||
sys.exit(1)
|
||||
|
||||
except OSError as e:
|
||||
if "Address already in use" in str(e):
|
||||
app_logger.error("❌ Port 443 bereits belegt")
|
||||
app_logger.error("💡 Stoppe andere Services: sudo systemctl stop apache2 nginx")
|
||||
else:
|
||||
app_logger.error(f"❌ Netzwerk-Fehler: {e}")
|
||||
sys.exit(1)
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"❌ Kritischer Fehler beim Server-Start: {e}")
|
||||
import traceback
|
||||
app_logger.error(f"Traceback: {traceback.format_exc()}")
|
||||
sys.exit(1)
|
||||
|
||||
finally:
|
||||
# Cleanup
|
||||
try:
|
||||
from app import stop_queue_manager, cleanup_rate_limiter
|
||||
stop_queue_manager()
|
||||
if 'scheduler' in locals() and scheduler:
|
||||
scheduler.shutdown()
|
||||
cleanup_rate_limiter()
|
||||
app_logger.info("✅ Cleanup abgeschlossen")
|
||||
except:
|
||||
pass
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
@ -12,7 +12,7 @@ Group=root
|
||||
WorkingDirectory=/opt/myp
|
||||
|
||||
# Produktions-App mit HTTPS-Only auf Port 443
|
||||
ExecStart=/usr/bin/python3 /opt/myp/app_production.py
|
||||
ExecStart=/usr/bin/python3 /opt/myp/app.py
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
StartLimitBurst=5
|
||||
|
433
project_files.csv
Normal file
433
project_files.csv
Normal file
@ -0,0 +1,433 @@
|
||||
"FullName","Length"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\.claude\settings.local.json","353"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\.claude\settings.local.json","665"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\app.py","71183"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\admin_unified.py","70727"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\api_simple.py","7032"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\auth.py","14580"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\calendar.py","64547"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\deprecated\admin.py","11757"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\deprecated\admin_api.py","21574"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\deprecated\user.py","14143"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\deprecated\users.py","7371"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\guest.py","45048"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\jobs.py","23842"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\kiosk.py","7452"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\printers.py","37925"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\sessions.py","5276"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\tapo_control.py","14471"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\uploads.py","17878"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\blueprints\user_management.py","27504"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\BUILD_SYSTEM_README.md","7297"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\CLAUDE.md","13150"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\config\__init__.py","1942"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\config\app_config.py","5566"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\config\security.py","2344"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\config\settings.py","6631"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\database\__init__.py","85"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\debug\debug_admin.py","7045"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\COMMON_ERRORS.md","16154"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\CREDENTIALS_INTEGRATION.md","6701"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\EINFACHE_ANLEITUNG.md","1964"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\MYP_BENUTZERHANDBUCH.md","15082"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\MYP_SYSTEMDOKUMENTATION.md","11825"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\PRODUCTION_HTTPS_SETUP.md","6754"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\RASPBERRY_PI_PERFORMANCE.md","14555"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\README.md","8123"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\SETUP_IMPROVEMENTS.md","6937"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\SETUP_README.md","7463"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\TAPO_CONTROL.md","6978"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\TESTPROTOKOLL_ANLEITUNG.md","4584"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\Testprotokoll_Kompakt_20250605_003014.md","4871"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\Testprotokoll_Kompakt_20250605_010121.md","343"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\Testprotokoll_Raw_20250605_003014.json","25494"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\docs\Testprotokoll_Raw_20250605_010121.json","3809"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\legacy\app_original.py","387821"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\models.py","80305"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\package.json","2011"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\package-lock.json","161501"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\postcss.config.js","560"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\README.md","14481"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\requirements.txt","2070"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\compress-assets.js","8519"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\quick_unicode_fix.py","4764"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\README.md","2013"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\requirements_screenshot_tool.txt","1589"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\screenshot_config.json","2852"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\screenshot_tool.py","30633"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\scripts\test_protocol_generator.py","19016"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\setup\create_test_tapo_printers.py","3166"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\setup\setup_https_only.sh","27100"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\setup\setup_tapo_outlets.py","5215"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\setup_https_only.sh","27100"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\ssl\fix_ssl_browser.py","8862"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\ssl\QUICK_SSL_FIX.md","4563"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\ssl\RASPBERRY_PI_SSL_FIX.md","7723"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\ssl\ssl_fix.py","7373"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\start_development.py","1"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\start_production.py","6780"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\animations-optimized.css","1479"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\animations-optimized.min.css","659"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\build\critical.css","2118"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\build\kiosk-1656af86.css","16203"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\build\kiosk-7db6c4e3.css","16203"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\build\kiosk-no-fa.css","16141"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\build\kiosk-production.css","16203"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\caching-optimizations.css","5765"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\caching-optimizations.min.css","3565"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\components.css","17232"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\components.min.css","13062"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\components-optimized.css","15052"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\components-optimized.min.css","11242"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\core-utilities.css","1974"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\core-utilities.min.css","1221"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\critical-inline.min.css","1399"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\dist\combined-optimized.css","225249"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\dist\output-optimized.css","200736"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\glassmorphism.css","5172"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\glassmorphism.min.css","4715"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\glassmorphism-optimized.css","1879"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\glassmorphism-optimized.min.css","1190"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input.css","99414"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input.min.css","77329"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input-original-backup.css","99414"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input-original-backup.min.css","77329"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input-raspberry-balanced.css","15834"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input-raspberry-balanced.min.css","11592"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input-raspberry-optimized.css","17692"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\input-raspberry-optimized.min.css","10775"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\optimization-animations.css","2320"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\optimization-animations.min.css","1443"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\output.css","248934"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\output.min.css","210598"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\performance-optimized.css","4986"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\performance-optimized.min.css","3307"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\printers.css","3952"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\printers.min.css","2502"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\professional-theme.css","21300"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\professional-theme.min.css","18762"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\professional-theme-optimized.css","5866"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\professional-theme-optimized.min.css","3949"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\tailwind.min.css","4469296"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\ui-refinements.css","5606"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\css\ui-refinements.min.css","5606"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\all.css","106394"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\all.min.css","73890"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\brands.css","19852"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\brands.min.css","14574"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\fontawesome.css","83677"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\fontawesome.min.css","56777"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\regular.css","633"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\regular.min.css","580"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\solid.css","625"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\solid.min.css","572"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\svg-with-js.css","12554"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\svg-with-js.min.css","10197"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\v4-font-face.css","1831"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\v4-font-face.min.css","1736"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\v4-shims.css","38514"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\v4-shims.min.css","21211"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\v5-font-face.css","871"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\css\v5-font-face.min.css","794"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\all.js","1627440"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\all.min.js","1530755"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\brands.js","510493"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\brands.min.js","499125"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\conflict-detection.js","38929"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\conflict-detection.min.js","15853"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\fontawesome.js","106548"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\fontawesome.min.js","49856"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\regular.js","126991"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\regular.min.js","119408"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\solid.js","884065"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\solid.min.js","863023"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\v4-shims.js","35459"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\js\v4-shims.min.js","28077"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\LICENSE.txt","7427"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\metadata\categories.yml","54952"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\metadata\icon-families.json","4953977"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\metadata\icon-families.yml","878779"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\metadata\icons.yml","652848"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\metadata\shims.yml","10159"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\metadata\sponsors.yml","28305"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\package.json","709"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\fontawesome\README.md","1363"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\icons\generate_icons.py","2523"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\admin-guest-requests.js","32046"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\admin-guest-requests.min.js","23162"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\admin-panel.js","42961"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\admin-panel.min.js","27749"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\admin-unified.js","57106"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\admin-unified.min.js","35087"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\advanced-components.js","29859"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\advanced-components.min.js","16393"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\auto-logout.js","4661"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\auto-logout.min.js","3099"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts.js","13704"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts.min.js","7671"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts\apexcharts.min.js","524387"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts\chart.min.js","181743"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts\chart-adapter.js","8486"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts\chart-config.js","9767"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\charts\chart-renderer.js","10396"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\conflict-manager.js","31815"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\conflict-manager.min.js","20389"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\core-bundle.min.js","15313"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\core-utilities.js","14921"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\core-utilities.min.js","7694"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\core-utilities-optimized.js","17678"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\core-utilities-optimized.min.js","8630"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\countdown-timer.js","35228"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\countdown-timer.min.js","19014"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\csp-violation-handler.js","10509"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\csp-violation-handler.min.js","6622"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\css-cache-manager.js","3454"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\css-cache-manager.min.js","2471"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\css-cache-service-worker.js","10648"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\css-cache-service-worker.min.js","6895"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\dark-mode.js","11717"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\dark-mode.min.js","7659"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\dark-mode-fix.js","7574"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\dark-mode-fix.min.js","3248"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\dashboard.js","11344"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\dashboard.min.js","8164"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\debug-fix.js","7419"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\debug-fix.min.js","4146"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\event-handlers.js","16020"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\event-handlers.min.js","8399"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\fullcalendar\core.min.js","181411"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\fullcalendar\daygrid.min.js","26955"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\fullcalendar\interaction.min.js","35636"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\fullcalendar\list.min.js","9361"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\fullcalendar\main.min.css","115"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\fullcalendar\timegrid.min.js","31540"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\glassmorphism-notifications.js","62643"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\glassmorphism-notifications.min.js","35476"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\global-refresh-functions.js","26547"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\global-refresh-functions.min.js","14785"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\job-manager.js","31172"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\job-manager.min.js","16598"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\jobs-safety-fix.js","10729"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\jobs-safety-fix.min.js","5270"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\JS_OPTIMIZATION_REPORT.md","11063"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\notifications.js","26568"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\notifications.min.js","16192"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\offline-app.js","20435"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\offline-app.min.js","10758"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\optimization-features.js","33307"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\optimization-features.min.js","19873"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\performance-service-worker.min.js","7730"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\printer_monitor.js","15887"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\printer_monitor.min.js","7574"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\service-worker.js","2205"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\service-worker.min.js","1361"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\session-manager.js","19582"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\session-manager.min.js","10369"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\simple-notifications.js","3188"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\simple-notifications.min.js","2072"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\sw.js","12735"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\sw.min.js","7745"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\ui-components.js","711"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\ui-components.min.js","305"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\user-dropdown.js","1"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\user-dropdown.min.js","0"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\validation-fix.js","9064"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\js\validation-fix.min.js","5182"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\manifest.json","464"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\static\offline.html","3293"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\tailwind.config.js","6632"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\404.html","3518"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\500.html","4536"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin.html","90744"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_add_printer.html","10447"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_add_user.html","27863"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_advanced_settings.html","46986"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_edit_printer.html","18870"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_edit_user.html","32038"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_guest_requests.html","25483"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_guest_requests_overview.html","56311"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_manage_printer.html","10961"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_plug_schedules.html","31371"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_printer_settings.html","7040"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\admin_settings.html","15382"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\analytics.html","28148"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\base.html","69850"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\base-fast.html","12342"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\base-optimized.html","70788"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\base-original-backup.html","73297"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\calendar.html","83364"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\dashboard.html","40186"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\400.html","1749"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\403.html","1366"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\404.html","3518"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\405.html","1737"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\413.html","1728"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\429.html","2166"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\500.html","4471"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\502.html","2145"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\503.html","2594"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\errors\505.html","3521"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_job_status.html","18751"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_request.html","68752"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_requests_by_email.html","16418"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_requests_overview.html","15245"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_start_job.html","18833"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_status.html","17610"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\guest_status_check.html","19497"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\imprint.html","10584"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\index.html","53832"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\jobs.html","90665"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\jobs\new.html","5805"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\legal.html","26066"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\login.html","43967"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\new_job.html","33132"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\printers.html","107082"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\privacy.html","47673"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\profile.html","39497"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\settings.html","48895"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\socket_test.html","21751"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\stats.html","13140"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\tapo_control.html","18544"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\tapo_manual_control.html","15967"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\templates\terms.html","29363"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\__init__.py","24"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\add_hardcoded_printers.py","3359"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\add_test_printers.py","5659"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\advanced_tables.py","32197"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\aktiviere_drucker.py","1006"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\analytics.py","25415"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\backup_manager.py","6623"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\clean_and_add_printers.py","3578"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\config.py","12086"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\conflict_manager.py","27050"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\create_ssl_cert.py","3358"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\create_test_printers.py","3430"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\database_core.py","28713"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\database_migration.py","7723"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\database_schema_migration.py","11410"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\database_utils.py","15922"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\debug_cli.py","25792"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\debug_drucker_erkennung.py","17053"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\debug_guest_requests.py","3214"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\debug_login.py","6987"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\debug_utils.py","13800"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\deprecated\database_cleanup.py","14693"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\deprecated\db_manager.py","4067"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\drag_drop_system.py","52761"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\email_notification.py","5714"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\error_recovery.py","25395"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\file_manager.py","15304"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\file_utils.py","11802"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\fix_csrf.py","668"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\fix_database_immediate.py","9744"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\fix_indentation.py","830"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\fix_session_usage.py","2059"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\form_validation.py","26675"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\init_db.py","743"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\job_scheduler.py","25156"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\logging_config.py","14102"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\maintenance_system.py","32602"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\migrate_db.py","5257"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\migrate_user_settings.py","2898"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\multi_location_system.py","32719"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\offline_config.py","7138"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\optimize_frontend.py","6784"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\performance_monitor.py","1036"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\performance_tracker.py","7027"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\permissions.py","22114"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\printer_monitor.py","17802"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\queue_manager.py","21052"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\quick_fix.py","9522"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\rate_limiter.py","9497"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\realtime_dashboard.py","43794"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\report_generator.py","34627"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\scheduler.py","1139"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\security.py","11427"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\settings.py","11803"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\setup_drucker_db.py","3764"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\shutdown_manager.py","17591"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\ssl_config.py","10252"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\ssl_fix.py","18823"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\ssl_manager.py","10215"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\system_control.py","27564"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\tapo_controller.py","27018"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\template_helpers.py","17998"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_button_functionality.py","8814"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_database_cleanup.py","10104"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_database_fix.py","1636"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_korrekturen.py","1"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_p110.py","5803"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_system_functionality.py","15754"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_tapo_direkt.py","7495"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\test_tapo_sofort.py","4351"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\timeout_force_quit_manager.py","23799"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\timer_manager.py","25697"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\update_printer_locations.py","1837"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\update_printers.py","3556"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\update_requirements.py","10532"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\watchdog_manager.py","22555"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\backend\utils\windows_fixes.py","14738"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\CLAUDE.md","5190"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\CREDENTIALS.md","970"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\KIOSK-SETUP.md","7919"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\LICENSE.md","18482"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\MYP_Backend_Funktionsanalyse_und_Optimierung.md","17592"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\Schulung_MYP_Backend_Bedienung.md","3796"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\SECURITY.md","3079"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\SSL_KONFIGURATION.md","561"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\v2-LEGACY\myp_documentation.md","59424"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\docs\v2-LEGACY\RASPBERRY_PI_SETUP.md","2790"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\dokumentation\berichtshefte\Berichtsheft_Till_Tomczak_Mai_Juni_2025.md","10771"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\dokumentation\berichtshefte\Berichtsheft_Till_Tomczak_Mai_Juni_2025_Realistisch.txt","11295"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\IHK_Projektdokumentation\ChatGPT-Data\ChatGPT_Projektdokumentation.md","90919"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\IHK_Projektdokumentation\ChatGPT-Data\UserPrompts.md","11737"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\IHK_Projektdokumentation\Gamma_AI_Pr?sentations_Prompt.md","4962"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\IHK_Projektdokumentation\Handnotizen_IHK-Dokumentation.md","7517"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\IHK_Projektdokumentation\MYP_Projektdokumentation_Final.md","30933"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\IHK_Projektdokumentation\Verbesserungsanalyse.md","6361"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\biome.json","348"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\components.json","367"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\drizzle.config.ts","322"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\drizzle\meta\_journal.json","222"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\drizzle\meta\0000_snapshot.json","6132"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\package.json","2314"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\pnpm-lock.yaml","161407"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\README.md","17216"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\app\admin\settings\download\route.ts","121"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\app\api\job\[jobId]\remaining-time\route.ts","875"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\app\api\printers\route.ts","170"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\app\auth\login\callback\route.ts","2430"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\app\auth\login\route.ts","517"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\app\globals.css","1474"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\components\ui\use-toast.ts","4142"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\authentication\logout.ts","668"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\printers.ts","2805"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\printJobs.ts","7854"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\timer.ts","129"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\user\delete.ts","1335"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\user\update.ts","1209"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\actions\users.ts","1917"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\auth\index.ts","2061"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\auth\oauth.ts","320"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\auth\permissions.ts","558"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\db\index.ts","271"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\db\migrate.ts","150"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\server\db\schema.ts","2240"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\drizzle.ts","726"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\env.ts","426"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\errors.ts","1103"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\fetch.ts","89"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\guard.ts","1229"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\heimdall.ts","984"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\printers.ts","1002"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\strings.ts","358"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\src\utils\styles.ts","296"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\tailwind.config.ts","6411"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\LEGACY-torben_frontend\tsconfig.json","604"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\MYP_Handbuch_Pr?sentation.md","7547"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\README.md","17862"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\tests\quick_admin_test.py","3189"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\tests\test_admin_live.py","2417"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\tests\test_tapo_comprehensive.py","7293"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\tests\test_tapo_direct.py","1460"
|
||||
"C:\Users\TTOMCZA.EMEA\Dev\Projektarbeit-MYP\tests\test_tapo_route.py","1449"
|
|
Reference in New Issue
Block a user