Commit b38ca9db7eceb0cbe6732464eb3caad599be0257

Authored by Adhidarma Hadiwinoto
1 parent 2833225fe1
Exists in master

fix broadcast arguments

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