diff --git a/index.js b/index.js index 351bee3..71639c0 100644 --- a/index.js +++ b/index.js @@ -4,4 +4,5 @@ process.chdir(__dirname); require('fs').writeFileSync('pid.txt', process.pid); +require('./lib/http-command-server'); require('./lib/modem'); diff --git a/lib/http-command-server/index.js b/lib/http-command-server/index.js new file mode 100644 index 0000000..fd95fc2 --- /dev/null +++ b/lib/http-command-server/index.js @@ -0,0 +1,36 @@ +'use strict'; + +const express = require('express'); + +const config = require('komodo-sdk/config'); +const logger = require('komodo-sdk/logger'); + +const routerSMS = require('./router-sms'); + +const app = express(); + +function middlewareCustomLog(req, res, next) { + logger.info('Incoming request on HTTP command server', { ip: req.ip, url: req.url }); + next(); +} + +function middlewareCheckApikey(req, res, next) { + if (!req.query.apikey || (req.query.apikey !== config.http_command_server.apikey)) { + res.json({ + status: 'NOT-OK', + error: 'INVALID_APIKEY', + message: 'Invalid apikey', + }); + } else { + next(); + } +} + +app.use(middlewareCustomLog); +app.use(middlewareCheckApikey); +app.use('/sms', routerSMS); + + +app.listen(config.http_command_server.listen_port, () => { + logger.info(`HTTP command server listeing on port ${config.http_command_server.listen_port}`); +}); diff --git a/lib/http-command-server/router-sms.js b/lib/http-command-server/router-sms.js new file mode 100644 index 0000000..00e8c32 --- /dev/null +++ b/lib/http-command-server/router-sms.js @@ -0,0 +1,28 @@ +'use strict'; + +const express = require('express'); + +const modem = require('../modem'); + +const router = express.Router(); +module.exports = router; + +function handlerIndex(req, res) { + if (!req.query || !req.query.number || !req.query.msg) { + res.json({ + status: 'NOT-OK', + error: 'INVALID-PARAMETER', + message: 'Invalid parameter. Missing number or msg parameter.', + }); + return; + } + + res.json({ + status: 'OK', + error: false, + message: 'Message queued.', + }); + modem.sendSMS(req.query.number, req.query.msg); +} + +router.get('/', handlerIndex); diff --git a/package.json b/package.json index 39d6ceb..0cb9c7f 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ "dependencies": { "@serialport/parser-delimiter": "^2.0.2", "@serialport/parser-readline": "^2.0.2", + "express": "^4.17.1", "komodo-sdk": "git+http://gitlab.kodesumber.com/komodo/komodo-sdk.git", "locks": "^0.2.2", "moment": "^2.24.0",