From c8f19a6b5286d266c898b1e1382042c58fa7f4b4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sun, 2 Apr 2023 09:22:12 +0800 Subject: [PATCH] update 2023-04-02 09:22:12 --- haproxy/Makefile | 4 +- haproxy/get-latest-patches.sh | 2 +- homeproxy/Makefile | 9 +- .../resources/view/homeproxy/client.js | 81 +-- .../resources/view/homeproxy/server.js | 2 +- .../resources/view/homeproxy/status.js | 35 +- homeproxy/po/templates/homeproxy.pot | 582 ++++++++--------- homeproxy/po/zh_Hans/homeproxy.po | 588 +++++++++--------- .../etc/homeproxy/scripts/firewall_post.ut | 351 +++++------ .../homeproxy/scripts/generate_sing-box.uc | 18 +- homeproxy/root/etc/init.d/homeproxy | 17 +- .../root/usr/share/rpcd/ucode/luci.homeproxy | 1 + .../root/etc/mosdns/rule/geosite_cn.txt | 26 +- .../root/etc/mosdns/rule/geosite_no_cn.txt | 3 + v2ray-geodata/Makefile | 4 +- 15 files changed, 876 insertions(+), 847 deletions(-) diff --git a/haproxy/Makefile b/haproxy/Makefile index f1ca348cf..17f893480 100644 --- a/haproxy/Makefile +++ b/haproxy/Makefile @@ -10,12 +10,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=haproxy -PKG_VERSION:=2.6.11 +PKG_VERSION:=2.6.12 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://www.haproxy.org/download/2.6/src -PKG_HASH:=e0bc430ac407747b077bc88ee6922b4616fa55a9e0f3ec84438dfb055eb9a715 +PKG_HASH:=58f9edb26bf3288f4b502658399281cc5d6478468bd178eafe579c8f41895854 PKG_MAINTAINER:=Thomas Heil , \ Christian Lachner diff --git a/haproxy/get-latest-patches.sh b/haproxy/get-latest-patches.sh index 3ba8f872e..c5f8c7031 100755 --- a/haproxy/get-latest-patches.sh +++ b/haproxy/get-latest-patches.sh @@ -1,7 +1,7 @@ #!/bin/sh CLONEURL=https://git.haproxy.org/git/haproxy-2.6.git -BASE_TAG=v2.6.11 +BASE_TAG=v2.6.12 TMP_REPODIR=tmprepo PATCHESDIR=patches diff --git a/homeproxy/Makefile b/homeproxy/Makefile index 9886ad207..861bba9a4 100644 --- a/homeproxy/Makefile +++ b/homeproxy/Makefile @@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-homeproxy -PKG_VERSION:=usertesting-0328 +PKG_VERSION:=dev-230402 LUCI_TITLE:=The modern ImmortalWrt proxy platform for ARM64/AMD64 LUCI_PKGARCH:=all @@ -18,7 +18,12 @@ LUCI_DEPENDS:= \ define Package/luci-app-homeproxy/conffiles /etc/config/homeproxy /etc/homeproxy/certs/ -/etc/homeproxy/resources/ +/etc/homeproxy/resources/geoip.db +/etc/homeproxy/resources/geoip.ver +/etc/homeproxy/resources/geosite.db +/etc/homeproxy/resources/geosite.ver +/etc/homeproxy/resources/direct_list.txt +/etc/homeproxy/resources/proxy_list.txt endef include $(TOPDIR)/feeds/luci/luci.mk diff --git a/homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js b/homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js index cff1e8117..823c19846 100644 --- a/homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js +++ b/homeproxy/htdocs/luci-static/resources/view/homeproxy/client.js @@ -14,6 +14,7 @@ 'require view'; 'require homeproxy as hp'; +'require tools.firewall as fwtool'; 'require tools.widgets as widgets'; var callServiceList = rpc.declare({ @@ -217,7 +218,8 @@ return view.extend({ o = s.taboption('routing', form.ListValue, 'proxy_mode', _('Proxy mode')); o.value('redirect', _('Redirect TCP')); - o.value('redirect_tproxy', _('Redirect TCP + TProxy UDP')); + if (features.hp_has_tproxy) + o.value('redirect_tproxy', _('Redirect TCP + TProxy UDP')); if (features.hp_has_tun) { o.value('redirect_tun', _('Redirect TCP + Tun UDP')); o.value('tun', _('Tun TCP/UDP')); @@ -824,20 +826,6 @@ return view.extend({ /* LAN IP policy start */ ss.tab('lan_ip_policy', _('LAN IP Policy')); - var ipaddrs = {}, ip6addrs = {}; - Object.keys(hosts).forEach(function(mac) { - var addrs = L.toArray(hosts[mac].ipaddrs || hosts[mac].ipv4); - - for (var i = 0; i < addrs.length; i++) - ipaddrs[addrs[i]] = hosts[mac].name || mac; - }); - Object.keys(hosts).forEach(function(mac) { - var addrs = L.toArray(hosts[mac].ip6addrs || hosts[mac].ipv6); - - for (var i = 0; i < addrs.length; i++) - ip6addrs[addrs[i]] = hosts[mac].name || mac; - }); - so = ss.taboption('lan_ip_policy', form.ListValue, 'lan_proxy_mode', _('Proxy filter mode')); so.value('disabled', _('Disable')); so.value('listed_only', _('Proxy listed only')); @@ -845,62 +833,39 @@ return view.extend({ so.default = 'disabled'; so.rmempty = false; - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_direct_ipv4_ips', _('Direct IPv4 IP-s')); - so.datatype = 'or(ip4addr, cidr4)'; + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_direct_ipv4_ips', _('Direct IPv4 IP-s'), null, 'ipv4', hosts, true); so.depends('lan_proxy_mode', 'except_listed'); - L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { - so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); - }); - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_direct_ipv6_ips', _('Direct IPv6 IP-s')); - so.datatype = 'or(ip6addr, cidr6)'; + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_direct_ipv6_ips', _('Direct IPv6 IP-s'), null, 'ipv6', hosts, true); + so.depends({'lan_proxy_mode': 'except_listed', 'homeproxy.config.ipv6_support': '1'}); + + so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_direct_mac_addrs', _('Direct MAC-s'), null, hosts); so.depends('lan_proxy_mode', 'except_listed'); - L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) { - so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6])); - }); - so.depends('homeproxy.config.ipv6_support', '1'); - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_proxy_ipv4_ips', _('Proxy IPv4 IP-s')); - so.datatype = 'or(ip4addr, cidr4)'; + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_proxy_ipv4_ips', _('Proxy IPv4 IP-s'), null, 'ipv4', hosts, true); so.depends('lan_proxy_mode', 'listed_only'); - L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { - so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); - }); - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_proxy_ipv6_ips', _('Proxy IPv6 IP-s')); - so.datatype = 'or(ip6addr, cidr6)'; + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_proxy_ipv6_ips', _('Proxy IPv6 IP-s'), null, 'ipv6', hosts, true); + so.depends({'lan_proxy_mode': 'listed_only', 'homeproxy.config.ipv6_support': '1'}); + + so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_proxy_mac_addrs', _('Proxy MAC-s'), null, hosts); so.depends('lan_proxy_mode', 'listed_only'); - L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) { - so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6])); - }); + + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_gaming_mode_ipv4_ips', _('Gaming mode IPv4 IP-s'), null, 'ipv4', hosts, true); + + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_gaming_mode_ipv6_ips', _('Gaming mode IPv6 IP-s'), null, 'ipv6', hosts, true); so.depends('homeproxy.config.ipv6_support', '1'); - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_gaming_mode_ipv4_ips', _('Gaming mode IPv4 IP-s')); - so.datatype = 'or(ip4addr, cidr4)'; - L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { - so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); - }); + so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_gaming_mode_mac_addrs', _('Gaming mode MAC-s'), null, hosts); - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_gaming_mode_ipv6_ips', _('Gaming mode IPv6 IP-s')); - so.datatype = 'or(ip6addr, cidr6)'; - L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) { - so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6])); - }); - so.depends('homeproxy.config.ipv6_support', '1'); - - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_global_proxy_ipv4_ips', _('Global proxy IPv4 IP-s')); - so.datatype = 'or(ip4addr, cidr4)'; - L.sortedKeys(ipaddrs, null, 'addr').forEach(function(ipv4) { - so.value(ipv4, '%s (%s)'.format(ipv4, ipaddrs[ipv4])); - }); + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_global_proxy_ipv4_ips', _('Global proxy IPv4 IP-s'), null, 'ipv4', hosts, true); so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true}); - so = ss.taboption('lan_ip_policy', form.DynamicList, 'lan_global_proxy_ipv6_ips', _('Global proxy IPv6 IP-s')); - so.datatype = 'or(ip6addr, cidr6)'; - L.sortedKeys(ip6addrs, null, 'addr').forEach(function(ipv6) { - so.value(ipv6, '%s (%s)'.format(ipv6, ip6addrs[ipv6])); - }); + so = fwtool.addIPOption(ss, 'lan_ip_policy', 'lan_global_proxy_ipv6_ips', _('Global proxy IPv6 IP-s'), null, 'ipv6', hosts, true); so.depends({'homeproxy.config.routing_mode': /^((?!custom).)+$/, 'homeproxy.config.ipv6_support': '1'}); + + so = fwtool.addMACOption(ss, 'lan_ip_policy', 'lan_global_proxy_mac_addrs', _('Global proxy MAC-s'), null, hosts); + so.depends({'homeproxy.config.routing_mode': 'custom', '!reverse': true}); /* LAN IP policy end */ /* WAN IP policy start */ diff --git a/homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js b/homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js index d2b1fba6d..481df2b36 100644 --- a/homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js +++ b/homeproxy/htdocs/luci-static/resources/view/homeproxy/server.js @@ -35,7 +35,7 @@ return view.extend({ o.default = o.disabled; o.rmempty = false; - s = m.section(form.GridSection, 'server'); + s = m.section(form.GridSection, 'server', _('Server settings')); s.addremove = true; s.rowcolors = true; s.sortable = true; diff --git a/homeproxy/htdocs/luci-static/resources/view/homeproxy/status.js b/homeproxy/htdocs/luci-static/resources/view/homeproxy/status.js index f5d784289..81e46c21e 100644 --- a/homeproxy/htdocs/luci-static/resources/view/homeproxy/status.js +++ b/homeproxy/htdocs/luci-static/resources/view/homeproxy/status.js @@ -9,6 +9,7 @@ 'require fs'; 'require poll'; 'require rpc'; +'require uci'; 'require ui'; 'require view'; @@ -74,7 +75,8 @@ function getResVersion(self, type) { }, [ _('Check update') ]), ' ', E('strong', { 'style': (res.error ? 'color:red' : 'color:green') }, - [ res.error ? 'not found' : res.version ]), + [ res.error ? 'not found' : res.version ] + ), ]); self.default = spanTemp; @@ -144,21 +146,30 @@ function getRuntimeLog(name) { } return view.extend({ - render: function() { + load: function() { + return Promise.all([ + uci.load('homeproxy') + ]); + }, + + render: function(data) { var m, s, o; + var routing_mode = uci.get(data[0], 'config', 'routing_mode') || 'bypass_mainland_china'; m = new form.Map('homeproxy'); s = m.section(form.NamedSection, 'config', 'homeproxy', _('Resources management')); s.anonymous = true; - o = s.option(form.DummyValue, '_geoip_version', _('GeoIP version')); - o.cfgvalue = function() { return getResVersion(this, 'geoip') }; - o.rawhtml = true; + if (routing_mode === 'custom') { + o = s.option(form.DummyValue, '_geoip_version', _('GeoIP version')); + o.cfgvalue = function() { return getResVersion(this, 'geoip') }; + o.rawhtml = true; - o = s.option(form.DummyValue, '_geosite_version', _('GeoSite version')); - o.cfgvalue = function() { return getResVersion(this, 'geosite') }; - o.rawhtml = true; + o = s.option(form.DummyValue, '_geosite_version', _('GeoSite version')); + o.cfgvalue = function() { return getResVersion(this, 'geosite') }; + o.rawhtml = true; + } o = s.option(form.DummyValue, '_china_ip4_version', _('China IPv4 list version')); o.cfgvalue = function() { return getResVersion(this, 'china_ip4') }; @@ -168,14 +179,14 @@ return view.extend({ o.cfgvalue = function() { return getResVersion(this, 'china_ip6') }; o.rawhtml = true; - o = s.option(form.DummyValue, '_gfw_list_version', _('GFW list version')); - o.cfgvalue = function() { return getResVersion(this, 'gfw_list') }; - o.rawhtml = true; - o = s.option(form.DummyValue, '_china_list_version', _('China list version')); o.cfgvalue = function() { return getResVersion(this, 'china_list') }; o.rawhtml = true; + o = s.option(form.DummyValue, '_gfw_list_version', _('GFW list version')); + o.cfgvalue = function() { return getResVersion(this, 'gfw_list') }; + o.rawhtml = true; + o = s.option(form.DummyValue, '_homeproxy_logview'); o.render = L.bind(getRuntimeLog, this, 'HomeProxy'); diff --git a/homeproxy/po/templates/homeproxy.pot b/homeproxy/po/templates/homeproxy.pot index f9902ea44..9640da10c 100644 --- a/homeproxy/po/templates/homeproxy.pot +++ b/homeproxy/po/templates/homeproxy.pot @@ -1,7 +1,7 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: htdocs/luci-static/resources/view/homeproxy/status.js:127 +#: htdocs/luci-static/resources/view/homeproxy/status.js:129 msgid "%s log" msgstr "" @@ -13,7 +13,7 @@ msgstr "" msgid "360" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:395 +#: htdocs/luci-static/resources/view/homeproxy/client.js:397 msgid "4 or 6. Not limited if empty." msgstr "" @@ -31,15 +31,15 @@ msgstr "" msgid "Accept no header" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:805 +#: htdocs/luci-static/resources/view/homeproxy/client.js:807 msgid "Access Control" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:653 +#: htdocs/luci-static/resources/view/homeproxy/client.js:655 msgid "Add a DNS rule" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:564 +#: htdocs/luci-static/resources/view/homeproxy/client.js:566 msgid "Add a DNS server" msgstr "" @@ -47,11 +47,11 @@ msgstr "" msgid "Add a node" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:304 +#: htdocs/luci-static/resources/view/homeproxy/client.js:306 msgid "Add a routing node" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:380 +#: htdocs/luci-static/resources/view/homeproxy/client.js:382 msgid "Add a routing rule" msgstr "" @@ -59,24 +59,24 @@ msgstr "" msgid "Add a server" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:578 +#: htdocs/luci-static/resources/view/homeproxy/client.js:580 #: htdocs/luci-static/resources/view/homeproxy/node.js:484 msgid "Address" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:582 +#: htdocs/luci-static/resources/view/homeproxy/client.js:584 msgid "Address resolver" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:613 +#: htdocs/luci-static/resources/view/homeproxy/client.js:615 msgid "Address strategy" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:162 +#: htdocs/luci-static/resources/view/homeproxy/client.js:163 msgid "Aliyun Public DNS (223.5.5.5)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:196 +#: htdocs/luci-static/resources/view/homeproxy/client.js:197 msgid "All ports" msgstr "" @@ -98,11 +98,11 @@ msgstr "" msgid "Allowed payload size is in the request." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:64 +#: htdocs/luci-static/resources/view/homeproxy/status.js:65 msgid "Already at the latest version." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:61 +#: htdocs/luci-static/resources/view/homeproxy/status.js:62 msgid "Already in updating." msgstr "" @@ -175,16 +175,16 @@ msgstr "" msgid "Base64" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:252 +#: htdocs/luci-static/resources/view/homeproxy/client.js:254 msgid "Based on google/gvisor (recommended)." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:331 -#: htdocs/luci-static/resources/view/homeproxy/client.js:818 +#: htdocs/luci-static/resources/view/homeproxy/client.js:333 +#: htdocs/luci-static/resources/view/homeproxy/client.js:820 msgid "Bind interface" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:819 +#: htdocs/luci-static/resources/view/homeproxy/client.js:821 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect." msgstr "" @@ -193,33 +193,33 @@ msgstr "" msgid "Blacklist mode" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:282 -#: htdocs/luci-static/resources/view/homeproxy/client.js:506 -#: htdocs/luci-static/resources/view/homeproxy/client.js:769 +#: htdocs/luci-static/resources/view/homeproxy/client.js:284 +#: htdocs/luci-static/resources/view/homeproxy/client.js:508 +#: htdocs/luci-static/resources/view/homeproxy/client.js:771 msgid "Block" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:535 -#: htdocs/luci-static/resources/view/homeproxy/client.js:786 +#: htdocs/luci-static/resources/view/homeproxy/client.js:537 +#: htdocs/luci-static/resources/view/homeproxy/client.js:788 msgid "Block DNS queries" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:398 -#: htdocs/luci-static/resources/view/homeproxy/client.js:419 -#: htdocs/luci-static/resources/view/homeproxy/client.js:685 +#: htdocs/luci-static/resources/view/homeproxy/client.js:400 +#: htdocs/luci-static/resources/view/homeproxy/client.js:421 +#: htdocs/luci-static/resources/view/homeproxy/client.js:687 #: htdocs/luci-static/resources/view/homeproxy/server.js:556 msgid "Both" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:265 +#: htdocs/luci-static/resources/view/homeproxy/client.js:267 msgid "Bypass CN traffic" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:183 +#: htdocs/luci-static/resources/view/homeproxy/client.js:184 msgid "Bypass mainland China" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:266 +#: htdocs/luci-static/resources/view/homeproxy/client.js:268 msgid "Bypass mainland China traffic via firewall rules by default." msgstr "" @@ -236,19 +236,19 @@ msgstr "" msgid "Certificate path" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:74 +#: htdocs/luci-static/resources/view/homeproxy/status.js:75 msgid "Check update" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:163 +#: htdocs/luci-static/resources/view/homeproxy/status.js:174 msgid "China IPv4 list version" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:167 +#: htdocs/luci-static/resources/view/homeproxy/status.js:178 msgid "China IPv6 list version" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:175 +#: htdocs/luci-static/resources/view/homeproxy/status.js:182 msgid "China list version" msgstr "" @@ -261,11 +261,11 @@ msgstr "" msgid "Cipher suites" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:159 +#: htdocs/luci-static/resources/view/homeproxy/client.js:160 msgid "Cisco Public DNS (208.67.222.222)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:134 +#: htdocs/luci-static/resources/view/homeproxy/status.js:136 msgid "Clean log" msgstr "" @@ -273,73 +273,73 @@ msgstr "" msgid "Client Settings" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:158 +#: htdocs/luci-static/resources/view/homeproxy/client.js:159 msgid "CloudFlare Public DNS (1.1.1.1)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:122 -#: htdocs/luci-static/resources/view/homeproxy/status.js:97 +#: htdocs/luci-static/resources/view/homeproxy/client.js:123 +#: htdocs/luci-static/resources/view/homeproxy/status.js:99 msgid "Collecting data..." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:197 +#: htdocs/luci-static/resources/view/homeproxy/client.js:198 msgid "Common ports only (bypass P2P traffic)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:185 +#: htdocs/luci-static/resources/view/homeproxy/client.js:186 msgid "Custom routing" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:692 +#: htdocs/luci-static/resources/view/homeproxy/client.js:694 msgid "DNS" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:644 +#: htdocs/luci-static/resources/view/homeproxy/client.js:646 msgid "DNS Rules" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:555 +#: htdocs/luci-static/resources/view/homeproxy/client.js:557 msgid "DNS Servers" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:519 +#: htdocs/luci-static/resources/view/homeproxy/client.js:521 msgid "DNS Settings" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:653 +#: htdocs/luci-static/resources/view/homeproxy/client.js:655 msgid "DNS rule" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:155 -#: htdocs/luci-static/resources/view/homeproxy/client.js:564 +#: htdocs/luci-static/resources/view/homeproxy/client.js:156 +#: htdocs/luci-static/resources/view/homeproxy/client.js:566 msgid "DNS server" msgstr "" #: htdocs/luci-static/resources/homeproxy.js:17 -#: htdocs/luci-static/resources/view/homeproxy/client.js:406 -#: htdocs/luci-static/resources/view/homeproxy/client.js:672 +#: htdocs/luci-static/resources/view/homeproxy/client.js:408 +#: htdocs/luci-static/resources/view/homeproxy/client.js:674 msgid "Default" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:534 -#: htdocs/luci-static/resources/view/homeproxy/client.js:589 -#: htdocs/luci-static/resources/view/homeproxy/client.js:785 +#: htdocs/luci-static/resources/view/homeproxy/client.js:536 +#: htdocs/luci-static/resources/view/homeproxy/client.js:591 +#: htdocs/luci-static/resources/view/homeproxy/client.js:787 msgid "Default DNS (issued by WAN)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:529 +#: htdocs/luci-static/resources/view/homeproxy/client.js:531 msgid "Default DNS server" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:524 +#: htdocs/luci-static/resources/view/homeproxy/client.js:526 msgid "Default DNS strategy" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:620 +#: htdocs/luci-static/resources/view/homeproxy/client.js:622 msgid "Default domain strategy for resolving the domain names." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:275 +#: htdocs/luci-static/resources/view/homeproxy/client.js:277 msgid "Default outbound" msgstr "" @@ -351,33 +351,37 @@ msgstr "" msgid "Default server name" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:281 -#: htdocs/luci-static/resources/view/homeproxy/client.js:344 -#: htdocs/luci-static/resources/view/homeproxy/client.js:505 -#: htdocs/luci-static/resources/view/homeproxy/client.js:630 -#: htdocs/luci-static/resources/view/homeproxy/client.js:768 +#: htdocs/luci-static/resources/view/homeproxy/client.js:283 +#: htdocs/luci-static/resources/view/homeproxy/client.js:346 +#: htdocs/luci-static/resources/view/homeproxy/client.js:507 +#: htdocs/luci-static/resources/view/homeproxy/client.js:632 +#: htdocs/luci-static/resources/view/homeproxy/client.js:770 #: htdocs/luci-static/resources/view/homeproxy/node.js:468 msgid "Direct" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:954 +#: htdocs/luci-static/resources/view/homeproxy/client.js:919 msgid "Direct Domain List" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:848 -#: htdocs/luci-static/resources/view/homeproxy/client.js:916 +#: htdocs/luci-static/resources/view/homeproxy/client.js:836 +#: htdocs/luci-static/resources/view/homeproxy/client.js:881 msgid "Direct IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:855 -#: htdocs/luci-static/resources/view/homeproxy/client.js:919 +#: htdocs/luci-static/resources/view/homeproxy/client.js:839 +#: htdocs/luci-static/resources/view/homeproxy/client.js:884 msgid "Direct IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:139 -#: htdocs/luci-static/resources/view/homeproxy/client.js:147 -#: htdocs/luci-static/resources/view/homeproxy/client.js:280 #: htdocs/luci-static/resources/view/homeproxy/client.js:842 +msgid "Direct MAC-s" +msgstr "" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:140 +#: htdocs/luci-static/resources/view/homeproxy/client.js:148 +#: htdocs/luci-static/resources/view/homeproxy/client.js:282 +#: htdocs/luci-static/resources/view/homeproxy/client.js:830 #: htdocs/luci-static/resources/view/homeproxy/node.js:533 #: htdocs/luci-static/resources/view/homeproxy/node.js:552 #: htdocs/luci-static/resources/view/homeproxy/node.js:1071 @@ -386,7 +390,7 @@ msgstr "" msgid "Disable" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:546 +#: htdocs/luci-static/resources/view/homeproxy/client.js:548 msgid "Disable DNS cache" msgstr "" @@ -403,15 +407,15 @@ msgstr "" msgid "Disable TLS ALPN challenge" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:798 +#: htdocs/luci-static/resources/view/homeproxy/client.js:800 msgid "Disable cache and save cache in this query." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:549 +#: htdocs/luci-static/resources/view/homeproxy/client.js:551 msgid "Disable cache expire" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:797 +#: htdocs/luci-static/resources/view/homeproxy/client.js:799 msgid "Disable dns cache" msgstr "" @@ -426,28 +430,28 @@ msgid "" "(IPv4) / 1232 (IPv6) bytes in size." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:437 -#: htdocs/luci-static/resources/view/homeproxy/client.js:704 +#: htdocs/luci-static/resources/view/homeproxy/client.js:439 +#: htdocs/luci-static/resources/view/homeproxy/client.js:706 msgid "Domain keyword" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:428 -#: htdocs/luci-static/resources/view/homeproxy/client.js:695 +#: htdocs/luci-static/resources/view/homeproxy/client.js:430 +#: htdocs/luci-static/resources/view/homeproxy/client.js:697 msgid "Domain name" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:441 -#: htdocs/luci-static/resources/view/homeproxy/client.js:708 +#: htdocs/luci-static/resources/view/homeproxy/client.js:443 +#: htdocs/luci-static/resources/view/homeproxy/client.js:710 msgid "Domain regex" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:325 +#: htdocs/luci-static/resources/view/homeproxy/client.js:327 #: htdocs/luci-static/resources/view/homeproxy/server.js:535 msgid "Domain strategy" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:433 -#: htdocs/luci-static/resources/view/homeproxy/client.js:700 +#: htdocs/luci-static/resources/view/homeproxy/client.js:435 +#: htdocs/luci-static/resources/view/homeproxy/client.js:702 msgid "Domain suffix" msgstr "" @@ -514,10 +518,10 @@ msgstr "" msgid "Email" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:313 -#: htdocs/luci-static/resources/view/homeproxy/client.js:389 -#: htdocs/luci-static/resources/view/homeproxy/client.js:573 -#: htdocs/luci-static/resources/view/homeproxy/client.js:662 +#: htdocs/luci-static/resources/view/homeproxy/client.js:315 +#: htdocs/luci-static/resources/view/homeproxy/client.js:391 +#: htdocs/luci-static/resources/view/homeproxy/client.js:575 +#: htdocs/luci-static/resources/view/homeproxy/client.js:664 #: htdocs/luci-static/resources/view/homeproxy/server.js:30 #: htdocs/luci-static/resources/view/homeproxy/server.js:53 msgid "Enable" @@ -540,7 +544,7 @@ msgstr "" msgid "Enable UDP fragmentation." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:259 +#: htdocs/luci-static/resources/view/homeproxy/client.js:261 msgid "Enable endpoint-independent NAT" msgstr "" @@ -567,13 +571,13 @@ msgstr "" #: htdocs/luci-static/resources/homeproxy.js:254 #: htdocs/luci-static/resources/homeproxy.js:263 #: htdocs/luci-static/resources/homeproxy.js:265 -#: htdocs/luci-static/resources/view/homeproxy/client.js:75 -#: htdocs/luci-static/resources/view/homeproxy/client.js:173 -#: htdocs/luci-static/resources/view/homeproxy/client.js:175 -#: htdocs/luci-static/resources/view/homeproxy/client.js:203 -#: htdocs/luci-static/resources/view/homeproxy/client.js:208 -#: htdocs/luci-static/resources/view/homeproxy/client.js:947 -#: htdocs/luci-static/resources/view/homeproxy/client.js:976 +#: htdocs/luci-static/resources/view/homeproxy/client.js:76 +#: htdocs/luci-static/resources/view/homeproxy/client.js:174 +#: htdocs/luci-static/resources/view/homeproxy/client.js:176 +#: htdocs/luci-static/resources/view/homeproxy/client.js:204 +#: htdocs/luci-static/resources/view/homeproxy/client.js:209 +#: htdocs/luci-static/resources/view/homeproxy/client.js:912 +#: htdocs/luci-static/resources/view/homeproxy/client.js:941 #: htdocs/luci-static/resources/view/homeproxy/node.js:423 #: htdocs/luci-static/resources/view/homeproxy/node.js:522 #: htdocs/luci-static/resources/view/homeproxy/node.js:1087 @@ -622,56 +626,64 @@ msgstr "" msgid "GET" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:171 +#: htdocs/luci-static/resources/view/homeproxy/status.js:186 msgid "GFW list version" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:182 +#: htdocs/luci-static/resources/view/homeproxy/client.js:183 msgid "GFWList" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:878 +#: htdocs/luci-static/resources/view/homeproxy/client.js:854 msgid "Gaming mode IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:884 +#: htdocs/luci-static/resources/view/homeproxy/client.js:856 msgid "Gaming mode IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:453 +#: htdocs/luci-static/resources/view/homeproxy/client.js:859 +msgid "Gaming mode MAC-s" +msgstr "" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:455 msgid "GeoIP" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:155 +#: htdocs/luci-static/resources/view/homeproxy/status.js:165 msgid "GeoIP version" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:159 +#: htdocs/luci-static/resources/view/homeproxy/status.js:169 msgid "GeoSite version" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:445 -#: htdocs/luci-static/resources/view/homeproxy/client.js:712 +#: htdocs/luci-static/resources/view/homeproxy/client.js:447 +#: htdocs/luci-static/resources/view/homeproxy/client.js:714 msgid "Geosite" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:186 +#: htdocs/luci-static/resources/view/homeproxy/client.js:187 msgid "Global" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:891 +#: htdocs/luci-static/resources/view/homeproxy/client.js:861 msgid "Global proxy IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:898 +#: htdocs/luci-static/resources/view/homeproxy/client.js:864 msgid "Global proxy IPv6 IP-s" msgstr "" +#: htdocs/luci-static/resources/view/homeproxy/client.js:867 +msgid "Global proxy MAC-s" +msgstr "" + #: htdocs/luci-static/resources/view/homeproxy/server.js:28 msgid "Global settings" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:160 +#: htdocs/luci-static/resources/view/homeproxy/client.js:161 msgid "Google Public DNS (8.8.8.8)" msgstr "" @@ -679,8 +691,8 @@ msgstr "" msgid "Grant access to homeproxy configuration" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:423 -#: htdocs/luci-static/resources/view/homeproxy/client.js:689 +#: htdocs/luci-static/resources/view/homeproxy/client.js:425 +#: htdocs/luci-static/resources/view/homeproxy/client.js:691 #: htdocs/luci-static/resources/view/homeproxy/node.js:469 #: htdocs/luci-static/resources/view/homeproxy/node.js:767 #: htdocs/luci-static/resources/view/homeproxy/server.js:59 @@ -696,9 +708,9 @@ msgstr "" msgid "Handshake server port" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:54 -#: htdocs/luci-static/resources/view/homeproxy/client.js:56 -#: htdocs/luci-static/resources/view/homeproxy/client.js:109 +#: htdocs/luci-static/resources/view/homeproxy/client.js:55 +#: htdocs/luci-static/resources/view/homeproxy/client.js:57 +#: htdocs/luci-static/resources/view/homeproxy/client.js:110 #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:3 msgid "HomeProxy" msgstr "" @@ -715,16 +727,16 @@ msgstr "" msgid "Hysteria" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:462 -#: htdocs/luci-static/resources/view/homeproxy/client.js:725 +#: htdocs/luci-static/resources/view/homeproxy/client.js:464 +#: htdocs/luci-static/resources/view/homeproxy/client.js:727 msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:394 +#: htdocs/luci-static/resources/view/homeproxy/client.js:396 msgid "IP version" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:396 +#: htdocs/luci-static/resources/view/homeproxy/client.js:398 msgid "IPv4" msgstr "" @@ -732,7 +744,7 @@ msgstr "" msgid "IPv4 only" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:397 +#: htdocs/luci-static/resources/view/homeproxy/client.js:399 msgid "IPv6" msgstr "" @@ -740,7 +752,7 @@ msgstr "" msgid "IPv6 only" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:228 +#: htdocs/luci-static/resources/view/homeproxy/client.js:230 msgid "IPv6 support" msgstr "" @@ -760,7 +772,7 @@ msgid "" "If set, the requested domain name will be resolved to IP before routing." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:326 +#: htdocs/luci-static/resources/view/homeproxy/client.js:328 msgid "" "If set, the server domain name will be resolved to IP before connecting.
dns.strategy will be used if empty." @@ -789,17 +801,17 @@ msgstr "" msgid "Import share links" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:811 +#: htdocs/luci-static/resources/view/homeproxy/client.js:813 msgid "Interface Control" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:411 -#: htdocs/luci-static/resources/view/homeproxy/client.js:677 +#: htdocs/luci-static/resources/view/homeproxy/client.js:413 +#: htdocs/luci-static/resources/view/homeproxy/client.js:679 msgid "Invert" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:412 -#: htdocs/luci-static/resources/view/homeproxy/client.js:678 +#: htdocs/luci-static/resources/view/homeproxy/client.js:414 +#: htdocs/luci-static/resources/view/homeproxy/client.js:680 msgid "Invert match result." msgstr "" @@ -807,18 +819,18 @@ msgstr "" msgid "Key path" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:825 +#: htdocs/luci-static/resources/view/homeproxy/client.js:827 msgid "LAN IP Policy" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:243 +#: htdocs/luci-static/resources/view/homeproxy/client.js:245 msgid "LWIP" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:308 -#: htdocs/luci-static/resources/view/homeproxy/client.js:384 -#: htdocs/luci-static/resources/view/homeproxy/client.js:568 -#: htdocs/luci-static/resources/view/homeproxy/client.js:657 +#: htdocs/luci-static/resources/view/homeproxy/client.js:310 +#: htdocs/luci-static/resources/view/homeproxy/client.js:386 +#: htdocs/luci-static/resources/view/homeproxy/client.js:570 +#: htdocs/luci-static/resources/view/homeproxy/client.js:659 #: htdocs/luci-static/resources/view/homeproxy/node.js:462 #: htdocs/luci-static/resources/view/homeproxy/server.js:47 msgid "Label" @@ -831,7 +843,7 @@ msgid "" "compatibility purposes only, use of alterId > 1 is not recommended." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:256 +#: htdocs/luci-static/resources/view/homeproxy/client.js:258 msgid "Less compatibility and sometimes better performance." msgstr "" @@ -849,11 +861,11 @@ msgstr "" msgid "List of supported application level protocols, in order of preference." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:813 +#: htdocs/luci-static/resources/view/homeproxy/client.js:815 msgid "Listen interfaces" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:95 +#: htdocs/luci-static/resources/view/homeproxy/status.js:97 msgid "Loading" msgstr "" @@ -861,11 +873,11 @@ msgstr "" msgid "Local address" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:112 +#: htdocs/luci-static/resources/view/homeproxy/status.js:114 msgid "Log file does not exist." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:105 +#: htdocs/luci-static/resources/view/homeproxy/status.js:107 msgid "Log is empty." msgstr "" @@ -873,94 +885,94 @@ msgstr "" msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:146 +#: htdocs/luci-static/resources/view/homeproxy/client.js:147 msgid "Main UDP node" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:138 +#: htdocs/luci-static/resources/view/homeproxy/client.js:139 msgid "Main node" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:454 +#: htdocs/luci-static/resources/view/homeproxy/client.js:456 msgid "Match GeoIP." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:463 -#: htdocs/luci-static/resources/view/homeproxy/client.js:726 +#: htdocs/luci-static/resources/view/homeproxy/client.js:465 +#: htdocs/luci-static/resources/view/homeproxy/client.js:728 msgid "Match IP CIDR." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:434 -#: htdocs/luci-static/resources/view/homeproxy/client.js:701 +#: htdocs/luci-static/resources/view/homeproxy/client.js:436 +#: htdocs/luci-static/resources/view/homeproxy/client.js:703 msgid "Match domain suffix." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:438 -#: htdocs/luci-static/resources/view/homeproxy/client.js:705 +#: htdocs/luci-static/resources/view/homeproxy/client.js:440 +#: htdocs/luci-static/resources/view/homeproxy/client.js:707 msgid "Match domain using keyword." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:442 -#: htdocs/luci-static/resources/view/homeproxy/client.js:709 +#: htdocs/luci-static/resources/view/homeproxy/client.js:444 +#: htdocs/luci-static/resources/view/homeproxy/client.js:711 msgid "Match domain using regular expression." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:429 -#: htdocs/luci-static/resources/view/homeproxy/client.js:696 +#: htdocs/luci-static/resources/view/homeproxy/client.js:431 +#: htdocs/luci-static/resources/view/homeproxy/client.js:698 msgid "Match full domain." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:446 -#: htdocs/luci-static/resources/view/homeproxy/client.js:713 +#: htdocs/luci-static/resources/view/homeproxy/client.js:448 +#: htdocs/luci-static/resources/view/homeproxy/client.js:715 msgid "Match geosite." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:763 +#: htdocs/luci-static/resources/view/homeproxy/client.js:765 msgid "Match outbound." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:483 -#: htdocs/luci-static/resources/view/homeproxy/client.js:746 +#: htdocs/luci-static/resources/view/homeproxy/client.js:485 +#: htdocs/luci-static/resources/view/homeproxy/client.js:748 msgid "Match port range. Format as START:/:END/START:END." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:478 -#: htdocs/luci-static/resources/view/homeproxy/client.js:741 +#: htdocs/luci-static/resources/view/homeproxy/client.js:480 +#: htdocs/luci-static/resources/view/homeproxy/client.js:743 msgid "Match port." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:488 -#: htdocs/luci-static/resources/view/homeproxy/client.js:751 +#: htdocs/luci-static/resources/view/homeproxy/client.js:490 +#: htdocs/luci-static/resources/view/homeproxy/client.js:753 msgid "Match process name." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:492 -#: htdocs/luci-static/resources/view/homeproxy/client.js:755 +#: htdocs/luci-static/resources/view/homeproxy/client.js:494 +#: htdocs/luci-static/resources/view/homeproxy/client.js:757 msgid "Match process path." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:450 -#: htdocs/luci-static/resources/view/homeproxy/client.js:717 +#: htdocs/luci-static/resources/view/homeproxy/client.js:452 +#: htdocs/luci-static/resources/view/homeproxy/client.js:719 msgid "Match source GeoIP." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:458 -#: htdocs/luci-static/resources/view/homeproxy/client.js:721 +#: htdocs/luci-static/resources/view/homeproxy/client.js:460 +#: htdocs/luci-static/resources/view/homeproxy/client.js:723 msgid "Match source IP CIDR." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:473 -#: htdocs/luci-static/resources/view/homeproxy/client.js:736 +#: htdocs/luci-static/resources/view/homeproxy/client.js:475 +#: htdocs/luci-static/resources/view/homeproxy/client.js:738 msgid "Match source port range. Format as START:/:END/START:END." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:468 -#: htdocs/luci-static/resources/view/homeproxy/client.js:731 +#: htdocs/luci-static/resources/view/homeproxy/client.js:470 +#: htdocs/luci-static/resources/view/homeproxy/client.js:733 msgid "Match source port." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:496 -#: htdocs/luci-static/resources/view/homeproxy/client.js:759 +#: htdocs/luci-static/resources/view/homeproxy/client.js:498 +#: htdocs/luci-static/resources/view/homeproxy/client.js:761 msgid "Match user name." msgstr "" @@ -1027,8 +1039,8 @@ msgstr "" msgid "Minimum streams" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:401 -#: htdocs/luci-static/resources/view/homeproxy/client.js:667 +#: htdocs/luci-static/resources/view/homeproxy/client.js:403 +#: htdocs/luci-static/resources/view/homeproxy/client.js:669 msgid "Mode" msgstr "" @@ -1040,7 +1052,7 @@ msgstr "" msgid "Multiplex protocol." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:56 +#: htdocs/luci-static/resources/view/homeproxy/client.js:57 msgid "NOT RUNNING" msgstr "" @@ -1052,8 +1064,8 @@ msgstr "" msgid "NaïveProxy" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:416 -#: htdocs/luci-static/resources/view/homeproxy/client.js:682 +#: htdocs/luci-static/resources/view/homeproxy/client.js:418 +#: htdocs/luci-static/resources/view/homeproxy/client.js:684 #: htdocs/luci-static/resources/view/homeproxy/server.js:553 msgid "Network" msgstr "" @@ -1082,7 +1094,7 @@ msgstr "" msgid "No valid share link found." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:318 +#: htdocs/luci-static/resources/view/homeproxy/client.js:320 #: htdocs/luci-static/resources/view/homeproxy/node.js:348 msgid "Node" msgstr "" @@ -1095,7 +1107,7 @@ msgstr "" msgid "Nodes" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:588 +#: htdocs/luci-static/resources/view/homeproxy/client.js:590 #: htdocs/luci-static/resources/view/homeproxy/node.js:725 #: htdocs/luci-static/resources/view/homeproxy/node.js:765 #: htdocs/luci-static/resources/view/homeproxy/server.js:197 @@ -1116,31 +1128,31 @@ msgstr "" msgid "Obfuscate password" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:814 +#: htdocs/luci-static/resources/view/homeproxy/client.js:816 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:184 +#: htdocs/luci-static/resources/view/homeproxy/client.js:185 msgid "Only proxy mainland China" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:338 -#: htdocs/luci-static/resources/view/homeproxy/client.js:499 -#: htdocs/luci-static/resources/view/homeproxy/client.js:624 -#: htdocs/luci-static/resources/view/homeproxy/client.js:762 +#: htdocs/luci-static/resources/view/homeproxy/client.js:340 +#: htdocs/luci-static/resources/view/homeproxy/client.js:501 +#: htdocs/luci-static/resources/view/homeproxy/client.js:626 +#: htdocs/luci-static/resources/view/homeproxy/client.js:764 msgid "Outbound" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:319 +#: htdocs/luci-static/resources/view/homeproxy/client.js:321 msgid "Outbound node" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:270 +#: htdocs/luci-static/resources/view/homeproxy/client.js:272 #: htdocs/luci-static/resources/view/homeproxy/server.js:531 msgid "Override destination" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:271 +#: htdocs/luci-static/resources/view/homeproxy/client.js:273 #: htdocs/luci-static/resources/view/homeproxy/server.js:532 msgid "Override the connection destination address with the sniffed domain." msgstr "" @@ -1173,7 +1185,7 @@ msgstr "" msgid "Peer pubkic key" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:260 +#: htdocs/luci-static/resources/view/homeproxy/client.js:262 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1192,19 +1204,19 @@ msgstr "" msgid "Plugin opts" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:477 -#: htdocs/luci-static/resources/view/homeproxy/client.js:740 +#: htdocs/luci-static/resources/view/homeproxy/client.js:479 +#: htdocs/luci-static/resources/view/homeproxy/client.js:742 #: htdocs/luci-static/resources/view/homeproxy/node.js:488 #: htdocs/luci-static/resources/view/homeproxy/server.js:71 msgid "Port" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:210 +#: htdocs/luci-static/resources/view/homeproxy/client.js:211 msgid "Port %s alrealy exists!" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:482 -#: htdocs/luci-static/resources/view/homeproxy/client.js:745 +#: htdocs/luci-static/resources/view/homeproxy/client.js:484 +#: htdocs/luci-static/resources/view/homeproxy/client.js:747 msgid "Port range" msgstr "" @@ -1224,18 +1236,18 @@ msgstr "" msgid "Private key" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:487 -#: htdocs/luci-static/resources/view/homeproxy/client.js:750 +#: htdocs/luci-static/resources/view/homeproxy/client.js:489 +#: htdocs/luci-static/resources/view/homeproxy/client.js:752 msgid "Process name" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:491 -#: htdocs/luci-static/resources/view/homeproxy/client.js:754 +#: htdocs/luci-static/resources/view/homeproxy/client.js:493 +#: htdocs/luci-static/resources/view/homeproxy/client.js:756 msgid "Process path" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:421 -#: htdocs/luci-static/resources/view/homeproxy/client.js:687 +#: htdocs/luci-static/resources/view/homeproxy/client.js:423 +#: htdocs/luci-static/resources/view/homeproxy/client.js:689 #: htdocs/luci-static/resources/view/homeproxy/node.js:540 #: htdocs/luci-static/resources/view/homeproxy/node.js:662 #: htdocs/luci-static/resources/view/homeproxy/node.js:923 @@ -1257,33 +1269,37 @@ msgid "" "default in v2ray and cannot be disabled)." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:925 +#: htdocs/luci-static/resources/view/homeproxy/client.js:890 msgid "Proxy Domain List" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:863 -#: htdocs/luci-static/resources/view/homeproxy/client.js:909 +#: htdocs/luci-static/resources/view/homeproxy/client.js:845 +#: htdocs/luci-static/resources/view/homeproxy/client.js:874 msgid "Proxy IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:870 -#: htdocs/luci-static/resources/view/homeproxy/client.js:912 +#: htdocs/luci-static/resources/view/homeproxy/client.js:848 +#: htdocs/luci-static/resources/view/homeproxy/client.js:877 msgid "Proxy IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:844 +#: htdocs/luci-static/resources/view/homeproxy/client.js:851 +msgid "Proxy MAC-s" +msgstr "" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:832 msgid "Proxy all except listed" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:841 +#: htdocs/luci-static/resources/view/homeproxy/client.js:829 msgid "Proxy filter mode" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:843 +#: htdocs/luci-static/resources/view/homeproxy/client.js:831 msgid "Proxy listed only" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:218 +#: htdocs/luci-static/resources/view/homeproxy/client.js:219 msgid "Proxy mode" msgstr "" @@ -1296,8 +1312,8 @@ msgstr "" msgid "QQ" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:425 -#: htdocs/luci-static/resources/view/homeproxy/client.js:691 +#: htdocs/luci-static/resources/view/homeproxy/client.js:427 +#: htdocs/luci-static/resources/view/homeproxy/client.js:693 #: htdocs/luci-static/resources/view/homeproxy/node.js:768 #: htdocs/luci-static/resources/view/homeproxy/server.js:215 msgid "QUIC" @@ -1335,7 +1351,7 @@ msgstr "" msgid "REALITY short ID" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:54 +#: htdocs/luci-static/resources/view/homeproxy/client.js:55 msgid "RUNNING" msgstr "" @@ -1347,27 +1363,27 @@ msgstr "" msgid "Randomized" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:363 +#: htdocs/luci-static/resources/view/homeproxy/client.js:365 msgid "Recursive outbound detected!" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:606 +#: htdocs/luci-static/resources/view/homeproxy/client.js:608 msgid "Recursive resolver detected!" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:219 +#: htdocs/luci-static/resources/view/homeproxy/client.js:220 msgid "Redirect TCP" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:220 +#: htdocs/luci-static/resources/view/homeproxy/client.js:222 msgid "Redirect TCP + TProxy UDP" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:222 +#: htdocs/luci-static/resources/view/homeproxy/client.js:224 msgid "Redirect TCP + Tun UDP" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:139 +#: htdocs/luci-static/resources/view/homeproxy/status.js:141 msgid "Refresh every %s seconds." msgstr "" @@ -1379,44 +1395,44 @@ msgstr "" msgid "Remove all nodes from subscriptions" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:619 +#: htdocs/luci-static/resources/view/homeproxy/client.js:621 msgid "Resolve strategy" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:152 +#: htdocs/luci-static/resources/view/homeproxy/status.js:161 msgid "Resources management" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:295 +#: htdocs/luci-static/resources/view/homeproxy/client.js:297 msgid "Routing Nodes" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:371 +#: htdocs/luci-static/resources/view/homeproxy/client.js:373 msgid "Routing Rules" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:136 +#: htdocs/luci-static/resources/view/homeproxy/client.js:137 msgid "Routing Settings" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:181 +#: htdocs/luci-static/resources/view/homeproxy/client.js:182 msgid "Routing mode" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:304 +#: htdocs/luci-static/resources/view/homeproxy/client.js:306 msgid "Routing node" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:194 +#: htdocs/luci-static/resources/view/homeproxy/client.js:195 msgid "Routing ports" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:380 +#: htdocs/luci-static/resources/view/homeproxy/client.js:382 msgid "Routing rule" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:426 -#: htdocs/luci-static/resources/view/homeproxy/client.js:693 +#: htdocs/luci-static/resources/view/homeproxy/client.js:428 +#: htdocs/luci-static/resources/view/homeproxy/client.js:695 msgid "STUN" msgstr "" @@ -1428,7 +1444,7 @@ msgstr "" msgid "Safari" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:148 +#: htdocs/luci-static/resources/view/homeproxy/client.js:149 msgid "Same as main node" msgstr "" @@ -1440,7 +1456,7 @@ msgstr "" msgid "Save subscriptions settings" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:779 +#: htdocs/luci-static/resources/view/homeproxy/client.js:781 #: htdocs/luci-static/resources/view/homeproxy/server.js:43 msgid "Server" msgstr "" @@ -1455,6 +1471,10 @@ msgid "" "ServerName field is empty." msgstr "" +#: htdocs/luci-static/resources/view/homeproxy/server.js:38 +msgid "Server settings" +msgstr "" + #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:38 msgid "Service Status" msgstr "" @@ -1476,8 +1496,8 @@ msgstr "" msgid "ShadowsocksR" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:422 -#: htdocs/luci-static/resources/view/homeproxy/client.js:688 +#: htdocs/luci-static/resources/view/homeproxy/client.js:424 +#: htdocs/luci-static/resources/view/homeproxy/client.js:690 msgid "" "Sniffed protocol, see Sniff for details." @@ -1504,23 +1524,23 @@ msgstr "" msgid "Socks5" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:449 -#: htdocs/luci-static/resources/view/homeproxy/client.js:716 +#: htdocs/luci-static/resources/view/homeproxy/client.js:451 +#: htdocs/luci-static/resources/view/homeproxy/client.js:718 msgid "Source GeoIP" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:457 -#: htdocs/luci-static/resources/view/homeproxy/client.js:720 +#: htdocs/luci-static/resources/view/homeproxy/client.js:459 +#: htdocs/luci-static/resources/view/homeproxy/client.js:722 msgid "Source IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:467 -#: htdocs/luci-static/resources/view/homeproxy/client.js:730 +#: htdocs/luci-static/resources/view/homeproxy/client.js:469 +#: htdocs/luci-static/resources/view/homeproxy/client.js:732 msgid "Source port" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:472 -#: htdocs/luci-static/resources/view/homeproxy/client.js:735 +#: htdocs/luci-static/resources/view/homeproxy/client.js:474 +#: htdocs/luci-static/resources/view/homeproxy/client.js:737 msgid "Source port range" msgstr "" @@ -1550,7 +1570,7 @@ msgid "" "closed." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:195 +#: htdocs/luci-static/resources/view/homeproxy/client.js:196 msgid "" "Specify target port(s) that get proxied. Multiple ports must be separated by " "commas." @@ -1573,7 +1593,7 @@ msgstr "" msgid "Successfully imported %s nodes of total %s." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:55 +#: htdocs/luci-static/resources/view/homeproxy/status.js:56 msgid "Successfully updated." msgstr "" @@ -1584,12 +1604,12 @@ msgid "" "online configuration delivery standard." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:244 +#: htdocs/luci-static/resources/view/homeproxy/client.js:246 msgid "System" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:417 -#: htdocs/luci-static/resources/view/homeproxy/client.js:683 +#: htdocs/luci-static/resources/view/homeproxy/client.js:419 +#: htdocs/luci-static/resources/view/homeproxy/client.js:685 #: htdocs/luci-static/resources/view/homeproxy/server.js:554 msgid "TCP" msgstr "" @@ -1599,16 +1619,16 @@ msgstr "" msgid "TCP fast open" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:238 +#: htdocs/luci-static/resources/view/homeproxy/client.js:240 msgid "TCP/IP stack" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:239 +#: htdocs/luci-static/resources/view/homeproxy/client.js:241 msgid "TCP/IP stack." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:424 -#: htdocs/luci-static/resources/view/homeproxy/client.js:690 +#: htdocs/luci-static/resources/view/homeproxy/client.js:426 +#: htdocs/luci-static/resources/view/homeproxy/client.js:692 #: htdocs/luci-static/resources/view/homeproxy/node.js:958 #: htdocs/luci-static/resources/view/homeproxy/server.js:304 msgid "TLS" @@ -1629,25 +1649,25 @@ msgstr "" msgid "TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:583 +#: htdocs/luci-static/resources/view/homeproxy/client.js:585 msgid "" "Tag of a another server to resolve the domain name in the address. Required " "if address contains domain." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:625 +#: htdocs/luci-static/resources/view/homeproxy/client.js:627 msgid "Tag of an outbound for connecting to the dns server." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:780 +#: htdocs/luci-static/resources/view/homeproxy/client.js:782 msgid "Tag of the target dns server." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:500 +#: htdocs/luci-static/resources/view/homeproxy/client.js:502 msgid "Tag of the target outbound." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:163 +#: htdocs/luci-static/resources/view/homeproxy/client.js:164 msgid "Tencent Public DNS (119.29.29.29)" msgstr "" @@ -1655,7 +1675,7 @@ msgstr "" msgid "The ACME CA provider to use." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:525 +#: htdocs/luci-static/resources/view/homeproxy/client.js:527 msgid "The DNS strategy for resolving the domain name in the address." msgstr "" @@ -1669,7 +1689,7 @@ msgstr "" msgid "The QUIC stream-level flow control window for receiving data." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:579 +#: htdocs/luci-static/resources/view/homeproxy/client.js:581 msgid "The address of the dns server. Support UDP, TCP, DoT, DoH and RCode." msgstr "" @@ -1685,7 +1705,7 @@ msgid "" "forward 443 to this port for challenge to succeed." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:402 +#: htdocs/luci-static/resources/view/homeproxy/client.js:404 msgid "" "The default rule uses the following matching logic:
(domain || " "domain_suffix || domain_keyword || domain_regex || geosite || geoip || " @@ -1693,7 +1713,7 @@ msgid "" ">other fields." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:668 +#: htdocs/luci-static/resources/view/homeproxy/client.js:670 msgid "" "The default rule uses the following matching logic:
(domain || " "domain_suffix || domain_keyword || domain_regex || geosite || ip_cidr)other fields." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:614 +#: htdocs/luci-static/resources/view/homeproxy/client.js:616 msgid "" "The domain strategy for resolving the domain name in the address. dns." "strategy will be used if empty." @@ -1740,11 +1760,11 @@ msgstr "" msgid "The minimum TLS version that is acceptable." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:110 +#: htdocs/luci-static/resources/view/homeproxy/client.js:111 msgid "The modern ImmortalWrt proxy platform for ARM64/AMD64." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:332 +#: htdocs/luci-static/resources/view/homeproxy/client.js:334 msgid "The network interface to bind to." msgstr "" @@ -1764,7 +1784,7 @@ msgstr "" msgid "The server public key, in PEM format." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:339 +#: htdocs/luci-static/resources/view/homeproxy/client.js:341 msgid "" "The tag of the upstream outbound.
Other dial fields will be ignored when " "enabled." @@ -1800,7 +1820,7 @@ msgstr "" msgid "Trojan" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:223 +#: htdocs/luci-static/resources/view/homeproxy/client.js:225 msgid "Tun TCP/UDP" msgstr "" @@ -1809,8 +1829,8 @@ msgstr "" msgid "Type" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:418 -#: htdocs/luci-static/resources/view/homeproxy/client.js:684 +#: htdocs/luci-static/resources/view/homeproxy/client.js:420 +#: htdocs/luci-static/resources/view/homeproxy/client.js:686 #: htdocs/luci-static/resources/view/homeproxy/server.js:555 msgid "UDP" msgstr "" @@ -1829,11 +1849,11 @@ msgstr "" msgid "UUID" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:67 +#: htdocs/luci-static/resources/view/homeproxy/status.js:68 msgid "Unknown error." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:116 +#: htdocs/luci-static/resources/view/homeproxy/status.js:118 msgid "Unknown error: %s" msgstr "" @@ -1845,7 +1865,7 @@ msgstr "" msgid "Update %s subscriptions" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/status.js:58 +#: htdocs/luci-static/resources/view/homeproxy/status.js:59 msgid "Update failed." msgstr "" @@ -1876,7 +1896,7 @@ msgstr "" msgid "Upload..." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:254 +#: htdocs/luci-static/resources/view/homeproxy/client.js:256 msgid "Upstream archived. Not recommended." msgstr "" @@ -1884,7 +1904,7 @@ msgstr "" msgid "Use ACME TLS certificate issuer." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:157 +#: htdocs/luci-static/resources/view/homeproxy/client.js:158 msgid "Use DNS server from WAN" msgstr "" @@ -1895,8 +1915,8 @@ msgid "" "given." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:495 -#: htdocs/luci-static/resources/view/homeproxy/client.js:758 +#: htdocs/luci-static/resources/view/homeproxy/client.js:497 +#: htdocs/luci-static/resources/view/homeproxy/client.js:760 msgid "User" msgstr "" @@ -1915,7 +1935,7 @@ msgstr "" msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:907 +#: htdocs/luci-static/resources/view/homeproxy/client.js:872 msgid "WAN IP Policy" msgstr "" @@ -1948,7 +1968,7 @@ msgstr "" msgid "Write Proxy Protocol in the connection header." msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:164 +#: htdocs/luci-static/resources/view/homeproxy/client.js:165 msgid "Xinfeng Public DNS (114.114.114.114)" msgstr "" @@ -1957,7 +1977,7 @@ msgstr "" msgid "Xudp (Xray-core)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:156 +#: htdocs/luci-static/resources/view/homeproxy/client.js:157 msgid "You can only have one server set. It MUST support TCP query." msgstr "" @@ -1995,7 +2015,7 @@ msgstr "" msgid "gRPC service name" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:241 +#: htdocs/luci-static/resources/view/homeproxy/client.js:243 msgid "gVisor" msgstr "" @@ -2005,7 +2025,7 @@ msgstr "" #: htdocs/luci-static/resources/homeproxy.js:245 #: htdocs/luci-static/resources/homeproxy.js:263 -#: htdocs/luci-static/resources/view/homeproxy/client.js:173 +#: htdocs/luci-static/resources/view/homeproxy/client.js:174 #: htdocs/luci-static/resources/view/homeproxy/node.js:522 #: htdocs/luci-static/resources/view/homeproxy/node.js:1087 #: htdocs/luci-static/resources/view/homeproxy/server.js:103 @@ -2060,7 +2080,7 @@ msgstr "" msgid "v3" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:175 +#: htdocs/luci-static/resources/view/homeproxy/client.js:176 msgid "valid IP address" msgstr "" @@ -2073,17 +2093,17 @@ msgstr "" msgid "valid base64 key with %d characters" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:947 -#: htdocs/luci-static/resources/view/homeproxy/client.js:976 +#: htdocs/luci-static/resources/view/homeproxy/client.js:912 +#: htdocs/luci-static/resources/view/homeproxy/client.js:941 msgid "valid hostname" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:75 +#: htdocs/luci-static/resources/view/homeproxy/client.js:76 msgid "valid port range (port1:port2)" msgstr "" -#: htdocs/luci-static/resources/view/homeproxy/client.js:203 -#: htdocs/luci-static/resources/view/homeproxy/client.js:208 +#: htdocs/luci-static/resources/view/homeproxy/client.js:204 +#: htdocs/luci-static/resources/view/homeproxy/client.js:209 msgid "valid port value" msgstr "" diff --git a/homeproxy/po/zh_Hans/homeproxy.po b/homeproxy/po/zh_Hans/homeproxy.po index 2b1dea1d7..f2a7fb168 100644 --- a/homeproxy/po/zh_Hans/homeproxy.po +++ b/homeproxy/po/zh_Hans/homeproxy.po @@ -8,7 +8,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: htdocs/luci-static/resources/view/homeproxy/status.js:127 +#: htdocs/luci-static/resources/view/homeproxy/status.js:129 msgid "%s log" msgstr "%s 日志" @@ -20,7 +20,7 @@ msgstr "移除了 %s 个节点" msgid "360" msgstr "360" -#: htdocs/luci-static/resources/view/homeproxy/client.js:395 +#: htdocs/luci-static/resources/view/homeproxy/client.js:397 msgid "4 or 6. Not limited if empty." msgstr "4 或 6。留空不限制。" @@ -38,15 +38,15 @@ msgstr "接受没有代理协议标头的连接。" msgid "Accept no header" msgstr "接受空标头" -#: htdocs/luci-static/resources/view/homeproxy/client.js:805 +#: htdocs/luci-static/resources/view/homeproxy/client.js:807 msgid "Access Control" msgstr "访问控制" -#: htdocs/luci-static/resources/view/homeproxy/client.js:653 +#: htdocs/luci-static/resources/view/homeproxy/client.js:655 msgid "Add a DNS rule" msgstr "新增 DNS 规则" -#: htdocs/luci-static/resources/view/homeproxy/client.js:564 +#: htdocs/luci-static/resources/view/homeproxy/client.js:566 msgid "Add a DNS server" msgstr "新增 DNS 服务器" @@ -54,11 +54,11 @@ msgstr "新增 DNS 服务器" msgid "Add a node" msgstr "新增节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:304 +#: htdocs/luci-static/resources/view/homeproxy/client.js:306 msgid "Add a routing node" msgstr "新增路由节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:380 +#: htdocs/luci-static/resources/view/homeproxy/client.js:382 msgid "Add a routing rule" msgstr "新增路由规则" @@ -66,24 +66,24 @@ msgstr "新增路由规则" msgid "Add a server" msgstr "新增服务器" -#: htdocs/luci-static/resources/view/homeproxy/client.js:578 +#: htdocs/luci-static/resources/view/homeproxy/client.js:580 #: htdocs/luci-static/resources/view/homeproxy/node.js:484 msgid "Address" msgstr "地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:582 +#: htdocs/luci-static/resources/view/homeproxy/client.js:584 msgid "Address resolver" msgstr "地址解析器" -#: htdocs/luci-static/resources/view/homeproxy/client.js:613 +#: htdocs/luci-static/resources/view/homeproxy/client.js:615 msgid "Address strategy" msgstr "地址解析策略" -#: htdocs/luci-static/resources/view/homeproxy/client.js:162 +#: htdocs/luci-static/resources/view/homeproxy/client.js:163 msgid "Aliyun Public DNS (223.5.5.5)" msgstr "阿里云公共 DNS(223.5.5.5)" -#: htdocs/luci-static/resources/view/homeproxy/client.js:196 +#: htdocs/luci-static/resources/view/homeproxy/client.js:197 msgid "All ports" msgstr "所有端口" @@ -105,11 +105,11 @@ msgstr "从订阅获取节点时,默认允许不安全连接。" msgid "Allowed payload size is in the request." msgstr "请求中允许的载荷大小。" -#: htdocs/luci-static/resources/view/homeproxy/status.js:64 +#: htdocs/luci-static/resources/view/homeproxy/status.js:65 msgid "Already at the latest version." msgstr "已是最新版本" -#: htdocs/luci-static/resources/view/homeproxy/status.js:61 +#: htdocs/luci-static/resources/view/homeproxy/status.js:62 msgid "Already in updating." msgstr "已在更新中" @@ -182,16 +182,16 @@ msgstr "自动更新订阅、GeoIP 和 GeoSite" msgid "Base64" msgstr "Base64" -#: htdocs/luci-static/resources/view/homeproxy/client.js:252 +#: htdocs/luci-static/resources/view/homeproxy/client.js:254 msgid "Based on google/gvisor (recommended)." msgstr "基于 google/gvisor(推荐)。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:331 -#: htdocs/luci-static/resources/view/homeproxy/client.js:818 +#: htdocs/luci-static/resources/view/homeproxy/client.js:333 +#: htdocs/luci-static/resources/view/homeproxy/client.js:820 msgid "Bind interface" msgstr "绑定接口" -#: htdocs/luci-static/resources/view/homeproxy/client.js:819 +#: htdocs/luci-static/resources/view/homeproxy/client.js:821 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect." msgstr "绑定出站流量至指定端口。留空自动检测。" @@ -200,33 +200,33 @@ msgstr "绑定出站流量至指定端口。留空自动检测。" msgid "Blacklist mode" msgstr "黑名单模式" -#: htdocs/luci-static/resources/view/homeproxy/client.js:282 -#: htdocs/luci-static/resources/view/homeproxy/client.js:506 -#: htdocs/luci-static/resources/view/homeproxy/client.js:769 +#: htdocs/luci-static/resources/view/homeproxy/client.js:284 +#: htdocs/luci-static/resources/view/homeproxy/client.js:508 +#: htdocs/luci-static/resources/view/homeproxy/client.js:771 msgid "Block" msgstr "封锁" -#: htdocs/luci-static/resources/view/homeproxy/client.js:535 -#: htdocs/luci-static/resources/view/homeproxy/client.js:786 +#: htdocs/luci-static/resources/view/homeproxy/client.js:537 +#: htdocs/luci-static/resources/view/homeproxy/client.js:788 msgid "Block DNS queries" msgstr "封锁 DNS 请求" -#: htdocs/luci-static/resources/view/homeproxy/client.js:398 -#: htdocs/luci-static/resources/view/homeproxy/client.js:419 -#: htdocs/luci-static/resources/view/homeproxy/client.js:685 +#: htdocs/luci-static/resources/view/homeproxy/client.js:400 +#: htdocs/luci-static/resources/view/homeproxy/client.js:421 +#: htdocs/luci-static/resources/view/homeproxy/client.js:687 #: htdocs/luci-static/resources/view/homeproxy/server.js:556 msgid "Both" msgstr "全部" -#: htdocs/luci-static/resources/view/homeproxy/client.js:265 +#: htdocs/luci-static/resources/view/homeproxy/client.js:267 msgid "Bypass CN traffic" msgstr "绕过中国流量" -#: htdocs/luci-static/resources/view/homeproxy/client.js:183 +#: htdocs/luci-static/resources/view/homeproxy/client.js:184 msgid "Bypass mainland China" msgstr "大陆白名单" -#: htdocs/luci-static/resources/view/homeproxy/client.js:266 +#: htdocs/luci-static/resources/view/homeproxy/client.js:268 msgid "Bypass mainland China traffic via firewall rules by default." msgstr "默认使用防火墙规则绕过中国大陆流量。" @@ -243,19 +243,19 @@ msgstr "取消" msgid "Certificate path" msgstr "证书路径" -#: htdocs/luci-static/resources/view/homeproxy/status.js:74 +#: htdocs/luci-static/resources/view/homeproxy/status.js:75 msgid "Check update" msgstr "检查更新" -#: htdocs/luci-static/resources/view/homeproxy/status.js:163 +#: htdocs/luci-static/resources/view/homeproxy/status.js:174 msgid "China IPv4 list version" msgstr "中国 IPv4 库版本" -#: htdocs/luci-static/resources/view/homeproxy/status.js:167 +#: htdocs/luci-static/resources/view/homeproxy/status.js:178 msgid "China IPv6 list version" msgstr "中国 IPv6 库版本" -#: htdocs/luci-static/resources/view/homeproxy/status.js:175 +#: htdocs/luci-static/resources/view/homeproxy/status.js:182 msgid "China list version" msgstr "中国域名列表版本" @@ -268,11 +268,11 @@ msgstr "Chrome" msgid "Cipher suites" msgstr "密码套件" -#: htdocs/luci-static/resources/view/homeproxy/client.js:159 +#: htdocs/luci-static/resources/view/homeproxy/client.js:160 msgid "Cisco Public DNS (208.67.222.222)" msgstr "思科公共 DNS(208.67.222.222)" -#: htdocs/luci-static/resources/view/homeproxy/status.js:134 +#: htdocs/luci-static/resources/view/homeproxy/status.js:136 msgid "Clean log" msgstr "清空日志" @@ -280,73 +280,73 @@ msgstr "清空日志" msgid "Client Settings" msgstr "客户端设置" -#: htdocs/luci-static/resources/view/homeproxy/client.js:158 +#: htdocs/luci-static/resources/view/homeproxy/client.js:159 msgid "CloudFlare Public DNS (1.1.1.1)" msgstr "CloudFlare 公共 DNS(1.1.1.1)" -#: htdocs/luci-static/resources/view/homeproxy/client.js:122 -#: htdocs/luci-static/resources/view/homeproxy/status.js:97 +#: htdocs/luci-static/resources/view/homeproxy/client.js:123 +#: htdocs/luci-static/resources/view/homeproxy/status.js:99 msgid "Collecting data..." msgstr "收集数据中..." -#: htdocs/luci-static/resources/view/homeproxy/client.js:197 +#: htdocs/luci-static/resources/view/homeproxy/client.js:198 msgid "Common ports only (bypass P2P traffic)" msgstr "仅常用端口(绕过 P2P 流量)" -#: htdocs/luci-static/resources/view/homeproxy/client.js:185 +#: htdocs/luci-static/resources/view/homeproxy/client.js:186 msgid "Custom routing" msgstr "自定义路由" -#: htdocs/luci-static/resources/view/homeproxy/client.js:692 +#: htdocs/luci-static/resources/view/homeproxy/client.js:694 msgid "DNS" msgstr "DNS" -#: htdocs/luci-static/resources/view/homeproxy/client.js:644 +#: htdocs/luci-static/resources/view/homeproxy/client.js:646 msgid "DNS Rules" msgstr "DNS 规则" -#: htdocs/luci-static/resources/view/homeproxy/client.js:555 +#: htdocs/luci-static/resources/view/homeproxy/client.js:557 msgid "DNS Servers" msgstr "DNS 服务器" -#: htdocs/luci-static/resources/view/homeproxy/client.js:519 +#: htdocs/luci-static/resources/view/homeproxy/client.js:521 msgid "DNS Settings" msgstr "DNS 设置" -#: htdocs/luci-static/resources/view/homeproxy/client.js:653 +#: htdocs/luci-static/resources/view/homeproxy/client.js:655 msgid "DNS rule" msgstr "DNS 规则" -#: htdocs/luci-static/resources/view/homeproxy/client.js:155 -#: htdocs/luci-static/resources/view/homeproxy/client.js:564 +#: htdocs/luci-static/resources/view/homeproxy/client.js:156 +#: htdocs/luci-static/resources/view/homeproxy/client.js:566 msgid "DNS server" msgstr "DNS 服务器" #: htdocs/luci-static/resources/homeproxy.js:17 -#: htdocs/luci-static/resources/view/homeproxy/client.js:406 -#: htdocs/luci-static/resources/view/homeproxy/client.js:672 +#: htdocs/luci-static/resources/view/homeproxy/client.js:408 +#: htdocs/luci-static/resources/view/homeproxy/client.js:674 msgid "Default" msgstr "默认" -#: htdocs/luci-static/resources/view/homeproxy/client.js:534 -#: htdocs/luci-static/resources/view/homeproxy/client.js:589 -#: htdocs/luci-static/resources/view/homeproxy/client.js:785 +#: htdocs/luci-static/resources/view/homeproxy/client.js:536 +#: htdocs/luci-static/resources/view/homeproxy/client.js:591 +#: htdocs/luci-static/resources/view/homeproxy/client.js:787 msgid "Default DNS (issued by WAN)" msgstr "默认 DNS(由 WAN 下发)" -#: htdocs/luci-static/resources/view/homeproxy/client.js:529 +#: htdocs/luci-static/resources/view/homeproxy/client.js:531 msgid "Default DNS server" msgstr "默认 DNS 服务器" -#: htdocs/luci-static/resources/view/homeproxy/client.js:524 +#: htdocs/luci-static/resources/view/homeproxy/client.js:526 msgid "Default DNS strategy" msgstr "默认 DNS 解析策略" -#: htdocs/luci-static/resources/view/homeproxy/client.js:620 +#: htdocs/luci-static/resources/view/homeproxy/client.js:622 msgid "Default domain strategy for resolving the domain names." msgstr "默认域名解析策略。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:275 +#: htdocs/luci-static/resources/view/homeproxy/client.js:277 msgid "Default outbound" msgstr "默认出站" @@ -358,33 +358,37 @@ msgstr "默认包封装格式" msgid "Default server name" msgstr "默认服务器名称" -#: htdocs/luci-static/resources/view/homeproxy/client.js:281 -#: htdocs/luci-static/resources/view/homeproxy/client.js:344 -#: htdocs/luci-static/resources/view/homeproxy/client.js:505 -#: htdocs/luci-static/resources/view/homeproxy/client.js:630 -#: htdocs/luci-static/resources/view/homeproxy/client.js:768 +#: htdocs/luci-static/resources/view/homeproxy/client.js:283 +#: htdocs/luci-static/resources/view/homeproxy/client.js:346 +#: htdocs/luci-static/resources/view/homeproxy/client.js:507 +#: htdocs/luci-static/resources/view/homeproxy/client.js:632 +#: htdocs/luci-static/resources/view/homeproxy/client.js:770 #: htdocs/luci-static/resources/view/homeproxy/node.js:468 msgid "Direct" msgstr "直连" -#: htdocs/luci-static/resources/view/homeproxy/client.js:954 +#: htdocs/luci-static/resources/view/homeproxy/client.js:919 msgid "Direct Domain List" msgstr "直连域名列表" -#: htdocs/luci-static/resources/view/homeproxy/client.js:848 -#: htdocs/luci-static/resources/view/homeproxy/client.js:916 +#: htdocs/luci-static/resources/view/homeproxy/client.js:836 +#: htdocs/luci-static/resources/view/homeproxy/client.js:881 msgid "Direct IPv4 IP-s" msgstr "直连 IPv4 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:855 -#: htdocs/luci-static/resources/view/homeproxy/client.js:919 +#: htdocs/luci-static/resources/view/homeproxy/client.js:839 +#: htdocs/luci-static/resources/view/homeproxy/client.js:884 msgid "Direct IPv6 IP-s" msgstr "直连 IPv6 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:139 -#: htdocs/luci-static/resources/view/homeproxy/client.js:147 -#: htdocs/luci-static/resources/view/homeproxy/client.js:280 #: htdocs/luci-static/resources/view/homeproxy/client.js:842 +msgid "Direct MAC-s" +msgstr "直连 MAC 地址" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:140 +#: htdocs/luci-static/resources/view/homeproxy/client.js:148 +#: htdocs/luci-static/resources/view/homeproxy/client.js:282 +#: htdocs/luci-static/resources/view/homeproxy/client.js:830 #: htdocs/luci-static/resources/view/homeproxy/node.js:533 #: htdocs/luci-static/resources/view/homeproxy/node.js:552 #: htdocs/luci-static/resources/view/homeproxy/node.js:1071 @@ -393,7 +397,7 @@ msgstr "直连 IPv6 地址" msgid "Disable" msgstr "禁用" -#: htdocs/luci-static/resources/view/homeproxy/client.js:546 +#: htdocs/luci-static/resources/view/homeproxy/client.js:548 msgid "Disable DNS cache" msgstr "禁用 DNS 缓存" @@ -410,15 +414,15 @@ msgstr "禁用路径 MTU 探测" msgid "Disable TLS ALPN challenge" msgstr "禁用 TLS ALPN 认证" -#: htdocs/luci-static/resources/view/homeproxy/client.js:798 +#: htdocs/luci-static/resources/view/homeproxy/client.js:800 msgid "Disable cache and save cache in this query." msgstr "在本次查询中禁用缓存。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:549 +#: htdocs/luci-static/resources/view/homeproxy/client.js:551 msgid "Disable cache expire" msgstr "缓存永不过期" -#: htdocs/luci-static/resources/view/homeproxy/client.js:797 +#: htdocs/luci-static/resources/view/homeproxy/client.js:799 msgid "Disable dns cache" msgstr "禁用 DNS 缓存" @@ -435,28 +439,28 @@ msgstr "" "禁用路径 MTU 发现 (RFC 8899)。 数据包的大小最多为 1252 (IPv4) / 1232 (IPv6) " "字节。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:437 -#: htdocs/luci-static/resources/view/homeproxy/client.js:704 +#: htdocs/luci-static/resources/view/homeproxy/client.js:439 +#: htdocs/luci-static/resources/view/homeproxy/client.js:706 msgid "Domain keyword" msgstr "域名关键词" -#: htdocs/luci-static/resources/view/homeproxy/client.js:428 -#: htdocs/luci-static/resources/view/homeproxy/client.js:695 +#: htdocs/luci-static/resources/view/homeproxy/client.js:430 +#: htdocs/luci-static/resources/view/homeproxy/client.js:697 msgid "Domain name" msgstr "域名" -#: htdocs/luci-static/resources/view/homeproxy/client.js:441 -#: htdocs/luci-static/resources/view/homeproxy/client.js:708 +#: htdocs/luci-static/resources/view/homeproxy/client.js:443 +#: htdocs/luci-static/resources/view/homeproxy/client.js:710 msgid "Domain regex" msgstr "域名正则表达式" -#: htdocs/luci-static/resources/view/homeproxy/client.js:325 +#: htdocs/luci-static/resources/view/homeproxy/client.js:327 #: htdocs/luci-static/resources/view/homeproxy/server.js:535 msgid "Domain strategy" msgstr "域名解析策略" -#: htdocs/luci-static/resources/view/homeproxy/client.js:433 -#: htdocs/luci-static/resources/view/homeproxy/client.js:700 +#: htdocs/luci-static/resources/view/homeproxy/client.js:435 +#: htdocs/luci-static/resources/view/homeproxy/client.js:702 msgid "Domain suffix" msgstr "域名后缀" @@ -531,10 +535,10 @@ msgstr "修改服务器" msgid "Email" msgstr "Email" -#: htdocs/luci-static/resources/view/homeproxy/client.js:313 -#: htdocs/luci-static/resources/view/homeproxy/client.js:389 -#: htdocs/luci-static/resources/view/homeproxy/client.js:573 -#: htdocs/luci-static/resources/view/homeproxy/client.js:662 +#: htdocs/luci-static/resources/view/homeproxy/client.js:315 +#: htdocs/luci-static/resources/view/homeproxy/client.js:391 +#: htdocs/luci-static/resources/view/homeproxy/client.js:575 +#: htdocs/luci-static/resources/view/homeproxy/client.js:664 #: htdocs/luci-static/resources/view/homeproxy/server.js:30 #: htdocs/luci-static/resources/view/homeproxy/server.js:53 msgid "Enable" @@ -557,7 +561,7 @@ msgstr "启用 PQ 签名方案。" msgid "Enable UDP fragmentation." msgstr "启用 UDP 分片" -#: htdocs/luci-static/resources/view/homeproxy/client.js:259 +#: htdocs/luci-static/resources/view/homeproxy/client.js:261 msgid "Enable endpoint-independent NAT" msgstr "启用端点独立 NAT" @@ -584,13 +588,13 @@ msgstr "加密方式" #: htdocs/luci-static/resources/homeproxy.js:254 #: htdocs/luci-static/resources/homeproxy.js:263 #: htdocs/luci-static/resources/homeproxy.js:265 -#: htdocs/luci-static/resources/view/homeproxy/client.js:75 -#: htdocs/luci-static/resources/view/homeproxy/client.js:173 -#: htdocs/luci-static/resources/view/homeproxy/client.js:175 -#: htdocs/luci-static/resources/view/homeproxy/client.js:203 -#: htdocs/luci-static/resources/view/homeproxy/client.js:208 -#: htdocs/luci-static/resources/view/homeproxy/client.js:947 -#: htdocs/luci-static/resources/view/homeproxy/client.js:976 +#: htdocs/luci-static/resources/view/homeproxy/client.js:76 +#: htdocs/luci-static/resources/view/homeproxy/client.js:174 +#: htdocs/luci-static/resources/view/homeproxy/client.js:176 +#: htdocs/luci-static/resources/view/homeproxy/client.js:204 +#: htdocs/luci-static/resources/view/homeproxy/client.js:209 +#: htdocs/luci-static/resources/view/homeproxy/client.js:912 +#: htdocs/luci-static/resources/view/homeproxy/client.js:941 #: htdocs/luci-static/resources/view/homeproxy/node.js:423 #: htdocs/luci-static/resources/view/homeproxy/node.js:522 #: htdocs/luci-static/resources/view/homeproxy/node.js:1087 @@ -639,56 +643,64 @@ msgstr "流控" msgid "GET" msgstr "GET" -#: htdocs/luci-static/resources/view/homeproxy/status.js:171 +#: htdocs/luci-static/resources/view/homeproxy/status.js:186 msgid "GFW list version" msgstr "GFW 域名列表版本" -#: htdocs/luci-static/resources/view/homeproxy/client.js:182 +#: htdocs/luci-static/resources/view/homeproxy/client.js:183 msgid "GFWList" msgstr "GFWList" -#: htdocs/luci-static/resources/view/homeproxy/client.js:878 +#: htdocs/luci-static/resources/view/homeproxy/client.js:854 msgid "Gaming mode IPv4 IP-s" msgstr "游戏模式 IPv4 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:884 +#: htdocs/luci-static/resources/view/homeproxy/client.js:856 msgid "Gaming mode IPv6 IP-s" -msgstr "游戏模式 IPv6 IP-s" +msgstr "游戏模式 IPv6 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:453 +#: htdocs/luci-static/resources/view/homeproxy/client.js:859 +msgid "Gaming mode MAC-s" +msgstr "游戏模式 MAC 地址" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:455 msgid "GeoIP" msgstr "GeoIP" -#: htdocs/luci-static/resources/view/homeproxy/status.js:155 +#: htdocs/luci-static/resources/view/homeproxy/status.js:165 msgid "GeoIP version" msgstr "GeoIP 版本" -#: htdocs/luci-static/resources/view/homeproxy/status.js:159 +#: htdocs/luci-static/resources/view/homeproxy/status.js:169 msgid "GeoSite version" msgstr "GeoSite 版本" -#: htdocs/luci-static/resources/view/homeproxy/client.js:445 -#: htdocs/luci-static/resources/view/homeproxy/client.js:712 +#: htdocs/luci-static/resources/view/homeproxy/client.js:447 +#: htdocs/luci-static/resources/view/homeproxy/client.js:714 msgid "Geosite" msgstr "Geosite" -#: htdocs/luci-static/resources/view/homeproxy/client.js:186 +#: htdocs/luci-static/resources/view/homeproxy/client.js:187 msgid "Global" msgstr "全局" -#: htdocs/luci-static/resources/view/homeproxy/client.js:891 +#: htdocs/luci-static/resources/view/homeproxy/client.js:861 msgid "Global proxy IPv4 IP-s" -msgstr "全局代理 IPv4 IP-s" +msgstr "全局代理 IPv4 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:898 +#: htdocs/luci-static/resources/view/homeproxy/client.js:864 msgid "Global proxy IPv6 IP-s" -msgstr "全局代理 IPv6 IP-s" +msgstr "全局代理 IPv6 地址" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:867 +msgid "Global proxy MAC-s" +msgstr "全局代理 MAC 地址" #: htdocs/luci-static/resources/view/homeproxy/server.js:28 msgid "Global settings" msgstr "全局设置" -#: htdocs/luci-static/resources/view/homeproxy/client.js:160 +#: htdocs/luci-static/resources/view/homeproxy/client.js:161 msgid "Google Public DNS (8.8.8.8)" msgstr "谷歌公共 DNS(8.8.8.8)" @@ -696,8 +708,8 @@ msgstr "谷歌公共 DNS(8.8.8.8)" msgid "Grant access to homeproxy configuration" msgstr "授予 homeproxy 访问 UCI 配置的权限" -#: htdocs/luci-static/resources/view/homeproxy/client.js:423 -#: htdocs/luci-static/resources/view/homeproxy/client.js:689 +#: htdocs/luci-static/resources/view/homeproxy/client.js:425 +#: htdocs/luci-static/resources/view/homeproxy/client.js:691 #: htdocs/luci-static/resources/view/homeproxy/node.js:469 #: htdocs/luci-static/resources/view/homeproxy/node.js:767 #: htdocs/luci-static/resources/view/homeproxy/server.js:59 @@ -713,9 +725,9 @@ msgstr "握手服务器地址" msgid "Handshake server port" msgstr "握手服务器端口" -#: htdocs/luci-static/resources/view/homeproxy/client.js:54 -#: htdocs/luci-static/resources/view/homeproxy/client.js:56 -#: htdocs/luci-static/resources/view/homeproxy/client.js:109 +#: htdocs/luci-static/resources/view/homeproxy/client.js:55 +#: htdocs/luci-static/resources/view/homeproxy/client.js:57 +#: htdocs/luci-static/resources/view/homeproxy/client.js:110 #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:3 msgid "HomeProxy" msgstr "HomeProxy" @@ -732,16 +744,16 @@ msgstr "主机名" msgid "Hysteria" msgstr "Hysteria" -#: htdocs/luci-static/resources/view/homeproxy/client.js:462 -#: htdocs/luci-static/resources/view/homeproxy/client.js:725 +#: htdocs/luci-static/resources/view/homeproxy/client.js:464 +#: htdocs/luci-static/resources/view/homeproxy/client.js:727 msgid "IP CIDR" msgstr "IP CIDR" -#: htdocs/luci-static/resources/view/homeproxy/client.js:394 +#: htdocs/luci-static/resources/view/homeproxy/client.js:396 msgid "IP version" msgstr "IP 版本" -#: htdocs/luci-static/resources/view/homeproxy/client.js:396 +#: htdocs/luci-static/resources/view/homeproxy/client.js:398 msgid "IPv4" msgstr "IPv4" @@ -749,7 +761,7 @@ msgstr "IPv4" msgid "IPv4 only" msgstr "仅 IPv4" -#: htdocs/luci-static/resources/view/homeproxy/client.js:397 +#: htdocs/luci-static/resources/view/homeproxy/client.js:399 msgid "IPv6" msgstr "IPv6" @@ -757,7 +769,7 @@ msgstr "IPv6" msgid "IPv6 only" msgstr "仅 IPv6" -#: htdocs/luci-static/resources/view/homeproxy/client.js:228 +#: htdocs/luci-static/resources/view/homeproxy/client.js:230 msgid "IPv6 support" msgstr "IPv6 支持" @@ -777,7 +789,7 @@ msgid "" "If set, the requested domain name will be resolved to IP before routing." msgstr "如果设置,请求的域名将在路由前被解析为 IP 地址。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:326 +#: htdocs/luci-static/resources/view/homeproxy/client.js:328 msgid "" "If set, the server domain name will be resolved to IP before connecting.
dns.strategy will be used if empty." @@ -809,17 +821,17 @@ msgstr "导入" msgid "Import share links" msgstr "导入分享链接" -#: htdocs/luci-static/resources/view/homeproxy/client.js:811 +#: htdocs/luci-static/resources/view/homeproxy/client.js:813 msgid "Interface Control" msgstr "接口控制" -#: htdocs/luci-static/resources/view/homeproxy/client.js:411 -#: htdocs/luci-static/resources/view/homeproxy/client.js:677 +#: htdocs/luci-static/resources/view/homeproxy/client.js:413 +#: htdocs/luci-static/resources/view/homeproxy/client.js:679 msgid "Invert" msgstr "反转" -#: htdocs/luci-static/resources/view/homeproxy/client.js:412 -#: htdocs/luci-static/resources/view/homeproxy/client.js:678 +#: htdocs/luci-static/resources/view/homeproxy/client.js:414 +#: htdocs/luci-static/resources/view/homeproxy/client.js:680 msgid "Invert match result." msgstr "反转匹配结果" @@ -827,18 +839,18 @@ msgstr "反转匹配结果" msgid "Key path" msgstr "证书路径" -#: htdocs/luci-static/resources/view/homeproxy/client.js:825 +#: htdocs/luci-static/resources/view/homeproxy/client.js:827 msgid "LAN IP Policy" msgstr "LAN IP 策略" -#: htdocs/luci-static/resources/view/homeproxy/client.js:243 +#: htdocs/luci-static/resources/view/homeproxy/client.js:245 msgid "LWIP" msgstr "LWIP" -#: htdocs/luci-static/resources/view/homeproxy/client.js:308 -#: htdocs/luci-static/resources/view/homeproxy/client.js:384 -#: htdocs/luci-static/resources/view/homeproxy/client.js:568 -#: htdocs/luci-static/resources/view/homeproxy/client.js:657 +#: htdocs/luci-static/resources/view/homeproxy/client.js:310 +#: htdocs/luci-static/resources/view/homeproxy/client.js:386 +#: htdocs/luci-static/resources/view/homeproxy/client.js:570 +#: htdocs/luci-static/resources/view/homeproxy/client.js:659 #: htdocs/luci-static/resources/view/homeproxy/node.js:462 #: htdocs/luci-static/resources/view/homeproxy/server.js:47 msgid "Label" @@ -853,7 +865,7 @@ msgstr "" "提供旧协议支持(VMess MD5 身份验证)仅出于兼容性目的,不建议使用 alterId > " "1。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:256 +#: htdocs/luci-static/resources/view/homeproxy/client.js:258 msgid "Less compatibility and sometimes better performance." msgstr "有时性能更好。" @@ -871,11 +883,11 @@ msgstr "分配给接口的 IP(v4 或 v6)地址前缀列表。" msgid "List of supported application level protocols, in order of preference." msgstr "支持的应用层协议协商列表,按顺序排列。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:813 +#: htdocs/luci-static/resources/view/homeproxy/client.js:815 msgid "Listen interfaces" msgstr "监听接口" -#: htdocs/luci-static/resources/view/homeproxy/status.js:95 +#: htdocs/luci-static/resources/view/homeproxy/status.js:97 msgid "Loading" msgstr "加载中" @@ -883,11 +895,11 @@ msgstr "加载中" msgid "Local address" msgstr "本地地址" -#: htdocs/luci-static/resources/view/homeproxy/status.js:112 +#: htdocs/luci-static/resources/view/homeproxy/status.js:114 msgid "Log file does not exist." msgstr "日志文件不存在。" -#: htdocs/luci-static/resources/view/homeproxy/status.js:105 +#: htdocs/luci-static/resources/view/homeproxy/status.js:107 msgid "Log is empty." msgstr "日志为空。" @@ -895,94 +907,94 @@ msgstr "日志为空。" msgid "MTU" msgstr "MTU" -#: htdocs/luci-static/resources/view/homeproxy/client.js:146 +#: htdocs/luci-static/resources/view/homeproxy/client.js:147 msgid "Main UDP node" msgstr "主 UDP 节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:138 +#: htdocs/luci-static/resources/view/homeproxy/client.js:139 msgid "Main node" msgstr "主节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:454 +#: htdocs/luci-static/resources/view/homeproxy/client.js:456 msgid "Match GeoIP." msgstr "匹配 GeoIP。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:463 -#: htdocs/luci-static/resources/view/homeproxy/client.js:726 +#: htdocs/luci-static/resources/view/homeproxy/client.js:465 +#: htdocs/luci-static/resources/view/homeproxy/client.js:728 msgid "Match IP CIDR." msgstr "匹配 IP CIDR。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:434 -#: htdocs/luci-static/resources/view/homeproxy/client.js:701 +#: htdocs/luci-static/resources/view/homeproxy/client.js:436 +#: htdocs/luci-static/resources/view/homeproxy/client.js:703 msgid "Match domain suffix." msgstr "匹配域名后缀。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:438 -#: htdocs/luci-static/resources/view/homeproxy/client.js:705 +#: htdocs/luci-static/resources/view/homeproxy/client.js:440 +#: htdocs/luci-static/resources/view/homeproxy/client.js:707 msgid "Match domain using keyword." msgstr "使用关键词匹配域名。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:442 -#: htdocs/luci-static/resources/view/homeproxy/client.js:709 +#: htdocs/luci-static/resources/view/homeproxy/client.js:444 +#: htdocs/luci-static/resources/view/homeproxy/client.js:711 msgid "Match domain using regular expression." msgstr "使用正则表达式匹配域名。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:429 -#: htdocs/luci-static/resources/view/homeproxy/client.js:696 +#: htdocs/luci-static/resources/view/homeproxy/client.js:431 +#: htdocs/luci-static/resources/view/homeproxy/client.js:698 msgid "Match full domain." msgstr "匹配完整域名。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:446 -#: htdocs/luci-static/resources/view/homeproxy/client.js:713 +#: htdocs/luci-static/resources/view/homeproxy/client.js:448 +#: htdocs/luci-static/resources/view/homeproxy/client.js:715 msgid "Match geosite." msgstr "匹配 geosite。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:763 +#: htdocs/luci-static/resources/view/homeproxy/client.js:765 msgid "Match outbound." msgstr "匹配出站。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:483 -#: htdocs/luci-static/resources/view/homeproxy/client.js:746 +#: htdocs/luci-static/resources/view/homeproxy/client.js:485 +#: htdocs/luci-static/resources/view/homeproxy/client.js:748 msgid "Match port range. Format as START:/:END/START:END." msgstr "匹配端口范围。格式为 START:/:END/START:END。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:478 -#: htdocs/luci-static/resources/view/homeproxy/client.js:741 +#: htdocs/luci-static/resources/view/homeproxy/client.js:480 +#: htdocs/luci-static/resources/view/homeproxy/client.js:743 msgid "Match port." msgstr "匹配端口。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:488 -#: htdocs/luci-static/resources/view/homeproxy/client.js:751 +#: htdocs/luci-static/resources/view/homeproxy/client.js:490 +#: htdocs/luci-static/resources/view/homeproxy/client.js:753 msgid "Match process name." msgstr "匹配进程名。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:492 -#: htdocs/luci-static/resources/view/homeproxy/client.js:755 +#: htdocs/luci-static/resources/view/homeproxy/client.js:494 +#: htdocs/luci-static/resources/view/homeproxy/client.js:757 msgid "Match process path." msgstr "匹配进程路径" -#: htdocs/luci-static/resources/view/homeproxy/client.js:450 -#: htdocs/luci-static/resources/view/homeproxy/client.js:717 +#: htdocs/luci-static/resources/view/homeproxy/client.js:452 +#: htdocs/luci-static/resources/view/homeproxy/client.js:719 msgid "Match source GeoIP." msgstr "匹配源 GeoIP。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:458 -#: htdocs/luci-static/resources/view/homeproxy/client.js:721 +#: htdocs/luci-static/resources/view/homeproxy/client.js:460 +#: htdocs/luci-static/resources/view/homeproxy/client.js:723 msgid "Match source IP CIDR." msgstr "匹配源 IP CIDR。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:473 -#: htdocs/luci-static/resources/view/homeproxy/client.js:736 +#: htdocs/luci-static/resources/view/homeproxy/client.js:475 +#: htdocs/luci-static/resources/view/homeproxy/client.js:738 msgid "Match source port range. Format as START:/:END/START:END." msgstr "匹配源端口范围。格式为 START:/:END/START:END。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:468 -#: htdocs/luci-static/resources/view/homeproxy/client.js:731 +#: htdocs/luci-static/resources/view/homeproxy/client.js:470 +#: htdocs/luci-static/resources/view/homeproxy/client.js:733 msgid "Match source port." msgstr "匹配源端口。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:496 -#: htdocs/luci-static/resources/view/homeproxy/client.js:759 +#: htdocs/luci-static/resources/view/homeproxy/client.js:498 +#: htdocs/luci-static/resources/view/homeproxy/client.js:761 msgid "Match user name." msgstr "匹配用户名。" @@ -1051,8 +1063,8 @@ msgstr "在打开新连接之前,连接中的最小多路复用流数量。" msgid "Minimum streams" msgstr "最小流数量" -#: htdocs/luci-static/resources/view/homeproxy/client.js:401 -#: htdocs/luci-static/resources/view/homeproxy/client.js:667 +#: htdocs/luci-static/resources/view/homeproxy/client.js:403 +#: htdocs/luci-static/resources/view/homeproxy/client.js:669 msgid "Mode" msgstr "模式" @@ -1064,7 +1076,7 @@ msgstr "多路复用" msgid "Multiplex protocol." msgstr "多路复用协议" -#: htdocs/luci-static/resources/view/homeproxy/client.js:56 +#: htdocs/luci-static/resources/view/homeproxy/client.js:57 msgid "NOT RUNNING" msgstr "未运行" @@ -1076,8 +1088,8 @@ msgstr "注意:更新订阅前先保存当前配置。" msgid "NaïveProxy" msgstr "NaïveProxy" -#: htdocs/luci-static/resources/view/homeproxy/client.js:416 -#: htdocs/luci-static/resources/view/homeproxy/client.js:682 +#: htdocs/luci-static/resources/view/homeproxy/client.js:418 +#: htdocs/luci-static/resources/view/homeproxy/client.js:684 #: htdocs/luci-static/resources/view/homeproxy/server.js:553 msgid "Network" msgstr "网络" @@ -1106,7 +1118,7 @@ msgstr "无订阅节点" msgid "No valid share link found." msgstr "找不到有效分享链接。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:318 +#: htdocs/luci-static/resources/view/homeproxy/client.js:320 #: htdocs/luci-static/resources/view/homeproxy/node.js:348 msgid "Node" msgstr "节点" @@ -1119,7 +1131,7 @@ msgstr "节点设置" msgid "Nodes" msgstr "节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:588 +#: htdocs/luci-static/resources/view/homeproxy/client.js:590 #: htdocs/luci-static/resources/view/homeproxy/node.js:725 #: htdocs/luci-static/resources/view/homeproxy/node.js:765 #: htdocs/luci-static/resources/view/homeproxy/server.js:197 @@ -1140,31 +1152,31 @@ msgstr "混淆参数" msgid "Obfuscate password" msgstr "混淆密码" -#: htdocs/luci-static/resources/view/homeproxy/client.js:814 +#: htdocs/luci-static/resources/view/homeproxy/client.js:816 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只处理来自指定接口的流量。留空表示全部。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:184 +#: htdocs/luci-static/resources/view/homeproxy/client.js:185 msgid "Only proxy mainland China" msgstr "仅代理中国大陆" -#: htdocs/luci-static/resources/view/homeproxy/client.js:338 -#: htdocs/luci-static/resources/view/homeproxy/client.js:499 -#: htdocs/luci-static/resources/view/homeproxy/client.js:624 -#: htdocs/luci-static/resources/view/homeproxy/client.js:762 +#: htdocs/luci-static/resources/view/homeproxy/client.js:340 +#: htdocs/luci-static/resources/view/homeproxy/client.js:501 +#: htdocs/luci-static/resources/view/homeproxy/client.js:626 +#: htdocs/luci-static/resources/view/homeproxy/client.js:764 msgid "Outbound" msgstr "出站" -#: htdocs/luci-static/resources/view/homeproxy/client.js:319 +#: htdocs/luci-static/resources/view/homeproxy/client.js:321 msgid "Outbound node" msgstr "出站节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:270 +#: htdocs/luci-static/resources/view/homeproxy/client.js:272 #: htdocs/luci-static/resources/view/homeproxy/server.js:531 msgid "Override destination" msgstr "覆盖目标地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:271 +#: htdocs/luci-static/resources/view/homeproxy/client.js:273 #: htdocs/luci-static/resources/view/homeproxy/server.js:532 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的域名覆盖连接目标。" @@ -1197,7 +1209,7 @@ msgstr "路径" msgid "Peer pubkic key" msgstr "对端公钥" -#: htdocs/luci-static/resources/view/homeproxy/client.js:260 +#: htdocs/luci-static/resources/view/homeproxy/client.js:262 msgid "" "Performance may degrade slightly, so it is not recommended to enable on when " "it is not needed." @@ -1216,19 +1228,19 @@ msgstr "插件" msgid "Plugin opts" msgstr "插件参数" -#: htdocs/luci-static/resources/view/homeproxy/client.js:477 -#: htdocs/luci-static/resources/view/homeproxy/client.js:740 +#: htdocs/luci-static/resources/view/homeproxy/client.js:479 +#: htdocs/luci-static/resources/view/homeproxy/client.js:742 #: htdocs/luci-static/resources/view/homeproxy/node.js:488 #: htdocs/luci-static/resources/view/homeproxy/server.js:71 msgid "Port" msgstr "端口" -#: htdocs/luci-static/resources/view/homeproxy/client.js:210 +#: htdocs/luci-static/resources/view/homeproxy/client.js:211 msgid "Port %s alrealy exists!" msgstr "端口 %s 已存在!" -#: htdocs/luci-static/resources/view/homeproxy/client.js:482 -#: htdocs/luci-static/resources/view/homeproxy/client.js:745 +#: htdocs/luci-static/resources/view/homeproxy/client.js:484 +#: htdocs/luci-static/resources/view/homeproxy/client.js:747 msgid "Port range" msgstr "端口范围" @@ -1248,18 +1260,18 @@ msgstr "优先 IPv6" msgid "Private key" msgstr "私钥" -#: htdocs/luci-static/resources/view/homeproxy/client.js:487 -#: htdocs/luci-static/resources/view/homeproxy/client.js:750 +#: htdocs/luci-static/resources/view/homeproxy/client.js:489 +#: htdocs/luci-static/resources/view/homeproxy/client.js:752 msgid "Process name" msgstr "进程名" -#: htdocs/luci-static/resources/view/homeproxy/client.js:491 -#: htdocs/luci-static/resources/view/homeproxy/client.js:754 +#: htdocs/luci-static/resources/view/homeproxy/client.js:493 +#: htdocs/luci-static/resources/view/homeproxy/client.js:756 msgid "Process path" msgstr "进程路径" -#: htdocs/luci-static/resources/view/homeproxy/client.js:421 -#: htdocs/luci-static/resources/view/homeproxy/client.js:687 +#: htdocs/luci-static/resources/view/homeproxy/client.js:423 +#: htdocs/luci-static/resources/view/homeproxy/client.js:689 #: htdocs/luci-static/resources/view/homeproxy/node.js:540 #: htdocs/luci-static/resources/view/homeproxy/node.js:662 #: htdocs/luci-static/resources/view/homeproxy/node.js:923 @@ -1281,33 +1293,37 @@ msgid "" "default in v2ray and cannot be disabled)." msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:925 +#: htdocs/luci-static/resources/view/homeproxy/client.js:890 msgid "Proxy Domain List" msgstr "代理域名列表" -#: htdocs/luci-static/resources/view/homeproxy/client.js:863 -#: htdocs/luci-static/resources/view/homeproxy/client.js:909 +#: htdocs/luci-static/resources/view/homeproxy/client.js:845 +#: htdocs/luci-static/resources/view/homeproxy/client.js:874 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:870 -#: htdocs/luci-static/resources/view/homeproxy/client.js:912 +#: htdocs/luci-static/resources/view/homeproxy/client.js:848 +#: htdocs/luci-static/resources/view/homeproxy/client.js:877 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 地址" -#: htdocs/luci-static/resources/view/homeproxy/client.js:844 +#: htdocs/luci-static/resources/view/homeproxy/client.js:851 +msgid "Proxy MAC-s" +msgstr "代理 MAC 地址" + +#: htdocs/luci-static/resources/view/homeproxy/client.js:832 msgid "Proxy all except listed" msgstr "仅允许列表外" -#: htdocs/luci-static/resources/view/homeproxy/client.js:841 +#: htdocs/luci-static/resources/view/homeproxy/client.js:829 msgid "Proxy filter mode" msgstr "代理过滤模式" -#: htdocs/luci-static/resources/view/homeproxy/client.js:843 +#: htdocs/luci-static/resources/view/homeproxy/client.js:831 msgid "Proxy listed only" msgstr "仅允许列表内" -#: htdocs/luci-static/resources/view/homeproxy/client.js:218 +#: htdocs/luci-static/resources/view/homeproxy/client.js:219 msgid "Proxy mode" msgstr "代理模式" @@ -1320,8 +1336,8 @@ msgstr "代理协议" msgid "QQ" msgstr "QQ" -#: htdocs/luci-static/resources/view/homeproxy/client.js:425 -#: htdocs/luci-static/resources/view/homeproxy/client.js:691 +#: htdocs/luci-static/resources/view/homeproxy/client.js:427 +#: htdocs/luci-static/resources/view/homeproxy/client.js:693 #: htdocs/luci-static/resources/view/homeproxy/node.js:768 #: htdocs/luci-static/resources/view/homeproxy/server.js:215 msgid "QUIC" @@ -1359,7 +1375,7 @@ msgstr "REALITY 公钥" msgid "REALITY short ID" msgstr "REALITY 标识符" -#: htdocs/luci-static/resources/view/homeproxy/client.js:54 +#: htdocs/luci-static/resources/view/homeproxy/client.js:55 msgid "RUNNING" msgstr "运行中" @@ -1371,27 +1387,27 @@ msgstr "随机" msgid "Randomized" msgstr "随机生成" -#: htdocs/luci-static/resources/view/homeproxy/client.js:363 +#: htdocs/luci-static/resources/view/homeproxy/client.js:365 msgid "Recursive outbound detected!" msgstr "检测到递归出站!" -#: htdocs/luci-static/resources/view/homeproxy/client.js:606 +#: htdocs/luci-static/resources/view/homeproxy/client.js:608 msgid "Recursive resolver detected!" msgstr "检测到递归解析器!" -#: htdocs/luci-static/resources/view/homeproxy/client.js:219 +#: htdocs/luci-static/resources/view/homeproxy/client.js:220 msgid "Redirect TCP" msgstr "Redirect TCP" -#: htdocs/luci-static/resources/view/homeproxy/client.js:220 +#: htdocs/luci-static/resources/view/homeproxy/client.js:222 msgid "Redirect TCP + TProxy UDP" msgstr "Redirect TCP + TProxy UDP" -#: htdocs/luci-static/resources/view/homeproxy/client.js:222 +#: htdocs/luci-static/resources/view/homeproxy/client.js:224 msgid "Redirect TCP + Tun UDP" msgstr "Redirect TCP + Tun UDP" -#: htdocs/luci-static/resources/view/homeproxy/status.js:139 +#: htdocs/luci-static/resources/view/homeproxy/status.js:141 msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" @@ -1403,44 +1419,44 @@ msgstr "移除 %s 个节点" msgid "Remove all nodes from subscriptions" msgstr "移除所有订阅节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:619 +#: htdocs/luci-static/resources/view/homeproxy/client.js:621 msgid "Resolve strategy" msgstr "解析策略" -#: htdocs/luci-static/resources/view/homeproxy/status.js:152 +#: htdocs/luci-static/resources/view/homeproxy/status.js:161 msgid "Resources management" msgstr "资源管理" -#: htdocs/luci-static/resources/view/homeproxy/client.js:295 +#: htdocs/luci-static/resources/view/homeproxy/client.js:297 msgid "Routing Nodes" msgstr "路由节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:371 +#: htdocs/luci-static/resources/view/homeproxy/client.js:373 msgid "Routing Rules" msgstr "路由规则" -#: htdocs/luci-static/resources/view/homeproxy/client.js:136 +#: htdocs/luci-static/resources/view/homeproxy/client.js:137 msgid "Routing Settings" msgstr "路由设置" -#: htdocs/luci-static/resources/view/homeproxy/client.js:181 +#: htdocs/luci-static/resources/view/homeproxy/client.js:182 msgid "Routing mode" msgstr "路由模式" -#: htdocs/luci-static/resources/view/homeproxy/client.js:304 +#: htdocs/luci-static/resources/view/homeproxy/client.js:306 msgid "Routing node" msgstr "路由节点" -#: htdocs/luci-static/resources/view/homeproxy/client.js:194 +#: htdocs/luci-static/resources/view/homeproxy/client.js:195 msgid "Routing ports" msgstr "路由端口" -#: htdocs/luci-static/resources/view/homeproxy/client.js:380 +#: htdocs/luci-static/resources/view/homeproxy/client.js:382 msgid "Routing rule" msgstr "路由规则" -#: htdocs/luci-static/resources/view/homeproxy/client.js:426 -#: htdocs/luci-static/resources/view/homeproxy/client.js:693 +#: htdocs/luci-static/resources/view/homeproxy/client.js:428 +#: htdocs/luci-static/resources/view/homeproxy/client.js:695 msgid "STUN" msgstr "STUN" @@ -1452,7 +1468,7 @@ msgstr "SUoT 版本" msgid "Safari" msgstr "Safari" -#: htdocs/luci-static/resources/view/homeproxy/client.js:148 +#: htdocs/luci-static/resources/view/homeproxy/client.js:149 msgid "Same as main node" msgstr "保持与主节点一致" @@ -1464,7 +1480,7 @@ msgstr "保存当前设置" msgid "Save subscriptions settings" msgstr "保存订阅设置" -#: htdocs/luci-static/resources/view/homeproxy/client.js:779 +#: htdocs/luci-static/resources/view/homeproxy/client.js:781 #: htdocs/luci-static/resources/view/homeproxy/server.js:43 msgid "Server" msgstr "服务器" @@ -1479,6 +1495,10 @@ msgid "" "ServerName field is empty." msgstr "当 ClientHello 的 ServerName 字段为空时,选择证书所使用的服务器名称。" +#: htdocs/luci-static/resources/view/homeproxy/server.js:38 +msgid "Server settings" +msgstr "服务器设置" + #: root/usr/share/luci/menu.d/luci-app-homeproxy.json:38 msgid "Service Status" msgstr "服务状态" @@ -1500,8 +1520,8 @@ msgstr "Shadowsocks" msgid "ShadowsocksR" msgstr "ShadowsocksR" -#: htdocs/luci-static/resources/view/homeproxy/client.js:422 -#: htdocs/luci-static/resources/view/homeproxy/client.js:688 +#: htdocs/luci-static/resources/view/homeproxy/client.js:424 +#: htdocs/luci-static/resources/view/homeproxy/client.js:690 msgid "" "Sniffed protocol, see Sniff for details." @@ -1530,23 +1550,23 @@ msgstr "Socks4A" msgid "Socks5" msgstr "Socks5" -#: htdocs/luci-static/resources/view/homeproxy/client.js:449 -#: htdocs/luci-static/resources/view/homeproxy/client.js:716 +#: htdocs/luci-static/resources/view/homeproxy/client.js:451 +#: htdocs/luci-static/resources/view/homeproxy/client.js:718 msgid "Source GeoIP" msgstr "源 GeoIP" -#: htdocs/luci-static/resources/view/homeproxy/client.js:457 -#: htdocs/luci-static/resources/view/homeproxy/client.js:720 +#: htdocs/luci-static/resources/view/homeproxy/client.js:459 +#: htdocs/luci-static/resources/view/homeproxy/client.js:722 msgid "Source IP CIDR" msgstr "源 IP CIDR" -#: htdocs/luci-static/resources/view/homeproxy/client.js:467 -#: htdocs/luci-static/resources/view/homeproxy/client.js:730 +#: htdocs/luci-static/resources/view/homeproxy/client.js:469 +#: htdocs/luci-static/resources/view/homeproxy/client.js:732 msgid "Source port" msgstr "源端口" -#: htdocs/luci-static/resources/view/homeproxy/client.js:472 -#: htdocs/luci-static/resources/view/homeproxy/client.js:735 +#: htdocs/luci-static/resources/view/homeproxy/client.js:474 +#: htdocs/luci-static/resources/view/homeproxy/client.js:737 msgid "Source port range" msgstr "源端口范围" @@ -1581,7 +1601,7 @@ msgstr "" "指定发送 PING 帧后,在指定的超时时间内必须接收到响应。
如果在指定的超时时" "间内没有收到 PING 帧的响应,则连接将关闭。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:195 +#: htdocs/luci-static/resources/view/homeproxy/client.js:196 msgid "" "Specify target port(s) that get proxied. Multiple ports must be separated by " "commas." @@ -1604,7 +1624,7 @@ msgstr "订阅" msgid "Successfully imported %s nodes of total %s." msgstr "成功导入 %s 个节点,共 %s 个。" -#: htdocs/luci-static/resources/view/homeproxy/status.js:55 +#: htdocs/luci-static/resources/view/homeproxy/status.js:56 msgid "Successfully updated." msgstr "更新成功。" @@ -1617,12 +1637,12 @@ msgstr "" "支持 Hysteria、Shadowsocks(R)、Trojan、v2rayN(VMess)和 XTLS(VLESS)在线配" "置交付标准。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:244 +#: htdocs/luci-static/resources/view/homeproxy/client.js:246 msgid "System" msgstr "系统" -#: htdocs/luci-static/resources/view/homeproxy/client.js:417 -#: htdocs/luci-static/resources/view/homeproxy/client.js:683 +#: htdocs/luci-static/resources/view/homeproxy/client.js:419 +#: htdocs/luci-static/resources/view/homeproxy/client.js:685 #: htdocs/luci-static/resources/view/homeproxy/server.js:554 msgid "TCP" msgstr "TCP" @@ -1632,16 +1652,16 @@ msgstr "TCP" msgid "TCP fast open" msgstr "TCP 快速打开" -#: htdocs/luci-static/resources/view/homeproxy/client.js:238 +#: htdocs/luci-static/resources/view/homeproxy/client.js:240 msgid "TCP/IP stack" msgstr "TCP/IP 协议栈" -#: htdocs/luci-static/resources/view/homeproxy/client.js:239 +#: htdocs/luci-static/resources/view/homeproxy/client.js:241 msgid "TCP/IP stack." msgstr "TCP/IP 协议栈。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:424 -#: htdocs/luci-static/resources/view/homeproxy/client.js:690 +#: htdocs/luci-static/resources/view/homeproxy/client.js:426 +#: htdocs/luci-static/resources/view/homeproxy/client.js:692 #: htdocs/luci-static/resources/view/homeproxy/node.js:958 #: htdocs/luci-static/resources/view/homeproxy/server.js:304 msgid "TLS" @@ -1662,7 +1682,7 @@ msgstr "TLS SNI" msgid "TLS is not enforced. If TLS is not configured, plain HTTP 1.1 is used." msgstr "不强制执行 TLS。如未配置 TLS,将使用纯 HTTP 1.1。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:583 +#: htdocs/luci-static/resources/view/homeproxy/client.js:585 msgid "" "Tag of a another server to resolve the domain name in the address. Required " "if address contains domain." @@ -1670,19 +1690,19 @@ msgstr "" "用于解析本 DNS 服务器的域名的另一个 DNS 服务器的标签。如果服务器地址包括域名" "则必须。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:625 +#: htdocs/luci-static/resources/view/homeproxy/client.js:627 msgid "Tag of an outbound for connecting to the dns server." msgstr "用于连接到 DNS 服务器的出站标签。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:780 +#: htdocs/luci-static/resources/view/homeproxy/client.js:782 msgid "Tag of the target dns server." msgstr "目标 DNS 服务器标签。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:500 +#: htdocs/luci-static/resources/view/homeproxy/client.js:502 msgid "Tag of the target outbound." msgstr "目标出站标签。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:163 +#: htdocs/luci-static/resources/view/homeproxy/client.js:164 msgid "Tencent Public DNS (119.29.29.29)" msgstr "腾讯公共 DNS(119.29.29.29)" @@ -1690,7 +1710,7 @@ msgstr "腾讯公共 DNS(119.29.29.29)" msgid "The ACME CA provider to use." msgstr "使用的 ACME CA 颁发机构。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:525 +#: htdocs/luci-static/resources/view/homeproxy/client.js:527 msgid "The DNS strategy for resolving the domain name in the address." msgstr "解析域名的默认策略。" @@ -1704,7 +1724,7 @@ msgstr "用于接收数据的 QUIC 连接级流控制窗口。" msgid "The QUIC stream-level flow control window for receiving data." msgstr "用于接收数据的 QUIC 流级流控制窗口。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:579 +#: htdocs/luci-static/resources/view/homeproxy/client.js:581 msgid "The address of the dns server. Support UDP, TCP, DoT, DoH and RCode." msgstr "DNS 服务器的地址。支持 UDP、TCP、DoT、DoH 和 RCode。" @@ -1723,7 +1743,7 @@ msgid "" msgstr "" "用于 ACME TLS-ALPN 质询的备用端口; 系统必须将 443 转发到此端口以使质询成功。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:402 +#: htdocs/luci-static/resources/view/homeproxy/client.js:404 msgid "" "The default rule uses the following matching logic:
(domain || " "domain_suffix || domain_keyword || domain_regex || geosite || geoip || " @@ -1734,7 +1754,7 @@ msgstr "" "domain_keyword || domain_regex || geosite || geoip || ip_cidr) &&
(source_geoip || source_ip_cidr) &&
其他字段." -#: htdocs/luci-static/resources/view/homeproxy/client.js:668 +#: htdocs/luci-static/resources/view/homeproxy/client.js:670 msgid "" "The default rule uses the following matching logic:
(domain || " "domain_suffix || domain_keyword || domain_regex || geosite || ip_cidr) &&
(source_geoip || source_ip_cidr) &&
其他字段." -#: htdocs/luci-static/resources/view/homeproxy/client.js:614 +#: htdocs/luci-static/resources/view/homeproxy/client.js:616 msgid "" "The domain strategy for resolving the domain name in the address. dns." "strategy will be used if empty." @@ -1784,11 +1804,11 @@ msgstr "服务器和客户端之间的最大时间差。" msgid "The minimum TLS version that is acceptable." msgstr "可接受的最低 TLS 版本。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:110 +#: htdocs/luci-static/resources/view/homeproxy/client.js:111 msgid "The modern ImmortalWrt proxy platform for ARM64/AMD64." msgstr "为 ARM64/AMD64 设计的现代 ImmortalWrt 代理平台。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:332 +#: htdocs/luci-static/resources/view/homeproxy/client.js:334 msgid "The network interface to bind to." msgstr "绑定到的网络接口。" @@ -1808,7 +1828,7 @@ msgstr "服务端私钥,需要 PEM 格式。" msgid "The server public key, in PEM format." msgstr "服务端公钥,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:339 +#: htdocs/luci-static/resources/view/homeproxy/client.js:341 msgid "" "The tag of the upstream outbound.
Other dial fields will be ignored when " "enabled." @@ -1848,7 +1868,7 @@ msgstr "传输层" msgid "Trojan" msgstr "Trojan" -#: htdocs/luci-static/resources/view/homeproxy/client.js:223 +#: htdocs/luci-static/resources/view/homeproxy/client.js:225 msgid "Tun TCP/UDP" msgstr "Tun TCP/UDP" @@ -1857,8 +1877,8 @@ msgstr "Tun TCP/UDP" msgid "Type" msgstr "类型" -#: htdocs/luci-static/resources/view/homeproxy/client.js:418 -#: htdocs/luci-static/resources/view/homeproxy/client.js:684 +#: htdocs/luci-static/resources/view/homeproxy/client.js:420 +#: htdocs/luci-static/resources/view/homeproxy/client.js:686 #: htdocs/luci-static/resources/view/homeproxy/server.js:555 msgid "UDP" msgstr "UDP" @@ -1877,11 +1897,11 @@ msgstr "UDP over TCP" msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/view/homeproxy/status.js:67 +#: htdocs/luci-static/resources/view/homeproxy/status.js:68 msgid "Unknown error." msgstr "未知错误。" -#: htdocs/luci-static/resources/view/homeproxy/status.js:116 +#: htdocs/luci-static/resources/view/homeproxy/status.js:118 msgid "Unknown error: %s" msgstr "未知错误:%s" @@ -1893,7 +1913,7 @@ msgstr "不支持的指纹!" msgid "Update %s subscriptions" msgstr "更新 %s 个订阅" -#: htdocs/luci-static/resources/view/homeproxy/status.js:58 +#: htdocs/luci-static/resources/view/homeproxy/status.js:59 msgid "Update failed." msgstr "上传失败。" @@ -1924,7 +1944,7 @@ msgstr "上传密钥" msgid "Upload..." msgstr "上传..." -#: htdocs/luci-static/resources/view/homeproxy/client.js:254 +#: htdocs/luci-static/resources/view/homeproxy/client.js:256 msgid "Upstream archived. Not recommended." msgstr "上游已存档。不建议。" @@ -1932,7 +1952,7 @@ msgstr "上游已存档。不建议。" msgid "Use ACME TLS certificate issuer." msgstr "使用 ACME TLS 证书颁发机构。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:157 +#: htdocs/luci-static/resources/view/homeproxy/client.js:158 msgid "Use DNS server from WAN" msgstr "使用 WAN 下发的 DNS" @@ -1943,8 +1963,8 @@ msgid "" "given." msgstr "用于验证返回证书上的主机名。如允许不安全连接,此配置无效。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:495 -#: htdocs/luci-static/resources/view/homeproxy/client.js:758 +#: htdocs/luci-static/resources/view/homeproxy/client.js:497 +#: htdocs/luci-static/resources/view/homeproxy/client.js:760 msgid "User" msgstr "用户" @@ -1963,7 +1983,7 @@ msgstr "VLESS" msgid "VMess" msgstr "VMess" -#: htdocs/luci-static/resources/view/homeproxy/client.js:907 +#: htdocs/luci-static/resources/view/homeproxy/client.js:872 msgid "WAN IP Policy" msgstr "WAN IP 策略" @@ -1996,7 +2016,7 @@ msgstr "WireGuard 要求 base64 编码的私钥。" msgid "Write Proxy Protocol in the connection header." msgstr "在连接标头中写入代理协议。" -#: htdocs/luci-static/resources/view/homeproxy/client.js:164 +#: htdocs/luci-static/resources/view/homeproxy/client.js:165 msgid "Xinfeng Public DNS (114.114.114.114)" msgstr "信风公共 DNS(114.114.114.114)" @@ -2005,7 +2025,7 @@ msgstr "信风公共 DNS(114.114.114.114)" msgid "Xudp (Xray-core)" msgstr "Xudp (Xray-core)" -#: htdocs/luci-static/resources/view/homeproxy/client.js:156 +#: htdocs/luci-static/resources/view/homeproxy/client.js:157 msgid "You can only have one server set. It MUST support TCP query." msgstr "您只能设置一个服务器。它必须支持 TCP 查询。" @@ -2043,7 +2063,7 @@ msgstr "gRPC 允许无活动连接" msgid "gRPC service name" msgstr "gRPC 服务名称" -#: htdocs/luci-static/resources/view/homeproxy/client.js:241 +#: htdocs/luci-static/resources/view/homeproxy/client.js:243 msgid "gVisor" msgstr "gVisor" @@ -2053,7 +2073,7 @@ msgstr "iOS" #: htdocs/luci-static/resources/homeproxy.js:245 #: htdocs/luci-static/resources/homeproxy.js:263 -#: htdocs/luci-static/resources/view/homeproxy/client.js:173 +#: htdocs/luci-static/resources/view/homeproxy/client.js:174 #: htdocs/luci-static/resources/view/homeproxy/node.js:522 #: htdocs/luci-static/resources/view/homeproxy/node.js:1087 #: htdocs/luci-static/resources/view/homeproxy/server.js:103 @@ -2109,7 +2129,7 @@ msgstr "v2" msgid "v3" msgstr "v3" -#: htdocs/luci-static/resources/view/homeproxy/client.js:175 +#: htdocs/luci-static/resources/view/homeproxy/client.js:176 msgid "valid IP address" msgstr "有效 IP 地址" @@ -2122,17 +2142,17 @@ msgstr "有效网址" msgid "valid base64 key with %d characters" msgstr "包含 %d 个字符的有效 base64 密钥" -#: htdocs/luci-static/resources/view/homeproxy/client.js:947 -#: htdocs/luci-static/resources/view/homeproxy/client.js:976 +#: htdocs/luci-static/resources/view/homeproxy/client.js:912 +#: htdocs/luci-static/resources/view/homeproxy/client.js:941 msgid "valid hostname" msgstr "有效主机名" -#: htdocs/luci-static/resources/view/homeproxy/client.js:75 +#: htdocs/luci-static/resources/view/homeproxy/client.js:76 msgid "valid port range (port1:port2)" msgstr "有效端口范围(port1:port2)" -#: htdocs/luci-static/resources/view/homeproxy/client.js:203 -#: htdocs/luci-static/resources/view/homeproxy/client.js:208 +#: htdocs/luci-static/resources/view/homeproxy/client.js:204 +#: htdocs/luci-static/resources/view/homeproxy/client.js:209 msgid "valid port value" msgstr "有效端口值" diff --git a/homeproxy/root/etc/homeproxy/scripts/firewall_post.ut b/homeproxy/root/etc/homeproxy/scripts/firewall_post.ut index f500643ad..cdc2ae2ee 100755 --- a/homeproxy/root/etc/homeproxy/scripts/firewall_post.ut +++ b/homeproxy/root/etc/homeproxy/scripts/firewall_post.ut @@ -5,12 +5,29 @@ import { readfile } from 'fs'; import { cursor } from 'uci'; +import { isEmpty } from '/etc/homeproxy/scripts/homeproxy.uc'; -function array_to_nftstr(array) { +const fw4 = require('fw4'); + +function array_to_nftarr(array) { if (type(array) !== 'array') - return array; + return null; - return join(', ', array); + return `{ ${join(', ', uniq(array))} }`; +} + +function resolve_ipv6(str) { + if (isEmpty(str)) + return null; + + let ipv6 = fw4.parse_subnet(str)?.[0]; + if (!ipv6 || ipv6.family !== 6) + return null; + + if (ipv6.bits > -1) + return `${ipv6.addr}/${ipv6.bits}`; + else + return `& ${ipv6.mask} == ${ipv6.addr}`; } /* Misc config */ @@ -62,7 +79,7 @@ const control_options = [ "lan_direct_mac_addrs", "lan_direct_ipv4_ips", "lan_direct_ipv6_ips", "lan_proxy_mac_addrs", "lan_proxy_ipv4_ips", "lan_proxy_ipv6_ips", "lan_gaming_mode_mac_addrs", "lan_gaming_mode_ipv4_ips", "lan_gaming_mode_ipv6_ips", - "lan_global_proxy_ipv4_ips", "lan_global_proxy_ipv6_ips", + "lan_global_proxy_mac_addrs", "lan_global_proxy_ipv4_ips", "lan_global_proxy_ipv6_ips", "wan_proxy_ipv4_ips", "wan_proxy_ipv6_ips", "wan_direct_ipv4_ips", "wan_direct_ipv6_ips" ]; @@ -160,91 +177,6 @@ set homeproxy_mainland_addr_v6 { {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} -{# LAN ACL addresses #} -{% if (control_info.lan_proxy_mode === 'listed_only'): %} -set homeproxy_lan_proxy_addr_v4 { - type ipv4_addr - flags interval - auto-merge -{% if (control_info.lan_proxy_ipv4_ips): %} - elements = { {{ join(', ', control_info.lan_proxy_ipv4_ips) }} } -{% endif %} -} - -{% if (ipv6_support === '1'): %} -set homeproxy_lan_proxy_addr_v6 { - type ipv6_addr - flags interval - auto-merge -{% if (control_info.lan_proxy_ipv6_ips): %} - elements = { {{ join(', ', control_info.lan_proxy_ipv6_ips) }} } -{% endif /* lan_proxy_ipv6_ips */ %} -{% endif /* ipv6_support */ %} -} -{% elif (control_info.lan_proxy_mode === 'except_listed'): %} -set homeproxy_lan_direct_addr_v4 { - type ipv4_addr - flags interval - auto-merge -{% if (control_info.lan_direct_ipv4_ips): %} - elements = { {{ join(', ', control_info.lan_direct_ipv4_ips) }} } -{% endif %} -} - -{% if (ipv6_support === '1'): %} -set homeproxy_lan_direct_addr_v6 { - type ipv6_addr - flags interval - auto-merge -{% if (control_info.lan_direct_ipv6_ips): %} - elements = { {{ join(', ', control_info.lan_direct_ipv6_ips) }} } -{% endif /* lan_direct_ipv6_ips */ %} -} -{% endif /* ipv6_support */ %} -{% endif /* lan_proxy_mode */ %} - -set homeproxy_lan_gaming_addr_v4 { - type ipv4_addr - flags interval - auto-merge -{% if (control_info.lan_gaming_mode_ipv4_ips): %} - elements = { {{ join(', ', control_info.lan_gaming_mode_ipv4_ips) }} } -{% endif %} -} - -{% if (ipv6_support === '1'): %} -set homeproxy_lan_gaming_addr_v6 { - type ipv6_addr - flags interval - auto-merge -{% if (control_info.lan_gaming_mode_ipv6_ips): %} - elements = { {{ join(', ', control_info.lan_gaming_mode_ipv6_ips) }} } -{% endif /* lan_gaming_mode_ipv6_ips */ %} -} -{% endif /* ipv6_support */ %} - -{% if (routing_mode !== 'custom'): %} -set homeproxy_lan_global_proxy_addr_v4 { - type ipv4_addr - flags interval - auto-merge -{% if (control_info.lan_global_proxy_ipv4_ips): %} - elements = { {{ join(', ', control_info.lan_global_proxy_ipv4_ips) }} } -{% endif /* lan_global_proxy_ipv4_ips */ %} -} - -{% if (ipv6_support === '1'): %} -set homeproxy_lan_global_proxy_addr_v6 { - type ipv6_addr - flags interval - auto-merge -{% if (control_info.lan_global_proxy_ipv6_ips): %} - elements = { {{ join(', ', control_info.lan_global_proxy_ipv6_ips) }} } -{% endif /* lan_global_proxy_ipv6_ips */ %} -} -{% endif /* ipv6_support */ %} -{% endif /* routing_mode */ %} - {# WAN ACL addresses #} set homeproxy_wan_proxy_addr_v4 { type ipv4_addr @@ -297,6 +229,10 @@ set homeproxy_routing_port { {# TCP redirect #} {% if (match(proxy_mode, /redirect/)): %} +chain homeproxy_redirect_proxy { + meta l4proto tcp counter redirect to :{{ redirect_port }} +} + chain homeproxy_redirect_proxy_port { {% if (routing_port !== 'all'): %} tcp dport != @homeproxy_routing_port counter return @@ -304,25 +240,42 @@ chain homeproxy_redirect_proxy_port { goto homeproxy_redirect_proxy } -chain homeproxy_redirect_proxy { - meta l4proto tcp counter redirect to :{{ redirect_port }} +chain homeproxy_redirect_lanac { + {% if (control_info.listen_interfaces): %} + meta iifname != {{ array_to_nftarr(control_info.listen_interfaces) }} counter return + {% endif %} + meta mark {{ self_mark }} counter return + + {% if (control_info.lan_proxy_mode === 'listed_only'): %} + {% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_redirect + {% endif /* lan_proxy_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect + {% endfor /* lan_proxy_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_redirect + {% endif /* lan_proxy_mac_addrs */ %} + {% elif (control_info.lan_proxy_mode === 'except_listed'): %} + {% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return + {% endif /* lan_direct_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_direct_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter return + {% endfor /* lan_direct_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_direct_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return + {% endif /* lan_direct_mac_addrs */ %} + {% endif /* lan_proxy_mode */ %} + + {% if (control_info.lan_proxy_mode !== 'listed_only'): %} + counter goto homeproxy_redirect + {% endif %} } chain homeproxy_redirect { meta mark {{ self_mark }} counter return - {% if (control_info.lan_proxy_mode === 'listed_only'): %} - ip saddr != @homeproxy_lan_proxy_addr_v4 counter return - {% if (ipv6_support === '1'): %} - ip6 saddr != @homeproxy_lan_proxy_addr_v6 counter return - {% endif /* ipv6_support */ %} - {% elif (control_info.lan_proxy_mode === 'except_listed'): %} - ip saddr @homeproxy_lan_direct_addr_v4 counter return - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_direct_addr_v6 counter return - {% endif /* ipv6_support */ %} - {% endif /* lan_proxy_mode */ %} - ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_redirect_proxy_port {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_redirect_proxy_port @@ -334,10 +287,15 @@ chain homeproxy_redirect { {% endif %} {% if (routing_mode !== 'custom'): %} - ip saddr @homeproxy_lan_global_proxy_addr_v4 counter goto homeproxy_redirect_proxy_port - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_global_proxy_addr_v6 counter goto homeproxy_redirect_proxy_port - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_redirect + {% endif /* lan_global_proxy_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect + {% endfor /* lan_global_proxy_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_redirect + {% endif /* lan_global_proxy_mac_addrs */ %} {% endif /* routing_mode */ %} ip daddr @homeproxy_wan_direct_addr_v4 counter return @@ -362,41 +320,31 @@ chain homeproxy_redirect { {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} - ip saddr @homeproxy_lan_gaming_addr_v4 counter goto homeproxy_redirect_proxy - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_gaming_addr_v6 counter goto homeproxy_redirect_proxy - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter goto homeproxy_redirect_proxy + {% endif /* lan_gaming_mode_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_redirect_proxy + {% endfor /* lan_gaming_mode_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter goto homeproxy_redirect_proxy + {% endif /* lan_gaming_mode_mac_addrs */ %} counter goto homeproxy_redirect_proxy_port } -chain homeproxy_dstnat_redir { - {% if (control_info.listen_interfaces): %} - meta iifname != { {{ array_to_nftstr(control_info.listen_interfaces) }} } counter return - {% endif %} - - goto homeproxy_redirect -} - chain homeproxy_output_redir { type nat hook output priority filter -105; policy accept meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect } chain dstnat { - meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_dstnat_redir + meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto tcp jump homeproxy_redirect_lanac } {% endif %} {# UDP tproxy #} {% if (match(proxy_mode, /tproxy/) && (outbound_udp_node !== 'nil' || routing_mode === 'custom')): %} -chain homeproxy_mangle_tproxy_port { - {% if (routing_port !== 'all'): %} - udp dport != @homeproxy_routing_port counter return - {% endif %} - goto homeproxy_mangle_tproxy -} - chain homeproxy_mangle_tproxy { meta l4proto udp mark set {{ tproxy_mark }} tproxy ip to 127.0.0.1:{{ tproxy_port }} counter accept {% if (ipv6_support === '1'): %} @@ -404,6 +352,13 @@ chain homeproxy_mangle_tproxy { {% endif %} } +chain homeproxy_mangle_tproxy_port { + {% if (routing_port !== 'all'): %} + udp dport != @homeproxy_routing_port counter return + {% endif %} + goto homeproxy_mangle_tproxy +} + chain homeproxy_mangle_mark { {% if (routing_port !== 'all'): %} udp dport != @homeproxy_routing_port counter return @@ -411,25 +366,40 @@ chain homeproxy_mangle_mark { meta l4proto udp mark set {{ tproxy_mark }} counter accept } -chain homeproxy_mangle_prerouting { +chain homeproxy_mangle_lanac { {% if (control_info.listen_interfaces): %} - meta iifname != { {{ array_to_nftstr(control_info.listen_interfaces) }}, lo } counter return + meta iifname != {{ array_to_nftarr(split(join(' ', control_info.listen_interfaces) + ' lo', ' ')) }} counter return {% endif %} - meta mark {{ self_mark }} counter return {% if (control_info.lan_proxy_mode === 'listed_only'): %} - ip saddr != @homeproxy_lan_proxy_addr_v4 counter return - {% if (ipv6_support === '1'): %} - ip6 saddr != @homeproxy_lan_proxy_addr_v6 counter return - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_mangle_prerouting + {% endif /* lan_proxy_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_prerouting + {% endfor /* lan_proxy_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_mangle_prerouting + {% endif /* lan_proxy_mac_addrs */ %} {% elif (control_info.lan_proxy_mode === 'except_listed'): %} - ip saddr @homeproxy_lan_direct_addr_v4 counter return - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_direct_addr_v6 counter return - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return + {% endif /* lan_direct_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_direct_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter return + {% endfor /* lan_direct_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_direct_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return + {% endif /* lan_direct_mac_addrs */ %} {% endif /* lan_proxy_mode */ %} + {% if (control_info.lan_proxy_mode !== 'listed_only'): %} + counter goto homeproxy_mangle_prerouting + {% endif %} +} + +chain homeproxy_mangle_prerouting { ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tproxy_port {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tproxy_port @@ -441,10 +411,15 @@ chain homeproxy_mangle_prerouting { {% endif %} {% if (routing_mode !== 'custom'): %} - ip saddr @homeproxy_lan_global_proxy_addr_v4 counter goto homeproxy_mangle_tproxy_port - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_global_proxy_addr_v6 counter goto homeproxy_mangle_tproxy_port - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tproxy_port + {% endif /* lan_global_proxy_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tproxy_port + {% endfor /* lan_global_proxy_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_mangle_tproxy_port + {% endif /* lan_global_proxy_mac_addrs */ %} {% endif /* routing_mode */ %} ip daddr @homeproxy_wan_direct_addr_v4 counter return @@ -473,10 +448,15 @@ chain homeproxy_mangle_prerouting { {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} - ip saddr @homeproxy_lan_gaming_addr_v4 counter goto homeproxy_mangle_tproxy - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_gaming_addr_v6 counter goto homeproxy_mangle_tproxy - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter goto homeproxy_mangle_tproxy + {% endif /* lan_gaming_mode_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tproxy + {% endfor /* lan_gaming_mode_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter goto homeproxy_mangle_tproxy + {% endif /* lan_gaming_mode_mac_addrs */ %} counter goto homeproxy_mangle_tproxy_port } @@ -520,7 +500,7 @@ chain homeproxy_mangle_output { } chain mangle_prerouting { - meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto udp jump homeproxy_mangle_prerouting + meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto udp jump homeproxy_mangle_lanac } chain mangle_output { @@ -530,11 +510,38 @@ chain mangle_output { {# TUN #} {% if (match(proxy_mode, /tun/)): %} -chain homeproxy_mangle_prerouting_tun { +chain homeproxy_mangle_lanac { + iifname {{ tun_name }} counter return + {% if (control_info.listen_interfaces): %} - meta iifname != { {{ array_to_nftstr(control_info.listen_interfaces) }} } counter return + meta iifname != {{ array_to_nftarr(control_info.listen_interfaces) }} counter return + {% endif %} + + {% if (control_info.lan_proxy_mode === 'listed_only'): %} + {% if (!isEmpty(control_info.lan_proxy_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tun + {% endif /* lan_proxy_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_proxy_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tun + {% endfor /* lan_proxy_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_proxy_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_proxy_mac_addrs) }} counter goto homeproxy_mangle_tun + {% endif /* lan_proxy_mac_addrs */ %} + {% elif (control_info.lan_proxy_mode === 'except_listed'): %} + {% if (!isEmpty(control_info.lan_direct_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_direct_ipv4_ips) }} counter return + {% endif /* lan_direct_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_direct_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter return + {% endfor /* lan_direct_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_direct_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_direct_mac_addrs) }} counter return + {% endif /* lan_direct_mac_addrs */ %} + {% endif /* lan_proxy_mode */ %} + + {% if (control_info.lan_proxy_mode !== 'listed_only'): %} + counter goto homeproxy_mangle_tun {% endif %} - jump homeproxy_mangle_tun } chain homeproxy_mangle_tun_mark { @@ -551,18 +558,6 @@ chain homeproxy_mangle_tun_mark { chain homeproxy_mangle_tun { iifname {{ tun_name }} counter return - {% if (control_info.lan_proxy_mode === 'listed_only'): %} - ip saddr != @homeproxy_lan_proxy_addr_v4 counter return - {% if (ipv6_support === '1'): %} - ip6 saddr != @homeproxy_lan_proxy_addr_v6 counter return - {% endif /* ipv6_support */ %} - {% elif (control_info.lan_proxy_mode === 'except_listed'): %} - ip saddr @homeproxy_lan_direct_addr_v4 counter return - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_direct_addr_v6 counter return - {% endif /* ipv6_support */ %} - {% endif /* lan_proxy_mode */ %} - ip daddr @homeproxy_wan_proxy_addr_v4 counter goto homeproxy_mangle_tun_mark {% if (ipv6_support === '1'): %} ip6 daddr @homeproxy_wan_proxy_addr_v6 counter goto homeproxy_mangle_tun_mark @@ -574,17 +569,22 @@ chain homeproxy_mangle_tun { {% endif %} {% if (routing_mode !== 'custom'): %} - ip saddr @homeproxy_lan_global_proxy_addr_v4 counter goto homeproxy_mangle_tun_mark - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_global_proxy_addr_v6 counter goto homeproxy_mangle_tun_mark - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_global_proxy_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_global_proxy_ipv4_ips) }} counter goto homeproxy_mangle_tun_mark + {% endif /* lan_global_proxy_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_global_proxy_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter goto homeproxy_mangle_tun_mark + {% endfor /* lan_global_proxy_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_global_proxy_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_global_proxy_mac_addrs) }} counter goto homeproxy_mangle_tun_mark + {% endif /* lan_global_proxy_mac_addrs */ %} {% endif /* routing_mode */ %} {% if (control_info.wan_direct_ipv4_ips): %} - ip daddr { {{ array_to_nftstr(control_info.wan_direct_ipv4_ips) }} } counter return + ip daddr {{ array_to_nftarr(control_info.wan_direct_ipv4_ips) }} counter return {% endif /* wan_direct_ipv4_ips */ %} {% if (control_info.wan_direct_ipv6_ips): %} - ip6 daddr { {{ array_to_nftstr(control_info.wan_direct_ipv6_ips) }} } counter return + ip6 daddr {{ array_to_nftarr(control_info.wan_direct_ipv6_ips) }} counter return {% endif /* wan_direct_ipv6_ips */ %} {% if (routing_mode === 'gfwlist'): %} @@ -608,16 +608,21 @@ chain homeproxy_mangle_tun { {% endif /* ipv6_support */ %} {% endif /* routing_mode */ %} - ip saddr @homeproxy_lan_gaming_addr_v4 counter mark set {{ tun_mark }} - {% if (ipv6_support === '1'): %} - ip6 saddr @homeproxy_lan_gaming_addr_v6 counter mark set {{ tun_mark }} - {% endif /* ipv6_support */ %} + {% if (!isEmpty(control_info.lan_gaming_mode_ipv4_ips)): %} + ip saddr {{ array_to_nftarr(control_info.lan_gaming_mode_ipv4_ips) }} counter mark set {{ tun_mark }} + {% endif /* lan_gaming_mode_ipv4_ips */ %} + {% for (let ipv6 in control_info.lan_gaming_mode_ipv6_ips): %} + ip6 saddr {{ resolve_ipv6(ipv6) }} counter mark set {{ tun_mark }} + {% endfor /* lan_gaming_mode_ipv6_ips */ %} + {% if (!isEmpty(control_info.lan_gaming_mode_mac_addrs)): %} + ether saddr {{ array_to_nftarr(control_info.lan_gaming_mode_mac_addrs) }} counter mark set {{ tun_mark }} + {% endif /* lan_gaming_mode_mac_addrs */ %} counter goto homeproxy_mangle_tun_mark } chain mangle_prerouting { - meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto { {{ (proxy_mode === 'tun') ? 'tcp, udp' : 'udp' }} } jump homeproxy_mangle_prerouting_tun + meta nfproto { {{ (ipv6_support === '1') ? 'ipv4, ipv6' : 'ipv4' }} } meta l4proto { {{ (proxy_mode === 'tun') ? 'tcp, udp' : 'udp' }} } jump homeproxy_mangle_lanac } chain mangle_output { diff --git a/homeproxy/root/etc/homeproxy/scripts/generate_sing-box.uc b/homeproxy/root/etc/homeproxy/scripts/generate_sing-box.uc index 619db5dc2..bc3d6f3da 100755 --- a/homeproxy/root/etc/homeproxy/scripts/generate_sing-box.uc +++ b/homeproxy/root/etc/homeproxy/scripts/generate_sing-box.uc @@ -609,24 +609,8 @@ if (!isEmpty(main_node) || !isEmpty(default_outbound)) default_interface: default_interface }; +/* Routing rules */ if (!isEmpty(main_node)) { - /* Routing rules */ - /* LAN ACL */ - if (length(lan_proxy_ips)) { - if (dedicated_udp_node) { - push(config.route.rules, { - source_ip_cidr: lan_proxy_ips, - network: 'udp', - outbound: 'main-udp-out' - }); - } - - push(config.route.rules, { - source_ip_cidr: lan_proxy_ips, - outbound: 'main-out' - }); - } - /* Direct list */ if (length(direct_domain_list)) push(config.route.rules, { diff --git a/homeproxy/root/etc/init.d/homeproxy b/homeproxy/root/etc/init.d/homeproxy index a9097eef8..b1bd48f06 100755 --- a/homeproxy/root/etc/init.d/homeproxy +++ b/homeproxy/root/etc/init.d/homeproxy @@ -133,7 +133,6 @@ start_service() { fi utpl -S "$HP_DIR/scripts/firewall_post.ut" > "$RUN_DIR/fw4_post.nft" - fi utpl -S "$HP_DIR/scripts/firewall_pre.ut" > "$RUN_DIR/fw4_pre.nft" @@ -191,22 +190,18 @@ stop_service() { # Nftables rules for i in "homeproxy_dstnat_redir" "homeproxy_output_redir" \ - "homeproxy_redirect" "homeproxy_redirect_proxy_port" \ - "homeproxy_redirect_proxy" "homeproxy_mangle_prerouting" \ - "homeproxy_mangle_output" "homeproxy_mangle_tproxy_port" \ - "homeproxy_mangle_tproxy" "homeproxy_mangle_mark" \ - "homeproxy_mangle_tun" "homeproxy_mangle_tun_mark" \ - "homeproxy_mangle_prerouting_tun"; do + "homeproxy_redirect" "homeproxy_redirect_proxy" \ + "homeproxy_redirect_proxy_port" "homeproxy_redirect_lanac" \ + "homeproxy_mangle_prerouting" "homeproxy_mangle_output" \ + "homeproxy_mangle_tproxy" "homeproxy_mangle_tproxy_port" \ + "homeproxy_mangle_tproxy_lanac" "homeproxy_mangle_mark" \ + "homeproxy_mangle_tun" "homeproxy_mangle_tun_mark"; do nft flush chain inet fw4 "$i" nft delete chain inet fw4 "$i" done 2>"/dev/null" for i in "homeproxy_local_addr_v4" "homeproxy_local_addr_v6" \ "homeproxy_gfw_list_v4" "homeproxy_gfw_list_v6" \ "homeproxy_mainland_addr_v4" "homeproxy_mainland_addr_v6" \ - "homeproxy_lan_proxy_addr_v4" "homeproxy_lan_proxy_addr_v6" \ - "homeproxy_lan_direct_addr_v4" "homeproxy_lan_direct_addr_v6" \ - "homeproxy_lan_gaming_addr_v4" "homeproxy_lan_gaming_addr_v6" \ - "homeproxy_lan_global_proxy_addr_v4" "homeproxy_lan_global_proxy_addr_v6" \ "homeproxy_wan_proxy_addr_v4" "homeproxy_wan_proxy_addr_v6" \ "homeproxy_wan_direct_addr_v4" "homeproxy_wan_direct_addr_v6" \ "homeproxy_routing_port"; do diff --git a/homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy b/homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy index c371f6d81..c189404d2 100755 --- a/homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy +++ b/homeproxy/root/usr/share/rpcd/ucode/luci.homeproxy @@ -148,6 +148,7 @@ const methods = { fd.close(); } + features.hp_has_tproxy = access('/etc/modules.d/nft-tproxy'); features.hp_has_tun = access('/etc/modules.d/30-tun'); return features; diff --git a/luci-app-mosdns/root/etc/mosdns/rule/geosite_cn.txt b/luci-app-mosdns/root/etc/mosdns/rule/geosite_cn.txt index 7b0ff3e69..487502a1e 100644 --- a/luci-app-mosdns/root/etc/mosdns/rule/geosite_cn.txt +++ b/luci-app-mosdns/root/etc/mosdns/rule/geosite_cn.txt @@ -643,6 +643,7 @@ 10000tc.com 10000yao.com 10001wan.com +100024.xyz 1000360.com 10006.info 1000ci.net @@ -1770,6 +1771,7 @@ 1kuang.com 1kx.me 1kxun.com +1kyx.com 1lan.tv 1lewen.com 1look.tv @@ -3207,6 +3209,7 @@ 3t769up6.com 3tilabs.com 3u.com +3unshine.com 3uol.com 3us.com 3uww.cc @@ -12292,6 +12295,7 @@ can.tv canaan-creative.com canasy.com cancda.net +cancer361.com candou.com candylab.net candypay.com @@ -17120,6 +17124,7 @@ d.cg d03jd.com d1222.com d17.cc +d1999.com d1cm.com d1com.com d1dengju.com @@ -18380,6 +18385,7 @@ digitalvolvo.com digitalwuhan.com digitalwuhan.net digitlink.net +digitocero.com digitser.net digiwin.com digiwork.com @@ -18902,6 +18908,7 @@ dongcaibaoxian.com dongchaba.com dongchedi.com dongchediapp.com +dongcheng1.com dongcheng120.com dongchenghotels.com dongdao.net @@ -19158,6 +19165,7 @@ dpcyjt.com dper.com dpevmh.com dpfile.com +dplayerjsvideo.com dplayersvideostatic.com dplor.com dplord.com @@ -23912,6 +23920,7 @@ gohong.com gohugo.org going-link.com gojiaju.com +gokaigai.com goke.com gokols.com gokuai.com @@ -33822,6 +33831,7 @@ kikoplay.fun kiku.vip kililife.com killdb.com +kiloai.com kimiss.com kimiss.net kimiter.com @@ -36447,6 +36457,7 @@ lnrcu.com lnrsks.com lnsent.com lnsgczb.com +lnsyrjwz.com lntenghui.com lntvu.com lntycp.com @@ -36666,7 +36677,6 @@ looyuoms.com looyush.com lopetech.net lopkino.com -lopopoo.com lopss.com lorefree.com losking.com @@ -37177,6 +37187,7 @@ lxxm.com lxybaike.com lxyes.com lxyl539.com +lxyllawfirm.com ly-sky.com ly.com ly200-cdn.com @@ -41263,6 +41274,7 @@ okad.com okada-china.com okaoyan.com okayapi.com +okaybio.com okbao.com okbase.net okbiao.com @@ -41927,6 +41939,7 @@ palace-international.com palanceli.com palm-h.com palmestore.com +palmfungames.com palmjoys.com palmtrends.com palmyou.com @@ -42755,6 +42768,7 @@ plcloud.com plcsq.com plesk-cn.com plexjiasuqi.com +plexpt.com plob.org plotcup.com plqdf.com @@ -50680,7 +50694,6 @@ tapas.net tapdata.net tapdb.com tapdb.net -tapechat.net tapenjoy.com tapimg.com tapotiexie.com @@ -51808,7 +51821,6 @@ tokenglish.com tokensky.net tokenworld.pro tokimekiclub.org -toktok-mall.com tol24.com tom.cat tom.com @@ -54523,6 +54535,7 @@ wandongli.com wandouip.com wandoujia.com waneziyuan.com +wanfangche.com wanfangdata.com wanfangqikan.com wanfangs.com @@ -55013,6 +55026,7 @@ wefinger.club wefitos.com wefunol.com wegame.com +wegameapi.com wegamedeveloper.com wegameplus.com wegamex.com.hk @@ -57613,6 +57627,7 @@ xiangqu.com xiangrikui.co xiangrikui.com xiangrikuijianzhan.com +xiangruizulin.com xiangshang360.com xiangshangban.com xiangshanpark.com @@ -57918,6 +57933,7 @@ xiaotee.com xiaoten.com xiaotengyouxi.com xiaotiancai.com +xiaotud.com xiaotut.com xiaotuzhan.com xiaou2014.com @@ -60814,6 +60830,7 @@ yjk.com yjk.im yjldp.com yjlin4.com +yjlink.cc yjnbn.com yjopen.com yjpal.com @@ -61178,6 +61195,7 @@ youease.net youedata.com youeryun.com youez.com +youfangou.com youfangzx.com youfen666.com youfh.com @@ -61403,6 +61421,7 @@ youyannet.com youyeetoo.com youyegame.com youyi-game.com +youyigame.com youyilm.com youyiqi.com youyiqiaogou.com @@ -63275,6 +63294,7 @@ zhengyexing.com zhengyifeng.com zhengyinyong.com zhengyounet.com +zhengyouyoule.com zhengzai.tv zhengzhen25.xyz zhengzhen26.xyz diff --git a/luci-app-mosdns/root/etc/mosdns/rule/geosite_no_cn.txt b/luci-app-mosdns/root/etc/mosdns/rule/geosite_no_cn.txt index b60a6a458..baa3aed27 100644 --- a/luci-app-mosdns/root/etc/mosdns/rule/geosite_no_cn.txt +++ b/luci-app-mosdns/root/etc/mosdns/rule/geosite_no_cn.txt @@ -14272,6 +14272,7 @@ hgsacx.com hgseav.com hgtg022.com hgtv +hh-content.com hh176.net hh2267.com hh22hh.com @@ -17086,6 +17087,7 @@ kinkbook.com kinkcult.com kinkidt.i-cweb.net kinklive.com +kinkoid.com kinkyfamily.com kinkypeepz.com kinmen.travel @@ -22175,6 +22177,7 @@ pinterest.engineering pinterest.id pinterest.info pinterest.it +pinterest.net pinterest.pt pinterestmail.com pintool.com diff --git a/v2ray-geodata/Makefile b/v2ray-geodata/Makefile index 0ec5241fc..4c38927ca 100644 --- a/v2ray-geodata/Makefile +++ b/v2ray-geodata/Makefile @@ -21,13 +21,13 @@ define Download/geoip HASH:=1b6beebefa6ee3fb68e824d4664ccd75a21e8831700bb352d3b74d1c298e9793 endef -GEOSITE_VER:=20230401161112 +GEOSITE_VER:=20230401170636 GEOSITE_FILE:=dlc.dat.$(GEOSITE_VER) define Download/geosite URL:=https://github.com/v2fly/domain-list-community/releases/download/$(GEOSITE_VER)/ URL_FILE:=dlc.dat FILE:=$(GEOSITE_FILE) - HASH:=d63a3179224f69df6071d0bb8450c2df0bccec431d48b6618a64d284d20fea7b + HASH:=c884da813675fba5a15f322905623d5971e0c60ed5f2fbb8a54bfba1b401bc3b endef define Package/v2ray-geodata/template