The Road so far update
Dieser Commit ist enthalten in:
@@ -1,191 +1,108 @@
|
|||||||
# The Road So Far
|
# THE ROAD SO FAR
|
||||||
Stand: 09.06.2025 - 15:39 Uhr
|
**Stand: 09.06.2025, 15:41 MEZ**
|
||||||
|
|
||||||
## 🚀 Aktueller Status
|
## 🚀 Aktueller Status
|
||||||
|
|
||||||
### ✅ Was bereits läuft
|
### ✅ Fertiggestellt
|
||||||
|
|
||||||
1. **Docker-Infrastruktur**
|
**Admin Panel (v2_adminpanel)**
|
||||||
- docker-compose.yaml mit 4 Services (PostgreSQL, Admin Panel, License Server, Nginx)
|
- Vollständig funktionsfähig unter https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
|
||||||
- Interne Bridge-Netzwerkkommunikation
|
- Kundenverwaltung mit UTF-8 Support
|
||||||
- Resource Limits konfiguriert (2 CPUs, 4GB RAM pro Service)
|
- Lizenzverwaltung (Erstellen, Bearbeiten, Löschen)
|
||||||
- Nginx Reverse Proxy für SSL-Termination
|
- 2FA-Authentifizierung
|
||||||
|
- Session-Management mit Audit-Log
|
||||||
|
- Backup-System (verschlüsselt)
|
||||||
|
- IP-Blocking & Rate-Limiting
|
||||||
|
- Resource-Pool Management (Domains, IPs, Telefonnummern)
|
||||||
|
- Export-Funktionen (Excel, CSV)
|
||||||
|
- Batch-Lizenz-Erstellung
|
||||||
|
- Testdaten-Management
|
||||||
|
|
||||||
2. **PostgreSQL Datenbank**
|
**Datenbank (PostgreSQL)**
|
||||||
- Alle Tabellen implementiert (customers, licenses, sessions, audit_log, backup_history, resource_pools, etc.)
|
- Alle Tabellen erstellt und optimiert
|
||||||
- UTF-8 Support mit deutscher Locale (de_DE.UTF-8)
|
- UTF-8 Support vollständig
|
||||||
- Zeitzone Europe/Berlin konfiguriert
|
- Timezone Europe/Berlin
|
||||||
- Persistente Datenspeicherung
|
- Backup-Routinen implementiert
|
||||||
|
|
||||||
3. **Admin Panel (Vollständig implementiert)**
|
**Reverse Proxy (Nginx)**
|
||||||
- Flask-Anwendung mit Session-Management
|
- SSL-Terminierung aktiv
|
||||||
- Login für 2 Admin-User (rac00n, w@rh@mm3r)
|
- Security Headers konfiguriert
|
||||||
- Dashboard mit Statistiken (ohne Testdaten)
|
- Rate Limiting implementiert
|
||||||
- Komplette CRUD-Funktionalität für Lizenzen und Kunden
|
- DynDNS-Routing funktioniert
|
||||||
- Session-Tracking und -Verwaltung
|
|
||||||
- Audit-Log für alle Aktionen
|
|
||||||
- Export-Funktion (CSV/Excel)
|
|
||||||
- Backup-System mit Verschlüsselung
|
|
||||||
- Suche, Filter und Sortierung
|
|
||||||
- Live-Filtering ohne Reload
|
|
||||||
- Bulk-Operationen
|
|
||||||
- Session-Timeout mit Live-Timer (5 Minuten)
|
|
||||||
- 2FA (Two-Factor Authentication)
|
|
||||||
- Passwort-Änderung
|
|
||||||
- Resource Pool Management
|
|
||||||
- **NEU: Test-Flag System für Lizenzen**
|
|
||||||
|
|
||||||
4. **Internet-Zugriff**
|
### ❌ Noch nicht implementiert
|
||||||
- Admin Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com ✅
|
|
||||||
- API: https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com (502 Bad Gateway - License Server fehlt)
|
|
||||||
- IONOS SSL-Zertifikate konfiguriert
|
|
||||||
- DynDNS aktiv
|
|
||||||
- Feste IP: 192.168.178.88
|
|
||||||
|
|
||||||
5. **Sicherheit**
|
**Lizenzserver API (v2_lizenzserver)**
|
||||||
- Rate-Limiting (5 Versuche, dann 24h Sperre)
|
- Container läuft nur als Placeholder
|
||||||
- CAPTCHA nach 2 Fehlversuchen (vorbereitet)
|
- Keine API-Endpoints implementiert
|
||||||
- IP-Verwaltung mit manueller Entsperrung
|
- 502 Bad Gateway bei Zugriff auf https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com
|
||||||
- Security Headers (HSTS, X-Frame-Options, etc.)
|
|
||||||
- Timing-Attack-Schutz
|
|
||||||
|
|
||||||
6. **Resource Pool System**
|
## 📋 TODO-Liste
|
||||||
- Verwaltung von Domains, IPv4-Adressen, Telefonnummern
|
|
||||||
- 3-Status-System: available, allocated, quarantine
|
|
||||||
- UI für Management, Historie, Metriken
|
|
||||||
- Integration in Lizenzerstellung (0-10 Ressourcen pro Typ)
|
|
||||||
|
|
||||||
7. **Test-Daten Management** (ERWEITERT!)
|
### 1. Admin Panel UI-Verbesserungen
|
||||||
- `is_test` Flag für Lizenzen, Kunden und Resource Pools
|
- [ ] **Kombinierte Kunden-Lizenz-Ansicht**: Master-Detail-Layout mit Kundenliste links, Lizenzen rechts
|
||||||
- Testdaten werden in allen Statistiken ausgefiltert
|
- [ ] **Globale Suche**: Eine Suchbox für alles (Kunden, Lizenzen, Keys) mit Autocomplete
|
||||||
- UI-Kennzeichnung mit 🧪 Badge überall
|
- [ ] **Expandable Rows**: Details in Tabelle ausklappen ohne Seitenwechsel
|
||||||
- Filter für "Testdaten" und "Live-Daten"
|
- [ ] **Dark Mode**: Dunkles Theme mit System-Preference Detection
|
||||||
- Automatische Verknüpfung: Test-Kunde → Test-Lizenz → Test-Ressourcen
|
- [ ] **Batch-Import**: CSV/Excel Upload für Massen-Import mit Validierung
|
||||||
- Konsistente Test/Live-Trennung über alle Ebenen
|
- [ ] **Timeline/Calendar View**: Kalenderansicht für Lizenz-Ablaufdaten
|
||||||
- Alle bestehenden Daten als Test markiert (19 Lizenzen, 5 Kunden, 20 Ressourcen)
|
|
||||||
|
|
||||||
### ❌ Was noch fehlt
|
### 2. Lizenzserver-Implementation
|
||||||
|
- [ ] Flask-API erstellen
|
||||||
|
- [ ] Endpoints implementieren:
|
||||||
|
- [ ] `/api/v1/validate` - Lizenzkey-Validierung
|
||||||
|
- [ ] `/api/v1/version` - Versions-Check
|
||||||
|
- [ ] `/api/v1/heartbeat` - Session-Management
|
||||||
|
- [ ] `/api/v1/device/register` - Geräte-Registrierung
|
||||||
|
- [ ] `/api/v1/device/unregister` - Geräte-Abmeldung
|
||||||
|
- [ ] Datenbank-Schema erweitern (devices, heartbeats, api_logs)
|
||||||
|
- [ ] Rate-Limiting für API
|
||||||
|
- [ ] API-Key Authentication
|
||||||
|
|
||||||
1. **License Server API** (Hauptaufgabe!)
|
### 3. Testing & Dokumentation
|
||||||
- Nur Platzhalter-Container vorhanden
|
- [ ] API-Tests schreiben
|
||||||
- Keine API-Endpunkte implementiert
|
- [ ] Integrationstests
|
||||||
- Keine Lizenzvalidierung
|
- [ ] API-Dokumentation (OpenAPI/Swagger)
|
||||||
- Kein Session-Management
|
- [ ] Deployment-Guide aktualisieren
|
||||||
|
|
||||||
## 🎯 Nächste Schritte (Priorität Hoch)
|
## 🎯 Nächste Schritte
|
||||||
|
|
||||||
### Admin Panel Änderungen (NEUE PRIORITÄT!)
|
1. **Priorität 1**: UI-Verbesserungen Admin Panel
|
||||||
|
- Kombinierte Ansicht für bessere UX
|
||||||
|
- Globale Suche für Effizienz
|
||||||
|
|
||||||
1. **Kunden ohne Lizenz anlegen**
|
2. **Priorität 2**: Lizenzserver-API implementieren
|
||||||
- Kundenerstellung ohne Lizenzzwang ermöglichen
|
- Basis-Flask-App aufsetzen
|
||||||
- UI-Anpassung im Customer-Form
|
- Erste Endpoints (validate, version)
|
||||||
- Backend-Validierung anpassen
|
- Datenbank-Verbindung
|
||||||
|
|
||||||
2. **Audit Log IP-Problem beheben**
|
3. **Priorität 3**: Testing & Härtung
|
||||||
- IP-Adressen werden nicht korrekt gespeichert/angezeigt
|
- Umfassende Tests
|
||||||
- Proxy-Header (X-Forwarded-For) korrekt auslesen
|
- Security-Audit
|
||||||
- Real-IP Ermittlung hinter Nginx
|
- Performance-Optimierung
|
||||||
|
|
||||||
3. **E-Mail Benachrichtigungen für ablaufende Lizenzen**
|
## 💡 Notizen für VPS-Migration
|
||||||
- IMAP-Einstellungen im Profil (pro Admin-User)
|
|
||||||
- Benachrichtigungszeitpunkte: 1 Monat, 3 Wochen, 2 Wochen, 1 Woche, 3 Tage, 1 Tag vor Ablauf
|
|
||||||
- Tabelle für IMAP-Settings erstellen
|
|
||||||
- Background-Job für E-Mail-Versand
|
|
||||||
- Template für Ablauf-E-Mails
|
|
||||||
|
|
||||||
4. **Backup-Löschfunktion**
|
- Domain-Wechsel vorbereiten (Environment Variables)
|
||||||
- Delete-Button für Backups hinzufügen
|
- Feste IP statt DynDNS
|
||||||
- Sicherheitsabfrage vor Löschung
|
- Backup-Strategie für Produktion
|
||||||
- Audit-Log Eintrag bei Löschung
|
- Monitoring-Setup planen
|
||||||
|
- SSL-Zertifikate (Let's Encrypt)
|
||||||
|
- Firewall-Regeln dokumentieren
|
||||||
|
|
||||||
### Weitere geplante Features
|
## 🔧 Entwicklungsumgebung
|
||||||
|
|
||||||
1. **Verlängerungs-System im Admin Panel**
|
**Docker-Befehle:**
|
||||||
- Verlängerungs-Vorlagen (manual, standard, upgrade_path, trial_to_full)
|
```bash
|
||||||
- Lizenzbasierte Verlängerungseinstellungen (nicht kundenbasiert)
|
docker-compose down
|
||||||
- Tabelle `renewal_templates` erstellen
|
docker-compose build
|
||||||
- `licenses` Tabelle erweitern (renewal_template, renewal_count)
|
docker-compose up -d
|
||||||
- UI für Verlängerungs-Verwaltung pro Lizenz
|
```
|
||||||
- Bulk-Änderung von Verlängerungseinstellungen
|
|
||||||
- Dashboard-Widget für anstehende Verlängerungen
|
|
||||||
- Verlängerungs-Historie pro Lizenz anzeigen
|
|
||||||
- Automatische Verlängerung nach Vorlage
|
|
||||||
|
|
||||||
5. **Device-Management im Admin Panel** (Vorbereitung für License Server)
|
**Zugriff:**
|
||||||
- `licenses` Tabelle erweitern (max_devices INTEGER DEFAULT 1)
|
- Admin Panel: https://admin-panel-undso.z5m7q9dk3ah2v1plx6ju.com
|
||||||
- UI zum Setzen der Geräte-Limits pro Lizenz
|
- API (geplant): https://api-software-undso.z5m7q9dk3ah2v1plx6ju.com
|
||||||
- Tabelle `device_registrations` erstellen
|
|
||||||
- Geräte-Verwaltung UI (Liste registrierter Geräte pro Lizenz)
|
|
||||||
- Support-Funktionen (Geräte entfernen, zurücksetzen)
|
|
||||||
- Dashboard-Widget für Geräte-Auslastung
|
|
||||||
- Verschiedene Lizenzmodelle (Einzelplatz=1, Team=3, Business=5, Enterprise=unbegrenzt)
|
|
||||||
|
|
||||||
6. **License Server API implementieren**
|
**Test-Accounts:**
|
||||||
- Flask-Anwendung mit PostgreSQL-Anbindung
|
- rac00n / 1248163264
|
||||||
- `/api/version` - Versionscheck
|
- w@rh@mm3r / Warhammer123!
|
||||||
- `/api/validate` - Lizenzvalidierung (mit `is_test` Check)
|
|
||||||
- `/api/heartbeat` - Session-Management
|
|
||||||
- `/api/register-device` - Geräte-Registrierung (NEU!)
|
|
||||||
- Device-Token Generation statt globalem API-Key
|
|
||||||
- Hardware-ID Validierung
|
|
||||||
- API-Key Authentifizierung (oder Device-Token)
|
|
||||||
- Rate Limiting
|
|
||||||
- Dockerfile anpassen
|
|
||||||
- requirements.txt erstellen
|
|
||||||
|
|
||||||
7. **Testing**
|
|
||||||
- API-Endpunkte testen
|
|
||||||
- Integration mit Admin Panel verifizieren
|
|
||||||
- Session-Management prüfen
|
|
||||||
- Test-Flag Funktionalität verifizieren
|
|
||||||
- Device-Registrierung testen
|
|
||||||
|
|
||||||
## 📋 Offene Aufgaben (Priorität Mittel)
|
|
||||||
|
|
||||||
1. **Erweiterte Sicherheit**
|
|
||||||
- IP-Whitelist für Admin-Zugriff
|
|
||||||
- Passwort-Richtlinien (Komplexität, Ablauf)
|
|
||||||
- JWT-Authentifizierung für API
|
|
||||||
|
|
||||||
2. **Lizenz-Features**
|
|
||||||
- Bulk-Import (CSV/Excel Upload)
|
|
||||||
- Lizenz-Templates
|
|
||||||
- Lizenz-Historie
|
|
||||||
- Flexible Geräte-Limits pro Lizenz (verschiedene Lizenzmodelle: Einzelplatz, Team, Business, Enterprise)
|
|
||||||
|
|
||||||
3. **Benachrichtigungen**
|
|
||||||
- E-Mail bei ablaufenden Lizenzen
|
|
||||||
- Dashboard-Benachrichtigungen
|
|
||||||
- Webhook-Support
|
|
||||||
|
|
||||||
## 🔧 Bekannte Probleme
|
|
||||||
|
|
||||||
1. **Credentials im Klartext in .env**
|
|
||||||
- OK für PoC
|
|
||||||
- Muss für Produktion geändert werden (siehe Best Practices im JOURNAL)
|
|
||||||
|
|
||||||
## 💡 Nice-to-have / Dokumentation
|
|
||||||
|
|
||||||
1. **README.md erstellen**
|
|
||||||
- Projektübersicht
|
|
||||||
- Installation
|
|
||||||
- Quick Start
|
|
||||||
|
|
||||||
2. **API_DOCS.md**
|
|
||||||
- License Server API Dokumentation
|
|
||||||
- Beispiel-Requests
|
|
||||||
- Response-Formate
|
|
||||||
|
|
||||||
3. **Weitere Features**
|
|
||||||
- Dark Mode
|
|
||||||
- Mobile Optimierung
|
|
||||||
- Mehrsprachigkeit
|
|
||||||
- Grafische Statistiken
|
|
||||||
- Docker Resource-Optimierung
|
|
||||||
|
|
||||||
## 🚀 Deployment-Hinweise
|
|
||||||
|
|
||||||
- **Aktuell**: PoC läuft lokal auf Windows-PC mit Docker
|
|
||||||
- **Ziel**: Migration auf Hetzner VPS
|
|
||||||
- **Wichtig**: Neue Credentials für Produktion generieren!
|
|
||||||
- **Domain**: Wird bei Migration geändert (feste IP statt DynDNS)
|
|
||||||
In neuem Issue referenzieren
Einen Benutzer sperren