diff --git a/luci-app-nikki/Makefile b/luci-app-nikki/Makefile index 36e2df89f..005986f74 100644 --- a/luci-app-nikki/Makefile +++ b/luci-app-nikki/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=1.20.2 +PKG_VERSION:=1.20.3 LUCI_TITLE:=LuCI Support for nikki LUCI_DEPENDS:=+luci-base +nikki diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js index 2e584526b..698b37f96 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js +++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js @@ -5,38 +5,6 @@ 'require fs'; 'require tools.nikki as nikki' -function loadJS(url) { - return new Promise(function (resolve, reject) { - const script = document.createElement('script'); - script.src = url; - script.onload = resolve; - script.onerror = reject; - document.body.appendChild(script); - }); -} - -function loadCSS(url) { - return new Promise(function (resolve, reject) { - const link = document.createElement('link'); - link.rel = 'stylesheet'; - link.href = url; - link.onload = resolve; - link.onerror = reject; - document.head.appendChild(link); - }); -} - -async function loadCodeMirror() { - try{ - await loadJS('https://unpkg.com/codemirror@5/lib/codemirror.js'); - await loadJS('https://unpkg.com/codemirror@5/mode/yaml/yaml.js'); - await loadCSS('https://unpkg.com/codemirror@5/lib/codemirror.css'); - await loadCSS('https://unpkg.com/codemirror@5/theme/dracula.css'); - } catch (e) { - - } -} - return view.extend({ load: function () { return Promise.all([ @@ -44,7 +12,6 @@ return view.extend({ nikki.listProfiles(), nikki.listRuleProviders(), nikki.listProxyProviders(), - loadCodeMirror(), ]); }, render: function (data) { @@ -86,51 +53,22 @@ return view.extend({ o.write = function (section_id, formvalue) { return true; }; - o.onchange = L.bind(function (event, section_id, value) { - const uiElement = this.getUIElement(section_id, '_file_content'); - const editor = uiElement.node.firstChild.editor; - fs.read_direct(value).then(function (content) { - const mode = value.endsWith('.yml') || value.endsWith('.yaml') ? 'yaml' : null; - uiElement.setValue(content); - if (editor) { - editor.setValue(content); - editor.setOption('mode', mode); - editor.getDoc().clearHistory(); - } - }).catch(function (e) { - uiElement.setValue(''); - if (editor) { - editor.setValue(''); - editor.setOption('mode', null); - editor.getDoc().clearHistory(); - } - }) - }, s); + o.onchange = function (event, section_id, value) { + return L.resolveDefault(fs.read_direct(value), '').then(function (content) { + m.lookupOption('nikki.editor._file_content')[0].getUIElement('editor').setValue(content); + }); + }; o = s.option(form.TextValue, '_file_content',); o.rows = 25; o.wrap = false; - o.write = L.bind(function (section_id, formvalue) { - const path = this.getOption('_file').formvalue(section_id); + o.write = function (section_id, formvalue) { + const path = m.lookupOption('nikki.editor._file')[0].formvalue('editor'); return fs.write(path, formvalue); - }, s); - o.remove = L.bind(function (section_id) { - const path = this.getOption('_file').formvalue(section_id); + }; + o.remove = function (section_id) { + const path = m.lookupOption('nikki.editor._file')[0].formvalue('editor'); return fs.write(path); - }, s); - o.render = function () { - return this.super('render', arguments).then(function (widget) { - const textarea = widget.firstChild.firstChild; - if (CodeMirror) { - const editor = CodeMirror.fromTextArea(textarea, { lineNumbers: true, theme: 'dracula' }); - editor.on('change', function () { - editor.save(); - }); - editor.getWrapperElement().style.height = '420px'; - textarea.editor = editor; - } - return widget; - }); }; return m.render(); 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 a35fd280a..9bbf386bb 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 @@ -29,10 +29,10 @@ return view.extend({ o = s.taboption('app_log', form.Button, 'clear_app_log'); o.inputstyle = 'negative'; o.inputtitle = _('Clear Log'); - o.onclick = L.bind(function (event, section_id) { - this.getUIElement(section_id, '_app_log').setValue(''); + o.onclick = function () { + m.lookupOption('nikki.log._app_log')[0].getUIElement('log').setValue(''); return nikki.clearAppLog(); - }, s); + }; o = s.taboption('app_log', form.TextValue, '_app_log'); o.rows = 25; @@ -52,20 +52,20 @@ return view.extend({ o = s.taboption('app_log', form.Button, 'scroll_app_log_to_bottom'); o.inputtitle = _('Scroll To Bottom'); - o.onclick = L.bind(function (event, section_id) { - const element = this.getUIElement(section_id, '_app_log').node.firstChild; + o.onclick = function () { + const element = m.lookupOption('nikki.log._app_log')[0].getUIElement('log').node.firstChild; element.scrollTop = element.scrollHeight; - }, s); + }; s.tab('core_log', _('Core Log')); o = s.taboption('core_log', form.Button, 'clear_core_log'); o.inputstyle = 'negative'; o.inputtitle = _('Clear Log'); - o.onclick = L.bind(function (event, section_id) { - this.getUIElement(section_id, '_core_log').setValue(''); + o.onclick = function () { + m.lookupOption('nikki.log._core_log')[0].getUIElement('log').setValue(''); return nikki.clearCoreLog(); - }, s); + }; o = s.taboption('core_log', form.TextValue, '_core_log'); o.rows = 25; @@ -85,10 +85,10 @@ return view.extend({ o = s.taboption('core_log', form.Button, 'scroll_core_log_to_bottom'); o.inputtitle = _('Scroll To Bottom'); - o.onclick = L.bind(function (event, section_id) { - const element = this.getUIElement(section_id, '_core_log').node.firstChild; + o.onclick = function () { + const element = m.lookupOption('nikki.log._core_log')[0].getUIElement('log').node.firstChild; element.scrollTop = element.scrollHeight; - }, s); + }; s.tab('debug_log', _('Debug Log')); 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 ce0726552..6225c1db7 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 @@ -79,14 +79,28 @@ return view.extend({ o.value('0', _('Disable')); o.value('1', _('Enable')); + o = s.taboption('general', form.ListValue, 'disable_tcp_keep_alive', _('Disable TCP Keep Alive')); + o.optional = true; + o.placeholder = _('Unmodified'); + o.value('0', _('Disable')); + o.value('1', _('Enable')); + o = s.taboption('general', form.Value, 'tcp_keep_alive_idle', _('TCP Keep Alive Idle')); o.datatype = 'uinteger'; o.placeholder = _('Unmodified'); - + o = s.taboption('general', form.Value, 'tcp_keep_alive_interval', _('TCP Keep Alive Interval')); o.datatype = 'uinteger'; o.placeholder = _('Unmodified'); + o = s.taboption('general', form.Value, 'global_client_fingerprint', _('Global Client Fingerprint')); + o.placeholder = _('Unmodified'); + o.value('random', _('Random')); + o.value('chrome', 'Chrome'); + o.value('firefox', 'Firefox'); + o.value('safari', 'Safari'); + o.value('edge', 'Edge'); + s.tab('external_control', _('External Control Config')); o = s.taboption('external_control', form.Value, 'ui_path', '*' + ' ' + _('UI Path')); @@ -232,9 +246,7 @@ return view.extend({ o = s.taboption('dns', form.Value, 'fake_ip_range', '*' + ' ' + _('Fake-IP Range')); o.datatype = 'cidr4'; o.placeholder = _('Unmodified'); - o.retain = true; o.rmempty = false; - o.depends('dns_mode', 'fake-ip'); o = s.taboption('dns', form.Flag, 'fake_ip_filter', _('Overwrite Fake-IP Filter')); o.rmempty = false; @@ -364,12 +376,14 @@ return view.extend({ o.rmempty = false; o = s.taboption('sniffer', form.DynamicList, 'sniffer_force_domain_names', _('Force Sniff Domain Name')); + o.retain = true; o.depends('sniffer_force_domain_name', '1'); o = s.taboption('sniffer', form.Flag, 'sniffer_ignore_domain_name', _('Overwrite Ignore Sniff Domain Name')); o.rmempty = false; o = s.taboption('sniffer', form.DynamicList, 'sniffer_ignore_domain_names', _('Ignore Sniff Domain Name')); + o.retain = true; o.depends('sniffer_ignore_domain_name', '1'); o = s.taboption('sniffer', form.Flag, 'sniffer_sniff', _('Overwrite Sniff By Protocol')); diff --git a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js index ea6dd288c..9c931c10e 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js +++ b/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js @@ -34,11 +34,15 @@ return view.extend({ o.rmempty = false; o = s.taboption('transparent_proxy', form.ListValue, 'tcp_transparent_proxy_mode', _('TCP Proxy Mode')); + o.optional = true; + o.placeholder = _('Disable'); o.value('redirect', _('Redirect Mode')); o.value('tproxy', _('TPROXY Mode')); o.value('tun', _('TUN Mode')); o = s.taboption('transparent_proxy', form.ListValue, 'udp_transparent_proxy_mode', _('UDP Proxy Mode')); + o.optional = true; + o.placeholder = _('Disable'); o.value('tproxy', _('TPROXY Mode')); o.value('tun', _('TUN Mode')); diff --git a/luci-app-nikki/po/templates/nikki.pot b/luci-app-nikki/po/templates/nikki.pot index 2505444cb..f0d93ee22 100644 --- a/luci-app-nikki/po/templates/nikki.pot +++ b/luci-app-nikki/po/templates/nikki.pot @@ -1,33 +1,33 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: 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:120 msgid "API Listen" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:125 msgid "API Secret" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:70 msgid "Access Control" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:73 msgid "All Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:148 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:153 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:152 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157 msgid "All Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137 msgid "Allow Lan" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:70 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:262 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:74 msgid "Allow Mode" msgstr "" @@ -44,40 +44,40 @@ msgstr "" msgid "App Version" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:471 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485 msgid "Append Rule" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:416 msgid "Append Rule Provider" 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:472 msgid "Behavior" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:71 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:75 msgid "Block Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:127 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:131 msgid "Bypass" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:143 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147 msgid "Bypass China Mainland IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:156 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160 msgid "Bypass DSCP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:136 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:140 msgid "Bypass Group" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:129 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:133 msgid "Bypass User" msgstr "" @@ -94,8 +94,8 @@ msgstr "" msgid "Clear Log" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:149 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:154 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:153 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:158 msgid "Commonly Used Port" msgstr "" @@ -119,15 +119,15 @@ msgstr "" msgid "Cron Expression" msgstr "" -#: 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:228 msgid "DNS Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230 msgid "DNS Listen" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:227 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241 msgid "DNS Mode" msgstr "" @@ -135,27 +135,27 @@ msgstr "" msgid "Debug Log" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:507 msgid "Destination IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:497 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:511 msgid "Destination IP Geo" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:494 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:508 msgid "Destination Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:146 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:150 msgid "Destination TCP Port to Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:151 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:155 msgid "Destination UDP Port to Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:174 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188 msgid "Device Name" msgstr "" @@ -166,20 +166,23 @@ msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:67 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:202 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:224 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132 +#: 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:206 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:273 #: 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:348 -#: 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:285 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291 #: 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:544 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45 msgid "Disable" msgstr "" @@ -199,60 +202,64 @@ msgstr "" msgid "Disable Safe Path Check" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:264 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:82 +msgid "Disable TCP Keep Alive" +msgstr "" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276 msgid "DoH Prefer HTTP/3" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:296 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:489 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:308 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:503 msgid "Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:496 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:510 msgid "Domain Name Geo" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:491 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505 msgid "Domain Name Keyword" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:492 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506 msgid "Domain Name Regex" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:490 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:504 msgid "Domain Name Suffix" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168 msgid "Edit Authentications" 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:222 msgid "Edit DNS Hijacks" 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:254 msgid "Edit Fake-IP Filters" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297 msgid "Edit Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:327 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:339 msgid "Edit Nameserver Policies" 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:316 msgid "Edit Nameservers" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419 msgid "Edit Rule Providers" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:474 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488 msgid "Edit Rules" msgstr "" @@ -269,34 +276,35 @@ msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:68 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:119 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:162 -#: 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:203 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:225 -#: 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:262 +#: 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:133 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207 +#: 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:239 #: 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:274 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:312 -#: 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:345 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:349 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355 +#: 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:292 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347 +#: 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:361 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413 -#: 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:545 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:373 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399 +#: 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:496 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:559 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33 msgid "Enable" 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:213 msgid "Endpoint Independent NAT" msgstr "" @@ -304,23 +312,23 @@ msgstr "" msgid "Expire At" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:90 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:104 msgid "External Control Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:264 msgid "Fake-IP Cache" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258 msgid "Fake-IP Filter Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:57 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:61 msgid "Fake-IP Ping Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246 msgid "Fake-IP Range" msgstr "" @@ -328,15 +336,15 @@ msgstr "" msgid "Fast Reload" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:452 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466 msgid "File Format" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:446 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460 msgid "File Path" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:440 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454 msgid "File Size Limit" msgstr "" @@ -357,15 +365,15 @@ msgstr "" msgid "File:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378 msgid "Force Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 msgid "GSO" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:209 msgid "GSO Max Size" msgstr "" @@ -377,42 +385,46 @@ msgstr "" msgid "Generate & Download" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:523 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537 msgid "GeoData Loader" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:517 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531 msgid "GeoIP Format" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552 msgid "GeoIP(ASN) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:535 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549 msgid "GeoIP(DAT) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:532 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546 msgid "GeoIP(MMDB) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543 msgid "GeoSite Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555 msgid "GeoX Auto Update" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:515 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529 msgid "GeoX Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:561 msgid "GeoX Update Interval" msgstr "" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:96 +msgid "Global Client Fingerprint" +msgstr "" + #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:42 msgid "Global Mode" msgstr "" @@ -421,7 +433,7 @@ msgstr "" msgid "Grant access to nikki procedures" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143 msgid "HTTP Port" msgstr "" @@ -429,44 +441,44 @@ msgstr "" msgid "How To Use" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311 msgid "IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:49 msgid "IPv4 DNS Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:51 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:55 msgid "IPv4 Proxy" msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:64 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:221 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235 msgid "IPv6" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:48 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:52 msgid "IPv6 DNS Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:54 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:58 msgid "IPv6 Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385 msgid "Ignore Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135 msgid "Inbound Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:113 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:117 msgid "Interface" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:63 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:67 msgid "Lan Proxy" msgstr "" @@ -483,7 +495,7 @@ msgstr "" msgid "Log Level" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:185 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199 msgid "MTU" msgstr "" @@ -491,16 +503,16 @@ msgstr "" msgid "Match Process" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:338 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:499 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:350 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:513 msgid "Matcher" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:527 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541 msgid "Memory Conservative Loader" 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:151 msgid "Mixed Port" msgstr "" @@ -508,7 +520,7 @@ msgstr "" msgid "Mixin Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:565 msgid "Mixin File Content" msgstr "" @@ -517,16 +529,16 @@ msgid "Mixin Option" msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:68 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:72 msgid "Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433 msgid "Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:322 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:341 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:353 msgid "Nameserver" msgstr "" @@ -535,12 +547,12 @@ msgstr "" msgid "Nikki" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:523 msgid "No Resolve" 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:502 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:516 msgid "Node" msgstr "" @@ -556,55 +568,55 @@ msgstr "" msgid "Outbound Interface" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165 msgid "Overwrite Authentication" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:219 msgid "Overwrite DNS Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:397 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411 msgid "Overwrite Destination" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251 msgid "Overwrite Fake-IP Filter" 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:375 msgid "Overwrite Force Sniff Domain Name" msgstr "" -#: 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:294 msgid "Overwrite Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382 msgid "Overwrite Ignore Sniff Domain Name" 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:313 msgid "Overwrite Nameserver" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:336 msgid "Overwrite Nameserver Policy" 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:389 msgid "Overwrite Sniff By Protocol" 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:182 msgid "Password" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567 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:394 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408 msgid "Port" msgstr "" @@ -612,7 +624,7 @@ msgstr "" msgid "Prefer" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:495 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509 msgid "Process Name" msgstr "" @@ -625,7 +637,7 @@ msgstr "" msgid "Profile for Startup" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:388 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402 msgid "Protocol" msgstr "" @@ -638,11 +650,15 @@ msgstr "" msgid "Proxy Provider:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:37 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:98 +msgid "Random" +msgstr "" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:39 msgid "Redirect Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 msgid "Redirect Port" msgstr "" @@ -654,7 +670,7 @@ msgstr "" msgid "Remote" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270 msgid "Respect Rules" msgstr "" @@ -662,11 +678,11 @@ msgstr "" msgid "Restart Service" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:60 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:64 msgid "Router Proxy" 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:414 msgid "Rule Config" msgstr "" @@ -678,7 +694,7 @@ msgstr "" msgid "Rule Provider:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:502 msgid "Rule Set" msgstr "" @@ -686,11 +702,11 @@ msgstr "" msgid "Running" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147 msgid "SOCKS Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:115 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129 msgid "Save Proxy Selection" msgstr "" @@ -703,27 +719,27 @@ msgstr "" msgid "Scroll To Bottom" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392 msgid "Sniff By Protocol" msgstr "" -#: 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:369 msgid "Sniff Pure IP" msgstr "" -#: 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:363 msgid "Sniff Redir-Host" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:343 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355 msgid "Sniffer Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:178 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192 msgid "Stack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:526 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540 msgid "Standard Loader" msgstr "" @@ -756,11 +772,11 @@ msgstr "" msgid "TCP Concurrent" 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:88 msgid "TCP Keep Alive Idle" 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:92 msgid "TCP Keep Alive Interval" msgstr "" @@ -768,21 +784,21 @@ msgstr "" msgid "TCP Proxy Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:42 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:40 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:46 msgid "TPROXY Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:160 msgid "TPROXY Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:172 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186 msgid "TUN Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:39 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:41 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:47 msgid "TUN Mode" msgstr "" @@ -802,25 +818,25 @@ msgstr "" msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:315 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:486 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:327 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500 msgid "Type" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:41 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43 msgid "UDP Proxy Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:96 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110 msgid "UI Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:92 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:106 msgid "UI Path" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:99 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:113 msgid "UI Url" msgstr "" @@ -836,46 +852,48 @@ msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:72 #: 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:84 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:88 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:93 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:90 +#: 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 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:100 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:108 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:113 -#: 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:125 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111 +#: 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:122 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127 #: 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:135 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:175 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:187 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:191 -#: 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:145 +#: 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:153 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:162 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218 -#: 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:228 -#: 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:205 +#: 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:215 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232 +#: 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:242 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:260 #: 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:272 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:353 +#: 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:290 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:359 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:519 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:525 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:530 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365 +#: 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:533 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:536 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:563 msgid "Unmodified" msgstr "" @@ -891,7 +909,7 @@ msgstr "" msgid "Update Dashboard" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 msgid "Update Interval" msgstr "" @@ -899,15 +917,15 @@ msgstr "" msgid "Upload Profile" 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:442 msgid "Url" msgstr "" -#: 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:288 msgid "Use Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282 msgid "Use System Hosts" msgstr "" @@ -919,6 +937,6 @@ msgstr "" msgid "User Agent" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179 msgid "Username" msgstr "" diff --git a/luci-app-nikki/po/zh_Hans/nikki.po b/luci-app-nikki/po/zh_Hans/nikki.po index 6bc499070..3a8a6984a 100644 --- a/luci-app-nikki/po/zh_Hans/nikki.po +++ b/luci-app-nikki/po/zh_Hans/nikki.po @@ -8,33 +8,33 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: 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:120 msgid "API Listen" msgstr "API 监听" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:125 msgid "API Secret" msgstr "API 密钥" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:70 msgid "Access Control" msgstr "访问控制" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:73 msgid "All Mode" msgstr "全部模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:148 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:153 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:152 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157 msgid "All Port" msgstr "全部端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137 msgid "Allow Lan" msgstr "允许局域网访问" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:70 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:262 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:74 msgid "Allow Mode" msgstr "白名单模式" @@ -51,40 +51,40 @@ msgstr "插件日志" msgid "App Version" msgstr "插件版本" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:471 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485 msgid "Append Rule" msgstr "追加规则" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:416 msgid "Append Rule Provider" 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:472 msgid "Behavior" msgstr "行为" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:71 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:75 msgid "Block Mode" msgstr "黑名单模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:127 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:131 msgid "Bypass" msgstr "绕过" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:143 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147 msgid "Bypass China Mainland IP" msgstr "绕过中国大陆 IP" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:156 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160 msgid "Bypass DSCP" msgstr "绕过 DSCP" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:136 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:140 msgid "Bypass Group" msgstr "绕过用户组" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:129 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:133 msgid "Bypass User" msgstr "绕过用户" @@ -101,8 +101,8 @@ msgstr "选择配置文件" msgid "Clear Log" msgstr "清空日志" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:149 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:154 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:153 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:158 msgid "Commonly Used Port" msgstr "常用端口" @@ -126,15 +126,15 @@ msgstr "核心版本" msgid "Cron Expression" msgstr "Cron 表达式" -#: 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:228 msgid "DNS Config" msgstr "DNS 配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230 msgid "DNS Listen" msgstr "DNS 监听" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:227 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241 msgid "DNS Mode" msgstr "DNS 模式" @@ -142,27 +142,27 @@ msgstr "DNS 模式" msgid "Debug Log" msgstr "调试日志" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:507 msgid "Destination IP" msgstr "目标 IP" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:497 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:511 msgid "Destination IP Geo" msgstr "目标 IP(Geo)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:494 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:508 msgid "Destination Port" msgstr "目标端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:146 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:150 msgid "Destination TCP Port to Proxy" msgstr "要代理的 TCP 目标端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:151 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:155 msgid "Destination UDP Port to Proxy" msgstr "要代理的 UDP 目标端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:174 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188 msgid "Device Name" msgstr "设备名称" @@ -173,20 +173,23 @@ msgstr "直连模式" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:67 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:202 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:224 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132 +#: 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:206 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:273 #: 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:348 -#: 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:285 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291 #: 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:544 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45 msgid "Disable" msgstr "禁用" @@ -206,60 +209,64 @@ msgstr "禁用回环检测" msgid "Disable Safe Path Check" msgstr "禁用安全路径检查" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:264 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:82 +msgid "Disable TCP Keep Alive" +msgstr "禁用 TCP Keep Alive" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276 msgid "DoH Prefer HTTP/3" msgstr "DoH 优先 HTTP/3" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:296 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:489 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:308 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:503 msgid "Domain Name" msgstr "域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:496 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:510 msgid "Domain Name Geo" msgstr "域名(Geo)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:491 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505 msgid "Domain Name Keyword" msgstr "域名(关键字)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:492 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506 msgid "Domain Name Regex" msgstr "域名(正则表达式)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:490 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:504 msgid "Domain Name Suffix" msgstr "域名(后缀)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168 msgid "Edit Authentications" 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:222 msgid "Edit DNS Hijacks" msgstr "编辑 DNS 劫持" -#: 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:254 msgid "Edit Fake-IP Filters" msgstr "编辑 Fake-IP 过滤列表" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297 msgid "Edit Hosts" msgstr "编辑 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:327 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:339 msgid "Edit Nameserver Policies" msgstr "编辑 DNS 服务器查询策略" -#: 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:316 msgid "Edit Nameservers" msgstr "编辑 DNS 服务器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:405 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419 msgid "Edit Rule Providers" msgstr "编辑规则提供者" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:474 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488 msgid "Edit Rules" msgstr "编辑规则" @@ -276,34 +283,35 @@ msgstr "编辑器" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:68 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:119 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:162 -#: 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:203 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:225 -#: 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:262 +#: 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:133 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207 +#: 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:239 #: 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:274 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:312 -#: 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:345 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:349 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355 +#: 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:292 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347 +#: 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:361 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413 -#: 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:545 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:373 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399 +#: 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:496 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:559 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33 msgid "Enable" 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:213 msgid "Endpoint Independent NAT" msgstr "独立于端点的 NAT" @@ -311,23 +319,23 @@ msgstr "独立于端点的 NAT" msgid "Expire At" msgstr "到期时间" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:90 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:104 msgid "External Control Config" msgstr "外部控制配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:264 msgid "Fake-IP Cache" msgstr "Fake-IP 缓存" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258 msgid "Fake-IP Filter Mode" msgstr "Fake-IP 过滤模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:57 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:61 msgid "Fake-IP Ping Hijack" msgstr "Fake-IP Ping 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246 msgid "Fake-IP Range" msgstr "Fake-IP 范围" @@ -335,15 +343,15 @@ msgstr "Fake-IP 范围" msgid "Fast Reload" msgstr "快速重载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:452 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466 msgid "File Format" msgstr "文件格式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:446 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460 msgid "File Path" msgstr "文件路径" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:440 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454 msgid "File Size Limit" msgstr "文件大小限制" @@ -364,15 +372,15 @@ msgstr "IPv6 保留地址" msgid "File:" msgstr "文件:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378 msgid "Force Sniff Domain Name" msgstr "强制嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 msgid "GSO" msgstr "通用分段卸载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:209 msgid "GSO Max Size" msgstr "分段最大长度" @@ -384,42 +392,46 @@ msgstr "全局配置" msgid "Generate & Download" msgstr "生成并下载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:523 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537 msgid "GeoData Loader" msgstr "GeoData 加载器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:517 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531 msgid "GeoIP Format" msgstr "GeoIP 格式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552 msgid "GeoIP(ASN) Url" msgstr "GeoIP(ASN) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:535 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549 msgid "GeoIP(DAT) Url" msgstr "GeoIP(DAT) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:532 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546 msgid "GeoIP(MMDB) Url" msgstr "GeoIP(MMDB) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543 msgid "GeoSite Url" msgstr "GeoSite 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555 msgid "GeoX Auto Update" msgstr "定时更新GeoX文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:515 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529 msgid "GeoX Config" msgstr "GeoX 配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:561 msgid "GeoX Update Interval" msgstr "GeoX 文件更新间隔" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:96 +msgid "Global Client Fingerprint" +msgstr "全局客户端指纹" + #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:42 msgid "Global Mode" msgstr "全局模式" @@ -428,7 +440,7 @@ msgstr "全局模式" msgid "Grant access to nikki procedures" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143 msgid "HTTP Port" msgstr "HTTP 端口" @@ -436,44 +448,44 @@ msgstr "HTTP 端口" msgid "How To Use" msgstr "使用说明" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:299 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311 msgid "IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:49 msgid "IPv4 DNS Hijack" msgstr "IPv4 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:51 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:55 msgid "IPv4 Proxy" msgstr "IPv4 代理" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:64 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:221 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235 msgid "IPv6" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:48 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:52 msgid "IPv6 DNS Hijack" msgstr "IPv6 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:54 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:58 msgid "IPv6 Proxy" msgstr "IPv6 代理" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385 msgid "Ignore Sniff Domain Name" msgstr "忽略嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135 msgid "Inbound Config" msgstr "入站配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:113 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:117 msgid "Interface" msgstr "接口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:63 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:67 msgid "Lan Proxy" msgstr "局域网代理" @@ -490,7 +502,7 @@ msgstr "日志" msgid "Log Level" msgstr "日志级别" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:185 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199 msgid "MTU" msgstr "最大传输单元" @@ -498,16 +510,16 @@ msgstr "最大传输单元" msgid "Match Process" msgstr "匹配进程" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:338 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:499 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:350 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:513 msgid "Matcher" msgstr "匹配" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:527 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541 msgid "Memory Conservative Loader" 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:151 msgid "Mixed Port" msgstr "混合端口" @@ -515,7 +527,7 @@ msgstr "混合端口" msgid "Mixin Config" msgstr "混入配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:565 msgid "Mixin File Content" msgstr "混入文件内容" @@ -524,16 +536,16 @@ msgid "Mixin Option" msgstr "混入选项" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:68 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:72 msgid "Mode" msgstr "模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433 msgid "Name" msgstr "名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:322 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:341 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:353 msgid "Nameserver" msgstr "DNS 服务器" @@ -542,12 +554,12 @@ msgstr "DNS 服务器" msgid "Nikki" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:523 msgid "No Resolve" 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:502 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:516 msgid "Node" msgstr "节点" @@ -563,55 +575,55 @@ msgstr "打开面板" msgid "Outbound Interface" msgstr "出站接口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165 msgid "Overwrite Authentication" msgstr "覆盖身份验证" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:219 msgid "Overwrite DNS Hijack" msgstr "覆盖 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:397 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411 msgid "Overwrite Destination" msgstr "将嗅探结果作为连接目标" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251 msgid "Overwrite Fake-IP Filter" msgstr "覆盖 Fake-IP 过滤列表" -#: 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:375 msgid "Overwrite Force Sniff Domain Name" msgstr "覆盖强制嗅探的域名" -#: 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:294 msgid "Overwrite Hosts" msgstr "覆盖 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382 msgid "Overwrite Ignore Sniff Domain Name" 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:313 msgid "Overwrite Nameserver" msgstr "覆盖 DNS 服务器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:336 msgid "Overwrite Nameserver Policy" msgstr "覆盖 DNS 服务器查询策略" -#: 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:389 msgid "Overwrite Sniff By Protocol" 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:182 msgid "Password" msgstr "密码" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567 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:394 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408 msgid "Port" msgstr "端口" @@ -619,7 +631,7 @@ msgstr "端口" msgid "Prefer" msgstr "优先" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:495 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509 msgid "Process Name" msgstr "进程名" @@ -632,7 +644,7 @@ msgstr "配置文件" msgid "Profile for Startup" msgstr "用于启动的配置文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:388 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402 msgid "Protocol" msgstr "协议" @@ -645,11 +657,15 @@ msgstr "代理配置" msgid "Proxy Provider:" msgstr "代理提供者:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:37 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:98 +msgid "Random" +msgstr "随机" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:39 msgid "Redirect Mode" msgstr "Redirect 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 msgid "Redirect Port" msgstr "Redirect 端口" @@ -661,7 +677,7 @@ msgstr "重载服务" msgid "Remote" msgstr "远程" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270 msgid "Respect Rules" msgstr "遵循分流规则" @@ -669,11 +685,11 @@ msgstr "遵循分流规则" msgid "Restart Service" msgstr "重启服务" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:60 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:64 msgid "Router Proxy" 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:414 msgid "Rule Config" msgstr "规则配置" @@ -685,7 +701,7 @@ msgstr "规则模式" msgid "Rule Provider:" msgstr "规则提供者:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:502 msgid "Rule Set" msgstr "规则集" @@ -693,11 +709,11 @@ msgstr "规则集" msgid "Running" msgstr "运行中" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147 msgid "SOCKS Port" msgstr "SOCKS 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:115 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129 msgid "Save Proxy Selection" msgstr "保存节点/策略组选择" @@ -710,27 +726,27 @@ msgstr "定时重启" msgid "Scroll To Bottom" msgstr "滚动到底部" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392 msgid "Sniff By Protocol" msgstr "按协议嗅探" -#: 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:369 msgid "Sniff Pure IP" msgstr "嗅探纯 IP 连接" -#: 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:363 msgid "Sniff Redir-Host" msgstr "嗅探 Redir-Host 流量" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:343 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355 msgid "Sniffer Config" msgstr "嗅探器配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:178 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192 msgid "Stack" msgstr "栈" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:526 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540 msgid "Standard Loader" msgstr "标准加载器" @@ -763,11 +779,11 @@ msgstr "订阅:" msgid "TCP Concurrent" msgstr "TCP 并发" -#: 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:88 msgid "TCP Keep Alive Idle" msgstr "TCP Keep Alive 空闲" -#: 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:92 msgid "TCP Keep Alive Interval" msgstr "TCP Keep Alive 间隔" @@ -775,21 +791,21 @@ msgstr "TCP Keep Alive 间隔" msgid "TCP Proxy Mode" msgstr "TCP 代理模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:42 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:40 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:46 msgid "TPROXY Mode" msgstr "TPROXY 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:160 msgid "TPROXY Port" msgstr "TPROXY 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:172 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186 msgid "TUN Config" msgstr "TUN 配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:39 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:41 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:47 msgid "TUN Mode" msgstr "TUN 模式" @@ -809,25 +825,25 @@ msgstr "透明代理" msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:315 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:486 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:327 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500 msgid "Type" msgstr "类型" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:41 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43 msgid "UDP Proxy Mode" msgstr "UDP 代理模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:96 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110 msgid "UI Name" msgstr "UI 名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:92 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:106 msgid "UI Path" msgstr "UI 路径" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:99 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:113 msgid "UI Url" msgstr "UI 下载地址" @@ -843,46 +859,48 @@ msgstr "统一延迟" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:72 #: 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:84 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:88 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:93 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:90 +#: 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 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:100 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:108 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:113 -#: 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:125 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111 +#: 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:122 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127 #: 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:135 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:175 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:187 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:191 -#: 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:145 +#: 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:153 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:162 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218 -#: 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:228 -#: 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:205 +#: 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:215 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232 +#: 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:242 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:260 #: 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:272 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:353 +#: 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:290 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:359 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:519 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:525 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:530 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365 +#: 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:533 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:536 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:563 msgid "Unmodified" msgstr "不修改" @@ -898,7 +916,7 @@ msgstr "更新时间" msgid "Update Dashboard" msgstr "更新面板" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 msgid "Update Interval" msgstr "更新间隔" @@ -906,15 +924,15 @@ msgstr "更新间隔" msgid "Upload Profile" 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:442 msgid "Url" msgstr "下载地址" -#: 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:288 msgid "Use Hosts" msgstr "使用 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282 msgid "Use System Hosts" msgstr "使用系统的 Hosts" @@ -926,6 +944,6 @@ msgstr "已使用" msgid "User Agent" msgstr "用户代理(UA)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179 msgid "Username" msgstr "用户名" diff --git a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua index 08f7908f0..0cb47f0af 100644 --- a/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua +++ b/luci-app-ssr-plus/luasrc/model/cbi/shadowsocksr/advanced.lua @@ -66,7 +66,7 @@ o:value("https://fastly.jsdelivr.net/gh/gaoyifan/china-operator-ip@ip-lists/chin o.default = "https://ispip.clang.cn/all_cn.txt" o = s:option(Flag, "netflix_enable", translate("Enable Netflix Mode")) -o.description = translate("Disable shunt mode before, Please must first disable shunt node.") +o.description = translate("When disabled shunt mode, will same time stopped shunt service.") o.rmempty = false o = s:option(Value, "nfip_url", translate("nfip_url")) diff --git a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po index 8c6c72a95..55d73aa19 100644 --- a/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po +++ b/luci-app-ssr-plus/po/zh_Hans/ssr-plus.po @@ -1209,8 +1209,8 @@ msgstr "应用" msgid "Enable Netflix Mode" msgstr "启用 Netflix 分流模式" -msgid "Disable shunt mode before, Please must first disable shunt node." -msgstr "停用分流模式之前,请务必先停用分流节点。" +msgid "When disabled shunt mode, will same time stopped shunt service." +msgstr "当停用分流模式时,将同时停止分流服务。" msgid "TUIC User UUID" msgstr "TUIC 用户 uuid" diff --git a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh index 66d2b255a..46e8c1107 100755 --- a/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh +++ b/luci-app-ssr-plus/root/usr/share/shadowsocksr/gfw2ipset.sh @@ -1,5 +1,7 @@ #!/bin/sh + . $IPKG_INSTROOT/etc/init.d/shadowsocksr + netflix() { if [ -f "$TMP_DNSMASQ_PATH/gfw_list.conf" ]; then for line in $(cat /etc/ssrplus/netflix.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done @@ -14,7 +16,14 @@ else cp -rf /etc/ssrplus/gfw_list.conf $TMP_DNSMASQ_PATH/ cp -rf /etc/ssrplus/gfw_base.conf $TMP_DNSMASQ_PATH/ fi -case "$(uci_get_by_type global netflix_server nil)" in +if [ "$(uci_get_by_type global netflix_enable 0)" == "1" ]; then + # 只有开启 NetFlix分流 才需要取值 + SHUNT_SERVER=$(uci_get_by_type global netflix_server nil) +else + # 没有开启 设置为 nil + SHUNT_SERVER=nil +fi +case "$SHUNT_SERVER" in nil) rm -f $TMP_DNSMASQ_PATH/netflix_forward.conf ;; @@ -25,12 +34,14 @@ $(uci_get_by_type global global_server nil) | $switch_server | same) netflix $tmp_shunt_dns_port ;; esac -for line in $(cat /etc/ssrplus/black.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done -for line in $(cat /etc/ssrplus/black.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done -for line in $(cat /etc/ssrplus/white.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done -for line in $(cat /etc/ssrplus/white.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done -for line in $(cat /etc/ssrplus/deny.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done -for line in $(cat /etc/ssrplus/deny.list); do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done +# 此处使用while方式读取 防止 /etc/ssrplus/ 目录下的 black.list white.list deny.list 等2个或多个文件一行中存在空格 比如:# abc.com 而丢失:server +while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done < /etc/ssrplus/black.list +while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done < /etc/ssrplus/black.list +while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done < /etc/ssrplus/white.list +while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done < /etc/ssrplus/white.list +while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_list.conf; done < /etc/ssrplus/deny.list +while read line; do sed -i "/$line/d" $TMP_DNSMASQ_PATH/gfw_base.conf; done < /etc/ssrplus/deny.list +# 此处直接使用 cat 因为有 sed '/#/d' 删除了 数据 cat /etc/ssrplus/black.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1#$dns_port\nipset=\/&\/blacklist/" >$TMP_DNSMASQ_PATH/blacklist_forward.conf cat /etc/ssrplus/white.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/server=\/&\/127.0.0.1\nipset=\/&\/whitelist/" >$TMP_DNSMASQ_PATH/whitelist_forward.conf cat /etc/ssrplus/deny.list | sed '/^$/d' | sed '/#/d' | sed "/.*/s/.*/address=\/&\//" >$TMP_DNSMASQ_PATH/denylist.conf @@ -45,3 +56,4 @@ if [ "$(uci_get_by_type global adblock 0)" == "1" ]; then else rm -f $TMP_DNSMASQ_PATH/ad.conf fi + diff --git a/nikki/Makefile b/nikki/Makefile index 02a7c5538..aca6ae041 100644 --- a/nikki/Makefile +++ b/nikki/Makefile @@ -5,9 +5,9 @@ PKG_RELEASE:=1 PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git -PKG_SOURCE_DATE:=2025-03-03 -PKG_SOURCE_VERSION:=8bc6f77e36edee37f1360d69bee706ce535be0fa -PKG_MIRROR_HASH:=de86917e8f24c8e21739bf5274127092df06bd7a79e7908bb978a8f99d08ec10 +PKG_SOURCE_DATE:=2025-03-10 +PKG_SOURCE_VERSION:=c0de3c0e42dcbd7f6176143b00741f7774b70a08 +PKG_MIRROR_HASH:=1131cc9abde1cfbc0c5f5c228e835e2d5ce630565db661b7297f286c019da950 PKG_LICENSE:=GPL3.0+ PKG_MAINTAINER:=Joseph Mory @@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=golang/host PKG_BUILD_PARALLEL:=1 PKG_BUILD_FLAGS:=no-mips16 -PKG_BUILD_VERSION:=alpha-8bc6f77 +PKG_BUILD_VERSION:=alpha-c0de3c0 PKG_BUILD_TIME:=$(shell date -u -Iseconds) GO_PKG:=github.com/metacubex/mihomo diff --git a/nikki/files/nikki.init b/nikki/files/nikki.init index 85647e8b3..fbb91171d 100644 --- a/nikki/files/nikki.init +++ b/nikki/files/nikki.init @@ -160,8 +160,8 @@ service_started() { ## proxy config ### transparent proxy local tcp_transparent_proxy_mode udp_transparent_proxy_mode ipv4_proxy ipv6_proxy - config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode" "redirect" - config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode" "tun" + config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode" + config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode" config_get_bool ipv4_proxy "proxy" "ipv4_proxy" 0 config_get_bool ipv6_proxy "proxy" "ipv6_proxy" 0 # prepare diff --git a/nikki/files/ucode/mixin.uc b/nikki/files/ucode/mixin.uc index 03ecfb3af..427a24467 100644 --- a/nikki/files/ucode/mixin.uc +++ b/nikki/files/ucode/mixin.uc @@ -18,8 +18,10 @@ config['interface-name'] = ubus.call('network.interface', 'status', {'interface' config['ipv6'] = uci_bool(uci.get('nikki', 'mixin', 'ipv6')); config['unified-delay'] = uci_bool(uci.get('nikki', 'mixin', 'unify_delay')); config['tcp-concurrent'] = uci_bool(uci.get('nikki', 'mixin', 'tcp_concurrent')); +config['disable-keep-alive'] = uci_bool(uci.get('nikki', 'mixin', 'disable_tcp_keep_alive')); config['keep-alive-idle'] = uci_int(uci.get('nikki', 'mixin', 'tcp_keep_alive_idle')); config['keep-alive-interval'] = uci_int(uci.get('nikki', 'mixin', 'tcp_keep_alive_interval')); +config['global-client-fingerprint'] = uci.get('nikki', 'mixin', 'global_client_fingerprint'); config['external-ui'] = uci.get('nikki', 'mixin', 'ui_path'); config['external-ui-name'] = uci.get('nikki', 'mixin', 'ui_name');