3 const proxy = require('http-proxy-middleware');
5 let localDevConfig = {};
7 localDevConfig = require('./devConfig');
9 const devConfig = Object.assign({}, require('./devConfig.defaults'), localDevConfig);
10 let devPort = process.env.PORT || devConfig.port;
13 module.exports = function (server) {
14 let cookieRules = devConfig.proxyConfig.cookieReplaceRules;
15 let cookies = devConfig.proxyConfig.cookies;
16 console.log('---------------------');
18 let proxyConfigDefaults = {
21 onProxyRes: (proxyRes, req, res) => {
22 let setCookie = proxyRes.headers['set-cookie'];
24 cookieRules.forEach(function(rule) {
25 setCookie[0] = setCookie[0].replace(rule.replace, rule.with);
28 if (proxyRes.statusCode === 302 && proxyRes.headers.location.indexOf(devConfig.proxyConfig.login) > -1) {
29 proxyRes.headers.location = `http://localhost:${devPort}/${devConfig.proxyConfig.redirectionPath}`;
31 for (let cookie in cookies) {
32 myCookies.push(cookie + '=' + cookies[cookie]);
34 res.setHeader('Set-Cookie', myCookies);
41 devConfig.proxyConfig.urlReplaceRules.forEach(function(rule) {
42 if (req.url.indexOf(rule.url) > -1) {
43 req.url = req.url.replace(rule.replace, rule.with);
46 devConfig.proxyConfig.jsReplaceRules.forEach(function(rule) {
47 let regex = new RegExp('^(.*)' + rule.replace);
48 let match = req.url.match(regex);
49 let newUrl = match && match[1] + rule.with + '.js';
51 console.log(`REWRITING URL: ${req.url} -> ${newUrl}`);
62 // standalone back-end (proxyTarget) has higher priority, so it should be first
63 if (devConfig.proxyTarget) {
64 console.log('Onboarding proxy set to : ' + devConfig.proxyTarget);
66 target : devConfig.proxyTarget,
67 config: devConfig.proxyConfig.onboardingProxy}
70 console.log('Catalog proxy set to : ' + devConfig.proxyCatalogTarget);
72 console.log('Catalog proxy set to : ' + devConfig.proxyCatalogTarget);
74 target : devConfig.proxyCatalogTarget,
75 config: devConfig.proxyConfig.catalogProxy}
77 proxies.forEach(function(p) {
79 proxy(p.config.proxy, Object.assign({}, proxyConfigDefaults, {
81 pathRewrite: p.config.rewrite
87 let websocketTarget = devConfig.proxyCatalogTarget;
88 if (devConfig.proxyWebsocketTarget) {
89 websocketTarget = devConfig.proxyWebsocketTarget;
91 console.log('Websocket proxy set to : ' + websocketTarget);
92 console.log('---------------------');
93 var wsProxy = proxy(devConfig.proxyConfig.websocketProxy.proxy, Object.assign({}, proxyConfigDefaults, {
94 target: websocketTarget,
97 middlewares.push(wsProxy);
100 server.use(middlewares);
101 server.on('upgrade', wsProxy.upgrade);