22 lines
858 B
JavaScript
22 lines
858 B
JavaScript
import rateLimit from 'express-rate-limit'
|
|
|
|
/**
|
|
* Per-endpoint rate limiters. Limits are per IP per hour.
|
|
* Behind a reverse proxy (Caddy), `app.set('trust proxy', 1)` must be set
|
|
* so the real client IP is used instead of the proxy IP.
|
|
*/
|
|
function makeLimiter(max, message) {
|
|
return rateLimit({
|
|
windowMs: 60 * 60 * 1000, // 1 hour
|
|
max,
|
|
standardHeaders: true,
|
|
legacyHeaders: false,
|
|
message: { error: message },
|
|
})
|
|
}
|
|
|
|
export const contactLimiter = makeLimiter(3, 'Zu viele Anfragen. Bitte versuche es später erneut.')
|
|
export const talkRequestLimiter = makeLimiter(3, 'Zu viele Anfragen. Bitte versuche es später erneut.')
|
|
export const newsletterLimiter = makeLimiter(5, 'Zu viele Anfragen. Bitte versuche es später erneut.')
|
|
export const resourceLimiter = makeLimiter(10, 'Zu viele Anfragen. Bitte versuche es später erneut.')
|