Dateien
Hetzner-Backup/JOURNAL.md
2025-06-07 16:01:35 +02:00

12 KiB

v2-Docker Projekt Journal

Projektübersicht

Lizenzmanagement-System für Social Media Account-Erstellungssoftware mit Docker-basierter Architektur.

Technische Anforderungen


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/<id> - Bearbeitungsformular
  • /license/delete/<id> - 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/<id> - Kunde bearbeiten (Name, E-Mail)
  • /customer/delete/<id> - 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)