index.js 1.29 KB
const MODULE_NAME = 'APISERVER';

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

const validApikey = require('./valid-apikey');

const middlewareCommon = require('../middlewares/common');
const routerMatrix = require('./routers/matrix');

const app = express();

app.use((req, res, next) => {
    res.locals.httpgetx_subsystem = MODULE_NAME;
    next();
});

const apikeyChecker = (req, res, next) => {
    if (validApikey(req.params.apikey)) {
        next();
    } else {
        res.status(403).end('Invalid APIKEY');
    }
};

app.use(middlewareCommon);

app.use('/apikey/:apikey', apikeyChecker);
app.use('/apikey/:apikey/matrix', routerMatrix);

app.use((req, res) => {
    const { xid } = res.locals;
    res.status(404).end(`KOMODO-HTTP-GET-X CENTER (APISERVER).\n404: Method not found.\n\nXID: ${xid}.\n`);
});

const listenPort = config.listener && config.listener.apiserver && config.listener.apiserver.port;
if (
    listenPort
    && config.listener && config.listener.apiserver && config.listener.apiserver.apikey
) {
    app.listen(listenPort, () => {
        logger.info(`${MODULE_NAME} FAEE1E47: Listening`, { port: listenPort });
    });
} else {
    logger.info(`${MODULE_NAME}: Disabled because of missing configuration`);
}