diff --git a/src/utils/proxy/handlers/credentialed.js b/src/utils/proxy/handlers/credentialed.js index 005846cf5..bc0875932 100644 --- a/src/utils/proxy/handlers/credentialed.js +++ b/src/utils/proxy/handlers/credentialed.js @@ -29,11 +29,15 @@ export default async function credentialedProxyHandler(req, res, map) { } else if (widget.type === "gotify") { headers["X-gotify-Key"] = `${widget.key}`; } else if ( - ["authentik", "cloudflared", "ghostfolio", "mealie", "tailscale", "truenas", "pterodactyl"].includes( - widget.type, - ) + ["authentik", "cloudflared", "ghostfolio", "mealie", "tailscale", "pterodactyl"].includes(widget.type) ) { headers.Authorization = `Bearer ${widget.key}`; + } else if (widget.type === "truenas") { + if (widget.key) { + headers.Authorization = `Bearer ${widget.key}`; + } else { + headers.Authorization = `Basic ${Buffer.from(`${widget.username}:${widget.password}`).toString("base64")}`; + } } else if (widget.type === "proxmox") { headers.Authorization = `PVEAPIToken=${widget.username}=${widget.password}`; } else if (widget.type === "proxmoxbackupserver") { @@ -70,7 +74,6 @@ export default async function credentialedProxyHandler(req, res, map) { withCredentials: true, credentials: "include", headers, - body: req.body, }); let resultData = data; diff --git a/src/widgets/truenas/proxy.js b/src/widgets/truenas/proxy.js deleted file mode 100644 index 6982f9727..000000000 --- a/src/widgets/truenas/proxy.js +++ /dev/null @@ -1,29 +0,0 @@ -import getServiceWidget from "utils/config/service-helpers"; -import createLogger from "utils/logger"; -import genericProxyHandler from "utils/proxy/handlers/generic"; -import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; - -const logger = createLogger("truenasProxyHandler"); - -export default async function truenasProxyHandler(req, res, map) { - const { group, service } = req.query; - - if (group && service) { - const widgetOpts = await getServiceWidget(group, service); - let handler; - if (widgetOpts.username && widgetOpts.password) { - handler = genericProxyHandler; - } else if (widgetOpts.key) { - handler = credentialedProxyHandler; - } - - if (handler) { - return handler(req, res, map); - } - - logger.error("Error getting data from Truenas: Username / password or API key required"); - return res.status(500).json({ error: "Username / password or API key required" }); - } - - return res.status(500).json({ error: "Error parsing widget request" }); -} diff --git a/src/widgets/truenas/widget.js b/src/widgets/truenas/widget.js index 1331d98be..7435b6e19 100644 --- a/src/widgets/truenas/widget.js +++ b/src/widgets/truenas/widget.js @@ -1,10 +1,9 @@ -import truenasProxyHandler from "./proxy"; - +import credentialedProxyHandler from "utils/proxy/handlers/credentialed"; import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers"; const widget = { api: "{url}/api/v2.0/{endpoint}", - proxyHandler: truenasProxyHandler, + proxyHandler: credentialedProxyHandler, mappings: { alerts: {