Commit ea9cc1e4374a83142b383841e1823438f89c8f75
1 parent
ec8fade738
Exists in
master
default keepalive_interval
Showing 1 changed file with 4 additions and 0 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 | 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 |