Commit b38ca9db7eceb0cbe6732464eb3caad599be0257
1 parent
2833225fe1
Exists in
master
fix broadcast arguments
Showing 1 changed file with 1 additions and 1 deletions Inline Diff
index.js
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 |