From bd2f7cef495b87050ec3f126e7425095078440b2 Mon Sep 17 00:00:00 2001 From: WilliButz Date: Wed, 5 Sep 2018 19:49:01 +0200 Subject: lib/models/revision.js: make independent of exec-path Previously calling `app.js` from another directory than the base directory of CodiMD would result in an error being thrown because `lib/workers/dmpWorker.js` could not be found. This change makes the function call independent of the path CodiMD is started from. Signed-off-by: WilliButz --- lib/models/revision.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/models/revision.js b/lib/models/revision.js index 8bc95cb1..4ee080da 100644 --- a/lib/models/revision.js +++ b/lib/models/revision.js @@ -5,6 +5,7 @@ var async = require('async') var moment = require('moment') var childProcess = require('child_process') var shortId = require('shortid') +var path = require('path') // core var config = require('../config') @@ -14,7 +15,7 @@ var dmpWorker = createDmpWorker() var dmpCallbackCache = {} function createDmpWorker () { - var worker = childProcess.fork('./lib/workers/dmpWorker.js', { + var worker = childProcess.fork(path.resolve(__dirname, '../workers/dmpWorker.js'), { stdio: 'ignore' }) if (config.debug) logger.info('dmp worker process started') -- cgit v1.2.3 From e48852e0e2de4441b5ef84dc9bb16be8ba9c01d8 Mon Sep 17 00:00:00 2001 From: WilliButz Date: Wed, 5 Sep 2018 19:50:46 +0200 Subject: lib/config: add environment variable to set config file Previously it was assumed that `config.json` would be placed in the same directory as the rest of CodiMD without any optional override. This allows to override the path to the `config.json` by setting `CMD_CONFIG_FILE` to the canonical path of the desired config file. Signed-off-by: WilliButz --- lib/config/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/config/index.js b/lib/config/index.js index 26f0ae96..76c8bbf1 100644 --- a/lib/config/index.js +++ b/lib/config/index.js @@ -23,7 +23,8 @@ const packageConfig = { minimumCompatibleVersion: '0.5.0' } -const configFilePath = path.join(appRootPath, 'config.json') +const configFilePath = path.resolve(appRootPath, process.env.CMD_CONFIG_FILE || +'config.json') const fileConfig = fs.existsSync(configFilePath) ? require(configFilePath)[env] : undefined let config = require('./default') -- cgit v1.2.3 From 556783ffad2e26c490c0d9d9520d7ee13a750dbb Mon Sep 17 00:00:00 2001 From: WilliButz Date: Wed, 5 Sep 2018 19:56:41 +0200 Subject: lib/config: use `path.resolve` instead of `path.join` While paths like `tmpPath` could previously be configured, they were all interpreted relative to `appRootPath` because of `path.join`. Now the configurable paths can be canonical and therefore independent of the `appRootPath`. Signed-off-by: WilliButz --- lib/config/index.js | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/config/index.js b/lib/config/index.js index 76c8bbf1..59db8612 100644 --- a/lib/config/index.js +++ b/lib/config/index.js @@ -174,20 +174,20 @@ config.sslCAPath.forEach(function (capath, i, array) { array[i] = path.resolve(appRootPath, capath) }) -config.sslCertPath = path.join(appRootPath, config.sslCertPath) -config.sslKeyPath = path.join(appRootPath, config.sslKeyPath) -config.dhParamPath = path.join(appRootPath, config.dhParamPath) - -config.tmpPath = path.join(appRootPath, config.tmpPath) -config.defaultNotePath = path.join(appRootPath, config.defaultNotePath) -config.docsPath = path.join(appRootPath, config.docsPath) -config.indexPath = path.join(appRootPath, config.indexPath) -config.codimdPath = path.join(appRootPath, config.codimdPath) -config.errorPath = path.join(appRootPath, config.errorPath) -config.prettyPath = path.join(appRootPath, config.prettyPath) -config.slidePath = path.join(appRootPath, config.slidePath) -config.constantsPath = path.join(appRootPath, config.constantsPath) -config.uploadsPath = path.join(appRootPath, config.uploadsPath) +config.sslCertPath = path.resolve(appRootPath, config.sslCertPath) +config.sslKeyPath = path.resolve(appRootPath, config.sslKeyPath) +config.dhParamPath = path.resolve(appRootPath, config.dhParamPath) + +config.tmpPath = path.resolve(appRootPath, config.tmpPath) +config.defaultNotePath = path.resolve(appRootPath, config.defaultNotePath) +config.docsPath = path.resolve(appRootPath, config.docsPath) +config.indexPath = path.resolve(appRootPath, config.indexPath) +config.codimdPath = path.resolve(appRootPath, config.codimdPath) +config.errorPath = path.resolve(appRootPath, config.errorPath) +config.prettyPath = path.resolve(appRootPath, config.prettyPath) +config.slidePath = path.resolve(appRootPath, config.slidePath) +config.constantsPath = path.resolve(appRootPath, config.constantsPath) +config.uploadsPath = path.resolve(appRootPath, config.uploadsPath) // make config readonly config = deepFreeze(config) -- cgit v1.2.3 From 12cd74727065079905cb385119d7a2db35276cca Mon Sep 17 00:00:00 2001 From: WilliButz Date: Wed, 26 Sep 2018 20:40:28 +0200 Subject: imageRouter/filesystem: make callback path-independent Images are now properly served when `config.uploadsPath` differs from its default value. Signed-off-by: WilliButz --- lib/web/imageRouter/filesystem.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib') diff --git a/lib/web/imageRouter/filesystem.js b/lib/web/imageRouter/filesystem.js index 4bf82b31..8c432b0c 100644 --- a/lib/web/imageRouter/filesystem.js +++ b/lib/web/imageRouter/filesystem.js @@ -1,5 +1,6 @@ 'use strict' const url = require('url') +const path = require('path') const config = require('../../config') const logger = require('../../logger') @@ -15,5 +16,5 @@ exports.uploadImage = function (imagePath, callback) { return } - callback(null, url.resolve(config.serverURL + '/', imagePath.match(/public\/(.+)$/)[1])) + callback(null, url.resolve(config.serverURL + '/uploads/', path.basename(imagePath))) } -- cgit v1.2.3 From bb80bc2292d2841776e8bfd6285f96194d990284 Mon Sep 17 00:00:00 2001 From: Claudius Date: Mon, 10 Sep 2018 22:35:38 +0200 Subject: removing superfluous config parameters for template files Signed-off-by: Claudius --- lib/config/default.js | 7 +------ lib/config/index.js | 10 ++-------- lib/response.js | 12 ++++++------ lib/web/statusRouter.js | 2 +- 4 files changed, 10 insertions(+), 21 deletions(-) (limited to 'lib') diff --git a/lib/config/default.js b/lib/config/default.js index 6096bce4..5d10ad26 100644 --- a/lib/config/default.js +++ b/lib/config/default.js @@ -38,15 +38,10 @@ module.exports = { sslCAPath: '', dhParamPath: '', // other path + viewPath: './public/views', tmpPath: './tmp', defaultNotePath: './public/default.md', docsPath: './public/docs', - indexPath: './public/views/index.ejs', - codimdPath: './public/views/codimd.ejs', - errorPath: './public/views/error.ejs', - prettyPath: './public/views/pretty.ejs', - slidePath: './public/views/slide.ejs', - constantsPath: './public/js/lib/common/constant.ejs', uploadsPath: './public/uploads', // session sessionName: 'connect.sid', diff --git a/lib/config/index.js b/lib/config/index.js index 59db8612..7d059c5c 100644 --- a/lib/config/index.js +++ b/lib/config/index.js @@ -9,7 +9,7 @@ const deepFreeze = require('deep-freeze') const {Environment, Permission} = require('./enum') const logger = require('../logger') -const appRootPath = path.join(__dirname, '../../') +const appRootPath = path.resolve(__dirname, '../../') const env = process.env.NODE_ENV || Environment.development const debugConfig = { debug: (env === Environment.development) @@ -177,16 +177,10 @@ config.sslCAPath.forEach(function (capath, i, array) { config.sslCertPath = path.resolve(appRootPath, config.sslCertPath) config.sslKeyPath = path.resolve(appRootPath, config.sslKeyPath) config.dhParamPath = path.resolve(appRootPath, config.dhParamPath) - +config.viewPath = path.resolve(appRootPath, config.viewPath) config.tmpPath = path.resolve(appRootPath, config.tmpPath) config.defaultNotePath = path.resolve(appRootPath, config.defaultNotePath) config.docsPath = path.resolve(appRootPath, config.docsPath) -config.indexPath = path.resolve(appRootPath, config.indexPath) -config.codimdPath = path.resolve(appRootPath, config.codimdPath) -config.errorPath = path.resolve(appRootPath, config.errorPath) -config.prettyPath = path.resolve(appRootPath, config.prettyPath) -config.slidePath = path.resolve(appRootPath, config.slidePath) -config.constantsPath = path.resolve(appRootPath, config.constantsPath) config.uploadsPath = path.resolve(appRootPath, config.uploadsPath) // make config readonly diff --git a/lib/response.js b/lib/response.js index 295f91d6..88623043 100644 --- a/lib/response.js +++ b/lib/response.js @@ -51,7 +51,7 @@ var response = { } function responseError (res, code, detail, msg) { - res.status(code).render(config.errorPath, { + res.status(code).render('error.ejs', { url: config.serverURL, title: code + ' ' + detail + ' ' + msg, code: code, @@ -101,11 +101,11 @@ function showIndex (req, res, next) { }).then(function (user) { if (user) { data.deleteToken = user.deleteToken - res.render(config.indexPath, data) + res.render('index.ejs', data) } }) } else { - res.render(config.indexPath, data) + res.render('index.ejs', data) } } @@ -119,7 +119,7 @@ function responseCodiMD (res, note) { 'Cache-Control': 'private', // only cache by client 'X-Robots-Tag': 'noindex, nofollow' // prevent crawling }) - res.render(config.codimdPath, { + res.render('codimd.ejs', { url: config.serverURL, title: title, useCDN: config.useCDN, @@ -275,7 +275,7 @@ function renderPublish (data, res) { res.set({ 'Cache-Control': 'private' // only cache by client }) - res.render(config.prettyPath, data) + res.render('pretty.ejs', data) } function actionPublish (req, res, note) { @@ -657,7 +657,7 @@ function renderPublishSlide (data, res) { res.set({ 'Cache-Control': 'private' // only cache by client }) - res.render(config.slidePath, data) + res.render('slide.ejs', data) } module.exports = response diff --git a/lib/web/statusRouter.js b/lib/web/statusRouter.js index 7ecf3839..fb2609ea 100644 --- a/lib/web/statusRouter.js +++ b/lib/web/statusRouter.js @@ -105,5 +105,5 @@ statusRouter.get('/config', function (req, res) { 'X-Robots-Tag': 'noindex, nofollow', // prevent crawling 'Content-Type': 'application/javascript' }) - res.render(config.constantsPath, data) + res.render('../js/lib/common/constant.ejs', data) }) -- cgit v1.2.3