diff --git a/luci-app-nikki/Makefile b/luci-app-nikki/Makefile index c1a678cc8..7d0e8c107 100644 --- a/luci-app-nikki/Makefile +++ b/luci-app-nikki/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=1.19.5 +PKG_VERSION:=1.20.0 LUCI_TITLE:=LuCI Support for nikki LUCI_DEPENDS:=+luci-base +nikki diff --git a/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js b/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js index 7dc93de67..3ce710484 100644 --- a/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js +++ b/luci-app-nikki/htdocs/luci-static/resources/tools/nikki.js @@ -25,6 +25,12 @@ const callNikkiVersion = rpc.declare({ expect: { '': {} } }); +const callNikkiProfile = rpc.declare({ + object: 'luci.nikki', + method: 'profile', + expect: { '': {} } +}); + const callNikkiUpdateSubscription = rpc.declare({ object: 'luci.nikki', method: 'update_subscription', @@ -84,13 +90,18 @@ return baseclass.extend({ return callNikkiVersion(); }, + profile: function () { + return callNikkiProfile(); + }, + updateSubscription: function (section_id) { return callNikkiUpdateSubscription(section_id); }, api: async function (method, path, query, body) { - const apiPort = uci.get('nikki', 'mixin', 'api_port'); - const apiSecret = uci.get('nikki', 'mixin', 'api_secret'); + const apiListen = uci.get('nikki', 'mixin', 'api_listen'); + const apiSecret = uci.get('nikki', 'mixin', 'api_secret') ?? ''; + const apiPort = apiListen.substring(apiListen.lastIndexOf(':') + 1); const url = `http://${window.location.hostname}:${apiPort}${path}`; return request.request(url, { method: method, @@ -100,10 +111,11 @@ return baseclass.extend({ }) }, - openDashboard: function () { + openDashboard: async function () { const uiName = uci.get('nikki', 'mixin', 'ui_name'); - const apiPort = uci.get('nikki', 'mixin', 'api_port'); - const apiSecret = encodeURIComponent(uci.get('nikki', 'mixin', 'api_secret')); + const apiListen = uci.get('nikki', 'mixin', 'api_listen'); + const apiSecret = encodeURIComponent(uci.get('nikki', 'mixin', 'api_secret') ?? ''); + const apiPort = apiListen.substring(apiListen.lastIndexOf(':') + 1); const params = { host: window.location.hostname, hostname: window.location.hostname, 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 22843df45..8f3d11f2a 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 @@ -18,103 +18,104 @@ return view.extend({ m = new form.Map('nikki'); - s = m.section(form.NamedSection, 'config', 'config', _('Mixin Config')); - - o = s.option(form.Flag, 'mixin', _('Enable')); - o.rmempty = false; - s = m.section(form.NamedSection, 'mixin', 'mixin', _('Mixin Option')); s.tab('general', _('General Config')); - o = s.taboption('general', form.ListValue, 'log_level', '*' + ' ' + _('Log Level')); + o = s.taboption('general', form.ListValue, 'log_level', _('Log Level')); + o.optional = true; o.value('silent'); o.value('error'); o.value('warning'); o.value('info'); o.value('debug'); - o = s.taboption('general', form.ListValue, 'mode', '*' + ' ' + _('Mode')); + o = s.taboption('general', form.ListValue, 'mode', _('Mode')); + o.optional = true; o.value('global', _('Global Mode')); o.value('rule', _('Rule Mode')); o.value('direct', _('Direct Mode')); - o = s.taboption('general', form.ListValue, 'match_process', '*' + ' ' + _('Match Process')); - o.value('strict', _('Auto')); - o.value('always', _('Enable')); - o.value('off', _('Disable')); + o = s.taboption('general', form.ListValue, 'match_process', _('Match Process')); + o.optional = true; + o.value('off'); + o.value('strict'); + o.value('always'); - o = s.taboption('general', widgets.NetworkSelect, 'outbound_interface', '*' + ' ' + _('Outbound Interface')); + o = s.taboption('general', widgets.NetworkSelect, 'outbound_interface', _('Outbound Interface')); o.optional = true; - o = s.taboption('general', form.Flag, 'ipv6', '*' + ' ' + _('IPv6')); - o.rmempty = false; + o = s.taboption('general', form.ListValue, 'ipv6', _('IPv6')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('general', form.Flag, 'unify_delay', _('Unify Delay')); - o.rmempty = false; + o = s.taboption('general', form.ListValue, 'unify_delay', _('Unify Delay')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('general', form.Flag, 'tcp_concurrent', _('TCP Concurrent')); - o.rmempty = false; + o = s.taboption('general', form.ListValue, 'tcp_concurrent', _('TCP Concurrent')); + o.optional = true; + 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 = '600'; o = s.taboption('general', form.Value, 'tcp_keep_alive_interval', _('TCP Keep Alive Interval')); o.datatype = 'uinteger'; - o.placeholder = '15'; s.tab('external_control', _('External Control Config')); o = s.taboption('external_control', form.Value, 'ui_path', '*' + ' ' + _('UI Path')); o.rmempty = false; - o = s.taboption('external_control', form.Value, 'ui_name', '*' + ' ' + _('UI Name')); + o = s.taboption('external_control', form.Value, 'ui_name', _('UI Name')); - o = s.taboption('external_control', form.Value, 'ui_url', '*' + ' ' + _('UI Url')); - o.rmempty = false; + o = s.taboption('external_control', form.Value, 'ui_url', _('UI Url')); o.value('https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip', 'Zashboard'); o.value('https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip', 'MetaCubeXD'); o.value('https://github.com/MetaCubeX/Yacd-meta/archive/refs/heads/gh-pages.zip', 'YACD'); o.value('https://github.com/MetaCubeX/Razord-meta/archive/refs/heads/gh-pages.zip', 'Razord'); - o = s.taboption('external_control', form.Value, 'api_port', '*' + ' ' + _('API Port')); - o.datatype = 'port'; - o.placeholder = '9090'; + o = s.taboption('external_control', form.Value, 'api_listen', '*' + ' ' + _('API Listen')); + o.datatype = 'ipaddrport(1)'; + o.rmempty = false; - o = s.taboption('external_control', form.Value, 'api_secret', '*' + ' ' + _('API Secret')); + o = s.taboption('external_control', form.Value, 'api_secret', _('API Secret')); o.password = true; - o.rmempty = false; - o = s.taboption('external_control', form.Flag, 'selection_cache', '*' + ' ' + _('Save Proxy Selection')); - o.rmempty = false; + o = s.taboption('external_control', form.ListValue, 'selection_cache', _('Save Proxy Selection')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); s.tab('inbound', _('Inbound Config')); - o = s.taboption('inbound', form.Flag, 'allow_lan', '*' + ' ' + _('Allow Lan')); - o.rmempty = false; + o = s.taboption('inbound', form.ListValue, 'allow_lan', _('Allow Lan')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('inbound', form.Value, 'http_port', '*' + ' ' + _('HTTP Port')); + o = s.taboption('inbound', form.Value, 'http_port', _('HTTP Port')); o.datatype = 'port'; - o.placeholder = '8080'; - o = s.taboption('inbound', form.Value, 'socks_port', '*' + ' ' + _('SOCKS Port')); + o = s.taboption('inbound', form.Value, 'socks_port', _('SOCKS Port')); o.datatype = 'port'; - o.placeholder = '1080'; - o = s.taboption('inbound', form.Value, 'mixed_port', '*' + ' ' + _('Mixed Port')); + o = s.taboption('inbound', form.Value, 'mixed_port', _('Mixed Port')); o.datatype = 'port'; - o.placeholder = '7890'; o = s.taboption('inbound', form.Value, 'redir_port', '*' + ' ' + _('Redirect Port')); o.datatype = 'port'; - o.placeholder = '7891'; + o.rmempty = false; o = s.taboption('inbound', form.Value, 'tproxy_port', '*' + ' ' + _('TPROXY Port')); o.datatype = 'port'; - o.placeholder = '7892'; + o.rmempty = false; - o = s.taboption('inbound', form.Flag, 'authentication', '*' + ' ' + _('Overwrite Authentication')); + o = s.taboption('inbound', form.Flag, 'authentication', _('Overwrite Authentication')); o.rmempty = false; o = s.taboption('inbound', form.SectionValue, '_authentications', form.TableSection, 'authentication', _('Edit Authentications')); @@ -137,90 +138,97 @@ return view.extend({ s.tab('tun', _('TUN Config')); - o = s.taboption('tun', form.Value, 'tun_device', '*' + ' ' + _('Device')); + o = s.taboption('tun', form.Value, 'tun_device', '*' + ' ' + _('Device Name')); o.rmempty = false; - o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack')); + o = s.taboption('tun', form.ListValue, 'tun_stack', _('Stack')); + o.optional = true; o.value('system', 'System'); o.value('gvisor', 'gVisor'); o.value('mixed', 'Mixed'); - o = s.taboption('tun', form.Value, 'tun_mtu', '*' + ' ' + _('MTU')); + o = s.taboption('tun', form.Value, 'tun_mtu', _('MTU')); o.datatype = 'uinteger'; - o.placeholder = '9000'; - o = s.taboption('tun', form.Flag, 'tun_gso', '*' + ' ' + _('GSO')); - o.rmempty = false; + o = s.taboption('tun', form.ListValue, 'tun_gso', _('GSO')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('tun', form.Value, 'tun_gso_max_size', '*' + ' ' + _('GSO Max Size')); + o = s.taboption('tun', form.Value, 'tun_gso_max_size', _('GSO Max Size')); o.datatype = 'uinteger'; - o.placeholder = '65536'; + + o = s.taboption('tun', form.ListValue, 'tun_endpoint_independent_nat', _('Endpoint Independent NAT')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); + + o = s.taboption('tun', form.Flag, 'tun_dns_hijack', _('Overwrite DNS Hijack')); + o.rmempty = false; + + o = s.taboption('tun', form.DynamicList, 'tun_dns_hijacks', _('Edit DNS Hijacks')); o.retain = true; - o.depends('tun_gso', '1'); - - o = s.taboption('tun', form.Flag, 'tun_endpoint_independent_nat', '*' + ' ' + _('Endpoint Independent NAT')); - o.rmempty = false; - - o = s.taboption('tun', form.Flag, 'tun_dns_hijack', '*' + ' ' + _('Overwrite DNS Hijack')); - o.rmempty = false; - - o = s.taboption('tun', form.DynamicList, 'tun_dns_hijacks', '*' + ' ' + _('Edit DNS Hijacks')); - o.retain = true; - o.rmempty = false; o.depends('tun_dns_hijack', '1'); o.value('tcp://any:53'); o.value('udp://any:53'); s.tab('dns', _('DNS Config')); - o = s.taboption('dns', form.Value, 'dns_port', '*' + ' ' + _('DNS Port')); - o.datatype = 'port'; - o.placeholder = '1053'; - - o = s.taboption('dns', form.Flag, 'dns_ipv6', '*' + ' ' + _('IPv6')); + o = s.taboption('dns', form.Value, 'dns_listen', '*' + ' ' + _('DNS Listen')); + o.datatype = 'ipaddrport(1)'; o.rmempty = false; + o = s.taboption('dns', form.ListValue, 'dns_ipv6', _('IPv6')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); + o = s.taboption('dns', form.ListValue, 'dns_mode', '*' + ' ' + _('DNS Mode')); - o.value('fake-ip', 'Fake-IP'); o.value('redir-host', 'Redir-Host'); + o.value('fake-ip', 'Fake-IP'); o = s.taboption('dns', form.Value, 'fake_ip_range', '*' + ' ' + _('Fake-IP Range')); o.datatype = 'cidr4'; - o.placeholder = '198.18.0.1/16'; 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.retain = true; o.rmempty = false; - o.depends('dns_mode', 'fake-ip'); o = s.taboption('dns', form.DynamicList, 'fake_ip_filters', _('Edit Fake-IP Filters')); o.retain = true; - o.depends({ 'dns_mode': 'fake-ip', 'fake_ip_filter': '1' }); + o.depends('fake_ip_filter', '1'); o = s.taboption('dns', form.ListValue, 'fake_ip_filter_mode', _('Fake-IP Filter Mode')); - o.retain = true; + o.optional = true; o.value('blacklist', _('Block Mode')); o.value('whitelist', _('Allow Mode')); - o.depends({ 'dns_mode': 'fake-ip', 'fake_ip_filter': '1' }); - o = s.taboption('dns', form.Flag, 'fake_ip_cache', '*' + ' ' + _('Fake-IP Cache')); - o.retain = true; - o.rmempty = false; - o.depends('dns_mode', 'fake-ip'); + o = s.taboption('dns', form.ListValue, 'fake_ip_cache', _('Fake-IP Cache')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('dns', form.Flag, 'dns_respect_rules', _('Respect Rules')); - o.rmempty = false; + o = s.taboption('dns', form.ListValue, 'dns_respect_rules', _('Respect Rules')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('dns', form.Flag, 'dns_doh_prefer_http3', _('DoH Prefer HTTP/3')); - o.rmempty = false; + o = s.taboption('dns', form.ListValue, 'dns_doh_prefer_http3', _('DoH Prefer HTTP/3')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('dns', form.Flag, 'dns_system_hosts', _('Use System Hosts')); - o.rmempty = false; + o = s.taboption('dns', form.ListValue, 'dns_system_hosts', _('Use System Hosts')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('dns', form.Flag, 'dns_hosts', _('Use Hosts')); - o.rmempty = false; + o = s.taboption('dns', form.ListValue, 'dns_hosts', _('Use Hosts')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); o = s.taboption('dns', form.Flag, 'hosts', _('Overwrite Hosts')); o.rmempty = false; @@ -285,17 +293,20 @@ return view.extend({ s.tab('sniffer', _('Sniffer Config')); - o = s.taboption('sniffer', form.Flag, 'sniffer', _('Enable')); - o.rmempty = false; + o = s.taboption('sniffer', form.ListValue, 'sniffer', _('Enable')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('sniffer', form.Flag, 'sniffer_sniff_dns_mapping', _('Sniff Redir-Host')); - o.rmempty = false; + o = s.taboption('sniffer', form.ListValue, 'sniffer_sniff_dns_mapping', _('Sniff Redir-Host')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); - o = s.taboption('sniffer', form.Flag, 'sniffer_sniff_pure_ip', _('Sniff Pure IP')); - o.rmempty = false; - - o = s.taboption('sniffer', form.Flag, 'sniffer_overwrite_destination', _('Overwrite Destination')); - o.rmempty = false; + o = s.taboption('sniffer', form.ListValue, 'sniffer_sniff_pure_ip', _('Sniff Pure IP')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); o = s.taboption('sniffer', form.Flag, 'sniffer_force_domain_name', _('Overwrite Force Sniff Domain Name')); o.rmempty = false; @@ -336,7 +347,7 @@ return view.extend({ s.tab('rule', _('Rule Config')); - o = s.taboption('rule', form.Flag, 'rule_provider', '*' + ' ' + _('Append Rule Provider')); + o = s.taboption('rule', form.Flag, 'rule_provider', _('Append Rule Provider')); o.rmempty = false; o = s.taboption('rule', form.SectionValue, '_rule_providers', form.GridSection, 'rule_provider', _('Edit Rule Providers')); @@ -405,7 +416,7 @@ return view.extend({ so.modalonly = true; so.depends('type', 'http'); - o = s.taboption('rule', form.Flag, 'rule', '*' + ' ' + _('Append Rule')); + o = s.taboption('rule', form.Flag, 'rule', _('Append Rule')); o.rmempty = false; o = s.taboption('rule', form.SectionValue, '_rules', form.TableSection, 'rule', _('Edit Rules')); @@ -421,8 +432,7 @@ return view.extend({ so.rmempty = false; so = o.subsection.option(form.Value, 'type', _('Type')); - so.optional = true; - so.rmempty = true; + so.rmempty = false; so.value('RULE-SET', _('Rule Set')); so.value('DOMAIN', _('Domain Name')); so.value('DOMAIN-SUFFIX', _('Domain Name Suffix')); @@ -453,37 +463,34 @@ return view.extend({ s.tab('geox', _('GeoX Config')); o = s.taboption('geox', form.ListValue, 'geoip_format', _('GeoIP Format')); + o.optional = true; o.value('dat', 'DAT'); o.value('mmdb', 'MMDB'); o = s.taboption('geox', form.ListValue, 'geodata_loader', _('GeoData Loader')); + o.optional = true; o.value('standard', _('Standard Loader')); o.value('memconservative', _('Memory Conservative Loader')); o = s.taboption('geox', form.Value, 'geosite_url', _('GeoSite Url')); - o.rmempty = false; o = s.taboption('geox', form.Value, 'geoip_mmdb_url', _('GeoIP(MMDB) Url')); - o.rmempty = false; o = s.taboption('geox', form.Value, 'geoip_dat_url', _('GeoIP(DAT) Url')); - o.rmempty = false; o = s.taboption('geox', form.Value, 'geoip_asn_url', _('GeoIP(ASN) Url')); - o.rmempty = false; - o = s.taboption('geox', form.Flag, 'geox_auto_update', _('GeoX Auto Update')); - o.rmempty = false; + o = s.taboption('geox', form.ListValue, 'geox_auto_update', _('GeoX Auto Update')); + o.optional = true; + o.value('0', _('Disable')); + o.value('1', _('Enable')); o = s.taboption('geox', form.Value, 'geox_update_interval', _('GeoX Update Interval')); o.datatype = 'uinteger'; - o.placeholder = '24'; - o.retain = true; - o.depends('geox_auto_update', '1'); s.tab('mixin_file_content', _('Mixin File Content')); - o = s.taboption('mixin_file_content', form.Flag, 'mixin_file_content', '*' + ' ' + _('Enable'), _('Please go to the editor tab to edit the file for mixin')); + o = s.taboption('mixin_file_content', form.Flag, 'mixin_file_content', _('Enable'), _('Please go to the editor tab to edit the file for mixin')); o.rmempty = false; return m.render(); diff --git a/luci-app-nikki/po/templates/nikki.pot b/luci-app-nikki/po/templates/nikki.pot index 175f406a0..0d6b4dcb6 100644 --- a/luci-app-nikki/po/templates/nikki.pot +++ b/luci-app-nikki/po/templates/nikki.pot @@ -1,11 +1,11 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:81 -msgid "API Port" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:82 +msgid "API Listen" msgstr "" -#: 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:86 msgid "API Secret" msgstr "" @@ -22,11 +22,11 @@ msgstr "" msgid "All Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:94 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:96 msgid "Allow Lan" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:68 msgid "Allow Mode" msgstr "" @@ -44,23 +44,19 @@ msgstr "" msgid "App Version" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419 msgid "Append Rule" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:350 msgid "Append Rule Provider" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43 -msgid "Auto" -msgstr "" - -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406 msgid "Behavior" msgstr "" -#: 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:205 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69 msgid "Block Mode" msgstr "" @@ -123,31 +119,31 @@ msgstr "" msgid "Cron Expression" 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:175 msgid "DNS Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180 -msgid "DNS Mode" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177 +msgid "DNS Listen" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176 -msgid "DNS Port" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186 +msgid "DNS Mode" msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:93 msgid "Debug Log" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441 msgid "Destination IP" msgstr "" -#: 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:445 msgid "Destination IP Geo" 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:442 msgid "Destination Port" msgstr "" @@ -159,15 +155,31 @@ msgstr "" msgid "Destination UDP Port to Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140 -msgid "Device" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141 +msgid "Device Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:40 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:37 msgid "Direct Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:45 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:50 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:55 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:60 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:91 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:98 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210 +#: 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:220 +#: 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:230 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:303 +#: 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:485 msgid "Disable" msgstr "" @@ -187,60 +199,60 @@ msgstr "" msgid "Disable Safe Path Check" 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:218 msgid "DoH Prefer HTTP/3" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:247 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:437 msgid "Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:444 msgid "Domain Name Geo" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:439 msgid "Domain Name Keyword" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:440 msgid "Domain Name Regex" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438 msgid "Domain Name Suffix" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121 msgid "Edit Authentications" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:164 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:169 msgid "Edit DNS Hijacks" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199 msgid "Edit Fake-IP Filters" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:236 msgid "Edit Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278 msgid "Edit Nameserver Policies" msgstr "" -#: 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:255 msgid "Edit Nameservers" 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:353 msgid "Edit Rule Providers" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422 msgid "Edit Rules" msgstr "" @@ -254,22 +266,37 @@ msgid "Editor" msgstr "" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:95 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:23 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:44 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:351 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:420 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:51 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:56 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:61 +#: 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:99 +#: 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:156 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:164 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184 +#: 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:216 +#: 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:226 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:244 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286 +#: 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:299 +#: 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:309 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:333 +#: 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:430 +#: 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:493 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31 msgid "Enable" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 msgid "Endpoint Independent NAT" msgstr "" @@ -277,23 +304,23 @@ msgstr "" msgid "Expire At" 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:69 msgid "External Control Config" msgstr "" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208 +msgid "Fake-IP Cache" +msgstr "" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 +msgid "Fake-IP Filter Mode" +msgstr "" + #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:55 msgid "Fake-IP Ping Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206 -msgid "Fake-IP Cache" -msgstr "" - -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200 -msgid "Fake-IP Filter Mode" -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:190 msgid "Fake-IP Range" msgstr "" @@ -301,15 +328,15 @@ msgstr "" msgid "Fast Reload" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400 msgid "File Format" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:384 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:394 msgid "File Path" 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:388 msgid "File Size Limit" msgstr "" @@ -330,19 +357,19 @@ msgstr "" msgid "File:" 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:314 msgid "Force Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153 msgid "GSO" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:158 msgid "GSO Max Size" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:28 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:23 msgid "General Config" msgstr "" @@ -350,43 +377,43 @@ msgstr "" msgid "Generate & Download" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 msgid "GeoData Loader" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:456 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465 msgid "GeoIP Format" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:481 msgid "GeoIP(ASN) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 msgid "GeoIP(DAT) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:477 msgid "GeoIP(MMDB) Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:475 msgid "GeoSite Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:476 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:483 msgid "GeoX Auto Update" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:463 msgid "GeoX Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488 msgid "GeoX Update Interval" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:38 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:35 msgid "Global Mode" msgstr "" @@ -394,7 +421,7 @@ msgstr "" msgid "Grant access to nikki procedures" msgstr "" -#: 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:101 msgid "HTTP Port" msgstr "" @@ -402,7 +429,7 @@ msgstr "" msgid "How To Use" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250 msgid "IP" msgstr "" @@ -414,8 +441,8 @@ msgstr "" msgid "IPv4 Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:50 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:48 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181 msgid "IPv6" msgstr "" @@ -427,11 +454,11 @@ msgstr "" msgid "IPv6 Proxy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:310 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:320 msgid "Ignore Sniff Domain 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:94 msgid "Inbound Config" msgstr "" @@ -452,55 +479,54 @@ msgstr "" msgid "Log" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:30 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:25 msgid "Log Level" msgstr "" -#: 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:150 msgid "MTU" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:42 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39 msgid "Match Process" 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:438 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447 msgid "Matcher" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 msgid "Memory Conservative Loader" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107 msgid "Mixed Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:21 #: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:29 msgid "Mixin Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:491 msgid "Mixin File Content" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:26 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:21 msgid "Mixin Option" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:37 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:33 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66 msgid "Mode" 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:367 msgid "Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:266 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285 +#: 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:292 msgid "Nameserver" msgstr "" @@ -509,12 +535,12 @@ msgstr "" msgid "Nikki" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457 msgid "No Resolve" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:381 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:450 msgid "Node" msgstr "" @@ -526,60 +552,59 @@ msgstr "" msgid "Open Dashboard" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:47 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:45 msgid "Outbound Interface" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118 msgid "Overwrite Authentication" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:166 msgid "Overwrite DNS Hijack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:345 msgid "Overwrite Destination" msgstr "" -#: 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:196 msgid "Overwrite Fake-IP Filter" 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:311 msgid "Overwrite Force Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233 msgid "Overwrite Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:317 msgid "Overwrite Ignore Sniff Domain Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252 msgid "Overwrite Nameserver" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275 msgid "Overwrite Nameserver Policy" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 msgid "Overwrite Sniff By Protocol" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135 msgid "Password" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493 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:332 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:342 msgid "Port" msgstr "" @@ -587,7 +612,7 @@ msgstr "" msgid "Prefer" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:443 msgid "Process Name" msgstr "" @@ -600,7 +625,7 @@ msgstr "" msgid "Profile for Startup" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:336 msgid "Protocol" msgstr "" @@ -617,7 +642,7 @@ msgstr "" msgid "Redirect Mode" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:109 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110 msgid "Redirect Port" msgstr "" @@ -629,7 +654,7 @@ msgstr "" msgid "Remote" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213 msgid "Respect Rules" msgstr "" @@ -641,11 +666,11 @@ msgstr "" msgid "Router Proxy" 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:348 msgid "Rule Config" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:36 msgid "Rule Mode" msgstr "" @@ -653,7 +678,7 @@ msgstr "" msgid "Rule Provider:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436 msgid "Rule Set" msgstr "" @@ -661,7 +686,7 @@ msgstr "" msgid "Running" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:101 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:104 msgid "SOCKS Port" msgstr "" @@ -678,27 +703,27 @@ msgstr "" msgid "Scroll To Bottom" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326 msgid "Sniff By Protocol" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306 msgid "Sniff Pure IP" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:301 msgid "Sniff Redir-Host" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294 msgid "Sniffer Config" msgstr "" -#: 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:144 msgid "Stack" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:472 msgid "Standard Loader" msgstr "" @@ -727,15 +752,15 @@ msgstr "" msgid "Subscription:" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:56 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:58 msgid "TCP Concurrent" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:59 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:63 msgid "TCP Keep Alive Idle" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:63 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:66 msgid "TCP Keep Alive Interval" msgstr "" @@ -748,11 +773,11 @@ msgstr "" msgid "TPROXY Mode" msgstr "" -#: 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:114 msgid "TPROXY Port" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139 msgid "TUN Config" msgstr "" @@ -777,9 +802,9 @@ msgstr "" msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424 +#: 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:370 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434 msgid "Type" msgstr "" @@ -787,15 +812,15 @@ msgstr "" msgid "UDP Proxy Mode" 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:74 msgid "UI Name" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:71 msgid "UI Path" msgstr "" -#: 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:76 msgid "UI Url" msgstr "" @@ -815,7 +840,7 @@ msgstr "" msgid "Update Dashboard" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413 msgid "Update Interval" msgstr "" @@ -823,15 +848,15 @@ msgstr "" msgid "Upload Profile" 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:376 msgid "Url" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228 msgid "Use Hosts" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 msgid "Use System Hosts" msgstr "" @@ -843,6 +868,6 @@ msgstr "" msgid "User Agent" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132 msgid "Username" msgstr "" diff --git a/luci-app-nikki/po/zh_Hans/nikki.po b/luci-app-nikki/po/zh_Hans/nikki.po index ac148bc7f..1557a7e5b 100644 --- a/luci-app-nikki/po/zh_Hans/nikki.po +++ b/luci-app-nikki/po/zh_Hans/nikki.po @@ -8,11 +8,11 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:81 -msgid "API Port" -msgstr "API 端口" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:82 +msgid "API Listen" +msgstr "API 监听" -#: 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:86 msgid "API Secret" msgstr "API 密钥" @@ -29,11 +29,11 @@ msgstr "全部模式" msgid "All Port" msgstr "全部端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:94 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:96 msgid "Allow Lan" msgstr "允许局域网访问" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:68 msgid "Allow Mode" msgstr "白名单模式" @@ -51,23 +51,19 @@ msgstr "插件日志" msgid "App Version" msgstr "插件版本" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419 msgid "Append Rule" msgstr "追加规则" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:350 msgid "Append Rule Provider" msgstr "追加规则提供者" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:43 -msgid "Auto" -msgstr "自动" - -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:396 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:406 msgid "Behavior" msgstr "行为" -#: 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:205 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69 msgid "Block Mode" msgstr "黑名单模式" @@ -130,31 +126,31 @@ msgstr "核心版本" msgid "Cron Expression" msgstr "Cron 表达式" -#: 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:175 msgid "DNS Config" msgstr "DNS 配置" -#: 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:177 +msgid "DNS Listen" +msgstr "DNS 监听" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186 msgid "DNS Mode" msgstr "DNS 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176 -msgid "DNS Port" -msgstr "DNS 端口" - #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/log.js:93 msgid "Debug Log" msgstr "调试日志" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:432 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441 msgid "Destination IP" msgstr "目标 IP" -#: 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:445 msgid "Destination IP Geo" msgstr "目标 IP(Geo)" -#: 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:442 msgid "Destination Port" msgstr "目标端口" @@ -166,15 +162,31 @@ msgstr "要代理的 TCP 目标端口" msgid "Destination UDP Port to Proxy" msgstr "要代理的 UDP 目标端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140 -msgid "Device" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141 +msgid "Device Name" msgstr "设备名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:40 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:37 msgid "Direct Mode" msgstr "直连模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:45 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:50 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:55 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:60 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:91 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:98 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210 +#: 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:220 +#: 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:230 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:303 +#: 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:485 msgid "Disable" msgstr "禁用" @@ -194,60 +206,60 @@ msgstr "禁用回环检测" msgid "Disable Safe Path Check" 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:218 msgid "DoH Prefer HTTP/3" msgstr "DoH 优先 HTTP/3" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:247 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:437 msgid "Domain Name" msgstr "域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:435 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:444 msgid "Domain Name Geo" msgstr "域名(Geo)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:430 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:439 msgid "Domain Name Keyword" msgstr "域名(关键字)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:431 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:440 msgid "Domain Name Regex" msgstr "域名(正则表达式)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:429 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:438 msgid "Domain Name Suffix" msgstr "域名(后缀)" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121 msgid "Edit Authentications" msgstr "编辑身份验证" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:164 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:169 msgid "Edit DNS Hijacks" msgstr "编辑 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:196 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199 msgid "Edit Fake-IP Filters" msgstr "编辑 Fake-IP 过滤列表" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:236 msgid "Edit Hosts" msgstr "编辑 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278 msgid "Edit Nameserver Policies" msgstr "编辑 DNS 服务器查询策略" -#: 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:255 msgid "Edit Nameservers" msgstr "编辑 DNS 服务器" -#: 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:353 msgid "Edit Rule Providers" msgstr "编辑规则提供者" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:422 msgid "Edit Rules" msgstr "编辑规则" @@ -261,22 +273,37 @@ msgid "Editor" msgstr "编辑器" #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:95 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:23 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:44 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:256 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:351 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:420 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:51 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:56 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:61 +#: 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:99 +#: 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:156 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:164 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:184 +#: 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:216 +#: 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:226 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:244 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286 +#: 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:299 +#: 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:309 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:333 +#: 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:430 +#: 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:493 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31 msgid "Enable" msgstr "启用" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:171 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 msgid "Endpoint Independent NAT" msgstr "独立于端点的 NAT" @@ -284,23 +311,23 @@ msgstr "独立于端点的 NAT" msgid "Expire At" 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:69 msgid "External Control Config" msgstr "外部控制配置" +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208 +msgid "Fake-IP Cache" +msgstr "Fake-IP 缓存" + +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203 +msgid "Fake-IP Filter Mode" +msgstr "Fake-IP 过滤模式" + #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:55 msgid "Fake-IP Ping Hijack" msgstr "Fake-IP Ping 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206 -msgid "Fake-IP Cache" -msgstr "Fake-IP 缓存" - -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200 -msgid "Fake-IP Filter Mode" -msgstr "Fake-IP 过滤模式" - -#: 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:190 msgid "Fake-IP Range" msgstr "Fake-IP 范围" @@ -308,15 +335,15 @@ msgstr "Fake-IP 范围" msgid "Fast Reload" msgstr "快速重载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400 msgid "File Format" msgstr "文件格式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:384 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:394 msgid "File Path" 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:388 msgid "File Size Limit" msgstr "文件大小限制" @@ -337,19 +364,19 @@ msgstr "IPv6 保留地址" msgid "File:" 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:314 msgid "Force Sniff Domain Name" msgstr "强制嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153 msgid "GSO" msgstr "通用分段卸载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:158 msgid "GSO Max Size" msgstr "分段最大长度" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:28 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:23 msgid "General Config" msgstr "全局配置" @@ -357,43 +384,43 @@ msgstr "全局配置" msgid "Generate & Download" msgstr "生成并下载" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 msgid "GeoData Loader" msgstr "GeoData 加载器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:456 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:465 msgid "GeoIP Format" msgstr "GeoIP 格式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:481 msgid "GeoIP(ASN) Url" msgstr "GeoIP(ASN) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:470 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 msgid "GeoIP(DAT) Url" msgstr "GeoIP(DAT) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:477 msgid "GeoIP(MMDB) Url" msgstr "GeoIP(MMDB) 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:464 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:475 msgid "GeoSite Url" msgstr "GeoSite 下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:476 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:483 msgid "GeoX Auto Update" msgstr "定时更新GeoX文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:463 msgid "GeoX Config" msgstr "GeoX 配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488 msgid "GeoX Update Interval" msgstr "GeoX 文件更新间隔" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:38 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:35 msgid "Global Mode" msgstr "全局模式" @@ -401,7 +428,7 @@ msgstr "全局模式" msgid "Grant access to nikki procedures" msgstr "" -#: 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:101 msgid "HTTP Port" msgstr "HTTP 端口" @@ -409,7 +436,7 @@ msgstr "HTTP 端口" msgid "How To Use" msgstr "使用说明" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:250 msgid "IP" msgstr "" @@ -421,8 +448,8 @@ msgstr "IPv4 DNS 劫持" msgid "IPv4 Proxy" msgstr "IPv4 代理" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:50 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:48 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:181 msgid "IPv6" msgstr "" @@ -434,11 +461,11 @@ msgstr "IPv6 DNS 劫持" msgid "IPv6 Proxy" msgstr "IPv6 代理" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:310 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:320 msgid "Ignore Sniff Domain 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:94 msgid "Inbound Config" msgstr "入站配置" @@ -459,55 +486,54 @@ msgstr "本地" msgid "Log" msgstr "日志" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:30 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:25 msgid "Log Level" msgstr "日志级别" -#: 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:150 msgid "MTU" msgstr "最大传输单元" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:42 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39 msgid "Match Process" 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:438 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447 msgid "Matcher" msgstr "匹配" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:462 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473 msgid "Memory Conservative Loader" msgstr "为内存受限设备优化的加载器" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:105 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107 msgid "Mixed Port" msgstr "混合端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:21 #: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:29 msgid "Mixin Config" msgstr "混入配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:491 msgid "Mixin File Content" msgstr "混入文件内容" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:26 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:21 msgid "Mixin Option" msgstr "混入选项" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:37 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:33 #: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66 msgid "Mode" 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:367 msgid "Name" msgstr "名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:266 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285 +#: 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:292 msgid "Nameserver" msgstr "DNS 服务器" @@ -516,12 +542,12 @@ msgstr "DNS 服务器" msgid "Nikki" msgstr "" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:457 msgid "No Resolve" msgstr "不解析" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:441 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:381 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:450 msgid "Node" msgstr "节点" @@ -533,60 +559,59 @@ msgstr "未在运行" msgid "Open Dashboard" msgstr "打开面板" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:47 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:45 msgid "Outbound Interface" msgstr "出站接口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:117 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:118 msgid "Overwrite Authentication" msgstr "覆盖身份验证" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:166 msgid "Overwrite DNS Hijack" msgstr "覆盖 DNS 劫持" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:345 msgid "Overwrite Destination" msgstr "将嗅探结果作为连接目标" -#: 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:196 msgid "Overwrite Fake-IP Filter" msgstr "覆盖 Fake-IP 过滤列表" -#: 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:311 msgid "Overwrite Force Sniff Domain Name" msgstr "覆盖强制嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:226 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233 msgid "Overwrite Hosts" msgstr "覆盖 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:307 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:317 msgid "Overwrite Ignore Sniff Domain Name" msgstr "覆盖忽略嗅探的域名" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:245 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252 msgid "Overwrite Nameserver" msgstr "覆盖 DNS 服务器" -#: 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:275 msgid "Overwrite Nameserver Policy" msgstr "覆盖 DNS 服务器查询策略" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:323 msgid "Overwrite Sniff By Protocol" msgstr "覆盖按协议嗅探" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135 msgid "Password" msgstr "密码" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:487 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:493 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:332 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:342 msgid "Port" msgstr "端口" @@ -594,7 +619,7 @@ msgstr "端口" msgid "Prefer" msgstr "优先" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:443 msgid "Process Name" msgstr "进程名" @@ -607,7 +632,7 @@ msgstr "配置文件" msgid "Profile for Startup" msgstr "用于启动的配置文件" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:336 msgid "Protocol" msgstr "协议" @@ -624,7 +649,7 @@ msgstr "代理提供者:" msgid "Redirect Mode" msgstr "Redirect 模式" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:109 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110 msgid "Redirect Port" msgstr "Redirect 端口" @@ -636,7 +661,7 @@ msgstr "重载服务" msgid "Remote" msgstr "远程" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213 msgid "Respect Rules" msgstr "遵循分流规则" @@ -648,11 +673,11 @@ msgstr "重启服务" msgid "Router Proxy" 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:348 msgid "Rule Config" msgstr "规则配置" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:36 msgid "Rule Mode" msgstr "规则模式" @@ -660,7 +685,7 @@ msgstr "规则模式" msgid "Rule Provider:" msgstr "规则提供者:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436 msgid "Rule Set" msgstr "规则集" @@ -668,7 +693,7 @@ msgstr "规则集" msgid "Running" msgstr "运行中" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:101 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:104 msgid "SOCKS Port" msgstr "SOCKS 端口" @@ -685,27 +710,27 @@ msgstr "定时重启" msgid "Scroll To Bottom" msgstr "滚动到底部" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:326 msgid "Sniff By Protocol" msgstr "按协议嗅探" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306 msgid "Sniff Pure IP" msgstr "嗅探纯 IP 连接" -#: 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:301 msgid "Sniff Redir-Host" msgstr "嗅探 Redir-Host 流量" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294 msgid "Sniffer Config" msgstr "嗅探器配置" -#: 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:144 msgid "Stack" msgstr "栈" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:472 msgid "Standard Loader" msgstr "标准加载器" @@ -734,15 +759,15 @@ msgstr "订阅链接" msgid "Subscription:" msgstr "订阅:" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:56 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:58 msgid "TCP Concurrent" msgstr "TCP 并发" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:59 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:63 msgid "TCP Keep Alive Idle" msgstr "TCP Keep Alive 空闲" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:63 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:66 msgid "TCP Keep Alive Interval" msgstr "TCP Keep Alive 间隔" @@ -755,11 +780,11 @@ msgstr "TCP 代理模式" msgid "TPROXY Mode" msgstr "TPROXY 模式" -#: 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:114 msgid "TPROXY Port" msgstr "TPROXY 端口" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139 msgid "TUN Config" msgstr "TUN 配置" @@ -784,9 +809,9 @@ msgstr "透明代理" msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360 -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:424 +#: 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:370 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434 msgid "Type" msgstr "类型" @@ -794,15 +819,15 @@ msgstr "类型" msgid "UDP Proxy Mode" msgstr "UDP 代理模式" -#: 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:74 msgid "UI Name" msgstr "UI 名称" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:69 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:71 msgid "UI Path" msgstr "UI 路径" -#: 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:76 msgid "UI Url" msgstr "UI 下载地址" @@ -822,7 +847,7 @@ msgstr "更新时间" msgid "Update Dashboard" msgstr "更新面板" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:413 msgid "Update Interval" msgstr "更新间隔" @@ -830,15 +855,15 @@ msgstr "更新间隔" msgid "Upload Profile" 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:376 msgid "Url" msgstr "下载地址" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228 msgid "Use Hosts" msgstr "使用 Hosts" -#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220 +#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223 msgid "Use System Hosts" msgstr "使用系统的 Hosts" @@ -850,6 +875,6 @@ msgstr "已使用" msgid "User Agent" msgstr "用户代理(UA)" -#: 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:132 msgid "Username" msgstr "用户名" diff --git a/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki b/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki index 4099775d6..d9fac6267 100644 --- a/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki +++ b/luci-app-nikki/root/usr/share/rpcd/ucode/luci.nikki @@ -2,7 +2,7 @@ 'use strict'; -import { popen } from 'fs'; +import { access, popen } from 'fs'; const methods = { version: { @@ -28,15 +28,29 @@ const methods = { core = trim(process.read('all')); process.close(); } - return { success: true, app: app, core: core }; + return { app: app, core: core }; + } + }, + profile: { + call: function() { + let profile = {}; + const filepath = '/etc/nikki/run/config.yaml'; + if (access(filepath, 'r')) { + const process = popen(`yq -p yaml -o json < ${filepath}`); + if (process != null) { + profile = json(process.read('all')); + process.close(); + } + } + return profile; } }, update_subscription: { args: { section_id: 'section_id' }, call: function(req) { let success = false; - if (req.args?.section_id) { - const section_id = req.args?.section_id; + const section_id = req.args?.section_id; + if (section_id) { success = system(['service', 'nikki', 'update_subscription', section_id]) == 0; } return { success: success };