# MYP Setup-Skript - Credentials Integration

## 🔐 Überblick

Das Setup-Skript wurde erweitert, um alle Credentials aus der `CREDENTIALS.md` zentral zu verwalten und automatisch zu deployen. Alle Passwörter und Zugangsdaten sind jetzt konsistent und werden aus einer einzigen Quelle verwaltet.

## ✨ Neue Features

### 🎯 Zentrale Credentials-Verwaltung
Alle Credentials werden am Anfang des Skripts als `readonly` Variablen definiert:

```bash
# =========================== CREDENTIALS KONFIGURATION ===========================
readonly MYP_SECRET_KEY="7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F"
readonly MYP_MAIN_PASSWORD="744563017196A"
readonly MYP_SSH_PASSWORD="raspberry"
readonly MYP_ADMIN_EMAIL="admin@mercedes-benz.com"
readonly MYP_TAPO_EMAIL="till.tomczak@mercedes-benz.com"
readonly MYP_TAPO_PASSWORD="744563017196A"
readonly MYP_ROUTER_USER="admin"
readonly MYP_ROUTER_PASSWORD="vT6Vsd^p"
readonly MYP_GITHUB_CLIENT_ID="7c5d8bef1a5519ec1fdc"
readonly MYP_GITHUB_CLIENT_SECRET="5f1e586204358fbd53cf5fb7d418b3f06ccab8fd"
```

### 🔍 Automatische Validierung
Das Skript validiert alle Credentials beim Start:

```bash
validate_credentials() {
    # Prüft Länge, Format und Vollständigkeit aller Credentials
    # Bricht Installation bei Fehlern ab
    # Zeigt sichere Zusammenfassung der Credentials
}
```

**Validierungsregeln:**
- `SECRET_KEY`: Mindestens 32 Zeichen
- `MAIN_PASSWORD`: Mindestens 8 Zeichen  
- `SSH_PASSWORD`: Mindestens 4 Zeichen
- E-Mail-Adressen: Gültiges Format mit @ und .
- GitHub Credentials: Mindestlängen für Client ID/Secret

### 📄 Automatisches Deployment
Das Skript erstellt automatisch:

#### 1. `.env`-Datei für die Anwendung
```bash
# Erstellt in /opt/myp/.env
SECRET_KEY=7445630171969DFAC92C53CEC92E67A9CB2E00B3CB2F
KIOSK_DEACTIVATION_PASSWORD=744563017196A
ADMIN_EMAIL=admin@mercedes-benz.com
ADMIN_PASSWORD=744563017196A
TAPO_USERNAME=till.tomczak@mercedes-benz.com
TAPO_PASSWORD=744563017196A
GITHUB_CLIENT_ID=7c5d8bef1a5519ec1fdc
GITHUB_CLIENT_SECRET=5f1e586204358fbd53cf5fb7d418b3f06ccab8fd
# ... weitere Konfiguration
```

#### 2. Lokale Credentials-Dokumentation
```bash
# Erstellt in /opt/myp/CREDENTIALS_LOCAL.md
# Vollständige Dokumentation aller Zugangsdaten
# Sichere Berechtigungen (600, root:root)
```

## 🔄 Konsistente Verwendung

### Vorher (hart kodiert):
```bash
echo "user:raspberry" | chpasswd
echo "root:744563017196A" | chpasswd
log "SSH: user:raspberry (Port 22)"
log "RDP: root:744563017196A (Port 3389)"
```

### Nachher (variablen-basiert):
```bash
echo "user:$MYP_SSH_PASSWORD" | chpasswd
echo "root:$MYP_MAIN_PASSWORD" | chpasswd
log "SSH: user:$MYP_SSH_PASSWORD (Port 22)"
log "RDP: root:$MYP_MAIN_PASSWORD (Port 3389)"
```

## 📋 Credentials-Mapping

| CREDENTIALS.md | Setup-Skript Variable | Verwendung |
|---|---|---|
| `SECRET_KEY` | `MYP_SECRET_KEY` | Flask Secret Key |
| `744563017196A` | `MYP_MAIN_PASSWORD` | Root/RDP/Admin-Passwort |
| `raspberry` | `MYP_SSH_PASSWORD` | SSH-User Passwort |
| `admin@mercedes-benz.com` | `MYP_ADMIN_EMAIL` | Admin-Login |
| `till.tomczak@mercedes-benz.com` | `MYP_TAPO_EMAIL` | Tapo-Steckdosen |
| `vT6Vsd^p` | `MYP_ROUTER_PASSWORD` | Router-Zugang |
| GitHub Client ID | `MYP_GITHUB_CLIENT_ID` | OAuth |
| GitHub Client Secret | `MYP_GITHUB_CLIENT_SECRET` | OAuth |

## 🔒 Sicherheitsfeatures

### Sichere Berechtigungen
```bash
chmod 600 /opt/myp/.env                    # Nur root kann lesen
chmod 600 /opt/myp/CREDENTIALS_LOCAL.md    # Nur root kann lesen
chown root:root /opt/myp/.env               # Root-Besitz
chown root:root /opt/myp/CREDENTIALS_LOCAL.md
```

### Sichere Anzeige
```bash
# Passwörter werden in Logs nur teilweise angezeigt
log "SECRET_KEY: ${MYP_SECRET_KEY:0:8}... (${#MYP_SECRET_KEY} Zeichen)"
log "MAIN_PASSWORD: ${MYP_MAIN_PASSWORD:0:4}... (${#MYP_MAIN_PASSWORD} Zeichen)"
```

### Backup-Erstellung
```bash
# Automatisches Backup der originalen CREDENTIALS.md
cp docs/CREDENTIALS.md /opt/myp/CREDENTIALS_backup.md
```

## 🚀 Installation und Verwendung

### Automatische Integration
Die Credentials-Integration ist vollständig automatisch:

```bash
sudo ./setup.sh
# 1. Validiert alle Credentials
# 2. Deployt .env-Datei
# 3. Erstellt lokale Dokumentation
# 4. Setzt sichere Berechtigungen
# 5. Verwendet Credentials konsistent
```

### Manuelle Überprüfung
```bash
# Credentials-Status prüfen
cat /opt/myp/CREDENTIALS_LOCAL.md

# .env-Datei prüfen (nur als root)
sudo cat /opt/myp/.env

# Validierung testen
sudo bash -c 'source setup.sh && validate_credentials'
```

## 📊 Vorteile

### ✅ Für Administratoren
- **Zentrale Verwaltung** - Alle Credentials an einem Ort
- **Automatische Validierung** - Fehler werden sofort erkannt
- **Konsistente Verwendung** - Keine hart kodierten Werte mehr
- **Sichere Dokumentation** - Lokale Credentials-Übersicht

### ✅ Für Entwickler
- **Einfache Wartung** - Credentials nur an einer Stelle ändern
- **Fehlerreduzierung** - Keine Tippfehler bei Passwörtern
- **Bessere Sicherheit** - Sichere Berechtigungen automatisch
- **Klare Struktur** - Übersichtliche Variable-Namen

### ✅ Für Deployment
- **Automatisierung** - Keine manuelle Konfiguration nötig
- **Konsistenz** - Gleiche Credentials auf allen Systemen
- **Validierung** - Installation bricht bei Fehlern ab
- **Dokumentation** - Automatische lokale Docs

## 🔧 Anpassung

### Credentials ändern
1. **Im Setup-Skript** die Variablen am Anfang anpassen:
   ```bash
   readonly MYP_MAIN_PASSWORD="NEUES_PASSWORT"
   ```

2. **CREDENTIALS.md** entsprechend aktualisieren

3. **Setup erneut ausführen** für Deployment

### Neue Credentials hinzufügen
1. **Variable definieren:**
   ```bash
   readonly MYP_NEW_CREDENTIAL="wert"
   ```

2. **Validierung erweitern:**
   ```bash
   if [ -z "$MYP_NEW_CREDENTIAL" ]; then
       error "MYP_NEW_CREDENTIAL ist nicht gesetzt"
   fi
   ```

3. **Deployment erweitern:**
   ```bash
   echo "NEW_CREDENTIAL=$MYP_NEW_CREDENTIAL" >> .env
   ```

## 📞 Support

Bei Problemen mit Credentials:

1. **Validierung prüfen:** `sudo bash -c 'source setup.sh && validate_credentials'`
2. **Logs überprüfen:** `cat logs/install.log | grep -i credential`
3. **Berechtigungen prüfen:** `ls -la /opt/myp/.env`
4. **Backup verwenden:** `cat /opt/myp/CREDENTIALS_backup.md`

---

**Version:** 5.0.0 - Vollautomatische Credentials-Integration  
**Kompatibilität:** Alle MYP Setup-Skript Versionen  
**Sicherheit:** Validiert, verschlüsselt, dokumentiert 