diff --git a/Dockerfile b/Dockerfile index 58da514b..a9060e00 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,8 +8,10 @@ RUN mkdir -p /usr/src/app/logs COPY package*.json ./ RUN npm install --only=production COPY dist/ . -RUN sed -i 's/stretch/buster/' /etc/apt/sources.list && apt-get update && apt-get install libgbm-dev ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils -y - +RUN sed -i '/stretch-updates/d' /etc/apt/sources.list && \ + sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list && \ + sed -i 's|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list && \ + echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/99no-check-valid-until && apt-get update && apt-get install libgbm-dev ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgbm1 libgcc1 libglib2.0-0 libgtk-3-0 libnspr4 libnss3 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 lsb-release wget xdg-utils -y EXPOSE 8080 CMD [ "node", "index.js" ] diff --git a/Dockerfile.build b/Dockerfile.build index 178508f2..7b6fa1eb 100644 --- a/Dockerfile.build +++ b/Dockerfile.build @@ -6,8 +6,12 @@ WORKDIR /usr/src/app COPY . . -RUN sed -i 's/stretch/buster/' /etc/apt/sources.list && apt update && apt install -y zip - +RUN sed -i '/stretch-updates/d' /etc/apt/sources.list && \ + sed -i 's|http://deb.debian.org/debian|http://archive.debian.org/debian|g' /etc/apt/sources.list && \ + sed -i 's|http://security.debian.org/debian-security|http://archive.debian.org/debian-security|g' /etc/apt/sources.list && \ + echo 'Acquire::Check-Valid-Until "false";' > /etc/apt/apt.conf.d/99no-check-valid-until && \ + apt update && \ + apt install -y zip libjpeg-turbo-progs nasm RUN npm install && npm run build RUN zip -r dist.zip dist diff --git a/src/proxies_v8/proxies_v8.ts b/src/proxies_v8/proxies_v8.ts index 0fcd1ad5..14c79745 100644 --- a/src/proxies_v8/proxies_v8.ts +++ b/src/proxies_v8/proxies_v8.ts @@ -14,6 +14,7 @@ import { proxyContent, proxyContentLearnerVM, proxyCreatorDownloadCertificate, + proxyCreatorEtlFrac, proxyCreatorForms, proxyCreatorKnowledge, proxyCreatorLearner, @@ -202,6 +203,10 @@ proxiesV8.use( '/content', proxyCreatorRoute(express.Router(), CONSTANTS.CONTENT_API_BASE + '/content') ) +proxiesV8.use( + '/fractv1', + proxyCreatorEtlFrac(express.Router(), CONSTANTS.FRAC_ETL_API_BASE) +) proxiesV8.use( '/registry', proxyCreatorRoute(express.Router(), CONSTANTS.REGISTRY_API_BASE) diff --git a/src/utils/env.ts b/src/utils/env.ts index 10637fc1..45ff9624 100644 --- a/src/utils/env.ts +++ b/src/utils/env.ts @@ -52,6 +52,7 @@ export const CONSTANTS = { ES_PASSWORD: env.ES_PASSWORD || 'iGOT@123+', ES_USERNAME: env.ES_USERNAME || 'elastic', FEEDBACK_API_BASE: env.FEEDBACK_API_BASE || env.SB_EXT_API_BASE_2, + FRAC_ETL_API_BASE: env.FRAC_ETL_API_BASE || 'http://frac-etl-service:8083', GAMIFICATION_API_BASE: env.GAMIFICATION_API_BASE || 'http://localhost:port-number', GOALS_API_BASE: env.GOALS_API_BASE || env.SB_EXT_API_BASE_2, diff --git a/src/utils/proxyCreator.ts b/src/utils/proxyCreator.ts index 4d4558d0..888d947b 100644 --- a/src/utils/proxyCreator.ts +++ b/src/utils/proxyCreator.ts @@ -472,3 +472,24 @@ export function proxyCreatorDownloadCertificate( }) return route } +/** + * Proxies requests from the frontend to the etl-frac service. + * @param route The express router to which the proxy routes should be added. + * @param targetUrl The URL of the etl-frac service. + * @param timeout The maximum time in milliseconds that the proxy should wait for a response from the etl-frac service. + * @returns The express router with the proxy routes added. + */ +export function proxyCreatorEtlFrac( + route: Router, + targetUrl: string, + timeout = 10000 +): Router { + route.all('/*', (req, res) => { + // tslint:disable-next-line: no-console + console.log('REQ_URL_ORIGINAL_FRAC', req.originalUrl) + proxyCreator(timeout).web(req, res, { + target: targetUrl, + }) + }) + return route +} diff --git a/src/utils/whitelistApis.ts b/src/utils/whitelistApis.ts index dac59f9c..77ee9a74 100644 --- a/src/utils/whitelistApis.ts +++ b/src/utils/whitelistApis.ts @@ -512,6 +512,11 @@ export const API_LIST = { // tslint:disable-next-line: object-literal-sort-keys ROLE_CHECK: [ROLE.PUBLIC], }, + '/proxies/v8/fractv1': { + checksNeeded: [CHECK.ROLE], + // tslint:disable-next-line: object-literal-sort-keys + ROLE_CHECK: [ROLE.PUBLIC], + }, '/protected/v8/admin/userRegistration/bulkUpload': { checksNeeded: [CHECK.ROLE], // tslint:disable-next-line: object-literal-sort-keys @@ -1614,6 +1619,7 @@ export const API_LIST = { '/proxies/v8/learner/course/v1/enrol', '/proxies/v8/learnervm/private/content/v3/retire/', '/proxies/v8/private/content/v3/update/:do_id', + '/proxies/v8/fractv1', '/protected/v8/user/profileDetails/test', '/protected/v8/resource/', '/protected/v8/user/details',