Commit 5c235d5a0c4121ad0cc32595690f9cdeb67663a0

Authored by Adhidarma Hadiwinoto
1 parent 7459534beb
Exists in master

downgrade winston

Showing 2 changed files with 1 additions and 3 deletions Inline Diff

1 var request = require('request'); 1 var request = require('request');
2 var http = require('http'); 2 var http = require('http');
3 var url = require('url'); 3 var url = require('url');
4 var fs = require('fs'); 4 var fs = require('fs');
5 var ini = require('ini'); 5 var ini = require('ini');
6 var strftime = require('strftime'); 6 var strftime = require('strftime');
7 var xmpp = require('simple-xmpp'); 7 var xmpp = require('simple-xmpp');
8 var winston = require('winston'); 8 var winston = require('winston');
9 9
10 var config = ini.parse(fs.readFileSync(__dirname + '/config.ini', 'utf-8')); 10 var config = ini.parse(fs.readFileSync(__dirname + '/config.ini', 'utf-8'));
11 11
12 var warming_up = true; 12 var warming_up = true;
13 13
14 var log_level = 'info'; 14 var log_level = 'info';
15 if (config.globals.log_level) { 15 if (config.globals.log_level) {
16 log_level = config.globals.log_level; 16 log_level = config.globals.log_level;
17 }; 17 };
18 18
19 var logger = new (winston.Logger)({ 19 var logger = new (winston.Logger)({
20 transports: [ 20 transports: [
21 new (winston.transports.Console)({ 21 new (winston.transports.Console)({
22 timestamp: function() { 22 timestamp: function() {
23 return strftime('%F %T', new Date()); 23 return strftime('%F %T', new Date());
24 }, 24 },
25 level: log_level 25 level: log_level
26 }), 26 }),
27 /*
28 new (winston.transports.DailyRotateFile)({ 27 new (winston.transports.DailyRotateFile)({
29 filename: __dirname + '/logs/log', 28 filename: __dirname + '/logs/log',
30 timestamp: function() { 29 timestamp: function() {
31 return strftime('%F %T', new Date()); 30 return strftime('%F %T', new Date());
32 }, 31 },
33 level: log_level 32 level: log_level
34 }) 33 })
35 */
36 ] 34 ]
37 }); 35 });
38 36
39 function onHttpIncomingMessage(request, response) { 37 function onHttpIncomingMessage(request, response) {
40 var qs = url.parse(request.url, true).query; 38 var qs = url.parse(request.url, true).query;
41 logger.info("onHttpIncomingMessage()", {qs: qs}); 39 logger.info("onHttpIncomingMessage()", {qs: qs});
42 40
43 logger.info('Sending message to ' + qs.to + ': ' + qs.msg); 41 logger.info('Sending message to ' + qs.to + ': ' + qs.msg);
44 ym.sendPM(qs.to, qs.msg); 42 ym.sendPM(qs.to, qs.msg);
45 response.end('OK'); 43 response.end('OK');
46 } 44 }
47 45
48 46
49 function createHttpListener() { 47 function createHttpListener() {
50 48
51 var httpServer = http.createServer(function(request,response){ 49 var httpServer = http.createServer(function(request,response){
52 50
53 var qs = url.parse(request.url, true).query; 51 var qs = url.parse(request.url, true).query;
54 logger.verbose('Incoming message from EVO', {qs: qs}); 52 logger.verbose('Incoming message from EVO', {qs: qs});
55 response.end('OK'); 53 response.end('OK');
56 54
57 sendMessage(qs.PhoneNumber, qs.text); 55 sendMessage(qs.PhoneNumber, qs.text);
58 }); 56 });
59 57
60 httpServer.listen(config.globals.listen_port, function(){ 58 httpServer.listen(config.globals.listen_port, function(){
61 logger.info("HTTP server listening on " + config.globals.listen_port); 59 logger.info("HTTP server listening on " + config.globals.listen_port);
62 }) 60 })
63 } 61 }
64 62
65 function sendMessage(destination, message) { 63 function sendMessage(destination, message) {
66 logger.info('Sending xmpp message', {destination: destination, message: message}); 64 logger.info('Sending xmpp message', {destination: destination, message: message});
67 xmpp.send(destination, message); 65 xmpp.send(destination, message);
68 } 66 }
69 67
70 function reportToEvo(from, message) { 68 function reportToEvo(from, message) {
71 var opts = { 69 var opts = {
72 url: config.globals.evo_url, 70 url: config.globals.evo_url,
73 qs: { 71 qs: {
74 msg: message, 72 msg: message,
75 msisdn: from, 73 msisdn: from,
76 smsc: config.globals.smsc, 74 smsc: config.globals.smsc,
77 ts: strftime('%F %T'), 75 ts: strftime('%F %T'),
78 } 76 }
79 }; 77 };
80 78
81 logger.info("Forwarding message to evo", {request_opts: opts}); 79 logger.info("Forwarding message to evo", {request_opts: opts});
82 request(opts, function(err, response, body) { 80 request(opts, function(err, response, body) {
83 if (err) { 81 if (err) {
84 logger.warn('Error forwarding to evo: ' + err); 82 logger.warn('Error forwarding to evo: ' + err);
85 return; 83 return;
86 } 84 }
87 }); 85 });
88 86
89 } 87 }
90 88
91 xmpp.on('online', function(data) { 89 xmpp.on('online', function(data) {
92 logger.info('XMPP online', {data: data}); 90 logger.info('XMPP online', {data: data});
93 logger.info('Connected with JID: ' + data.jid.user); 91 logger.info('Connected with JID: ' + data.jid.user);
94 92
95 setTimeout(function() { 93 setTimeout(function() {
96 warming_up = false; 94 warming_up = false;
97 logger.info('BOT selesai warming up, pesan-pesan selanjutnya akan diproses'); 95 logger.info('BOT selesai warming up, pesan-pesan selanjutnya akan diproses');
98 }, config.globals.warming_up); 96 }, config.globals.warming_up);
99 }); 97 });
100 98
101 xmpp.on('chat', function(from, message) { 99 xmpp.on('chat', function(from, message) {
102 logger.info('Incoming message via XMPP ', {from: from, message: message}); 100 logger.info('Incoming message via XMPP ', {from: from, message: message});
103 101
104 if (warming_up) { 102 if (warming_up) {
105 logger.info('BOT masih dalam tahap warming up, abaikan pesan'); 103 logger.info('BOT masih dalam tahap warming up, abaikan pesan');
106 var response_message = 'Pesan diabaikan. Silahkan diulang kembali: ' + message; 104 var response_message = 'Pesan diabaikan. Silahkan diulang kembali: ' + message;
107 sendMessage(from, response_message); 105 sendMessage(from, response_message);
108 return; 106 return;
109 } 107 }
110 108
111 var response_message = 'Pesan anda telah diterima dan akan segera diproses: ' + message; 109 var response_message = 'Pesan anda telah diterima dan akan segera diproses: ' + message;
112 sendMessage(from, response_message); 110 sendMessage(from, response_message);
113 111
114 reportToEvo(from, message); 112 reportToEvo(from, message);
115 }); 113 });
116 114
117 xmpp.on('error', function(err) { 115 xmpp.on('error', function(err) {
118 logger.warn('XMPP error', {err: err}); 116 logger.warn('XMPP error', {err: err});
119 }); 117 });
120 118
121 xmpp.on('subscribe', function(from) { 119 xmpp.on('subscribe', function(from) {
122 logger.warn('XMPP subscribe request from ' + from); 120 logger.warn('XMPP subscribe request from ' + from);
123 xmpp.acceptSubscription(from); 121 xmpp.acceptSubscription(from);
124 }); 122 });
125 123
126 xmpp.connect({ 124 xmpp.connect({
127 jid: config.globals.jid, 125 jid: config.globals.jid,
128 password: config.globals.password, 126 password: config.globals.password,
129 }); 127 });
130 128
131 // check for incoming subscription requests 129 // check for incoming subscription requests
132 xmpp.getRoster(); 130 xmpp.getRoster();
133 131
134 createHttpListener(); 132 createHttpListener();
135 133
1 { 1 {
2 "name": "evo-xmpp-center", 2 "name": "evo-xmpp-center",
3 "version": "0.0.1", 3 "version": "0.0.1",
4 "description": "EVO XMPP Center", 4 "description": "EVO XMPP Center",
5 "main": "index.js", 5 "main": "index.js",
6 "scripts": { 6 "scripts": {
7 "test": "echo \"Error: no test specified\" && exit 1" 7 "test": "echo \"Error: no test specified\" && exit 1"
8 }, 8 },
9 "repository": { 9 "repository": {
10 "type": "git", 10 "type": "git",
11 "url": "git@gitlab.kodesumber.com:adhisimon/evo-xmpp-center.git" 11 "url": "git@gitlab.kodesumber.com:adhisimon/evo-xmpp-center.git"
12 }, 12 },
13 "keywords": [ 13 "keywords": [
14 "evo", 14 "evo",
15 "guchi", 15 "guchi",
16 "ppob", 16 "ppob",
17 "r97", 17 "r97",
18 "terradata", 18 "terradata",
19 "xmpp", 19 "xmpp",
20 "tbs" 20 "tbs"
21 ], 21 ],
22 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>", 22 "author": "Adhidarma Hadiwinoto <gua@adhisimon.org>",
23 "license": "BSD", 23 "license": "BSD",
24 "dependencies": { 24 "dependencies": {
25 "request": "~2.67.0", 25 "request": "~2.67.0",
26 "url": "~0.11.0", 26 "url": "~0.11.0",
27 "ini": "~1.3.4", 27 "ini": "~1.3.4",
28 "strftime": "~0.9.2", 28 "strftime": "~0.9.2",
29 "winston": "~2.1.1", 29 "winston": "~1.1.1",
30 "simple-xmpp": "~1.2.0" 30 "simple-xmpp": "~1.2.0"
31 } 31 }
32 } 32 }
33 33