🎉 Added CREDENTIALS_INTEGRATION documentation, updated logs, and improved setup script. 🚀🔧📚💄

This commit is contained in:
2025-06-10 09:09:47 +02:00
parent 68e87a2740
commit 7854aad0d1
4 changed files with 439 additions and 11 deletions

View File

@@ -29,6 +29,19 @@ AUTO_INSTALL_MODE=""
FORCE_PRODUCTION=false
FORCE_DEVELOPMENT=false
# =========================== CREDENTIALS KONFIGURATION ===========================
# Zentrale Credentials-Verwaltung basierend auf CREDENTIALS.md
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"
# Log-Dateien - verwende relatives logs-Verzeichnis
mkdir -p "$CURRENT_DIR/logs" 2>/dev/null || true
INSTALL_LOG="$CURRENT_DIR/logs/install.log"
@@ -204,6 +217,60 @@ show_help() {
echo -e "${CYAN}=================================================================${NC}"
}
# =========================== CREDENTIALS VALIDIERUNG ===========================
validate_credentials() {
log "=== VALIDIERE CREDENTIALS KONFIGURATION ==="
local validation_errors=0
# Prüfe ob alle wichtigen Credentials gesetzt sind
if [ -z "$MYP_SECRET_KEY" ] || [ ${#MYP_SECRET_KEY} -lt 32 ]; then
error "MYP_SECRET_KEY ist nicht gesetzt oder zu kurz"
((validation_errors++))
fi
if [ -z "$MYP_MAIN_PASSWORD" ] || [ ${#MYP_MAIN_PASSWORD} -lt 8 ]; then
error "MYP_MAIN_PASSWORD ist nicht gesetzt oder zu kurz"
((validation_errors++))
fi
if [ -z "$MYP_SSH_PASSWORD" ] || [ ${#MYP_SSH_PASSWORD} -lt 4 ]; then
error "MYP_SSH_PASSWORD ist nicht gesetzt oder zu kurz"
((validation_errors++))
fi
if [ -z "$MYP_ADMIN_EMAIL" ] || [[ ! "$MYP_ADMIN_EMAIL" =~ @.*\. ]]; then
error "MYP_ADMIN_EMAIL ist nicht gesetzt oder ungültig"
((validation_errors++))
fi
if [ -z "$MYP_TAPO_EMAIL" ] || [[ ! "$MYP_TAPO_EMAIL" =~ @.*\. ]]; then
error "MYP_TAPO_EMAIL ist nicht gesetzt oder ungültig"
((validation_errors++))
fi
if [ -z "$MYP_GITHUB_CLIENT_ID" ] || [ ${#MYP_GITHUB_CLIENT_ID} -lt 16 ]; then
error "MYP_GITHUB_CLIENT_ID ist nicht gesetzt oder zu kurz"
((validation_errors++))
fi
if [ -z "$MYP_GITHUB_CLIENT_SECRET" ] || [ ${#MYP_GITHUB_CLIENT_SECRET} -lt 32 ]; then
error "MYP_GITHUB_CLIENT_SECRET ist nicht gesetzt oder zu kurz"
((validation_errors++))
fi
if [ $validation_errors -eq 0 ]; then
success "✅ Alle Credentials korrekt konfiguriert"
log " 🔑 SECRET_KEY: ${MYP_SECRET_KEY:0:8}... (${#MYP_SECRET_KEY} Zeichen)"
log " 🔒 MAIN_PASSWORD: ${MYP_MAIN_PASSWORD:0:4}... (${#MYP_MAIN_PASSWORD} Zeichen)"
log " 📧 ADMIN_EMAIL: $MYP_ADMIN_EMAIL"
log " 📧 TAPO_EMAIL: $MYP_TAPO_EMAIL"
log " 🐙 GITHUB_CLIENT_ID: ${MYP_GITHUB_CLIENT_ID:0:8}..."
else
error "$validation_errors Credentials-Fehler gefunden - Installation abgebrochen"
fi
}
# =========================== LOG-DATEIEN INITIALISIERUNG ===========================
# Log-Dateien - verwende relatives logs-Verzeichnis (falls noch nicht definiert)
if [ -z "$INSTALL_LOG" ]; then
@@ -3270,6 +3337,142 @@ cleanup_old_files() {
log "✅ Aufräumen abgeschlossen"
}
# =========================== CREDENTIALS DEPLOYMENT ===========================
deploy_credentials() {
log "=== DEPLOYE CREDENTIALS KONFIGURATION ==="
# Erstelle .env-Datei für die Anwendung
progress "Erstelle .env-Datei mit Credentials..."
local env_file="$APP_DIR/.env"
cat > "$env_file" << EOF
# MYP Druckerverwaltung - Automatisch generierte Credentials
# Generiert am: $(date '+%Y-%m-%d %H:%M:%S')
# Setup-Version: $APP_VERSION
# Backend-Konfiguration
SECRET_KEY=$MYP_SECRET_KEY
KIOSK_DEACTIVATION_PASSWORD=$MYP_MAIN_PASSWORD
# Admin-Zugangsdaten
ADMIN_EMAIL=$MYP_ADMIN_EMAIL
ADMIN_PASSWORD=$MYP_MAIN_PASSWORD
# TP-Link Tapo Konfiguration
TAPO_USERNAME=$MYP_TAPO_EMAIL
TAPO_PASSWORD=$MYP_TAPO_PASSWORD
# GitHub OAuth
GITHUB_CLIENT_ID=$MYP_GITHUB_CLIENT_ID
GITHUB_CLIENT_SECRET=$MYP_GITHUB_CLIENT_SECRET
# System-Zugangsdaten (nur für Dokumentation)
SSH_USER=user
SSH_PASSWORD=$MYP_SSH_PASSWORD
RDP_USER=root
RDP_PASSWORD=$MYP_MAIN_PASSWORD
# Router-Zugangsdaten (nur für Dokumentation)
ROUTER_USER=$MYP_ROUTER_USER
ROUTER_PASSWORD=$MYP_ROUTER_PASSWORD
# SSL-Konfiguration
SSL_CERT_PATH=instance/ssl/myp.crt
SSL_KEY_PATH=instance/ssl/myp.key
# Produktions-Konfiguration
FLASK_ENV=production
DEBUG=False
TESTING=False
EOF
# Sichere Berechtigungen setzen
chmod 600 "$env_file" || warning "Konnte Berechtigungen für .env-Datei nicht setzen"
chown root:root "$env_file" 2>/dev/null || warning "Konnte Besitzer für .env-Datei nicht setzen"
# Backup der CREDENTIALS.md erstellen falls vorhanden
if [ -f "$CURRENT_DIR/../docs/CREDENTIALS.md" ]; then
progress "Erstelle Backup der CREDENTIALS.md..."
cp "$CURRENT_DIR/../docs/CREDENTIALS.md" "$APP_DIR/CREDENTIALS_backup.md" 2>/dev/null || true
fi
# Erstelle lokale Credentials-Dokumentation
progress "Erstelle lokale Credentials-Dokumentation..."
cat > "$APP_DIR/CREDENTIALS_LOCAL.md" << EOF
# MYP Druckerverwaltung - Lokale Credentials
**Automatisch generiert am:** $(date '+%Y-%m-%d %H:%M:%S')
**Setup-Version:** $APP_VERSION
**Hostname:** $(hostname)
## 🔐 System-Zugangsdaten
### SSH-Zugang
- **Benutzer:** user
- **Passwort:** $MYP_SSH_PASSWORD
- **Port:** 22
- **Verbindung:** \`ssh user@$(hostname)\`
### RDP-Zugang
- **Benutzer:** root
- **Passwort:** $MYP_MAIN_PASSWORD
- **Port:** 3389
- **Verbindung:** RDP-Client zu \`$(hostname):3389\`
## 🌐 Anwendungs-Credentials
### Backend-Konfiguration
- **SECRET_KEY:** \`${MYP_SECRET_KEY:0:8}...\` (${#MYP_SECRET_KEY} Zeichen)
- **Kiosk-Deaktivierung:** $MYP_MAIN_PASSWORD
### Admin-Zugang
- **E-Mail:** $MYP_ADMIN_EMAIL
- **Passwort:** $MYP_MAIN_PASSWORD
### TP-Link Tapo Steckdosen
- **E-Mail:** $MYP_TAPO_EMAIL
- **Passwort:** $MYP_TAPO_PASSWORD
### GitHub OAuth
- **Client ID:** ${MYP_GITHUB_CLIENT_ID:0:8}...
- **Client Secret:** ${MYP_GITHUB_CLIENT_SECRET:0:8}...
## 🔧 Netzwerk-Konfiguration
### Router-Zugang
- **Benutzer:** $MYP_ROUTER_USER
- **Passwort:** $MYP_ROUTER_PASSWORD
## 📁 Dateien
- **Anwendung:** $APP_DIR
- **SSL-Zertifikat:** $APP_DIR/instance/ssl/myp.crt
- **SSL-Schlüssel:** $APP_DIR/instance/ssl/myp.key
- **Umgebungsvariablen:** $APP_DIR/.env
## ⚠️ Sicherheitshinweise
1. Diese Datei enthält sensible Informationen
2. Zugriff nur für autorisierte Personen
3. Regelmäßige Passwort-Updates empfohlen
4. Backup der Credentials an sicherem Ort
---
**Erstellt durch:** MYP Setup-Skript v$APP_VERSION
EOF
# Sichere Berechtigungen für Dokumentation
chmod 600 "$APP_DIR/CREDENTIALS_LOCAL.md" || warning "Konnte Berechtigungen für Credentials-Dokumentation nicht setzen"
chown root:root "$APP_DIR/CREDENTIALS_LOCAL.md" 2>/dev/null || warning "Konnte Besitzer für Credentials-Dokumentation nicht setzen"
success "✅ Credentials erfolgreich deployed:"
log " 📄 .env-Datei: $env_file"
log " 📋 Lokale Dokumentation: $APP_DIR/CREDENTIALS_LOCAL.md"
log " 🔒 Sichere Berechtigungen gesetzt (600, root:root)"
}
# =========================== AUTOMATISCHE SYSTEM-ERKENNUNG ===========================
# Menü-System entfernt - vollautomatische Installation basierend auf System-Erkennung
@@ -3292,7 +3495,7 @@ install_remote_access() {
if ! id "user" &>/dev/null; then
progress "Erstelle SSH-Benutzer: user"
useradd -m -s /bin/bash user || error "Kann SSH-Benutzer nicht erstellen"
echo "user:raspberry" | chpasswd || error "Kann Passwort für SSH-Benutzer nicht setzen"
echo "user:$MYP_SSH_PASSWORD" | chpasswd || error "Kann Passwort für SSH-Benutzer nicht setzen"
usermod -aG sudo user 2>/dev/null || true
# pip-Konfiguration für SSH-Benutzer
@@ -3314,10 +3517,10 @@ trusted-host = pypi.org
EOF
chown "user:user" "/home/user/.pip/pip.conf" 2>/dev/null || true
log "✅ SSH-Benutzer 'user' erstellt mit Passwort 'raspberry'"
log "✅ SSH-Benutzer 'user' erstellt mit Passwort '$MYP_SSH_PASSWORD'"
else
info "SSH-Benutzer 'user' existiert bereits"
echo "user:raspberry" | chpasswd || warning "Konnte Passwort für SSH-Benutzer nicht aktualisieren"
echo "user:$MYP_SSH_PASSWORD" | chpasswd || warning "Konnte Passwort für SSH-Benutzer nicht aktualisieren"
fi
# RDP-Server (xrdp) installieren - vereinfachter Ansatz
@@ -3451,7 +3654,7 @@ EOF
# Root-Passwort setzen
progress "Setze Root-Passwort für RDP..."
echo "root:744563017196A" | chpasswd || error "Kann Root-Passwort nicht setzen"
echo "root:$MYP_MAIN_PASSWORD" | chpasswd || error "Kann Root-Passwort nicht setzen"
# Log-Verzeichnisse erstellen mit korrekten Berechtigungen
progress "Erstelle Log-Verzeichnisse..."
@@ -3502,12 +3705,12 @@ EOF
# Finaler Status-Check
if systemctl is-active --quiet xrdp && systemctl is-active --quiet xrdp-sesman; then
log "✅ Remote-Zugang vollständig konfiguriert:"
log " 📡 SSH: user:raspberry (Port 22)"
log " 🖥️ RDP: root:744563017196A (Port 3389)"
log " 🖥️ RDP: user:raspberry (Port 3389)"
log " 📡 SSH: user:$MYP_SSH_PASSWORD (Port 22)"
log " 🖥️ RDP: root:$MYP_MAIN_PASSWORD (Port 3389)"
log " 🖥️ RDP: user:$MYP_SSH_PASSWORD (Port 3389)"
elif systemctl is-active --quiet ssh; then
log "✅ SSH-Zugang konfiguriert:"
log " 📡 SSH: user:raspberry (Port 22)"
log " 📡 SSH: user:$MYP_SSH_PASSWORD (Port 22)"
warning "⚠️ RDP-Installation unvollständig"
info "Manuelle Überprüfung erforderlich:"
info " systemctl status xrdp"
@@ -3750,7 +3953,7 @@ test_remote_access() {
info "Zugang-URLs:"
info " SSH: ssh user@$ip_address"
if [ "$xrdp_status" = "✅" ]; then
info " RDP: $ip_address:3389 (root:744563017196A oder user:raspberry)"
info " RDP: $ip_address:3389 (root:$MYP_MAIN_PASSWORD oder user:$MYP_SSH_PASSWORD)"
fi
else
warning "⚠️ Keine Netzwerk-IP ermittelt"
@@ -4068,6 +4271,9 @@ main() {
# Grundlegende Validierung
check_root
# Credentials validieren
validate_credentials
# Automatische Modus-Erkennung
detect_installation_mode "$@"
@@ -4157,6 +4363,9 @@ install_dependencies_only_auto() {
deploy_application
install_npm_dependencies
# Credentials deployen
deploy_credentials
# Berechtigungen für kiosk-User korrigieren
fix_project_permissions
create_permission_fix_script
@@ -4208,6 +4417,9 @@ install_full_production_system_auto() {
deploy_application
install_npm_dependencies
# Credentials deployen
deploy_credentials
# Berechtigungen für kiosk-User korrigieren
fix_project_permissions
create_permission_fix_script
@@ -4275,8 +4487,8 @@ show_final_summary() {
echo ""
echo -e "${BLUE}📋 Was wurde installiert:${NC}"
echo -e " ✅ Vollständige Kiosk-Installation"
echo -e " ✅ Remote-Zugang (RDP: root:744563017196A)"
echo -e " ✅ SSH-Zugang (user: raspberry)"
echo -e " ✅ Remote-Zugang (RDP: root:$MYP_MAIN_PASSWORD)"
echo -e " ✅ SSH-Zugang (user: $MYP_SSH_PASSWORD)"
echo -e " ✅ Automatischer Kiosk-Start beim Boot"
echo -e " ✅ Firewall und Sicherheitskonfiguration"
echo -e " ✅ Performance-Optimierungen"