UNPKG

openhim-core

Version:

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

166 lines (118 loc) 4.17 kB
koa = require 'koa' router = require './middleware/router' messageStore = require './middleware/messageStore' basicAuthentication = require './middleware/basicAuthentication' tlsAuthentication = require "./middleware/tlsAuthentication" rerunBypassAuthentication = require "./middleware/rerunBypassAuthentication" rerunBypassAuthorisation = require "./middleware/rerunBypassAuthorisation" rerunUpdateTransactionTask = require "./middleware/rerunUpdateTransactionTask" tcpBypassAuthentication = require "./middleware/tcpBypassAuthentication" retrieveTCPTransaction = require "./middleware/retrieveTCPTransaction" requestMatching = require './middleware/requestMatching' authorisation = require './middleware/authorisation' stats = require './stats' pollingBypassAuthorisation = require './middleware/pollingBypassAuthorisation' pollingBypassAuthentication = require './middleware/pollingBypassAuthentication' events = require './middleware/events' proxy = require './middleware/proxy' rewrite = require './middleware/rewriteUrls' config = require './config/config' config.authentication = config.get('authentication') getRawBody = require 'raw-body' tcpAdapter = require './tcpAdapter' Q = require "q" config.statsd = config.get 'statsd' application = config.get 'application' SDC = require 'statsd-client' os = require 'os' domain = "#{os.hostname()}.#{application.name}.appMetrics" sdc = new SDC config.statsd compress = require 'koa-compress' rawBodyReader = (next) -> startTime = new Date() if config.statsd.enabled body = yield getRawBody this.req, length: this.length, encoding: this.charset this.body = body if body sdc.timing "#{domain}.rawBodyReaderMiddleware", startTime if config.statsd.enabled yield next # Primary app exports.setupApp = (done) -> app = koa() # Basic authentication middleware if config.authentication.enableBasicAuthentication app.use basicAuthentication.koaMiddleware # TLS authentication middleware if 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 compress( threshold: 8 flush: require("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 done(app) # Rerun app that bypasses auth exports.rerunApp = (done) -> app = koa() 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 done(app) # App for TCP/TLS sockets exports.tcpApp = (done) -> app = koa() 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 done(app) # App used by scheduled polling exports.pollingApp = (done) -> app = koa() 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 done(app)