openhim-core
Version:
The OpenHIM core application that provides logging and routing of http requests
162 lines (96 loc) • 5.86 kB
JavaScript
;
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