diff --git a/controllers/forms/boardsettings.js b/controllers/forms/boardsettings.js index 707ec9f5..41451ba1 100644 --- a/controllers/forms/boardsettings.js +++ b/controllers/forms/boardsettings.js @@ -2,6 +2,7 @@ const changeBoardSettings = require(__dirname+'/../../models/forms/changeboardsettings.js') , themes = require(__dirname+'/../../helpers/themes.js') + , { Ratelimits } = require(__dirname+'/../../db/') , { globalLimits } = require(__dirname+'/../../configs/main.json'); module.exports = async (req, res, next) => { @@ -71,6 +72,17 @@ module.exports = async (req, res, next) => { }); } + if (res.locals.permLevel > 1) { //if not global staff or above + const ratelimit = await Ratelimits.incrmentQuota(res.locals.ip.hash, 'settings', 50); //2 changes a minute + if (ratelimit > 100) { + return res.status(429).render('message', { + 'title': 'Ratelimited', + 'error': 'You are changing settings too quickly, please wait a minute and try again', + 'redirect': `/${req.params.board}/manage/settings.html` + }); + } + } + try { await changeBoardSettings(req, res, next); } catch (err) { diff --git a/models/forms/changeboardsettings.js b/models/forms/changeboardsettings.js index 898f99c0..8a2e6986 100644 --- a/models/forms/changeboardsettings.js +++ b/models/forms/changeboardsettings.js @@ -1,6 +1,6 @@ 'use strict'; -const { Ratelimits, Boards, Posts, Accounts } = require(__dirname+'/../../db/') +const { Boards, Posts, Accounts } = require(__dirname+'/../../db/') , uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory.js') , buildQueue = require(__dirname+'/../../queue.js') , { remove } = require('fs-extra') @@ -71,7 +71,7 @@ module.exports = async (req, res, next) => { 'theme': req.body.theme ? req.body.theme : oldSettings.theme, 'announcement': { 'raw': req.body.announcement !== null ? req.body.announcement : oldSettings.announcement.raw, - 'markdown': markdownAnnouncement + 'markdown': req.body.announcement !== null ? markdownAnnouncement : oldSettings.announcement.markdown }, 'allowedFileTypes': { 'animatedImage': req.body.files_allow_animated_image ? true : false, @@ -127,16 +127,10 @@ module.exports = async (req, res, next) => { } if (newSettings.theme !== oldSettings.theme) { - let ratelimit; - if (res.locals.permLevel > 1) { //if not global staff or above - ratelimit = await Ratelimits.incrmentQuota(res.locals.ip.hash, 'settings', 100); - } - if (!ratelimit || ratelimit < 100) { - rebuildThreads = true; - rebuildBoard = true; - rebuildCatalog = true; - rebuildOther = true; - } + rebuildThreads = true; + rebuildBoard = true; + rebuildCatalog = true; + rebuildOther = true; } if (rebuildThreads) {