Commit 5c235d5a0c4121ad0cc32595690f9cdeb67663a0
1 parent
7459534beb
Exists in
master
downgrade winston
Showing 2 changed files with 1 additions and 3 deletions Inline Diff
index.js
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 |
package.json
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 |