v5.0.12 — Stabilité
This commit is contained in:
+21
-12
@@ -298,8 +298,14 @@ async function extendSessionKeepAlive(origin, phpsessid) {
|
||||
|
||||
/**
|
||||
* Détecte si on est sur le réseau interne (itsma.etat-de-vaud.ch accessible)
|
||||
* ou externe (seul itsma.vd.ch accessible). Fait un HEAD test avec timeout
|
||||
* court sur l'URL interne : si ça répond, on est interne ; sinon externe.
|
||||
* ou externe (seul itsma.vd.ch accessible). Fait un fetch avec mode "no-cors"
|
||||
* sur l'URL interne : si ça répond (même redirection SSO), on est interne.
|
||||
* Si ça échoue (DNS unreachable, timeout), on est externe.
|
||||
*
|
||||
* v5.0.11 (fix) : mode "no-cors" pour éviter que l'erreur CORS de la
|
||||
* redirection SSO (itsma.etat-de-vaud.ch → portail.etat-de-vaud.ch/sso/)
|
||||
* soit interprétée comme un échec de connectivité. Au bureau, la redirection
|
||||
* SSO passe → le fetch termine → on sait qu'on est interne.
|
||||
*
|
||||
* Le résultat est mis en cache dans chrome.storage.local pendant 1h pour
|
||||
* éviter de refaire le test à chaque démarrage.
|
||||
@@ -308,7 +314,7 @@ async function extendSessionKeepAlive(origin, phpsessid) {
|
||||
* @returns {Promise<"internal"|"external">}
|
||||
*/
|
||||
async function detectNetworkContext(force = false) {
|
||||
const CACHE_KEY = "network_context";
|
||||
const CACHE_KEY = "network_context_v2"; // v5.0.12 : nouvelle clé pour invalider le cache fautif v5.0.11
|
||||
const CACHE_MAX_AGE_MS = 60 * 60 * 1000; // 1h
|
||||
|
||||
if (!force) {
|
||||
@@ -322,25 +328,28 @@ async function detectNetworkContext(force = false) {
|
||||
} catch (e) {}
|
||||
}
|
||||
|
||||
// Test HEAD sur l'URL interne avec timeout 2.5 sec
|
||||
const controller = new AbortController();
|
||||
const timer = setTimeout(() => controller.abort(), 2500);
|
||||
let context = "external";
|
||||
try {
|
||||
console.log("[bg] detectNetworkContext : test de itsma.etat-de-vaud.ch...");
|
||||
const r = await fetch("https://itsma.etat-de-vaud.ch/", {
|
||||
method: "HEAD",
|
||||
console.log("[bg] detectNetworkContext : test de itsma.etat-de-vaud.ch (mode no-cors)...");
|
||||
// v5.0.11 (fix) : no-cors évite l'erreur CORS de la redirection SSO.
|
||||
// Si le fetch termine sans throw, le serveur est joignable = interne.
|
||||
// Si timeout ou DNS fail, throw → externe.
|
||||
await fetch("https://itsma.etat-de-vaud.ch/", {
|
||||
method: "GET",
|
||||
mode: "no-cors",
|
||||
signal: controller.signal,
|
||||
credentials: "omit" // pas besoin des cookies pour ce test
|
||||
credentials: "omit",
|
||||
cache: "no-store"
|
||||
});
|
||||
clearTimeout(timer);
|
||||
// Tout statut HTTP (même 302, 404, 403) indique que le serveur est joignable
|
||||
console.log("[bg] detectNetworkContext : interne accessible (status=" + r.status + ")");
|
||||
console.log("[bg] detectNetworkContext : interne accessible");
|
||||
context = "internal";
|
||||
} catch (err) {
|
||||
clearTimeout(timer);
|
||||
// Timeout, DNS unreachable, erreur réseau = domaine interne inaccessible
|
||||
console.log("[bg] detectNetworkContext : interne inaccessible, on est en externe (" + err.name + ")");
|
||||
// AbortError (timeout) ou TypeError (DNS unreachable / réseau coupé)
|
||||
console.log("[bg] detectNetworkContext : interne inaccessible → externe (" + err.name + ": " + err.message + ")");
|
||||
context = "external";
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 3,
|
||||
"name": "Planification",
|
||||
"version": "5.0.11",
|
||||
"version": "5.0.12",
|
||||
"description": "Vue claire et rapide du planning des techniciens EasyVista. Regroupe interventions et réservations par tech, affiche horaires, contact, lieu, catégorie et statut en un coup d'œil.",
|
||||
"permissions": ["activeTab", "scripting", "storage", "tabs", "alarms"],
|
||||
"host_permissions": [
|
||||
|
||||
Reference in New Issue
Block a user