fix: fix network member api resp handling

filter controller peer
handle undefined
write exp msg to error msg
This commit is contained in:
Syrone Wong 2023-05-31 11:15:00 +08:00 committed by dec0dOS
parent db8f4979e6
commit 856682bad1
2 changed files with 21 additions and 11 deletions

View file

@ -12,12 +12,12 @@ router.get("/", auth.isAuthorized, async function (req, res) {
api api
.get("controller/network/" + nwid + "/member") .get("controller/network/" + nwid + "/member")
.then(async function (controllerRes) { .then(async function (controllerRes) {
const mids = Object.keys(controllerRes.data); const mids = controllerRes.data.map((i) => Object.keys(i)[0]);
const data = await member.getMembersData(nwid, mids); const data = await member.getMembersData(nwid, mids);
res.send(data); res.send(data);
}) })
.catch(function () { .catch(function (err) {
res.status(404).send({ error: "Network not found" }); res.status(404).send({ error: `Network not found ${err}` });
}); });
}); });

View file

@ -31,20 +31,29 @@ async function getMemberAdditionalData(data) {
.get("members") .get("members")
.find({ id: data.id }); .find({ id: data.id });
const additionalData = member.get("additionalConfig").value(); const additionalData = member.get("additionalConfig").value() || {};
const lastOnline = member.get("lastOnline").value() || 0; const lastOnline = member.get("lastOnline").value() || 0;
const peer = await getPeer(data.id); const peer = await getPeer(data.id);
let peerData = {}; let peerData = {};
if (peer) { if (peer && !_.isEmpty(peer)) {
peerData.latency = peer.latency; peerData.latency = peer.latency;
if (peer.latency !== -1) peerData.online = 1; if (peer.latency !== -1) peerData.online = 1;
if (peer.latency == -1) peerData.online = 2; if (peer.latency == -1) peerData.online = 2;
peerData.clientVersion = peer.version; peerData.clientVersion = peer.version;
if (peer.paths[0]) { if (peer.paths.length > 0) {
peerData.lastOnline = peer.paths[0].lastReceive; let path = peer.paths.filter((p) => {
peerData.physicalAddress = peer.paths[0].address.split("/")[0]; let ret = p.active && !p.expired;
peerData.physicalPort = peer.paths[0].address.split("/")[1]; if (typeof p.preferred !== "undefined") {
ret = ret && p.preferred;
}
return ret;
});
if (path.length > 0) {
peerData.lastOnline = path[0].lastReceive;
peerData.physicalAddress = path[0].address.split("/")[0];
peerData.physicalPort = path[0].address.split("/")[1];
}
} }
} else { } else {
peerData.online = 0; peerData.online = 0;
@ -76,7 +85,8 @@ async function filterDeleted(nwid, mid) {
.get("members") .get("members")
.find({ id: mid }); .find({ id: mid });
if (!member.get("deleted").value()) return mid; let deleted = member.get("deleted").value() || false;
if (!deleted) return mid;
else return; else return;
} }
@ -95,7 +105,7 @@ async function getMembersData(nwid, mids) {
return res; return res;
}) })
) )
.catch(function () { .catch(function (err) {
return []; return [];
}); });