index.js 2.15 KB
"use strict";

const express = require('express');
const nunjucks = require('nunjucks');

const config = require('komodo-sdk/config');
const logger = require('komodo-sdk/logger');
const matrix = require('komodo-sdk/matrix');


const routerSms = require('./router-sms');
const routerUssd = require('./router-ussd');
const routerStocks = require('./router-stocks');
const routerRuntime = require('./router-runtime');

const app = express();

app.use(express.static(__dirname + '/public', {maxAge: 24 * 3600 * 1000}));

nunjucks.configure(__dirname + '/views', {
    autoescape: true,
    noCache: true,
    express: app
});

app.use(function(req, res, next) {
    res.locals.site_name = config.handler_name;
    next();
})

function modemSignal(req, res, next) {
    const signal_strength = matrix && matrix.modem && matrix.modem.signal_strength ? matrix.modem.signal_strength : 0;
    res.locals.signal_strength = signal_strength;

    if (signal_strength < 2 || !signal_strength) {
        res.locals.signal_strength_image = 'signal-0.png';
        res.locals.signal_strength_title = 'No signal';
    }
    else if (signal_strength < 10) {
        res.locals.signal_strength_image = 'signal-1.png';
        res.locals.signal_strength_title = 'Marginal';
    }
    else if (signal_strength < 15) {
        res.locals.signal_strength_image = 'signal-2.png';
        res.locals.signal_strength_title = 'OK';
    }
    else if (signal_strength < 20) {
        res.locals.signal_strength_image = 'signal-3.png';
        res.locals.signal_strength_title = 'Good';
    }
    else {
        res.locals.signal_strength_image = 'signal-4.png';
        res.locals.signal_strength_title = 'Excelent';
    }

    next();
}

app.use(modemSignal);

app.get('/', function(req, res, next) {
    res.redirect('/sms');
})

app.use('/sms', routerSms);
app.use('/ussd', routerUssd);
app.use('/stocks', routerStocks);
app.use('/runtime', routerRuntime);

const modem_dashboard_port = (config && config.modem_dashboard && config.modem_dashboard.port) ? config.modem_dashboard.port : 22765;
app.listen(modem_dashboard_port, function () {
    logger.info('Modem dashboard started', {listen_port: modem_dashboard_port});
});