Skip to content

Commit 43a2fff

Browse files
committed
add: rate limiter
1 parent d4e0d0a commit 43a2fff

File tree

7 files changed

+5132
-1292
lines changed

7 files changed

+5132
-1292
lines changed

Diff for: .gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
.env
2-
node_modules
2+
node_modules
3+
.snyk

Diff for: background.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const { ExpressAdapter } = require("@bull-board/express");
66

77
const serverAdapter = new ExpressAdapter();
88

9-
const { addQueue, removeQueue, setQueues, replaceQueues } = createBullBoard({
9+
const bullBoard = createBullBoard({
1010
queues: [new BullAdapter(predictQueue), new BullAdapter(jobScheduler)],
1111
serverAdapter: serverAdapter,
1212
});
@@ -34,6 +34,7 @@ const initScheduler = async () => {
3434
{ repeat: { cron: "0 */4 * * *" } }
3535
);
3636
};
37+
3738
initScheduler();
3839

3940
module.exports.bullBoardServerAdapter = serverAdapter;

Diff for: main.js

+21
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ if (process.env.NODE_ENV !== "production") {
22
require("dotenv").config();
33
}
44
const express = require("express");
5+
const rateLimit = require("express-rate-limit");
56
const expressLayouts = require("express-ejs-layouts");
67
const bodyParser = require("body-parser");
78

@@ -20,6 +21,17 @@ db.once("open", () => {
2021

2122
const app = express();
2223

24+
const limiter = rateLimit({
25+
max: process.env.RATE_LIMIT || 50,
26+
windowMs: process.env.RATE_LIMIT_WINDOW || 10 * 1000,
27+
message: "Too many requests, please try again later.",
28+
});
29+
app.enable("trust proxy");
30+
app.use(limiter);
31+
32+
// body limit
33+
app.use(express.json({ limit: "10kb" }));
34+
2335
// background
2436
if (process.env.BACKGROUND == true) {
2537
const { bullBoardServerAdapter } = require("./background");
@@ -43,6 +55,15 @@ if (process.env.WEB == true) {
4355

4456
// api
4557
if (!process.env.API_DISABLED) {
58+
const apiLimiter = rateLimit({
59+
max: process.env.API_RATE_LIMIT || 20,
60+
windowMs: process.env.API_RATE_LIMIT_WINDOW || 10 * 1000,
61+
message: "Too many requests, please try again later.",
62+
// keyGenerator: function (req) {
63+
// return req.ip;
64+
// },
65+
});
66+
app.use("/api/", apiLimiter);
4667
const apiRoutes = require("./routes/api");
4768
app.use("/api/v1/", apiRoutes);
4869
console.info("API is up.");

0 commit comments

Comments
 (0)