update 2026-09-26 11:07:27

This commit is contained in:
action committed 2026-09-26 11:07:27 +08:00
1 parent 7b88b273d0
commit 97ae9f68da
4898 files changed
-1712274

No files matched your search

@@ -1,31 +0,0 @@
{
"admin/status/log-viewer": {
"title": "Log Viewer",
"order": 5,
"action": {
"type": "alias",
"path": "admin/status/log-viewer/syslog"
},
"depends": {
"acl": [ "luci-app-log-viewer" ]
}
},
"admin/status/log-viewer/syslog": {
"title": "System Log",
"order": 1,
"action": {
"type": "view",
"path": "log-viewer/syslog"
}
},
"admin/status/log-viewer/dmesg": {
"title": "Kernel Log",
"order": 2,
"action": {
"type": "view",
"path": "log-viewer/dmesg"
}
}
}
@@ -1,18 +0,0 @@
{
"luci-app-log-viewer": {
"description": "Grant access to log-viewer procedures",
"read": {
"cgi-io": [ "exec" ],
"file": {
"/sbin/logread*": [ "exec" ],
"/usr/sbin/logread*": [ "exec" ],
"/bin/dmesg -r": [ "exec" ],
"/usr/libexec/logread-ubox*": [ "exec" ]
},
"ubus": {
"system": [ "info" ],
"luci.log-viewer": [ "getSyslogSize", "getSyslogHash", "getDmesgSize", "getDmesgHash", "getLogfileSize" ]
}
}
}
}
@@ -1,67 +0,0 @@
'use strict';
import { popen, stat } from 'fs';
const dmesgCmd = '/bin/dmesg';
const logreadCmd = (
(stat('/sbin/logread')?.perm?.user_exec) ? '/sbin/logread' :
((stat('/usr/sbin/logread')?.perm?.user_exec) ? '/usr/sbin/logread' : null));
if(!logreadCmd) {
die('Error! Logread not found!');
}
function getCmdOutput(cmd, number) {
let ret = '';
const fd = popen(cmd, 'r');
if(fd) {
let c = fd.read('all');
fd.close();
if(c) {
c = trim(c);
ret = number ? int(c) : c;
}
}
return ret;
}
const methods = {
getSyslogSize: {
call: function() {
return { 'bytes': getCmdOutput(logreadCmd + ' | wc -c', true) };
},
},
getSyslogHash: {
call: function() {
return { 'hash': getCmdOutput(logreadCmd + ' -t -l 1') };
},
},
getDmesgSize: {
call: function() {
return { 'bytes': getCmdOutput(dmesgCmd + ' | wc -c', true) };
},
},
getDmesgHash: {
call: function() {
return { 'hash': getCmdOutput(dmesgCmd + ' | tail -n 1') };
},
},
getLogfileSize: {
args: { fpath: 'fpath' },
call: function(request) {
let ret = '';
const path = request.args?.fpath;
if(path) {
ret = stat(path)?.size;
}
return { 'bytes': ret ?? '' };
},
},
};
return { 'luci.log-viewer': methods };