From d50c22f4ebcc7b51d5fd8ba0183f8f49128d00a8 Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Mon, 7 Feb 2022 11:33:10 -0300 Subject: [PATCH 01/33] [FIX] Oembed request not respecting payload limit (#24418) --- app/oembed/server/server.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/oembed/server/server.js b/app/oembed/server/server.js index d3c389e440d5..de2163e8f391 100644 --- a/app/oembed/server/server.js +++ b/app/oembed/server/server.js @@ -99,7 +99,7 @@ const getUrlContent = async function (urlObj, redirectCount = 5) { const url = URL.format(data.urlObj); - const chunks = []; + const sizeLimit = 250000; const response = await fetch(url, { compress: true, @@ -108,17 +108,26 @@ const getUrlContent = async function (urlObj, redirectCount = 5) { 'User-Agent': `${settings.get('API_Embed_UserAgent')} Rocket.Chat/${Info.version}`, 'Accept-Language': settings.get('Language') || 'en', }, - size: 250000, // max size of the response body + size: sizeLimit, // max size of the response body, this was not working as expected so I'm also manually verifying that on the iterator ...(settings.get('Allow_Invalid_SelfSigned_Certs') && { agent: getUnsafeAgent(parsedUrl.protocol), }), }); + let totalSize = 0; + const chunks = []; for await (const chunk of response.body) { + totalSize += chunk.length; chunks.push(chunk); + + if (totalSize > sizeLimit) { + SystemLogger.info({ msg: 'OEmbed request size exceeded', url }); + break; + } } const buffer = Buffer.concat(chunks); + return { headers: Object.fromEntries(response.headers), body: toUtf8(response.headers.get('content-type'), buffer), @@ -209,7 +218,7 @@ OEmbed.getUrlMetaWithCache = async function (url, withFragment) { try { await OEmbedCache.createWithIdAndData(url, data); } catch (_error) { - SystemLogger.error('OEmbed duplicated record', url); + SystemLogger.error({ msg: 'OEmbed duplicated record', url }); } return data; } From 398317c928524657bf13b17e5ede3e86db424c5e Mon Sep 17 00:00:00 2001 From: Douglas Fabris Date: Sat, 5 Feb 2022 00:53:31 -0300 Subject: [PATCH 02/33] [FIX] Skip cloud steps for registered servers on setup wizard (#24407) --- app/ui-login/client/login/form.html | 2 +- app/ui-login/client/login/form.js | 2 +- .../contexts/SetupWizardContext.tsx | 8 +++- .../views/setupWizard/hooks/useParameters.ts | 14 +++--- .../providers/SetupWizardProvider.tsx | 43 +++++++++++-------- .../views/setupWizard/steps/AdminInfoStep.tsx | 3 +- .../steps/OrganizationInfoStep.tsx | 9 +++- .../setupWizard/steps/RegisterServerStep.tsx | 3 +- .../steps/StandaloneServerStep.tsx | 20 ++++----- packages/rocketchat-i18n/i18n/en.i18n.json | 3 +- server/methods/getSetupWizardParameters.js | 9 ++-- 11 files changed, 67 insertions(+), 49 deletions(-) diff --git a/app/ui-login/client/login/form.html b/app/ui-login/client/login/form.html index ef639ddc1719..4c4a253104d9 100644 --- a/app/ui-login/client/login/form.html +++ b/app/ui-login/client/login/form.html @@ -126,7 +126,7 @@

{{{_ "Registration_Succeeded"}}}

{{/if}} {{#if registrationAllowed}} - + {{else}} {{#if linkReplacementText}}