mirror of
https://github.com/key-networks/ztncui.git
synced 2025-06-05 01:33:44 +02:00
Get peer status of network members
This commit is contained in:
parent
6809ca5f6a
commit
8ee6db881d
2 changed files with 42 additions and 14 deletions
|
@ -13,30 +13,38 @@ const util = require('util');
|
||||||
storage.initSync({dir: 'etc/storage'});
|
storage.initSync({dir: 'etc/storage'});
|
||||||
|
|
||||||
async function get_network_with_members(nwid) {
|
async function get_network_with_members(nwid) {
|
||||||
const [network, member_ids] = await Promise.all([
|
const [network, peers, members] = await Promise.all([
|
||||||
zt.network_detail(nwid),
|
zt.network_detail(nwid),
|
||||||
|
zt.peers(),
|
||||||
zt.members(nwid)
|
zt.members(nwid)
|
||||||
|
.then(member_ids =>
|
||||||
|
Promise.all(
|
||||||
|
Object.keys(member_ids)
|
||||||
|
.map(id => Promise.all([
|
||||||
|
zt.member_detail(nwid, id),
|
||||||
|
storage.getItem(id)
|
||||||
|
]))
|
||||||
|
)
|
||||||
|
).then(results => results.map(([member, name]) => {
|
||||||
|
member.name = name || '';
|
||||||
|
return member;
|
||||||
|
}))
|
||||||
]);
|
]);
|
||||||
const members = await Promise.all(
|
for (const member of members) {
|
||||||
Object.keys(member_ids)
|
member.peer = peers.find(x => x.address === member.address);
|
||||||
.map(id => Promise.all([
|
}
|
||||||
zt.member_detail(nwid, id),
|
|
||||||
storage.getItem(id)
|
|
||||||
]))
|
|
||||||
).then(results => results.map(([member, name]) => {
|
|
||||||
member.name = name || '';
|
|
||||||
return member;
|
|
||||||
}));
|
|
||||||
return {network, members};
|
return {network, members};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function get_network_member(nwid, memberid) {
|
async function get_network_member(nwid, memberid) {
|
||||||
const [network, member, name] = await Promise.all([
|
const [network, member, peer, name] = await Promise.all([
|
||||||
zt.network_detail(nwid),
|
zt.network_detail(nwid),
|
||||||
zt.member_detail(nwid, memberid),
|
zt.member_detail(nwid, memberid),
|
||||||
|
zt.peer(memberid),
|
||||||
storage.getItem(memberid)
|
storage.getItem(memberid)
|
||||||
]);
|
]);
|
||||||
member.name = name || '';
|
member.name = name || '';
|
||||||
|
member.peer = peer;
|
||||||
return {network, member};
|
return {network, member};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -485,7 +493,8 @@ exports.member_detail = async function(req, res) {
|
||||||
navigate.whence = '/controller/network/' + network.nwid + '#members';
|
navigate.whence = '/controller/network/' + network.nwid + '#members';
|
||||||
res.render('member_detail', {title: 'Network member detail', navigate: navigate, network: network, member: member});
|
res.render('member_detail', {title: 'Network member detail', navigate: navigate, network: network, member: member});
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
res.render(req.params.object, {title: req.params.object, navigate: navigate, error: 'Error resolving detail for member ' + req.params.id + ' of network ' + req.params.nwid + ': ' + err});
|
console.error(err);
|
||||||
|
res.render('error', {title: req.params.object, navigate: navigate, error: 'Error resolving detail for member ' + req.params.id + ' of network ' + req.params.nwid + ': ' + err});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ const got = require('got');
|
||||||
const ipaddr = require('ip-address');
|
const ipaddr = require('ip-address');
|
||||||
const token = require('./token');
|
const token = require('./token');
|
||||||
|
|
||||||
ZT_ADDR = process.env.ZT_ADDR || 'localhost:9993';
|
const ZT_ADDR = process.env.ZT_ADDR || 'localhost:9993';
|
||||||
|
|
||||||
const init_options = async function() {
|
const init_options = async function() {
|
||||||
let tok = null;
|
let tok = null;
|
||||||
|
@ -308,3 +308,22 @@ exports.network_easy_setup = async function(nwid,
|
||||||
throw(err);
|
throw(err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
exports.peers = async function() {
|
||||||
|
const options = await init_options();
|
||||||
|
const response = await got(ZT_ADDR + '/peer', options);
|
||||||
|
return response.body;
|
||||||
|
}
|
||||||
|
|
||||||
|
exports.peer = async function(id) {
|
||||||
|
const options = await init_options();
|
||||||
|
try {
|
||||||
|
const response = await got(ZT_ADDR + '/peer/' + id, options);
|
||||||
|
return response.body;
|
||||||
|
} catch (error) {
|
||||||
|
if (error instanceof got.HTTPError && error.statusCode == 404) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
throw error;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue