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) }