mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-11-01 10:13:56 +08:00
67 lines
1.3 KiB
Plaintext
67 lines
1.3 KiB
Plaintext
'use strict';
|
|
|
|
import { readfile } from 'fs';
|
|
import { popen } from 'fs';
|
|
|
|
const STATUS_FILE = '/var/run/linkback.json';
|
|
|
|
const methods = {
|
|
get_status: {
|
|
call: function() {
|
|
let content = readfile(STATUS_FILE);
|
|
let status = null;
|
|
|
|
if (content) {
|
|
try {
|
|
status = json(content);
|
|
} catch (err) {
|
|
// Handle JSON parse error gracefully
|
|
}
|
|
}
|
|
|
|
if (!status) {
|
|
status = {
|
|
enabled: false,
|
|
mode: "multi_wan",
|
|
interface: "wan",
|
|
check_interval: 5,
|
|
active_link: "none",
|
|
links: []
|
|
};
|
|
}
|
|
|
|
return status;
|
|
}
|
|
},
|
|
|
|
get_log: {
|
|
call: function() {
|
|
// Extract last 100 lines of linkbackd logs from syslog
|
|
let p = popen('logread -e linkbackd | tail -n 100', 'r');
|
|
let log_content = '';
|
|
if (p) {
|
|
log_content = p.read('all');
|
|
p.close();
|
|
}
|
|
return { log: log_content || 'No logs available.' };
|
|
}
|
|
},
|
|
|
|
manage_service: {
|
|
args: { action: 'string' },
|
|
call: function(request) {
|
|
let action = request.args?.action;
|
|
if (action !== 'start' && action !== 'stop' && action !== 'restart') {
|
|
return { success: false, error: 'Invalid action' };
|
|
}
|
|
|
|
let cmd = `/etc/init.d/linkback ${action} >/dev/null 2>&1`;
|
|
let rc = system(cmd);
|
|
|
|
return { success: (rc === 0) };
|
|
}
|
|
}
|
|
};
|
|
|
|
return { 'luci.linkback': methods };
|