[ka6] fix connecteur boreale.com: 2e panne sitemap du CMS Craft — depuis le 2026-09-22 ~18h les <loc> de tous les sitemaps (index, enfants, produits) sont émis sur un domaine parasite sitemaps.instead.beer au lieu du domaine (variante de la panne IP brute du 09-08 corrigée par _rehost/1038407, qui ne couvrait que les hôtes IP littérale). Double effet: URLs produit sur un domaine tiers ET « sitemap » dans l'hôte → chaque URL produit exclue par NON_PRODUCT_RE → sync ✓ trompeur à 0 produit (4 syncs, 23 produits purgés le 09-22 23:57). Le domaine www.boreale.com sert toujours les mêmes chemins en 200 (sitemaps enfants + pages produit JSON-LD Product avec prix, vérifié live). Fix: _rehost() étendu OPT-IN par fiche registre (nouvelle clé rehost_hosts, même pattern que skip_url_prefixes — jamais global, des boutiques generic pointent légitimement vers un domaine tiers) + fiche boreale.com: rehost_hosts=["sitemaps.instead.beer"]. Sync réel 2026-09-23: boreale.com ok / 48 produits (+30 ~17 -0; dernier volume sain 23, le catalogue growlers/cruchons-relais a réellement grossi — lastmod sitemap 09-22). Non-régression calmelabo.com (generic, 9 produits, 0 erreur, chemin sans rehost_hosts intact). pm2 restart fabri-ka-sync fait, web local 200.
2 changed files +11 −2
modified
data/stores.json
+4 −1
@@ -16455,6 +16455,9 @@ | ||
| 16455 | 16455 | "detail": "Certification Aliments du Québec (adhérent vérifié)", |
| 16456 | 16456 | "source": "alimentsduquebec_ent" |
| 16457 | 16457 | } |
| 16458 | + ], | |
| 16459 | + "rehost_hosts": [ | |
| 16460 | + "sitemaps.instead.beer" | |
| 16458 | 16461 | ] |
| 16459 | 16462 | }, |
| 16460 | 16463 | { |
@@ -173765,4 +173768,4 @@ | ||
| 173765 | 173768 | } |
| 173766 | 173769 | } |
| 173767 | 173770 | ] |
| 173768 | −} | |
| \ No newline at end of file | ||
| 173771 | +} | |
modified
fabrika/connectors/generic.py
+7 −1
@@ -175,8 +175,14 @@ class GenericConnector(BaseConnector): | ||
| 175 | 175 | # émettent des <loc> sur l'IP brute du serveur → cert TLS invalide. |
| 176 | 176 | # On ramène ces URLs sur le domaine de la boutique, qui sert les |
| 177 | 177 | # mêmes chemins (sitemaps enfants et pages produit vérifiés 200). |
| 178 | + # Variante 2026-09-22 (boreale.com encore) : <loc> émis sur un domaine | |
| 179 | + # parasite (sitemaps.instead.beer) — « sitemap » dans l'hôte faisait en | |
| 180 | + # plus exclure chaque URL produit via NON_PRODUCT_RE. Réécriture OPT-IN | |
| 181 | + # par fiche registre (rehost_hosts), jamais globale : d'autres boutiques | |
| 182 | + # génériques pointent légitimement vers un domaine tiers (CDN, miroir). | |
| 178 | 183 | p = urlparse(u) |
| 179 | − if IP_HOST_RE.match(p.netloc): | |
| 184 | + bad_hosts = {h.lower() for h in (self.store.get("rehost_hosts") or [])} | |
| 185 | + if IP_HOST_RE.match(p.netloc) or p.netloc.lower() in bad_hosts: | |
| 180 | 186 | return f"{self.base}{p.path}" + (f"?{p.query}" if p.query else "") |
| 181 | 187 | return u |
| 182 | 188 | |
| 183 | 189 | |