diff --git a/luci-app-nikki/Makefile b/luci-app-nikki/Makefile index f3b3be45e..ffde789b1 100644 --- a/luci-app-nikki/Makefile +++ b/luci-app-nikki/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=1.18.0 +PKG_VERSION:=1.19.0 LUCI_TITLE:=LuCI Support for nikki LUCI_DEPENDS:=+luci-base +nikki diff --git a/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js b/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js index 8900b2743..7dc93de67 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js +++ b/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js @@ -3,6 +3,40 @@ '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 callNikkiVersion = rpc.declare({ + object: 'luci.nikki', + method: 'version', + expect: { '': {} } +}); + +const callNikkiUpdateSubscription = rpc.declare({ + object: 'luci.nikki', + method: 'update_subscription', + params: ['section_id'], + expect: { '': {} } +}); + +const callNikkiDebug = rpc.declare({ + object: 'luci.nikki', + method: 'debug', + expect: { '': {} } +}); const homeDir = '/etc/nikki'; const profilesDir = `${homeDir}/profiles`; @@ -34,27 +68,60 @@ return baseclass.extend({ reservedIPNFT: reservedIPNFT, reservedIP6NFT: reservedIP6NFT, - callServiceList: rpc.declare({ - object: 'service', - method: 'list', - params: ['name'], - expect: { '': {} } - }), - - getAppLog: function () { - return L.resolveDefault(fs.read_direct(this.appLogPath)); + status: async function () { + return (await callRCList('nikki'))?.nikki?.running; }, - getCoreLog: function () { - return L.resolveDefault(fs.read_direct(this.coreLogPath)); + reload: function () { + return callRCInit('nikki', 'reload'); }, - clearAppLog: function () { - return fs.exec_direct('/usr/libexec/nikki-call', ['clear_log', 'app']); + restart: function () { + return callRCInit('nikki', 'restart'); }, - clearCoreLog: function () { - return fs.exec_direct('/usr/libexec/nikki-call', ['clear_log', 'core']); + version: function () { + return callNikkiVersion(); + }, + + updateSubscription: function (section_id) { + return callNikkiUpdateSubscription(section_id); + }, + + api: async function (method, path, query, body) { + const apiPort = uci.get('nikki', 'mixin', 'api_port'); + const apiSecret = uci.get('nikki', 'mixin', 'api_secret'); + const url = `http://${window.location.hostname}:${apiPort}${path}`; + return request.request(url, { + method: method, + headers: { 'Authorization': `Bearer ${apiSecret}` }, + query: query, + content: body + }) + }, + + openDashboard: function () { + const uiName = uci.get('nikki', 'mixin', 'ui_name'); + const apiPort = uci.get('nikki', 'mixin', 'api_port'); + const apiSecret = encodeURIComponent(uci.get('nikki', 'mixin', 'api_secret')); + const params = { + host: window.location.hostname, + hostname: window.location.hostname, + port: apiPort, + secret: apiSecret + }; + const query = new URLSearchParams(params).toString(); + let url; + if (uiName) { + url = `http://${window.location.hostname}:${apiPort}/ui/${uiName}/?${query}`; + } else { + url = `http://${window.location.hostname}:${apiPort}/ui/?${query}`; + } + setTimeout(function () { window.open(url, '_blank') }, 0); + }, + + updateDashboard: function () { + return this.api('POST', '/upgrade/ui'); }, listProfiles: function () { @@ -69,67 +136,24 @@ return baseclass.extend({ return L.resolveDefault(fs.list(this.proxyProvidersDir), []); }, - updateSubscription: function (section_id) { - return fs.exec_direct('/usr/libexec/nikki-call', ['subscription', 'update', section_id]); + getAppLog: function () { + return L.resolveDefault(fs.read_direct(this.appLogPath)); }, - status: async function () { - try { - return (await this.callServiceList('nikki'))['nikki']['instances']['nikki']['running']; - } catch (ignored) { - return false; - } + getCoreLog: function () { + return L.resolveDefault(fs.read_direct(this.coreLogPath)); }, - reload: function () { - return fs.exec_direct('/usr/libexec/nikki-call', ['service', 'reload']); + clearAppLog: function () { + return fs.write(this.appLogPath); }, - restart: function () { - return fs.exec_direct('/usr/libexec/nikki-call', ['service', 'restart']); + clearCoreLog: function () { + return fs.write(this.coreLogPath); }, - appVersion: function () { - return L.resolveDefault(fs.exec_direct('/usr/libexec/nikki-call', ['version', 'app']), _('Unknown')); - }, - - coreVersion: function () { - return L.resolveDefault(fs.exec_direct('/usr/libexec/nikki-call', ['version', 'core']), _('Unknown')); - }, - - callMihomoAPI: async function (method, path, params, body) { - const running = await this.status(); - if (running) { - const apiPort = uci.get('nikki', 'mixin', 'api_port'); - const apiSecret = uci.get('nikki', 'mixin', 'api_secret'); - const query = new URLSearchParams(params).toString(); - const url = `http://${window.location.hostname}:${apiPort}${path}?${query}`; - await fetch(url, { - method: method, - headers: { 'Authorization': `Bearer ${apiSecret}` }, - body: JSON.stringify(body) - }) - } else { - alert(_('Service is not running.')); - } - }, - - openDashboard: async function () { - const running = await this.status(); - if (running) { - const uiName = uci.get('nikki', 'mixin', 'ui_name'); - const apiPort = uci.get('nikki', 'mixin', 'api_port'); - const apiSecret = encodeURIComponent(uci.get('nikki', 'mixin', 'api_secret')); - let url; - if (uiName) { - url = `http://${window.location.hostname}:${apiPort}/ui/${uiName}/?host=${window.location.hostname}&hostname=${window.location.hostname}&port=${apiPort}&secret=${apiSecret}`; - } else { - url = `http://${window.location.hostname}:${apiPort}/ui/?host=${window.location.hostname}&hostname=${window.location.hostname}&port=${apiPort}&secret=${apiSecret}`; - } - setTimeout(function () { window.open(url, '_blank') }, 0); - } else { - alert(_('Service is not running.')); - } + debug: function () { + return callNikkiDebug(); }, getUsers: function () { diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js index c4ee1a1b7..277be6107 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js +++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js @@ -21,18 +21,17 @@ return view.extend({ load: function () { return Promise.all([ uci.load('nikki'), - nikki.appVersion(), - nikki.coreVersion(), + nikki.version(), nikki.status(), nikki.listProfiles() ]); }, render: function (data) { const subscriptions = uci.sections('nikki', 'subscription'); - const appVersion = data[1]; - const coreVersion = data[2]; - const running = data[3]; - const profiles = data[4]; + const appVersion = data[1]?.app || ''; + const coreVersion = data[1]?.core || ''; + const running = data[2]; + const profiles = data[3]; let m, s, o; @@ -43,14 +42,14 @@ return view.extend({ o = s.option(form.Value, '_app_version', _('App Version')); o.readonly = true; o.load = function () { - return appVersion.trim(); + return appVersion; }; o.write = function () { }; o = s.option(form.Value, '_core_version', _('Core Version')); o.readonly = true; o.load = function () { - return coreVersion.trim(); + return coreVersion; }; o.write = function () { }; @@ -82,7 +81,7 @@ return view.extend({ o.inputstyle = 'positive'; o.inputtitle = _('Update Dashboard'); o.onclick = function () { - return nikki.callMihomoAPI('POST', '/upgrade/ui'); + return nikki.updateDashboard(); }; o = s.option(form.Button, 'open_dashboard', '-'); diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js index 3aee8d6fe..db788f354 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js +++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js @@ -2,6 +2,7 @@ 'require form'; 'require view'; 'require uci'; +'require fs'; 'require poll'; 'require tools.nikki as nikki'; @@ -89,6 +90,30 @@ return view.extend({ element.scrollTop = element.scrollHeight; }; + s.tab('debug_log', _('Debug Log')); + + o = s.taboption('debug_log', form.Button, '_generate_download_debug_log'); + o.inputstyle = 'negative'; + o.inputtitle = _('Generate & Download'); + o.onclick = function () { + return nikki.debug().then(function () { + fs.read_direct('/var/run/nikki/debug.md', 'blob').then(function (data) { + // create url + const url = window.URL.createObjectURL(data, { type: 'text/markdown' }); + // create link + const link = document.createElement('a'); + link.href = url; + link.download = 'nikki_debug.md'; + document.body.appendChild(link); + // download + link.click(); + // clean up + document.body.removeChild(link); + window.URL.revokeObjectURL(url); + }); + }); + }; + return m.render(); }, handleSaveApply: null, diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js index 8f8d1999b..1887ee579 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js +++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js @@ -66,6 +66,9 @@ return view.extend({ s.tab('external_control', _('External Control Config')); + o = s.taboption('external_control', form.Value, 'ui_path', '*' + ' ' + _('UI Path')); + o.rmempty = false; + o = s.taboption('external_control', form.Value, 'ui_name', '*' + ' ' + _('UI Name')); o = s.taboption('external_control', form.Value, 'ui_url', '*' + ' ' + _('UI Url')); @@ -432,7 +435,7 @@ return view.extend({ so.value('GEOSITE', _('Domain Name Geo')); so.value('GEOIP', _('Destination IP Geo')); - so = o.subsection.option(form.Value, 'match', _('Matcher')); + so = o.subsection.option(form.Value, 'matcher', _('Matcher')); so.rmempty = false; so = o.subsection.option(form.Value, 'node', _('Node')); diff --git a/luci-app-nikki/po/templates/nikki.pot b/luci-app-nikki/po/templates/nikki.pot index bf52f190d..09b6bee43 100644 --- a/luci-app-nikki/po/templates/nikki.pot +++ b/luci-app-nikki/po/templates/nikki.pot @@ -1,11 +1,11 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:78 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:81 msgid "API Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:82 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85 msgid "API Secret" msgstr "" @@ -22,16 +22,16 @@ msgstr "" msgid "All Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:91 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:94 msgid "Allow Lan" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:65 msgid "Allow Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:94 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:93 #: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:13 msgid "App Config" msgstr "" @@ -40,15 +40,15 @@ msgstr "" msgid "App Log" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:43 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:42 msgid "App Version" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409 msgid "Append Rule" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340 msgid "Append Rule Provider" msgstr "" @@ -56,11 +56,11 @@ msgstr "" msgid "Auto" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396 msgid "Behavior" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:202 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66 msgid "Block Mode" msgstr "" @@ -89,7 +89,7 @@ msgstr "" msgid "Choose File" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:99 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:98 msgid "Choose Profile" msgstr "" @@ -103,7 +103,7 @@ msgstr "" msgid "Commonly Used Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:128 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:127 msgid "Core Environment Variable Config" msgstr "" @@ -111,39 +111,43 @@ msgstr "" msgid "Core Log" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:57 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:56 msgid "Core Status" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:50 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:49 msgid "Core Version" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:116 msgid "Cron Expression" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:174 msgid "DNS Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180 msgid "DNS Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:173 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176 msgid "DNS Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:92 +msgid "Debug Log" +msgstr "" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432 msgid "Destination IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436 msgid "Destination IP Geo" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433 msgid "Destination Port" msgstr "" @@ -155,7 +159,7 @@ msgstr "" msgid "Destination UDP Port to Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140 msgid "Device" msgstr "" @@ -167,76 +171,76 @@ msgstr "" msgid "Disable" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:142 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:141 msgid "Disable ECN of quic-go" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:138 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:137 msgid "Disable GSO of quic-go" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:134 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:133 msgid "Disable Loopback Detector" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:130 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:129 msgid "Disable Safe Path Check" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214 msgid "DoH Prefer HTTP/3" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:425 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428 msgid "Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435 msgid "Domain Name Geo" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430 msgid "Domain Name Keyword" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431 msgid "Domain Name Regex" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:426 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429 msgid "Domain Name Suffix" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120 msgid "Edit Authentications" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:164 msgid "Edit DNS Hijacks" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196 msgid "Edit Fake-IP Filters" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229 msgid "Edit Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271 msgid "Edit Nameserver Policies" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248 msgid "Edit Nameservers" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:343 msgid "Edit Rule Providers" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412 msgid "Edit Rules" msgstr "" @@ -249,23 +253,23 @@ msgstr "" msgid "Editor" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:96 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:95 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:23 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:44 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:125 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:234 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:320 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:484 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:351 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:420 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31 msgid "Enable" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171 msgid "Endpoint Independent NAT" msgstr "" @@ -277,31 +281,31 @@ msgstr "" msgid "External Control Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206 msgid "Fake-IP Cache" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200 msgid "Fake-IP Filter Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:182 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:185 msgid "Fake-IP Range" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:125 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:124 msgid "Fast Reload" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:387 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390 msgid "File Format" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:381 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:384 msgid "File Path" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:375 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378 msgid "File Size Limit" msgstr "" @@ -317,20 +321,20 @@ msgstr "" msgid "File for Reserved IP6" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:103 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:102 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:33 msgid "File:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:304 msgid "Force Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152 msgid "GSO" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 msgid "GSO Max Size" msgstr "" @@ -338,39 +342,43 @@ msgstr "" msgid "General Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:96 +msgid "Generate & Download" +msgstr "" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460 msgid "GeoData Loader" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:453 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:456 msgid "GeoIP Format" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 msgid "GeoIP(ASN) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 msgid "GeoIP(DAT) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467 msgid "GeoIP(MMDB) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464 msgid "GeoSite Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:476 msgid "GeoX Auto Update" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:451 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454 msgid "GeoX Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:476 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 msgid "GeoX Update Interval" msgstr "" @@ -382,15 +390,15 @@ msgstr "" msgid "Grant access to nikki procedures" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:94 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:97 msgid "HTTP Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38 msgid "How To Use" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243 msgid "IP" msgstr "" @@ -403,7 +411,7 @@ msgid "IPv4 Proxy" msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:50 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217 msgid "IPv6" msgstr "" @@ -415,11 +423,11 @@ msgstr "" msgid "IPv6 Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:310 msgid "Ignore Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:89 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:92 msgid "Inbound Config" msgstr "" @@ -444,7 +452,7 @@ msgstr "" msgid "Log Level" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148 msgid "MTU" msgstr "" @@ -452,16 +460,16 @@ msgstr "" msgid "Match Process" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438 msgid "Matcher" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:459 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462 msgid "Memory Conservative Loader" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:102 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105 msgid "Mixed Port" msgstr "" @@ -470,7 +478,7 @@ msgstr "" msgid "Mixin Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485 msgid "Mixin File Content" msgstr "" @@ -483,26 +491,26 @@ msgstr "" msgid "Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:354 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357 msgid "Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:266 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285 msgid "Nameserver" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38 #: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:3 msgid "Nikki" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448 msgid "No Resolve" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441 msgid "Node" msgstr "" @@ -510,7 +518,7 @@ msgstr "" msgid "Not Running" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:89 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:88 msgid "Open Dashboard" msgstr "" @@ -518,56 +526,56 @@ msgstr "" msgid "Outbound Interface" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117 msgid "Overwrite Authentication" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:158 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 msgid "Overwrite DNS Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335 msgid "Overwrite Destination" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:191 msgid "Overwrite Fake-IP Filter" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301 msgid "Overwrite Force Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226 msgid "Overwrite Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:304 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307 msgid "Overwrite Ignore Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245 msgid "Overwrite Nameserver" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268 msgid "Overwrite Nameserver Policy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:310 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313 msgid "Overwrite Sniff By Protocol" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134 msgid "Password" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:484 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 msgid "Please go to the editor tab to edit the file for mixin" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332 msgid "Port" msgstr "" @@ -575,7 +583,7 @@ msgstr "" msgid "Prefer" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434 msgid "Process Name" msgstr "" @@ -588,7 +596,7 @@ msgstr "" msgid "Profile for Startup" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326 msgid "Protocol" msgstr "" @@ -605,11 +613,11 @@ msgstr "" msgid "Redirect Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:106 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:109 msgid "Redirect Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:68 msgid "Reload Service" msgstr "" @@ -617,11 +625,11 @@ msgstr "" msgid "Remote" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211 msgid "Respect Rules" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:76 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:75 msgid "Restart Service" msgstr "" @@ -629,7 +637,7 @@ msgstr "" msgid "Router Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:338 msgid "Rule Config" msgstr "" @@ -641,7 +649,7 @@ msgstr "" msgid "Rule Provider:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427 msgid "Rule Set" msgstr "" @@ -649,15 +657,15 @@ msgstr "" msgid "Running" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:98 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:101 msgid "SOCKS Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:89 msgid "Save Proxy Selection" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:114 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:113 msgid "Scheduled Restart" msgstr "" @@ -666,40 +674,35 @@ msgstr "" msgid "Scroll To Bottom" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:113 -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:131 -msgid "Service is not running." -msgstr "" - -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316 msgid "Sniff By Protocol" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295 msgid "Sniff Pure IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292 msgid "Sniff Redir-Host" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287 msgid "Sniffer Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143 msgid "Stack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:458 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461 msgid "Standard Loader" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:110 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:109 msgid "Start Delay" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:41 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:40 msgid "Status" msgstr "" @@ -715,7 +718,7 @@ msgstr "" msgid "Subscription Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:107 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:106 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:37 msgid "Subscription:" msgstr "" @@ -741,11 +744,11 @@ msgstr "" msgid "TPROXY Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:113 msgid "TPROXY Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138 msgid "TUN Config" msgstr "" @@ -754,7 +757,7 @@ msgstr "" msgid "TUN Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:122 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:121 msgid "Test Profile" msgstr "" @@ -766,13 +769,13 @@ msgstr "" msgid "Transparent Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38 msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424 msgid "Type" msgstr "" @@ -780,11 +783,15 @@ msgstr "" msgid "UDP Proxy Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:72 msgid "UI Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:71 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:69 +msgid "UI Path" +msgstr "" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74 msgid "UI Url" msgstr "" @@ -792,11 +799,6 @@ msgstr "" msgid "Unify Delay" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:93 -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:97 -msgid "Unknown" -msgstr "" - #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:60 msgid "Update" msgstr "" @@ -805,11 +807,11 @@ msgstr "" msgid "Update At" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:83 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:82 msgid "Update Dashboard" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403 msgid "Update Interval" msgstr "" @@ -817,15 +819,15 @@ msgstr "" msgid "Upload Profile" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366 msgid "Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 msgid "Use Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220 msgid "Use System Hosts" msgstr "" @@ -837,6 +839,6 @@ msgstr "" msgid "User Agent" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131 msgid "Username" msgstr "" diff --git a/luci-app-nikki/po/zh_Hans/nikki.po b/luci-app-nikki/po/zh_Hans/nikki.po index 16cb72a23..58fbdaddc 100644 --- a/luci-app-nikki/po/zh_Hans/nikki.po +++ b/luci-app-nikki/po/zh_Hans/nikki.po @@ -8,11 +8,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:78 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:81 msgid "API Port" msgstr "API 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:82 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85 msgid "API Secret" msgstr "API 密钥" @@ -29,16 +29,16 @@ msgstr "全部模式" msgid "All Port" msgstr "全部端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:91 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:94 msgid "Allow Lan" msgstr "允许局域网访问" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:65 msgid "Allow Mode" msgstr "白名单模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:94 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:93 #: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:13 msgid "App Config" msgstr "插件配置" @@ -47,15 +47,15 @@ msgstr "插件配置" msgid "App Log" msgstr "插件日志" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:43 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:42 msgid "App Version" msgstr "插件版本" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409 msgid "Append Rule" msgstr "追加规则" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340 msgid "Append Rule Provider" msgstr "追加规则提供者" @@ -63,11 +63,11 @@ msgstr "追加规则提供者" msgid "Auto" msgstr "自动" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396 msgid "Behavior" msgstr "行为" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:202 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66 msgid "Block Mode" msgstr "黑名单模式" @@ -96,7 +96,7 @@ msgstr "绕过用户" msgid "Choose File" msgstr "选择文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:99 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:98 msgid "Choose Profile" msgstr "选择配置文件" @@ -110,7 +110,7 @@ msgstr "清空日志" msgid "Commonly Used Port" msgstr "常用端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:128 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:127 msgid "Core Environment Variable Config" msgstr "核心环境变量配置" @@ -118,39 +118,43 @@ msgstr "核心环境变量配置" msgid "Core Log" msgstr "核心日志" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:57 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:56 msgid "Core Status" msgstr "核心状态" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:50 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:49 msgid "Core Version" msgstr "核心版本" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:117 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:116 msgid "Cron Expression" msgstr "Cron 表达式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:174 msgid "DNS Config" msgstr "DNS 配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180 msgid "DNS Mode" msgstr "DNS 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:173 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176 msgid "DNS Port" msgstr "DNS 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:92 +msgid "Debug Log" +msgstr "调试日志" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432 msgid "Destination IP" msgstr "目标 IP" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436 msgid "Destination IP Geo" msgstr "目标 IP(Geo)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433 msgid "Destination Port" msgstr "目标端口" @@ -162,7 +166,7 @@ msgstr "要代理的 TCP 目标端口" msgid "Destination UDP Port to Proxy" msgstr "要代理的 UDP 目标端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140 msgid "Device" msgstr "设备名称" @@ -174,76 +178,76 @@ msgstr "直连模式" msgid "Disable" msgstr "禁用" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:142 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:141 msgid "Disable ECN of quic-go" msgstr "禁用 quic-go 的显式拥塞通知" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:138 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:137 msgid "Disable GSO of quic-go" msgstr "禁用 quic-go 的通用分段卸载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:134 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:133 msgid "Disable Loopback Detector" msgstr "禁用回环检测" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:130 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:129 msgid "Disable Safe Path Check" msgstr "禁用安全路径检查" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214 msgid "DoH Prefer HTTP/3" msgstr "DoH 优先 HTTP/3" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:425 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428 msgid "Domain Name" msgstr "域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435 msgid "Domain Name Geo" msgstr "域名(Geo)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430 msgid "Domain Name Keyword" msgstr "域名(关键字)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431 msgid "Domain Name Regex" msgstr "域名(正则表达式)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:426 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429 msgid "Domain Name Suffix" msgstr "域名(后缀)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120 msgid "Edit Authentications" msgstr "编辑身份验证" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:164 msgid "Edit DNS Hijacks" msgstr "编辑 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196 msgid "Edit Fake-IP Filters" msgstr "编辑 Fake-IP 过滤列表" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229 msgid "Edit Hosts" msgstr "编辑 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271 msgid "Edit Nameserver Policies" msgstr "编辑 DNS 服务器查询策略" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248 msgid "Edit Nameservers" msgstr "编辑 DNS 服务器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:343 msgid "Edit Rule Providers" msgstr "编辑规则提供者" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412 msgid "Edit Rules" msgstr "编辑规则" @@ -256,23 +260,23 @@ msgstr "编辑订阅" msgid "Editor" msgstr "编辑器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:96 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:95 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:23 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:44 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:125 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:234 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:253 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:320 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:484 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:351 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:420 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31 msgid "Enable" msgstr "启用" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171 msgid "Endpoint Independent NAT" msgstr "独立于端点的 NAT" @@ -284,31 +288,31 @@ msgstr "到期时间" msgid "External Control Config" msgstr "外部控制配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206 msgid "Fake-IP Cache" msgstr "Fake-IP 缓存" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:197 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200 msgid "Fake-IP Filter Mode" msgstr "Fake-IP 过滤模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:182 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:185 msgid "Fake-IP Range" msgstr "Fake-IP 范围" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:125 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:124 msgid "Fast Reload" msgstr "快速重载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:387 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390 msgid "File Format" msgstr "文件格式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:381 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:384 msgid "File Path" msgstr "文件路径" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:375 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378 msgid "File Size Limit" msgstr "文件大小限制" @@ -324,20 +328,20 @@ msgstr "IPv4 保留地址" msgid "File for Reserved IP6" msgstr "IPv6 保留地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:103 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:102 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:33 msgid "File:" msgstr "文件:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:304 msgid "Force Sniff Domain Name" msgstr "强制嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152 msgid "GSO" msgstr "通用分段卸载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 msgid "GSO Max Size" msgstr "分段最大长度" @@ -345,39 +349,43 @@ msgstr "分段最大长度" msgid "General Config" msgstr "全局配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:96 +msgid "Generate & Download" +msgstr "生成并下载" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460 msgid "GeoData Loader" msgstr "GeoData 加载器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:453 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:456 msgid "GeoIP Format" msgstr "GeoIP 格式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 msgid "GeoIP(ASN) Url" msgstr "GeoIP(ASN) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 msgid "GeoIP(DAT) Url" msgstr "GeoIP(DAT) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467 msgid "GeoIP(MMDB) Url" msgstr "GeoIP(MMDB) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464 msgid "GeoSite Url" msgstr "GeoSite 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:476 msgid "GeoX Auto Update" msgstr "定时更新GeoX文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:451 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454 msgid "GeoX Config" msgstr "GeoX 配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:476 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 msgid "GeoX Update Interval" msgstr "GeoX 文件更新间隔" @@ -389,15 +397,15 @@ msgstr "全局模式" msgid "Grant access to nikki procedures" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:94 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:97 msgid "HTTP Port" msgstr "HTTP 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38 msgid "How To Use" msgstr "使用说明" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243 msgid "IP" msgstr "" @@ -410,7 +418,7 @@ msgid "IPv4 Proxy" msgstr "IPv4 代理" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:50 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217 msgid "IPv6" msgstr "" @@ -422,11 +430,11 @@ msgstr "IPv6 DNS 劫持" msgid "IPv6 Proxy" msgstr "IPv6 代理" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:310 msgid "Ignore Sniff Domain Name" msgstr "忽略嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:89 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:92 msgid "Inbound Config" msgstr "入站配置" @@ -451,7 +459,7 @@ msgstr "日志" msgid "Log Level" msgstr "日志级别" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148 msgid "MTU" msgstr "最大传输单元" @@ -459,16 +467,16 @@ msgstr "最大传输单元" msgid "Match Process" msgstr "匹配进程" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438 msgid "Matcher" msgstr "匹配" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:459 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462 msgid "Memory Conservative Loader" msgstr "为内存受限设备优化的加载器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:102 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105 msgid "Mixed Port" msgstr "混合端口" @@ -477,7 +485,7 @@ msgstr "混合端口" msgid "Mixin Config" msgstr "混入配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:482 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485 msgid "Mixin File Content" msgstr "混入文件内容" @@ -490,26 +498,26 @@ msgstr "混入选项" msgid "Mode" msgstr "模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:354 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357 msgid "Name" msgstr "名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:266 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285 msgid "Nameserver" msgstr "DNS 服务器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38 #: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:3 msgid "Nikki" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:445 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448 msgid "No Resolve" msgstr "不解析" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441 msgid "Node" msgstr "节点" @@ -517,7 +525,7 @@ msgstr "节点" msgid "Not Running" msgstr "未在运行" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:89 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:88 msgid "Open Dashboard" msgstr "打开面板" @@ -525,56 +533,56 @@ msgstr "打开面板" msgid "Outbound Interface" msgstr "出站接口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117 msgid "Overwrite Authentication" msgstr "覆盖身份验证" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:158 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 msgid "Overwrite DNS Hijack" msgstr "覆盖 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335 msgid "Overwrite Destination" msgstr "将嗅探结果作为连接目标" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:191 msgid "Overwrite Fake-IP Filter" msgstr "覆盖 Fake-IP 过滤列表" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301 msgid "Overwrite Force Sniff Domain Name" msgstr "覆盖强制嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226 msgid "Overwrite Hosts" msgstr "覆盖 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:304 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307 msgid "Overwrite Ignore Sniff Domain Name" msgstr "覆盖忽略嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245 msgid "Overwrite Nameserver" msgstr "覆盖 DNS 服务器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268 msgid "Overwrite Nameserver Policy" msgstr "覆盖 DNS 服务器查询策略" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:310 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313 msgid "Overwrite Sniff By Protocol" msgstr "覆盖按协议嗅探" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134 msgid "Password" msgstr "密码" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:484 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 msgid "Please go to the editor tab to edit the file for mixin" msgstr "请前往编辑器标签编辑用于混入的文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:329 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:332 msgid "Port" msgstr "端口" @@ -582,7 +590,7 @@ msgstr "端口" msgid "Prefer" msgstr "优先" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434 msgid "Process Name" msgstr "进程名" @@ -595,7 +603,7 @@ msgstr "配置文件" msgid "Profile for Startup" msgstr "用于启动的配置文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326 msgid "Protocol" msgstr "协议" @@ -612,11 +620,11 @@ msgstr "代理提供者:" msgid "Redirect Mode" msgstr "Redirect 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:106 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:109 msgid "Redirect Port" msgstr "Redirect 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:68 msgid "Reload Service" msgstr "重载服务" @@ -624,11 +632,11 @@ msgstr "重载服务" msgid "Remote" msgstr "远程" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211 msgid "Respect Rules" msgstr "遵循分流规则" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:76 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:75 msgid "Restart Service" msgstr "重启服务" @@ -636,7 +644,7 @@ msgstr "重启服务" msgid "Router Proxy" msgstr "路由器代理" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:338 msgid "Rule Config" msgstr "规则配置" @@ -648,7 +656,7 @@ msgstr "规则模式" msgid "Rule Provider:" msgstr "规则提供者:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427 msgid "Rule Set" msgstr "规则集" @@ -656,15 +664,15 @@ msgstr "规则集" msgid "Running" msgstr "运行中" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:98 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:101 msgid "SOCKS Port" msgstr "SOCKS 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:89 msgid "Save Proxy Selection" msgstr "保存节点/策略组选择" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:114 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:113 msgid "Scheduled Restart" msgstr "定时重启" @@ -673,40 +681,35 @@ msgstr "定时重启" msgid "Scroll To Bottom" msgstr "滚动到底部" -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:113 -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:131 -msgid "Service is not running." -msgstr "服务未在运行。" - -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316 msgid "Sniff By Protocol" msgstr "按协议嗅探" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295 msgid "Sniff Pure IP" msgstr "嗅探纯 IP 连接" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292 msgid "Sniff Redir-Host" msgstr "嗅探 Redir-Host 流量" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287 msgid "Sniffer Config" msgstr "嗅探器配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143 msgid "Stack" msgstr "栈" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:458 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461 msgid "Standard Loader" msgstr "标准加载器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:110 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:109 msgid "Start Delay" msgstr "启动延迟" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:41 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:40 msgid "Status" msgstr "状态" @@ -722,7 +725,7 @@ msgstr "订阅名称" msgid "Subscription Url" msgstr "订阅链接" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:107 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:106 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:37 msgid "Subscription:" msgstr "订阅:" @@ -748,11 +751,11 @@ msgstr "TCP 代理模式" msgid "TPROXY Mode" msgstr "TPROXY 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:113 msgid "TPROXY Port" msgstr "TPROXY 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138 msgid "TUN Config" msgstr "TUN 配置" @@ -761,7 +764,7 @@ msgstr "TUN 配置" msgid "TUN Mode" msgstr "TUN 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:122 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:121 msgid "Test Profile" msgstr "检查配置文件" @@ -773,13 +776,13 @@ msgstr "总量" msgid "Transparent Proxy" msgstr "透明代理" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38 msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:421 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424 msgid "Type" msgstr "类型" @@ -787,11 +790,15 @@ msgstr "类型" msgid "UDP Proxy Mode" msgstr "UDP 代理模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:72 msgid "UI Name" msgstr "UI 名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:71 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:69 +msgid "UI Path" +msgstr "UI 路径" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74 msgid "UI Url" msgstr "UI 下载地址" @@ -799,11 +806,6 @@ msgstr "UI 下载地址" msgid "Unify Delay" msgstr "统一延迟" -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:93 -#: applications/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js:97 -msgid "Unknown" -msgstr "未知" - #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:60 msgid "Update" msgstr "更新" @@ -812,11 +814,11 @@ msgstr "更新" msgid "Update At" msgstr "更新时间" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:83 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:82 msgid "Update Dashboard" msgstr "更新面板" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403 msgid "Update Interval" msgstr "更新间隔" @@ -824,15 +826,15 @@ msgstr "更新间隔" msgid "Upload Profile" msgstr "上传配置文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366 msgid "Url" msgstr "下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 msgid "Use Hosts" msgstr "使用 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220 msgid "Use System Hosts" msgstr "使用系统的 Hosts" @@ -844,21 +846,6 @@ msgstr "已使用" msgid "User Agent" msgstr "用户代理(UA)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131 msgid "Username" msgstr "用户名" - -#~ msgid "File" -#~ msgstr "文件" - -#~ msgid "Proxy Provider" -#~ msgstr "代理提供者" - -#~ msgid "Rule Provider" -#~ msgstr "规则提供者" - -#~ msgid ": " -#~ msgstr ":" - -#~ msgid "Custom" -#~ msgstr "自定义" diff --git a/luci-app-nikki/root/usr/libexec/nikki-call b/luci-app-nikki/root/usr/libexec/nikki-call deleted file mode 100755 index 1ddda1705..000000000 --- a/luci-app-nikki/root/usr/libexec/nikki-call +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/sh - -. $IPKG_INSTROOT/etc/nikki/scripts/include.sh - -action=$1 -shift - -case "$action" in - clear_log) - case "$1" in - app) - echo -n > "$APP_LOG_PATH" - ;; - core) - echo -n > "$CORE_LOG_PATH" - ;; - esac - ;; - subscription) - case "$1" in - update) - /etc/init.d/nikki update_subscription "$2" - ;; - esac - ;; - load) - case "$1" in - profile) - yq -M -o json < "$RUN_PROFILE_PATH" - ;; - esac - ;; - service) - case "$1" in - reload) - /etc/init.d/nikki reload - ;; - restart) - /etc/init.d/nikki restart - ;; - esac - ;; - version) - case "$1" in - app) - if [ -x "/bin/opkg" ]; then - opkg list-installed "luci-app-nikki" | cut -d " " -f 3 - elif [ -x "/usr/bin/apk" ]; then - apk list -I "luci-app-nikki" | cut -d ' ' -f 1 | cut -d '-' -f 4 - fi - ;; - core) - mihomo -v | grep "Mihomo" | cut -d " " -f 3 - ;; - esac - ;; -esac diff --git a/luci-app-nikki/root/usr/share/rpcd/acl.d/luci-app-nikki.json b/luci-app-nikki/root/usr/share/rpcd/acl.d/luci-app-nikki.json index 9c6dda901..d338102a4 100644 --- a/luci-app-nikki/root/usr/share/rpcd/acl.d/luci-app-nikki.json +++ b/luci-app-nikki/root/usr/share/rpcd/acl.d/luci-app-nikki.json @@ -4,7 +4,8 @@ "read": { "uci": [ "nikki" ], "ubus": { - "service": [ "list" ] + "rc": [ "*" ], + "luci.nikki": [ "*" ] }, "file": { "/etc/passwd": ["read"], @@ -20,7 +21,7 @@ "/etc/nikki/nftables/reserved_ip.nft": ["read"], "/etc/nikki/nftables/reserved_ip6.nft": ["read"], "/var/log/nikki/*.log": ["read"], - "/usr/libexec/nikki-call": ["exec"] + "/var/run/nikki/debug.md": ["read"] } }, "write": { diff --git a/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki b/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki new file mode 100644 index 000000000..4099775d6 --- /dev/null +++ b/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki @@ -0,0 +1,53 @@ +#!/usr/bin/ucode + +'use strict'; + +import { popen } from 'fs'; + +const methods = { + version: { + call: function() { + let process; + let app = ''; + if (system('command -v opkg') == 0) { + process = popen('opkg list-installed luci-app-nikki | cut -d " " -f 3'); + if (process != null) { + app = trim(process.read('all')); + process.close(); + } + } else if (system('command -v apk') == 0) { + process = popen('apk list -I luci-app-nikki | cut -d " " -f 1 | cut -d "-" -f 4'); + if (process != null) { + app = trim(process.read('all')); + process.close(); + } + } + let core = ''; + process = popen('mihomo -v | grep Mihomo | cut -d " " -f 3'); + if (process != null) { + core = trim(process.read('all')); + process.close(); + } + return { success: true, app: app, core: core }; + } + }, + update_subscription: { + args: { section_id: 'section_id' }, + call: function(req) { + let success = false; + if (req.args?.section_id) { + const section_id = req.args?.section_id; + success = system(['service', 'nikki', 'update_subscription', section_id]) == 0; + } + return { success: success }; + } + }, + debug: { + call: function() { + const success = system('/etc/nikki/scripts/debug.sh > /var/run/nikki/debug.md') == 0; + return { success: success }; + } + } +}; + +return { 'luci.nikki': methods }; \ No newline at end of file