fix(api): retrait du rate-limit applicatif sur /api/maxspeed (seule la limite anti-DoS nginx 30 r/s s'applique), suppression du champ 'dir' (chemin FS interne) dans les métadonnées, doc §4 mise à jour

This commit is contained in:
riricdev 2026-09-07 16:05:44 +02:00
commit 25fa3e5cf0
3 changed files with 10 additions and 15 deletions

View file

@ -48,7 +48,6 @@ export function meta() {
stepM: 40.0,
points,
files,
dir: GRID_DIR,
}
}

View file

@ -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é.
---

View file

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