webadmin.js 1.3 KB
var express = require('express');
var nunjucks = require('nunjucks');
var bodyParser = require('body-parser');

var config;
var logger;

var app = express();

function pageHome(req, res, next) {
    res.render('restart.html', {title: config.globals.smsc});
}

function doRestart(req, res, next) {
    if (config.webadmin.password.trim() && config.webadmin.password.trim() == req.body.password) {
        res.end('Restarting....');
        process.exit(1);
    } else {
        res.redirect('/');
    }
}

function init(options) {
    config = options.config;
    logger = options.logger;

    if (!config.webadmin) {
        logger.warn('Not starting webadmin because missing of config.webadmin');
        return;
    }

    app.set('views', './views');
    app.use(express.static('public', {maxAge: 24 * 3600 * 1000}));
    app.use(bodyParser.urlencoded({extended: true}));
    nunjucks.configure('views', {
        autoescape: true,
        express: app
    });

    app.get('/', pageHome);
    app.post('/', doRestart);

    if (!config.webadmin.listen_port) {
        logger.warn('Not starting webadmin because missing config.webadmin.listen_port');
    }

    app.listen(config.webadmin.listen_port, function () {
        logger.info('Webadmin listening on port ' + config.webadmin.listen_port);
    });
};

exports.init = init;