diff --git a/config.sample.json b/config.sample.json index 156a455..1ba9097 100644 --- a/config.sample.json +++ b/config.sample.json @@ -7,7 +7,8 @@ } }, "report_url": { - "incoming_sms": "http://localhost:16481/apikey/PLEASE_CHANGE_ME/on-sms" + "incoming_sms": "http://localhost:16481/apikey/PLEASE_CHANGE_ME/on-sms", + "register_modem": "http://localhost:16481/apikey/PLEASE_CHANGE_ME/modems/set" }, "http_command_server": { "apikey": "PLEASE_CHANGE_ME", diff --git a/lib/modem.js b/lib/modem.js index 47a2a06..e77f035 100644 --- a/lib/modem.js +++ b/lib/modem.js @@ -20,6 +20,7 @@ const sms = require('./sms'); const dbCops = require('./db-cops'); const reportSender = require('./report-sender'); const msisdn = require('./msisdn'); +const registerModem = require('./register-modem'); const modemInfo = { device: config.modem.device, @@ -344,6 +345,7 @@ function init() { mutex.releaseLockWaitForCommand(); logger.verbose('Init completed'); + registerModem(); registerSignalStrengthBackgroundQuery(); }); } diff --git a/lib/register-modem.js b/lib/register-modem.js new file mode 100644 index 0000000..fb3eea9 --- /dev/null +++ b/lib/register-modem.js @@ -0,0 +1,40 @@ +'use strict'; + +const path = require('path'); +const request = require('request'); + +const config = require('komodo-sdk/config'); +const logger = require('komodo-sdk/logger'); + +function reportUrl() { + if (config.report_url.register_modem) { + return config.report_url.register_modem; + } + + const baseUrl = path.dirname(config.report_url.incoming_sms); + return `${baseUrl}/modems/set`; +} + +module.exports = (modemInfo) => { + const requestOptions = { + url: reportUrl(), + qs: { + modem: config.name, + modem_imsi: modemInfo.imsi, + modem_msisdn: modemInfo.msisdn, + modem_device: config.modem.device, + uptime: Math.floor(process.uptime()), + report_port: config.http_command_server.listen_port, + report_apikey: config.http_command_server.apikey, + report_path_sms: '/sms', + }, + }; + + request(requestOptions, (err, res) => { + if (err) { + logger.warn(`Error registering modem. ${err.toString()}`); + } else if (res.statusCode !== 200) { + logger.warn(`SMS center respond with HTTP status code ${res.statusCode}.`); + } + }); +};