mirror of
https://github.com/openwrt/luci.git
synced 2025-12-21 21:24:35 +04:00
luci-mod-status: add vendor info in index file
In the overview page are all active dhcp leases displayed. For easier recognition, the listed MAC addresses fo these leases are resolved to their vendor names. Signed-off-by: Christian Korber <ck@dev.tdt.de>
This commit is contained in:
committed by
Paul Donald
parent
b8fcdb0dee
commit
7b07b93ff9
@@ -11,6 +11,17 @@ var callLuciDHCPLeases = rpc.declare({
|
|||||||
expect: { '': {} }
|
expect: { '': {} }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var callUfpList = rpc.declare({
|
||||||
|
object: 'fingerprint',
|
||||||
|
method: 'fingerprint',
|
||||||
|
});
|
||||||
|
|
||||||
|
var checkUfpInstalled = rpc.declare({
|
||||||
|
object: 'file',
|
||||||
|
method: 'stat',
|
||||||
|
params: [ 'path' ]
|
||||||
|
});
|
||||||
|
|
||||||
return baseclass.extend({
|
return baseclass.extend({
|
||||||
title: '',
|
title: '',
|
||||||
|
|
||||||
@@ -19,10 +30,17 @@ return baseclass.extend({
|
|||||||
|
|
||||||
load: function() {
|
load: function() {
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
|
checkUfpInstalled('/usr/sbin/ufpd')
|
||||||
|
]).then(data => {
|
||||||
|
var promises = [
|
||||||
callLuciDHCPLeases(),
|
callLuciDHCPLeases(),
|
||||||
network.getHostHints(),
|
network.getHostHints(),
|
||||||
|
data[0].type === 'file' ? callUfpList() : null,
|
||||||
L.resolveDefault(uci.load('dhcp'))
|
L.resolveDefault(uci.load('dhcp'))
|
||||||
]);
|
];
|
||||||
|
|
||||||
|
return Promise.all(promises);
|
||||||
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
handleCreateStaticLease: function(lease, ev) {
|
handleCreateStaticLease: function(lease, ev) {
|
||||||
@@ -64,6 +82,7 @@ return baseclass.extend({
|
|||||||
leases6 = Array.isArray(data[0].dhcp6_leases) ? data[0].dhcp6_leases : [],
|
leases6 = Array.isArray(data[0].dhcp6_leases) ? data[0].dhcp6_leases : [],
|
||||||
machints = data[1].getMACHints(false),
|
machints = data[1].getMACHints(false),
|
||||||
hosts = uci.sections('dhcp', 'host'),
|
hosts = uci.sections('dhcp', 'host'),
|
||||||
|
macaddr = data[2],
|
||||||
isReadonlyView = !L.hasViewPermission();
|
isReadonlyView = !L.hasViewPermission();
|
||||||
|
|
||||||
for (var i = 0; i < hosts.length; i++) {
|
for (var i = 0; i < hosts.length; i++) {
|
||||||
@@ -94,6 +113,7 @@ return baseclass.extend({
|
|||||||
|
|
||||||
cbi_update_table(table, leases.map(L.bind(function(lease) {
|
cbi_update_table(table, leases.map(L.bind(function(lease) {
|
||||||
var exp, rows;
|
var exp, rows;
|
||||||
|
var vendor;
|
||||||
|
|
||||||
if (lease.expires === false)
|
if (lease.expires === false)
|
||||||
exp = E('em', _('unlimited'));
|
exp = E('em', _('unlimited'));
|
||||||
@@ -110,10 +130,15 @@ return baseclass.extend({
|
|||||||
else if (lease.hostname)
|
else if (lease.hostname)
|
||||||
host = lease.hostname;
|
host = lease.hostname;
|
||||||
|
|
||||||
|
if (macaddr) {
|
||||||
|
var lowermac = lease.macaddr.toLowerCase();
|
||||||
|
vendor = macaddr[lowermac].vendor ? macaddr[lowermac].vendor : null;
|
||||||
|
}
|
||||||
|
|
||||||
rows = [
|
rows = [
|
||||||
host || '-',
|
host || '-',
|
||||||
lease.ipaddr,
|
lease.ipaddr,
|
||||||
lease.macaddr,
|
vendor ? lease.macaddr + ` (${vendor})` : lease.macaddr,
|
||||||
exp
|
exp
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -33,7 +33,9 @@
|
|||||||
"description": "Grant access to DHCP status display",
|
"description": "Grant access to DHCP status display",
|
||||||
"read": {
|
"read": {
|
||||||
"ubus": {
|
"ubus": {
|
||||||
"luci-rpc": [ "getDHCPLeases" ]
|
"luci-rpc": [ "getDHCPLeases" ],
|
||||||
|
"fingerprint": [ "fingerprint" ],
|
||||||
|
"file": [ "stat" ]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user