summary refs log tree commit diff
path: root/src/middlewares/RateLimit.ts
diff options
context:
space:
mode:
authorFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-06-27 23:14:13 +0200
committerFlam3rboy <34555296+Flam3rboy@users.noreply.github.com>2021-06-27 23:14:13 +0200
commitea676ddd0351bdf5949c19aeead2fdaeb668dcbf (patch)
tree621eed227e07720a73e6b08493693885593e19f2 /src/middlewares/RateLimit.ts
parent:bug: fix empty message bug for attachments (diff)
downloadserver-ts-ea676ddd0351bdf5949c19aeead2fdaeb668dcbf.tar.xz
:lock: register proxy ip check
Diffstat (limited to 'src/middlewares/RateLimit.ts')
-rw-r--r--src/middlewares/RateLimit.ts47
1 files changed, 5 insertions, 42 deletions
diff --git a/src/middlewares/RateLimit.ts b/src/middlewares/RateLimit.ts

index 09d109e1..24f4013f 100644 --- a/src/middlewares/RateLimit.ts +++ b/src/middlewares/RateLimit.ts
@@ -1,45 +1,8 @@ -import { NextFunction, Request, Response } from "express"; +import { db, MongooseCache } from "@fosscord/server-util"; +import { NextFunction } from "express"; -import { getIpAdress } from "./GlobalRateLimit"; +const Cache = new MongooseCache(db.collection("ratelimit"), [], { onlyEvents: false }); -export function RateLimit({ count = 10, timespan = 1000 * 5, name = "/" }) { - return async (req: Request, res: Response, next: NextFunction) => { - return next(); - // TODO: use new db mongoose models - /* - - let id = req.user_id || getIpAdress(req); - - const limit: { count: number; start: number } = (await db.data.ratelimit.routes[name][id].get()) || { - count: 0, - start: Date.now(), - }; - - if (limit.start < Date.now() - timespan) { - limit.start = Date.now(); - limit.count = 0; - } - - if (limit.count > count) { - const wait = Date.now() - limit.start; - - return res - .set("Retry-After", `${wait.toFixed(0)}`) - .set("X-RateLimit-Limit", `${count}`) - .set("X-RateLimit-Remaining", "0") - .set("X-RateLimit-Reset", `${limit.start + wait}`) - .set("X-RateLimit-Reset-After", `${wait}`) - .set("X-RateLimit-Bucket", name) - .set("X-RateLimit-Global", "false") - .status(429) - .json({ - message: "You are being rate limited.", - retry_after: wait, - global: false, - }); - } - - return next(); - */ - }; +export default function RateLimit({}) { + return async (req: Request, res: Response, next: NextFunction) => {}; }