UNPKG

openhim-core

Version:

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

195 lines (176 loc) 3.85 kB
var AlertsDef, ChannelDef, ChannelSchema, ContactUserDef, RewriteRuleDef, RouteDef, Schema, connectionDefault, mongoose, server; mongoose = require("mongoose"); server = require("../server"); connectionDefault = server.connectionDefault; Schema = mongoose.Schema; ContactUserDef = require('./contactGroups').ContactUserDef; RouteDef = { "name": { type: String, required: true }, "secured": Boolean, "host": { type: String, required: true }, "port": { type: Number, required: true, min: 0, max: 65536 }, "path": String, "pathTransform": String, "primary": Boolean, "username": String, "password": String, "type": { type: String, "default": 'http', "enum": ['http', 'tcp', 'mllp'] }, "cert": Schema.Types.ObjectId, "status": { type: String, "default": 'enabled', "enum": ['enabled', 'disabled'] }, "forwardAuthHeader": { type: Boolean, "default": false } }; AlertsDef = { "condition": { type: String, "default": 'status', "enum": ['status', 'auto-retry-max-attempted'] }, "status": { type: String }, "failureRate": Number, "groups": [Schema.Types.ObjectId], "users": [ContactUserDef] }; RewriteRuleDef = { "fromHost": { type: String, required: true }, "toHost": { type: String, required: true }, "fromPort": { type: Number, required: true, "default": 80 }, "toPort": { type: Number, required: true, "default": 80 }, "pathTransform": String }; ChannelDef = { "name": { type: String, required: true }, "description": String, "urlPattern": { type: String, required: true }, "type": { type: String, "default": 'http', "enum": ['http', 'tcp', 'tls', 'polling'] }, "priority": { type: Number, min: 1 }, "tcpPort": { type: Number, min: 0, max: 65536 }, "tcpHost": String, "pollingSchedule": String, "requestBody": Boolean, "responseBody": Boolean, "allow": [ { type: String, required: true } ], "whitelist": [String], "authType": { type: String, "default": 'private', "enum": ['private', 'public'] }, "routes": [RouteDef], "matchContentTypes": [String], "matchContentRegex": String, "matchContentXpath": String, "matchContentJson": String, "matchContentValue": String, "properties": [Object], "txViewAcl": [String], "txViewFullAcl": [String], "txRerunAcl": [String], "alerts": [AlertsDef], "status": { type: String, "default": 'enabled', "enum": ['enabled', 'disabled', 'deleted'] }, "rewriteUrls": { type: Boolean, "default": false }, "addAutoRewriteRules": { type: Boolean, "default": true }, "rewriteUrlsConfig": [RewriteRuleDef], "autoRetryEnabled": { type: Boolean, "default": false }, "autoRetryPeriodMinutes": { type: Number, "default": 60, min: 1 }, "autoRetryMaxAttempts": { type: Number, min: 0 } }; exports.RouteDef = RouteDef; /* * The Channel object that describes a specific channel within the OpenHIM. * It provides some metadata describing a channel and contians a number of * route objects. If a request matches the urlPattern of a channel it should * be routed to each of the routes described in that channel. * * A channel also has an allow property. This property should contain a list * of users or group that are authroised to send messages to this channel. */ ChannelSchema = new Schema(ChannelDef); ChannelSchema.index("name", { unique: true }); exports.Channel = connectionDefault.model('Channel', ChannelSchema); exports.ChannelDef = ChannelDef; exports.isChannelEnabled = function(channel) { return !channel.status || channel.status === 'enabled'; }; //# sourceMappingURL=channels.js.map