v5.0.13 — Cache + retry

This commit is contained in:
Quentin Rouiller
2026-04-21 16:04:00 +02:00
parent 909ddb8301
commit d6ab8d59e0
3 changed files with 36 additions and 9 deletions
+9 -7
View File
@@ -684,7 +684,11 @@ async function deletePlanningItem(origin, phpsessid, actionId, kind) {
console.log(`[bg] deletePlanningItem → tente function_name=${fn}`, url.substring(0, 180));
try {
const r = await fetch(url, { method: "GET", credentials: "include" });
// v5.0.13 : utiliser evFetch() au lieu de fetch() brut pour que les
// headers Referer + X-Requested-With soient envoyés — sinon EV renvoie
// un <script> de redirection CSRF qui ne ressemble pas à une erreur et
// notre heuristique le prenait à tort pour un succès.
const r = await evFetch(url, origin, { method: "GET" });
const body = await r.text();
console.log(`[bg] status=${r.status} | body (200 premiers chars) : ${(body || "").substring(0, 200)}`);
@@ -700,17 +704,15 @@ async function deletePlanningItem(origin, phpsessid, actionId, kind) {
}
// v5.0.1 : heuristique pour détecter si la suppression a marché.
// EasyVista renvoie typiquement :
// - une chaine vide ou "ok" ou "1" si succès
// - un message d'erreur / html d'erreur si function_name inconnu
// On considère que tout ce qui n'est pas un message d'erreur évident
// est un succès. Si plusieurs fn renvoient 200, on prend le premier.
// v5.0.13 : élargie pour détecter aussi le script de redirection CSRF
// (si evFetch n'a pas suffi) et les réponses vides.
const trimmed = (body || "").trim().toLowerCase();
const looksLikeError = trimmed.includes("error")
|| trimmed.includes("erreur")
|| trimmed.includes("unknown function")
|| trimmed.includes("fonction inconnue")
|| trimmed.includes("<html");
|| trimmed.includes("<html")
|| trimmed.includes("window.location.href"); // CSRF
if (!looksLikeError) {
console.log(`[bg] → suppression OK avec function_name=${fn}`);
return { status: r.status, functionName: fn, body: body.substring(0, 200) };