MCPcopy Create free account
hub / github.com/F12FLASH/CTF / rateLimit

Function rateLimit

4.Stackless Stack/server/routes.ts:27–50  ·  view source on GitHub ↗
(maxRequests: number, windowMs: number)

Source from the content-addressed store, hash-verified

25}
26
27function rateLimit(maxRequests: number, windowMs: number) {
28 return (req: Request, res: Response, next: NextFunction) => {
29 ensureSessionId(req);
30 const identifier = getRateLimitIdentifier(req);
31 const now = Date.now();
32 const record = rateLimitStore.get(identifier);
33
34 if (!record || now > record.resetTime) {
35 rateLimitStore.set(identifier, { count: 1, resetTime: now + windowMs });
36 return next();
37 }
38
39 if (record.count >= maxRequests) {
40 return res.status(429).json({
41 error: "Quá nhiều yêu cầu",
42 message: "Vui lòng đợi trước khi thử lại",
43 retryAfter: Math.ceil((record.resetTime - now) / 1000)
44 });
45 }
46
47 record.count++;
48 next();
49 };
50}
51
52function validateInput(req: Request, res: Response, next: NextFunction) {
53 if (req.body) {

Callers 8

routes.tsFile · 0.85
index.tsFile · 0.85
index.tsFile · 0.85
routes.tsFile · 0.85
registerRoutesFunction · 0.85
index.tsFile · 0.85
index.tsFile · 0.85
routes.tsFile · 0.85

Calls 2

ensureSessionIdFunction · 0.85
getRateLimitIdentifierFunction · 0.85

Tested by

no test coverage detected