diff --git a/index.js b/index.js index ad33f61..b560ea8 100644 --- a/index.js +++ b/index.js @@ -3,8 +3,11 @@ var url = require('url'); var winston = require('winston'); var strftime = require('strftime'); var strptime = require('micro-strptime').strptime; +var request = require('request'); +var striptags = require('striptags'); var fs = require('fs'); var ini = require('ini'); + var config = ini.parse(fs.readFileSync(__dirname + '/config.ini', 'utf-8')); var last_message_hash; @@ -44,14 +47,17 @@ function sendIgnoreResponse(destination, message) { function onPm(data) { logger.info('onPM()', {data: data}); - var new_message_hash = data.sender + ': ' + data.message; + var message = striptags(data.message); + var new_message_hash = data.sender + ': ' + message; if (last_message_hash == new_message_hash) { return; } last_message_hash = new_message_hash; - ym.sendPM(data.sender, "Pesan anda telah diterima dan akan segera diproses: " + data.message); + ym.sendPM(data.sender, "Pesan anda telah diterima dan akan segera diproses: " + message); + + forwardMessageToEvo(data.sender, message, formatTimestamp(data.time)); } function onOfflinePM(data) { @@ -68,6 +74,34 @@ function onBuddyAddRequest(data) { function onHttpIncomingMessage(request, response) { var qs = url.parse(request.url, true).query; logger.info("onHttpIncomingMessage()", {qs: qs}); + + ym.sendPM(qs.to, qs.msg); + response.end('OK'); +} + +function formatTimestamp(ts) { + var _ts = strptime(ts, '%A %b %d %Y %H:%M:%S GMT%z'); + return strftime('%F %T', _ts); +} + +function forwardMessageToEvo(sender, message, ts) { + var opts = { + url: config.globals.evo_url, + qs: { + msg: message, + msisdn: sender, + smsc: config.globals.smsc, + ts: ts + } + }; + + logger.info("Forwarding message to evo", {request_opts: opts}); + request(opts, function(err, response, body) { + if (err) { + logger.warn('Error forwarding to evo: ' + err); + return; + } + }); } function createHttpServer() { diff --git a/package.json b/package.json index 9a3b760..c552f63 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,8 @@ "url": "~0.11.0", "winston": "~1.1.1", "strftime": "~0.9.2", - "micro-strptime": "~0.2.2" + "micro-strptime": "~0.2.2", + "request": "~2.65.0", + "striptags": "~2.0.4" } }