feat: Version 3.5.2 - Configuration Stripe et gestion des immeubles
- Configuration complète Stripe pour les 3 environnements (DEV/REC/PROD) * DEV: Clés TEST Pierre (mode test) * REC: Clés TEST Client (mode test) * PROD: Clés LIVE Client (mode live) - Ajout de la gestion des bases de données immeubles/bâtiments * Configuration buildings_database pour DEV/REC/PROD * Service BuildingService pour enrichissement des adresses - Optimisations pages et améliorations ergonomie - Mises à jour des dépendances Composer - Nettoyage des fichiers obsolètes 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
177
bao/DEPLOY.md
Normal file
177
bao/DEPLOY.md
Normal file
@@ -0,0 +1,177 @@
|
||||
# Guide de déploiement BAO
|
||||
|
||||
## Vue d'ensemble
|
||||
|
||||
BAO peut être utilisé de **deux façons** :
|
||||
|
||||
1. **Depuis le PC** : Via tunnels SSH vers les containers
|
||||
2. **Sur les containers** : Connexion directe aux bases maria3/maria4
|
||||
|
||||
## Architecture des bases de données
|
||||
|
||||
### Environnement DVA
|
||||
- Container : `IN3/dva-geo`
|
||||
- Base de données : `IN3/maria3:3306` → `dva_geo`
|
||||
- Credentials : `dva_geo_user` / `CBq9tKHj6PGPZuTmAHV7`
|
||||
|
||||
### Environnement RCA
|
||||
- Container : `IN3/rca-geo`
|
||||
- Base de données : `IN3/maria3:3306` → `rca_geo`
|
||||
- Credentials : `rca_geo_user` / `UPf3C0cQ805LypyM71iW`
|
||||
|
||||
### Environnement PRA
|
||||
- Container : `IN4/pra-geo`
|
||||
- Base de données : `IN4/maria4:3306` → `pra_geo`
|
||||
- Credentials : `pra_geo_user` / `d2jAAGGWi8fxFrWgXjOA`
|
||||
|
||||
## Déploiement
|
||||
|
||||
### 1. Déployer sur DVA (IN3/dva-geo)
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
./deploy-bao.sh
|
||||
```
|
||||
|
||||
**Ce que fait le script :**
|
||||
- Crée une archive `bao-dva-YYYYMMDDHH.tar.gz` dans `/data/backup/geosector/bao`
|
||||
- Transfère l'archive vers `IN3` (195.154.80.116)
|
||||
- Déploie dans le container `dva-geo` → `/var/www/geosector/bao`
|
||||
- Copie `config/.env.container` vers `config/.env`
|
||||
- Configure les permissions (root:root)
|
||||
- Rend tous les scripts exécutables
|
||||
|
||||
### 2. Déployer sur RECETTE (IN3/rca-geo)
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
./deploy-bao.sh rca
|
||||
```
|
||||
|
||||
**Même processus**, mais vers le container `rca-geo`.
|
||||
|
||||
### 3. Déployer sur PRODUCTION (IN4/pra-geo)
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
./deploy-bao.sh pra
|
||||
```
|
||||
|
||||
**Même processus**, mais vers le serveur `IN4` (51.159.7.190) et le container `pra-geo`.
|
||||
|
||||
## Utilisation après déploiement
|
||||
|
||||
### Connexion au container
|
||||
|
||||
```bash
|
||||
# Pour RCA (exemple)
|
||||
ssh -i ~/.ssh/id_rsa_mbpi root@195.154.80.116 'incus exec rca-geo -- bash'
|
||||
```
|
||||
|
||||
### Lancer BAO
|
||||
|
||||
```bash
|
||||
cd /var/www/geosector/bao
|
||||
|
||||
# Menu interactif
|
||||
./bin/bao
|
||||
|
||||
# Ou directement un script
|
||||
./bin/search-user rca dupont
|
||||
./bin/decrypt-user rca 56930
|
||||
./bin/list-operations rca --entite=662
|
||||
```
|
||||
|
||||
## Configuration automatique
|
||||
|
||||
Le fichier `config/.env` est automatiquement créé depuis `config/.env.container` :
|
||||
|
||||
```ini
|
||||
# Exemple pour RCA (connexion directe vers maria3)
|
||||
RCA_DB_HOST=13.23.33.4
|
||||
RCA_DB_PORT=3306
|
||||
RCA_DB_NAME=rca_geo
|
||||
RCA_DB_USER=rca_geo_user
|
||||
RCA_DB_PASS=UPf3C0cQ805LypyM71iW
|
||||
```
|
||||
|
||||
**Aucune configuration manuelle requise !**
|
||||
|
||||
## Sauvegardes
|
||||
|
||||
Les archives de déploiement sont conservées dans `/data/backup/geosector/bao` :
|
||||
- `bao-dva-*.tar.gz` : Archives DVA
|
||||
- `bao-rca-*.tar.gz` : Archives RCA
|
||||
- `bao-pra-*.tar.gz` : Archives PRA
|
||||
|
||||
**Rétention** : Les 10 dernières archives par environnement sont conservées.
|
||||
|
||||
## Vérifications post-déploiement
|
||||
|
||||
Le script vérifie automatiquement :
|
||||
- ✓ Présence de `config/.env`
|
||||
- ✓ PHP disponible
|
||||
- ✓ Extensions PHP (PDO, OpenSSL, mbstring)
|
||||
|
||||
## Rollback
|
||||
|
||||
En cas de problème, la sauvegarde est disponible sur le container :
|
||||
|
||||
```bash
|
||||
# Se connecter au container
|
||||
ssh -i ~/.ssh/id_rsa_mbpi root@195.154.80.116 'incus exec rca-geo -- bash'
|
||||
|
||||
# Restaurer depuis la sauvegarde
|
||||
cd /var/www/geosector
|
||||
rm -rf bao
|
||||
mv bao_backup_YYYYMMDD_HHMMSS bao
|
||||
```
|
||||
|
||||
## Différences PC vs Container
|
||||
|
||||
| Aspect | PC (local) | Container (distant) |
|
||||
|--------|-----------|---------------------|
|
||||
| Config | `.env.example` | `.env.container` |
|
||||
| Connexion | Via tunnels SSH | Directe maria3/maria4 |
|
||||
| Host DB | 127.0.0.1 | 13.23.33.4 |
|
||||
| Port DB | 3307/3308/3309 | 3306 |
|
||||
| Tunnels | Nécessaires | Non nécessaires |
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Erreur de connexion à la base
|
||||
|
||||
```bash
|
||||
# Tester la connexion depuis le container
|
||||
mysql -h 13.23.33.4 -u rca_geo_user -p rca_geo -e "SELECT 1"
|
||||
```
|
||||
|
||||
### Script non exécutable
|
||||
|
||||
```bash
|
||||
cd /var/www/geosector/bao
|
||||
chmod +x bin/*
|
||||
```
|
||||
|
||||
### Mauvaise configuration
|
||||
|
||||
```bash
|
||||
# Vérifier la config
|
||||
cat config/.env
|
||||
|
||||
# Recopier depuis le template
|
||||
cp config/.env.container config/.env
|
||||
```
|
||||
|
||||
## Journal des déploiements
|
||||
|
||||
Tous les déploiements sont journalisés dans `~/.geo_deploy_history` :
|
||||
|
||||
```bash
|
||||
tail -f ~/.geo_deploy_history
|
||||
```
|
||||
|
||||
Exemple :
|
||||
```
|
||||
2025-01-18 14:30:00 - BAO deployed to RECETTE (rca-geo) - Archive: bao-rca-2025011814.tar.gz
|
||||
```
|
||||
210
bao/README.md
210
bao/README.md
@@ -7,16 +7,16 @@ Toolkit d'administration pour consulter et gérer les données chiffrées de l'A
|
||||
| Script | Description | Exemple |
|
||||
|--------|-------------|---------|
|
||||
| `./bin/bao` | Menu interactif principal | `./bin/bao` |
|
||||
| `./bin/search-user` | Rechercher un user par nom/prénom/username/secteur | `./bin/search-user rec dupont` |
|
||||
| `./bin/decrypt-user` | Afficher les infos complètes d'un user | `./bin/decrypt-user rec 123` |
|
||||
| `./bin/reset-password` | Générer et enregistrer un nouveau mot de passe | `./bin/reset-password rec 123` |
|
||||
| `./bin/search-email` | Rechercher par email | `./bin/search-email rec contact@example.com` |
|
||||
| `./bin/list-users` | Lister les utilisateurs | `./bin/list-users dev --entite=5` |
|
||||
| `./bin/search-entite` | Rechercher une entité (mode interactif) | `./bin/search-entite rec plumeliau` |
|
||||
| `./bin/decrypt-entite` | Afficher les infos complètes d'une entité | `./bin/decrypt-entite rec 10` |
|
||||
| `./bin/list-entites` | Lister les entités | `./bin/list-entites dev --stripe` |
|
||||
| `./bin/list-operations` | Lister les opérations | `./bin/list-operations dev --entite=5` |
|
||||
| `./bin/list-sectors` | Lister les secteurs d'une opération | `./bin/list-sectors dev --operation=123` |
|
||||
| `./bin/search-user` | Rechercher un user par nom/prénom/username/secteur | `./bin/search-user rca dupont` |
|
||||
| `./bin/decrypt-user` | Afficher les infos complètes d'un user | `./bin/decrypt-user rca 123` |
|
||||
| `./bin/reset-password` | Générer et enregistrer un nouveau mot de passe | `./bin/reset-password rca 123` |
|
||||
| `./bin/search-email` | Rechercher par email | `./bin/search-email rca contact@example.com` |
|
||||
| `./bin/list-users` | Lister les utilisateurs | `./bin/list-users dva --entite=5` |
|
||||
| `./bin/search-entite` | Rechercher une entité (mode interactif) | `./bin/search-entite rca plumeliau` |
|
||||
| `./bin/decrypt-entite` | Afficher les infos complètes d'une entité | `./bin/decrypt-entite rca 10` |
|
||||
| `./bin/list-entites` | Lister les entités | `./bin/list-entites dva --stripe` |
|
||||
| `./bin/list-operations` | Lister les opérations | `./bin/list-operations dva --entite=5` |
|
||||
| `./bin/list-sectors` | Lister les secteurs d'une opération | `./bin/list-sectors dva --operation=123` |
|
||||
|
||||
## 📋 Vue d'ensemble
|
||||
|
||||
@@ -24,25 +24,37 @@ BAO est un ensemble de scripts **indépendants de l'API** permettant de :
|
||||
- Consulter les données **déchiffrées** des utilisateurs et entités
|
||||
- Rechercher dans les champs chiffrés (username, nom, email)
|
||||
- Réinitialiser les mots de passe utilisateurs
|
||||
- Se connecter aux **3 environnements** (DEV, REC, PROD) via tunnels SSH
|
||||
- Se connecter aux **3 environnements** (DVA, RCA, PRA) via tunnels SSH
|
||||
- Vérifier l'intégrité du chiffrement AES-256-CBC
|
||||
|
||||
## 🏗️ Architecture
|
||||
|
||||
### Depuis le PC (via tunnels SSH)
|
||||
|
||||
```
|
||||
PC Bureau (localhost)
|
||||
↓ SSH Tunnels
|
||||
├─→ IN3/dva-geo (DEV) → localhost:3306 → geo_app
|
||||
├─→ IN3/rca-geo (REC) → localhost:3306 → geo_app
|
||||
└─→ IN4/pra-geo (PROD) → localhost:3306 → pra_geo
|
||||
├─→ IN3/dva-geo → IN3/maria3:3306 → dva_geo
|
||||
├─→ IN3/rca-geo → IN3/maria3:3306 → rca_geo
|
||||
└─→ IN4/pra-geo → IN4/maria4:3306 → pra_geo
|
||||
```
|
||||
|
||||
### Depuis les containers (connexion directe)
|
||||
|
||||
```
|
||||
IN3/dva-geo ──→ 13.23.33.4:3306 (maria3) → dva_geo
|
||||
IN3/rca-geo ──→ 13.23.33.4:3306 (maria3) → rca_geo
|
||||
IN4/pra-geo ──→ 13.23.33.4:3306 (maria4) → pra_geo
|
||||
```
|
||||
|
||||
### Connexions SSH
|
||||
|
||||
Les tunnels SSH sont gérés automatiquement via `~/.ssh/config` :
|
||||
- **vpn-dva-geo** : Container DEV sur IN3 (via VPN)
|
||||
- **vpn-rca-geo** : Container REC sur IN3 (via VPN)
|
||||
- **pra-geo** : Container PROD sur IN4 (désactivé)
|
||||
- **vpn-dva-geo** : Container DVA sur IN3 (via VPN)
|
||||
- **vpn-rca-geo** : Container RCA sur IN3 (via VPN)
|
||||
- **pra-geo** : Container PRA sur IN4 (désactivé)
|
||||
|
||||
**Note** : Depuis les containers, les tunnels SSH ne sont **pas nécessaires**. BAO se connecte directement aux bases maria3/maria4.
|
||||
|
||||
## 📦 Installation
|
||||
|
||||
@@ -60,14 +72,64 @@ ssh vpn-rca-geo 'echo OK'
|
||||
|
||||
### 2. Configuration
|
||||
|
||||
#### Sur le PC
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
|
||||
# Le fichier .env est déjà créé avec les bonnes valeurs
|
||||
# Vérifier la configuration
|
||||
# Copier le template et adapter
|
||||
cp config/.env.example config/.env
|
||||
|
||||
# Les valeurs par défaut sont configurées pour utiliser les tunnels SSH
|
||||
# vers dva-geo (port 3307) et rca-geo (port 3308)
|
||||
cat config/.env
|
||||
```
|
||||
|
||||
#### Sur les containers (après déploiement)
|
||||
|
||||
Le script `deploy-bao.sh` copie automatiquement `config/.env.container` vers `config/.env`.
|
||||
|
||||
Cette configuration utilise les connexions **directes** vers maria3/maria4 (pas de tunnels SSH).
|
||||
|
||||
## 📦 Déploiement sur les containers
|
||||
|
||||
BAO peut être déployé sur les containers pour une utilisation directe sur les serveurs.
|
||||
|
||||
### Déployer sur DVA (IN3/dva-geo)
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
./deploy-bao.sh
|
||||
```
|
||||
|
||||
### Déployer sur RECETTE (IN3/rca-geo)
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
./deploy-bao.sh rca
|
||||
```
|
||||
|
||||
### Déployer sur PRODUCTION (IN4/pra-geo)
|
||||
|
||||
```bash
|
||||
cd /home/pierre/dev/geosector/bao
|
||||
./deploy-bao.sh pra
|
||||
```
|
||||
|
||||
### Utiliser BAO sur un container
|
||||
|
||||
```bash
|
||||
# Connexion au container
|
||||
ssh -i ~/.ssh/id_rsa_mbpi root@195.154.80.116 'incus exec rca-geo -- bash'
|
||||
|
||||
# Lancer BAO
|
||||
cd /var/www/geosector/bao
|
||||
./bin/bao
|
||||
|
||||
# Ou directement un script
|
||||
./bin/search-user rca dupont
|
||||
```
|
||||
|
||||
## 🚀 Utilisation
|
||||
|
||||
### Menu interactif principal
|
||||
@@ -78,7 +140,7 @@ cd /home/pierre/dev/geosector/bao
|
||||
```
|
||||
|
||||
Menu avec :
|
||||
1. Sélection de l'environnement (DEV/REC/PROD)
|
||||
1. Sélection de l'environnement (DVA/RCA/PRA)
|
||||
2. Actions disponibles (liste, recherche, décryptage)
|
||||
3. Gestion automatique des tunnels SSH
|
||||
|
||||
@@ -88,9 +150,9 @@ Menu avec :
|
||||
|
||||
```bash
|
||||
# Rechercher par nom, prénom, username ou secteur
|
||||
./bin/search-user dev dupont
|
||||
./bin/search-user rec pv_admin
|
||||
./bin/search-user dev jean
|
||||
./bin/search-user dva dupont
|
||||
./bin/search-user rca pv_admin
|
||||
./bin/search-user dva jean
|
||||
```
|
||||
|
||||
**Fonctionnalités :**
|
||||
@@ -102,8 +164,8 @@ Menu avec :
|
||||
#### Décrypter un utilisateur
|
||||
|
||||
```bash
|
||||
./bin/decrypt-user dev 123
|
||||
./bin/decrypt-user rec 456
|
||||
./bin/decrypt-user dva 123
|
||||
./bin/decrypt-user rca 456
|
||||
```
|
||||
|
||||
**Affiche :**
|
||||
@@ -114,8 +176,8 @@ Menu avec :
|
||||
#### Réinitialiser un mot de passe
|
||||
|
||||
```bash
|
||||
./bin/reset-password dev 123
|
||||
./bin/reset-password rec 456
|
||||
./bin/reset-password dva 123
|
||||
./bin/reset-password rca 456
|
||||
```
|
||||
|
||||
**Fonctionnalités :**
|
||||
@@ -128,8 +190,8 @@ Menu avec :
|
||||
#### Décrypter une entité (amicale)
|
||||
|
||||
```bash
|
||||
./bin/decrypt-entite dev 5
|
||||
./bin/decrypt-entite rec 10
|
||||
./bin/decrypt-entite dva 5
|
||||
./bin/decrypt-entite rca 10
|
||||
```
|
||||
|
||||
**Affiche :**
|
||||
@@ -143,19 +205,19 @@ Menu avec :
|
||||
|
||||
```bash
|
||||
# Tous les utilisateurs (limite 50)
|
||||
./bin/list-users dev
|
||||
./bin/list-users dva
|
||||
|
||||
# Filtrer par entité
|
||||
./bin/list-users dev --entite=5
|
||||
./bin/list-users dva --entite=5
|
||||
|
||||
# Filtrer par rôle
|
||||
./bin/list-users rec --role=2
|
||||
./bin/list-users rca --role=2
|
||||
|
||||
# Limite personnalisée
|
||||
./bin/list-users dev --limit=100
|
||||
./bin/list-users dva --limit=100
|
||||
|
||||
# Combinaison de filtres
|
||||
./bin/list-users dev --entite=5 --role=2 --limit=20
|
||||
./bin/list-users dva --entite=5 --role=2 --limit=20
|
||||
```
|
||||
|
||||
**Affiche :** Tableau avec username, email, nom (déchiffrés)
|
||||
@@ -164,9 +226,9 @@ Menu avec :
|
||||
|
||||
```bash
|
||||
# Rechercher par nom, adresse, ville ou email
|
||||
./bin/search-entite dev plumeliau
|
||||
./bin/search-entite rec amicale
|
||||
./bin/search-entite dev appli
|
||||
./bin/search-entite dva plumeliau
|
||||
./bin/search-entite rca amicale
|
||||
./bin/search-entite dva appli
|
||||
```
|
||||
|
||||
**Fonctionnalités :**
|
||||
@@ -182,13 +244,13 @@ Menu avec :
|
||||
|
||||
```bash
|
||||
# Toutes les entités
|
||||
./bin/list-entites dev
|
||||
./bin/list-entites dva
|
||||
|
||||
# Uniquement celles avec Stripe activé
|
||||
./bin/list-entites dev --stripe
|
||||
./bin/list-entites dva --stripe
|
||||
|
||||
# Limite personnalisée
|
||||
./bin/list-entites rec --limit=20
|
||||
./bin/list-entites rca --limit=20
|
||||
```
|
||||
|
||||
**Affiche :** Tableau avec nom, email (déchiffrés), stats
|
||||
@@ -197,13 +259,13 @@ Menu avec :
|
||||
|
||||
```bash
|
||||
# Toutes les opérations
|
||||
./bin/list-operations dev
|
||||
./bin/list-operations dva
|
||||
|
||||
# Opérations d'une entité spécifique
|
||||
./bin/list-operations dev --entite=5
|
||||
./bin/list-operations dva --entite=5
|
||||
|
||||
# Limite personnalisée
|
||||
./bin/list-operations rec --entite=10 --limit=20
|
||||
./bin/list-operations rca --entite=10 --limit=20
|
||||
```
|
||||
|
||||
**Affiche :** Tableau avec entité, libellé, dates, nb passages, nb users, nb secteurs
|
||||
@@ -212,8 +274,8 @@ Menu avec :
|
||||
|
||||
```bash
|
||||
# Secteurs d'une opération spécifique
|
||||
./bin/list-sectors dev --operation=123
|
||||
./bin/list-sectors rec --operation=456
|
||||
./bin/list-sectors dva --operation=123
|
||||
./bin/list-sectors rca --operation=456
|
||||
```
|
||||
|
||||
**Fonctionnalités :**
|
||||
@@ -228,8 +290,8 @@ Menu avec :
|
||||
#### Rechercher par email
|
||||
|
||||
```bash
|
||||
./bin/search-email dev contact@example.com
|
||||
./bin/search-email rec admin@amicale.fr
|
||||
./bin/search-email dva contact@example.com
|
||||
./bin/search-email rca admin@amicale.fr
|
||||
```
|
||||
|
||||
**Fonctionnalités :**
|
||||
@@ -244,11 +306,11 @@ Menu avec :
|
||||
./bin/_ssh-tunnel.sh status
|
||||
|
||||
# Ouvrir un tunnel manuellement
|
||||
./bin/_ssh-tunnel.sh open dev
|
||||
./bin/_ssh-tunnel.sh open rec
|
||||
./bin/_ssh-tunnel.sh open dva
|
||||
./bin/_ssh-tunnel.sh open rca
|
||||
|
||||
# Fermer un tunnel
|
||||
./bin/_ssh-tunnel.sh close dev
|
||||
./bin/_ssh-tunnel.sh close dva
|
||||
|
||||
# Fermer tous les tunnels
|
||||
./bin/_ssh-tunnel.sh close-all
|
||||
@@ -260,10 +322,12 @@ Menu avec :
|
||||
bao/
|
||||
├── README.md # Cette documentation
|
||||
├── .gitignore # Exclut config/.env
|
||||
├── deploy-bao.sh # Script de déploiement vers containers
|
||||
│
|
||||
├── config/
|
||||
│ ├── .env # Configuration (gitignored)
|
||||
│ ├── .env.example # Template
|
||||
│ ├── .env # Configuration locale (gitignored)
|
||||
│ ├── .env.example # Template pour utilisation PC (tunnels SSH)
|
||||
│ ├── .env.container # Template pour utilisation containers (connexion directe)
|
||||
│ └── database.php # Classe DatabaseConfig
|
||||
│
|
||||
├── lib/
|
||||
@@ -354,12 +418,22 @@ lsof -i :3309
|
||||
|
||||
### Erreur : "Impossible de se connecter à la base"
|
||||
|
||||
#### Depuis le PC
|
||||
|
||||
```bash
|
||||
# Vérifier que le tunnel est actif
|
||||
./bin/_ssh-tunnel.sh status
|
||||
|
||||
# Tester manuellement
|
||||
ssh dva-geo 'mysql -u geo_app_user_dev -p geo_app -e "SELECT 1"'
|
||||
# Tester manuellement la connexion au tunnel
|
||||
nc -zv 127.0.0.1 3307 # Pour DVA
|
||||
nc -zv 127.0.0.1 3308 # Pour RCA
|
||||
```
|
||||
|
||||
#### Depuis un container
|
||||
|
||||
```bash
|
||||
# Tester la connexion directe vers maria3/maria4
|
||||
mysql -h 13.23.33.4 -u dva_geo_user -p dva_geo -e "SELECT 1"
|
||||
```
|
||||
|
||||
### Erreur : "Échec du déchiffrement"
|
||||
@@ -384,7 +458,7 @@ chmod +x bin/*
|
||||
### Cas d'usage 1 : Rechercher un utilisateur par nom
|
||||
|
||||
```bash
|
||||
./bin/search-user rec dupont
|
||||
./bin/search-user rca dupont
|
||||
```
|
||||
|
||||
Résultat : Tableau des utilisateurs contenant "dupont" (nom, prénom, username ou secteur)
|
||||
@@ -392,8 +466,8 @@ Résultat : Tableau des utilisateurs contenant "dupont" (nom, prénom, username
|
||||
### Cas d'usage 2 : Réinitialiser le mot de passe d'un utilisateur
|
||||
|
||||
```bash
|
||||
./bin/search-user rec martin # Trouver l'ID
|
||||
./bin/reset-password rec 56930 # Réinitialiser avec l'ID
|
||||
./bin/search-user rca martin # Trouver l'ID
|
||||
./bin/reset-password rca 56930 # Réinitialiser avec l'ID
|
||||
```
|
||||
|
||||
Résultat : Nouveau mot de passe généré et affiché en clair
|
||||
@@ -401,7 +475,7 @@ Résultat : Nouveau mot de passe généré et affiché en clair
|
||||
### Cas d'usage 3 : Trouver tous les comptes d'un email
|
||||
|
||||
```bash
|
||||
./bin/search-email dev contact@amicale.fr
|
||||
./bin/search-email dva contact@amicale.fr
|
||||
```
|
||||
|
||||
Résultat : Liste tous les utilisateurs avec cet email (peut être multiple)
|
||||
@@ -409,7 +483,7 @@ Résultat : Liste tous les utilisateurs avec cet email (peut être multiple)
|
||||
### Cas d'usage 4 : Lister les admins d'une amicale
|
||||
|
||||
```bash
|
||||
./bin/list-users dev --entite=5 --role=2
|
||||
./bin/list-users dva --entite=5 --role=2
|
||||
```
|
||||
|
||||
Résultat : Tableau des administrateurs (rôle 2) de l'entité 5
|
||||
@@ -417,7 +491,7 @@ Résultat : Tableau des administrateurs (rôle 2) de l'entité 5
|
||||
### Cas d'usage 5 : Explorer une entité (mode interactif)
|
||||
|
||||
```bash
|
||||
./bin/search-entite rec plumeliau # Rechercher l'entité
|
||||
./bin/search-entite rca plumeliau # Rechercher l'entité
|
||||
# Sélectionner n° de ligne: 1
|
||||
# Choisir action: 2 (Opérations)
|
||||
```
|
||||
@@ -427,7 +501,7 @@ Résultat : Workflow complet pour explorer une entité et ses données liées
|
||||
### Cas d'usage 6 : Vérifier les entités avec Stripe
|
||||
|
||||
```bash
|
||||
./bin/list-entites dev --stripe
|
||||
./bin/list-entites dva --stripe
|
||||
```
|
||||
|
||||
Résultat : Toutes les amicales ayant activé Stripe Connect
|
||||
@@ -435,7 +509,7 @@ Résultat : Toutes les amicales ayant activé Stripe Connect
|
||||
### Cas d'usage 7 : Lister les opérations d'une entité
|
||||
|
||||
```bash
|
||||
./bin/list-operations rec --entite=662
|
||||
./bin/list-operations rca --entite=662
|
||||
```
|
||||
|
||||
Résultat : Tableau des opérations avec stats (passages, users, secteurs)
|
||||
@@ -443,7 +517,7 @@ Résultat : Tableau des opérations avec stats (passages, users, secteurs)
|
||||
### Cas d'usage 8 : Explorer les secteurs d'une opération
|
||||
|
||||
```bash
|
||||
./bin/list-sectors dev --operation=123
|
||||
./bin/list-sectors dva --operation=123
|
||||
```
|
||||
|
||||
Résultat : Tableau des secteurs avec nb users/passages + stats globales
|
||||
@@ -451,7 +525,7 @@ Résultat : Tableau des secteurs avec nb users/passages + stats globales
|
||||
### Cas d'usage 9 : Audit complet d'un utilisateur
|
||||
|
||||
```bash
|
||||
./bin/decrypt-user dev 123
|
||||
./bin/decrypt-user dva 123
|
||||
```
|
||||
|
||||
Résultat : Toutes les informations déchiffrées + métadonnées
|
||||
@@ -477,14 +551,14 @@ Résultat : Toutes les informations déchiffrées + métadonnées
|
||||
|
||||
## 📝 Notes
|
||||
|
||||
### Environnement PROD
|
||||
### Environnement PRA
|
||||
|
||||
⚠️ **Attention :** L'environnement PROD n'est **pas encore créé** (base de données inexistante).
|
||||
⚠️ **Attention :** L'environnement PRA n'est **pas encore créé** (base de données inexistante).
|
||||
|
||||
Pour l'activer :
|
||||
1. Créer la base `pra_geo` sur IN4/maria4
|
||||
2. Migrer les données depuis REC
|
||||
3. Changer `PROD_ENABLED=true` dans `config/.env`
|
||||
2. Migrer les données depuis RCA
|
||||
3. Changer `PRA_ENABLED=true` dans `config/.env`
|
||||
|
||||
### Comptes multiples par email
|
||||
|
||||
|
||||
@@ -90,6 +90,12 @@ open_tunnel() {
|
||||
return 1
|
||||
fi
|
||||
|
||||
# Si le port local est 0, on est dans un container avec connexion directe
|
||||
if [[ "$local_port" == "0" ]]; then
|
||||
# Pas de tunnel nécessaire, connexion directe
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Vérifier si le tunnel est déjà actif
|
||||
if is_tunnel_active "$local_port"; then
|
||||
log_warning "Tunnel ${env} déjà actif sur le port ${local_port}"
|
||||
@@ -172,7 +178,7 @@ status_tunnels() {
|
||||
echo -e "${CYAN}║ État des tunnels SSH ║${NC}"
|
||||
echo -e "${CYAN}╚════════════════════════════════════════╝${NC}\n"
|
||||
|
||||
for env in DEV REC PROD; do
|
||||
for env in DVA RCA PRA; do
|
||||
local enabled=$(get_env_var "${env}_ENABLED")
|
||||
local local_port=$(get_env_var "${env}_SSH_PORT_LOCAL")
|
||||
local ssh_host=$(get_env_var "${env}_SSH_HOST")
|
||||
@@ -197,7 +203,7 @@ status_tunnels() {
|
||||
close_all_tunnels() {
|
||||
log_info "Fermeture de tous les tunnels..."
|
||||
|
||||
for env in DEV REC PROD; do
|
||||
for env in DVA RCA PRA; do
|
||||
local enabled=$(get_env_var "${env}_ENABLED")
|
||||
|
||||
if [[ "$enabled" == "true" ]]; then
|
||||
@@ -219,11 +225,11 @@ Commandes:
|
||||
status Affiche l'état de tous les tunnels
|
||||
close-all Ferme tous les tunnels actifs
|
||||
|
||||
Environnements: DEV, REC, PROD
|
||||
Environnements: DVA, RCA, PRA
|
||||
|
||||
Exemples:
|
||||
$(basename "$0") open dev
|
||||
$(basename "$0") close rec
|
||||
$(basename "$0") open dva
|
||||
$(basename "$0") close rca
|
||||
$(basename "$0") status
|
||||
$(basename "$0") close-all
|
||||
EOF
|
||||
|
||||
@@ -73,7 +73,7 @@ select_environment() {
|
||||
local envs=()
|
||||
local counter=1
|
||||
|
||||
for env in DEV REC PROD; do
|
||||
for env in DVA RCA PRA; do
|
||||
local enabled=$(get_env_var "${env}_ENABLED")
|
||||
if [[ "$enabled" == "true" ]]; then
|
||||
local ssh_host=$(get_env_var "${env}_SSH_HOST")
|
||||
|
||||
@@ -15,7 +15,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> <entite_id>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev 5");
|
||||
error("Exemple: " . basename($argv[0]) . " dva 5");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> <user_id>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev 123");
|
||||
error("Exemple: " . basename($argv[0]) . " dva 123");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 2) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> [--stripe] [--limit=N]");
|
||||
error("Exemple: " . basename($argv[0]) . " dev --stripe");
|
||||
error("Exemple: " . basename($argv[0]) . " dva --stripe");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,8 +16,8 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
if ($argc < 2) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> [--entite=<id>] [--limit=<n>]");
|
||||
error("Exemple: " . basename($argv[0]) . " dev");
|
||||
error(" " . basename($argv[0]) . " rec --entite=5");
|
||||
error(" " . basename($argv[0]) . " dev --entite=10 --limit=20");
|
||||
error(" " . basename($argv[0]) . " rca --entite=5");
|
||||
error(" " . basename($argv[0]) . " dva --entite=10 --limit=20");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> --operation=<id>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev --operation=123");
|
||||
error("Exemple: " . basename($argv[0]) . " dva --operation=123");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 2) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> [--entite=X] [--role=Y] [--limit=N]");
|
||||
error("Exemple: " . basename($argv[0]) . " dev --entite=5 --limit=20");
|
||||
error("Exemple: " . basename($argv[0]) . " dva --entite=5 --limit=20");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> <user_id>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev 123");
|
||||
error("Exemple: " . basename($argv[0]) . " dva 123");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> <email>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev contact@example.com");
|
||||
error("Exemple: " . basename($argv[0]) . " dva contact@example.com");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ try {
|
||||
|
||||
// Affichage
|
||||
echo "\n";
|
||||
title("RÉSULTATS DE LA RECHERCHE - " . count($matchedUsers) . " utilisateur(s) trouvé(s)");
|
||||
title("RÉSULTATS DE LA RCAHERCHE - " . count($matchedUsers) . " utilisateur(s) trouvé(s)");
|
||||
|
||||
if (count($matchedUsers) > 1) {
|
||||
warning("Attention: Plusieurs comptes utilisent le même email (autorisé par le système)");
|
||||
|
||||
@@ -15,8 +15,8 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> <search_term>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev plumeliau");
|
||||
error("Exemple: " . basename($argv[0]) . " rec amicale");
|
||||
error("Exemple: " . basename($argv[0]) . " dva plumeliau");
|
||||
error("Exemple: " . basename($argv[0]) . " rca amicale");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -253,7 +253,8 @@ try {
|
||||
|
||||
echo color("\nVotre choix: ", 'yellow');
|
||||
$handle = fopen('php://stdin', 'r');
|
||||
$choice = trim(fgets($handle));
|
||||
$choice = fgets($handle);
|
||||
$choice = $choice !== false ? trim($choice) : '';
|
||||
|
||||
if ($choice === '0' || $choice === '') {
|
||||
echo "\n";
|
||||
|
||||
@@ -16,9 +16,9 @@ require_once __DIR__ . '/../lib/helpers.php';
|
||||
// Vérifier les arguments
|
||||
if ($argc < 3) {
|
||||
error("Usage: " . basename($argv[0]) . " <environment> <search_string>");
|
||||
error("Exemple: " . basename($argv[0]) . " dev dupont");
|
||||
error(" " . basename($argv[0]) . " dev secteur_a");
|
||||
error(" " . basename($argv[0]) . " dev j.dupont");
|
||||
error("Exemple: " . basename($argv[0]) . " dva dupont");
|
||||
error(" " . basename($argv[0]) . " dva secteur_a");
|
||||
error(" " . basename($argv[0]) . " dva j.dupont");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
@@ -191,7 +191,7 @@ try {
|
||||
}
|
||||
|
||||
// Affichage
|
||||
title("RÉSULTATS DE LA RECHERCHE - " . count($matchedUsers) . " utilisateur(s) trouvé(s)");
|
||||
title("RÉSULTATS DE LA RCAHERCHE - " . count($matchedUsers) . " utilisateur(s) trouvé(s)");
|
||||
|
||||
// Préparer les données pour le tableau
|
||||
$tableData = [];
|
||||
|
||||
@@ -79,7 +79,7 @@ class DatabaseConfig {
|
||||
|
||||
public function getAvailableEnvironments(): array {
|
||||
$envs = [];
|
||||
foreach (['DEV', 'REC', 'PROD'] as $env) {
|
||||
foreach (['DVA', 'RCA', 'PRA'] as $env) {
|
||||
if ($this->get("{$env}_ENABLED") === 'true') {
|
||||
$envs[] = $env;
|
||||
}
|
||||
|
||||
281
bao/deploy-bao.sh
Executable file
281
bao/deploy-bao.sh
Executable file
@@ -0,0 +1,281 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Script de déploiement unifié pour GEOSECTOR BAO
|
||||
# Version: 1.0 (Janvier 2025)
|
||||
# Auteur: Pierre (avec l'aide de Claude)
|
||||
#
|
||||
# Usage:
|
||||
# ./deploy-bao.sh # Déploiement local DVA (code → container dva-geo)
|
||||
# ./deploy-bao.sh rca # Livraison RECETTE (code → rca-geo)
|
||||
# ./deploy-bao.sh pra # Livraison PRODUCTION (code → pra-geo)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
# =====================================
|
||||
# Configuration générale
|
||||
# =====================================
|
||||
|
||||
# Paramètre optionnel pour l'environnement cible
|
||||
TARGET_ENV=${1:-dva}
|
||||
|
||||
# Configuration SSH
|
||||
HOST_KEY="/home/pierre/.ssh/id_rsa_mbpi"
|
||||
HOST_PORT="22"
|
||||
HOST_USER="root"
|
||||
|
||||
# Configuration des serveurs
|
||||
RCA_HOST="195.154.80.116" # IN3 - Serveur de recette
|
||||
PRA_HOST="51.159.7.190" # IN4 - Serveur de production
|
||||
|
||||
# Configuration Incus
|
||||
INCUS_PROJECT="default"
|
||||
BAO_PATH="/var/www/geosector/bao"
|
||||
FINAL_OWNER="root"
|
||||
FINAL_GROUP="root"
|
||||
|
||||
# Configuration de sauvegarde
|
||||
BACKUP_DIR="/data/backup/geosector/bao"
|
||||
|
||||
# Couleurs pour les messages
|
||||
GREEN='\033[0;32m'
|
||||
RED='\033[0;31m'
|
||||
YELLOW='\033[0;33m'
|
||||
BLUE='\033[0;34m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
# =====================================
|
||||
# Fonctions utilitaires
|
||||
# =====================================
|
||||
|
||||
echo_step() {
|
||||
echo -e "${GREEN}==>${NC} $1"
|
||||
}
|
||||
|
||||
echo_info() {
|
||||
echo -e "${BLUE}Info:${NC} $1"
|
||||
}
|
||||
|
||||
echo_warning() {
|
||||
echo -e "${YELLOW}Warning:${NC} $1"
|
||||
}
|
||||
|
||||
echo_error() {
|
||||
echo -e "${RED}Error:${NC} $1"
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Fonction pour nettoyer les anciens backups
|
||||
cleanup_old_backups() {
|
||||
local prefix=""
|
||||
case $TARGET_ENV in
|
||||
"dva") prefix="bao-dva-" ;;
|
||||
"rca") prefix="bao-rca-" ;;
|
||||
"pra") prefix="bao-pra-" ;;
|
||||
esac
|
||||
|
||||
echo_info "Cleaning old backups (keeping last 10)..."
|
||||
ls -t "${BACKUP_DIR}"/${prefix}*.tar.gz 2>/dev/null | tail -n +11 | xargs -r rm -f && {
|
||||
REMAINING_BACKUPS=$(ls "${BACKUP_DIR}"/${prefix}*.tar.gz 2>/dev/null | wc -l)
|
||||
echo_info "Kept ${REMAINING_BACKUPS} backup(s) for ${TARGET_ENV}"
|
||||
}
|
||||
}
|
||||
|
||||
# =====================================
|
||||
# Détermination de la configuration selon l'environnement
|
||||
# =====================================
|
||||
|
||||
case $TARGET_ENV in
|
||||
"dva")
|
||||
echo_step "Configuring for DVA deployment on IN3"
|
||||
DEST_CONTAINER="dva-geo"
|
||||
DEST_HOST="${RCA_HOST}" # IN3
|
||||
ENV_NAME="DEVELOPMENT"
|
||||
;;
|
||||
"rca")
|
||||
echo_step "Configuring for RECETTE delivery"
|
||||
DEST_CONTAINER="rca-geo"
|
||||
DEST_HOST="${RCA_HOST}" # IN3
|
||||
ENV_NAME="RECETTE"
|
||||
;;
|
||||
"pra")
|
||||
echo_step "Configuring for PRODUCTION delivery"
|
||||
DEST_CONTAINER="pra-geo"
|
||||
DEST_HOST="${PRA_HOST}" # IN4
|
||||
ENV_NAME="PRODUCTION"
|
||||
;;
|
||||
*)
|
||||
echo_error "Unknown environment: $TARGET_ENV. Use 'dva', 'rca' or 'pra'"
|
||||
;;
|
||||
esac
|
||||
|
||||
echo_info "Deployment flow: ${ENV_NAME}"
|
||||
|
||||
# =====================================
|
||||
# Création de l'archive depuis le code local
|
||||
# =====================================
|
||||
|
||||
# Créer le dossier de backup s'il n'existe pas
|
||||
if [ ! -d "${BACKUP_DIR}" ]; then
|
||||
echo_info "Creating backup directory ${BACKUP_DIR}..."
|
||||
mkdir -p "${BACKUP_DIR}" || echo_error "Failed to create backup directory"
|
||||
fi
|
||||
|
||||
# Horodatage format YYYYMMDDHH
|
||||
TIMESTAMP=$(date +%Y%m%d%H)
|
||||
|
||||
# Nom de l'archive selon l'environnement
|
||||
case $TARGET_ENV in
|
||||
"dva")
|
||||
ARCHIVE_NAME="bao-dva-${TIMESTAMP}.tar.gz"
|
||||
;;
|
||||
"rca")
|
||||
ARCHIVE_NAME="bao-rca-${TIMESTAMP}.tar.gz"
|
||||
;;
|
||||
"pra")
|
||||
ARCHIVE_NAME="bao-pra-${TIMESTAMP}.tar.gz"
|
||||
;;
|
||||
esac
|
||||
|
||||
ARCHIVE_PATH="${BACKUP_DIR}/${ARCHIVE_NAME}"
|
||||
|
||||
echo_step "Creating archive from local code..."
|
||||
|
||||
# Vérification des fichiers requis
|
||||
if [ ! -f "config/database.php" ]; then
|
||||
echo_error "Configuration file missing"
|
||||
fi
|
||||
|
||||
if [ ! -f "lib/CryptoService.php" ]; then
|
||||
echo_error "CryptoService missing"
|
||||
fi
|
||||
|
||||
tar --exclude='.git' \
|
||||
--exclude='.gitignore' \
|
||||
--exclude='.vscode' \
|
||||
--exclude='*.template' \
|
||||
--exclude='*.sh' \
|
||||
--exclude='config/.env' \
|
||||
--exclude='*.log' \
|
||||
--exclude='.DS_Store' \
|
||||
--exclude='README.md' \
|
||||
--exclude="*.tar.gz" \
|
||||
--exclude='*.swp' \
|
||||
--exclude='*.swo' \
|
||||
--exclude='*~' \
|
||||
-czf "${ARCHIVE_PATH}" . 2>/dev/null || echo_error "Failed to create archive"
|
||||
|
||||
echo_info "Archive created: ${ARCHIVE_PATH}"
|
||||
echo_info "Archive size: $(du -h "${ARCHIVE_PATH}" | cut -f1)"
|
||||
|
||||
# Nettoyer les anciens backups
|
||||
cleanup_old_backups
|
||||
|
||||
# =====================================
|
||||
# Déploiement sur le container distant
|
||||
# =====================================
|
||||
|
||||
echo_step "Deploying to remote container ${DEST_CONTAINER} on ${DEST_HOST}..."
|
||||
|
||||
# Créer une sauvegarde sur le serveur de destination
|
||||
BACKUP_TIMESTAMP=$(date +"%Y%m%d_%H%M%S")
|
||||
REMOTE_BACKUP_DIR="${BAO_PATH}_backup_${BACKUP_TIMESTAMP}"
|
||||
|
||||
echo_info "Creating backup on destination..."
|
||||
ssh -i ${HOST_KEY} -p ${HOST_PORT} ${HOST_USER}@${DEST_HOST} "
|
||||
incus project switch ${INCUS_PROJECT} &&
|
||||
incus exec ${DEST_CONTAINER} -- test -d ${BAO_PATH} &&
|
||||
incus exec ${DEST_CONTAINER} -- cp -r ${BAO_PATH} ${REMOTE_BACKUP_DIR} &&
|
||||
echo 'Backup created: ${REMOTE_BACKUP_DIR}'
|
||||
" || echo_warning "No existing installation to backup"
|
||||
|
||||
# Transférer l'archive vers le serveur de destination
|
||||
echo_info "Transferring archive to ${DEST_HOST}..."
|
||||
scp -i ${HOST_KEY} -P ${HOST_PORT} ${ARCHIVE_PATH} ${HOST_USER}@${DEST_HOST}:/tmp/${ARCHIVE_NAME} || echo_error "Failed to copy archive to destination"
|
||||
|
||||
# Déployer sur le container de destination
|
||||
echo_info "Extracting on destination container..."
|
||||
ssh -i ${HOST_KEY} -p ${HOST_PORT} ${HOST_USER}@${DEST_HOST} "
|
||||
set -euo pipefail
|
||||
|
||||
# Pousser l'archive dans le container
|
||||
incus project switch ${INCUS_PROJECT} &&
|
||||
incus file push /tmp/${ARCHIVE_NAME} ${DEST_CONTAINER}/tmp/${ARCHIVE_NAME} &&
|
||||
|
||||
# Créer le répertoire parent et BAO s'ils n'existent pas
|
||||
incus exec ${DEST_CONTAINER} -- mkdir -p ${BAO_PATH} &&
|
||||
|
||||
# Nettoyer le répertoire complètement
|
||||
incus exec ${DEST_CONTAINER} -- rm -rf ${BAO_PATH}/* &&
|
||||
|
||||
# Extraire l'archive
|
||||
incus exec ${DEST_CONTAINER} -- tar -xzf /tmp/${ARCHIVE_NAME} -C ${BAO_PATH}/ &&
|
||||
|
||||
# Utiliser la config container (connexion directe maria3/maria4)
|
||||
incus exec ${DEST_CONTAINER} -- bash -c 'if [ -f ${BAO_PATH}/config/.env.container ]; then cp ${BAO_PATH}/config/.env.container ${BAO_PATH}/config/.env; fi' &&
|
||||
|
||||
# Permissions
|
||||
incus exec ${DEST_CONTAINER} -- chown -R ${FINAL_OWNER}:${FINAL_GROUP} ${BAO_PATH} &&
|
||||
incus exec ${DEST_CONTAINER} -- find ${BAO_PATH} -type d -exec chmod 755 {} \\; &&
|
||||
incus exec ${DEST_CONTAINER} -- find ${BAO_PATH} -type f -exec chmod 644 {} \\; &&
|
||||
|
||||
# Permissions exécutables pour les scripts bin/ (avec vérification)
|
||||
incus exec ${DEST_CONTAINER} -- bash -c 'if [ -d ${BAO_PATH}/bin ]; then chmod +x ${BAO_PATH}/bin/*; fi' &&
|
||||
|
||||
# Créer config/.env depuis le template si absent
|
||||
incus exec ${DEST_CONTAINER} -- bash -c 'if [ ! -f ${BAO_PATH}/config/.env ] && [ -f ${BAO_PATH}/config/.env.example ]; then cp ${BAO_PATH}/config/.env.example ${BAO_PATH}/config/.env && echo \"WARNING: config/.env created from template - you need to configure it!\"; fi' &&
|
||||
|
||||
# Nettoyage
|
||||
incus exec ${DEST_CONTAINER} -- rm -f /tmp/${ARCHIVE_NAME} &&
|
||||
rm -f /tmp/${ARCHIVE_NAME}
|
||||
" || echo_error "Deployment failed on destination"
|
||||
|
||||
echo_info "Remote backup saved: ${REMOTE_BACKUP_DIR} on ${DEST_CONTAINER}"
|
||||
|
||||
# =====================================
|
||||
# Configuration post-déploiement
|
||||
# =====================================
|
||||
|
||||
echo_step "Post-deployment configuration..."
|
||||
|
||||
ssh -i ${HOST_KEY} -p ${HOST_PORT} ${HOST_USER}@${DEST_HOST} "
|
||||
incus exec ${DEST_CONTAINER} -- bash -c '
|
||||
# Afficher l'état de la configuration
|
||||
if [ -f ${BAO_PATH}/config/.env ]; then
|
||||
echo \"✓ config/.env exists\"
|
||||
else
|
||||
echo \"✗ config/.env missing - copy from .env.example and configure\"
|
||||
fi
|
||||
|
||||
# Vérifier PHP
|
||||
php -v > /dev/null 2>&1 && echo \"✓ PHP available\" || echo \"✗ PHP missing\"
|
||||
|
||||
# Vérifier les extensions PHP requises
|
||||
php -m | grep -q pdo && echo \"✓ PHP PDO extension\" || echo \"✗ PHP PDO missing\"
|
||||
php -m | grep -q openssl && echo \"✓ PHP OpenSSL extension\" || echo \"✗ PHP OpenSSL missing\"
|
||||
php -m | grep -q mbstring && echo \"✓ PHP mbstring extension\" || echo \"✗ PHP mbstring missing\"
|
||||
'
|
||||
" && echo_info "Post-deployment check completed" || echo_warning "Post-deployment check failed"
|
||||
|
||||
# L'archive reste dans le dossier de backup
|
||||
echo_info "Archive preserved in backup directory: ${ARCHIVE_PATH}"
|
||||
|
||||
# =====================================
|
||||
# Instructions post-installation
|
||||
# =====================================
|
||||
|
||||
echo_step "Post-installation instructions:"
|
||||
echo_info "1. Connect to container: ssh -i ${HOST_KEY} ${HOST_USER}@${DEST_HOST} 'incus exec ${DEST_CONTAINER} -- bash'"
|
||||
echo_info "2. Configuration already set from .env.container (direct connection to maria3/maria4)"
|
||||
echo_info "3. Test with: cd ${BAO_PATH} && ./bin/bao"
|
||||
|
||||
# =====================================
|
||||
# Résumé final
|
||||
# =====================================
|
||||
|
||||
echo_step "Deployment completed successfully!"
|
||||
echo_info "Environment: ${ENV_NAME}"
|
||||
echo_info "Deployed from local code to container ${DEST_CONTAINER} on ${DEST_HOST}"
|
||||
echo_info "Deployment completed at: $(date)"
|
||||
|
||||
# Journaliser le déploiement
|
||||
echo "$(date '+%Y-%m-%d %H:%M:%S') - BAO deployed to ${ENV_NAME} (${DEST_CONTAINER}) - Archive: ${ARCHIVE_NAME}" >> ~/.geo_deploy_history
|
||||
75595
bao/dump-rca_geo-202510261750.sql
Normal file
75595
bao/dump-rca_geo-202510261750.sql
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user