Commit d52238d9fbd8b9a66a5d23ad6fe7a6d9ce8926d3

Authored by Adhidarma Hadiwinoto
1 parent 74a20f5ba5
Exists in master

pre reorg

Showing 1 changed file with 81 additions and 31 deletions Side-by-side Diff

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);