forked from spacebar/SplatNet-Backend
Judd: implement ratelimit on /post route
This commit is contained in:
parent
4f02c3a26c
commit
e86743873c
3 changed files with 32 additions and 2 deletions
20
judd/package-lock.json
generated
20
judd/package-lock.json
generated
|
|
@ -11,6 +11,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^14.25.1",
|
"discord.js": "^14.25.1",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"express-rate-limit": "^8.3.1",
|
||||||
"express-subdomain": "^1.0.5",
|
"express-subdomain": "^1.0.5",
|
||||||
"joi": "^17.7.0",
|
"joi": "^17.7.0",
|
||||||
"mongoose": "^6.7.1",
|
"mongoose": "^6.7.1",
|
||||||
|
|
@ -2453,6 +2454,24 @@
|
||||||
"url": "https://opencollective.com/express"
|
"url": "https://opencollective.com/express"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/express-rate-limit": {
|
||||||
|
"version": "8.3.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-8.3.1.tgz",
|
||||||
|
"integrity": "sha512-D1dKN+cmyPWuvB+G2SREQDzPY1agpBIcTa9sJxOPMCNeH3gwzhqJRDWCXW3gg0y//+LQ/8j52JbMROWyrKdMdw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"ip-address": "10.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 16"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/express-rate-limit"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"express": ">= 4.11"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/express-subdomain": {
|
"node_modules/express-subdomain": {
|
||||||
"version": "1.0.6",
|
"version": "1.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/express-subdomain/-/express-subdomain-1.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/express-subdomain/-/express-subdomain-1.0.6.tgz",
|
||||||
|
|
@ -3075,7 +3094,6 @@
|
||||||
"resolved": "https://registry.npmjs.org/pg/-/pg-8.18.0.tgz",
|
"resolved": "https://registry.npmjs.org/pg/-/pg-8.18.0.tgz",
|
||||||
"integrity": "sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==",
|
"integrity": "sha512-xqrUDL1b9MbkydY/s+VZ6v+xiMUmOUk7SS9d/1kpyQxoJ6U9AO1oIJyUWVZojbfe5Cc/oluutcgFG4L9RDP1iQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"peer": true,
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"pg-connection-string": "^2.11.0",
|
"pg-connection-string": "^2.11.0",
|
||||||
"pg-pool": "^3.11.0",
|
"pg-pool": "^3.11.0",
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,7 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"discord.js": "^14.25.1",
|
"discord.js": "^14.25.1",
|
||||||
"express": "^4.18.2",
|
"express": "^4.18.2",
|
||||||
|
"express-rate-limit": "^8.3.1",
|
||||||
"express-subdomain": "^1.0.5",
|
"express-subdomain": "^1.0.5",
|
||||||
"joi": "^17.7.0",
|
"joi": "^17.7.0",
|
||||||
"mongoose": "^6.7.1",
|
"mongoose": "^6.7.1",
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
const router = require('express').Router();
|
const router = require('express').Router();
|
||||||
|
const rateLimit = require('express-rate-limit');
|
||||||
const titles = require('../titles');
|
const titles = require('../titles');
|
||||||
const { WebhookClient, EmbedBuilder } = require('discord.js');
|
const { WebhookClient, EmbedBuilder } = require('discord.js');
|
||||||
const lookup = require('./ids.json');
|
const lookup = require('./ids.json');
|
||||||
|
|
@ -6,7 +7,17 @@ const blacklist = require('./blacklist.json');
|
||||||
|
|
||||||
const webhookClient = new WebhookClient({ url: process.env.WEBHOOK_URL });
|
const webhookClient = new WebhookClient({ url: process.env.WEBHOOK_URL });
|
||||||
|
|
||||||
router.post('/post', async (request, response, next) => {
|
const postLimiter = rateLimit({
|
||||||
|
windowMs: 30 * 1000,
|
||||||
|
max: 1,
|
||||||
|
statusCode: 500,
|
||||||
|
message: 'ratelimited chi!!! slow ur roll bud',
|
||||||
|
standardHeaders: true,
|
||||||
|
legacyHeaders: false,
|
||||||
|
validate: { trustProxy: false },
|
||||||
|
});
|
||||||
|
|
||||||
|
router.post('/post', postLimiter, async (request, response, next) => {
|
||||||
const title = titles[request.titleCode];
|
const title = titles[request.titleCode];
|
||||||
|
|
||||||
if (!title) {
|
if (!title) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue