index.js 2.5 KB
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);