index.js
2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
var iniparser = require('iniparser');
var config = iniparser.parseSync('./config.ini');
if (config.yahoomessenger.keepalive_interval == null) {
config.yahoomessenger.keepalive_interval = 60;
}
var strftime = require('strftime');
var logger = require('winston');
logger.remove(logger.transports.Console);
logger.add(logger.transports.Console, { timestamp: function() { return (strftime('%F %T')); }});
var db = require('./db.js');
db_connection = db.start(config.db.host, config.db.username, config.db.password, config.db.name, logger);
function insertMessages(db_connection, logger_id, direction, partner, message, sentdate) {
db_connection.query(
'INSERT INTO messages SET ?',
{
transport: 'YAHOO',
logger: logger_id,
direction: direction,
partner: partner,
message: message,
sentdate: sentdate,
},
function(err) {
if (err != null) {
logger.error("Error on inserting messages to DB, error: " + err);
}
}
);
}
var ym = require('./ym');
var YahooMessenger = ym.start(config, logger);
var http = require('http');
var nsr = require('node-simple-router');
var router = nsr();
router.get('/hello', function(request, response) {
response.end('Hello bro');
});
router.get('/broadcastPing', function(request, response) {
response.end('Ok');
broadcast(config.yahoomessenger.report_to, 'PING');
});
router.get('/status', function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.write(config.yahoomessenger.status);
response.end();
});
router.post('/status', function(request, response) {
var apikey = request.body.apikey;
if (apikey != config.httpserver.apikey) {
response.end('Invalid APIKEY: ' + apikey);
return;
}
response.end('Ok');
config.yahoomessenger.status = request.body.status;
YahooMessenger.setCustomAwayStatus(config.yahoomessenger.status);
});
router.get('/relogin/:apikey', function(request, response) {
var apikey = request.params.apikey;
if (apikey != config.httpserver.apikey){
response.end('Invalid APIKEY: ' + apikey);
return;
}
logger.info("Logging out");
YahooMessenger.logout();
logger.info("Logout");
clearTimeout(keepAliveTimer);
ymLogin();
});
logger.info("Starting http server on port " + config.httpserver.listen_port);
var httpServer = http.createServer(router).listen(config.httpserver.listen_port);