5.6 KiB
5.6 KiB
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/
# 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-5api/whatsapp-api.php— WhatsApp Businessapi/ethica-pilot-send.php— Ethica campaignapi/ecosystem-health.php— Health checkapi/wevia-tools-router.php— Tool routingapi/cx— Command execution relay (SÉCURITÉ CRITIQUE)api/droid— Droid relay (SÉCURITÉ CRITIQUE)
Ce que tu dois fixer:
- Input validation manquante → ajouter
filter_input()/htmlspecialchars() - Error handling → wrap dans try/catch, retourner
{"ok":false,"error":"..."} - Rate limiting si absent → vérifier header X-RateLimit
- Credentials hardcodées → migrer vers
/etc/weval/secrets.env - SQL injection → vérifier que toutes les queries utilisent prepared statements
MISSION 2: AUDIT DB — PostgreSQL S95
# 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_messagesethica.campaigns
Requêtes de vérification:
-- 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/
# 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
# 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
- PHPStan level 5 sur tous les fichiers PHP
- ESLint sur tous les JS (assets/*.js, wevads-ia/index.html inline JS)
- Playwright test coverage — ajouter tests pour les APIs non couvertes
- OpenAPI/Swagger spec — générer pour les 68 APIs
COMMANDES UTILES
# 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:
- Liste des bugs trouvés + fixés
- Liste des vulnérabilités corrigées
- Index DB ajoutés
- Scripts Python validés/fixés
- NonReg score avant/après
Généré par Claude Opus — 29 Mars 2026