From 535be37befafc5d9e3636d60492a7efc241981eb Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 12 Nov 2024 22:31:36 -0800 Subject: [PATCH 1/2] Fix: fix some instances of HTTTP --- src/widgets/beszel/proxy.js | 6 +++--- src/widgets/calendar/proxy.js | 2 +- src/widgets/npm/proxy.js | 6 +++--- src/widgets/omada/proxy.js | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/widgets/beszel/proxy.js b/src/widgets/beszel/proxy.js index 5f70a10d..04083e42 100644 --- a/src/widgets/beszel/proxy.js +++ b/src/widgets/beszel/proxy.js @@ -54,7 +54,7 @@ export default async function beszelProxyHandler(req, res) { if (!token) { [status, token] = await login(loginUrl, widget.username, widget.password, service); if (status !== 200) { - logger.debug(`HTTTP ${status} logging into npm api: ${token}`); + logger.debug(`HTTP ${status} logging into npm api: ${token}`); return res.status(status).send(token); } } @@ -68,12 +68,12 @@ export default async function beszelProxyHandler(req, res) { }); if (status === 403) { - logger.debug(`HTTTP ${status} retrieving data from npm api, logging in and trying again.`); + logger.debug(`HTTP ${status} retrieving data from npm api, logging in and trying again.`); cache.del(`${tokenCacheKey}.${service}`); [status, token] = await login(loginUrl, widget.username, widget.password, service); if (status !== 200) { - logger.debug(`HTTTP ${status} logging into npm api: ${data}`); + logger.debug(`HTTP ${status} logging into npm api: ${data}`); return res.status(status).send(data); } diff --git a/src/widgets/calendar/proxy.js b/src/widgets/calendar/proxy.js index 996ea324..cf754424 100644 --- a/src/widgets/calendar/proxy.js +++ b/src/widgets/calendar/proxy.js @@ -21,7 +21,7 @@ export default async function calendarProxyHandler(req, res) { if (contentType) res.setHeader("Content-Type", contentType); if (status !== 200) { - logger.debug(`HTTTP ${status} retrieving data from integration URL ${integration.url} : ${data}`); + logger.debug(`HTTP ${status} retrieving data from integration URL ${integration.url} : ${data}`); return res.status(status).send(data); } diff --git a/src/widgets/npm/proxy.js b/src/widgets/npm/proxy.js index 3f1e3495..978254f8 100644 --- a/src/widgets/npm/proxy.js +++ b/src/widgets/npm/proxy.js @@ -56,7 +56,7 @@ export default async function npmProxyHandler(req, res) { if (!token) { [status, token] = await login(loginUrl, widget.username, widget.password, service); if (status !== 200) { - logger.debug(`HTTTP ${status} logging into npm api: ${token}`); + logger.debug(`HTTP ${status} logging into npm api: ${token}`); return res.status(status).send(token); } } @@ -70,12 +70,12 @@ export default async function npmProxyHandler(req, res) { }); if (status === 403) { - logger.debug(`HTTTP ${status} retrieving data from npm api, logging in and trying again.`); + logger.debug(`HTTP ${status} retrieving data from npm api, logging in and trying again.`); cache.del(`${tokenCacheKey}.${service}`); [status, token] = await login(loginUrl, widget.username, widget.password, service); if (status !== 200) { - logger.debug(`HTTTP ${status} logging into npm api: ${data}`); + logger.debug(`HTTP ${status} logging into npm api: ${data}`); return res.status(status).send(data); } diff --git a/src/widgets/omada/proxy.js b/src/widgets/omada/proxy.js index ac3453a8..8e8994a5 100644 --- a/src/widgets/omada/proxy.js +++ b/src/widgets/omada/proxy.js @@ -138,7 +138,7 @@ export default async function omadaProxyHandler(req, res) { const sitesResponseData = JSON.parse(data); if (status !== 200 || sitesResponseData.errorCode > 0) { - logger.debug(`HTTTP ${status} getting sites list: ${sitesResponseData.msg}`); + logger.debug(`HTTP ${status} getting sites list: ${sitesResponseData.msg}`); return res .status(status) .json({ error: { message: "Error getting sites list", url, data: sitesResponseData } }); From d82fbc3026b1dd1c50d8d75f6d73e598b3dc0f41 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 12 Nov 2024 22:34:26 -0800 Subject: [PATCH 2/2] Enhancement: allow widgets to specify default headers, fix buffer error output (#4287) --- src/utils/proxy/handlers/generic.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/utils/proxy/handlers/generic.js b/src/utils/proxy/handlers/generic.js index e4717469..c6b9236b 100644 --- a/src/utils/proxy/handlers/generic.js +++ b/src/utils/proxy/handlers/generic.js @@ -23,7 +23,7 @@ export default async function genericProxyHandler(req, res, map) { formatApiCall(widgets[widget.type].api, { endpoint, ...widget }).replace(/(?<=\?.*)\?/g, "&"), ); - const headers = req.extraHeaders ?? widget.headers ?? {}; + const headers = req.extraHeaders ?? widget.headers ?? widgets[widget.type].headers ?? {}; if (widget.username && widget.password) { headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; @@ -75,7 +75,13 @@ export default async function genericProxyHandler(req, res, map) { url.port ? `:${url.port}` : "", url.pathname, ); - return res.status(status).json({ error: { message: "HTTP Error", url: sanitizeErrorURL(url), resultData } }); + return res.status(status).json({ + error: { + message: "HTTP Error", + url: sanitizeErrorURL(url), + resultData: Buffer.isBuffer(resultData) ? Buffer.from(resultData).toString() : resultData, + }, + }); } return res.status(status).send(resultData);