handler-callback-server.js
1.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
"use strict";
/**
* Modul untuk menerima callback dari modem handler jika ada SMS masuk.
*/
const express = require('express');
const messagingService = require('komodo-center-messaging-client-lib');
const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');
const transport = require('./transport');
const partnerLastSeen = require('./partner-last-seen');
const app = express();
messagingService.setTransport(transport);
function apikeyChecker(req, res, next) {
res.locals.has_valid_apikey = req.params.apikey === config.handler_callback_server.apikey;
if (res.locals.has_valid_apikey) {
next();
}
else {
res.end('HANDLER-CALLBACK-SERVER: Invalid apikey');
}
}
function onIncomingSms(req, res) {
res.end('OK');
if (!req.query.number) return;
if (req.query.number.indexOf('+') !== 0) return;
const numberWithSuffix = req.query.number + (config.number_suffix || '');
partnerLastSeen.set(req.query.number, req.query.modem);
logger.info('HANDLER-CALLBACK-SERVER: Incoming SMS', { modem: req.query.modem, from: req.query.number, from_with_suffix: numberWithSuffix, msg: req.query.msg });
messagingService.onIncomingMessage({
me: req.query.modem,
partner: numberWithSuffix,
msg: req.query.msg
})
}
app.use(function(req, res, next) {
logger.verbose('HANDLER-CALLBACK-SERVER: Incoming http request', { ip: req.ip, url: req.url });
next();
})
app.use('/apikey/:apikey', apikeyChecker);
app.get('/apikey/:apikey/on-sms', onIncomingSms);
app.get('/apikey/:apikey/inbox', onIncomingSms);
app.get('/apikey/:apikey/on-sms/inbox', onIncomingSms);
const listenPort = config && config.handler_callback_server ? config.handler_callback_server.listen_port : null;
listenPort && app.listen(listenPort, () => {
logger.info('HTTP Handler Callback server listening on port ' + listenPort);
})