diff --git a/src/services/config.js b/src/services/config.js index ffa957e5b..8bc0723a7 100644 --- a/src/services/config.js +++ b/src/services/config.js @@ -8,14 +8,12 @@ const resourceDir = require('./resource_dir'); const configSampleFilePath = path.resolve(resourceDir.RESOURCE_DIR, "config-sample.ini"); -const configFilePath = dataDir.TRILIUM_DATA_DIR + '/config.ini'; - -if (!fs.existsSync(configFilePath)) { +if (!fs.existsSync(dataDir.CONFIG_INI_PATH)) { const configSample = fs.readFileSync(configSampleFilePath).toString('utf8'); - fs.writeFileSync(configFilePath, configSample); + fs.writeFileSync(dataDir.CONFIG_INI_PATH, configSample); } -const config = ini.parse(fs.readFileSync(configFilePath, 'utf-8')); +const config = ini.parse(fs.readFileSync(dataDir.CONFIG_INI_PATH, 'utf-8')); -module.exports = config; \ No newline at end of file +module.exports = config; diff --git a/src/services/data_dir.js b/src/services/data_dir.js index f286faaf6..ea2f4b464 100644 --- a/src/services/data_dir.js +++ b/src/services/data_dir.js @@ -64,11 +64,13 @@ const DOCUMENT_PATH = TRILIUM_DATA_DIR + path.sep + "document.db"; const BACKUP_DIR = TRILIUM_DATA_DIR + path.sep + "backup"; const LOG_DIR = TRILIUM_DATA_DIR + path.sep + "log"; const ANONYMIZED_DB_DIR = TRILIUM_DATA_DIR + path.sep + "anonymized-db"; +const CONFIG_INI_PATH = TRILIUM_DATA_DIR + '/config.ini'; module.exports = { TRILIUM_DATA_DIR, DOCUMENT_PATH, BACKUP_DIR, LOG_DIR, - ANONYMIZED_DB_DIR + ANONYMIZED_DB_DIR, + CONFIG_INI_PATH }; diff --git a/src/services/port.js b/src/services/port.js index 9d231c813..b730755c0 100644 --- a/src/services/port.js +++ b/src/services/port.js @@ -1,15 +1,27 @@ const config = require('./config'); const utils = require('./utils'); const env = require('./env'); +const dataDir = require('./data_dir'); + +function parseAndValidate(portStr, source) { + const portNum = parseInt(portStr); + + if (!portNum || portNum < 0 || portNum >= 65536) { + console.log(`FATAL ERROR: Invalid port value "${portStr}" from ${source}, should be a number between 0 and 65536.`); + process.exit(-1); + } + + return portNum; +} + +let port; if (process.env.TRILIUM_PORT) { - module.exports = parseInt(process.env.TRILIUM_PORT); - return; + port = parseAndValidate(process.env.TRILIUM_PORT, "environment variable TRILIUM_PORT"); +} else if (utils.isElectron()) { + port = env.isDev() ? 37740 : 37840; +} else { + port = parseAndValidate(config['Network']['port'] || '3000', "Network.port in " + dataDir.CONFIG_INI_PATH); } -if (utils.isElectron()) { - module.exports = env.isDev() ? 37740 : 37840; -} -else { - module.exports = config['Network']['port'] || '3000'; -} +module.exports = port;