feat: Gestion des secteurs et migration v3.0.4+304
- Ajout système complet de gestion des secteurs avec contours géographiques - Import des contours départementaux depuis GeoJSON - API REST pour la gestion des secteurs (/api/sectors) - Service de géolocalisation pour déterminer les secteurs - Migration base de données avec tables x_departements_contours et sectors_adresses - Interface Flutter pour visualisation et gestion des secteurs - Ajout thème sombre dans l'application - Corrections diverses et optimisations 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
136
api/scripts/setup_addresses_access_by_env.sh
Normal file
136
api/scripts/setup_addresses_access_by_env.sh
Normal file
@@ -0,0 +1,136 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script pour configurer l'accès à la base de données des adresses
|
||||
# avec segmentation par environnement basée sur les plages d'IPs
|
||||
|
||||
echo "Configuration de l'accès à la base de données des adresses"
|
||||
echo "=========================================================="
|
||||
echo ""
|
||||
echo "Architecture des IPs par environnement :"
|
||||
echo "- DÉVELOPPEMENT : 13.23.33.40-49 (13.23.33.4%)"
|
||||
echo "- RECETTE : 13.23.33.30-39 (13.23.33.3%)"
|
||||
echo "- PRODUCTION : 13.23.33.20-29 (13.23.33.2%)"
|
||||
echo ""
|
||||
|
||||
# Fonction pour créer l'utilisateur sur un container
|
||||
create_user_on_container() {
|
||||
local container=$1
|
||||
local ip_pattern=$2
|
||||
local env_name=$3
|
||||
|
||||
echo ""
|
||||
echo "Configuration pour $env_name ($container)..."
|
||||
echo "Pattern IP autorisé : $ip_pattern"
|
||||
|
||||
# Se connecter au container MariaDB et créer l'utilisateur
|
||||
incus exec $container -- mysql -u root -p -e "
|
||||
-- Créer l'utilisateur pour l'accès depuis la plage IP de l'environnement
|
||||
CREATE USER IF NOT EXISTS 'adresses_user'@'$ip_pattern' IDENTIFIED BY 'd66,AdrGeo.User';
|
||||
GRANT SELECT ON adresses.* TO 'adresses_user'@'$ip_pattern';
|
||||
|
||||
-- Créer aussi un utilisateur localhost pour les tests directs
|
||||
CREATE USER IF NOT EXISTS 'adresses_user'@'localhost' IDENTIFIED BY 'd66,AdrGeo.User';
|
||||
GRANT SELECT ON adresses.* TO 'adresses_user'@'localhost';
|
||||
|
||||
FLUSH PRIVILEGES;
|
||||
|
||||
-- Vérifier
|
||||
SELECT user, host FROM mysql.user WHERE user = 'adresses_user' ORDER BY host;
|
||||
"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Utilisateur créé sur $container"
|
||||
else
|
||||
echo "✗ Erreur lors de la création sur $container"
|
||||
fi
|
||||
}
|
||||
|
||||
# Fonction pour tester la connexion
|
||||
test_connection() {
|
||||
local api_container=$1
|
||||
local maria_ip=$2
|
||||
local env_name=$3
|
||||
|
||||
echo ""
|
||||
echo "Test de connexion $env_name : $api_container -> $maria_ip..."
|
||||
|
||||
incus exec $api_container -- mysql -h $maria_ip -u adresses_user -p'd66,AdrGeo.User' -e "
|
||||
SELECT CONCAT('Connexion réussie depuis ', @@hostname, ' vers ', '$maria_ip') as Status;
|
||||
SELECT DATABASE();
|
||||
SHOW TABLES FROM adresses LIMIT 3;
|
||||
" 2>/dev/null
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Connexion réussie!"
|
||||
else
|
||||
echo "✗ Échec de la connexion"
|
||||
fi
|
||||
}
|
||||
|
||||
# Menu de sélection
|
||||
echo ""
|
||||
echo "Que voulez-vous configurer ?"
|
||||
echo "1. Environnement DÉVELOPPEMENT uniquement (dva-maria)"
|
||||
echo "2. Environnement RECETTE uniquement (rca-maria)"
|
||||
echo "3. Environnement PRODUCTION uniquement (pra-maria)"
|
||||
echo "4. Tous les environnements"
|
||||
echo ""
|
||||
read -p "Votre choix (1-4): " choice
|
||||
|
||||
case $choice in
|
||||
1)
|
||||
create_user_on_container "dva-maria" "13.23.33.4%" "DÉVELOPPEMENT"
|
||||
;;
|
||||
2)
|
||||
create_user_on_container "rca-maria" "13.23.33.3%" "RECETTE"
|
||||
;;
|
||||
3)
|
||||
create_user_on_container "pra-maria" "13.23.33.2%" "PRODUCTION"
|
||||
;;
|
||||
4)
|
||||
create_user_on_container "dva-maria" "13.23.33.4%" "DÉVELOPPEMENT"
|
||||
create_user_on_container "rca-maria" "13.23.33.3%" "RECETTE"
|
||||
create_user_on_container "pra-maria" "13.23.33.2%" "PRODUCTION"
|
||||
;;
|
||||
*)
|
||||
echo "Choix invalide"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Tests de connexion
|
||||
echo ""
|
||||
echo "=========================================================="
|
||||
echo "Tests de connexion"
|
||||
echo "=========================================================="
|
||||
|
||||
read -p "Voulez-vous tester les connexions? (o/n): " test_choice
|
||||
if [ "$test_choice" = "o" ]; then
|
||||
case $choice in
|
||||
1)
|
||||
test_connection "dva-api" "13.23.33.46" "DÉVELOPPEMENT"
|
||||
;;
|
||||
2)
|
||||
test_connection "rca-api" "13.23.33.36" "RECETTE"
|
||||
;;
|
||||
3)
|
||||
test_connection "pra-api" "13.23.33.26" "PRODUCTION"
|
||||
;;
|
||||
4)
|
||||
test_connection "dva-api" "13.23.33.46" "DÉVELOPPEMENT"
|
||||
test_connection "rca-api" "13.23.33.36" "RECETTE"
|
||||
test_connection "pra-api" "13.23.33.26" "PRODUCTION"
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
echo ""
|
||||
echo "Configuration terminée!"
|
||||
echo ""
|
||||
echo "Récapitulatif de la sécurité mise en place :"
|
||||
echo "- Chaque environnement a sa propre plage d'IPs autorisée"
|
||||
echo "- DÉVELOPPEMENT : seuls les containers en 13.23.33.4x peuvent accéder à dva-maria"
|
||||
echo "- RECETTE : seuls les containers en 13.23.33.3x peuvent accéder à rca-maria"
|
||||
echo "- PRODUCTION : seuls les containers en 13.23.33.2x peuvent accéder à pra-maria"
|
||||
echo ""
|
||||
echo "Cela empêche un container de DEV d'accéder aux données de PROD par exemple."
|
||||
Reference in New Issue
Block a user