mirror of
https://github.com/gethomepage/homepage.git
synced 2026-01-16 14:32:08 +08:00
Minor refactoring
This commit is contained in:
@@ -107,10 +107,14 @@ async function authenticate(ws, widget) {
|
|||||||
|
|
||||||
export default async function truenasProxyHandler(req, res, map) {
|
export default async function truenasProxyHandler(req, res, map) {
|
||||||
const { group, service, endpoint, index } = req.query;
|
const { group, service, endpoint, index } = req.query;
|
||||||
|
if (!group || !service) {
|
||||||
|
logger.debug("Invalid or missing service '%s' or group '%s'", service, group);
|
||||||
|
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
|
||||||
const widget = await getServiceWidget(group, service, index);
|
const widget = await getServiceWidget(group, service, index);
|
||||||
if (!widget || !widgets[widget.type]) {
|
|
||||||
|
if (!widget) {
|
||||||
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
|
logger.debug("Invalid or missing widget for service '%s' in group '%s'", service, group);
|
||||||
return res.status(400).json({ error: "Invalid proxy service type" });
|
return res.status(400).json({ error: "Invalid proxy service type" });
|
||||||
}
|
}
|
||||||
@@ -120,16 +124,13 @@ export default async function truenasProxyHandler(req, res, map) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const version = Number(widget.version ?? 1);
|
const version = Number(widget.version ?? 1);
|
||||||
|
|
||||||
if (Number.isNaN(version) || version < 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 mappingEntry = Object.values(widgets[widget.type].mappings ?? {}).find(
|
const mappingEntry = Object.values(widgets[widget.type].mappings).find((mapping) => mapping.endpoint === endpoint);
|
||||||
(mapping) => mapping.endpoint === endpoint,
|
const wsMethod = mappingEntry.wsMethod;
|
||||||
);
|
|
||||||
const wsMethod = mappingEntry?.wsMethod;
|
|
||||||
|
|
||||||
if (!wsMethod) {
|
if (!wsMethod) {
|
||||||
logger.debug("Missing wsMethod mapping for TrueNAS endpoint %s", endpoint);
|
logger.debug("Missing wsMethod mapping for TrueNAS endpoint %s", endpoint);
|
||||||
@@ -143,8 +144,7 @@ export default async function truenasProxyHandler(req, res, map) {
|
|||||||
wsUrl.protocol = useSecure ? "wss:" : "ws:";
|
wsUrl.protocol = useSecure ? "wss:" : "ws:";
|
||||||
logger.info("Connecting to TrueNAS websocket at %s", wsUrl);
|
logger.info("Connecting to TrueNAS websocket at %s", wsUrl);
|
||||||
const ws = new WebSocket(wsUrl, { rejectUnauthorized: false });
|
const ws = new WebSocket(wsUrl, { rejectUnauthorized: false });
|
||||||
|
await waitForEvent(ws, () => true, { event: "open", parseJson: false }); // wait for open
|
||||||
await waitForEvent(ws, () => true, { event: "open", parseJson: false });
|
|
||||||
logger.info("Connected to TrueNAS websocket at %s", wsUrl);
|
logger.info("Connected to TrueNAS websocket at %s", wsUrl);
|
||||||
try {
|
try {
|
||||||
await authenticate(ws, widget);
|
await authenticate(ws, widget);
|
||||||
@@ -167,8 +167,4 @@ export default async function truenasProxyHandler(req, res, map) {
|
|||||||
logger.warn("Websocket call for TrueNAS failed: %s", err?.message ?? err);
|
logger.warn("Websocket call for TrueNAS failed: %s", err?.message ?? err);
|
||||||
return res.status(500).json({ error: err?.message ?? "TrueNAS websocket call failed" });
|
return res.status(500).json({ error: err?.message ?? "TrueNAS websocket call failed" });
|
||||||
}
|
}
|
||||||
} catch (err) {
|
|
||||||
logger.error(err);
|
|
||||||
return res.status(500).json({ error: err?.message ?? "Unexpected TrueNAS error" });
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user