# MISSION CLAUDE CODE — Backend / API / DB Audit ## 3 serveurs: S204, S95, S151 ## Date: 29 Mars 2026 --- ## CONTEXTE Tu travailles sur le repo `weval-consulting` (GitHub). Le fichier `CLAUDE.md` à la racine contient toute l'architecture. Lis-le en premier. **Claude Opus gère:** Front-end, SSO/Authentik, nginx, UX **Toi (Claude Code) tu gères:** Backend PHP, APIs, PostgreSQL, scripts Python, qualité code --- ## MISSION 1: AUDIT PHP — Tous les APIs dans `/api/` ```bash # Liste toutes les APIs ls api/*.php | wc -l # ~40+ fichiers # Pour CHAQUE fichier: # 1. Vérifier la syntaxe: php -l api/fichier.php # 2. Vérifier qu'il retourne du JSON valide # 3. Vérifier qu'il n'y a PAS de credentials en dur (admin123, WEVADS2026, etc.) # 4. Vérifier le error handling (try/catch, json_encode errors) # 5. Vérifier l'input validation ($_GET/$_POST sanitization) ``` ### APIs critiques à auditer en priorité: - `api/aegis-api.php` — AI EDR (status/scan/policy) - `api/skillsmith-api.php` — Skills (status/search/installed/recommend) - `api/aios-api.php` — AI OS (status/agents/kernel) - `api/blade-api.php` — Blade task queue (push/poll/report) - `api/blade-brain.php` — AI cascade GLM-5 - `api/whatsapp-api.php` — WhatsApp Business - `api/ethica-pilot-send.php` — Ethica campaign - `api/ecosystem-health.php` — Health check - `api/wevia-tools-router.php` — Tool routing - `api/cx` — Command execution relay (SÉCURITÉ CRITIQUE) - `api/droid` — Droid relay (SÉCURITÉ CRITIQUE) ### Ce que tu dois fixer: 1. **Input validation** manquante → ajouter `filter_input()` / `htmlspecialchars()` 2. **Error handling** → wrap dans try/catch, retourner `{"ok":false,"error":"..."}` 3. **Rate limiting** si absent → vérifier header X-RateLimit 4. **Credentials hardcodées** → migrer vers `/etc/weval/secrets.env` 5. **SQL injection** → vérifier que toutes les queries utilisent prepared statements --- ## MISSION 2: AUDIT DB — PostgreSQL S95 ```bash # Connexion (via relay ou SSH) # Host: 10.1.0.3, Port: 5432, User: admin, Pass: admin123, DB: adx_system # Vérifier: # 1. Tables orphelines (pas de FK, pas de données) # 2. Index manquants sur colonnes fréquemment requêtées # 3. Données corrompues ou incohérentes # 4. Taille des tables (bloat) # 5. Connexions actives ``` ### Tables critiques: - `admin.send_contacts` (~3M rows) — index sur email, status? - `ethica.medecins_validated` (~131K rows) — index sur pays, email, specialite? - `admin.weval_leads` (~192 rows) — structure OK? - `admin.linkedin_profiles` (~472 rows) - `admin.whatsapp_messages` - `ethica.campaigns` ### Requêtes de vérification: ```sql -- Taille des tables SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) FROM pg_tables WHERE schemaname IN ('admin','ethica') ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC LIMIT 20; -- Index manquants SELECT schemaname, tablename, indexrelname, idx_scan FROM pg_stat_user_indexes WHERE idx_scan = 0 ORDER BY schemaname, tablename; -- Connexions actives SELECT count(*), state FROM pg_stat_activity GROUP BY state; -- Données Ethica cohérence SELECT pays, count(*), count(email) as with_email, count(telephone) as with_tel FROM ethica.medecins_validated GROUP BY pays ORDER BY count DESC; ``` --- ## MISSION 3: SCRIPTS PYTHON — S95 `/opt/` ```bash # 18+ scripts Python/Bash dans /opt/ # Vérifier: # 1. Syntaxe: python3 -m py_compile script.py # 2. Imports valides (pas de modules manquants) # 3. DB host = 10.1.0.3 (PAS localhost) # 4. Error handling (try/except) # 5. Logs (output vers fichier, pas juste stdout) ``` ### Scripts critiques: - `/opt/ethica-master.py` — Master orchestrator - `/opt/ethica-deep-scraper.py` — 1sante crawler - `/opt/ethica-linkedin-drip.py` — LinkedIn slow drip - `/opt/ethica-email-drip.py` — Email enrichment - `/opt/ethica-dabadoc-scraper.py` — DabaDoc crawler - `/opt/weval-b2b-autonomous.sh` — B2B scraper - `/opt/auto-delist.sh` — Blacklist monitor - `/opt/disk-monitor.sh` — Disk alerts --- ## MISSION 4: S151 — Tracking relay ```bash # SSH: ubuntu@151.80.235.110 (pass: MX8D3zSAty7k3243242) # Vérifier: # 1. open.php — relay format OK? # 2. click.php — relay format OK? # 3. Redis status # 4. Nginx config # 5. Docker (OpenClaw + Ollama) ``` --- ## MISSION 5: QUALITÉ CODE 1. **PHPStan level 5** sur tous les fichiers PHP 2. **ESLint** sur tous les JS (assets/*.js, wevads-ia/index.html inline JS) 3. **Playwright test coverage** — ajouter tests pour les APIs non couvertes 4. **OpenAPI/Swagger spec** — générer pour les 68 APIs --- ## COMMANDES UTILES ```bash # Exécuter sur S204 echo 'COMMANDE' | base64 | xargs -I{} curl -sk -X POST https://weval-consulting.com/api/cx -d "k=WEVADS2026&c={}" # Exécuter sur S95 (via S204) echo 'ssh -p 49222 root@10.1.0.3 "COMMANDE"' | base64 | xargs -I{} curl -sk -X POST https://weval-consulting.com/api/cx -d "k=WEVADS2026&c={}" # Exécuter sur S151 (via S204) echo 'sshpass -p MX8D3zSAty7k3243242 ssh ubuntu@151.80.235.110 "COMMANDE"' | base64 | xargs -I{} curl -sk -X POST https://weval-consulting.com/api/cx -d "k=WEVADS2026&c={}" ``` --- ## RÈGLES ABSOLUES - **JAMAIS toucher** PMTA port 25 - **DB host** = 10.1.0.3 (pas localhost) - **NonReg PASS** obligatoire après chaque fix: `curl -sk https://weval-consulting.com/api/nonreg-api.php?cat=run` - **Git commit** après chaque batch de fixes - **chattr -i/+i** sur nginx configs --- ## LIVRABLE ATTENDU Un rapport avec: 1. Liste des bugs trouvés + fixés 2. Liste des vulnérabilités corrigées 3. Index DB ajoutés 4. Scripts Python validés/fixés 5. NonReg score avant/après *Généré par Claude Opus — 29 Mars 2026*