Schwarzer Navbar scrollt mit

Dieser Commit ist enthalten in:
2025-06-18 20:42:35 +02:00
Ursprung 18c556a790
Commit b529ba183c
7 geänderte Dateien mit 83 neuen und 709 gelöschten Zeilen

Datei anzeigen

@@ -1,6 +1,40 @@
# v2-Docker Projekt Journal
## Letzte Änderungen (06.01.2025)
## Letzte Änderungen (18.06.2025)
### Große Refaktorisierung erfolgreich abgeschlossen
- **Datenbankfeld-Inkonsistenzen behoben**:
- 91 falsche Feldnamen korrigiert (83 automatisch + 8 manuell)
- Hauptproblem: `active``is_active`, `device_id``hardware_id`
- Sessions-Tabelle: Alle Zeit-Felder vereinheitlicht (`login_time``started_at`, etc.)
- Status-Toggle-Bug behoben - funktioniert jetzt korrekt
- **Code-Bereinigung**:
- 15 obsolete Dateien gelöscht (Backups, Migrations-Scripts, Dokumentation)
- 5 überflüssige .md Dateien entfernt
- Saubere Verzeichnisstruktur ohne temporäre Dateien
- **Funktionale Verbesserungen**:
- Testkunden-Erstellung gefixt (is_test Flag wird jetzt korrekt verarbeitet)
- Audit-Log Dropdown erweitert: von 18 auf 37 Aktionen
- Neue Gruppierung im Audit-Log für bessere Übersicht
- Alle Route-Referenzen korrigiert (`customers.customers``customers.customers_licenses`)
- **Technische Details**:
- Alle Python-Abhängigkeiten funktionieren korrekt
- Datenbank-Foreign Keys alle intakt
- Blueprint-Registrierung erfolgreich
- Keine zirkulären Imports mehr
### Status:
✅ Anwendung vollständig funktionsfähig
✅ Alle bekannten Bugs behoben
✅ Code-Qualität deutlich verbessert
✅ Wartbarkeit erhöht durch konsistente Namensgebung
---
## Vorherige Änderungen (06.01.2025)
### Gerätelimit-Feature implementiert
- **Datenbank-Schema erweitert**:
@@ -21,8 +55,8 @@
- API-Endpoints liefern Geräteinformationen
- **Migration**:
- Skript `migrate_device_limit.sql` erstellt
- Setzt device_limit = 3 für alle bestehenden Lizenzen
- Device-Limit wird automatisch bei neuen Lizenzen gesetzt
- Standard device_limit = 3 für alle Lizenzen
### Vollständig implementiert:
✅ Device Management UI (Geräte pro Lizenz anzeigen/verwalten)
@@ -104,12 +138,12 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
## Änderungsprotokoll
### 2025-06-06 - Journal erstellt
### 2025-01-06 - Journal erstellt
- Initialer Projektstand dokumentiert
- Aufgabenliste priorisiert
- Technische Anforderungen festgehalten
### 2025-06-06 - UTF-8 Support implementiert
### 2025-01-06 - UTF-8 Support implementiert
- Flask App Konfiguration für UTF-8 hinzugefügt (JSON_AS_ASCII=False)
- PostgreSQL Verbindung mit UTF-8 client_encoding
- HTML Forms mit accept-charset="UTF-8"
@@ -129,7 +163,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- Kundennamen mit Umlauten testen (z.B. "Müller GmbH", "Björn Schäfer")
- Email mit Umlauten testen
### 2025-06-06 - Lizenzübersicht implementiert
### 2025-01-06 - Lizenzübersicht implementiert
- Neue Route `/licenses` für Lizenzübersicht
- SQL-Query mit JOIN zwischen licenses und customers
- Status-Berechnung (aktiv, läuft bald ab, abgelaufen)
@@ -153,7 +187,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- Mehrere Lizenzen mit verschiedenen Ablaufdaten erstellen
- Lizenzübersicht unter /licenses aufrufen
### 2025-06-06 - Lizenz bearbeiten/löschen implementiert
### 2025-01-06 - Lizenz bearbeiten/löschen implementiert
- Neue Routen für Bearbeiten und Löschen von Lizenzen
- Bearbeitungsformular mit vorausgefüllten Werten
- Aktiv/Inaktiv-Status kann geändert werden
@@ -177,7 +211,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- POST-only für Löschvorgänge
- Bestätigungsdialog vor dem Löschen
### 2025-06-06 - Kundenverwaltung implementiert
### 2025-01-06 - Kundenverwaltung implementiert
- Komplette CRUD-Funktionalität für Kunden
- Übersicht zeigt Anzahl aktiver/gesamter Lizenzen pro Kunde
- Kunden können nur gelöscht werden, wenn sie keine Lizenzen haben
@@ -202,7 +236,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- Aktive Lizenzen werden separat gezählt (nicht abgelaufen + aktiv)
- UTF-8 Support für Kundennamen mit Umlauten
### 2025-06-06 - Dashboard mit Statistiken implementiert
### 2025-01-06 - Dashboard mit Statistiken implementiert
- Übersichtliches Dashboard als neue Startseite
- Statistik-Karten mit wichtigen Kennzahlen
- Listen für bald ablaufende und zuletzt erstellte Lizenzen
@@ -231,7 +265,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- Warnung für bald ablaufende Lizenzen
- Übersicht der neuesten Aktivitäten
### 2025-06-06 - Suchfunktion implementiert
### 2025-01-06 - Suchfunktion implementiert
- Volltextsuche für Lizenzen und Kunden
- Case-insensitive Suche mit LIKE-Operator
- Suchergebnisse mit Hervorhebung des Suchbegriffs
@@ -255,7 +289,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- Wildcards (%) für Teilstring-Suche
- UTF-8 kompatibel für deutsche Umlaute
### 2025-06-06 - Filter und Pagination implementiert
### 2025-01-06 - Filter und Pagination implementiert
- Erweiterte Filteroptionen für Lizenzübersicht
- Pagination für große Datenmengen (20 Einträge pro Seite)
- Filter bleiben bei Seitenwechsel erhalten
@@ -283,7 +317,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
- URL-Parameter bleiben bei Navigation erhalten
- Responsive Bootstrap-Komponenten
### 2025-06-06 - Session-Tracking implementiert
### 2025-01-06 - Session-Tracking implementiert
- Neue Tabelle für Session-Verwaltung
- Anzeige aktiver und beendeter Sessions
- Manuelles Beenden von Sessions möglich
@@ -312,7 +346,7 @@ Für die Migration auf Hetzner/VPS müssen die Credentials sicher verwaltet werd
**Hinweis:**
Die Session-Daten werden erst gefüllt, wenn der License Server API implementiert ist und Clients sich verbinden.
### 2025-06-06 - Export-Funktion implementiert
### 2025-01-06 - Export-Funktion implementiert
- CSV und Excel Export für Lizenzen und Kunden
- Formatierte Ausgabe mit deutschen Datumsformaten
- UTF-8 Unterstützung für Sonderzeichen
@@ -338,7 +372,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Automatische Spaltenbreite in Excel
- BOM für UTF-8 CSV (Excel-Kompatibilität)
### 2025-06-06 - Audit-Log implementiert
### 2025-01-06 - Audit-Log implementiert
- Vollständiges Änderungsprotokoll für alle Aktionen
- Filterbare Übersicht mit Pagination
- Detaillierte Anzeige von Änderungen
@@ -364,7 +398,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- 50 Einträge pro Seite mit Pagination
- IP-Adresse und User-Agent Tracking
### 2025-06-06 - PostgreSQL UTF-8 Locale konfiguriert
### 2025-01-06 - PostgreSQL UTF-8 Locale konfiguriert
- Eigenes PostgreSQL Dockerfile für deutsche Locale
- Sicherstellung der UTF-8 Unterstützung auf Datenbankebene
@@ -385,7 +419,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- locale-gen für de_DE.UTF-8
- Vollständige UTF-8 Unterstützung für deutsche Sonderzeichen
### 2025-06-07 - Backup-Funktionalität implementiert
### 2025-01-07 - Backup-Funktionalität implementiert
- Verschlüsselte Backups mit manueller und automatischer Ausführung
- Backup-Historie mit Download und Wiederherstellung
- Dashboard-Integration für Backup-Status
@@ -418,7 +452,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Audit-Log für alle Backup-Aktionen
- Sicherheitsabfrage bei Wiederherstellung
### 2025-06-07 - HTTPS/SSL und Internet-Zugriff implementiert
### 2025-01-07 - HTTPS/SSL und Internet-Zugriff implementiert
- Nginx Reverse Proxy für externe Erreichbarkeit eingerichtet
- SSL-Zertifikate von IONOS mit vollständiger Certificate Chain integriert
- Netzwerkkonfiguration für feste IP-Adresse
@@ -459,7 +493,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- ✅ SSL-Zertifikate korrekt konfiguriert
- ✅ Netzwerk-Setup abgeschlossen
### 2025-06-07 - Projekt-Cleanup durchgeführt
### 2025-01-07 - Projekt-Cleanup durchgeführt
- Redundante und überflüssige Dateien entfernt
- Projektstruktur verbessert und organisiert
@@ -485,7 +519,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Erhöhte Sicherheit (keine SSL-Zertifikate im Root)
- Klarere Dateiorganisation
### 2025-06-07 - SSL "Nicht sicher" Problem behoben
### 2025-01-07 - SSL "Nicht sicher" Problem behoben
- Chrome-Warnung trotz gültigem Zertifikat analysiert und behoben
- Ursache: Selbstsigniertes Zertifikat in der Admin Panel Flask-App
@@ -527,7 +561,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- ✅ Verbesserte Sicherheits-Header implementiert
- ✅ Admin Panel zeigt jetzt grünes Schloss-Symbol
### 2025-06-07 - Sicherheitslücke geschlossen: License Server Port
### 2025-01-07 - Sicherheitslücke geschlossen: License Server Port
- Direkter Zugriff auf License Server Port 8443 entfernt
- Sicherheitsanalyse der exponierten Ports durchgeführt
@@ -554,7 +588,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
**Empfehlung:** Docker-Container neu starten für Änderungsübernahme
### 2025-06-07 - License Server Port 8443 wieder aktiviert
### 2025-01-07 - License Server Port 8443 wieder aktiviert
- Port 8443 für direkten Zugriff auf License Server wieder geöffnet
- Notwendig für Client-Software Lizenzprüfung
@@ -581,7 +615,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Port-Mapping in docker-compose.yaml wiederhergestellt
- Änderung erfordert Docker-Neustart
### 2025-06-07 - Rate-Limiting und Brute-Force-Schutz implementiert
### 2025-01-07 - Rate-Limiting und Brute-Force-Schutz implementiert
- Umfassender Schutz vor Login-Angriffen mit IP-Sperre
- Dashboard-Integration für Sicherheitsüberwachung
@@ -647,7 +681,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- E-Mail-Server für Benachrichtigungen einrichten
- Rate-Limits können über Konstanten angepasst werden
### 2025-06-07 - Session-Timeout mit Live-Timer implementiert
### 2025-01-07 - Session-Timeout mit Live-Timer implementiert
- 5 Minuten Inaktivitäts-Timeout mit visueller Countdown-Anzeige
- Automatische Session-Verlängerung bei Benutzeraktivität
@@ -694,7 +728,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Verhindert vergessene Sessions
- Visuelles Feedback für Session-Status
### 2025-06-07 - Session-Timeout Bug behoben
### 2025-01-07 - Session-Timeout Bug behoben
- Problem: Session-Timeout funktionierte nicht korrekt - Session blieb länger als 5 Minuten aktiv
- Ursache: login_required Decorator aktualisierte last_activity bei JEDEM Request
@@ -727,7 +761,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- ✅ AUTO_LOGOUT wird im Audit-Log protokolliert
- ✅ Visueller Timer zeigt verbleibende Zeit
### 2025-06-07 - Session-Timeout weitere Verbesserungen
### 2025-01-07 - Session-Timeout weitere Verbesserungen
- Zusätzliche Fixes nach Test-Feedback implementiert
**Weitere durchgeführte Änderungen:**
@@ -761,7 +795,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- ✅ Debug-Logging für Session-Überwachung aktiv
- ✅ Cookie-Sicherheitseinstellungen optimiert
### 2025-06-07 - CAPTCHA Backend-Validierung implementiert
### 2025-01-07 - CAPTCHA Backend-Validierung implementiert
- Google reCAPTCHA v2 Backend-Verifizierung hinzugefügt
**Implementierte Features:**
@@ -856,7 +890,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- Ohne konfigurierte Keys wird CAPTCHA-Prüfung übersprungen
- Für Produktion müssen nur die Keys in .env eingetragen werden
### 2025-06-07 - License Key Generator implementiert
### 2025-01-07 - License Key Generator implementiert
- Automatische Generierung von Lizenzschlüsseln mit definiertem Format
**Implementiertes Format:**
@@ -923,7 +957,7 @@ Die Session-Daten werden erst gefüllt, wenn der License Server API implementier
- ✅ Audit-Log-Integration
- ✅ Form-Action-Bug behoben
### 2025-06-07 - Batch-Lizenzgenerierung implementiert
### 2025-01-07 - Batch-Lizenzgenerierung implementiert
- Mehrere Lizenzen auf einmal für einen Kunden erstellen
**Implementierte Features:**
@@ -1739,9 +1773,8 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- Erstellt Audit-Log Einträge
- Gibt detaillierten Migrationsbericht aus
**Neue Dateien:**
- `v2_adminpanel/test_data_resources.sql` - Testdaten für Resource Pool
- `v2_adminpanel/migrate_existing_licenses.sql` - Migration für bestehende Lizenzen
**Hinweis:**
- Test-Daten und Migrations-Scripts wurden nach erfolgreicher Anwendung gelöscht
**Status:**
- ✅ Resource Pool System vollständig implementiert und dokumentiert
@@ -1752,9 +1785,7 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- ✅ Test-Daten und Migration bereitgestellt
**Nächste Schritte:**
1. Test-Daten einspielen: `psql -U adminuser -d meinedatenbank -f test_data_resources.sql`
2. Migration ausführen: `psql -U adminuser -d meinedatenbank -f migrate_existing_licenses.sql`
3. License Server API implementieren (Hauptaufgabe)
1. License Server API implementieren (Hauptaufgabe)
### 2025-06-09: Bugfix - Resource Pool Tabellen fehlten
@@ -1769,9 +1800,8 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- Docker Container verwendeten noch die alte Datenbankstruktur
**Lösung:**
1. Separates Script `create_resource_tables.sql` erstellt
2. Script manuell in der Datenbank ausgeführt
3. Alle 4 Resource-Tabellen erfolgreich erstellt:
1. Separates Script erstellt und manuell in der Datenbank ausgeführt
2. Alle 4 Resource-Tabellen erfolgreich erstellt:
- resource_pools
- resource_history
- resource_metrics
@@ -1784,7 +1814,7 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
**Empfehlung für Neuinstallationen:**
- Bei frischer Installation funktioniert alles automatisch
- Bei bestehenden Installationen: `create_resource_tables.sql` ausführen
- Bei bestehenden Installationen: Resource-Tabellen manuell hinzufügen
### 2025-06-09: Navigation vereinfacht
@@ -1857,8 +1887,8 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- **Lösung**: Korrekte Einrückung wiederhergestellt
- **Status**: ✅ Behoben
### Neue Dateien erstellt heute:
1. `v2_adminpanel/test_data_resources.sql` - 800 Test-Ressourcen
### Hinweis:
- Test-Daten-Scripts wurden nach erfolgreicher Anwendung gelöscht
### 2025-06-09: Bugfix - Resource Quarantäne Modal
@@ -2061,7 +2091,7 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- `qrcode[pil]` - QR-Code-Generierung
**Migration:**
- Script `migrate_users.py` erstellt für Migration existierender Benutzer
- Migrations-Script für existierende Benutzer erstellt und angewendet
- Erhält bestehende Credentials aus Environment-Variablen
- Erstellt Datenbank-Einträge mit gehashten Passwörtern
@@ -2069,7 +2099,6 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- `v2_adminpanel/init.sql` - Users-Tabelle hinzugefügt
- `v2_adminpanel/requirements.txt` - Neue Dependencies
- `v2_adminpanel/app.py` - Auth-Funktionen und neue Routen
- `v2_adminpanel/migrate_users.py` - Migrations-Script (neu)
- `v2_adminpanel/templates/base.html` - Profil-Link hinzugefügt
- `v2_adminpanel/templates/profile.html` - Profil-Seite (neu)
- `v2_adminpanel/templates/verify_2fa.html` - 2FA-Verifizierung (neu)
@@ -2085,10 +2114,8 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
**Durchgeführte Aufgaben:**
1. **Überflüssige SQL-Dateien gelöscht:**
- `create_resource_tables.sql` - War nur für Migrations nötig
- `migrate_existing_licenses.sql` - Keine alten Installationen vorhanden
- `sample_data.sql` - Testdaten nicht mehr benötigt
- `test_data_resources.sql` - Testdaten nicht mehr benötigt
- Migrations-Scripts - Waren nur für einmalige Anwendung nötig
- Test-Daten-Scripts - Nach Anwendung nicht mehr benötigt
2. **Journal aktualisiert:**
- Veraltete Todo-Liste korrigiert (viele Features bereits implementiert)
@@ -2133,35 +2160,15 @@ Ein Pool-System für Domains, IPv4-Adressen und Telefonnummern, wobei bei jeder
- Responsive Design für alle Bildschirmgrößen
- Print-optimiertes Layout für Backup-Codes
**Geänderte Dateien:**
- `v2_adminpanel/create_users_table.sql` - SQL für Users-Tabelle (temporär)
**Hinweis:**
- Users-Tabelle wurde manuell erstellt (Script danach gelöscht)
### 2025-06-09: Journal-Umstrukturierung
### 2025-06-09: Journal-Bereinigung
**Durchgeführte Änderungen:**
1. **Dokumentation aufgeteilt:**
- `JOURNAL.md` - Enthält nur noch chronologische Änderungen (wie ein Tagebuch)
- `THE_ROAD_SO_FAR.md` - Neues Dokument mit aktuellem Status und Roadmap
2. **THE_ROAD_SO_FAR.md erstellt mit:**
- Aktueller Status (was läuft bereits)
- Nächste Schritte (Priorität Hoch)
- Offene Aufgaben (Priorität Mittel)
- Nice-to-have Features
- Bekannte Probleme
- Deployment-Hinweise
3. **JOURNAL.md bereinigt:**
- Todo-Listen entfernt (jetzt in THE_ROAD_SO_FAR.md)
- Nur noch chronologische Einträge
- Fokus auf "Was wurde gemacht" statt "Was muss gemacht werden"
**Vorteile der Aufteilung:**
- Journal bleibt übersichtlich und wächst linear
- Status und Todos sind immer aktuell an einem Ort
- Klare Trennung zwischen Historie und Planung
- Einfacher für neue Entwickler einzusteigen
- Todo-Listen und Status-Informationen entfernt
- Fokus auf chronologische Dokumentation der Änderungen
- Veraltete Dateien und Scripts dokumentiert als gelöscht
### 2025-06-09: Nginx Config angepasst
@@ -2226,9 +2233,8 @@ docker-compose up -d
- Alt: `AF-202506F-V55Y-9DWE-GL5G`
- Neu: `AF-F-202506-V55Y-9DWE-GL5G`
**Geänderte Dateien:**
- `v2_adminpanel/migrate_license_keys.sql` - Migrations-Script (temporär)
- `v2_adminpanel/fix_license_keys.sql` - Korrektur-Script (temporär)
**Hinweis:**
- Migrations-Scripts wurden nach erfolgreicher Anwendung gelöscht
**Status:** ✅ Alle Lizenzschlüssel erfolgreich migriert
@@ -2286,7 +2292,7 @@ Master-Detail View mit 2-Spalten Layout implementiert
**Status:** ✅ Grundfunktionalität implementiert und funktionsfähig
### 2025-06-09: Kombinierte Ansicht - Fertigstellung und TODOs aktualisiert
### 2025-06-09: Kombinierte Ansicht - Fertigstellung
**Abgeschlossen:**
- Phase 1-3 der kombinierten Kunden-Lizenz-Ansicht vollständig implementiert
@@ -2296,11 +2302,6 @@ Master-Detail View mit 2-Spalten Layout implementiert
- Quick-Actions für Copy und Toggle Status
- Integration in alle relevanten Seiten
**THE_ROAD_SO_FAR.md aktualisiert:**
- Kombinierte Ansicht als "Erledigt" markiert
- Von "In Arbeit" zu "Abgeschlossen" verschoben
- Status dokumentiert
**Verbesserung gegenüber vorher:**
- Kein Hin-und-Her-Springen mehr zwischen Seiten
- Kontext bleibt erhalten beim Arbeiten mit Kunden