# v2-Docker Projekt Journal ## Projektübersicht Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker-basierter Architektur. ### Technische Anforderungen - **Lokaler Betrieb**: Docker mit 4GB RAM und 40GB Speicher - **Internet-Zugriff**: - Admin Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com - API Server: https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com - **Datenbank**: PostgreSQL mit 2 Admin-Usern (rac00n, w@rh@mm3r) - **Ziel**: PoC für spätere VPS-Migration --- ## Aktueller Stand (2025-01-06) ### ✅ Implementiert 1. **Docker-Infrastruktur** - docker-compose.yaml mit 3 Services (PostgreSQL, Admin Panel, License Server) - Interne Bridge-Netzwerkkommunikation - Resource Limits konfiguriert (2 CPUs, 4GB RAM pro Service) 2. **PostgreSQL Datenbank** - Tabellen: customers, licenses - Init-Script vorhanden - Persistente Datenspeicherung 3. **Admin Panel (Basis)** - Flask-Anwendung mit Session-Management - Login-Funktionalität für 2 Admin-User - Lizenz-Erstellungsformular - Automatische Kundenerstellung - Läuft auf Port 443 mit selbstsigniertem SSL ### ❌ Noch nicht implementiert 1. **License Server API** - Nur Platzhalter-Container vorhanden - Keine API-Endpunkte - Keine Lizenzvalidierung - Kein Heartbeat/Session-Management 2. **Admin Panel Erweiterungen** - Keine Lizenzübersicht - Keine Bearbeitungs-/Löschfunktionen - Keine Kundenverwaltung - Kein UTF-8 Support für deutsche Umlaute 3. **Internet-Zugriff** - Kein Reverse Proxy - Keine gültigen SSL-Zertifikate - Subdomain-Routing nicht konfiguriert --- ## Offene Aufgaben (Priorität) ### 🔴 Hoch 1. **UTF-8 Support** für deutsche Sonderzeichen (äöüß) 2. **Reverse Proxy Setup** (Nginx/Traefik) für Subdomain-Routing 3. **SSL-Zertifikate** (Let's Encrypt) für beide Subdomains 4. **License Server API implementieren** - `/api/version` - Versionscheck - `/api/validate` - Lizenzvalidierung - `/api/heartbeat` - Session-Management 5. **Admin Panel: Lizenzübersicht** ### 🟡 Mittel 1. **Admin Panel: Lizenz bearbeiten/löschen** 2. **Admin Panel: Kundenverwaltung** 3. **Session-Tracking** (nur eine aktive Session pro Lizenz) 4. **Logging-System** für Audit-Trail ### 🟢 Niedrig 1. **Email-Benachrichtigungen** 2. **JWT-Authentifizierung für API** 3. **Backup-Strategie** 4. **VPS-Migrationsdokumentation** --- ## Bekannte Probleme 1. PostgreSQL Volume-Pfad wurde von absolutem Windows-Pfad auf Docker Volume geändert 2. Duplizierte .env Datei in templates/ Ordner 3. Credentials im Klartext in .env Dateien 4. Selbstsignierte SSL-Zertifikate verursachen Browser-Warnungen --- ## Nächste Schritte 1. UTF-8 Support implementieren 2. Reverse Proxy mit SSL einrichten 3. Admin Panel Funktionalität erweitern 4. License Server API entwickeln --- ## Änderungsprotokoll ### 2025-01-06 - Journal erstellt - Initialer Projektstand dokumentiert - Aufgabenliste priorisiert - Technische Anforderungen festgehalten ### 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" - Dockerfile mit deutschen Locale-Einstellungen (de_DE.UTF-8) - PostgreSQL Container mit UTF-8 Initialisierung - init.sql mit SET client_encoding = 'UTF8' **Geänderte Dateien:** - v2_adminpanel/app.py - v2_adminpanel/templates/index.html - v2_adminpanel/init.sql - v2_adminpanel/Dockerfile - v2/docker-compose.yaml **Nächster Test:** - Container neu bauen und starten - Kundennamen mit Umlauten testen (z.B. "Müller GmbH", "Björn Schäfer") - Email mit Umlauten testen ### 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) - Farbcodierung für verschiedene Status - Navigation zwischen Lizenz erstellen und Übersicht **Neue Features:** - Anzeige aller Lizenzen mit Kundeninformationen - Status-Anzeige basierend auf Ablaufdatum - Unterscheidung zwischen Voll- und Testversion - Responsive Tabelle mit Bootstrap - Link von Dashboard zur Übersicht und zurück **Geänderte/Neue Dateien:** - v2_adminpanel/app.py (neue Route hinzugefügt) - v2_adminpanel/templates/licenses.html (neu erstellt) - v2_adminpanel/templates/index.html (Navigation ergänzt) **Nächster Test:** - Container neu starten - Mehrere Lizenzen mit verschiedenen Ablaufdaten erstellen - Lizenzübersicht unter /licenses aufrufen ### 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 - Lösch-Bestätigung per JavaScript confirm() - Kunde kann nicht geändert werden (nur Lizenzdetails) **Neue Features:** - `/license/edit/` - Bearbeitungsformular - `/license/delete/` - Lizenz löschen (POST) - Aktionen-Spalte in der Lizenzübersicht - Buttons für Bearbeiten und Löschen - Checkbox für Aktiv-Status **Geänderte/Neue Dateien:** - v2_adminpanel/app.py (edit_license und delete_license Routen) - v2_adminpanel/templates/licenses.html (Aktionen-Spalte hinzugefügt) - v2_adminpanel/templates/edit_license.html (neu erstellt) **Sicherheit:** - Login-Required für alle Aktionen - POST-only für Löschvorgänge - Bestätigungsdialog vor dem Löschen ### 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 - Bearbeitungsseite zeigt alle Lizenzen des Kunden **Neue Features:** - `/customers` - Kundenübersicht mit Statistiken - `/customer/edit/` - Kunde bearbeiten (Name, E-Mail) - `/customer/delete/` - Kunde löschen (nur ohne Lizenzen) - Navigation zwischen allen drei Hauptbereichen - Anzeige der Kundenlizenzen beim Bearbeiten **Geänderte/Neue Dateien:** - v2_adminpanel/app.py (customers, edit_customer, delete_customer Routen) - v2_adminpanel/templates/customers.html (neu erstellt) - v2_adminpanel/templates/edit_customer.html (neu erstellt) - v2_adminpanel/templates/index.html (Navigation erweitert) - v2_adminpanel/templates/licenses.html (Navigation erweitert) **Besonderheiten:** - Lösch-Button ist deaktiviert, wenn Kunde Lizenzen hat - Aktive Lizenzen werden separat gezählt (nicht abgelaufen + aktiv) - UTF-8 Support für Kundennamen mit Umlauten ### 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 - Routing angepasst: Dashboard (/) und Lizenz erstellen (/create) **Neue Features:** - Statistik-Karten: Kunden, Lizenzen gesamt, Aktive, Ablaufende - Aufteilung nach Lizenztypen (Vollversion/Testversion) - Aufteilung nach Status (Aktiv/Abgelaufen) - Top 10 bald ablaufende Lizenzen mit Restlaufzeit - Letzte 5 erstellte Lizenzen mit Status - Hover-Effekt auf Statistik-Karten - Einheitliche Navigation mit Dashboard-Link **Geänderte/Neue Dateien:** - v2_adminpanel/app.py (dashboard() komplett überarbeitet, create_license() Route) - v2_adminpanel/templates/dashboard.html (neu erstellt) - v2_adminpanel/templates/index.html (Navigation erweitert) - v2_adminpanel/templates/licenses.html (Navigation angepasst) - v2_adminpanel/templates/customers.html (Navigation angepasst) **Dashboard-Inhalte:** - 4 Hauptstatistiken als Karten - Lizenztyp-Verteilung - Status-Verteilung - Warnung für bald ablaufende Lizenzen - Übersicht der neuesten Aktivitäten ### 2025-01-06 - Suchfunktion implementiert - Volltextsuche für Lizenzen und Kunden - Case-insensitive Suche mit LIKE-Operator - Suchergebnisse mit Hervorhebung des Suchbegriffs - Suche zurücksetzen Button **Neue Features:** - **Lizenzsuche**: Sucht in Lizenzschlüssel, Kundenname und E-Mail - **Kundensuche**: Sucht in Kundenname und E-Mail - Suchformular mit autofocus für schnelle Eingabe - Anzeige des aktiven Suchbegriffs - Unterschiedliche Meldungen für leere Ergebnisse **Geänderte Dateien:** - v2_adminpanel/app.py (licenses() und customers() mit Suchlogik erweitert) - v2_adminpanel/templates/licenses.html (Suchformular hinzugefügt) - v2_adminpanel/templates/customers.html (Suchformular hinzugefügt) **Technische Details:** - GET-Parameter für Suche - SQL LIKE mit LOWER() für Case-Insensitive Suche - Wildcards (%) für Teilstring-Suche - UTF-8 kompatibel für deutsche Umlaute ### 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 **Neue Features für Lizenzen:** - **Filter nach Typ**: Alle, Vollversion, Testversion - **Filter nach Status**: Alle, Aktiv, Läuft bald ab, Abgelaufen, Deaktiviert - **Kombinierbar mit Suche**: Filter und Suche funktionieren zusammen - **Pagination**: Navigation durch mehrere Seiten - **Ergebnisanzeige**: Zeigt Anzahl gefilterter Ergebnisse **Neue Features für Kunden:** - **Pagination**: 20 Kunden pro Seite - **Seitennavigation**: Erste, Letzte, Vor, Zurück - **Kombiniert mit Suche**: Suchparameter bleiben erhalten **Geänderte Dateien:** - v2_adminpanel/app.py (licenses() und customers() mit Filter/Pagination erweitert) - v2_adminpanel/templates/licenses.html (Filter-Formular und Pagination hinzugefügt) - v2_adminpanel/templates/customers.html (Pagination hinzugefügt) **Technische Details:** - SQL WHERE-Klauseln für Filter - LIMIT/OFFSET für Pagination - URL-Parameter bleiben bei Navigation erhalten - Responsive Bootstrap-Komponenten ### 2025-01-06 - Session-Tracking implementiert - Neue Tabelle für Session-Verwaltung - Anzeige aktiver und beendeter Sessions - Manuelles Beenden von Sessions möglich - Dashboard zeigt Anzahl aktiver Sessions **Neue Features:** - **Sessions-Tabelle**: Speichert Session-ID, IP, User-Agent, Zeitstempel - **Aktive Sessions**: Zeigt alle laufenden Sessions mit Inaktivitätszeit - **Session-Historie**: Letzte 24 Stunden beendeter Sessions - **Session beenden**: Admins können Sessions manuell beenden - **Farbcodierung**: Grün (aktiv), Gelb (>5 Min inaktiv), Rot (lange inaktiv) **Geänderte/Neue Dateien:** - v2_adminpanel/init.sql (sessions Tabelle hinzugefügt) - v2_adminpanel/app.py (sessions() und end_session() Routen) - v2_adminpanel/templates/sessions.html (neu erstellt) - v2_adminpanel/templates/dashboard.html (Session-Statistik) - Alle Templates (Session-Navigation hinzugefügt) **Technische Details:** - Heartbeat-basiertes Tracking (last_heartbeat) - Automatische Inaktivitätsberechnung - Session-Dauer Berechnung - Responsive Tabellen mit Bootstrap **Hinweis:** Die Session-Daten werden erst gefüllt, wenn der License Server API implementiert ist und Clients sich verbinden. ### 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 **Neue Features:** - **Lizenz-Export**: Alle Lizenzen mit Kundeninformationen - **Kunden-Export**: Alle Kunden mit Lizenzstatistiken - **Format-Optionen**: Excel (.xlsx) und CSV (.csv) - **Deutsche Formatierung**: Datum als dd.mm.yyyy, Status auf Deutsch - **UTF-8 Export**: Korrekte Kodierung für Umlaute - **Export-Buttons**: Dropdown-Menüs in Lizenz- und Kundenübersicht **Geänderte Dateien:** - v2_adminpanel/app.py (export_licenses() und export_customers() Routen) - v2_adminpanel/requirements.txt (pandas und openpyxl hinzugefügt) - v2_adminpanel/templates/licenses.html (Export-Dropdown hinzugefügt) - v2_adminpanel/templates/customers.html (Export-Dropdown hinzugefügt) **Technische Details:** - Pandas für Datenverarbeitung - OpenPyXL für Excel-Export - CSV mit Semikolon-Trennung für deutsche Excel-Kompatibilität - Automatische Spaltenbreite in Excel - BOM für UTF-8 CSV (Excel-Kompatibilität)