From a27d2dbc32785c3389ea77a26714e7f6c67c9185 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Sat, 17 Dec 2022 15:00:24 +0100 Subject: [PATCH] luci-base, luci-mod-status: expose LuCI version via ubus Instead of scraping the LuCI version from Lua sources, fetch it via ubus in order to be independent from the Lua runtime. Fixes: #6154 Signed-off-by: Jo-Philipp Wich --- modules/luci-base/root/usr/share/rpcd/ucode/luci | 7 +++++++ .../resources/view/status/include/10_system.js | 13 +++++++------ .../usr/share/rpcd/acl.d/luci-mod-status-index.json | 2 +- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/modules/luci-base/root/usr/share/rpcd/ucode/luci b/modules/luci-base/root/usr/share/rpcd/ucode/luci index e237979352..a30e276b80 100644 --- a/modules/luci-base/root/usr/share/rpcd/ucode/luci +++ b/modules/luci-base/root/usr/share/rpcd/ucode/luci @@ -7,6 +7,7 @@ import { stdin, access, dirname, basename, open, popen, glob, lsdir, readfile, r import { cursor } from 'uci'; import { init_list, init_index, init_enabled, init_action, conntrack_list, process_list } from 'luci.sys'; +import { revision, branch } from 'luci.version'; import { statvfs } from 'luci.core'; import timezones from 'luci.zoneinfo'; @@ -17,6 +18,12 @@ function shellquote(s) { } const methods = { + getVersion: { + call: function(request) { + return { revision, branch }; + } + }, + getInitList: { args: { name: 'name' }, call: function(request) { diff --git a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js index ae7efa3e75..45f7b4acae 100644 --- a/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js +++ b/modules/luci-mod-status/htdocs/luci-static/resources/view/status/include/10_system.js @@ -3,6 +3,11 @@ 'require fs'; 'require rpc'; +var callLuciVersion = rpc.declare({ + object: 'luci', + method: 'getVersion' +}); + var callSystemBoard = rpc.declare({ object: 'system', method: 'board' @@ -20,7 +25,7 @@ return baseclass.extend({ return Promise.all([ L.resolveDefault(callSystemBoard(), {}), L.resolveDefault(callSystemInfo(), {}), - fs.lines('/usr/lib/lua/luci/version.lua') + L.resolveDefault(callLuciVersion(), { revision: _('unknown version'), branch: 'LuCI' }) ]); }, @@ -29,11 +34,7 @@ return baseclass.extend({ systeminfo = data[1], luciversion = data[2]; - luciversion = luciversion.filter(function(l) { - return l.match(/^\s*(luciname|luciversion)\s*=/); - }).map(function(l) { - return l.replace(/^\s*\w+\s*=\s*['"]([^'"]+)['"].*$/, '$1'); - }).join(' '); + luciversion = luciversion.branch + ' ' + luciversion.revision; var datestr = null; 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..7c2cd0998f 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 @@ -5,10 +5,10 @@ "file": { "/proc/sys/net/netfilter/nf_conntrack_count": [ "read" ], "/proc/sys/net/netfilter/nf_conntrack_max": [ "read" ], - "/usr/lib/lua/luci/version.lua": [ "read" ], "/www/luci-static/resources/view/status/include": [ "list" ] }, "ubus": { + "luci": [ "getVersion" ], "file": [ "list", "read" ], "system": [ "board", "info" ] } -- 2.30.2