From 2df79403922cc31fcb5060600c29915a975e24b4 Mon Sep 17 00:00:00 2001 From: azivner Date: Mon, 23 Oct 2017 23:30:23 -0400 Subject: [PATCH] all user files are now stored in one directory, by default trilium-data in users home directory --- app.js | 3 ++- services/backup.js | 13 ++++++++----- services/config.js | 3 ++- services/data_dir.js | 17 +++++++++++++++++ 4 files changed, 29 insertions(+), 7 deletions(-) create mode 100644 services/data_dir.js diff --git a/app.js b/app.js index 24da2ef12..f62c2763c 100644 --- a/app.js +++ b/app.js @@ -24,12 +24,13 @@ const recentChangesApiRoute = require('./routes/api/recent_changes'); const settingsApiRoute = require('./routes/api/settings'); const passwordApiRoute = require('./routes/api/password'); const migrationApiRoute = require('./routes/api/migration'); +const dataDir = require('./services/data_dir'); const db = require('sqlite'); const config = require('./services/config'); -db.open(config.Document.documentPath, { Promise }); +db.open(dataDir.DOCUMENT_PATH, { Promise }); const app = express(); diff --git a/services/backup.js b/services/backup.js index 8a26de3df..892aa4266 100644 --- a/services/backup.js +++ b/services/backup.js @@ -4,6 +4,7 @@ const utils = require('./utils'); const sql = require('./sql'); const config = require('./config'); const fs = require('fs-extra'); +const dataDir = require('./data_dir'); async function regularBackup() { const now = utils.nowTimestamp(); @@ -19,12 +20,15 @@ async function regularBackup() { async function backupNow() { const now = utils.nowTimestamp(); - const document_path = config.Document.documentPath; const backup_directory = config.Backup.backupDirectory; const date_str = new Date().toISOString().substr(0, 19); - fs.copySync(document_path, backup_directory + "/" + "backup-" + date_str + ".db"); + if (!fs.existsSync(dataDir.BACKUP_DIR)) { + fs.mkdirSync(dataDir.BACKUP_DIR, 0o700); + } + + fs.copySync(dataDir.DOCUMENT_PATH, dataDir.BACKUP_DIR + "/" + "backup-" + date_str + ".db"); await sql.setOption('last_backup_date', now); //await sql.commit(); @@ -32,9 +36,8 @@ async function backupNow() { async function cleanupOldBackups() { const now = new Date(); - const backupDirectory = config.Backup.backupDirectory; - fs.readdirSync(backupDirectory).forEach(file => { + fs.readdirSync(dataDir.BACKUP_DIR).forEach(file => { const match = file.match(/backup-([0-9 -:]+)\.db/); if (match) { @@ -45,7 +48,7 @@ async function cleanupOldBackups() { if (now.getTime() - date.getTime() > 30 * 24 * 3600 * 1000) { console.log("Removing old backup - " + file); - fs.unlink(backupDirectory + "/" + file); + fs.unlink(dataDir.BACKUP_DIR + "/" + file); } } }); diff --git a/services/config.js b/services/config.js index ce3c0a99b..fc3fd3649 100644 --- a/services/config.js +++ b/services/config.js @@ -2,7 +2,8 @@ const ini = require('ini'); const fs = require('fs'); +const dataDir = require('./data_dir'); -const config = ini.parse(fs.readFileSync('config.ini', 'utf-8')); +const config = ini.parse(fs.readFileSync(dataDir.TRILIUM_DATA_DIR + '/config.ini', 'utf-8')); module.exports = config; \ No newline at end of file diff --git a/services/data_dir.js b/services/data_dir.js new file mode 100644 index 000000000..6ba81731c --- /dev/null +++ b/services/data_dir.js @@ -0,0 +1,17 @@ +const os = require('os'); +const fs = require('fs'); + +const TRILIUM_DATA_DIR = process.env.TRILIUM_DATA_DIR || os.homedir() + "/trilium-data"; + +if (!fs.existsSync(TRILIUM_DATA_DIR)) { + fs.mkdirSync(TRILIUM_DATA_DIR, 0o700); +} + +const DOCUMENT_PATH = TRILIUM_DATA_DIR + "/document.db"; +const BACKUP_DIR = TRILIUM_DATA_DIR + "/backup"; + +module.exports = { + TRILIUM_DATA_DIR, + DOCUMENT_PATH, + BACKUP_DIR +}; \ No newline at end of file