summaryrefslogtreecommitdiffhomepage
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js56
-rw-r--r--modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json10
2 files changed, 56 insertions, 10 deletions
diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js
index f6a3cef036..60661f63e5 100644
--- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js
+++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/25_storage.js
@@ -7,6 +7,20 @@ var callSystemInfo = rpc.declare({
method: 'info'
});
+var callMountPoints = rpc.declare({
+ object: 'luci',
+ method: 'getMountPoints',
+ expect: { result: [] }
+});
+
+var MountSkipList = [
+ "/rom",
+ "/tmp",
+ "/dev",
+ "/overlay",
+ "/",
+]
+
function progressbar(value, max, byte) {
var vn = parseInt(value) || 0,
mn = parseInt(max) || 100,
@@ -24,27 +38,49 @@ return baseclass.extend({
title: _('Storage'),
load: function() {
- return L.resolveDefault(callSystemInfo(), {});
+ return Promise.all([
+ L.resolveDefault(callSystemInfo(), {}),
+ L.resolveDefault(callMountPoints(), {}),
+ ]);
},
- render: function(systeminfo) {
- var root = L.isObject(systeminfo.root) ? systeminfo.root : {},
+ render: function(data) {
+ var systeminfo = data[0],
+ mounts = data[1],
+ root = L.isObject(systeminfo.root) ? systeminfo.root : {},
tmp = L.isObject(systeminfo.tmp) ? systeminfo.tmp : {};
- var fields = [];
- fields.push(_('Disk space'), root.used*1024, root.total*1024);
- fields.push(_('Temp space'), tmp.used*1024, tmp.total*1024);
+ const existenceChk = function(fields, name, values) {
+ if (!fields.hasOwnProperty(name))
+ fields[name] = values;
+ };
+
+ var fields = {};
+ existenceChk(fields, _('Disk space'), { used: root.used * 1024, size: root.total * 1024 });
+ existenceChk(fields, _('Temp space'), { used: tmp.used * 1024, size: tmp.total * 1024 });
+
+ for (var i = 0; i < mounts.length; i++) {
+ var entry = mounts[i];
+
+ if (MountSkipList.includes(entry.mount))
+ continue;
+
+ var name = entry.device + ' (' + entry.mount +')',
+ used = entry.size - entry.free;
+
+ existenceChk(fields, name, { used: used, size: entry.size });
+ }
var table = E('table', { 'class': 'table' });
- for (var i = 0; i < fields.length; i += 3) {
+ Object.keys(fields).forEach(function(key) {
table.appendChild(E('tr', { 'class': 'tr' }, [
- E('td', { 'class': 'td left', 'width': '33%' }, [ fields[i] ]),
+ E('td', { 'class': 'td left', 'width': '33%' }, [ key ]),
E('td', { 'class': 'td left' }, [
- (fields[i + 1] != null) ? progressbar(fields[i + 1], fields[i + 2], true) : '?'
+ (fields[key].used != null) ? progressbar(fields[key].used, fields[key].size, true) : '?'
])
]));
- }
+ });
return table;
}
diff --git a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json
index 20cd23bb6c..99b4d02b1d 100644
--- a/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json
+++ b/modules/luci-mod-status/root/usr/share/rpcd/acl.d/luci-mod-status-index.json
@@ -19,6 +19,16 @@
}
},
+ "luci-mod-status-index-storage": {
+ "description": "Grant access to Storage and Mount status display",
+ "read": {
+ "ubus": {
+ "luci": [ "getMountPoints" ],
+ "system": [ "info" ]
+ }
+ }
+ },
+
"luci-mod-status-index-dhcp": {
"description": "Grant access to DHCP status display",
"read": {