diff --git a/src/widgets/unifi/proxy.js b/src/widgets/unifi/proxy.js index 61682ef8a..601e42421 100644 --- a/src/widgets/unifi/proxy.js +++ b/src/widgets/unifi/proxy.js @@ -43,12 +43,9 @@ async function getWidget(req) { } async function login(widget) { - let loginUrl = `${widget.url}/api`; - if (widget.prefix === udmpPrefix) { - loginUrl += "/auth" - } - loginUrl += "/login"; - + const endpoint = (widget.prefix === udmpPrefix) ? "auth/login" : "login"; + const api = widgets?.[widget.type]?.api?.replace("{prefix}", ""); // no prefix for login url + const loginUrl = new URL(formatApiCall(api, { endpoint, ...widget })); const loginBody = { username: widget.username, password: widget.password, remember: true }; const headers = { "Content-Type": "application/json" }; const [status, contentType, data, responseHeaders] = await httpProxy(loginUrl, { @@ -85,6 +82,13 @@ export default async function unifiProxyHandler(req, res) { widget.prefix = prefix; + if (!widget.port) { + widget.port = 8443; + if (widget.prefix == udmpPrefix) { + widget.port = 443 + } + } + const { endpoint } = req.query; const url = new URL(formatApiCall(api, { endpoint, ...widget })); const params = { method: "GET", headers: {} }; diff --git a/src/widgets/unifi/widget.js b/src/widgets/unifi/widget.js index 928ebd766..0ac3c311e 100644 --- a/src/widgets/unifi/widget.js +++ b/src/widgets/unifi/widget.js @@ -1,7 +1,7 @@ import unifiProxyHandler from "./proxy"; const widget = { - api: "{url}{prefix}/api/{endpoint}", + api: "{url}:{port}{prefix}/api/{endpoint}", proxyHandler: unifiProxyHandler, mappings: {