From 25fa3e5cf0d0e431d2e0ca63dceb5e737492a6ba Mon Sep 17 00:00:00 2001 From: riricdev Date: Mon, 7 Sep 2026 16:05:44 +0200 Subject: [PATCH] =?UTF-8?q?fix(api):=20retrait=20du=20rate-limit=20applica?= =?UTF-8?q?tif=20sur=20/api/maxspeed=20(seule=20la=20limite=20anti-DoS=20n?= =?UTF-8?q?ginx=2030=20r/s=20s'applique),=20suppression=20du=20champ=20'di?= =?UTF-8?q?r'=20(chemin=20FS=20interne)=20dans=20les=20m=C3=A9tadonn=C3=A9?= =?UTF-8?q?es,=20doc=20=C2=A74=20mise=20=C3=A0=20jour?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/maxspeed-api.ts | 1 - src/maxspeed-doc.md | 13 +++++++------ src/server.ts | 11 +++-------- 3 files changed, 10 insertions(+), 15 deletions(-) diff --git a/src/maxspeed-api.ts b/src/maxspeed-api.ts index d3917e2..be2e5ed 100644 --- a/src/maxspeed-api.ts +++ b/src/maxspeed-api.ts @@ -48,7 +48,6 @@ export function meta() { stepM: 40.0, points, files, - dir: GRID_DIR, } } diff --git a/src/maxspeed-doc.md b/src/maxspeed-doc.md index da265ea..c8552cc 100644 --- a/src/maxspeed-doc.md +++ b/src/maxspeed-doc.md @@ -143,17 +143,18 @@ Format d'erreur : # 4. Rate limiting -Chaque IP a un **quota global** sur le site : **200 requêtes / 10 s**. Une fois le -quota dépassé, l'API retourne `429` avec un en-tête `Retry-After` (secondes). +L'API n'a **aucun rate-limit applicatif propre**. Seule s'applique la limite +**anti-DoS du reverse-proxy nginx**, commune à tout le site : **30 requêtes / s +par IP** (avec un burst de 300). Au-delà, la requête reçoit un `429`. ``` HTTP/1.1 429 Too Many Requests -Retry-After: 3 +Retry-After: 1 ``` -Ces limites protègent le service public contre les abus et les DoS (surcouche au -reverse-proxy qui absorbe les attaques). Pour un usage intensif légitime (batch sur -tout le continent), contacte-nous — on pourra te fournir un accès dédié. +C'est uniquement une protection contre les abus et les DoS, pas une restriction +d'usage : pour un batch lourd et légitime (interroger tout le continent), écris-nous +— on pourra te fournir un accès dédié. --- diff --git a/src/server.ts b/src/server.ts index 8823652..8314a3d 100644 --- a/src/server.ts +++ b/src/server.ts @@ -1338,17 +1338,12 @@ server = serve({ const ip = clientIp(req) if (isHoneypotBanned(ip)) return errorPage(403, req) - // API publique maxspeed (indépendante de ZMap). OPTIONS CORS autorisé, - // sinon on applique le même rate-limit global par IP que le reste. + // API publique maxspeed (indépendante de ZMap). OPTIONS CORS autorisé ; + // pas de rate-limit applicatif : seule la limite anti-DoS nginx + // (30 r/s par IP) s'applique sur l'API. if (pathname.startsWith("/api/maxspeed")) { const msRes = await handleMaxspeedRoute(req, url) if (msRes) return msRes - const retryAfterMs = allow(ip) - if (retryAfterMs > 0) { - const res = json({ ok: false, error: "trop de requêtes" }, 429) - res.headers.set("Retry-After", String(Math.ceil(retryAfterMs / 1000))) - return res - } return errorPage(404, req) }