diff --git a/index.js b/index.js index e7e97d7..c5c4d2b 100644 --- a/index.js +++ b/index.js @@ -25,7 +25,7 @@ router.get('/hello', function(request, response) { router.get('/broadcastPing', function(request, response) { response.end('Ok'); - broadcast(config.yahoomessenger.report_to, 'PING'); + ym.broadcast(config.yahoomessenger.report_to, 'PING'); }); router.get('/status', function(request, response) { @@ -54,13 +54,9 @@ router.get('/relogin/:apikey', function(request, response) { return; } - logger.info("Logging out"); - YahooMessenger.logout(); - - logger.info("Logout"); - clearTimeout(keepAliveTimer); - - ymLogin(); + logger.info("Got relogin request by http"); + ym.relogin(); + response.end('Ok'); }); logger.info("Starting http server on port " + config.httpserver.listen_port); diff --git a/ym.js b/ym.js index 8604c50..7ce4a9f 100644 --- a/ym.js +++ b/ym.js @@ -2,6 +2,11 @@ var YahooMessenger = require("yahoomessenger"); var striptags = require('striptags'); var db = require('./db.js'); +var oldMessages = []; + +var config; +var logger; + function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) { db_connection.query( @@ -23,56 +28,65 @@ function insertMessages(db_connection, logger_id, direction, partner, message, s ); } -function start(config, logger) { - var oldMessages = []; +function pm(destination, message) { + logger.info("Sending to " + destination + ": " + message); - var keepAliveTimer; + YahooMessenger.sendPM(destination, message); +} - var _keepAliveLoop = function() { - logger.info('Keep alive loop'); - YahooMessenger.keepAlive(); - keepAliveLoop(); - } +function broadcast(destinations, message, exclude) { + var destinations = destinations.split(','); + var destinationCount = destinations.length; - function isAdmin(user) { - var admins = config.yahoomessenger.admin.split(','); + for (var i=0; i < destinationCount; i++) { + destination = destinations[i]; + if (destination == exclude) { + continue; + } - return (admins.indexOf(user) >= 0); + pm(destination, message); } +} - function keepAliveLoop() { - keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); - } +var keepAliveTimer; - function login(){ - logger.info("Login to YM as " + config.yahoomessenger.username) - YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); - } +var _keepAliveLoop = function() { + logger.info('Keep alive loop'); - function pm(destination, message) { - logger.info("Sending to " + destination + ": " + message); + YahooMessenger.keepAlive(); + keepAliveLoop(); +} - YahooMessenger.sendPM(destination, message); - } +function isAdmin(user) { + var admins = config.yahoomessenger.admin.split(','); - function sendPM(destination, message) { - pm(destination, message); - } + return (admins.indexOf(user) >= 0); +} - function broadcast(destinations, message, exclude) { - var destinations = destinations.split(','); - var destinationCount = destinations.length; +function keepAliveLoop() { + keepAliveTimer = setTimeout(_keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); +} - for (var i=0; i < destinationCount; i++) { - destination = destinations[i]; - if (destination == exclude) { - continue; - } +function login(){ + logger.info("Login to YM as " + config.yahoomessenger.username) + YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); +} - sendPM(destination, message); - } - } +function logout() { + logger.info("Logout from YM"); + clearTimeout(keepAliveTimer); + YahooMessenger.logout(); +} + +function relogin() { + logout(); + YahooMessenger.newInstance(); +} + +function start(_config, _logger) { + config = _config; + logger = _logger; function onReady() { login(); @@ -152,7 +166,7 @@ function start(config, logger) { } logger.info('Forward to ' + target + ': ' + messageToForward); - sendPM(target, '@' + partner + ': ' + messageToForward); + pm(target, '@' + partner + ': ' + messageToForward); } else if (message.charAt(0) == '+') { target = message.split(' ', 1).join(); @@ -164,7 +178,7 @@ function start(config, logger) { } logger.info('Clean forward to ' + target + ': ' + messageToForward); - sendPM(target, messageToForward); + pm(target, messageToForward); } } } @@ -182,3 +196,7 @@ function start(config, logger) { } exports.start = start; +exports.broadcast = broadcast; +exports.pm = pm; +exports.logout = logout; +exports.relogin = relogin;