feat: Version 3.3.4 - Nouvelle architecture pages, optimisations widgets Flutter et API

- Mise à jour VERSION vers 3.3.4
- Optimisations et révisions architecture API (deploy-api.sh, scripts de migration)
- Ajout documentation Stripe Tap to Pay complète
- Migration vers polices Inter Variable pour Flutter
- Optimisations build Android et nettoyage fichiers temporaires
- Amélioration système de déploiement avec gestion backups
- Ajout scripts CRON et migrations base de données

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
pierre
2025-10-05 20:11:15 +02:00
parent 2786252307
commit 570a1fa1f0
212 changed files with 24275 additions and 11321 deletions

95
api/scripts/test_whitelist.php Executable file
View File

@@ -0,0 +1,95 @@
#!/usr/bin/env php
<?php
/**
* Script de test pour la whitelist dynamique
* Usage: php scripts/test_whitelist.php [refresh]
*/
require_once __DIR__ . '/../src/Services/Security/IPBlocker.php';
use App\Services\Security\IPBlocker;
echo "=== Test de la whitelist dynamique depuis IN3 ===\n\n";
// Si l'argument "refresh" est passé, forcer le rafraîchissement
if (isset($argv[1]) && $argv[1] === 'refresh') {
echo "Forçage du rafraîchissement de la whitelist...\n";
$ips = IPBlocker::refreshDynamicWhitelist();
echo "✓ Whitelist rafraîchie\n\n";
}
// Test 1: Récupérer les IPs whitelistées
echo "1. IPs whitelistées statiques:\n";
$staticWhitelist = IPBlocker::WHITELIST;
foreach ($staticWhitelist as $ip) {
echo " - $ip\n";
}
echo "\n2. Récupération de la whitelist dynamique depuis IN3...\n";
try {
// Forcer le rafraîchissement pour le test
$dynamicIps = IPBlocker::refreshDynamicWhitelist();
if (empty($dynamicIps)) {
echo " ⚠ Aucune IP dynamique récupérée\n";
echo " Vérifiez:\n";
echo " - La connexion SSH vers IN3 (195.154.80.116)\n";
echo " - L'existence du fichier /var/bat/IP sur IN3\n";
echo " - Les clés SSH sont configurées pour root@IN3\n";
} else {
echo " ✓ IPs dynamiques récupérées:\n";
foreach ($dynamicIps as $ip) {
echo " - $ip\n";
}
}
} catch (Exception $e) {
echo " ✗ Erreur: " . $e->getMessage() . "\n";
}
// Test 2: Vérifier le fichier de cache
echo "\n3. Vérification du cache local:\n";
$cacheFile = __DIR__ . '/../config/whitelist_ip_cache.txt';
if (file_exists($cacheFile)) {
$cacheData = json_decode(file_get_contents($cacheFile), true);
if ($cacheData) {
echo " ✓ Cache trouvé:\n";
echo " - IP: " . ($cacheData['ip'] ?? 'N/A') . "\n";
echo " - Récupéré le: " . ($cacheData['retrieved_at'] ?? 'N/A') . "\n";
echo " - Timestamp: " . ($cacheData['timestamp'] ?? 'N/A') . "\n";
$age = time() - ($cacheData['timestamp'] ?? 0);
$ageMinutes = round($age / 60);
echo " - Âge du cache: $ageMinutes minutes\n";
if ($age > 3600) {
echo " ⚠ Le cache a plus d'1 heure et sera rafraîchi au prochain appel\n";
}
} else {
echo " ⚠ Cache invalide\n";
}
} else {
echo " - Pas de cache local trouvé\n";
}
// Test 3: Tester quelques IPs
echo "\n4. Test de blocage pour quelques IPs:\n";
$testIps = [
'127.0.0.1' => 'Localhost (whitelist statique)',
'8.8.8.8' => 'Google DNS (non whitelisté)',
];
// Ajouter l'IP dynamique si elle existe
if (!empty($dynamicIps) && isset($dynamicIps[0])) {
$testIps[$dynamicIps[0]] = 'IP depuis IN3 (whitelist dynamique)';
}
foreach ($testIps as $ip => $description) {
$isWhitelisted = IPBlocker::isWhitelisted($ip);
$isBlocked = IPBlocker::isBlocked($ip);
echo " - $ip ($description):\n";
echo " Whitelisté: " . ($isWhitelisted ? '✓ Oui' : '✗ Non') . "\n";
echo " Bloqué: " . ($isBlocked ? '✗ Oui' : '✓ Non') . "\n";
}
echo "\n=== Fin du test ===\n";