update 2026-05-10 09:48:30

This commit is contained in:
action committed 2026-05-10 09:48:30 +08:00
1 parent 95ac96413e
commit 0b362674f1
6244 files changed
+2992248

No files matched your search

@@ -0,0 +1,17 @@
{
"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" ]
},
"ubus": {
"system": [ "info" ],
"luci.log-viewer": [ "getSyslogSize", "getSyslogHash", "getDmesgSize", "getDmesgHash", "getLogfileSize" ]
}
}
}
}
@@ -0,0 +1,67 @@
'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 };