3 const proxy = require('http-proxy-middleware');
5 const devConfig = require('./tools/getDevConfig');
6 let devPort = process.env.PORT || devConfig.port;
8 module.exports = function(server) {
9 let cookieRules = devConfig.proxyConfig.cookieReplaceRules;
10 let cookies = devConfig.proxyConfig.cookies;
11 console.log('---------------------');
13 let proxyConfigDefaults = {
16 onProxyRes: (proxyRes, req, res) => {
17 let setCookie = proxyRes.headers['set-cookie'];
19 cookieRules.forEach(function(rule) {
20 setCookie[0] = setCookie[0].replace(
27 proxyRes.statusCode === 302 &&
28 proxyRes.headers.location.indexOf(devConfig.proxyConfig.login) >
31 proxyRes.headers.location = `http://localhost:${devPort}/${
32 devConfig.proxyConfig.redirectionPath
35 for (let cookie in cookies) {
36 myCookies.push(cookie + '=' + cookies[cookie]);
38 res.setHeader('Set-Cookie', myCookies);
45 devConfig.proxyConfig.urlReplaceRules.forEach(function(rule) {
46 if (req.url.indexOf(rule.url) > -1) {
47 req.url = req.url.replace(rule.replace, rule.with);
50 devConfig.proxyConfig.jsReplaceRules.forEach(function(rule) {
51 let regex = new RegExp('^(.*)' + rule.replace);
52 let match = req.url.match(regex);
53 let newUrl = match && match[1] + rule.with + '.js';
55 console.log(`REWRITING URL: ${req.url} -> ${newUrl}`);
65 // standalone back-end (proxyTarget) has higher priority, so it should be first
66 if (devConfig.proxyTarget) {
67 console.log('Onboarding proxy set to : ' + devConfig.proxyTarget);
69 target: devConfig.proxyTarget,
70 config: devConfig.proxyConfig.onboardingProxy
74 'Onboarding proxy set to : ' + devConfig.proxyCatalogTarget
77 console.log('Catalog proxy set to : ' + devConfig.proxyCatalogTarget);
79 target: devConfig.proxyCatalogTarget,
80 config: devConfig.proxyConfig.catalogProxy
82 proxies.forEach(function(p) {
86 Object.assign({}, proxyConfigDefaults, {
88 pathRewrite: p.config.rewrite
94 let websocketTarget = devConfig.proxyCatalogTarget;
95 if (devConfig.proxyWebsocketTarget) {
96 websocketTarget = devConfig.proxyWebsocketTarget;
98 console.log('Websocket proxy set to : ' + websocketTarget);
99 console.log('---------------------');
101 devConfig.proxyConfig.websocketProxy.proxy,
102 Object.assign({}, proxyConfigDefaults, {
103 target: websocketTarget,
107 middlewares.push(wsProxy);
109 server.use(middlewares);
110 server.on('upgrade', wsProxy.upgrade);