mirror of
https://github.com/caiwx86/small-packages.git
synced 2026-07-30 10:51:32 +08:00
153 lines
3.8 KiB
JavaScript
153 lines
3.8 KiB
JavaScript
'use strict';
|
|
'require baseclass';
|
|
'require uci';
|
|
'require fs';
|
|
'require rpc';
|
|
'require request';
|
|
|
|
const callRCList = rpc.declare({
|
|
object: 'rc',
|
|
method: 'list',
|
|
params: ['name'],
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callRCInit = rpc.declare({
|
|
object: 'rc',
|
|
method: 'init',
|
|
params: ['name', 'action'],
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoGetPaths = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'get_paths',
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoVersion = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'version',
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoProfile = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'profile',
|
|
params: ['defaults'],
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoUpdateSubscription = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'update_subscription',
|
|
params: ['section_id'],
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoAPI = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'api',
|
|
params: ['method', 'path', 'query', 'body'],
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoGetIdentifiers = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'get_identifiers',
|
|
expect: { '': {} }
|
|
});
|
|
|
|
const callMomoDebug = rpc.declare({
|
|
object: 'luci.momo',
|
|
method: 'debug',
|
|
expect: { '': {} }
|
|
});
|
|
|
|
return baseclass.extend({
|
|
getPaths: async function () {
|
|
return callMomoGetPaths();
|
|
},
|
|
|
|
status: async function () {
|
|
return (await callRCList('momo'))?.momo?.running;
|
|
},
|
|
|
|
reload: function () {
|
|
return callRCInit('momo', 'reload');
|
|
},
|
|
|
|
restart: function () {
|
|
return callRCInit('momo', 'restart');
|
|
},
|
|
|
|
version: function () {
|
|
return callMomoVersion();
|
|
},
|
|
|
|
profile: function (defaults) {
|
|
return callMomoProfile(defaults);
|
|
},
|
|
|
|
updateSubscription: function (section_id) {
|
|
return callMomoUpdateSubscription(section_id);
|
|
},
|
|
|
|
updateDashboard: function () {
|
|
return callMomoAPI('POST', '/upgrade/ui');
|
|
},
|
|
|
|
openDashboard: async function () {
|
|
const profile = await callMomoProfile({ 'experimental': { 'clash_api': { 'external_controller': null, 'secret': null } } });
|
|
const apiListen = profile?.['experimental']?.['clash_api']?.['external_controller'];
|
|
const apiSecret = profile?.['experimental']?.['clash_api']?.['secret'] ?? '';
|
|
if (!apiListen) {
|
|
return Promise.reject('Clash API has not been configured');
|
|
}
|
|
const apiPort = apiListen.substring(apiListen.lastIndexOf(':') + 1);
|
|
const params = {
|
|
host: window.location.hostname,
|
|
hostname: window.location.hostname,
|
|
port: apiPort,
|
|
secret: apiSecret
|
|
};
|
|
const query = new URLSearchParams(params).toString();
|
|
const url = `http://${window.location.hostname}:${apiPort}/ui/?${query}`;
|
|
setTimeout(function () { window.open(url, '_blank') }, 0);
|
|
return Promise.resolve();
|
|
},
|
|
|
|
getIdentifiers: function () {
|
|
return callMomoGetIdentifiers();
|
|
},
|
|
|
|
listProfiles: async function () {
|
|
const paths = await this.getPaths();
|
|
return L.resolveDefault(fs.list(paths.profiles_dir), []);
|
|
},
|
|
|
|
getAppLog: async function () {
|
|
const paths = await this.getPaths();
|
|
return L.resolveDefault(fs.read_direct(paths.app_log_path));
|
|
},
|
|
|
|
getCoreLog: async function () {
|
|
const paths = await this.getPaths();
|
|
return L.resolveDefault(fs.read_direct(paths.core_log_path));
|
|
},
|
|
|
|
clearAppLog: async function () {
|
|
const paths = await this.getPaths();
|
|
return fs.write(paths.app_log_path);
|
|
},
|
|
|
|
clearCoreLog: async function () {
|
|
const paths = await this.getPaths();
|
|
return fs.write(paths.core_log_path);
|
|
},
|
|
|
|
debug: function () {
|
|
return callMomoDebug();
|
|
},
|
|
})
|