- Frontend v4 accessible sur réseau local (192.168.1.40) - Ports ouverts: 3002 (frontend), 5001 (backend), 5004 (dashboard) - Ollama GPU fonctionnel - Self-healing interactif - Dashboard confiance Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
219 lines
8.3 KiB
Bash
Executable File
219 lines
8.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# Script de déploiement de la correction api_tokens.py
|
|
# Basé sur le plan approuvé
|
|
|
|
set -e
|
|
|
|
echo "🚀 RPA Vision V3 - Déploiement Correction Authentification"
|
|
echo "==========================================================="
|
|
echo ""
|
|
|
|
# Vérifier qu'on est bien root ou avec sudo
|
|
if [ "$EUID" -ne 0 ]; then
|
|
echo "❌ Ce script doit être exécuté avec sudo"
|
|
echo "Usage: sudo bash deploy_fix.sh"
|
|
exit 1
|
|
fi
|
|
|
|
# ============================================================================
|
|
# ÉTAPE 1 : Sauvegarde du Code Actuel
|
|
# ============================================================================
|
|
echo "📦 ÉTAPE 1/5 : Sauvegarde du code production actuel"
|
|
echo "---------------------------------------------------"
|
|
|
|
BACKUP_DIR="/opt/rpa_vision_v3/core/security.backup_$(date +%Y%m%d_%H%M%S)"
|
|
echo "Création de la sauvegarde dans: $BACKUP_DIR"
|
|
|
|
if [ -d /opt/rpa_vision_v3/core/security ]; then
|
|
cp -r /opt/rpa_vision_v3/core/security "$BACKUP_DIR"
|
|
echo "✅ Sauvegarde créée avec succès"
|
|
else
|
|
echo "❌ Répertoire /opt/rpa_vision_v3/core/security introuvable!"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================================================
|
|
# ÉTAPE 2 : Déploiement du Code Mis à Jour
|
|
# ============================================================================
|
|
echo "📂 ÉTAPE 2/5 : Déploiement du code mis à jour"
|
|
echo "----------------------------------------------"
|
|
|
|
SOURCE_FILE="/home/dom/ai/rpa_vision_v3/core/security/api_tokens.py"
|
|
DEST_FILE="/opt/rpa_vision_v3/core/security/api_tokens.py"
|
|
|
|
if [ ! -f "$SOURCE_FILE" ]; then
|
|
echo "❌ Fichier source introuvable: $SOURCE_FILE"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Copie de $SOURCE_FILE"
|
|
echo " vers $DEST_FILE"
|
|
cp "$SOURCE_FILE" "$DEST_FILE"
|
|
echo "✅ Fichier copié"
|
|
|
|
# Correction des permissions
|
|
echo "Correction des permissions..."
|
|
chown rpa:rpa "$DEST_FILE"
|
|
chmod 644 "$DEST_FILE"
|
|
echo "✅ Permissions configurées (rpa:rpa, 644)"
|
|
echo ""
|
|
|
|
# ============================================================================
|
|
# ÉTAPE 3 : Redémarrage des Services
|
|
# ============================================================================
|
|
echo "🔄 ÉTAPE 3/5 : Redémarrage des services"
|
|
echo "---------------------------------------"
|
|
|
|
echo "Rechargement de la configuration systemd..."
|
|
systemctl daemon-reload
|
|
echo "✅ Configuration rechargée"
|
|
echo ""
|
|
|
|
SERVICES=(
|
|
"rpa-vision-v3-api.service"
|
|
"rpa-vision-v3-worker.service"
|
|
"rpa-vision-v3-dashboard.service"
|
|
)
|
|
|
|
echo "Redémarrage des services..."
|
|
for service in "${SERVICES[@]}"; do
|
|
echo -n " → $service... "
|
|
if systemctl restart "$service" 2>/dev/null; then
|
|
echo "✅"
|
|
else
|
|
echo "❌ ERREUR"
|
|
echo ""
|
|
echo "Erreur lors du redémarrage de $service"
|
|
echo "Voir les logs: sudo journalctl -u $service -n 50"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
echo ""
|
|
echo "⏳ Attente du démarrage complet (5 secondes)..."
|
|
sleep 5
|
|
echo ""
|
|
|
|
# Vérifier le statut des services
|
|
echo "Vérification du statut des services:"
|
|
for service in "${SERVICES[@]}"; do
|
|
status=$(systemctl is-active "$service" 2>/dev/null || echo "failed")
|
|
if [ "$status" = "active" ]; then
|
|
echo " ✅ $service: $status"
|
|
else
|
|
echo " ❌ $service: $status"
|
|
echo " Logs: sudo journalctl -u $service -n 20"
|
|
fi
|
|
done
|
|
echo ""
|
|
|
|
# ============================================================================
|
|
# ÉTAPE 4 : Vérification des Logs
|
|
# ============================================================================
|
|
echo "📋 ÉTAPE 4/5 : Vérification du chargement des tokens"
|
|
echo "----------------------------------------------------"
|
|
|
|
echo "Recherche de 'TokenManager initialized' dans les logs..."
|
|
TOKEN_LOG=$(journalctl -u rpa-vision-v3-api -n 100 --no-pager | grep -i "tokenmanager initialized" | tail -1)
|
|
|
|
if [ -n "$TOKEN_LOG" ]; then
|
|
echo "$TOKEN_LOG"
|
|
|
|
if echo "$TOKEN_LOG" | grep -q "2 admin tokens, 2 read-only tokens"; then
|
|
echo "✅ SUCCÈS : TokenManager a chargé 2 admin tokens et 2 read-only tokens"
|
|
elif echo "$TOKEN_LOG" | grep -q "0 admin tokens"; then
|
|
echo "❌ ÉCHEC : TokenManager affiche 0 admin tokens"
|
|
echo " Le code n'a peut-être pas été mis à jour correctement"
|
|
echo ""
|
|
echo "Vérification du fichier déployé:"
|
|
grep -n "prod_admin_token" "$DEST_FILE" | head -2
|
|
else
|
|
echo "⚠️ AVERTISSEMENT : Nombre de tokens inattendu"
|
|
echo "$TOKEN_LOG"
|
|
fi
|
|
else
|
|
echo "❌ Aucune ligne 'TokenManager initialized' trouvée dans les logs"
|
|
echo " Le service ne s'est peut-être pas démarré correctement"
|
|
echo ""
|
|
echo "Dernières lignes des logs:"
|
|
journalctl -u rpa-vision-v3-api -n 10 --no-pager
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================================================
|
|
# ÉTAPE 5 : Test de l'API
|
|
# ============================================================================
|
|
echo "🌐 ÉTAPE 5/5 : Test de l'authentification API"
|
|
echo "---------------------------------------------"
|
|
|
|
echo "Test 1: Requête sans authentification (devrait retourner unauthorized)"
|
|
RESPONSE_NO_AUTH=$(curl -s http://localhost:8000/api/traces/status 2>/dev/null || echo '{"error":"connection_failed"}')
|
|
echo " Réponse: $RESPONSE_NO_AUTH"
|
|
|
|
if echo "$RESPONSE_NO_AUTH" | grep -q "unauthorized"; then
|
|
echo " ✅ Comportement correct (unauthorized sans token)"
|
|
else
|
|
echo " ⚠️ Réponse inattendue"
|
|
fi
|
|
echo ""
|
|
|
|
echo "Test 2: Requête avec token admin"
|
|
ADMIN_TOKEN="73cf0db73f9a5064e79afebba96c85338be65cc2060b9c1d42c3ea5dd7d4e490"
|
|
RESPONSE_WITH_AUTH=$(curl -s -H "Authorization: Bearer $ADMIN_TOKEN" http://localhost:8000/api/traces/status 2>/dev/null || echo '{"error":"connection_failed"}')
|
|
echo " Réponse: $RESPONSE_WITH_AUTH"
|
|
|
|
if echo "$RESPONSE_WITH_AUTH" | grep -q '"status"'; then
|
|
echo " ✅ SUCCÈS : Authentification fonctionnelle!"
|
|
echo ""
|
|
echo "════════════════════════════════════════════════════════════"
|
|
echo "✅ DÉPLOIEMENT RÉUSSI - Authentification Opérationnelle"
|
|
echo "════════════════════════════════════════════════════════════"
|
|
elif echo "$RESPONSE_WITH_AUTH" | grep -q "unauthorized"; then
|
|
echo " ❌ ÉCHEC : Authentification retourne toujours unauthorized"
|
|
echo ""
|
|
echo "════════════════════════════════════════════════════════════"
|
|
echo "❌ DÉPLOIEMENT INCOMPLET - Investigation Nécessaire"
|
|
echo "════════════════════════════════════════════════════════════"
|
|
echo ""
|
|
echo "💡 Actions de débogage:"
|
|
echo " 1. Vérifier les logs: sudo journalctl -u rpa-vision-v3-api -n 100"
|
|
echo " 2. Vérifier le code déployé: grep -n 'prod_admin_token' $DEST_FILE"
|
|
echo " 3. Restaurer si nécessaire: sudo cp -r $BACKUP_DIR /opt/rpa_vision_v3/core/security"
|
|
else
|
|
echo " ⚠️ Réponse inattendue: $RESPONSE_WITH_AUTH"
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================================================
|
|
# RÉSUMÉ
|
|
# ============================================================================
|
|
echo "📊 RÉSUMÉ DU DÉPLOIEMENT"
|
|
echo "========================"
|
|
echo ""
|
|
echo "Sauvegarde: $BACKUP_DIR"
|
|
echo "Code déployé: $DEST_FILE"
|
|
echo ""
|
|
echo "Services:"
|
|
for service in "${SERVICES[@]}"; do
|
|
status=$(systemctl is-active "$service" 2>/dev/null || echo "failed")
|
|
echo " - $service: $status"
|
|
done
|
|
echo ""
|
|
|
|
if echo "$RESPONSE_WITH_AUTH" | grep -q '"status"'; then
|
|
echo "✅ Statut Global: SUCCÈS"
|
|
echo ""
|
|
echo "🎯 Prochaines étapes:"
|
|
echo " 1. Mettre à jour .env.local: bash fix_tokens_dev.sh"
|
|
echo " 2. Tester l'agent: cd agent_v0 && ./run.sh"
|
|
echo " 3. Vérifier l'upload: ls -lh /opt/rpa_vision_v3/data/training/sessions/"
|
|
else
|
|
echo "⚠️ Statut Global: ATTENTION REQUISE"
|
|
echo ""
|
|
echo "💡 Si le problème persiste, restaurer la sauvegarde:"
|
|
echo " sudo cp -r $BACKUP_DIR /opt/rpa_vision_v3/core/security"
|
|
echo " sudo systemctl restart rpa-vision-v3-*.service"
|
|
fi
|
|
echo ""
|