Commit ea9cc1e4374a83142b383841e1823438f89c8f75

Authored by Adhidarma Hadiwinoto
1 parent ec8fade738
Exists in master

default keepalive_interval

Showing 1 changed file with 4 additions and 0 deletions Inline Diff

1 var iniparser = require('iniparser'); 1 var iniparser = require('iniparser');
2 var config = iniparser.parseSync('./config.ini'); 2 var config = iniparser.parseSync('./config.ini');
3 3
4 if (config.yahoomessenger.keepalive_interval == null) {
5 config.yahoomessenger.keepalive_interval = 60;
6 }
7
4 var strftime = require('strftime'); 8 var strftime = require('strftime');
5 9
6 var pollingTimer; 10 var pollingTimer;
7 11
8 var lastDataOnPM; 12 var lastDataOnPM;
9 13
10 var logger = require('winston'); 14 var logger = require('winston');
11 logger.remove(logger.transports.Console); 15 logger.remove(logger.transports.Console);
12 logger.add(logger.transports.Console, { timestamp: function() { return (strftime('%F %T')); }}); 16 logger.add(logger.transports.Console, { timestamp: function() { return (strftime('%F %T')); }});
13 17
14 var db = require('./db.js'); 18 var db = require('./db.js');
15 db_connection = db.start(config.db.host, config.db.username, config.db.password, config.db.name, logger); 19 db_connection = db.start(config.db.host, config.db.username, config.db.password, config.db.name, logger);
16 20
17 function absen() { 21 function absen() {
18 broadcast(config.yahoomessenger.report_to, config.yahoomessenger.report_message); 22 broadcast(config.yahoomessenger.report_to, config.yahoomessenger.report_message);
19 } 23 }
20 24
21 function broadcast(destinations, message) { 25 function broadcast(destinations, message) {
22 var destinations = destinations.split(','); 26 var destinations = destinations.split(',');
23 var destinationCount = destinations.length; 27 var destinationCount = destinations.length;
24 28
25 for (var i=0; i < destinationCount; i++) { 29 for (var i=0; i < destinationCount; i++) {
26 destination = destinations[i] 30 destination = destinations[i]
27 logger.info('Sending message to ' + destination); 31 logger.info('Sending message to ' + destination);
28 YahooMessenger.sendPM(destination, message); 32 YahooMessenger.sendPM(destination, message);
29 } 33 }
30 } 34 }
31 35
32 var keepAliveLoop = function() { 36 var keepAliveLoop = function() {
33 logger.info('Polling loop'); 37 logger.info('Polling loop');
34 38
35 YahooMessenger.keepAlive(); 39 YahooMessenger.keepAlive();
36 40
37 pollingTimer = setTimeout(keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000); 41 pollingTimer = setTimeout(keepAliveLoop, config.yahoomessenger.keepalive_interval * 1000);
38 } 42 }
39 43
40 function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) { 44 function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) {
41 45
42 db_connection.query( 46 db_connection.query(
43 'INSERT INTO messages SET ?', 47 'INSERT INTO messages SET ?',
44 { 48 {
45 transport: 'YAHOO', 49 transport: 'YAHOO',
46 logger: logger_id, 50 logger: logger_id,
47 direction: direction, 51 direction: direction,
48 partner: partner, 52 partner: partner,
49 message: message, 53 message: message,
50 sentdate: sentdate, 54 sentdate: sentdate,
51 }, 55 },
52 56
53 function(err) { 57 function(err) {
54 if (err != null) { 58 if (err != null) {
55 logger.error("Error on inserting messages to DB, error: " + err); 59 logger.error("Error on inserting messages to DB, error: " + err);
56 } 60 }
57 } 61 }
58 ); 62 );
59 } 63 }
60 64
61 var striptags = require('striptags'); 65 var striptags = require('striptags');
62 66
63 var YahooMessenger = require("yahoomessenger"); 67 var YahooMessenger = require("yahoomessenger");
64 YahooMessenger.newInstance(); 68 YahooMessenger.newInstance();
65 69
66 YahooMessenger.on('ready', function onReady(){ 70 YahooMessenger.on('ready', function onReady(){
67 logger.info("Going to online on YM") 71 logger.info("Going to online on YM")
68 YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password); 72 YahooMessenger.login(config.yahoomessenger.username, config.yahoomessenger.password);
69 }); 73 });
70 74
71 YahooMessenger.on('loginSuccessful', function onLoginSuccessful(data){ 75 YahooMessenger.on('loginSuccessful', function onLoginSuccessful(data){
72 logger.info('Online on YM as ' + data.user_id + ' (' + data.firstname + ' ' + data.lastname + ')'); 76 logger.info('Online on YM as ' + data.user_id + ' (' + data.firstname + ' ' + data.lastname + ')');
73 77
74 if (config.yahoomessenger.status) { 78 if (config.yahoomessenger.status) {
75 logger.info('Set status to: ' + config.yahoomessenger.status); 79 logger.info('Set status to: ' + config.yahoomessenger.status);
76 YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status); 80 YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
77 }; 81 };
78 82
79 absen(); 83 absen();
80 84
81 keepAliveLoop(); 85 keepAliveLoop();
82 }); 86 });
83 87
84 YahooMessenger.on('pm', function(data){ 88 YahooMessenger.on('pm', function(data){
85 89
86 if (config.globals.debug == 1) { 90 if (config.globals.debug == 1) {
87 console.log(data); 91 console.log(data);
88 } 92 }
89 93
90 if (lastDataOnPM != null) { 94 if (lastDataOnPM != null) {
91 if ((lastDataOnPM.sender == data.sender) && (lastDataOnPM.message == data.message)) { 95 if ((lastDataOnPM.sender == data.sender) && (lastDataOnPM.message == data.message)) {
92 //logger.info('Ignoring duplicate message detected'); 96 //logger.info('Ignoring duplicate message detected');
93 return; 97 return;
94 } 98 }
95 } 99 }
96 100
97 lastDataOnPM = data; 101 lastDataOnPM = data;
98 102
99 var message = striptags(data.message) 103 var message = striptags(data.message)
100 //console.log("message: " + message); 104 //console.log("message: " + message);
101 105
102 logger.info('New message received from ' + data.user_id + ': ' + message); 106 logger.info('New message received from ' + data.user_id + ': ' + message);
103 107
104 var sentdate = Date.parse(data.time); 108 var sentdate = Date.parse(data.time);
105 var strftime = require('strftime'); 109 var strftime = require('strftime');
106 sentdate = strftime('%Y-%m-%d %H:%M:%S', sentdate); 110 sentdate = strftime('%Y-%m-%d %H:%M:%S', sentdate);
107 111
108 insertMessages( 112 insertMessages(
109 db_connection, 113 db_connection,
110 data.user_id, 114 data.user_id,
111 'IN', 115 'IN',
112 data.sender, 116 data.sender,
113 message, 117 message,
114 sentdate 118 sentdate
115 ); 119 );
116 120
117 broadcast(config.yahoomessenger.report_to, data.sender + '-> ' + message); 121 broadcast(config.yahoomessenger.report_to, data.sender + '-> ' + message);
118 122
119 }); 123 });
120 124
121 YahooMessenger.on('buddyAddRequest', function(data) { 125 YahooMessenger.on('buddyAddRequest', function(data) {
122 logger.info("Got request to add buddy from " + data.username); 126 logger.info("Got request to add buddy from " + data.username);
123 YahooMessenger.acceptAddBuddy(data.username); 127 YahooMessenger.acceptAddBuddy(data.username);
124 }); 128 });
125 129
126 function isSenderIsAdmin(ym, data) { 130 function isSenderIsAdmin(ym, data) {
127 131
128 } 132 }
129 133
130 var http = require('http'); 134 var http = require('http');
131 var url = require('url'); 135 var url = require('url');
132 136
133 function onHttpRequest(request, response) { 137 function onHttpRequest(request, response) {
134 var pathname = url.parse(request.url).pathname; 138 var pathname = url.parse(request.url).pathname;
135 logger.info('Got HTTP request on ' + pathname); 139 logger.info('Got HTTP request on ' + pathname);
136 140
137 var queries = url.parse(request.url, true).query; 141 var queries = url.parse(request.url, true).query;
138 console.log(queries); 142 console.log(queries);
139 143
140 response.writeHead(200, {"Content-Type": "text/html"}); 144 response.writeHead(200, {"Content-Type": "text/html"});
141 response.write("Hello"); 145 response.write("Hello");
142 response.end(); 146 response.end();
143 } 147 }
144 148
145 http.createServer(onHttpRequest).listen(config.httpserver.listen_port); 149 http.createServer(onHttpRequest).listen(config.httpserver.listen_port);
146 logger.info("HTTP server listening on " + config.httpserver.listen_port); 150 logger.info("HTTP server listening on " + config.httpserver.listen_port);
147 151