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
.get("controller/network/" + nwid + "/member")
.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);
res.send(data);
})
.catch(function () {
res.status(404).send({ error: "Network not found" });
.catch(function (err) {
res.status(404).send({ error: `Network not found ${err}` });
});
});

View file

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