From 0f20646833392a238c617ebaf8b92cc5143b4080 Mon Sep 17 00:00:00 2001 From: some_random_guy <17065-some_random_guy@users.noreply.gitgud.io> Date: Wed, 12 Aug 2020 23:14:22 -0700 Subject: [PATCH] use `redirect: false` in express.static This prevents prolems like `/` giving 404 in devel mode (when `static/html/index.html` is missing) or `/captcha` redirecting to `/captcha/` (then breaking). --- db/boards.js | 4 +- db/posts.js | 1 - helpers/addmodlogs.js | 63 --------------------------- models/forms/addnews.js | 1 - models/forms/changeboardsettings.js | 1 - models/forms/deleteboard.js | 1 - models/pages/globalmanage/settings.js | 2 +- redis.js | 5 +++ schedules/webring.js | 1 - server.js | 6 +-- 10 files changed, 11 insertions(+), 74 deletions(-) delete mode 100644 helpers/addmodlogs.js diff --git a/db/boards.js b/db/boards.js index 76f51c1a..40610649 100644 --- a/db/boards.js +++ b/db/boards.js @@ -11,8 +11,8 @@ module.exports = { findOne: async (name) => { let board = await cache.get(`board:${name}`); - if (board && board !== 'no_exist') { - return board; + if (board) { + return board === 'no_exist' ? null : board; } else { board = await db.findOne({ '_id': name }); if (board) { diff --git a/db/posts.js b/db/posts.js index 7ff12125..cc4f342a 100644 --- a/db/posts.js +++ b/db/posts.js @@ -4,7 +4,6 @@ const Mongo = require(__dirname+'/db.js') , Boards = require(__dirname+'/boards.js') , Stats = require(__dirname+'/stats.js') , db = Mongo.client.db('jschan').collection('posts') - , cache = require(__dirname+'/../redis.js') , { quoteLimit, previewReplies, stickyPreviewReplies , early404Replies, early404Fraction } = require(__dirname+'/../configs/main.js'); diff --git a/helpers/addmodlogs.js b/helpers/addmodlogs.js deleted file mode 100644 index 260b1b58..00000000 --- a/helpers/addmodlogs.js +++ /dev/null @@ -1,63 +0,0 @@ -'use strict'; - - //modlog - if (modlogActions.length > 0) { - const modlog = {}; - const logDate = new Date(); //all events current date - const message = req.body.log_message || null; - let logUser; - if (res.locals.permLevel < 4) { //if staff - logUser = req.session.user.username; - } else { - logUser = 'Unregistered User'; - } - for (let i = 0; i < res.locals.posts.length; i++) { - const post = res.locals.posts[i]; - if (!modlog[post.board]) { - //per board actions, all actions combined to one event - modlog[post.board] = { - postIds: [], - actions: modlogActions, - date: logDate, - showUser: !req.body.hide_name || logUser === 'Unregistered User' ? true : false, - message: message, - user: logUser, - ip: { - single: res.locals.ip.single, - raw: res.locals.ip.raw - } - }; - } - //push each post id - modlog[post.board].postIds.push(post.postId); - } - const modlogDocuments = []; - for (let i = 0; i < threadBoards.length; i++) { - const boardName = threadBoards[i]; - const boardLog = modlog[boardName]; - //make it into documents for the db - modlogDocuments.push({ - ...boardLog, - 'board': boardName - }); - } - if (modlogDocuments.length > 0) { - //insert the modlog docs - await Modlogs.insertMany(modlogDocuments); - for (let i = 0; i < threadBoards.length; i++) { - const board = buildBoards[threadBoards[i]]; - buildQueue.push({ - 'task': 'buildModLog', - 'options': { - 'board': board, - } - }); - buildQueue.push({ - 'task': 'buildModLogList', - 'options': { - 'board': board, - } - }); - } - } - } diff --git a/models/forms/addnews.js b/models/forms/addnews.js index c3ff94d4..a1f5d4b4 100644 --- a/models/forms/addnews.js +++ b/models/forms/addnews.js @@ -2,7 +2,6 @@ const { News } = require(__dirname+'/../../db/') , dynamicResponse = require(__dirname+'/../../helpers/dynamic.js') - , uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory.js') , buildQueue = require(__dirname+'/../../queue.js') , messageHandler = require(__dirname+'/../../helpers/posting/message.js'); diff --git a/models/forms/changeboardsettings.js b/models/forms/changeboardsettings.js index e4480438..72b9704d 100644 --- a/models/forms/changeboardsettings.js +++ b/models/forms/changeboardsettings.js @@ -5,7 +5,6 @@ const { Boards, Posts, Accounts } = require(__dirname+'/../../db/') , { globalLimits } = require(__dirname+'/../../configs/main.js') , uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory.js') , buildQueue = require(__dirname+'/../../queue.js') - , cache = require(__dirname+'/../../redis.js') , { remove } = require('fs-extra') , deletePosts = require(__dirname+'/deletepost.js') , messageHandler = require(__dirname+'/../../helpers/posting/message.js') diff --git a/models/forms/deleteboard.js b/models/forms/deleteboard.js index b2632b27..890fa196 100644 --- a/models/forms/deleteboard.js +++ b/models/forms/deleteboard.js @@ -1,7 +1,6 @@ 'use strict'; const { Accounts, Boards, Stats, Posts, Bans, Modlogs } = require(__dirname+'/../../db/') - , cache = require(__dirname+'/../../redis.js') , deletePosts = require(__dirname+'/deletepost.js') , uploadDirectory = require(__dirname+'/../../helpers/files/uploadDirectory.js') , { remove } = require('fs-extra'); diff --git a/models/pages/globalmanage/settings.js b/models/pages/globalmanage/settings.js index 9740f700..1325ff97 100644 --- a/models/pages/globalmanage/settings.js +++ b/models/pages/globalmanage/settings.js @@ -12,7 +12,7 @@ module.exports = async (req, res, next) => { filterMode: 0, filterBanDuration: 0, } - cache.set('globalsettings', settings); + cache.setnx('globalsettings', settings); } res diff --git a/redis.js b/redis.js index f203848f..f37301cf 100644 --- a/redis.js +++ b/redis.js @@ -22,6 +22,11 @@ module.exports = { } }, + //set a value on key if not exist + setnx: (key, value) => { + client.setnx(key, JSON.stringify(value)); + }, + //add items to a set sadd: (key, value) => { return client.sadd(key, value); diff --git a/schedules/webring.js b/schedules/webring.js index 2f08a62c..b39f470a 100644 --- a/schedules/webring.js +++ b/schedules/webring.js @@ -6,7 +6,6 @@ const fetch = require('node-fetch') , Mongo = require(__dirname+'/../db/db.js') , { Boards, Webring } = require(__dirname+'/../db/') , { outputFile } = require('fs-extra') - , cache = require(__dirname+'/../redis.js') , uploadDirectory = require(__dirname+'/../helpers/files/uploadDirectory.js') , timeDiffString = require(__dirname+'/../helpers/timediffstring.js') , SocksProxyAgent = proxy.enabled && require('socks-proxy-agent') diff --git a/server.js b/server.js index bd84b3ff..d8ac3ef2 100644 --- a/server.js +++ b/server.js @@ -77,9 +77,9 @@ const express = require('express') // routes if (!production) { - app.use(express.static(__dirname+'/static')); - app.use(express.static(__dirname+'/static/html')); - app.use(express.static(__dirname+'/static/json')); + app.use(express.static(__dirname+'/static', { redirect: false })); + app.use(express.static(__dirname+'/static/html', { redirect: false })); + app.use(express.static(__dirname+'/static/json', { redirect: false })); } app.use('/forms', require(__dirname+'/controllers/forms.js')); app.use('/', require(__dirname+'/controllers/pages.js'));