refactor: use dataPath variable as given in file config (#1118)

* Actually use path variables as given in default config

* Drop paths.content, avoid populating the global WIKI object
This commit is contained in:
Justin Kromlinger 2019-10-26 00:20:02 +02:00 committed by Nicolas Giard
parent 5b36988d6d
commit 8000ebec8f
10 changed files with 29 additions and 26 deletions

View File

@ -105,3 +105,9 @@ uploads:
# download the offline files for sideloading. # download the offline files for sideloading.
offline: false offline: false
# ---------------------------------------------------------------------
# Data Path
# ---------------------------------------------------------------------
# Writeable data path for Wiki.js, mainly for cache and user uploads.
dataPath: ./data

View File

@ -57,9 +57,7 @@ defaults:
# System defaults # System defaults
channel: BETA channel: BETA
setup: false setup: false
paths: dataPath: ./data
content: ./content
data: ./data
cors: cors:
credentials: true credentials: true
maxAge: 600 maxAge: 600

View File

@ -11,7 +11,7 @@ const sanitize = require('sanitize-filename')
* Upload files * Upload files
*/ */
router.post('/u', multer({ router.post('/u', multer({
dest: path.join(WIKI.ROOTPATH, 'data/uploads'), dest: path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'uploads'),
limits: { limits: {
fileSize: WIKI.config.uploads.maxFileSize, fileSize: WIKI.config.uploads.maxFileSize,
files: WIKI.config.uploads.maxFiles files: WIKI.config.uploads.maxFiles

View File

@ -10,7 +10,7 @@ module.exports = {
return return
} }
const sideloadExists = await fs.pathExists(path.join(WIKI.ROOTPATH, 'data/sideload')) const sideloadExists = await fs.pathExists(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'sideload'))
if (!sideloadExists) { if (!sideloadExists) {
return return
@ -25,16 +25,16 @@ module.exports = {
} }
}, },
async importLocales() { async importLocales() {
const localeExists = await fs.pathExists(path.join(WIKI.ROOTPATH, 'data/sideload/locales.json')) const localeExists = await fs.pathExists(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'sideload/locales.json'))
if (localeExists) { if (localeExists) {
WIKI.logger.info('Found locales master file. Importing locale packages...') WIKI.logger.info('Found locales master file. Importing locale packages...')
let importedLocales = 0 let importedLocales = 0
const locales = await fs.readJson(path.join(WIKI.ROOTPATH, 'data/sideload/locales.json')) const locales = await fs.readJson(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'sideload/locales.json'))
if (locales && _.has(locales, 'data.localization.locales')) { if (locales && _.has(locales, 'data.localization.locales')) {
for (const locale of locales.data.localization.locales) { for (const locale of locales.data.localization.locales) {
try { try {
const localeData = await fs.readJson(path.join(WIKI.ROOTPATH, `data/sideload/${locale.code}.json`)) const localeData = await fs.readJson(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `sideload/${locale.code}.json`))
if (localeData) { if (localeData) {
WIKI.logger.info(`Importing ${locale.name} locale package...`) WIKI.logger.info(`Importing ${locale.name} locale package...`)

View File

@ -16,7 +16,7 @@ module.exports = {
}, },
init() { init() {
// Clear content cache // Clear content cache
fs.emptyDir(path.join(WIKI.ROOTPATH, 'data/cache')) fs.emptyDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'cache'))
return this return this
}, },

View File

@ -9,7 +9,7 @@ module.exports = async () => {
WIKI.logger.info('Purging orphaned upload files...') WIKI.logger.info('Purging orphaned upload files...')
try { try {
const uplTempPath = path.resolve(process.cwd(), WIKI.config.paths.data, 'uploads') const uplTempPath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'uploads')
await fs.ensureDir(uplTempPath) await fs.ensureDir(uplTempPath)
const ls = await fs.readdir(uplTempPath) const ls = await fs.readdir(uplTempPath)
const fifteenAgo = moment().subtract(15, 'minutes') const fifteenAgo = moment().subtract(15, 'minutes')

View File

@ -74,7 +74,7 @@ module.exports = class Asset extends Model {
} }
async deleteAssetCache() { async deleteAssetCache() {
await fs.remove(path.join(process.cwd(), `data/cache/${this.hash}.dat`)) await fs.remove(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${this.hash}.dat`))
} }
static async upload(opts) { static async upload(opts) {
@ -125,9 +125,9 @@ module.exports = class Asset extends Model {
// Move temp upload to cache // Move temp upload to cache
if (opts.mode === 'upload') { if (opts.mode === 'upload') {
await fs.move(opts.path, path.join(process.cwd(), `data/cache/${fileHash}.dat`), { overwrite: true }) await fs.move(opts.path, path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${fileHash}.dat`), { overwrite: true })
} else { } else {
await fs.copy(opts.path, path.join(process.cwd(), `data/cache/${fileHash}.dat`), { overwrite: true }) await fs.copy(opts.path, path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${fileHash}.dat`), { overwrite: true })
} }
// Add to Storage // Add to Storage
@ -158,7 +158,7 @@ module.exports = class Asset extends Model {
static async getAssetFromCache(assetPath, res) { static async getAssetFromCache(assetPath, res) {
const fileHash = assetHelper.generateHash(assetPath) const fileHash = assetHelper.generateHash(assetPath)
const cachePath = path.join(process.cwd(), `data/cache/${fileHash}.dat`) const cachePath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${fileHash}.dat`)
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
res.type(path.extname(assetPath)) res.type(path.extname(assetPath))
@ -174,7 +174,7 @@ module.exports = class Asset extends Model {
static async getAssetFromDb(assetPath, res) { static async getAssetFromDb(assetPath, res) {
const fileHash = assetHelper.generateHash(assetPath) const fileHash = assetHelper.generateHash(assetPath)
const cachePath = path.join(process.cwd(), `data/cache/${fileHash}.dat`) const cachePath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${fileHash}.dat`)
const asset = await WIKI.models.assets.query().where('hash', fileHash).first() const asset = await WIKI.models.assets.query().where('hash', fileHash).first()
if (asset) { if (asset) {
@ -188,6 +188,6 @@ module.exports = class Asset extends Model {
} }
static async flushTempUploads() { static async flushTempUploads() {
return fs.emptyDir(path.join(process.cwd(), `data/uploads`)) return fs.emptyDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `uploads`))
} }
} }

View File

@ -728,7 +728,7 @@ module.exports = class Page extends Model {
* @returns {Promise} Promise with no value * @returns {Promise} Promise with no value
*/ */
static async savePageToCache(page) { static async savePageToCache(page) {
const cachePath = path.join(process.cwd(), `data/cache/${page.hash}.bin`) const cachePath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${page.hash}.bin`)
await fs.outputFile(cachePath, WIKI.models.pages.cacheSchema.encode({ await fs.outputFile(cachePath, WIKI.models.pages.cacheSchema.encode({
id: page.id, id: page.id,
authorId: page.authorId, authorId: page.authorId,
@ -757,7 +757,7 @@ module.exports = class Page extends Model {
*/ */
static async getPageFromCache(opts) { static async getPageFromCache(opts) {
const pageHash = pageHelper.generateHash({ path: opts.path, locale: opts.locale, privateNS: opts.isPrivate ? 'TODO' : '' }) const pageHash = pageHelper.generateHash({ path: opts.path, locale: opts.locale, privateNS: opts.isPrivate ? 'TODO' : '' })
const cachePath = path.join(process.cwd(), `data/cache/${pageHash}.bin`) const cachePath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${pageHash}.bin`)
try { try {
const pageBuffer = await fs.readFile(cachePath) const pageBuffer = await fs.readFile(cachePath)
@ -785,14 +785,14 @@ module.exports = class Page extends Model {
* @returns {Promise} Promise with no value * @returns {Promise} Promise with no value
*/ */
static async deletePageFromCache(page) { static async deletePageFromCache(page) {
return fs.remove(path.join(process.cwd(), `data/cache/${page.hash}.bin`)) return fs.remove(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache/${page.hash}.bin`))
} }
/** /**
* Flush the contents of the Cache * Flush the contents of the Cache
*/ */
static async flushCache() { static async flushCache() {
return fs.emptyDir(path.join(process.cwd(), `data/cache`)) return fs.emptyDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, `cache`))
} }
/** /**

View File

@ -15,7 +15,7 @@ const commonDisk = require('../disk/common')
module.exports = { module.exports = {
git: null, git: null,
repoPath: path.join(process.cwd(), 'data/repo'), repoPath: path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'repo'),
async activated() { async activated() {
// not used // not used
}, },
@ -66,7 +66,7 @@ module.exports = {
WIKI.logger.info('(STORAGE/GIT) Setting SSH Command config...') WIKI.logger.info('(STORAGE/GIT) Setting SSH Command config...')
if (this.config.sshPrivateKeyMode === 'contents') { if (this.config.sshPrivateKeyMode === 'contents') {
try { try {
this.config.sshPrivateKeyPath = path.join(WIKI.ROOTPATH, 'data/secure/git-ssh.pem') this.config.sshPrivateKeyPath = path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'secure/git-ssh.pem')
await fs.outputFile(this.config.sshPrivateKeyPath, this.config.sshPrivateKeyContent, { await fs.outputFile(this.config.sshPrivateKeyPath, this.config.sshPrivateKeyContent, {
encoding: 'utf8', encoding: 'utf8',
mode: 0o600 mode: 0o600

View File

@ -144,10 +144,9 @@ module.exports = () => {
// Create directory structure // Create directory structure
WIKI.logger.info('Creating data directories...') WIKI.logger.info('Creating data directories...')
const dataPath = path.join(process.cwd(), 'data') await fs.ensureDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath))
await fs.ensureDir(dataPath) await fs.emptyDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'cache'))
await fs.emptyDir(path.join(dataPath, 'cache')) await fs.ensureDir(path.resolve(WIKI.ROOTPATH, WIKI.config.dataPath, 'uploads'))
await fs.ensureDir(path.join(dataPath, 'uploads'))
// Generate certificates // Generate certificates
WIKI.logger.info('Generating certificates...') WIKI.logger.info('Generating certificates...')