Commit d52238d9fbd8b9a66a5d23ad6fe7a6d9ce8926d3
1 parent
74a20f5ba5
Exists in
master
pre reorg
Showing 1 changed file with 81 additions and 31 deletions Side-by-side Diff
index.js
1 | 1 | var iniparser = require('iniparser'); |
2 | 2 | var config = iniparser.parseSync('./config.ini'); |
3 | 3 | |
4 | +var keepAliveTimer; | |
5 | + | |
4 | 6 | if (config.yahoomessenger.keepalive_interval == null) { |
5 | 7 | config.yahoomessenger.keepalive_interval = 60; |
6 | 8 | } |
... | ... | @@ -22,10 +24,38 @@ function isAdmin(user) { |
22 | 24 | return (admins.indexOf(user) >= 0); |
23 | 25 | } |
24 | 26 | |
27 | +function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) { | |
28 | + | |
29 | + db_connection.query( | |
30 | + 'INSERT INTO messages SET ?', | |
31 | + { | |
32 | + transport: 'YAHOO', | |
33 | + logger: logger_id, | |
34 | + direction: direction, | |
35 | + partner: partner, | |
36 | + message: message, | |
37 | + sentdate: sentdate, | |
38 | + }, | |
39 | + | |
40 | + function(err) { | |
41 | + if (err != null) { | |
42 | + logger.error("Error on inserting messages to DB, error: " + err); | |
43 | + } | |
44 | + } | |
45 | + ); | |
46 | +} | |
47 | + | |
48 | +var striptags = require('striptags'); | |
49 | + | |
50 | +var YahooMessenger = require("yahoomessenger"); | |
51 | +YahooMessenger.newInstance(); | |
52 | + | |
25 | 53 | function sendPM(destination, message) { |
26 | - try { | |
27 | - logger.info("Sending to " + destination + ": " + message); | |
54 | + logger.info("Sending to " + destination + ": " + message); | |
55 | + | |
56 | + //try { | |
28 | 57 | YahooMessenger.sendPM(destination, message); |
58 | + /* | |
29 | 59 | } |
30 | 60 | catch (e) { |
31 | 61 | logger.info("Something wrong"); |
... | ... | @@ -36,7 +66,7 @@ function sendPM(destination, message) { |
36 | 66 | } |
37 | 67 | |
38 | 68 | return true; |
39 | - | |
69 | + */ | |
40 | 70 | } |
41 | 71 | |
42 | 72 | function broadcast(destinations, message, exclude) { |
... | ... | @@ -56,8 +86,9 @@ function broadcast(destinations, message, exclude) { |
56 | 86 | var _keepAliveLoop = function() { |
57 | 87 | logger.info('Keep alive loop'); |
58 | 88 | |
59 | - try { | |
89 | + //try { | |
60 | 90 | YahooMessenger.keepAlive(); |
91 | + /* | |
61 | 92 | } |
62 | 93 | catch(e) { |
63 | 94 | logger.info("Something wrong"); |
... | ... | @@ -66,40 +97,20 @@ var _keepAliveLoop = function() { |
66 | 97 | YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); |
67 | 98 | return; |
68 | 99 | } |
100 | + */ | |
69 | 101 | |
70 | 102 | keepAliveLoop(); |
71 | 103 | } |
72 | 104 | |
73 | 105 | function keepAliveLoop() { |
74 | - setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); | |
106 | + keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); | |
75 | 107 | } |
76 | 108 | |
77 | -function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) { | |
78 | - | |
79 | - db_connection.query( | |
80 | - 'INSERT INTO messages SET ?', | |
81 | - { | |
82 | - transport: 'YAHOO', | |
83 | - logger: logger_id, | |
84 | - direction: direction, | |
85 | - partner: partner, | |
86 | - message: message, | |
87 | - sentdate: sentdate, | |
88 | - }, | |
89 | - | |
90 | - function(err) { | |
91 | - if (err != null) { | |
92 | - logger.error("Error on inserting messages to DB, error: " + err); | |
93 | - } | |
94 | - } | |
95 | - ); | |
109 | +function ymLogin(){ | |
110 | + logger.info("Login to YM as " + config.yahoomessenger.username) | |
111 | + YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); | |
96 | 112 | } |
97 | 113 | |
98 | -var striptags = require('striptags'); | |
99 | - | |
100 | -var YahooMessenger = require("yahoomessenger"); | |
101 | -YahooMessenger.newInstance(); | |
102 | - | |
103 | 114 | function onYmLoginSuccesful(data){ |
104 | 115 | logger.info('Online on YM as ' + data.user_id + ' (' + data.firstname + ' ' + data.lastname + ')'); |
105 | 116 | |
... | ... | @@ -113,6 +124,10 @@ function onYmLoginSuccesful(data){ |
113 | 124 | keepAliveLoop(); |
114 | 125 | } |
115 | 126 | |
127 | +function onYmLoginError(data){ | |
128 | + logger.info("YM login error"); | |
129 | +} | |
130 | + | |
116 | 131 | function onYmPM(data) { |
117 | 132 | var direction = 'IN'; |
118 | 133 | |
... | ... | @@ -195,12 +210,12 @@ function onYmBuddyAddRequest(data) { |
195 | 210 | |
196 | 211 | |
197 | 212 | function onYmReady(){ |
198 | - logger.info("Going to online on YM") | |
199 | - YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); | |
213 | + ymLogin(); | |
200 | 214 | } |
201 | 215 | |
202 | 216 | YahooMessenger.on('ready', onYmReady); |
203 | 217 | YahooMessenger.on('loginSuccessful', onYmLoginSuccesful); |
218 | +YahooMessenger.on('loginError', onYmLoginError); | |
204 | 219 | YahooMessenger.on('pm', onYmPM); |
205 | 220 | YahooMessenger.on('buddyAddRequest', onYmBuddyAddRequest); |
206 | 221 | |
... | ... | @@ -213,9 +228,44 @@ router.get('/hello', function(request, response) { |
213 | 228 | }); |
214 | 229 | |
215 | 230 | router.get('/broadcastPing', function(request, response) { |
231 | + response.end('Ok'); | |
216 | 232 | broadcast(config.yahoomessenger.report_to, 'PING'); |
217 | 233 | }); |
218 | 234 | |
235 | +router.get('/status', function(request, response) { | |
236 | + response.writeHead(200, {"Content-Type": "text/plain"}); | |
237 | + response.write(config.yahoomessenger.status); | |
238 | + response.end(); | |
239 | +}); | |
240 | + | |
241 | +router.post('/status', function(request, response) { | |
242 | + var apikey = request.body.apikey; | |
243 | + if (apikey != config.httpserver.apikey) { | |
244 | + response.end('Invalid APIKEY: ' + apikey); | |
245 | + return; | |
246 | + } | |
247 | + response.end('Ok'); | |
248 | + | |
249 | + config.yahoomessenger.status = request.body.status; | |
250 | + YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status); | |
251 | +}); | |
252 | + | |
253 | +router.get('/relogin/:apikey', function(request, response) { | |
254 | + var apikey = request.params.apikey; | |
255 | + | |
256 | + if (apikey != config.httpserver.apikey){ | |
257 | + response.end('Invalid APIKEY: ' + apikey); | |
258 | + return; | |
259 | + } | |
260 | + | |
261 | + logger.info("Logging out"); | |
262 | + YahooMessenger.logout(); | |
263 | + | |
264 | + logger.info("Logout"); | |
265 | + clearTimeout(keepAliveTimer); | |
266 | + | |
267 | + ymLogin(); | |
268 | +}); | |
219 | 269 | |
220 | 270 | logger.info("Starting http server on port " + config.httpserver.listen_port); |
221 | 271 | var httpServer = http.createServer(router).listen(config.httpserver.listen_port); |