A little more error handling

This commit is contained in:
shamoon
2026-01-04 10:33:58 -08:00
parent 93f5bf4548
commit 64a3e8b6b6

View File

@@ -109,20 +109,24 @@ export default async function truenasProxyHandler(req, res, map) {
const { group, service, endpoint, index } = req.query; const { group, service, endpoint, index } = req.query;
try { try {
const widget = await getServiceWidget(group, service, index);
if (!widget || !widgets[widget.type]) {
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
return res.status(400).json({ error: "Invalid proxy service type" });
}
if (!endpoint) { if (!endpoint) {
return res.status(204).end(); return res.status(204).end();
} }
const widget = await getServiceWidget(group, service, index); const version = Number(widget.version ?? 1);
const widgetVersion = Number(widget?.version ?? 1);
if (Number.isNaN(widgetVersion) || widgetVersion < 2) { if (Number.isNaN(version) || version < 2) {
// Use legacy REST proxy for version 1 // Use legacy REST proxy for version 1
return credentialedProxyHandler(req, res, map); return credentialedProxyHandler(req, res, map);
} }
const widgetDefinition = widgets?.[widget.type]; const mappingEntry = Object.values(widgets[widget.type].mappings ?? {}).find(
const mappingEntry = Object.values(widgetDefinition?.mappings ?? {}).find(
(mapping) => mapping.endpoint === endpoint, (mapping) => mapping.endpoint === endpoint,
); );
const wsMethod = mappingEntry?.wsMethod; const wsMethod = mappingEntry?.wsMethod;