Commit 7459534bebf897d303b1b6275d1172bf567f19d5

Authored by Adhidarma Hadiwinoto
1 parent d993842325
Exists in master

hapus dailyrotate

Showing 1 changed file with 2 additions and 20 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() {
23 return strftime('%F %T', new Date());
24 },
25 level: log_level
26 }),
27 new (winston.transports.DailyRotateFile)({
28 filename: __dirname + '/logs/log',
29 timestamp: function() {
30 return strftime('%F %T', new Date());
31 },
32 level: log_level
33 })
34 ]
35 });
36
37 /*
38 var logger = new (winston.Logger)({
39 transports: [
40 new (winston.transports.Console)({
41 timestamp: function() { 22 timestamp: function() {
42 return strftime('%F %T', new Date()); 23 return strftime('%F %T', new Date());
43 }, 24 },
44 level: log_level 25 level: log_level
45 }), 26 }),
27 /*
46 new (winston.transports.DailyRotateFile)({ 28 new (winston.transports.DailyRotateFile)({
47 filename: __dirname + '/logs/log', 29 filename: __dirname + '/logs/log',
48 timestamp: function() { 30 timestamp: function() {
49 return strftime('%F %T', new Date()); 31 return strftime('%F %T', new Date());
50 }, 32 },
51 level: log_level 33 level: log_level
52 }) 34 })
35 */
53 ] 36 ]
54 }); 37 });
55 */
56 38
57 function onHttpIncomingMessage(request, response) { 39 function onHttpIncomingMessage(request, response) {
58 var qs = url.parse(request.url, true).query; 40 var qs = url.parse(request.url, true).query;
59 logger.info("onHttpIncomingMessage()", {qs: qs}); 41 logger.info("onHttpIncomingMessage()", {qs: qs});
60 42
61 logger.info('Sending message to ' + qs.to + ': ' + qs.msg); 43 logger.info('Sending message to ' + qs.to + ': ' + qs.msg);
62 ym.sendPM(qs.to, qs.msg); 44 ym.sendPM(qs.to, qs.msg);
63 response.end('OK'); 45 response.end('OK');
64 } 46 }
65 47
66 48
67 function createHttpListener() { 49 function createHttpListener() {
68 50
69 var httpServer = http.createServer(function(request,response){ 51 var httpServer = http.createServer(function(request,response){
70 52
71 var qs = url.parse(request.url, true).query; 53 var qs = url.parse(request.url, true).query;
72 logger.verbose('Incoming message from EVO', {qs: qs}); 54 logger.verbose('Incoming message from EVO', {qs: qs});
73 response.end('OK'); 55 response.end('OK');
74 56
75 sendMessage(qs.PhoneNumber, qs.text); 57 sendMessage(qs.PhoneNumber, qs.text);
76 }); 58 });
77 59
78 httpServer.listen(config.globals.listen_port, function(){ 60 httpServer.listen(config.globals.listen_port, function(){
79 logger.info("HTTP server listening on " + config.globals.listen_port); 61 logger.info("HTTP server listening on " + config.globals.listen_port);
80 }) 62 })
81 } 63 }
82 64
83 function sendMessage(destination, message) { 65 function sendMessage(destination, message) {
84 logger.info('Sending xmpp message', {destination: destination, message: message}); 66 logger.info('Sending xmpp message', {destination: destination, message: message});
85 xmpp.send(destination, message); 67 xmpp.send(destination, message);
86 } 68 }
87 69
88 function reportToEvo(from, message) { 70 function reportToEvo(from, message) {
89 var opts = { 71 var opts = {
90 url: config.globals.evo_url, 72 url: config.globals.evo_url,
91 qs: { 73 qs: {
92 msg: message, 74 msg: message,
93 msisdn: from, 75 msisdn: from,
94 smsc: config.globals.smsc, 76 smsc: config.globals.smsc,
95 ts: strftime('%F %T'), 77 ts: strftime('%F %T'),
96 } 78 }
97 }; 79 };
98 80
99 logger.info("Forwarding message to evo", {request_opts: opts}); 81 logger.info("Forwarding message to evo", {request_opts: opts});
100 request(opts, function(err, response, body) { 82 request(opts, function(err, response, body) {
101 if (err) { 83 if (err) {
102 logger.warn('Error forwarding to evo: ' + err); 84 logger.warn('Error forwarding to evo: ' + err);
103 return; 85 return;
104 } 86 }
105 }); 87 });
106 88
107 } 89 }
108 90
109 xmpp.on('online', function(data) { 91 xmpp.on('online', function(data) {
110 logger.info('XMPP online', {data: data}); 92 logger.info('XMPP online', {data: data});
111 logger.info('Connected with JID: ' + data.jid.user); 93 logger.info('Connected with JID: ' + data.jid.user);
112 94
113 setTimeout(function() { 95 setTimeout(function() {
114 warming_up = false; 96 warming_up = false;
115 logger.info('BOT selesai warming up, pesan-pesan selanjutnya akan diproses'); 97 logger.info('BOT selesai warming up, pesan-pesan selanjutnya akan diproses');
116 }, config.globals.warming_up); 98 }, config.globals.warming_up);
117 }); 99 });
118 100
119 xmpp.on('chat', function(from, message) { 101 xmpp.on('chat', function(from, message) {
120 logger.info('Incoming message via XMPP ', {from: from, message: message}); 102 logger.info('Incoming message via XMPP ', {from: from, message: message});
121 103
122 if (warming_up) { 104 if (warming_up) {
123 logger.info('BOT masih dalam tahap warming up, abaikan pesan'); 105 logger.info('BOT masih dalam tahap warming up, abaikan pesan');
124 var response_message = 'Pesan diabaikan. Silahkan diulang kembali: ' + message; 106 var response_message = 'Pesan diabaikan. Silahkan diulang kembali: ' + message;
125 sendMessage(from, response_message); 107 sendMessage(from, response_message);
126 return; 108 return;
127 } 109 }
128 110
129 var response_message = 'Pesan anda telah diterima dan akan segera diproses: ' + message; 111 var response_message = 'Pesan anda telah diterima dan akan segera diproses: ' + message;
130 sendMessage(from, response_message); 112 sendMessage(from, response_message);
131 113
132 reportToEvo(from, message); 114 reportToEvo(from, message);
133 }); 115 });
134 116
135 xmpp.on('error', function(err) { 117 xmpp.on('error', function(err) {
136 logger.warn('XMPP error', {err: err}); 118 logger.warn('XMPP error', {err: err});
137 }); 119 });
138 120
139 xmpp.on('subscribe', function(from) { 121 xmpp.on('subscribe', function(from) {
140 logger.warn('XMPP subscribe request from ' + from); 122 logger.warn('XMPP subscribe request from ' + from);
141 xmpp.acceptSubscription(from); 123 xmpp.acceptSubscription(from);
142 }); 124 });
143 125
144 xmpp.connect({ 126 xmpp.connect({
145 jid: config.globals.jid, 127 jid: config.globals.jid,
146 password: config.globals.password, 128 password: config.globals.password,
147 }); 129 });
148 130
149 // check for incoming subscription requests 131 // check for incoming subscription requests
150 xmpp.getRoster(); 132 xmpp.getRoster();
151 133