mirror of
https://github.com/gethomepage/homepage.git
synced 2026-05-18 11:27:33 +08:00
Add some debug logging for omada
This commit is contained in:
@@ -6,6 +6,24 @@ const proxyName = "omadaProxyHandler";
|
|||||||
|
|
||||||
const logger = createLogger(proxyName);
|
const logger = createLogger(proxyName);
|
||||||
|
|
||||||
|
function parseOmadaJson(data, { step, status, contentType, url }) {
|
||||||
|
const body = Buffer.isBuffer(data) ? data.toString() : String(data ?? "");
|
||||||
|
|
||||||
|
try {
|
||||||
|
return JSON.parse(body);
|
||||||
|
} catch (error) {
|
||||||
|
logger.debug(
|
||||||
|
"Failed parsing Omada %s response as JSON (HTTP %d, content-type: %s, url: %s). Body: %s",
|
||||||
|
step,
|
||||||
|
status,
|
||||||
|
contentType ?? "unknown",
|
||||||
|
url,
|
||||||
|
body,
|
||||||
|
);
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
async function login(loginUrl, username, password, controllerVersionMajor) {
|
async function login(loginUrl, username, password, controllerVersionMajor) {
|
||||||
const params = {
|
const params = {
|
||||||
username,
|
username,
|
||||||
@@ -28,7 +46,7 @@ async function login(loginUrl, username, password, controllerVersionMajor) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
return [status, JSON.parse(data.toString())];
|
return [status, contentType, data];
|
||||||
}
|
}
|
||||||
|
|
||||||
export default async function omadaProxyHandler(req, res) {
|
export default async function omadaProxyHandler(req, res) {
|
||||||
@@ -86,12 +104,18 @@ export default async function omadaProxyHandler(req, res) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
const [loginStatus, loginResponseData] = await login(
|
const [loginStatus, loginContentType, loginData] = await login(
|
||||||
loginUrl,
|
loginUrl,
|
||||||
widget.username,
|
widget.username,
|
||||||
widget.password,
|
widget.password,
|
||||||
controllerVersionMajor,
|
controllerVersionMajor,
|
||||||
);
|
);
|
||||||
|
const loginResponseData = parseOmadaJson(loginData, {
|
||||||
|
step: "login",
|
||||||
|
status: loginStatus,
|
||||||
|
contentType: loginContentType,
|
||||||
|
url: loginUrl,
|
||||||
|
});
|
||||||
|
|
||||||
if (loginStatus !== 200 || loginResponseData.errorCode > 0) {
|
if (loginStatus !== 200 || loginResponseData.errorCode > 0) {
|
||||||
return res
|
return res
|
||||||
@@ -136,7 +160,12 @@ export default async function omadaProxyHandler(req, res) {
|
|||||||
headers,
|
headers,
|
||||||
});
|
});
|
||||||
|
|
||||||
const sitesResponseData = JSON.parse(data);
|
const sitesResponseData = parseOmadaJson(data, {
|
||||||
|
step: "sites list",
|
||||||
|
status,
|
||||||
|
contentType,
|
||||||
|
url: sitesUrl,
|
||||||
|
});
|
||||||
|
|
||||||
if (status !== 200 || sitesResponseData.errorCode > 0) {
|
if (status !== 200 || sitesResponseData.errorCode > 0) {
|
||||||
logger.debug(`HTTP ${status} getting sites list: ${sitesResponseData.msg}`);
|
logger.debug(`HTTP ${status} getting sites list: ${sitesResponseData.msg}`);
|
||||||
@@ -183,7 +212,12 @@ export default async function omadaProxyHandler(req, res) {
|
|||||||
headers,
|
headers,
|
||||||
});
|
});
|
||||||
|
|
||||||
const switchResponseData = JSON.parse(data);
|
const switchResponseData = parseOmadaJson(data, {
|
||||||
|
step: "switch site",
|
||||||
|
status,
|
||||||
|
contentType,
|
||||||
|
url: switchUrl,
|
||||||
|
});
|
||||||
if (status !== 200 || switchResponseData.errorCode > 0) {
|
if (status !== 200 || switchResponseData.errorCode > 0) {
|
||||||
logger.error(`HTTP ${status} getting sites list: ${data}`);
|
logger.error(`HTTP ${status} getting sites list: ${data}`);
|
||||||
return res.status(status).json({ error: { message: "Error switching site", url: switchUrl, data } });
|
return res.status(status).json({ error: { message: "Error switching site", url: switchUrl, data } });
|
||||||
@@ -199,7 +233,12 @@ export default async function omadaProxyHandler(req, res) {
|
|||||||
headers,
|
headers,
|
||||||
});
|
});
|
||||||
|
|
||||||
siteResponseData = JSON.parse(data);
|
siteResponseData = parseOmadaJson(data, {
|
||||||
|
step: "global stats",
|
||||||
|
status,
|
||||||
|
contentType,
|
||||||
|
url: statsUrl,
|
||||||
|
});
|
||||||
|
|
||||||
if (status !== 200 || siteResponseData.errorCode > 0) {
|
if (status !== 200 || siteResponseData.errorCode > 0) {
|
||||||
return res.status(status).json({ error: { message: "Error getting stats", url: statsUrl, data } });
|
return res.status(status).json({ error: { message: "Error getting stats", url: statsUrl, data } });
|
||||||
@@ -221,7 +260,12 @@ export default async function omadaProxyHandler(req, res) {
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
siteResponseData = JSON.parse(data);
|
siteResponseData = parseOmadaJson(data, {
|
||||||
|
step: "overview stats",
|
||||||
|
status,
|
||||||
|
contentType,
|
||||||
|
url: siteStatsUrl,
|
||||||
|
});
|
||||||
|
|
||||||
if (status !== 200 || siteResponseData.errorCode > 0) {
|
if (status !== 200 || siteResponseData.errorCode > 0) {
|
||||||
logger.debug(`HTTP ${status} getting stats for site ${widget.site} with message ${siteResponseData.msg}`);
|
logger.debug(`HTTP ${status} getting stats for site ${widget.site} with message ${siteResponseData.msg}`);
|
||||||
@@ -244,7 +288,12 @@ export default async function omadaProxyHandler(req, res) {
|
|||||||
"Csrf-Token": token,
|
"Csrf-Token": token,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
const alertResponseData = JSON.parse(data);
|
const alertResponseData = parseOmadaJson(data, {
|
||||||
|
step: "alerts",
|
||||||
|
status,
|
||||||
|
contentType,
|
||||||
|
url: alertUrl,
|
||||||
|
});
|
||||||
|
|
||||||
activeUser = siteResponseData.result.totalClientNum;
|
activeUser = siteResponseData.result.totalClientNum;
|
||||||
connectedAp = siteResponseData.result.connectedApNum;
|
connectedAp = siteResponseData.result.connectedApNum;
|
||||||
|
|||||||
Reference in New Issue
Block a user