summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Marangi <ansuelsmth@gmail.com>2023-06-15 18:52:55 +0200
committerPaul Donald <newtwen@gmail.com>2023-12-07 00:15:57 +0100
commit3cb6cf6740683123a4c156afe74af92f3066e37c (patch)
tree67adb8890f2ee830178fdacd03dd31b33511e2de
parent9cd7b55210c767f858da0267807813e9ef19cd3a (diff)
luci-mod-status: add ACL entry for storage index
Add missing ACL entry for storage index page. Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> luci-mod-status: expand storage index page with mount points Expand storage index page with mount points. For custom mounts point we use the device name and we reference the mount point between (). Signed-off-by: Christian Marangi <ansuelsmth@gmail.com> luci-mod-status: ensure each storage getMountPoints result is unique Signed-off-by: Paul Donald <newtwen@gmail.com> Closes #2767 (cherry picked from commit f1db42e67041d7c290fb2221ba5e787aa5e6b8bb)
-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 a9ae0cef49..8bb5c89b38 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
@@ -18,6 +18,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": {