diff --git a/luci-app-mihomo/Makefile b/luci-app-mihomo/Makefile index 04db9128a..f4a93255d 100644 --- a/luci-app-mihomo/Makefile +++ b/luci-app-mihomo/Makefile @@ -1,6 +1,6 @@ include $(TOPDIR)/rules.mk -PKG_VERSION:=1.13.3 +PKG_VERSION:=1.14.0 LUCI_TITLE:=LuCI Support for mihomo LUCI_DEPENDS:=+luci-base +mihomo diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js new file mode 100644 index 000000000..59b2683f3 --- /dev/null +++ b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js @@ -0,0 +1,148 @@ +'use strict'; +'require form'; +'require view'; +'require uci'; +'require poll'; +'require tools.mihomo as mihomo'; + +function renderStatus(running) { + return updateStatus(E('input', { id: 'core_status', style: 'border: unset; font-style: italic; font-weight: bold;', readonly: '' }), running); +} + +function updateStatus(element, running) { + if (element) { + element.style.color = running ? 'green' : 'red'; + element.value = running ? _('Running') : _('Not Running'); + } + return element; +} + +return view.extend({ + load: function () { + return Promise.all([ + uci.load('mihomo'), + mihomo.appVersion(), + mihomo.coreVersion(), + mihomo.status(), + mihomo.listProfiles() + ]); + }, + render: function (data) { + const subscriptions = uci.sections('mihomo', 'subscription'); + const appVersion = data[1]; + const coreVersion = data[2]; + const running = data[3]; + const profiles = data[4]; + + let m, s, o; + + m = new form.Map('mihomo', _('MihomoTProxy'), `${_('Transparent Proxy with Mihomo on OpenWrt.')} ${_('How To Use')}`); + + s = m.section(form.NamedSection, 'status', 'status', _('Status')); + + o = s.option(form.Value, '_app_version', _('App Version')); + o.readonly = true; + o.load = function () { + return appVersion.trim(); + }; + o.write = function () { }; + + o = s.option(form.Value, '_core_version', _('Core Version')); + o.readonly = true; + o.load = function () { + return coreVersion.trim(); + }; + o.write = function () { }; + + o = s.option(form.DummyValue, '_core_status', _('Core Status')); + o.cfgvalue = function () { + return renderStatus(running); + }; + poll.add(function () { + return L.resolveDefault(mihomo.status()).then(function (running) { + updateStatus(document.getElementById('core_status'), running); + }); + }); + + o = s.option(form.Button, 'reload', '-'); + o.inputstyle = 'action'; + o.inputtitle = _('Reload Service'); + o.onclick = function () { + return mihomo.reload(); + }; + + o = s.option(form.Button, 'restart', '-'); + o.inputstyle = 'negative'; + o.inputtitle = _('Restart Service'); + o.onclick = function () { + return mihomo.restart(); + }; + + o = s.option(form.Button, 'update_dashboard', '-'); + o.inputstyle = 'positive'; + o.inputtitle = _('Update Dashboard'); + o.onclick = function () { + return mihomo.callMihomoAPI('POST', '/upgrade/ui'); + }; + + o = s.option(form.Button, 'open_dashboard', '-'); + o.inputtitle = _('Open Dashboard'); + o.onclick = function () { + return mihomo.openDashboard(); + }; + + s = m.section(form.NamedSection, 'config', 'config', _('App Config')); + + o = s.option(form.Flag, 'enabled', _('Enable')); + o.rmempty = false; + + o = s.option(form.ListValue, 'profile', _('Choose Profile')); + o.optional = true; + + for (const profile of profiles) { + o.value('file:' + profile.name, _('File:') + profile.name); + }; + + for (const subscription of subscriptions) { + o.value('subscription:' + subscription['.name'], _('Subscription:') + subscription.name); + }; + + o = s.option(form.Value, 'start_delay', _('Start Delay')); + o.datatype = 'uinteger'; + o.placeholder = '0'; + + o = s.option(form.Flag, 'scheduled_restart', _('Scheduled Restart')); + o.rmempty = false; + + o = s.option(form.Value, 'cron_expression', _('Cron Expression')); + o.retain = true; + o.rmempty = false; + o.depends('scheduled_restart', '1'); + + o = s.option(form.Flag, 'test_profile', _('Test Profile')); + o.rmempty = false; + + o = s.option(form.Flag, 'fast_reload', _('Fast Reload')); + o.rmempty = false; + + s = m.section(form.NamedSection, 'config', 'config', _('Core Environment Variable Config')); + + o = s.option(form.Flag, 'disable_safe_path_check', _('Disable Safe Path Check')); + o.ucisection = 'env'; + o.rmempty = false; + + o = s.option(form.Flag, 'disable_loopback_detector', _('Disable Loopback Detector')); + o.ucisection = 'env'; + o.rmempty = false; + + o = s.option(form.Flag, 'disable_quic_go_gso', _('Disable GSO of quic-go')); + o.ucisection = 'env'; + o.rmempty = false; + + o = s.option(form.Flag, 'disable_quic_go_ecn', _('Disable ECN of quic-go')); + o.ucisection = 'env'; + o.rmempty = false; + + return m.render(); + } +}); diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js deleted file mode 100644 index 58b849326..000000000 --- a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js +++ /dev/null @@ -1,617 +0,0 @@ -'use strict'; -'require form'; -'require view'; -'require uci'; -'require fs'; -'require network'; -'require rpc'; -'require poll'; -'require tools.widgets as widgets'; -'require tools.mihomo as mihomo'; - -function renderStatus(running) { - return updateStatus(E('input', { id: 'core_status', style: 'border: unset; font-style: italic; font-weight: bold;', readonly: '' }), running); -} - -function updateStatus(element, running) { - if (element) { - element.style.color = running ? 'green' : 'red'; - element.value = running ? _('Running') : _('Not Running'); - } - return element; -} - -return view.extend({ - load: function () { - return Promise.all([ - uci.load('mihomo'), - mihomo.listProfiles(), - mihomo.appVersion(), - mihomo.coreVersion(), - mihomo.status(), - mihomo.getUsers(), - mihomo.getGroups(), - network.getHostHints(), - ]); - }, - render: function (data) { - const subscriptions = uci.sections('mihomo', 'subscription'); - const profiles = data[1]; - const appVersion = data[2]; - const coreVersion = data[3]; - const running = data[4]; - const users = data[5]; - const groups = data[6]; - const hosts = data[7].hosts; - - let m, s, o, so; - - m = new form.Map('mihomo', _('MihomoTProxy'), `${_('Transparent Proxy with Mihomo on OpenWrt.')} ${_('How To Use')}`); - - s = m.section(form.NamedSection, 'status', 'status', _('Status')); - - o = s.option(form.Value, '_app_version', _('App Version')); - o.readonly = true; - o.load = function () { - return appVersion.trim(); - }; - o.write = function () { }; - - o = s.option(form.Value, '_core_version', _('Core Version')); - o.readonly = true; - o.load = function () { - return coreVersion.trim(); - }; - o.write = function () { }; - - o = s.option(form.DummyValue, '_core_status', _('Core Status')); - o.cfgvalue = function () { - return renderStatus(running); - }; - poll.add(function () { - return L.resolveDefault(mihomo.status()).then(function (running) { - updateStatus(document.getElementById('core_status'), running); - }); - }); - - o = s.option(form.Button, 'reload', '-'); - o.inputstyle = 'action'; - o.inputtitle = _('Reload Service'); - o.onclick = function () { - return mihomo.reload(); - }; - - o = s.option(form.Button, 'restart', '-'); - o.inputstyle = 'negative'; - o.inputtitle = _('Restart Service'); - o.onclick = function () { - return mihomo.restart(); - }; - - o = s.option(form.Button, 'update_dashboard', '-'); - o.inputstyle = 'positive'; - o.inputtitle = _('Update Dashboard'); - o.onclick = function () { - return mihomo.callMihomoAPI('POST', '/upgrade/ui'); - }; - - o = s.option(form.Button, 'open_dashboard', '-'); - o.inputtitle = _('Open Dashboard'); - o.onclick = function () { - return mihomo.openDashboard(); - }; - - s = m.section(form.NamedSection, 'config', 'config', _('Basic Config')); - - s.tab('app', _('App Config')); - - o = s.taboption('app', form.Flag, 'enabled', _('Enable')); - o.rmempty = false; - - o = s.taboption('app', form.ListValue, 'profile', _('Choose Profile')); - o.optional = true; - - for (const profile of profiles) { - o.value('file:' + profile.name, _('File:') + profile.name); - }; - - for (const subscription of subscriptions) { - o.value('subscription:' + subscription['.name'], _('Subscription:') + subscription.name); - }; - - o = s.taboption('app', form.FileUpload, 'upload_profile', _('Upload Profile')); - o.root_directory = mihomo.profilesDir; - - o = s.taboption('app', form.Flag, 'mixin', _('Mixin')); - o.rmempty = false; - - s.tab('startup', _('Startup Config')); - - o = s.taboption('startup', form.Value, 'start_delay', _('Start Delay')); - o.datatype = 'uinteger'; - o.placeholder = '0'; - - o = s.taboption('startup', form.Flag, 'scheduled_restart', _('Scheduled Restart')); - o.rmempty = false; - - o = s.taboption('startup', form.Value, 'cron_expression', _('Cron Expression')); - o.retain = true; - o.rmempty = false; - o.depends('scheduled_restart', '1'); - - o = s.taboption('startup', form.Flag, 'test_profile', _('Test Profile')); - o.rmempty = false; - - o = s.taboption('startup', form.Flag, 'fast_reload', _('Fast Reload')); - o.rmempty = false; - - s.tab('core_env', _('Core Environment Variable Config')); - - o = s.taboption('core_env', form.Flag, 'disable_safe_path_check', _('Disable Safe Path Check')); - o.ucisection = 'env'; - o.rmempty = false; - - o = s.taboption('core_env', form.Flag, 'disable_loopback_detector', _('Disable Loopback Detector')); - o.ucisection = 'env'; - o.rmempty = false; - - o = s.taboption('core_env', form.Flag, 'disable_quic_go_gso', _('Disable GSO of quic-go')); - o.ucisection = 'env'; - o.rmempty = false; - - o = s.taboption('core_env', form.Flag, 'disable_quic_go_ecn', _('Disable ECN of quic-go')); - o.ucisection = 'env'; - o.rmempty = false; - - s = m.section(form.NamedSection, 'proxy', 'proxy', _('Proxy Config')); - - s.tab('transparent_proxy', _('Transparent Proxy')); - - o = s.taboption('transparent_proxy', form.Flag, 'transparent_proxy', _('Enable')); - o.rmempty = false; - - o = s.taboption('transparent_proxy', form.ListValue, 'tcp_transparent_proxy_mode', _('TCP Proxy Mode')); - 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.value('tproxy', _('TPROXY Mode')); - o.value('tun', _('TUN Mode')); - - o = s.taboption('transparent_proxy', form.Flag, 'ipv4_dns_hijack', _('IPv4 DNS Hijack')); - o.rmempty = false; - - o = s.taboption('transparent_proxy', form.Flag, 'ipv6_dns_hijack', _('IPv6 DNS Hijack')); - o.rmempty = false; - - o = s.taboption('transparent_proxy', form.Flag, 'ipv4_proxy', _('IPv4 Proxy')); - o.rmempty = false; - - o = s.taboption('transparent_proxy', form.Flag, 'ipv6_proxy', _('IPv6 Proxy')); - o.rmempty = false; - - o = s.taboption('transparent_proxy', form.Flag, 'router_proxy', _('Router Proxy')); - o.rmempty = false; - - o = s.taboption('transparent_proxy', form.Flag, 'lan_proxy', _('Lan Proxy')); - o.rmempty = false; - - s.tab('access_control', _('Access Control')); - - o = s.taboption('access_control', form.ListValue, 'access_control_mode', _('Mode')); - o.value('all', _('All Mode')); - o.value('allow', _('Allow Mode')); - o.value('block', _('Block Mode')); - - o = s.taboption('access_control', form.DynamicList, 'acl_ip', 'IP'); - o.datatype = 'ipmask4'; - o.retain = true; - o.depends('access_control_mode', 'allow'); - o.depends('access_control_mode', 'block'); - - for (const mac in hosts) { - const host = hosts[mac]; - for (const ip of host.ipaddrs) { - const hint = host.name || mac; - o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip); - }; - }; - - o = s.taboption('access_control', form.DynamicList, 'acl_ip6', 'IP6'); - o.datatype = 'ipmask6'; - o.retain = true; - o.depends('access_control_mode', 'allow'); - o.depends('access_control_mode', 'block'); - - for (const mac in hosts) { - const host = hosts[mac]; - for (const ip of host.ip6addrs) { - const hint = host.name || mac; - o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip); - }; - }; - - o = s.taboption('access_control', form.DynamicList, 'acl_mac', 'MAC'); - o.datatype = 'macaddr'; - o.retain = true; - o.depends('access_control_mode', 'allow'); - o.depends('access_control_mode', 'block'); - - for (const mac in hosts) { - const host = hosts[mac]; - const hint = host.name || host.ipaddrs[0]; - o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); - }; - - o = s.taboption('access_control', widgets.NetworkSelect, 'acl_interface', _('Interface')); - o.multiple = true; - o.optional = true; - o.retain = true; - o.depends('access_control_mode', 'allow'); - o.depends('access_control_mode', 'block'); - - s.tab('bypass', _('Bypass')); - - o = s.taboption('bypass', form.MultiValue, 'bypass_user', _('Bypass User')); - o.create = true; - - for (const user of users) { - o.value(user); - }; - - o = s.taboption('bypass', form.MultiValue, 'bypass_group', _('Bypass Group')); - o.create = true; - - for (const group of groups) { - o.value(group); - }; - - o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP')); - o.rmempty = false; - - o = s.taboption('bypass', form.Value, 'proxy_tcp_dport', _('Destination TCP Port to Proxy')); - o.rmempty = false; - o.value('0-65535', _('All Port')); - o.value('21 22 80 110 143 194 443 465 853 993 995 8080 8443', _('Commonly Used Port')); - - o = s.taboption('bypass', form.Value, 'proxy_udp_dport', _('Destination UDP Port to Proxy')); - o.rmempty = false; - o.value('0-65535', _('All Port')); - o.value('123 443 8443', _('Commonly Used Port')); - - s = m.section(form.GridSection, 'subscription', _('Subscription Config')); - s.addremove = true; - s.anonymous = true; - s.sortable = true; - s.modaltitle = _('Edit Subscription'); - - o = s.option(form.Value, 'name', _('Subscription Name')); - o.rmempty = false; - - o = s.option(form.Value, 'used', _('Used')); - o.modalonly = false; - o.optional = true; - o.readonly = true; - - o = s.option(form.Value, 'total', _('Total')); - o.modalonly = false; - o.optional = true; - o.readonly = true; - - o = s.option(form.Value, 'expire', _('Expire At')); - o.modalonly = false; - o.optional = true; - o.readonly = true; - - o = s.option(form.Value, 'update', _('Update At')); - o.modalonly = false; - o.optional = true; - o.readonly = true; - - o = s.option(form.Button, 'update_subscription'); - o.editable = true; - o.inputstyle = 'positive'; - o.inputtitle = _('Update'); - o.modalonly = false; - o.onclick = function (_, section_id) { - return mihomo.updateSubscription(section_id); - }; - - o = s.option(form.Value, 'url', _('Subscription Url')); - o.modalonly = true; - o.rmempty = false; - - o = s.option(form.Value, 'user_agent', _('User Agent')); - o.default = 'clash'; - o.modalonly = true; - o.rmempty = false; - o.value('mihomo'); - o.value('clash.meta'); - o.value('clash'); - - o = s.option(form.ListValue, 'prefer', _('Prefer')); - o.default = 'remote'; - o.modalonly = true; - o.value('remote', _('Remote')); - o.value('local', _('Local')); - - s = m.section(form.NamedSection, 'mixin', 'mixin', _('Mixin Config')); - - s.tab('general', _('General Config')); - - o = s.taboption('general', form.ListValue, 'log_level', '*' + ' ' + _('Log Level')); - o.value('silent'); - o.value('error'); - o.value('warning'); - o.value('info'); - o.value('debug'); - - o = s.taboption('general', form.ListValue, 'mode', _('Mode')); - 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', 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.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_name', '*' + ' ' + _('UI Name')); - o.rmempty = false; - - o = s.taboption('external_control', form.Value, 'ui_url', '*' + ' ' + _('UI Url')); - o.rmempty = false; - o.value('https://ghp.ci/https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip', 'MetaCubeXD'); - o.value('https://ghp.ci/https://github.com/MetaCubeX/Yacd-meta/archive/refs/heads/gh-pages.zip', 'YACD'); - o.value('https://ghp.ci/https://github.com/MetaCubeX/Razord-meta/archive/refs/heads/gh-pages.zip', 'Razord'); - o.value('https://ghp.ci/https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip', 'Zashboard'); - - 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_secret', '*' + ' ' + _('API Secret')); - o.password = true; - o.rmempty = false; - - o = s.taboption('external_control', form.Flag, 'selection_cache', _('Save Proxy Selection')); - o.rmempty = false; - - s.tab('inbound', _('Inbound Config')); - - o = s.taboption('inbound', form.Flag, 'allow_lan', '*' + ' ' + _('Allow Lan')); - o.rmempty = false; - - 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.datatype = 'port'; - o.placeholder = '1080'; - - 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 = s.taboption('inbound', form.Value, 'tproxy_port', '*' + ' ' + _('TPROXY Port')); - o.datatype = 'port'; - o.placeholder = '7892'; - - o = s.taboption('inbound', form.Flag, 'authentication', '*' + ' ' + _('Overwrite Authentication')); - o.rmempty = false; - - o = s.taboption('inbound', form.SectionValue, '_authentications', form.TableSection, 'authentication', _('Edit Authentications')); - o.retain = true; - o.depends('authentication', '1'); - - o.subsection.addremove = true; - o.subsection.anonymous = true; - o.subsection.sortable = true; - - so = o.subsection.option(form.Flag, 'enabled', _('Enable')); - so.rmempty = false; - - so = o.subsection.option(form.Value, 'username', _('Username')); - so.rmempty = false; - - so = o.subsection.option(form.Value, 'password', _('Password')); - so.password = true; - so.rmempty = false; - - s.tab('tun', _('TUN Config')); - - o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack')); - o.value('system', 'System'); - o.value('gvisor', 'gVisor'); - o.value('mixed', 'Mixed'); - - 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.Value, 'tun_gso_max_size', '*' + ' ' + _('GSO Max Size')); - o.datatype = 'uinteger'; - o.placeholder = '65536'; - o.retain = true; - o.depends('tun_gso', '1'); - - o = s.taboption('tun', form.Flag, 'tun_endpoint_independent_nat', '*' + ' ' + _('Endpoint Independent NAT')); - o.rmempty = false; - - 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.ListValue, 'dns_mode', '*' + ' ' + _('DNS Mode')); - o.value('normal', 'Normal'); - o.value('fake-ip', 'Fake-IP'); - o.value('redir-host', 'Redir-Host'); - - 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.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 = s.taboption('dns', form.ListValue, 'fake_ip_filter_mode', _('Fake-IP Filter Mode')); - o.retain = 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.Flag, 'dns_respect_rules', _('Respect Rules')); - o.rmempty = false; - - o = s.taboption('dns', form.Flag, 'dns_doh_prefer_http3', _('DoH Prefer HTTP/3')); - o.rmempty = false; - - o = s.taboption('dns', form.Flag, 'dns_ipv6', _('IPv6')); - o.rmempty = false; - - o = s.taboption('dns', form.Flag, 'dns_system_hosts', _('Use System Hosts')); - o.rmempty = false; - - o = s.taboption('dns', form.Flag, 'dns_hosts', _('Use Hosts')); - o.rmempty = false; - - o = s.taboption('dns', form.Flag, 'hosts', _('Overwrite Hosts')); - o.rmempty = false; - - o = s.taboption('dns', form.SectionValue, '_hosts', form.TableSection, 'host', _('Edit Hosts')); - o.retain = true; - o.depends('hosts', '1'); - - o.subsection.addremove = true; - o.subsection.anonymous = true; - o.subsection.sortable = true; - - so = o.subsection.option(form.Flag, 'enabled', _('Enable')); - so.rmempty = false; - - so = o.subsection.option(form.Value, 'domain_name', _('Domain Name')); - so.rmempty = false; - - so = o.subsection.option(form.DynamicList, 'ip', _('IP')); - - o = s.taboption('dns', form.Flag, 'dns_nameserver', _('Overwrite Nameserver')); - o.rmempty = false; - - o = s.taboption('dns', form.SectionValue, '_dns_nameserver', form.TableSection, 'nameserver', _('Edit Nameservers')); - o.retain = true; - o.depends('dns_nameserver', '1'); - - o.subsection.addremove = true; - o.subsection.anonymous = true; - o.subsection.sortable = true; - - so = o.subsection.option(form.Flag, 'enabled', _('Enable')); - so.rmempty = false; - - so = o.subsection.option(form.ListValue, 'type', _('Type')); - so.value('default-nameserver'); - so.value('proxy-server-nameserver'); - so.value('direct-nameserver'); - so.value('nameserver'); - so.value('fallback'); - - so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver')); - - o = s.taboption('dns', form.Flag, 'dns_nameserver_policy', _('Overwrite Nameserver Policy')); - o.rmempty = false; - - o = s.taboption('dns', form.SectionValue, '_dns_nameserver_policies', form.TableSection, 'nameserver_policy', _('Edit Nameserver Policies')); - o.retain = true; - o.depends('dns_nameserver_policy', '1'); - - o.subsection.addremove = true; - o.subsection.anonymous = true; - o.subsection.sortable = true; - - so = o.subsection.option(form.Flag, 'enabled', _('Enable')); - so.rmempty = false; - - so = o.subsection.option(form.Value, 'matcher', _('Matcher')); - so.rmempty = false; - - so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver')); - - s.tab('geox', _('GeoX Config')); - - o = s.taboption('geox', form.ListValue, 'geoip_format', _('GeoIP Format')); - o.value('dat', 'DAT'); - o.value('mmdb', 'MMDB'); - - o = s.taboption('geox', form.ListValue, 'geodata_loader', _('GeoData Loader')); - 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.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.rmempty = false; - - return m.render(); - } -}); diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js index 9a21cf1d4..a94a9674c 100644 --- a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js +++ b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js @@ -9,7 +9,7 @@ return view.extend({ load: function () { return Promise.all([ uci.load('mihomo'), - mihomo.listProfiles(), + mihomo.listProfiles() ]); }, render: function (data) { @@ -20,9 +20,9 @@ return view.extend({ m = new form.Map('mihomo'); - s = m.section(form.NamedSection, 'editor', 'editor'); + s = m.section(form.NamedSection, 'editor', 'editor', _('Editor')); - o = s.option(form.ListValue, '_profile', _('Choose Profile')); + o = s.option(form.ListValue, '_file', _('Choose File')); o.optional = true; for (const profile of profiles) { @@ -43,19 +43,19 @@ return view.extend({ }; o.onchange = function (event, section_id, value) { return L.resolveDefault(fs.read_direct(value), '').then(function (content) { - m.lookupOption('mihomo.editor._profile_content')[0].getUIElement('editor').setValue(content); + m.lookupOption('mihomo.editor._file_content')[0].getUIElement('editor').setValue(content); }); }; - o = s.option(form.TextValue, '_profile_content',); + o = s.option(form.TextValue, '_file_content',); o.rows = 25; o.wrap = false; o.write = function (section_id, formvalue) { - const path = m.lookupOption('mihomo.editor._profile')[0].formvalue('editor'); + const path = m.lookupOption('mihomo.editor._file')[0].formvalue('editor'); return fs.write(path, formvalue); }; o.remove = function (section_id) { - const path = m.lookupOption('mihomo.editor._profile')[0].formvalue('editor'); + const path = m.lookupOption('mihomo.editor._file')[0].formvalue('editor'); return fs.write(path); }; diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js index 79a255c8a..bde0be6fa 100644 --- a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js +++ b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js @@ -2,9 +2,8 @@ 'require form'; 'require view'; 'require uci'; -'require fs'; 'require poll'; -'require tools.mihomo as mihomo' +'require tools.mihomo as mihomo'; return view.extend({ load: function () { @@ -22,7 +21,7 @@ return view.extend({ m = new form.Map('mihomo'); - s = m.section(form.NamedSection, 'log', 'log'); + s = m.section(form.NamedSection, 'log', 'log', _('Log')); s.tab('app_log', _('App Log')); @@ -95,4 +94,4 @@ return view.extend({ handleSaveApply: null, handleSave: null, handleReset: null -}); +}); \ No newline at end of file diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js new file mode 100644 index 000000000..660a59009 --- /dev/null +++ b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js @@ -0,0 +1,303 @@ +'use strict'; +'require form'; +'require view'; +'require uci'; +'require fs'; +'require poll'; +'require tools.widgets as widgets'; +'require tools.mihomo as mihomo'; + +return view.extend({ + load: function () { + return Promise.all([ + uci.load('mihomo') + ]); + }, + render: function (data) { + let m, s, o, so; + + m = new form.Map('mihomo'); + + 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.value('silent'); + o.value('error'); + o.value('warning'); + o.value('info'); + o.value('debug'); + + o = s.taboption('general', form.ListValue, 'mode', _('Mode')); + 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', 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.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_name', '*' + ' ' + _('UI Name')); + + o = s.taboption('external_control', form.Value, 'ui_url', '*' + ' ' + _('UI Url')); + o.rmempty = false; + 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_secret', '*' + ' ' + _('API Secret')); + o.password = true; + o.rmempty = false; + + o = s.taboption('external_control', form.Flag, 'selection_cache', _('Save Proxy Selection')); + o.rmempty = false; + + s.tab('inbound', _('Inbound Config')); + + o = s.taboption('inbound', form.Flag, 'allow_lan', '*' + ' ' + _('Allow Lan')); + o.rmempty = false; + + 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.datatype = 'port'; + o.placeholder = '1080'; + + 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 = s.taboption('inbound', form.Value, 'tproxy_port', '*' + ' ' + _('TPROXY Port')); + o.datatype = 'port'; + o.placeholder = '7892'; + + o = s.taboption('inbound', form.Flag, 'authentication', '*' + ' ' + _('Overwrite Authentication')); + o.rmempty = false; + + o = s.taboption('inbound', form.SectionValue, '_authentications', form.TableSection, 'authentication', _('Edit Authentications')); + o.retain = true; + o.depends('authentication', '1'); + + o.subsection.addremove = true; + o.subsection.anonymous = true; + o.subsection.sortable = true; + + so = o.subsection.option(form.Flag, 'enabled', _('Enable')); + so.rmempty = false; + + so = o.subsection.option(form.Value, 'username', _('Username')); + so.rmempty = false; + + so = o.subsection.option(form.Value, 'password', _('Password')); + so.password = true; + so.rmempty = false; + + s.tab('tun', _('TUN Config')); + + o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack')); + o.value('system', 'System'); + o.value('gvisor', 'gVisor'); + o.value('mixed', 'Mixed'); + + 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.Value, 'tun_gso_max_size', '*' + ' ' + _('GSO Max Size')); + o.datatype = 'uinteger'; + o.placeholder = '65536'; + o.retain = true; + o.depends('tun_gso', '1'); + + o = s.taboption('tun', form.Flag, 'tun_endpoint_independent_nat', '*' + ' ' + _('Endpoint Independent NAT')); + o.rmempty = false; + + 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.ListValue, 'dns_mode', '*' + ' ' + _('DNS Mode')); + o.value('normal', 'Normal'); + o.value('fake-ip', 'Fake-IP'); + o.value('redir-host', 'Redir-Host'); + + 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.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 = s.taboption('dns', form.ListValue, 'fake_ip_filter_mode', _('Fake-IP Filter Mode')); + o.retain = 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.Flag, 'dns_respect_rules', _('Respect Rules')); + o.rmempty = false; + + o = s.taboption('dns', form.Flag, 'dns_doh_prefer_http3', _('DoH Prefer HTTP/3')); + o.rmempty = false; + + o = s.taboption('dns', form.Flag, 'dns_ipv6', _('IPv6')); + o.rmempty = false; + + o = s.taboption('dns', form.Flag, 'dns_system_hosts', _('Use System Hosts')); + o.rmempty = false; + + o = s.taboption('dns', form.Flag, 'dns_hosts', _('Use Hosts')); + o.rmempty = false; + + o = s.taboption('dns', form.Flag, 'hosts', _('Overwrite Hosts')); + o.rmempty = false; + + o = s.taboption('dns', form.SectionValue, '_hosts', form.TableSection, 'host', _('Edit Hosts')); + o.retain = true; + o.depends('hosts', '1'); + + o.subsection.addremove = true; + o.subsection.anonymous = true; + o.subsection.sortable = true; + + so = o.subsection.option(form.Flag, 'enabled', _('Enable')); + so.rmempty = false; + + so = o.subsection.option(form.Value, 'domain_name', _('Domain Name')); + so.rmempty = false; + + so = o.subsection.option(form.DynamicList, 'ip', _('IP')); + + o = s.taboption('dns', form.Flag, 'dns_nameserver', _('Overwrite Nameserver')); + o.rmempty = false; + + o = s.taboption('dns', form.SectionValue, '_dns_nameserver', form.TableSection, 'nameserver', _('Edit Nameservers')); + o.retain = true; + o.depends('dns_nameserver', '1'); + + o.subsection.addremove = true; + o.subsection.anonymous = true; + o.subsection.sortable = true; + + so = o.subsection.option(form.Flag, 'enabled', _('Enable')); + so.rmempty = false; + + so = o.subsection.option(form.ListValue, 'type', _('Type')); + so.value('default-nameserver'); + so.value('proxy-server-nameserver'); + so.value('direct-nameserver'); + so.value('nameserver'); + so.value('fallback'); + + so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver')); + + o = s.taboption('dns', form.Flag, 'dns_nameserver_policy', _('Overwrite Nameserver Policy')); + o.rmempty = false; + + o = s.taboption('dns', form.SectionValue, '_dns_nameserver_policies', form.TableSection, 'nameserver_policy', _('Edit Nameserver Policies')); + o.retain = true; + o.depends('dns_nameserver_policy', '1'); + + o.subsection.addremove = true; + o.subsection.anonymous = true; + o.subsection.sortable = true; + + so = o.subsection.option(form.Flag, 'enabled', _('Enable')); + so.rmempty = false; + + so = o.subsection.option(form.Value, 'matcher', _('Matcher')); + so.rmempty = false; + + so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver')); + + s.tab('geox', _('GeoX Config')); + + o = s.taboption('geox', form.ListValue, 'geoip_format', _('GeoIP Format')); + o.value('dat', 'DAT'); + o.value('mmdb', 'MMDB'); + + o = s.taboption('geox', form.ListValue, 'geodata_loader', _('GeoData Loader')); + 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.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.rmempty = false; + + return m.render(); + } +}); \ No newline at end of file diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js new file mode 100644 index 000000000..6952ea581 --- /dev/null +++ b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js @@ -0,0 +1,86 @@ +'use strict'; +'require form'; +'require view'; +'require uci'; +'require tools.mihomo as mihomo'; + +return view.extend({ + load: function () { + return Promise.all([ + uci.load('mihomo') + ]); + }, + render: function (data) { + let m, s, o, so; + + m = new form.Map('mihomo'); + + s = m.section(form.NamedSection, 'config', 'config', _('Profile')); + + o = s.option(form.FileUpload, '_upload_profile', _('Upload Profile')); + o.browser = true; + o.enable_download = true; + o.root_directory = mihomo.profilesDir; + o.write = function (section_id, formvalue) { + return true; + }; + + s = m.section(form.GridSection, 'subscription', _('Subscription')); + s.addremove = true; + s.anonymous = true; + s.sortable = true; + s.modaltitle = _('Edit Subscription'); + + o = s.option(form.Value, 'name', _('Subscription Name')); + o.rmempty = false; + + o = s.option(form.Value, 'used', _('Used')); + o.modalonly = false; + o.optional = true; + o.readonly = true; + + o = s.option(form.Value, 'total', _('Total')); + o.modalonly = false; + o.optional = true; + o.readonly = true; + + o = s.option(form.Value, 'expire', _('Expire At')); + o.modalonly = false; + o.optional = true; + o.readonly = true; + + o = s.option(form.Value, 'update', _('Update At')); + o.modalonly = false; + o.optional = true; + o.readonly = true; + + o = s.option(form.Button, 'update_subscription'); + o.editable = true; + o.inputstyle = 'positive'; + o.inputtitle = _('Update'); + o.modalonly = false; + o.onclick = function (_, section_id) { + return mihomo.updateSubscription(section_id); + }; + + o = s.option(form.Value, 'url', _('Subscription Url')); + o.modalonly = true; + o.rmempty = false; + + o = s.option(form.Value, 'user_agent', _('User Agent')); + o.default = 'clash'; + o.modalonly = true; + o.rmempty = false; + o.value('mihomo'); + o.value('clash.meta'); + o.value('clash'); + + o = s.option(form.ListValue, 'prefer', _('Prefer')); + o.default = 'remote'; + o.modalonly = true; + o.value('remote', _('Remote')); + o.value('local', _('Local')); + + return m.render(); + } +}); diff --git a/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js new file mode 100644 index 000000000..6264ef3d7 --- /dev/null +++ b/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js @@ -0,0 +1,145 @@ +'use strict'; +'require form'; +'require view'; +'require uci'; +'require network'; +'require tools.widgets as widgets'; +'require tools.mihomo as mihomo'; + +return view.extend({ + load: function () { + return Promise.all([ + uci.load('mihomo'), + network.getHostHints(), + mihomo.getUsers(), + mihomo.getGroups() + ]); + }, + render: function (data) { + const hosts = data[1].hosts; + const users = data[2]; + const groups = data[3]; + + let m, s, o; + + m = new form.Map('mihomo'); + + s = m.section(form.NamedSection, 'proxy', 'proxy', _('Proxy Config')); + + s.tab('transparent_proxy', _('Transparent Proxy')); + + o = s.taboption('transparent_proxy', form.Flag, 'transparent_proxy', _('Enable')); + o.rmempty = false; + + o = s.taboption('transparent_proxy', form.ListValue, 'tcp_transparent_proxy_mode', _('TCP Proxy Mode')); + 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.value('tproxy', _('TPROXY Mode')); + o.value('tun', _('TUN Mode')); + + o = s.taboption('transparent_proxy', form.Flag, 'ipv4_dns_hijack', _('IPv4 DNS Hijack')); + o.rmempty = false; + + o = s.taboption('transparent_proxy', form.Flag, 'ipv6_dns_hijack', _('IPv6 DNS Hijack')); + o.rmempty = false; + + o = s.taboption('transparent_proxy', form.Flag, 'ipv4_proxy', _('IPv4 Proxy')); + o.rmempty = false; + + o = s.taboption('transparent_proxy', form.Flag, 'ipv6_proxy', _('IPv6 Proxy')); + o.rmempty = false; + + o = s.taboption('transparent_proxy', form.Flag, 'router_proxy', _('Router Proxy')); + o.rmempty = false; + + o = s.taboption('transparent_proxy', form.Flag, 'lan_proxy', _('Lan Proxy')); + o.rmempty = false; + + s.tab('access_control', _('Access Control')); + + o = s.taboption('access_control', form.ListValue, 'access_control_mode', _('Mode')); + o.value('all', _('All Mode')); + o.value('allow', _('Allow Mode')); + o.value('block', _('Block Mode')); + + o = s.taboption('access_control', form.DynamicList, 'acl_ip', 'IP'); + o.datatype = 'ipmask4'; + o.retain = true; + o.depends('access_control_mode', 'allow'); + o.depends('access_control_mode', 'block'); + + for (const mac in hosts) { + const host = hosts[mac]; + for (const ip of host.ipaddrs) { + const hint = host.name || mac; + o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip); + }; + }; + + o = s.taboption('access_control', form.DynamicList, 'acl_ip6', 'IP6'); + o.datatype = 'ipmask6'; + o.retain = true; + o.depends('access_control_mode', 'allow'); + o.depends('access_control_mode', 'block'); + + for (const mac in hosts) { + const host = hosts[mac]; + for (const ip of host.ip6addrs) { + const hint = host.name || mac; + o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip); + }; + }; + + o = s.taboption('access_control', form.DynamicList, 'acl_mac', 'MAC'); + o.datatype = 'macaddr'; + o.retain = true; + o.depends('access_control_mode', 'allow'); + o.depends('access_control_mode', 'block'); + + for (const mac in hosts) { + const host = hosts[mac]; + const hint = host.name || host.ipaddrs[0]; + o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); + }; + + o = s.taboption('access_control', widgets.NetworkSelect, 'acl_interface', _('Interface')); + o.multiple = true; + o.optional = true; + o.retain = true; + o.depends('access_control_mode', 'allow'); + o.depends('access_control_mode', 'block'); + + s.tab('bypass', _('Bypass')); + + o = s.taboption('bypass', form.MultiValue, 'bypass_user', _('Bypass User')); + o.create = true; + + for (const user of users) { + o.value(user); + }; + + o = s.taboption('bypass', form.MultiValue, 'bypass_group', _('Bypass Group')); + o.create = true; + + for (const group of groups) { + o.value(group); + }; + + o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP')); + o.rmempty = false; + + o = s.taboption('bypass', form.Value, 'proxy_tcp_dport', _('Destination TCP Port to Proxy')); + o.rmempty = false; + o.value('0-65535', _('All Port')); + o.value('21 22 80 110 143 194 443 465 853 993 995 8080 8443', _('Commonly Used Port')); + + o = s.taboption('bypass', form.Value, 'proxy_udp_dport', _('Destination UDP Port to Proxy')); + o.rmempty = false; + o.value('0-65535', _('All Port')); + o.value('123 443 8443', _('Commonly Used Port')); + return m.render(); + } +}); diff --git a/luci-app-mihomo/po/templates/mihomo.pot b/luci-app-mihomo/po/templates/mihomo.pot index 882887472..a48c21beb 100644 --- a/luci-app-mihomo/po/templates/mihomo.pot +++ b/luci-app-mihomo/po/templates/mihomo.pot @@ -1,232 +1,230 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:386 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:72 msgid "API Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:390 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:76 msgid "API Secret" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:200 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:61 msgid "Access Control" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:203 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:64 msgid "All Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:275 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:280 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:136 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:141 msgid "All Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:399 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:85 msgid "Allow Lan" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:204 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:495 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65 msgid "Allow Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:106 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:94 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:13 msgid "App Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:27 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:38 msgid "App Log" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:53 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:43 msgid "App Version" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:356 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:43 msgid "Auto" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:104 -msgid "Basic Config" -msgstr "" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:205 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:494 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:180 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66 msgid "Block Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:254 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:115 msgid "Bypass" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:131 msgid "Bypass China Mainland IP" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:263 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:124 msgid "Bypass Group" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:117 msgid "Bypass User" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:111 #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25 +msgid "Choose File" +msgstr "" + +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:99 msgid "Choose Profile" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:31 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:64 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:42 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:75 msgid "Clear Log" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:276 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:137 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:142 msgid "Commonly Used Port" msgstr "" -#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:14 -msgid "Config" -msgstr "" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:128 msgid "Core Environment Variable Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:60 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:71 msgid "Core Log" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:67 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:57 msgid "Core Status" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:60 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:50 msgid "Core Version" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:137 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:117 msgid "Cron Expression" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:466 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152 msgid "DNS Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:472 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:158 msgid "DNS Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:468 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:154 msgid "DNS Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:273 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:134 msgid "Destination TCP Port to Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:278 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:139 msgid "Destination UDP Port to Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:353 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40 msgid "Direct Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:358 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:45 msgid "Disable" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:162 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:142 msgid "Disable ECN of quic-go" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:158 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:138 msgid "Disable GSO of quic-go" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:134 msgid "Disable Loopback Detector" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:150 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:130 msgid "Disable Safe Path Check" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:506 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192 msgid "DoH Prefer HTTP/3" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:532 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218 msgid "Domain Name" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:425 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:111 msgid "Edit Authentications" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:488 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:174 msgid "Edit Fake-IP Filters" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:521 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207 msgid "Edit Hosts" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:563 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249 msgid "Edit Nameserver Policies" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:540 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226 msgid "Edit Nameservers" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:287 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:32 msgid "Edit Subscription" msgstr "" -#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:22 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:23 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:45 msgid "Editor" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:108 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:170 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:357 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:433 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:529 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:548 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:571 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:96 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:215 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:234 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:257 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31 msgid "Enable" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:463 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:149 msgid "Endpoint Independent NAT" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:302 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:47 msgid "Expire At" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:374 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:61 msgid "External Control Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:498 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184 msgid "Fake-IP Cache" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:492 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:178 msgid "Fake-IP Filter Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:477 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:163 msgid "Fake-IP Range" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:145 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:125 msgid "Fast Reload" msgstr "" @@ -242,60 +240,60 @@ msgstr "" msgid "File for Reserved IP6" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:115 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:103 #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29 msgid "File:" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:454 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:140 msgid "GSO" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:457 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143 msgid "GSO Max Size" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:341 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:28 msgid "General Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:585 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:271 msgid "GeoData Loader" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:581 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:267 msgid "GeoIP Format" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:598 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284 msgid "GeoIP(ASN) Url" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:595 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281 msgid "GeoIP(DAT) Url" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:592 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278 msgid "GeoIP(MMDB) Url" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:589 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275 msgid "GeoSite Url" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:601 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287 msgid "GeoX Auto Update" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:579 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:265 msgid "GeoX Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:604 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290 msgid "GeoX Update Interval" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:351 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:38 msgid "Global Mode" msgstr "" @@ -303,212 +301,222 @@ msgstr "" msgid "Grant access to mihomo procedures" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:402 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:88 msgid "HTTP Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39 msgid "How To Use" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:535 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221 msgid "IP" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:182 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:43 msgid "IPv4 DNS Hijack" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:188 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:49 msgid "IPv4 Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:509 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195 msgid "IPv6" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:185 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:46 msgid "IPv6 DNS Hijack" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:191 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:52 msgid "IPv6 Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:397 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:83 msgid "Inbound Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:247 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:108 msgid "Interface" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:197 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:58 msgid "Lan Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:337 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:82 msgid "Local" msgstr "" -#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:30 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:36 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53 msgid "Log" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:343 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:30 msgid "Log Level" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:450 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:136 msgid "MTU" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:355 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:42 msgid "Match Process" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:574 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260 msgid "Matcher" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:587 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:273 msgid "Memory Conservative Loader" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39 #: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3 msgid "MihomoTProxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:410 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:96 msgid "Mixed Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125 -msgid "Mixin" -msgstr "" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:339 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:21 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:29 msgid "Mixin Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:610 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:296 msgid "Mixin File Content" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:202 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:350 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:26 +msgid "Mixin Option" +msgstr "" + +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:37 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:63 msgid "Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:558 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:577 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:244 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263 msgid "Nameserver" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15 msgid "Not Running" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:99 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:89 msgid "Open Dashboard" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:360 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:47 msgid "Outbound Interface" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:422 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:108 msgid "Overwrite Authentication" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:483 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:169 msgid "Overwrite Fake-IP Filter" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:518 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204 msgid "Overwrite Hosts" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:537 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:223 msgid "Overwrite Nameserver" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:560 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:246 msgid "Overwrite Nameserver Policy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:439 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:125 msgid "Password" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298 msgid "Please go to the editor tab to edit the file for mixin" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:78 msgid "Prefer" msgstr "" +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:18 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:21 +msgid "Profile" +msgstr "" + #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:37 msgid "Profile for Startup" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:166 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:27 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:37 msgid "Proxy Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:174 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:35 msgid "Redirect Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:414 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:100 msgid "Redirect Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:79 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:69 msgid "Reload Service" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:336 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:81 msgid "Remote" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:503 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:189 msgid "Respect Rules" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:86 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:76 msgid "Restart Service" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:194 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:55 msgid "Router Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:39 msgid "Rule Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15 msgid "Running" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:406 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:92 msgid "SOCKS Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:394 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:80 msgid "Save Proxy Selection" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:134 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:114 msgid "Scheduled Restart" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:54 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:87 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:65 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:98 msgid "Scroll To Bottom" msgstr "" @@ -517,102 +525,98 @@ msgstr "" msgid "Service is not running." msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:445 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131 msgid "Stack" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:586 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:272 msgid "Standard Loader" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:130 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:110 msgid "Start Delay" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:128 -msgid "Startup Config" -msgstr "" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:51 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:41 msgid "Status" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:283 -msgid "Subscription Config" +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:28 +msgid "Subscription" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:289 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:34 msgid "Subscription Name" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:321 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:66 msgid "Subscription Url" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:119 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:107 #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33 msgid "Subscription:" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:366 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:53 msgid "TCP Keep Alive Idle" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:370 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:57 msgid "TCP Keep Alive Interval" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:173 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:34 msgid "TCP Proxy Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:175 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:179 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:36 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:40 msgid "TPROXY Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:418 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:104 msgid "TPROXY Port" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:443 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:129 msgid "TUN Config" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:176 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:180 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:37 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:41 msgid "TUN Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:142 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:122 msgid "Test Profile" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:297 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:42 msgid "Total" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:168 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:29 msgid "Transparent Proxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39 msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:551 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237 msgid "Type" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:39 msgid "UDP Proxy Mode" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:376 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:63 msgid "UI Name" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:379 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:65 msgid "UI Url" msgstr "" @@ -621,38 +625,38 @@ msgstr "" msgid "Unknown" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:315 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:60 msgid "Update" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:307 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:52 msgid "Update At" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:93 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:83 msgid "Update Dashboard" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:122 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:20 msgid "Upload Profile" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:515 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201 msgid "Use Hosts" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:512 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198 msgid "Use System Hosts" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:292 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:37 msgid "Used" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:325 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:70 msgid "User Agent" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:436 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:122 msgid "Username" msgstr "" diff --git a/luci-app-mihomo/po/zh_Hans/mihomo.po b/luci-app-mihomo/po/zh_Hans/mihomo.po index b39595661..be5cadcc8 100644 --- a/luci-app-mihomo/po/zh_Hans/mihomo.po +++ b/luci-app-mihomo/po/zh_Hans/mihomo.po @@ -8,232 +8,230 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:386 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:72 msgid "API Port" msgstr "API 端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:390 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:76 msgid "API Secret" msgstr "API 密钥" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:200 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:61 msgid "Access Control" msgstr "访问控制" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:203 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:64 msgid "All Mode" msgstr "全部模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:275 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:280 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:136 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:141 msgid "All Port" msgstr "全部端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:399 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:85 msgid "Allow Lan" msgstr "允许局域网访问" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:204 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:495 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65 msgid "Allow Mode" msgstr "白名单模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:106 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:94 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:13 msgid "App Config" msgstr "插件配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:27 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:38 msgid "App Log" msgstr "插件日志" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:53 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:43 msgid "App Version" msgstr "插件版本" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:356 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:43 msgid "Auto" msgstr "自动" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:104 -msgid "Basic Config" -msgstr "基础配置" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:205 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:494 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:180 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66 msgid "Block Mode" msgstr "黑名单模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:254 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:115 msgid "Bypass" msgstr "绕过" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:131 msgid "Bypass China Mainland IP" msgstr "绕过中国大陆 IP" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:263 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:124 msgid "Bypass Group" msgstr "绕过用户组" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:117 msgid "Bypass User" msgstr "绕过用户" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:111 #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25 +msgid "Choose File" +msgstr "选择文件" + +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:99 msgid "Choose Profile" msgstr "选择配置文件" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:31 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:64 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:42 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:75 msgid "Clear Log" msgstr "清空日志" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:276 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:137 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:142 msgid "Commonly Used Port" msgstr "常用端口" -#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:14 -msgid "Config" -msgstr "配置" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:128 msgid "Core Environment Variable Config" msgstr "核心环境变量配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:60 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:71 msgid "Core Log" msgstr "核心日志" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:67 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:57 msgid "Core Status" msgstr "核心状态" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:60 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:50 msgid "Core Version" msgstr "核心版本" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:137 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:117 msgid "Cron Expression" msgstr "Cron 表达式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:466 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152 msgid "DNS Config" msgstr "DNS 配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:472 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:158 msgid "DNS Mode" msgstr "DNS 模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:468 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:154 msgid "DNS Port" msgstr "DNS 端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:273 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:134 msgid "Destination TCP Port to Proxy" msgstr "要代理的 TCP 目标端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:278 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:139 msgid "Destination UDP Port to Proxy" msgstr "要代理的 UDP 目标端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:353 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40 msgid "Direct Mode" msgstr "直连模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:358 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:45 msgid "Disable" msgstr "禁用" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:162 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:142 msgid "Disable ECN of quic-go" -msgstr "禁用 quic-go 的显式拥塞通告" +msgstr "禁用 quic-go 的显式拥塞通知" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:158 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:138 msgid "Disable GSO of quic-go" msgstr "禁用 quic-go 的通用分段卸载" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:134 msgid "Disable Loopback Detector" msgstr "禁用回环检测" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:150 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:130 msgid "Disable Safe Path Check" msgstr "禁用安全路径检查" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:506 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192 msgid "DoH Prefer HTTP/3" msgstr "DoH 优先 HTTP/3" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:532 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218 msgid "Domain Name" msgstr "域名" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:425 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:111 msgid "Edit Authentications" msgstr "编辑身份验证" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:488 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:174 msgid "Edit Fake-IP Filters" msgstr "编辑 Fake-IP 过滤列表" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:521 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207 msgid "Edit Hosts" msgstr "编辑 Hosts" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:563 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249 msgid "Edit Nameserver Policies" msgstr "编辑 DNS 服务器查询策略" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:540 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226 msgid "Edit Nameservers" msgstr "编辑 DNS 服务器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:287 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:32 msgid "Edit Subscription" msgstr "编辑订阅" -#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:22 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:23 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:45 msgid "Editor" msgstr "编辑器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:108 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:170 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:357 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:433 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:529 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:548 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:571 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:96 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:215 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:234 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:257 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31 msgid "Enable" msgstr "启用" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:463 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:149 msgid "Endpoint Independent NAT" msgstr "独立于端点的 NAT" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:302 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:47 msgid "Expire At" msgstr "到期时间" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:374 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:61 msgid "External Control Config" msgstr "外部控制配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:498 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184 msgid "Fake-IP Cache" msgstr "Fake-IP 缓存" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:492 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:178 msgid "Fake-IP Filter Mode" msgstr "Fake-IP 过滤模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:477 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:163 msgid "Fake-IP Range" msgstr "Fake-IP 范围" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:145 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:125 msgid "Fast Reload" msgstr "快速重载" @@ -249,60 +247,60 @@ msgstr "IPv4 保留地址" msgid "File for Reserved IP6" msgstr "IPv6 保留地址" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:115 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:103 #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29 msgid "File:" msgstr "文件:" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:454 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:140 msgid "GSO" msgstr "通用分段卸载" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:457 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143 msgid "GSO Max Size" msgstr "分段最大长度" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:341 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:28 msgid "General Config" msgstr "全局配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:585 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:271 msgid "GeoData Loader" msgstr "GeoData 加载器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:581 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:267 msgid "GeoIP Format" msgstr "GeoIP 格式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:598 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284 msgid "GeoIP(ASN) Url" msgstr "GeoIP(ASN) 下载地址" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:595 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281 msgid "GeoIP(DAT) Url" msgstr "GeoIP(DAT) 下载地址" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:592 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278 msgid "GeoIP(MMDB) Url" msgstr "GeoIP(MMDB) 下载地址" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:589 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275 msgid "GeoSite Url" msgstr "GeoSite 下载地址" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:601 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287 msgid "GeoX Auto Update" msgstr "定时更新GeoX文件" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:579 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:265 msgid "GeoX Config" msgstr "GeoX 配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:604 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290 msgid "GeoX Update Interval" msgstr "GeoX 文件更新间隔" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:351 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:38 msgid "Global Mode" msgstr "全局模式" @@ -310,212 +308,222 @@ msgstr "全局模式" msgid "Grant access to mihomo procedures" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:402 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:88 msgid "HTTP Port" msgstr "HTTP 端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39 msgid "How To Use" msgstr "使用说明" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:535 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221 msgid "IP" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:182 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:43 msgid "IPv4 DNS Hijack" msgstr "IPv4 DNS 劫持" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:188 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:49 msgid "IPv4 Proxy" msgstr "IPv4 代理" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:509 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195 msgid "IPv6" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:185 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:46 msgid "IPv6 DNS Hijack" msgstr "IPv6 DNS 劫持" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:191 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:52 msgid "IPv6 Proxy" msgstr "IPv6 代理" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:397 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:83 msgid "Inbound Config" msgstr "入站配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:247 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:108 msgid "Interface" msgstr "接口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:197 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:58 msgid "Lan Proxy" msgstr "局域网代理" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:337 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:82 msgid "Local" msgstr "本地" -#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:30 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:36 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53 msgid "Log" msgstr "日志" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:343 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:30 msgid "Log Level" msgstr "日志级别" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:450 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:136 msgid "MTU" msgstr "最大传输单元" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:355 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:42 msgid "Match Process" msgstr "匹配进程" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:574 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260 msgid "Matcher" msgstr "匹配" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:587 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:273 msgid "Memory Conservative Loader" msgstr "为内存受限设备优化的加载器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39 #: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3 msgid "MihomoTProxy" msgstr "" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:410 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:96 msgid "Mixed Port" msgstr "混合端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125 -msgid "Mixin" -msgstr "混入" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:339 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:21 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:29 msgid "Mixin Config" msgstr "混入配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:610 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:296 msgid "Mixin File Content" msgstr "混入文件内容" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:202 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:350 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:26 +msgid "Mixin Option" +msgstr "混入选项" + +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:37 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:63 msgid "Mode" msgstr "模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:558 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:577 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:244 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263 msgid "Nameserver" msgstr "DNS 服务器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15 msgid "Not Running" msgstr "未在运行" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:99 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:89 msgid "Open Dashboard" msgstr "打开面板" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:360 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:47 msgid "Outbound Interface" msgstr "出站接口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:422 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:108 msgid "Overwrite Authentication" msgstr "覆盖身份验证" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:483 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:169 msgid "Overwrite Fake-IP Filter" msgstr "覆盖 Fake-IP 过滤列表" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:518 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204 msgid "Overwrite Hosts" msgstr "覆盖 Hosts" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:537 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:223 msgid "Overwrite Nameserver" msgstr "覆盖 DNS 服务器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:560 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:246 msgid "Overwrite Nameserver Policy" msgstr "覆盖 DNS 服务器查询策略" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:439 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:125 msgid "Password" msgstr "密码" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298 msgid "Please go to the editor tab to edit the file for mixin" msgstr "请前往编辑器标签编辑用于混入的文件" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:78 msgid "Prefer" msgstr "优先" +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:18 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:21 +msgid "Profile" +msgstr "配置文件" + #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:37 msgid "Profile for Startup" msgstr "用于启动的配置文件" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:166 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:27 +#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:37 msgid "Proxy Config" msgstr "代理配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:174 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:35 msgid "Redirect Mode" msgstr "Redirect 模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:414 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:100 msgid "Redirect Port" msgstr "Redirect 端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:79 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:69 msgid "Reload Service" msgstr "重载服务" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:336 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:81 msgid "Remote" msgstr "远程" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:503 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:189 msgid "Respect Rules" msgstr "遵循分流规则" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:86 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:76 msgid "Restart Service" msgstr "重启服务" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:194 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:55 msgid "Router Proxy" msgstr "路由器代理" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:39 msgid "Rule Mode" msgstr "规则模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15 msgid "Running" msgstr "运行中" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:406 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:92 msgid "SOCKS Port" msgstr "SOCKS 端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:394 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:80 msgid "Save Proxy Selection" msgstr "保存节点/策略组选择" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:134 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:114 msgid "Scheduled Restart" msgstr "定时重启" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:54 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:87 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:65 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:98 msgid "Scroll To Bottom" msgstr "滚动到底部" @@ -524,102 +532,98 @@ msgstr "滚动到底部" msgid "Service is not running." msgstr "服务未在运行。" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:445 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131 msgid "Stack" msgstr "栈" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:586 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:272 msgid "Standard Loader" msgstr "标准加载器" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:130 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:110 msgid "Start Delay" msgstr "启动延迟" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:128 -msgid "Startup Config" -msgstr "启动配置" - -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:51 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:41 msgid "Status" msgstr "状态" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:283 -msgid "Subscription Config" -msgstr "订阅配置" +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:28 +msgid "Subscription" +msgstr "订阅" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:289 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:34 msgid "Subscription Name" msgstr "订阅名称" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:321 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:66 msgid "Subscription Url" msgstr "订阅链接" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:119 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:107 #: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33 msgid "Subscription:" msgstr "订阅:" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:366 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:53 msgid "TCP Keep Alive Idle" msgstr "TCP Keep Alive 空闲" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:370 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:57 msgid "TCP Keep Alive Interval" msgstr "TCP Keep Alive 间隔" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:173 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:34 msgid "TCP Proxy Mode" msgstr "TCP 代理模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:175 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:179 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:36 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:40 msgid "TPROXY Mode" msgstr "TPROXY 模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:418 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:104 msgid "TPROXY Port" msgstr "TPROXY 端口" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:443 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:129 msgid "TUN Config" msgstr "TUN 配置" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:176 -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:180 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:37 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:41 msgid "TUN Mode" msgstr "TUN 模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:142 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:122 msgid "Test Profile" msgstr "检查配置文件" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:297 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:42 msgid "Total" msgstr "总量" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:168 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:29 msgid "Transparent Proxy" msgstr "透明代理" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39 msgid "Transparent Proxy with Mihomo on OpenWrt." msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:551 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237 msgid "Type" msgstr "类型" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:39 msgid "UDP Proxy Mode" msgstr "UDP 代理模式" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:376 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:63 msgid "UI Name" msgstr "UI 名称" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:379 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:65 msgid "UI Url" msgstr "UI 下载地址" @@ -628,38 +632,38 @@ msgstr "UI 下载地址" msgid "Unknown" msgstr "未知" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:315 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:60 msgid "Update" msgstr "更新" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:307 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:52 msgid "Update At" msgstr "更新时间" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:93 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:83 msgid "Update Dashboard" msgstr "更新面板" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:122 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:20 msgid "Upload Profile" msgstr "上传配置文件" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:515 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201 msgid "Use Hosts" msgstr "使用 Hosts" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:512 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198 msgid "Use System Hosts" msgstr "使用系统的 Hosts" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:292 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:37 msgid "Used" msgstr "已使用" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:325 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:70 msgid "User Agent" msgstr "用户代理(UA)" -#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:436 +#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:122 msgid "Username" msgstr "用户名" diff --git a/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json b/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json index 90c6b2ec3..b2860282b 100644 --- a/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json +++ b/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json @@ -2,8 +2,7 @@ "admin/services/mihomo": { "title": "MihomoTProxy", "action": { - "type": "alias", - "path": "admin/services/mihomo/config" + "type": "firstchild" }, "depends": { "acl": [ "luci-app-mihomo" ], @@ -11,16 +10,40 @@ } }, "admin/services/mihomo/config": { - "title": "Config", + "title": "App Config", "order": 10, "action": { "type": "view", - "path": "mihomo/config" + "path": "mihomo/app" + } + }, + "admin/services/mihomo/profile": { + "title": "Profile", + "order": 20, + "action": { + "type": "view", + "path": "mihomo/profile" + } + }, + "admin/services/mihomo/mixin": { + "title": "Mixin Config", + "order": 30, + "action": { + "type": "view", + "path": "mihomo/mixin" + } + }, + "admin/services/mihomo/proxy": { + "title": "Proxy Config", + "order": 40, + "action": { + "type": "view", + "path": "mihomo/proxy" } }, "admin/services/mihomo/editor": { "title": "Editor", - "order": 20, + "order": 50, "action": { "type": "view", "path": "mihomo/editor" @@ -28,7 +51,7 @@ }, "admin/services/mihomo/log": { "title": "Log", - "order": 30, + "order": 60, "action": { "type": "view", "path": "mihomo/log" diff --git a/luci-app-passwall/Makefile b/luci-app-passwall/Makefile index 3e3d1585a..2b724683e 100644 --- a/luci-app-passwall/Makefile +++ b/luci-app-passwall/Makefile @@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-passwall PKG_VERSION:=24.12.17 -PKG_RELEASE:=1 +PKG_RELEASE:=2 PKG_CONFIG_DEPENDS:= \ CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \ diff --git a/luci-app-passwall/root/usr/share/passwall/app.sh b/luci-app-passwall/root/usr/share/passwall/app.sh index 7d1f95afd..40b657cd6 100755 --- a/luci-app-passwall/root/usr/share/passwall/app.sh +++ b/luci-app-passwall/root/usr/share/passwall/app.sh @@ -1969,7 +1969,7 @@ start() { } [ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh start set_cache_var "USE_TABLES" "$USE_TABLES" - [ -z $(get_cache_var "ACL_default_dns_port") ] && lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1 + [ -z "$(get_cache_var "ACL_default_dns_port")" ] && lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1 if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then bridge_nf_ipt=$(sysctl -e -n net.bridge.bridge-nf-call-iptables) set_cache_var "bak_bridge_nf_ipt" "$bridge_nf_ipt" @@ -1999,7 +1999,7 @@ stop() { source $APP_PATH/helper_smartdns.sh del rm -rf $GLOBAL_DNSMASQ_CONF rm -rf $GLOBAL_DNSMASQ_CONF_PATH - [ -z $(get_cache_var "ACL_default_dns_port") ] && lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0 + [ -z "$(get_cache_var "ACL_default_dns_port")" ] && lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0 bak_bridge_nf_ipt=$(get_cache_var "bak_bridge_nf_ipt") [ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1 bak_bridge_nf_ip6t=$(get_cache_var "bak_bridge_nf_ip6t") diff --git a/luci-app-passwall/root/usr/share/passwall/iptables.sh b/luci-app-passwall/root/usr/share/passwall/iptables.sh index 9f82a1fb6..826297bf8 100755 --- a/luci-app-passwall/root/usr/share/passwall/iptables.sh +++ b/luci-app-passwall/root/usr/share/passwall/iptables.sh @@ -214,11 +214,11 @@ load_acl() { [ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS [ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS - [ -n $(get_cache_var "ACL_${sid}_tcp_node") ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node") - [ -n $(get_cache_var "ACL_${sid}_udp_node") ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node") - [ -n $(get_cache_var "ACL_${sid}_tcp_port") ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port") - [ -n $(get_cache_var "ACL_${sid}_udp_port") ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port") - [ -n $(get_cache_var "ACL_${sid}_dns_port") ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") + [ -n "$(get_cache_var "ACL_${sid}_tcp_node")" ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node") + [ -n "$(get_cache_var "ACL_${sid}_udp_node")" ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node") + [ -n "$(get_cache_var "ACL_${sid}_tcp_port")" ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port") + [ -n "$(get_cache_var "ACL_${sid}_udp_port")" ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port") + [ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") use_shunt_tcp=0 use_shunt_udp=0 diff --git a/luci-app-passwall/root/usr/share/passwall/nftables.sh b/luci-app-passwall/root/usr/share/passwall/nftables.sh index 6ba24c1ec..27ff6638e 100755 --- a/luci-app-passwall/root/usr/share/passwall/nftables.sh +++ b/luci-app-passwall/root/usr/share/passwall/nftables.sh @@ -274,11 +274,11 @@ load_acl() { [ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS [ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS - [ -n $(get_cache_var "ACL_${sid}_tcp_node") ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node") - [ -n $(get_cache_var "ACL_${sid}_udp_node") ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node") - [ -n $(get_cache_var "ACL_${sid}_tcp_port") ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port") - [ -n $(get_cache_var "ACL_${sid}_udp_port") ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port") - [ -n $(get_cache_var "ACL_${sid}_dns_port") ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") + [ -n "$(get_cache_var "ACL_${sid}_tcp_node")" ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node") + [ -n "$(get_cache_var "ACL_${sid}_udp_node")" ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node") + [ -n "$(get_cache_var "ACL_${sid}_tcp_port")" ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port") + [ -n "$(get_cache_var "ACL_${sid}_udp_port")" ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port") + [ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port") use_shunt_tcp=0 use_shunt_udp=0 diff --git a/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh b/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh index f76b36874..a7d403fa7 100755 --- a/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh +++ b/luci-app-passwall/root/usr/share/passwall/socks_auto_switch.sh @@ -82,7 +82,7 @@ test_auto_switch() { local b_nodes=$1 local now_node=$2 [ -z "$now_node" ] && { - if [ -n $(/usr/share/${CONFIG}/app.sh get_cache_var "socks_${id}") ]; then + if [ -n "$(/usr/share/${CONFIG}/app.sh get_cache_var "socks_${id}")" ]; then now_node=$(/usr/share/${CONFIG}/app.sh get_cache_var "socks_${id}") else #echolog "自动切换检测:未知错误" diff --git a/mihomo/files/mihomo.conf b/mihomo/files/mihomo.conf index 4949dbc9c..68e409587 100644 --- a/mihomo/files/mihomo.conf +++ b/mihomo/files/mihomo.conf @@ -3,12 +3,12 @@ config status 'status' config config 'config' option 'init' '1' option 'enabled' '0' + option 'profile' 'subscription:subscription' option 'start_delay' '0' option 'scheduled_restart' '0' option 'cron_expression' '0 3 * * *' - option 'profile' 'subscription:subscription' - option 'mixin' '1' option 'test_profile' '1' + option 'mixin' '1' config proxy 'proxy' option 'transparent_proxy' '1' @@ -57,7 +57,7 @@ config mixin 'mixin' option 'tcp_keep_alive_idle' '600' option 'tcp_keep_alive_interval' '15' option 'ui_name' 'metacubexd' - option 'ui_url' 'https://ghp.ci/https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip' + option 'ui_url' 'https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip' option 'api_port' '9090' option 'api_secret' '' option 'selection_cache' '1' @@ -90,10 +90,10 @@ config mixin 'mixin' option 'dns_nameserver_policy' '0' option 'geoip_format' 'dat' option 'geodata_loader' 'memconservative' - option 'geosite_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat' - option 'geoip_mmdb_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.metadb' - option 'geoip_dat_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat' - option 'geoip_asn_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb' + option 'geosite_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat' + option 'geoip_mmdb_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.metadb' + option 'geoip_dat_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat' + option 'geoip_asn_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb' option 'geox_auto_update' '0' option 'geox_update_interval' '24' option 'mixin_file_content' '0'