diff --git a/config.json b/config.json index a6b98ab..2e6022a 100644 --- a/config.json +++ b/config.json @@ -3,5 +3,9 @@ "brokerUser": "wn", "brokerPass": "locutus", "brokerCa": "/home/wn/server-ca.crt", - "mongoDbUrl": "mongodb://localhost/hottis" + "mongoDbUrl": "mongodb://localhost/hottis", + "smtpHost": "localhost", + "smtpPort": 25, + "smtpSender": "dispatcher@hottis.de", + "smtpReceiver": "woho@hottis.de" } \ No newline at end of file diff --git a/dist/config.js b/dist/config.js new file mode 100644 index 0000000..d7ae02e --- /dev/null +++ b/dist/config.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +const fs = require("fs"); +const cmdargs = require("command-line-args"); +const OPTION_DEFINITIONS = [ + { name: 'verbose', alias: 'v', type: Boolean }, + { name: 'config', alias: 'c', type: String, defaultValue: '~/mqttDispatcher.conf' } +]; +function readConfig() { + let options = cmdargs(OPTION_DEFINITIONS); + exports.dict = JSON.parse(fs.readFileSync(options.config, "utf8")); +} +exports.readConfig = readConfig; +//# sourceMappingURL=config.js.map \ No newline at end of file diff --git a/dist/main.js b/dist/main.js index 81ba9e7..7b07298 100644 --- a/dist/main.js +++ b/dist/main.js @@ -2,23 +2,17 @@ Object.defineProperty(exports, "__esModule", { value: true }); const log = require("./log"); const mqtt = require("./mqttdispatcher"); -const fs = require("fs"); -const cmdargs = require("command-line-args"); +const config = require("./config"); const EspThermToJson = require("./espthermtojson"); const MissingEventDetector = require("./missingeventdetector"); -const OPTION_DEFINITIONS = [ - { name: 'verbose', alias: 'v', type: Boolean }, - { name: 'config', alias: 'c', type: String, defaultValue: '~/mqttDispatcher.conf' } -]; -const OPTIONS = cmdargs(OPTION_DEFINITIONS); -const CONFIG = JSON.parse(fs.readFileSync(OPTIONS.config, "utf8")); log.info("Dispatcher starting"); -let dispatcher = new mqtt.MqttDispatcher(CONFIG.brokerUrl, CONFIG.brokerUser, CONFIG.brokerPass, CONFIG.brokerCa); +config.readConfig(); +let dispatcher = new mqtt.MqttDispatcher(config.dict.brokerUrl, config.dict.brokerUser, config.dict.brokerPass, config.dict.brokerCa); const ESP_THERM_TOPIC = 'IoT/espThermometer2/#'; dispatcher.register(ESP_THERM_TOPIC, 'toJson', EspThermToJson.espThermToJson); let missingeventdetector = new MissingEventDetector.MissingEventDetector(); dispatcher.register(ESP_THERM_TOPIC, 'MissingEventDetector', missingeventdetector); -// let mongo : MongoSave.MongoSave = new MongoSave.MongoSave(CONFIG.mongoDbUrl) +// let mongo : MongoSave.MongoSave = new MongoSave.MongoSave(config.dict.mongoDbUrl) // dispatcher.register(ESP_THERM_TOPIC, 'MongoSave', mongo); dispatcher.exec(); log.info("Dispatcher running"); diff --git a/dist/missingeventdetector.js b/dist/missingeventdetector.js index 8c201d6..1061fe8 100644 --- a/dist/missingeventdetector.js +++ b/dist/missingeventdetector.js @@ -4,11 +4,8 @@ const nodemailer = require("nodemailer"); const log = require("./log"); const CallChain = require("./callchain"); const Processor = require("./processor"); +const config = require("./config"); const CHECK_PERIOD = 60; // seconds -const SMTP_HOST = "localhost"; -const SMTP_PORT = 25; -const SMTP_SENDER = "dispatcher@hottis.de"; -const SMTP_RECEIVER = "woho@hottis.de"; class ClientEntry { } class MissingEventProcessor extends Processor.AProcessor { @@ -16,8 +13,8 @@ class MissingEventProcessor extends Processor.AProcessor { super("MissingEventProcessor"); this.clientMap = new Map(); this.smtp = nodemailer.createTransport({ - host: SMTP_HOST, - port: SMTP_PORT, + host: config.dict.smtpHost, + port: config.dict.smtpPort, secure: false }); this.timer = setInterval(() => { @@ -27,8 +24,8 @@ class MissingEventProcessor extends Processor.AProcessor { log.info(`Checking ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}`); if ((value.avgDelay != 0) && (elapsedTime > (value.avgDelay * 3))) { let mail = { - from: SMTP_SENDER, - to: SMTP_RECEIVER, + from: config.dict.smtpSender, + to: config.dict.smtpReceiver, subject: `Missing Event Detected for ${key}`, text: `Missing Event Detected: ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}` }; diff --git a/src/config.ts b/src/config.ts new file mode 100644 index 0000000..3a00697 --- /dev/null +++ b/src/config.ts @@ -0,0 +1,18 @@ +import * as fs from 'fs' +import * as cmdargs from 'command-line-args' + + + +const OPTION_DEFINITIONS = [ + { name: 'verbose', alias: 'v', type: Boolean }, + { name: 'config', alias: 'c', type: String, defaultValue: '~/mqttDispatcher.conf' } +]; + + +export let dict + +export function readConfig() { + let options = cmdargs(OPTION_DEFINITIONS) + dict = JSON.parse(fs.readFileSync(options.config, "utf8")) +} + diff --git a/src/main.ts b/src/main.ts index cafdd62..4a502b8 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,28 +1,21 @@ import * as log from './log' import * as mqtt from './mqttdispatcher' import * as callchain from './callchain' -import * as fs from 'fs' -import * as cmdargs from 'command-line-args' +import * as config from './config' import * as EspThermToJson from './espthermtojson' import * as MongoSave from './mongosave' import * as MissingEventDetector from './missingeventdetector' -const OPTION_DEFINITIONS = [ - { name: 'verbose', alias: 'v', type: Boolean }, - { name: 'config', alias: 'c', type: String, defaultValue: '~/mqttDispatcher.conf' } -]; -const OPTIONS = cmdargs(OPTION_DEFINITIONS) -const CONFIG = JSON.parse(fs.readFileSync(OPTIONS.config, "utf8")) - - log.info("Dispatcher starting") -let dispatcher = new mqtt.MqttDispatcher(CONFIG.brokerUrl, - CONFIG.brokerUser, CONFIG.brokerPass, CONFIG.brokerCa) +config.readConfig() + +let dispatcher = new mqtt.MqttDispatcher(config.dict.brokerUrl, + config.dict.brokerUser, config.dict.brokerPass, config.dict.brokerCa) const ESP_THERM_TOPIC : string = 'IoT/espThermometer2/#' dispatcher.register(ESP_THERM_TOPIC, 'toJson', EspThermToJson.espThermToJson) @@ -31,8 +24,8 @@ let missingeventdetector : MissingEventDetector.MissingEventDetector = new MissingEventDetector.MissingEventDetector() dispatcher.register(ESP_THERM_TOPIC, 'MissingEventDetector', missingeventdetector) -let mongo : MongoSave.MongoSave = new MongoSave.MongoSave(CONFIG.mongoDbUrl) -dispatcher.register(ESP_THERM_TOPIC, 'MongoSave', mongo); +// let mongo : MongoSave.MongoSave = new MongoSave.MongoSave(config.dict.mongoDbUrl) +// dispatcher.register(ESP_THERM_TOPIC, 'MongoSave', mongo); dispatcher.exec() diff --git a/src/missingeventdetector.ts b/src/missingeventdetector.ts index a8e5b02..a089aec 100644 --- a/src/missingeventdetector.ts +++ b/src/missingeventdetector.ts @@ -2,13 +2,10 @@ import * as nodemailer from 'nodemailer' import * as log from './log' import * as CallChain from './callchain' import * as Processor from './processor' +import * as config from './config' const CHECK_PERIOD : number = 60 // seconds -const SMTP_HOST : string = "localhost" -const SMTP_PORT : number = 25 -const SMTP_SENDER : string = "dispatcher@hottis.de" -const SMTP_RECEIVER : string = "woho@hottis.de" class ClientEntry { @@ -30,8 +27,8 @@ class MissingEventProcessor extends Processor.AProcessor { super("MissingEventProcessor") this.smtp = nodemailer.createTransport({ - host: SMTP_HOST, - port: SMTP_PORT, + host: config.dict.smtpHost, + port: config.dict.smtpPort, secure: false }); @@ -43,8 +40,8 @@ class MissingEventProcessor extends Processor.AProcessor { if ((value.avgDelay != 0) && (elapsedTime > (value.avgDelay * 3))) { let mail : nodemailer.SendMailOptions = { - from: SMTP_SENDER, - to: SMTP_RECEIVER, + from: config.dict.smtpSender, + to: config.dict.smtpReceiver, subject: `Missing Event Detected for ${key}`, text: `Missing Event Detected: ${key}, elapsed: ${elapsedTime / 1000}, avg. delay: ${value.avgDelay / 1000}` };