diff --git a/index.js b/index.js index 5987eec..0737734 100644 --- a/index.js +++ b/index.js @@ -32,10 +32,6 @@ import yargs from 'yargs'; - - - - const params = yargs .usage('Usage: $0 [options]') diff --git a/src/env.js b/src/env.js index 13b4543..6f1b809 100644 --- a/src/env.js +++ b/src/env.js @@ -40,12 +40,15 @@ import {version} from '../package.json'; import axios from 'axios'; import url from 'url'; -const defaultConfigFilePath = path.resolve(process.cwd(), 'config.yml'); const vector = { version: global.EXTERNAL_VERSION_FOR_TEST || version, - configFile: global.EXTERNAL_CONFIG_FILE || defaultConfigFilePath, + configFile: global.EXTERNAL_CONFIG_FILE || + ((global.EXTERNAL_VOLUME_DIRECTORY) + ? global.EXTERNAL_VOLUME_DIRECTORY + 'config.yml' + : path.resolve(process.cwd(), 'config.yml')), clientId: Buffer.from("bnR0LWJncGFsZXJ0ZXI=", 'base64').toString('ascii') }; + let config = { environment: "production", connectors: [ @@ -158,19 +161,20 @@ if (fs.existsSync(vector.configFile)) { responseType: 'blob', // important }) .then((response) => { - fs.writeFileSync(defaultConfigFilePath, response.data); - yaml.safeLoad(fs.readFileSync(defaultConfigFilePath, 'utf8')); // Test readability and format + fs.writeFileSync(vector.configFile, response.data); + yaml.safeLoad(fs.readFileSync(vector.configFile, 'utf8')); // Test readability and format }) .catch(() => { - fs.writeFileSync(defaultConfigFilePath, ymlBasicConfig); // Download failed, write simple default config + fs.writeFileSync(vector.configFile, ymlBasicConfig); // Download failed, write simple default config }) - } +config.volume = config.volume || global.EXTERNAL_VOLUME_DIRECTORY || "./"; + const errorTransport = new FileLogger({ logRotatePattern: config.logging.logRotatePattern, filename: 'error-%DATE%.log', - directory: config.logging.directory, + directory: config.volume + config.logging.directory, backlogSize: config.logging.backlogSize, maxRetainedFiles: config.logging.maxRetainedFiles, maxFileSizeMB: config.logging.maxFileSizeMB, @@ -182,7 +186,7 @@ const errorTransport = new FileLogger({ const verboseTransport = new FileLogger({ logRotatePattern: config.logging.logRotatePattern, filename: 'reports-%DATE%.log', - directory: config.logging.directory, + directory: config.volume + config.logging.directory, backlogSize: config.logging.backlogSize, maxRetainedFiles: config.logging.maxRetainedFiles, maxFileSizeMB: config.logging.maxFileSizeMB, diff --git a/src/inputs/input.js b/src/inputs/input.js index da6ac60..463d266 100644 --- a/src/inputs/input.js +++ b/src/inputs/input.js @@ -187,7 +187,7 @@ export default class Input { const asns = answer.asns.split(","); return generatePrefixes( asns, - "prefixes.yml", + this.config.volume + "prefixes.yml", [], answer.i, null, diff --git a/src/inputs/inputYml.js b/src/inputs/inputYml.js index b5e2f14..11cc0b3 100644 --- a/src/inputs/inputYml.js +++ b/src/inputs/inputYml.js @@ -50,7 +50,7 @@ export default class InputYml extends Input { }; loadPrefixes = () => { - if (!fs.existsSync('./' + this.config.monitoredPrefixesFiles[0])) { + if (!fs.existsSync(this.config.volume + this.config.monitoredPrefixesFiles[0])) { return this.generate() .then(() => this._loadPrefixes()); } @@ -67,8 +67,8 @@ export default class InputYml extends Input { let monitoredPrefixesFile = {}; let fileContent; - if (fs.existsSync('./' + prefixesFile)) { - fileContent = fs.readFileSync('./' + prefixesFile, 'utf8'); + if (fs.existsSync(this.config.volume + prefixesFile)) { + fileContent = fs.readFileSync(this.config.volume + prefixesFile, 'utf8'); try { monitoredPrefixesFile = yaml.safeLoad(fileContent) || {}; } catch (error) { diff --git a/src/reports/reportFile.js b/src/reports/reportFile.js index d9106f4..6f1dcb6 100644 --- a/src/reports/reportFile.js +++ b/src/reports/reportFile.js @@ -39,7 +39,7 @@ export default class ReportFile extends Report { super(channels, params, env); this.persistAlerts = params.persistAlertData; - this.alertsDirectory = params.alertDataDirectory; + this.alertsDirectory = env.config.volume + params.alertDataDirectory; if (this.persistAlerts && !this.alertsDirectory) { this.persistAlerts = false; this.logger.log({ diff --git a/src/worker.js b/src/worker.js index 6eb9609..e5276c3 100644 --- a/src/worker.js +++ b/src/worker.js @@ -30,17 +30,18 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -import Consumer from "./consumer"; import LossyBuffer from "./utils/lossyBuffer"; -import ConnectorFactory from "./connectorFactory"; import cluster from "cluster"; import fs from "fs"; export default class Worker { constructor(configFile, volume) { - global.EXTERNAL_CONFIG_FILE = configFile; + global.EXTERNAL_CONFIG_FILE = global.EXTERNAL_CONFIG_FILE || configFile; + global.EXTERNAL_VOLUME_DIRECTORY = global.EXTERNAL_VOLUME_DIRECTORY || volume; const env = require("./env"); + const Consumer = require("./consumer").default; + this.config = env.config; this.logger = env.logger; this.input = env.input; @@ -84,6 +85,7 @@ export default class Worker { } } + const ConnectorFactory = require("./connectorFactory").default; const connectorFactory = new ConnectorFactory(); if (this.config.uptimeMonitor) { diff --git a/tests/1_config.js b/tests/1_config.js index ee914a0..248edc5 100644 --- a/tests/1_config.js +++ b/tests/1_config.js @@ -34,10 +34,8 @@ var chai = require("chai"); var chaiSubset = require('chai-subset'); var readLastLines = require('read-last-lines'); var moment = require('moment'); -var model = require('../src/model'); chai.use(chaiSubset); var expect = chai.expect; -var AS = model.AS; var asyncTimeout = 20000; global.EXTERNAL_VERSION_FOR_TEST = "0.0.1"; @@ -79,7 +77,8 @@ describe("Composition", function() { "multiProcess", "maxMessagesPerSecond", "fadeOffSeconds", - "checkFadeOffGroupsSeconds" + "checkFadeOffGroupsSeconds", + "volume" ]); expect(config.connectors[0]).to.have .property('class') diff --git a/tests/3_uptimemonitor.js b/tests/3_uptimemonitor.js index 0eee666..1a1c1f7 100644 --- a/tests/3_uptimemonitor.js +++ b/tests/3_uptimemonitor.js @@ -33,10 +33,8 @@ var chai = require("chai"); var chaiSubset = require('chai-subset'); var axios = require('axios'); -var model = require('../src/model'); chai.use(chaiSubset); var expect = chai.expect; -var AS = model.AS; var asyncTimeout = 20000; global.EXTERNAL_VERSION_FOR_TEST = "0.0.1";