From 4e22b94b5d540812fcb7086b4af6021addf994b0 Mon Sep 17 00:00:00 2001 From: MrFry Date: Mon, 13 Apr 2020 10:49:38 +0200 Subject: [PATCH] Moved public dirs to seperate directories --- modules.json | 6 ++++++ modules/api/api.js | 7 ++++++- modules/dataEditor/dataEditor.js | 8 ++++++-- modules/main/main.js | 14 ++++++++++---- modules/qmining/qmining.js | 8 ++++++-- modules/sio/sio.js | 10 +++++++++- modules/stuff/stuff.js | 12 +++++++++--- qminingPublic/favicon.ico | Bin 0 -> 258062 bytes server.js | 8 +++++++- 9 files changed, 59 insertions(+), 14 deletions(-) create mode 100755 qminingPublic/favicon.ico diff --git a/modules.json b/modules.json index 612f6ce..fe7a0b8 100644 --- a/modules.json +++ b/modules.json @@ -1,33 +1,39 @@ { "dataEditor": { "path": "./modules/dataEditor/dataEditor.js", + "publicdirs": [ "qminingPublic/", "modules/dataEditor/public/" ], "name": "dataeditor", "urls": [ "dataeditor.frylabs.net" ], "isNextJs": true }, "qmining": { "path": "./modules/qmining/qmining.js", + "publicdirs": [ "qminingPublic/", "modules/qmining/public/" ], "name": "qmining", "urls": [ "qmining.frylabs.net" ], "isNextJs": true }, "api": { "path": "./modules/api/api.js", + "publicdirs": [ "qminingPublic/" ], "name": "api", "urls": [ "api.frylabs.net", "localhost" ] }, "main": { "path": "./modules/main/main.js", + "publicdirs": [ "public/" ], "name": "main", "urls": [ "frylabs.net", "www.frylabs.net" ] }, "sio": { "path": "./modules/sio/sio.js", + "publicdirs": [ "sioPublic/" ], "name": "sio", "urls": [ "sio.frylabs.net" ] }, "stuff": { "path": "./modules/stuff/stuff.js", + "publicdirs": [ "stuffPublic/" ], "name": "stuff", "urls": [ "stuff.frylabs.net" ] } diff --git a/modules/api/api.js b/modules/api/api.js index 788e4c8..814c055 100644 --- a/modules/api/api.js +++ b/modules/api/api.js @@ -52,6 +52,7 @@ const daysAfterUserGetsPWs = 2 // days after user gets pw-s let userDB let url +let publicdirs = [] function GetApp () { app.use(bodyParser.urlencoded({ @@ -79,7 +80,10 @@ function GetApp () { '/badtestsender' ] })) - app.use(express.static('public')) + publicdirs.forEach((pdir) => { + logger.Log(`Using public dir: ${pdir}`) + app.use(express.static(pdir)) + }) app.use(busboy({ limits: { fileSize: 50000 * 1024 * 1024 @@ -653,4 +657,5 @@ exports.getApp = GetApp exports.setup = (data) => { userDB = data.userDB url = data.url + publicdirs = data.publicdirs } diff --git a/modules/dataEditor/dataEditor.js b/modules/dataEditor/dataEditor.js index 95527b7..a1ebfcf 100644 --- a/modules/dataEditor/dataEditor.js +++ b/modules/dataEditor/dataEditor.js @@ -28,6 +28,7 @@ const logger = require('../../utils/logger.js') const auth = require('../../middlewares/auth.middleware.js') let userDB +let publicdirs = [] function GetApp () { app.use(bodyParser.urlencoded({ @@ -50,8 +51,10 @@ function GetApp () { '/getVeteranPw' ] })) - app.use(express.static('modules/dataEditor/public')) - app.use(express.static('public')) + publicdirs.forEach((pdir) => { + logger.Log(`Using public dir: ${pdir}`) + app.use(express.static(pdir)) + }) app.use(busboy({ limits: { fileSize: 10000 * 1024 * 1024 @@ -103,4 +106,5 @@ exports.name = 'Data editor' exports.getApp = GetApp exports.setup = (data) => { userDB = data.userDB + publicdirs = data.publicdirs } diff --git a/modules/main/main.js b/modules/main/main.js index ebbf0b9..dbbcb99 100644 --- a/modules/main/main.js +++ b/modules/main/main.js @@ -25,17 +25,22 @@ const bodyParser = require('body-parser') const busboy = require('connect-busboy') const app = express() -// const logger = require('../../utils/logger.js') +const logger = require('../../utils/logger.js') // const utils = require('../utils/utils.js') // const actions = require('../utils/actions.js') +let publicdirs = [] + function GetApp () { app.set('view engine', 'ejs') app.set('views', [ './modules/main/views', './sharedViews' ]) - app.use(express.static('public')) + publicdirs.forEach((pdir) => { + logger.Log(`Using public dir: ${pdir}`) + app.use(express.static(pdir)) + }) app.use(busboy({ limits: { fileSize: 10000 * 1024 * 1024 @@ -73,6 +78,7 @@ function GetApp () { exports.name = 'Main' exports.getApp = GetApp -exports.setup = (x) => { - url = x.url +exports.setup = (data) => { + url = data.url + publicdirs = data.publicdirs } diff --git a/modules/qmining/qmining.js b/modules/qmining/qmining.js index edb8d16..de98ee1 100644 --- a/modules/qmining/qmining.js +++ b/modules/qmining/qmining.js @@ -28,6 +28,7 @@ const logger = require('../../utils/logger.js') const auth = require('../../middlewares/auth.middleware.js') let donateURL = '' +let publicdirs = [] let userDB try { @@ -61,8 +62,10 @@ function GetApp () { '/irc' ] })) - app.use(express.static('modules/qmining/public')) - app.use(express.static('public')) + publicdirs.forEach((pdir) => { + logger.Log(`Using public dir: ${pdir}`) + app.use(express.static(pdir)) + }) app.use(busboy({ limits: { fileSize: 10000 * 1024 * 1024 @@ -201,4 +204,5 @@ exports.name = 'Qmining' exports.getApp = GetApp exports.setup = (data) => { userDB = data.userDB + publicdirs = data.publicdirs } diff --git a/modules/sio/sio.js b/modules/sio/sio.js index 2eaaab0..7cfece4 100644 --- a/modules/sio/sio.js +++ b/modules/sio/sio.js @@ -31,13 +31,18 @@ const utils = require('../../utils/utils.js') const uloadFiles = './public/f' +let publicdirs = [] + function GetApp () { app.set('view engine', 'ejs') app.set('views', [ './modules/sio/views', './sharedViews' ]) - app.use(express.static('public')) + publicdirs.forEach((pdir) => { + logger.Log(`Using public dir: ${pdir}`) + app.use(express.static(pdir)) + }) app.use(busboy({ limits: { fileSize: 10000 * 1024 * 1024 @@ -102,3 +107,6 @@ function GetApp () { exports.name = 'Sio' exports.getApp = GetApp +exports.setup = (data) => { + publicdirs = data.publicdirs +} diff --git a/modules/stuff/stuff.js b/modules/stuff/stuff.js index 51d3555..b53a000 100644 --- a/modules/stuff/stuff.js +++ b/modules/stuff/stuff.js @@ -31,13 +31,18 @@ const logger = require('../../utils/logger.js') const listedFiles = './public/files' +let publicdirs = [] + function GetApp () { app.set('view engine', 'ejs') app.set('views', [ './modules/stuff/views', './sharedViews' ]) - app.use(express.static('public')) + publicdirs.forEach((pdir) => { + logger.Log(`Using public dir: ${pdir}`) + app.use(express.static(pdir)) + }) app.use(busboy({ limits: { fileSize: 10000 * 1024 * 1024 @@ -213,6 +218,7 @@ function GetApp () { exports.name = 'Stuff' exports.getApp = GetApp -exports.setup = (x) => { - url = x.url +exports.setup = (data) => { + url = data.url + publicdirs = data.publicdirs } diff --git a/qminingPublic/favicon.ico b/qminingPublic/favicon.ico new file mode 100755 index 0000000000000000000000000000000000000000..cab5a02dc9299efad7a5b0be25eca9eb8a6ed897 GIT binary patch literal 258062 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

@RPuIA>+MU|Gg1qIRvO*jPn+Ly#~mI^6uYtA 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 ZIc;KGld+G{8aaPw?32?b#x=g}^Z&$oH(US! literal 0 HcmV?d00001 diff --git a/server.js b/server.js index b05348e..5560602 100755 --- a/server.js +++ b/server.js @@ -112,10 +112,16 @@ Object.keys(modules).forEach(function (k, i) { try { let mod = require(x.path) logger.Log(`Loading ${mod.name} module`, logger.GetColor('yellow')) + + x.publicdirs.forEach((pdir) => { + utils.CreatePath(pdir) + }) + if (mod.setup) { mod.setup({ url: 'https://' + x.urls[0], - userDB: userDB + userDB: userDB, + publicdirs: x.publicdirs }) }