浏览代码

Infer unifi port, use api widget property for login

Michael Shamoon 2 年之前
父节点
当前提交
d1b6dad14d
共有 2 个文件被更改,包括 11 次插入7 次删除
  1. 10 6
      src/widgets/unifi/proxy.js
  2. 1 1
      src/widgets/unifi/widget.js

+ 10 - 6
src/widgets/unifi/proxy.js

@@ -43,12 +43,9 @@ async function getWidget(req) {
 }
 }
 
 
 async function login(widget) {
 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 loginBody = { username: widget.username, password: widget.password, remember: true };
   const headers = { "Content-Type": "application/json" };
   const headers = { "Content-Type": "application/json" };
   const [status, contentType, data, responseHeaders] = await httpProxy(loginUrl, {
   const [status, contentType, data, responseHeaders] = await httpProxy(loginUrl, {
@@ -85,6 +82,13 @@ export default async function unifiProxyHandler(req, res) {
 
 
   widget.prefix = prefix;
   widget.prefix = prefix;
 
 
+  if (!widget.port) {
+    widget.port = 8443;
+    if (widget.prefix == udmpPrefix) {
+      widget.port = 443
+    }
+  }
+
   const { endpoint } = req.query;
   const { endpoint } = req.query;
   const url = new URL(formatApiCall(api, { endpoint, ...widget }));
   const url = new URL(formatApiCall(api, { endpoint, ...widget }));
   const params = { method: "GET", headers: {} };
   const params = { method: "GET", headers: {} };

+ 1 - 1
src/widgets/unifi/widget.js

@@ -1,7 +1,7 @@
 import unifiProxyHandler from "./proxy";
 import unifiProxyHandler from "./proxy";
 
 
 const widget = {
 const widget = {
-  api: "{url}{prefix}/api/{endpoint}",
+  api: "{url}:{port}{prefix}/api/{endpoint}",
   proxyHandler: unifiProxyHandler,
   proxyHandler: unifiProxyHandler,
 
 
   mappings: {
   mappings: {