From: ilanap Date: Sun, 17 Jan 2021 15:09:35 +0000 (+0200) Subject: Fixes for proxy server for onboarding UI X-Git-Tag: 1.8.1~10 X-Git-Url: https://gerrit.onap.org/r/gitweb?a=commitdiff_plain;h=1d8517d50cef8b6e115748541a927227fe06500f;p=sdc.git Fixes for proxy server for onboarding UI Issue-ID: SDC-3436 Signed-off-by: ilanap Change-Id: Ie7b83b1a6ad0decdea849f7848f7ffd5af05ce23 --- diff --git a/openecomp-ui/devConfig.defaults.json b/openecomp-ui/devConfig.defaults.json index bd86213587..7f89909059 100644 --- a/openecomp-ui/devConfig.defaults.json +++ b/openecomp-ui/devConfig.defaults.json @@ -3,24 +3,81 @@ "proxyCatalogTarget": null, "proxyWebsocketTarget": null, "proxyTarget": null, - "proxyConfig": { - "cookies": null, - "cookiesReplaceRules": [], - "urlReplaceRules": [], - "jsReplaceRules": [], - "appContextPath": null, - "login": null, - "redirectionPath": null, - "onboardingProxy": { - "rewrite": null, - "proxy": [] + "cookie": { + "junctionName": "IV_JCT", + "prefix": "AMWEBJCT!", + "userIdSuffix": "USER_ID", + "userFirstName": "HTTP_CSP_FIRSTNAME", + "userLastName": "HTTP_CSP_LASTNAME", + "userEmail": "HTTP_CSP_EMAIL", + "xEcompRequestId": " X-ECOMP-RequestID", + "portalCookie": "EPService" + }, + "env": { + "role": "designer" + }, + "userTypes": { + "admin": { + "userId": "jh0003", + "email": "mail@gmail.com", + "firstName": "Jimmy", + "lastName": "Hendrix", + "xEcompRequestId": "ccccc" }, - "catalogProxy": { - "rewrite": null, - "proxy": [] + "designer": { + "userId": "cs0008", + "email": "designer@sdc.com", + "firstName": "Carlos", + "lastName": "Santana", + "xEcompRequestId": "ccccc" + } + }, + "proxyConfig" : { + "urlReplaceRules" : [ + { + "url" : "/proxy-designer1", + "replace" : "/proxy-designer1", + "with" : "" + }, + { + "url" : "/onboarding/resources", + "replace" : "/onboarding", + "with" : "" + } + ], + "jsReplaceRules" : [ + { + "replace" : "/onboarding/punch-outs_en.js", + "with" : "/onboarding/punch-outs.js" + } + ], + "appContextPath" : "/onboarding", + "redirectionPath" : "sdc1#/onboardVendor", + "onboardingProxy" : { + "rewrite" : { + "/sdc1/feProxy/onboarding-api": "/onboarding-api" + }, + "proxy" : [ + "/api", + "/onboarding-api", + "/sdc1/feProxy/onboarding-api" + ] + }, + "catalogProxy" : { + "rewrite" : { + "/sdc1/feProxy/onboarding-api": "/sdc1/feProxy/onboarding-api", + "/onboarding-api": "/sdc1/feProxy/onboarding-api" + }, + "proxy" : [ + "/sdc1", + "/onboarding-api", + "/scripts", + "/styles" + ] }, - "websocketProxy": { - "proxy": [] + "websocketProxy" : { + "proxy" : ["/notification-api"], + "enabled" : false } } } diff --git a/openecomp-ui/proxy-server.js b/openecomp-ui/proxy-server.js index 99685424e2..6db8e61ac1 100644 --- a/openecomp-ui/proxy-server.js +++ b/openecomp-ui/proxy-server.js @@ -6,36 +6,50 @@ const devConfig = require('./tools/getDevConfig'); let devPort = process.env.PORT || devConfig.port; module.exports = function(server) { - let cookieRules = devConfig.proxyConfig.cookieReplaceRules; - let cookies = devConfig.proxyConfig.cookies; + console.log(''); console.log('---------------------'); + console.log('---------------------'); + console.log('---------------------'); + console.log( + 'Local URL: http://localhost:' + devPort + '/sdc1/#!/onboardVendor' + ); + console.log('---------------------'); + console.log('---------------------'); + console.log('---------------------'); + console.log('Starting dev server with role: ' + devConfig.env.role); + let userType = devConfig.userTypes[devConfig.env.role]; let proxyConfigDefaults = { changeOrigin: true, secure: false, + logLevel: 'debug', onProxyRes: (proxyRes, req, res) => { - let setCookie = proxyRes.headers['set-cookie']; - if (setCookie) { - cookieRules.forEach(function(rule) { - setCookie[0] = setCookie[0].replace( - rule.replace, - rule.with - ); - }); - } + res.cookie( + devConfig.cookie.userIdSuffix, + req.headers[devConfig.cookie.userIdSuffix] || userType.userId + ); + res.cookie( + devConfig.cookie.userEmail, + req.headers[devConfig.cookie.userEmail] || userType.email + ); + res.cookie( + devConfig.cookie.userFirstName, + req.headers[devConfig.cookie.userFirstName] || + userType.firstName + ); + res.cookie( + devConfig.cookie.userLastName, + req.headers[devConfig.cookie.userLastName] || userType.lastName + ); if ( - proxyRes.statusCode === 302 && - proxyRes.headers.location.indexOf(devConfig.proxyConfig.login) > - -1 + proxyRes && + proxyRes.headers && + proxyRes.headers.location && + proxyRes.headers.location.indexOf('login') > -1 ) { proxyRes.headers.location = `http://localhost:${devPort}/${ devConfig.proxyConfig.redirectionPath - }`; - let myCookies = []; - for (let cookie in cookies) { - myCookies.push(cookie + '=' + cookies[cookie]); - } - res.setHeader('Set-Cookie', myCookies); + }`; } } }; @@ -45,15 +59,17 @@ module.exports = function(server) { devConfig.proxyConfig.urlReplaceRules.forEach(function(rule) { if (req.url.indexOf(rule.url) > -1) { req.url = req.url.replace(rule.replace, rule.with); + next(); } }); devConfig.proxyConfig.jsReplaceRules.forEach(function(rule) { let regex = new RegExp('^(.*)' + rule.replace); let match = req.url.match(regex); - let newUrl = match && match[1] + rule.with + '.js'; + let newUrl = match && match[1] + rule.with; if (newUrl) { console.log(`REWRITING URL: ${req.url} -> ${newUrl}`); req.url = newUrl; + next(); } }); next(); @@ -80,32 +96,39 @@ module.exports = function(server) { config: devConfig.proxyConfig.catalogProxy }); proxies.forEach(function(p) { + console.log( + 'adding: ' + p.target + ' with rewrite: ' + p.config.rewrite + ); middlewares.push( proxy( p.config.proxy, Object.assign({}, proxyConfigDefaults, { target: p.target, + loglevel: 'debug', pathRewrite: p.config.rewrite }) ) ); }); - let websocketTarget = devConfig.proxyCatalogTarget; - if (devConfig.proxyWebsocketTarget) { - websocketTarget = devConfig.proxyWebsocketTarget; + if (devConfig.proxyConfig.websocketProxy.enabled) { + let websocketTarget = devConfig.proxyCatalogTarget; + if (devConfig.proxyWebsocketTarget) { + websocketTarget = devConfig.proxyWebsocketTarget; + } + console.log('Websocket proxy set to : ' + websocketTarget); + console.log('---------------------'); + var wsProxy = proxy( + devConfig.proxyConfig.websocketProxy.proxy, + Object.assign({}, proxyConfigDefaults, { + target: websocketTarget, + ws: true + }) + ); + middlewares.push(wsProxy); + server.use(middlewares); + server.on('upgrade', wsProxy.upgrade); + } else { + server.use(middlewares); } - console.log('Websocket proxy set to : ' + websocketTarget); - console.log('---------------------'); - var wsProxy = proxy( - devConfig.proxyConfig.websocketProxy.proxy, - Object.assign({}, proxyConfigDefaults, { - target: websocketTarget, - ws: true - }) - ); - middlewares.push(wsProxy); - - server.use(middlewares); - server.on('upgrade', wsProxy.upgrade); };