Commit 53b5c5b0e3f733c4f5cf31a2ea8b8bab0cc9bb25
1 parent
901cf9158a
Exists in
master
relogin by http req
Showing 2 changed files with 60 additions and 46 deletions Side-by-side Diff
index.js
... | ... | @@ -25,7 +25,7 @@ router.get('/hello', function(request, response) { |
25 | 25 | |
26 | 26 | router.get('/broadcastPing', function(request, response) { |
27 | 27 | response.end('Ok'); |
28 | - broadcast(config.yahoomessenger.report_to, 'PING'); | |
28 | + ym.broadcast(config.yahoomessenger.report_to, 'PING'); | |
29 | 29 | }); |
30 | 30 | |
31 | 31 | router.get('/status', function(request, response) { |
... | ... | @@ -54,13 +54,9 @@ router.get('/relogin/:apikey', function(request, response) { |
54 | 54 | return; |
55 | 55 | } |
56 | 56 | |
57 | - logger.info("Logging out"); | |
58 | - YahooMessenger.logout(); | |
59 | - | |
60 | - logger.info("Logout"); | |
61 | - clearTimeout(keepAliveTimer); | |
62 | - | |
63 | - ymLogin(); | |
57 | + logger.info("Got relogin request by http"); | |
58 | + ym.relogin(); | |
59 | + response.end('Ok'); | |
64 | 60 | }); |
65 | 61 | |
66 | 62 | logger.info("Starting http server on port " + config.httpserver.listen_port); |
... | ... | @@ -2,6 +2,11 @@ var YahooMessenger = require("yahoomessenger"); |
2 | 2 | var striptags = require('striptags'); |
3 | 3 | var db = require('./db.js'); |
4 | 4 | |
5 | +var oldMessages = []; | |
6 | + | |
7 | +var config; | |
8 | +var logger; | |
9 | + | |
5 | 10 | function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) { |
6 | 11 | |
7 | 12 | db_connection.query( |
... | ... | @@ -23,56 +28,65 @@ function insertMessages(db_connection, logger_id, direction, partner, message, s |
23 | 28 | ); |
24 | 29 | } |
25 | 30 | |
26 | -function start(config, logger) { | |
27 | - var oldMessages = []; | |
31 | +function pm(destination, message) { | |
32 | + logger.info("Sending to " + destination + ": " + message); | |
28 | 33 | |
29 | - var keepAliveTimer; | |
34 | + YahooMessenger.sendPM(destination, message); | |
35 | +} | |
30 | 36 | |
31 | - var _keepAliveLoop = function() { | |
32 | - logger.info('Keep alive loop'); | |
33 | 37 | |
34 | - YahooMessenger.keepAlive(); | |
35 | - keepAliveLoop(); | |
36 | - } | |
38 | +function broadcast(destinations, message, exclude) { | |
39 | + var destinations = destinations.split(','); | |
40 | + var destinationCount = destinations.length; | |
37 | 41 | |
38 | - function isAdmin(user) { | |
39 | - var admins = config.yahoomessenger.admin.split(','); | |
42 | + for (var i=0; i < destinationCount; i++) { | |
43 | + destination = destinations[i]; | |
44 | + if (destination == exclude) { | |
45 | + continue; | |
46 | + } | |
40 | 47 | |
41 | - return (admins.indexOf(user) >= 0); | |
48 | + pm(destination, message); | |
42 | 49 | } |
50 | +} | |
43 | 51 | |
44 | - function keepAliveLoop() { | |
45 | - keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); | |
46 | - } | |
52 | +var keepAliveTimer; | |
47 | 53 | |
48 | - function login(){ | |
49 | - logger.info("Login to YM as " + config.yahoomessenger.username) | |
50 | - YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); | |
51 | - } | |
54 | +var _keepAliveLoop = function() { | |
55 | + logger.info('Keep alive loop'); | |
52 | 56 | |
53 | - function pm(destination, message) { | |
54 | - logger.info("Sending to " + destination + ": " + message); | |
57 | + YahooMessenger.keepAlive(); | |
58 | + keepAliveLoop(); | |
59 | +} | |
55 | 60 | |
56 | - YahooMessenger.sendPM(destination, message); | |
57 | - } | |
61 | +function isAdmin(user) { | |
62 | + var admins = config.yahoomessenger.admin.split(','); | |
58 | 63 | |
59 | - function sendPM(destination, message) { | |
60 | - pm(destination, message); | |
61 | - } | |
64 | + return (admins.indexOf(user) >= 0); | |
65 | +} | |
62 | 66 | |
63 | - function broadcast(destinations, message, exclude) { | |
64 | - var destinations = destinations.split(','); | |
65 | - var destinationCount = destinations.length; | |
67 | +function keepAliveLoop() { | |
68 | + keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); | |
69 | +} | |
66 | 70 | |
67 | - for (var i=0; i < destinationCount; i++) { | |
68 | - destination = destinations[i]; | |
69 | - if (destination == exclude) { | |
70 | - continue; | |
71 | - } | |
71 | +function login(){ | |
72 | + logger.info("Login to YM as " + config.yahoomessenger.username) | |
73 | + YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); | |
74 | +} | |
72 | 75 | |
73 | - sendPM(destination, message); | |
74 | - } | |
75 | - } | |
76 | +function logout() { | |
77 | + logger.info("Logout from YM"); | |
78 | + clearTimeout(keepAliveTimer); | |
79 | + YahooMessenger.logout(); | |
80 | +} | |
81 | + | |
82 | +function relogin() { | |
83 | + logout(); | |
84 | + YahooMessenger.newInstance(); | |
85 | +} | |
86 | + | |
87 | +function start(_config, _logger) { | |
88 | + config = _config; | |
89 | + logger = _logger; | |
76 | 90 | |
77 | 91 | function onReady() { |
78 | 92 | login(); |
... | ... | @@ -152,7 +166,7 @@ function start(config, logger) { |
152 | 166 | } |
153 | 167 | |
154 | 168 | logger.info('Forward to ' + target + ': ' + messageToForward); |
155 | - sendPM(target, '@' + partner + ': ' + messageToForward); | |
169 | + pm(target, '@' + partner + ': ' + messageToForward); | |
156 | 170 | |
157 | 171 | } else if (message.charAt(0) == '+') { |
158 | 172 | target = message.split(' ', 1).join(); |
... | ... | @@ -164,7 +178,7 @@ function start(config, logger) { |
164 | 178 | } |
165 | 179 | |
166 | 180 | logger.info('Clean forward to ' + target + ': ' + messageToForward); |
167 | - sendPM(target, messageToForward); | |
181 | + pm(target, messageToForward); | |
168 | 182 | } |
169 | 183 | } |
170 | 184 | } |
... | ... | @@ -182,3 +196,7 @@ function start(config, logger) { |
182 | 196 | } |
183 | 197 | |
184 | 198 | exports.start = start; |
199 | +exports.broadcast = broadcast; | |
200 | +exports.pm = pm; | |
201 | +exports.logout = logout; | |
202 | +exports.relogin = relogin; |