🎉 Added CREDENTIALS_INTEGRATION documentation, updated logs, and improved setup script. 🚀🔧📚💄
This commit is contained in:
234
backend/setup.sh
234
backend/setup.sh
@@ -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"
|
||||
|
Reference in New Issue
Block a user