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