hapi-bouncer
Version:
hapi bouncer proxy
73 lines (53 loc) • 2.18 kB
JavaScript
;
exports.__esModule = true;
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
var _sanitizeCookie = require('./utils/sanitizeCookie');
var _sanitizeCookie2 = _interopRequireDefault(_sanitizeCookie);
var _ParsedUrl = require('./utils/ParsedUrl');
var _ParsedUrl2 = _interopRequireDefault(_ParsedUrl);
var _createHandler = require('./createHandler');
var _createHandler2 = _interopRequireDefault(_createHandler);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var debug = (0, _debug2.default)('hapi-bouncer:proxyHapiPlugin:debug');
function routeToHapiRoute(_ref, handler) {
var from = _ref.from,
to = _ref.to;
debug('add route %s://%s%s%s => %s://%s%s', from.protocol, from.hostname, from.port ? ':' + from.port : '', from.path, to.protocol, to.hostname, to.port ? ':' + to.port : '');
var prefix = from.path;
if (prefix[prefix.length - 1] === '/') {
prefix = prefix.substring(0, -1);
}
return {
method: '*',
vhost: from.hostname,
path: prefix + '/{p*}',
handler: handler
};
}
var proxyHapiPlugin = {
register: function register(server, opts, next) {
var sanitizeCookie = opts.sanitizeCookie || _sanitizeCookie2.default;
var createHandler = opts.createHandler || _createHandler2.default;
function onRequest(request, reply) {
var req = request.raw.req;
var cookie = req.headers.cookie;
// sanitize bad cookies, like TestForThirdPartyCookie=yes; __promo_session=0_1437749424386; true; _ga_cid=1001702645.1437749425"
if (cookie) {
req.headers.cookie = sanitizeCookie(cookie);
}
return reply.continue();
}
opts.links.forEach(function (link) {
server.route(routeToHapiRoute(link, createHandler(link)));
});
server.ext('onRequest', onRequest);
next();
}
};
proxyHapiPlugin.register.attributes = {
name: 'proxyHapiPlugin',
version: '1.0.0'
};
exports.default = proxyHapiPlugin;
//# sourceMappingURL=proxyHapiPlugin.js.map