API de Gestion à Distance
Endpoints de l'API REST pour la gestion à distance des sites : mises à jour groupées et actions individuelles sur les plugins.
Aperçu
L'API de Gestion à Distance permet au panneau RakuWP d'effectuer des actions sur les sites WordPress connectés. Ces endpoints sont enregistrés sur le site WordPress par le plugin RakuWP et sont appelés par le panneau, pas directement par l'utilisateur.
Authentification
Tous les endpoints distants utilisent la clé de licence pour l'authentification via l'en-tête HTTP X-RakuWP-Key. Le panneau recherche la clé de licence dans la table license_activations et l'envoie avec chaque requête. Le plugin la vérifie contre l'option rakuwp_license_key stockée en utilisant hash_equals().
De plus, le service Remote doit être activé sur le site (rakuwp_enabled_services doit inclure le service Remote). Les requêtes vers des sites sans le service Remote activé seront rejetées.
Endpoints
Mise à jour groupée
POST /wp-json/rakuwp/v1/remote/update
Exécute toutes les mises à jour en attente de plugins, thèmes et cœur WordPress sur le site.
Processus
- Charge les classes du système de mise à jour de WordPress
- Parcourt le transient
update_pluginset met à jour chaque plugin - Parcourt le transient
update_themeset met à jour chaque thème - Vérifie le transient
update_coreet met à jour le cœur si une version est disponible - Nettoie tous les transients de mise à jour et rafraîchit les vérifications
- Re-synchronise les données du site avec le panneau via
verify_site()
Réponse
{
"success": true,
"results": {
"plugins": [
{ "slug": "akismet/akismet.php", "new_version": "5.3", "success": true }
],
"themes": [
{ "slug": "flavor", "new_version": "2.1", "success": true }
],
"core": { "new_version": "6.5", "success": true }
},
"errors": []
}
Chaque élément dans plugins et themes inclut un booléen success et optionnellement une chaîne error. Le champ core est null quand WordPress est déjà à jour.
Action de plugin
POST /wp-json/rakuwp/v1/remote/plugin-action
Effectue une action individuelle sur un plugin spécifique.
Corps de la requête
{
"action": "update",
"plugin": "akismet/akismet.php"
}
Actions disponibles
| Action | Description |
|---|---|
update | Mettre à jour le plugin vers la dernière version |
activate | Activer le plugin |
deactivate | Désactiver le plugin |
delete | Désactiver (si actif) et supprimer les fichiers du plugin |
Sécurité
Les actions sur le plugin RakuWP lui-même sont bloquées et renverront une erreur HTTP 403. Cela empêche de désactiver ou supprimer accidentellement le plugin de gestion.
Réponse
{
"success": true,
"action": "update",
"plugin": "akismet/akismet.php"
}
Endpoints du panneau
Le panneau expose ses propres endpoints que le frontend appelle via AJAX. Ils nécessitent une authentification de session et la validation du jeton CSRF via l'en-tête X-CSRF-TOKEN.
Mise à jour groupée (Panneau)
POST /remote/update
Corps de la requête
{
"site_ids": [1, 2, 3]
}
Déclenche des mises à jour groupées sur les sites sélectionnés. Pour chaque site, le panneau recherche la clé de licence et envoie une requête à l'endpoint /wp-json/rakuwp/v1/remote/update du site.
Action de plugin (Panneau)
POST /remote/plugin-action
Corps de la requête
{
"site_id": 1,
"action": "update",
"plugin": "akismet/akismet.php"
}
Effectue une action individuelle de plugin sur le site spécifié. Le panneau vérifie l'accès de l'utilisateur, recherche la clé de licence et transmet la requête au site.
Gestion des erreurs
| Code | Cause |
|---|---|
| 401 | En-tête X-RakuWP-Key manquant ou invalide |
| 403 | Service Remote non activé, ou action sur le plugin RakuWP bloquée |
| 400 | Paramètres requis manquants (action, plugin) |
| 404 | Plugin non trouvé sur le site |
Journalisation d'audit
Toutes les actions distantes sont enregistrées dans le journal d'audit :
| Action | Type d'entité | Contexte |
|---|---|---|
update | remote_update | Mise à jour groupée par site avec compteurs plugins/thèmes/cœur |
update | remote_plugin | Mise à jour individuelle de plugin |
activate | remote_plugin | Activation de plugin |
deactivate | remote_plugin | Désactivation de plugin |
delete | remote_plugin | Suppression de plugin |