From 6a1582a6d450745ea5caae8e18fd37f989f63273 Mon Sep 17 00:00:00 2001 From: Romaric Mourgues Date: Thu, 11 May 2023 12:18:49 +0200 Subject: [PATCH] Move to http-proxy --- tdrive/backend/node/package.json | 3 +- .../src/services/applications-api/index.ts | 20 ++-- tdrive/backend/node/test/e2e/utils.api.ts | 4 - tdrive/backend/node/yarn.lock | 92 ++++++------------- 4 files changed, 42 insertions(+), 77 deletions(-) diff --git a/tdrive/backend/node/package.json b/tdrive/backend/node/package.json index 8fafbfa5..a67376e7 100644 --- a/tdrive/backend/node/package.json +++ b/tdrive/backend/node/package.json @@ -119,12 +119,12 @@ "@elastic/elasticsearch": "7", "@fastify/caching": "^7.0.0", "@fastify/formbody": "^6.0.0", - "@fastify/http-proxy": "7.1.0", "@fastify/static": "^5.0.1", "@ffprobe-installer/ffprobe": "^1.4.1", "@sentry/node": "^6.19.7", "@sentry/tracing": "^6.19.7", "@socket.io/redis-adapter": "^7.1.0", + "@types/http-proxy": "^1.17.11", "@types/pdf-parse": "^1.1.1", "@types/redis": "^4.0.11", "@types/sharp": "^0.29.5", @@ -161,6 +161,7 @@ "get-website-favicon": "^0.0.7", "html-metadata-parser": "^2.0.4", "html-to-text": "^8.2.1", + "http-proxy": "^1.18.1", "idtoken-verifier": "^2.2.3", "jsonwebtoken": "^8.5.1", "jwks-rsa": "^3.0.1", diff --git a/tdrive/backend/node/src/services/applications-api/index.ts b/tdrive/backend/node/src/services/applications-api/index.ts index 967c51d2..c58ea5d1 100644 --- a/tdrive/backend/node/src/services/applications-api/index.ts +++ b/tdrive/backend/node/src/services/applications-api/index.ts @@ -1,9 +1,11 @@ import config from "config"; +import httpProxy from "http-proxy"; import { Prefix, TdriveService } from "../../core/platform/framework"; import WebServerAPI from "../../core/platform/services/webserver/provider"; import Application from "../applications/entities/application"; import web from "./web/index"; -import httpProxy from "@fastify/http-proxy"; + +var proxy = httpProxy.createProxyServer({}); @Prefix("/api") export default class ApplicationsApiService extends TdriveService { @@ -23,11 +25,17 @@ export default class ApplicationsApiService extends TdriveService { const domain = app.internal_domain.replace(/(\/$|^\/)/gm, ""); const prefix = app.external_prefix.replace(/(\/$|^\/)/gm, ""); if (domain && prefix) { - console.log("Listening at ", "/" + prefix + "/*"); - fastify.register(httpProxy, { - upstream: domain + "/" + prefix, - prefix: "/" + prefix, - }); + try { + fastify.all("/" + prefix + "/*", (req, rep) => { + proxy.web(req.raw, rep.raw, { + target: domain, + }); + }); + console.log("Listening at ", "/" + prefix + "/*"); + } catch (e) { + console.log(e); + console.log("Can't listen to ", "/" + prefix + "/*"); + } } } diff --git a/tdrive/backend/node/test/e2e/utils.api.ts b/tdrive/backend/node/test/e2e/utils.api.ts index 18719d63..b7ef87ab 100644 --- a/tdrive/backend/node/test/e2e/utils.api.ts +++ b/tdrive/backend/node/test/e2e/utils.api.ts @@ -1,10 +1,6 @@ import { TestPlatform } from "./setup"; import { InjectPayload, Response } from "light-my-request"; import { logger as log } from "../../src/core/platform/framework"; -import { AbortSignal } from "node-abort-controller"; - -// fix for Reference error AbortSignal in `lru-cache` -global.AbortSignal = AbortSignal as any; declare global { interface ApiResponse extends Response { diff --git a/tdrive/backend/node/yarn.lock b/tdrive/backend/node/yarn.lock index 85955f61..dbc3d173 100644 --- a/tdrive/backend/node/yarn.lock +++ b/tdrive/backend/node/yarn.lock @@ -1112,27 +1112,6 @@ dependencies: fastify-plugin "^3.0.0" -"@fastify/http-proxy@7.1.0": - version "7.1.0" - resolved "https://registry.yarnpkg.com/@fastify/http-proxy/-/http-proxy-7.1.0.tgz#96b05e757ec9ebcc9fc8590911ca38a0cc62d373" - integrity sha512-G15TPeO657N8n4mhlGvbKneZH3exiV8fjbSoJgzcgwzaEmidc+4v3Xg/loTp21palsq+hQPlzVl0eHSzDTAuKA== - dependencies: - "@fastify/reply-from" "^7.0.0" - ws "^8.4.2" - -"@fastify/reply-from@^7.0.0": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@fastify/reply-from/-/reply-from-7.0.1.tgz#ae3798f307bfa1d14b83878cd442f5f7083fabb5" - integrity sha512-ikp6GpmEJ7AVxcDdSVE9MhpUtC9KnImQDegc5ePZ+H7QZcraIjotP7YndwT/fP8lYj2Qr1h4RtuFNU8Wdwleuw== - dependencies: - end-of-stream "^1.4.4" - fastify-plugin "^3.0.0" - http-errors "^2.0.0" - pump "^3.0.0" - semver "^7.3.5" - tiny-lru "^8.0.1" - undici "^5.0.0" - "@fastify/static@^5.0.1": version "5.0.2" resolved "https://registry.npmjs.org/@fastify/static/-/static-5.0.2.tgz" @@ -1869,6 +1848,13 @@ resolved "https://registry.yarnpkg.com/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz#0ea7b61496902b95890dc4c3a116b60cb8dae812" integrity sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ== +"@types/http-proxy@^1.17.11": + version "1.17.11" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.11.tgz#0ca21949a5588d55ac2b659b69035c84bd5da293" + integrity sha512-HC8G7c1WmaF2ekqpnFq626xd3Zz0uvaqFmBJNRZCGEZCXkvSdJoNFn/8Ygbd9fKNQj8UzLdCETaI0UWPAjK7IA== + dependencies: + "@types/node" "*" + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.4" resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz" @@ -3101,13 +3087,6 @@ buffer@^6.0.3: base64-js "^1.3.1" ieee754 "^1.2.1" -busboy@^1.6.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-1.6.0.tgz#966ea36a9502e43cdb9146962523b92f531f6893" - integrity sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA== - dependencies: - streamsearch "^1.1.0" - cache-base@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" @@ -3981,11 +3960,6 @@ denque@^2.0.1: resolved "https://registry.npmjs.org/denque/-/denque-2.0.1.tgz" integrity sha512-tfiWc6BQLXNLpNiR5iGd0Ocu3P3VpxfzFiqubLgMfhfOw9WyvgJBd46CClNn9k3qfbjvT//0cf7AlYRX/OslMQ== -depd@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" - integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== - depd@~1.1.2: version "1.1.2" resolved "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz" @@ -4557,6 +4531,11 @@ event-target-shim@^5.0.0: resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -5055,6 +5034,11 @@ follow-redirects@1.5.10: dependencies: debug "=3.1.0" +follow-redirects@^1.0.0: + version "1.15.2" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.2.tgz#b460864144ba63f2681096f274c4e57026da2c13" + integrity sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA== + follow-redirects@^1.14.0, follow-redirects@^1.14.4: version "1.15.1" resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz" @@ -5641,17 +5625,6 @@ http-errors@1.8.1, http-errors@^1.7.3, http-errors@^1.8.0: statuses ">= 1.5.0 < 2" toidentifier "1.0.1" -http-errors@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" - integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== - dependencies: - depd "2.0.0" - inherits "2.0.4" - setprototypeof "1.2.0" - statuses "2.0.1" - toidentifier "1.0.1" - http-proxy-agent@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" @@ -5661,6 +5634,15 @@ http-proxy-agent@^4.0.1: agent-base "6" debug "4" +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -9321,11 +9303,6 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -statuses@2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" - integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== - "statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz" @@ -9361,11 +9338,6 @@ stream-wormhole@^1.1.0: resolved "https://registry.yarnpkg.com/stream-wormhole/-/stream-wormhole-1.1.0.tgz#300aff46ced553cfec642a05251885417693c33d" integrity sha512-gHFfL3px0Kctd6Po0M8TzEvt3De/xu6cnRrjlfYNhwbhLPLwigI2t1nc6jrzNuaYg5C4YF78PPFuQPzRiqn9ew== -streamsearch@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/streamsearch/-/streamsearch-1.1.0.tgz#404dd1e2247ca94af554e841a8ef0eaa238da764" - integrity sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg== - string-argv@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.1.2.tgz#c5b7bc03fb2b11983ba3a72333dd0559e77e4738" @@ -9906,13 +9878,6 @@ undefsafe@^2.0.2: resolved "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz" integrity sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA== -undici@^5.0.0: - version "5.22.1" - resolved "https://registry.yarnpkg.com/undici/-/undici-5.22.1.tgz#877d512effef2ac8be65e695f3586922e1a57d7b" - integrity sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw== - dependencies: - busboy "^1.6.0" - unfetch@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/unfetch/-/unfetch-4.2.0.tgz#7e21b0ef7d363d8d9af0fb929a5555f6ef97a3be" @@ -10308,11 +10273,6 @@ ws@^7.4.2, ws@^7.4.6: resolved "https://registry.npmjs.org/ws/-/ws-7.5.8.tgz" integrity sha512-ri1Id1WinAX5Jqn9HejiGb8crfRio0Qgu8+MtL36rlTA6RLsMdWt1Az/19A2Qij6uSHUMphEFaTKa4WG+UNHNw== -ws@^8.4.2: - version "8.13.0" - resolved "https://registry.yarnpkg.com/ws/-/ws-8.13.0.tgz#9a9fb92f93cf41512a0735c8f4dd09b8a1211cd0" - integrity sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA== - ws@~7.4.2: version "7.4.6" resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.6.tgz#5654ca8ecdeee47c33a9a4bf6d28e2be2980377c"