mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-11-02 12:43:56 +08:00
update 2026-08-30 11:09:43
This commit is contained in:
1 parent
b09780b109
commit
a8ecc43b8a
29 files changed
+1484
-49
No files matched your search
@@ -16,10 +16,15 @@
|
||||
"service": [ "list" ],
|
||||
"luci.mosdns": [
|
||||
"clean_log",
|
||||
"clear_query_logs",
|
||||
"flush_cache",
|
||||
"get_history",
|
||||
"get_logs",
|
||||
"get_stats",
|
||||
"get_top",
|
||||
"get_update_log",
|
||||
"get_version",
|
||||
"print_log",
|
||||
"get_update_log",
|
||||
"start_update"
|
||||
]
|
||||
},
|
||||
@@ -35,7 +40,8 @@
|
||||
"/var/mosdns/*": [ "write" ]
|
||||
},
|
||||
"ubus": {
|
||||
"file": [ "write" ]
|
||||
"file": [ "write" ],
|
||||
"luci.mosdns": [ "clear_query_logs" ]
|
||||
},
|
||||
"uci": [ "mosdns" ]
|
||||
}
|
||||
|
||||
@@ -58,16 +58,85 @@ function get_logfile_path_internal() {
|
||||
}
|
||||
}
|
||||
|
||||
function parse_json_safe(str) {
|
||||
if (!str || str == "")
|
||||
return null;
|
||||
|
||||
try {
|
||||
return json(str);
|
||||
} catch(e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function call_mosdns_api(endpoint, method) {
|
||||
try {
|
||||
let uci_cursor = cursor();
|
||||
uci_cursor.load('mosdns');
|
||||
let port = uci_cursor.get('mosdns', 'config', 'listen_port_api') || '9091';
|
||||
let http_method = method ? method : 'GET';
|
||||
let post_flag = (http_method === 'POST') ? '--post-data=""' : '';
|
||||
let cmd = `wget -q -O - ${post_flag} "http://127.0.0.1:${port}/plugins/stats_collector${endpoint}"`;
|
||||
let res = exec_sys(cmd);
|
||||
if (res.code === 0 && res.stdout != "") {
|
||||
let json_val = parse_json_safe(res.stdout);
|
||||
if (json_val) return json_val;
|
||||
}
|
||||
return { error: "MosDNS API unreachable" };
|
||||
} catch (e) {
|
||||
return { error: String(e) };
|
||||
}
|
||||
}
|
||||
|
||||
const methods = {
|
||||
get_stats: {
|
||||
call: function() {
|
||||
return call_mosdns_api('/api/v1/stats', 'GET');
|
||||
}
|
||||
},
|
||||
|
||||
get_history: {
|
||||
args: { points: 24 },
|
||||
call: function(request) {
|
||||
let points = request?.args?.points || 24;
|
||||
return call_mosdns_api(`/api/v1/history?points=${points}`, 'GET');
|
||||
}
|
||||
},
|
||||
|
||||
get_top: {
|
||||
args: { limit: 10 },
|
||||
call: function(request) {
|
||||
let limit = request?.args?.limit || 10;
|
||||
return call_mosdns_api(`/api/v1/top?limit=${limit}`, 'GET');
|
||||
}
|
||||
},
|
||||
|
||||
get_logs: {
|
||||
args: { limit: 50, offset: 0, search: '', filter: 'all' },
|
||||
call: function(request) {
|
||||
let limit = request?.args?.limit || 50;
|
||||
let offset = request?.args?.offset || 0;
|
||||
let search = request?.args?.search || '';
|
||||
let filter = request?.args?.filter || 'all';
|
||||
return call_mosdns_api(`/api/v1/logs?limit=${limit}&offset=${offset}&search=${search}&filter=${filter}`, 'GET');
|
||||
}
|
||||
},
|
||||
|
||||
clear_query_logs: {
|
||||
call: function() {
|
||||
return call_mosdns_api('/api/v1/logs/clear', 'POST');
|
||||
}
|
||||
},
|
||||
|
||||
flush_cache: {
|
||||
call: function() {
|
||||
try {
|
||||
let uci_cursor = cursor();
|
||||
uci_cursor.load('mosdns');
|
||||
let port = uci_cursor.get('mosdns', 'config', 'listen_port_api');
|
||||
let port = uci_cursor.get('mosdns', 'config', 'listen_port_api') || '9091';
|
||||
if (!port) return { error: "API listen port not configured." };
|
||||
|
||||
let res = exec_sys(`curl -s 127.0.0.1:${port}/plugins/lazy_cache/flush`);
|
||||
let res = exec_sys(`wget -q -O - "http://127.0.0.1:${port}/plugins/lazy_cache/flush"`);
|
||||
if (res.code === 0) {
|
||||
return { success: true };
|
||||
} else {
|
||||
|
||||
Reference in new issue
Block a user