UNPKG

openhim-core

Version:

The OpenHIM core application that provides logging and routing of http requests

162 lines (96 loc) 5.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupApp = setupApp; exports.rerunApp = rerunApp; exports.tcpApp = tcpApp; exports.pollingApp = pollingApp; var _koa = _interopRequireDefault(require("koa")); var _rawBody = _interopRequireDefault(require("raw-body")); var _koaCompress = _interopRequireDefault(require("koa-compress")); var _zlib = require("zlib"); var router = _interopRequireWildcard(require("./middleware/router")); var messageStore = _interopRequireWildcard(require("./middleware/messageStore")); var basicAuthentication = _interopRequireWildcard(require("./middleware/basicAuthentication")); var tlsAuthentication = _interopRequireWildcard(require("./middleware/tlsAuthentication")); var rerunBypassAuthentication = _interopRequireWildcard(require("./middleware/rerunBypassAuthentication")); var rerunBypassAuthorisation = _interopRequireWildcard(require("./middleware/rerunBypassAuthorisation")); var rerunUpdateTransactionTask = _interopRequireWildcard(require("./middleware/rerunUpdateTransactionTask")); var tcpBypassAuthentication = _interopRequireWildcard(require("./middleware/tcpBypassAuthentication")); var retrieveTCPTransaction = _interopRequireWildcard(require("./middleware/retrieveTCPTransaction")); var requestMatching = _interopRequireWildcard(require("./middleware/requestMatching")); var authorisation = _interopRequireWildcard(require("./middleware/authorisation")); var pollingBypassAuthorisation = _interopRequireWildcard(require("./middleware/pollingBypassAuthorisation")); var pollingBypassAuthentication = _interopRequireWildcard(require("./middleware/pollingBypassAuthentication")); var events = _interopRequireWildcard(require("./middleware/events")); var proxy = _interopRequireWildcard(require("./middleware/proxy")); var rewrite = _interopRequireWildcard(require("./middleware/rewriteUrls")); var _config = require("./config"); function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _config.config.authentication = _config.config.get('authentication'); async function rawBodyReader(ctx, next) { const body = await (0, _rawBody.default)(ctx.req); if (body) { ctx.body = body; } await next(); } // Primary app function setupApp(done) { const app = new _koa.default(); // Basic authentication middleware if (_config.config.authentication.enableBasicAuthentication) { app.use(basicAuthentication.koaMiddleware); } // TLS authentication middleware if (_config.config.authentication.enableMutualTLSAuthentication) { app.use(tlsAuthentication.koaMiddleware); } app.use(rawBodyReader); // Request Matching middleware app.use(requestMatching.koaMiddleware); // Authorisation middleware app.use(authorisation.koaMiddleware); // Compress response on exit app.use((0, _koaCompress.default)({ threshold: 8, flush: _zlib.Z_SYNC_FLUSH })); // Proxy app.use(proxy.koaMiddleware); // Persist message middleware app.use(messageStore.koaMiddleware); // URL rewriting middleware app.use(rewrite.koaMiddleware); // Events app.use(events.koaMiddleware); // Call router app.use(router.koaMiddleware); return done(app); } // Rerun app that bypasses auth function rerunApp(done) { const app = new _koa.default(); app.use(rawBodyReader); // Rerun bypass authentication middlware app.use(rerunBypassAuthentication.koaMiddleware); // Rerun bypass authorisation middlware app.use(rerunBypassAuthorisation.koaMiddleware); // Update original transaction with rerunned transaction ID app.use(rerunUpdateTransactionTask.koaMiddleware); // Persist message middleware app.use(messageStore.koaMiddleware); // Authorisation middleware app.use(authorisation.koaMiddleware); // Events app.use(events.koaMiddleware); // Call router app.use(router.koaMiddleware); return done(app); } // App for TCP/TLS sockets function tcpApp(done) { const app = new _koa.default(); app.use(rawBodyReader); app.use(retrieveTCPTransaction.koaMiddleware); // TCP bypass authentication middlware app.use(tcpBypassAuthentication.koaMiddleware); // Proxy app.use(proxy.koaMiddleware); // Persist message middleware app.use(messageStore.koaMiddleware); // Events app.use(events.koaMiddleware); // Call router app.use(router.koaMiddleware); return done(app); } // App used by scheduled polling function pollingApp(done) { const app = new _koa.default(); app.use(rawBodyReader); // Polling bypass authentication middlware app.use(pollingBypassAuthentication.koaMiddleware); // Polling bypass authorisation middleware app.use(pollingBypassAuthorisation.koaMiddleware); // Persist message middleware app.use(messageStore.koaMiddleware); // Events app.use(events.koaMiddleware); // Call router app.use(router.koaMiddleware); return done(app); } //# sourceMappingURL=koaMiddleware.js.map