update 2024-11-12 00:25:23

This commit is contained in:
kenzok8 2024-11-12 00:25:23 +08:00
parent 6fea7088dc
commit 18d2744e50
17 changed files with 497 additions and 346 deletions

View File

@ -9,12 +9,12 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=libnftnl PKG_NAME:=libnftnl
PKG_CPE_ID:=cpe:/a:netfilter:libnftnl PKG_CPE_ID:=cpe:/a:netfilter:libnftnl
PKG_VERSION:=1.2.6 PKG_VERSION:=1.2.8
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=ceeaea2cd92147da19f13a35a7f1a4bc2767ff897e838e4b479cf54b59c777f4 PKG_HASH:=37fea5d6b5c9b08de7920d298de3cdc942e7ae64b1a3e8b880b2d390ae67ad95
PKG_MAINTAINER:=Steven Barth <steven@midlink.org> PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
PKG_LICENSE:=GPL-2.0-or-later PKG_LICENSE:=GPL-2.0-or-later

View File

@ -15,13 +15,14 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
--- a/include/libnftnl/expr.h --- a/include/libnftnl/expr.h
+++ b/include/libnftnl/expr.h +++ b/include/libnftnl/expr.h
@@ -245,6 +245,12 @@ enum { @@ -272,6 +272,13 @@ enum {
}; };
enum { enum {
+ NFTNL_EXPR_FULLCONE_FLAGS = NFTNL_EXPR_BASE, + NFTNL_EXPR_FULLCONE_FLAGS = NFTNL_EXPR_BASE,
+ NFTNL_EXPR_FULLCONE_REG_PROTO_MIN, + NFTNL_EXPR_FULLCONE_REG_PROTO_MIN,
+ NFTNL_EXPR_FULLCONE_REG_PROTO_MAX, + NFTNL_EXPR_FULLCONE_REG_PROTO_MAX,
+ __NFTNL_EXPR_FULLCONE_MAX
+}; +};
+ +
+enum { +enum {
@ -65,7 +66,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
expr/socket.c \ expr/socket.c \
--- /dev/null --- /dev/null
+++ b/src/expr/fullcone.c +++ b/src/expr/fullcone.c
@@ -0,0 +1,167 @@ @@ -0,0 +1,165 @@
+/* +/*
+ * (C) 2022 wongsyrone + * (C) 2022 wongsyrone
+ * + *
@ -110,8 +111,6 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
+ case NFTNL_EXPR_FULLCONE_REG_PROTO_MAX: + case NFTNL_EXPR_FULLCONE_REG_PROTO_MAX:
+ memcpy(&fullcone->sreg_proto_max, data, sizeof(fullcone->sreg_proto_max)); + memcpy(&fullcone->sreg_proto_max, data, sizeof(fullcone->sreg_proto_max));
+ break; + break;
+ default:
+ return -1;
+ } + }
+ return 0; + return 0;
+} +}
@ -226,7 +225,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
+struct expr_ops expr_ops_fullcone = { +struct expr_ops expr_ops_fullcone = {
+ .name = "fullcone", + .name = "fullcone",
+ .alloc_len = sizeof(struct nftnl_expr_fullcone), + .alloc_len = sizeof(struct nftnl_expr_fullcone),
+ .max_attr = NFTA_FULLCONE_MAX, + .nftnl_max_attr = __NFTNL_EXPR_FULLCONE_MAX - 1,
+ .set = nftnl_expr_fullcone_set, + .set = nftnl_expr_fullcone_set,
+ .get = nftnl_expr_fullcone_get, + .get = nftnl_expr_fullcone_get,
+ .parse = nftnl_expr_fullcone_parse, + .parse = nftnl_expr_fullcone_parse,

View File

@ -1,6 +1,6 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_VERSION:=1.10.0 PKG_VERSION:=1.11.0
LUCI_TITLE:=LuCI Support for mihomo LUCI_TITLE:=LuCI Support for mihomo
LUCI_DEPENDS:=+luci-base +mihomo LUCI_DEPENDS:=+luci-base +mihomo

View File

@ -117,4 +117,16 @@ return baseclass.extend({
alert(_('Service is not running.')); alert(_('Service is not running.'));
} }
}, },
getUsers: function () {
return fs.lines('/etc/passwd').then(function (lines) {
return lines.map(function (line) { return line.split(/:/)[0] }).filter(function (user) { return user !== 'root' && user !== 'mihomo' });
});
},
getGroups: function () {
return fs.lines('/etc/group').then(function (lines) {
return lines.map(function (line) { return line.split(/:/)[0] }).filter(function (group) { return group !== 'root' && group !== 'mihomo' });
});
},
}) })

View File

@ -29,6 +29,8 @@ return view.extend({
mihomo.appVersion(), mihomo.appVersion(),
mihomo.coreVersion(), mihomo.coreVersion(),
mihomo.status(), mihomo.status(),
mihomo.getUsers(),
mihomo.getGroups(),
network.getHostHints(), network.getHostHints(),
]); ]);
}, },
@ -38,7 +40,9 @@ return view.extend({
const appVersion = data[2]; const appVersion = data[2];
const coreVersion = data[3]; const coreVersion = data[3];
const running = data[4]; const running = data[4];
const hosts = data[5].hosts; const users = data[5];
const groups = data[6];
const hosts = data[7].hosts;
let m, s, o, so; let m, s, o, so;
@ -189,8 +193,8 @@ return view.extend({
for (const ip of host.ipaddrs) { for (const ip of host.ipaddrs) {
const hint = host.name || mac; const hint = host.name || mac;
o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip); o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
} };
} };
o = s.taboption('access_control', form.DynamicList, 'acl_ip6', 'IP6'); o = s.taboption('access_control', form.DynamicList, 'acl_ip6', 'IP6');
o.datatype = 'ipmask6'; o.datatype = 'ipmask6';
@ -203,8 +207,8 @@ return view.extend({
for (const ip of host.ip6addrs) { for (const ip of host.ip6addrs) {
const hint = host.name || mac; const hint = host.name || mac;
o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip); o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
} };
} };
o = s.taboption('access_control', form.DynamicList, 'acl_mac', 'MAC'); o = s.taboption('access_control', form.DynamicList, 'acl_mac', 'MAC');
o.datatype = 'macaddr'; o.datatype = 'macaddr';
@ -216,19 +220,40 @@ return view.extend({
const host = hosts[mac]; const host = hosts[mac];
const hint = host.name || host.ipaddrs[0]; const hint = host.name || host.ipaddrs[0];
o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac); o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac);
} };
o = s.taboption('access_control', widgets.NetworkSelect, 'acl_interface', _('Interface'));
o.multiple = true;
o.optional = true;
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
s.tab('bypass', _('Bypass')); s.tab('bypass', _('Bypass'));
o = s.taboption('bypass', form.MultiValue, 'bypass_user', _('Bypass User'));
o.create = true;
for (const user of users) {
o.value(user);
};
o = s.taboption('bypass', form.MultiValue, 'bypass_group', _('Bypass Group'));
o.create = true;
for (const group of groups) {
o.value(group);
};
o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP')); o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP'));
o.rmempty = false; o.rmempty = false;
o = s.taboption('bypass', form.Value, 'acl_tcp_dport', _('Destination TCP Port to Proxy')); o = s.taboption('bypass', form.Value, 'proxy_tcp_dport', _('Destination TCP Port to Proxy'));
o.rmempty = false; o.rmempty = false;
o.value('0-65535', _('All Port')); o.value('0-65535', _('All Port'));
o.value('21 22 80 110 143 194 443 465 853 993 995 8080 8443', _('Commonly Used Port')); o.value('21 22 80 110 143 194 443 465 853 993 995 8080 8443', _('Commonly Used Port'));
o = s.taboption('bypass', form.Value, 'acl_udp_dport', _('Destination UDP Port to Proxy')); o = s.taboption('bypass', form.Value, 'proxy_udp_dport', _('Destination UDP Port to Proxy'));
o.rmempty = false; o.rmempty = false;
o.value('0-65535', _('All Port')); o.value('0-65535', _('All Port'));
o.value('123 443 8443', _('Commonly Used Port')); o.value('123 443 8443', _('Commonly Used Port'));
@ -316,6 +341,7 @@ return view.extend({
o.placeholder = '9090'; o.placeholder = '9090';
o = s.taboption('external_control', form.Value, 'api_secret', '*' + ' ' + _('API Secret')); o = s.taboption('external_control', form.Value, 'api_secret', '*' + ' ' + _('API Secret'));
o.password = true;
o.rmempty = false; o.rmempty = false;
o = s.taboption('external_control', form.Flag, 'selection_cache', _('Save Proxy Selection')); o = s.taboption('external_control', form.Flag, 'selection_cache', _('Save Proxy Selection'));
@ -364,6 +390,7 @@ return view.extend({
so.rmempty = false; so.rmempty = false;
so = o.subsection.option(form.Value, 'password', _('Password')); so = o.subsection.option(form.Value, 'password', _('Password'));
so.password = true;
so.rmempty = false; so.rmempty = false;
s.tab('tun', _('TUN Config')); s.tab('tun', _('TUN Config'));
@ -536,6 +563,7 @@ return view.extend({
s.tab('mixin_file_content', _('Mixin File Content')); s.tab('mixin_file_content', _('Mixin File Content'));
o = s.taboption('mixin_file_content', form.Flag, 'mixin_file_content', '*' + ' ' + _('Enable'), _('Please go to the editor tab to edit the file for mixin')); o = s.taboption('mixin_file_content', form.Flag, 'mixin_file_content', '*' + ' ' + _('Enable'), _('Please go to the editor tab to edit the file for mixin'));
o.rmempty = false;
return m.render(); return m.render();
} }

View File

@ -27,11 +27,11 @@ return view.extend({
for (const profile of profiles) { for (const profile of profiles) {
o.value(mihomo.profilesDir + '/' + profile.name, _('File:') + profile.name); o.value(mihomo.profilesDir + '/' + profile.name, _('File:') + profile.name);
} };
for (const subscription of subscriptions) { for (const subscription of subscriptions) {
o.value(mihomo.subscriptionsDir + '/' + subscription['.name'] + '.yaml', _('Subscription:') + subscription.name); o.value(mihomo.subscriptionsDir + '/' + subscription['.name'] + '.yaml', _('Subscription:') + subscription.name);
} };
o.value(mihomo.mixinFilePath, _('File for Mixin')); o.value(mihomo.mixinFilePath, _('File for Mixin'));
o.value(mihomo.runProfilePath, _('Profile for Startup')); o.value(mihomo.runProfilePath, _('Profile for Startup'));

View File

@ -1,33 +1,33 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" msgstr "Content-Type: text/plain; charset=UTF-8"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:314 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:339
msgid "API Port" msgid "API Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:318 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:343
msgid "API Secret" msgid "API Secret"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:174 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178
msgid "Access Control" msgid "Access Control"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:177 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:181
msgid "All Mode" msgid "All Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:228 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:253
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:233 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:258
msgid "All Port" msgid "All Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:326 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352
msgid "Allow Lan" msgid "Allow Lan"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:182
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:421 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:448
msgid "Allow Mode" msgid "Allow Mode"
msgstr "" msgstr ""
@ -35,32 +35,40 @@ msgstr ""
msgid "App Log" msgid "App Log"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:53
msgid "App Version" msgid "App Version"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:285 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:310
msgid "Auto" msgid "Auto"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:100 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:104
msgid "Basic Config" msgid "Basic Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:179 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:183
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:420 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:447
msgid "Block Mode" msgid "Block Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:221 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:232
msgid "Bypass" msgid "Bypass"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:223 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:248
msgid "Bypass China Mainland IP" msgid "Bypass China Mainland IP"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:117 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:241
msgid "Bypass Group"
msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:234
msgid "Bypass User"
msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:121
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25
msgid "Choose Profile" msgid "Choose Profile"
msgstr "" msgstr ""
@ -70,8 +78,8 @@ msgstr ""
msgid "Clear Log" msgid "Clear Log"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:229 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:254
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:234 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:259
msgid "Commonly Used Port" msgid "Commonly Used Port"
msgstr "" msgstr ""
@ -83,71 +91,71 @@ msgstr ""
msgid "Core Log" msgid "Core Log"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:63 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:67
msgid "Core Status" msgid "Core Status"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:56 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:60
msgid "Core Version" msgid "Core Version"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:112 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:116
msgid "Cron Expression" msgid "Cron Expression"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:392 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:419
msgid "DNS Config" msgid "DNS Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:398 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:425
msgid "DNS Mode" msgid "DNS Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:394 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:421
msgid "DNS Port" msgid "DNS Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:226 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:251
msgid "Destination TCP Port to Proxy" msgid "Destination TCP Port to Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:231 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256
msgid "Destination UDP Port to Proxy" msgid "Destination UDP Port to Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:282 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:307
msgid "Direct Mode" msgid "Direct Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:287 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:312
msgid "Disable" msgid "Disable"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:432 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:459
msgid "DoH Prefer HTTP/3" msgid "DoH Prefer HTTP/3"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:458 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:485
msgid "Domain Name" msgid "Domain Name"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:378
msgid "Edit Authentications" msgid "Edit Authentications"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:414 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:441
msgid "Edit Fake-IP Filters" msgid "Edit Fake-IP Filters"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:447 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:474
msgid "Edit Hosts" msgid "Edit Hosts"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:489 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:516
msgid "Edit Nameserver Policies" msgid "Edit Nameserver Policies"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:466 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:493
msgid "Edit Nameservers" msgid "Edit Nameservers"
msgstr "" msgstr ""
@ -155,38 +163,38 @@ msgstr ""
msgid "Editor" msgid "Editor"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:102 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:106
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:144 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:286 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:311
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:360 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:386
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:455 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:482
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:474 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:501
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:497 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:524
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:538 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:565
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:389 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:416
msgid "Endpoint Independent NAT" msgid "Endpoint Independent NAT"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:303 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:328
msgid "External Control Config" msgid "External Control Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:424 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:451
msgid "Fake-IP Cache" msgid "Fake-IP Cache"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:418 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:445
msgid "Fake-IP Filter Mode" msgid "Fake-IP Filter Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:403 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:430
msgid "Fake-IP Range" msgid "Fake-IP Range"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:137 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:141
msgid "Fast Reload" msgid "Fast Reload"
msgstr "" msgstr ""
@ -202,60 +210,60 @@ msgstr ""
msgid "File for Reserved IP6" msgid "File for Reserved IP6"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:121 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29
msgid "File:" msgid "File:"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:380 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:407
msgid "GSO" msgid "GSO"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:383 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:410
msgid "GSO Max Size" msgid "GSO Max Size"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:295
msgid "General Config" msgid "General Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:511 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:538
msgid "GeoData Loader" msgid "GeoData Loader"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:507 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:534
msgid "GeoIP Format" msgid "GeoIP Format"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:524 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:551
msgid "GeoIP(ASN) Url" msgid "GeoIP(ASN) Url"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:521 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:548
msgid "GeoIP(DAT) Url" msgid "GeoIP(DAT) Url"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:518 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:545
msgid "GeoIP(MMDB) Url" msgid "GeoIP(MMDB) Url"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:515 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:542
msgid "GeoSite Url" msgid "GeoSite Url"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:527 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:554
msgid "GeoX Auto Update" msgid "GeoX Auto Update"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:505 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:532
msgid "GeoX Config" msgid "GeoX Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:530 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:557
msgid "GeoX Update Interval" msgid "GeoX Update Interval"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:280 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:305
msgid "Global Mode" msgid "Global Mode"
msgstr "" msgstr ""
@ -263,48 +271,52 @@ msgstr ""
msgid "Grant access to mihomo procedures" msgid "Grant access to mihomo procedures"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:329 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:355
msgid "HTTP Port" msgid "HTTP Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:45 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
msgid "How To Use" msgid "How To Use"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:461 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:488
msgid "IP" msgid "IP"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:156 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:160
msgid "IPv4 DNS Hijack" msgid "IPv4 DNS Hijack"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:162 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:166
msgid "IPv4 Proxy" msgid "IPv4 Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:292 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:317
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:435 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:462
msgid "IPv6" msgid "IPv6"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:159 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:163
msgid "IPv6 DNS Hijack" msgid "IPv6 DNS Hijack"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:165 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:169
msgid "IPv6 Proxy" msgid "IPv6 Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:324 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:350
msgid "Inbound Config" msgid "Inbound Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:171 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:225
msgid "Interface"
msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:175
msgid "Lan Proxy" msgid "Lan Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:259 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:284
msgid "Local" msgid "Local"
msgstr "" msgstr ""
@ -312,54 +324,54 @@ msgstr ""
msgid "Log" msgid "Log"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:272 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:297
msgid "Log Level" msgid "Log Level"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:376 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:403
msgid "MTU" msgid "MTU"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:284 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:309
msgid "Match Process" msgid "Match Process"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:500 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:527
msgid "Matcher" msgid "Matcher"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:513 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:540
msgid "Memory Conservative Loader" msgid "Memory Conservative Loader"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:45 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: mihomo/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3 #: mihomo/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3
msgid "MihomoTProxy" msgid "MihomoTProxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:337 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363
msgid "Mixed Port" msgid "Mixed Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:131 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:135
msgid "Mixin" msgid "Mixin"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:268 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:293
msgid "Mixin Config" msgid "Mixin Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:536 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:563
msgid "Mixin File Content" msgid "Mixin File Content"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:176 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:180
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:279 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:304
msgid "Mode" msgid "Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:484 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:511
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:503 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:530
msgid "Nameserver" msgid "Nameserver"
msgstr "" msgstr ""
@ -367,43 +379,43 @@ msgstr ""
msgid "Not Running" msgid "Not Running"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:95 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:99
msgid "Open Dashboard" msgid "Open Dashboard"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:289 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:314
msgid "Outbound Interface" msgid "Outbound Interface"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:349 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:375
msgid "Overwrite Authentication" msgid "Overwrite Authentication"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:409 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:436
msgid "Overwrite Fake-IP Filter" msgid "Overwrite Fake-IP Filter"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:444 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:471
msgid "Overwrite Hosts" msgid "Overwrite Hosts"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:463 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:490
msgid "Overwrite Nameserver" msgid "Overwrite Nameserver"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:486 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:513
msgid "Overwrite Nameserver Policy" msgid "Overwrite Nameserver Policy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:366 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:392
msgid "Password" msgid "Password"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:538 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:565
msgid "Please go to the editor tab to edit the file for mixin" msgid "Please go to the editor tab to edit the file for mixin"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281
msgid "Prefer" msgid "Prefer"
msgstr "" msgstr ""
@ -411,39 +423,39 @@ msgstr ""
msgid "Profile for Startup" msgid "Profile for Startup"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:140 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:144
msgid "Proxy Config" msgid "Proxy Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:152
msgid "Redirect Mode" msgid "Redirect Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:341 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:367
msgid "Redirect Port" msgid "Redirect Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:75 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:79
msgid "Reload Service" msgid "Reload Service"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:258 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:283
msgid "Remote" msgid "Remote"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:429 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:456
msgid "Respect Rules" msgid "Respect Rules"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:82 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:86
msgid "Restart Service" msgid "Restart Service"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:168 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:172
msgid "Router Proxy" msgid "Router Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:306
msgid "Rule Mode" msgid "Rule Mode"
msgstr "" msgstr ""
@ -451,15 +463,15 @@ msgstr ""
msgid "Running" msgid "Running"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:359
msgid "SOCKS Port" msgid "SOCKS Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:321 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:347
msgid "Save Proxy Selection" msgid "Save Proxy Selection"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:109 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:113
msgid "Scheduled Restart" msgid "Scheduled Restart"
msgstr "" msgstr ""
@ -473,94 +485,94 @@ msgstr ""
msgid "Service is not running." msgid "Service is not running."
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:371 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:398
msgid "Stack" msgid "Stack"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:512 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:539
msgid "Standard Loader" msgid "Standard Loader"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:105 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:109
msgid "Start Delay" msgid "Start Delay"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:47 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:51
msgid "Status" msgid "Status"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:236 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:261
msgid "Subscription Config" msgid "Subscription Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:241 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:266
msgid "Subscription Name" msgid "Subscription Name"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:245 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270
msgid "Subscription Url" msgid "Subscription Url"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:129
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33
msgid "Subscription:" msgid "Subscription:"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:295 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:320
msgid "TCP Keep Alive Idle" msgid "TCP Keep Alive Idle"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:299 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:324
msgid "TCP Keep Alive Interval" msgid "TCP Keep Alive Interval"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:147 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:151
msgid "TCP Proxy Mode" msgid "TCP Proxy Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:149
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:153 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:153
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:157
msgid "TPROXY Mode" msgid "TPROXY Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:345 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:371
msgid "TPROXY Port" msgid "TPROXY Port"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:369 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:396
msgid "TUN Config" msgid "TUN Config"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:150
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:158
msgid "TUN Mode" msgid "TUN Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:134 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:138
msgid "Test Profile" msgid "Test Profile"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:142 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:146
msgid "Transparent Proxy" msgid "Transparent Proxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:45 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
msgid "Transparent Proxy with Mihomo on OpenWrt." msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:477 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:504
msgid "Type" msgid "Type"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:152 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:156
msgid "UDP Proxy Mode" msgid "UDP Proxy Mode"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:305 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:330
msgid "UI Name" msgid "UI Name"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:308 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333
msgid "UI Url" msgid "UI Url"
msgstr "" msgstr ""
@ -569,30 +581,30 @@ msgstr ""
msgid "Unknown" msgid "Unknown"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:263 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:288
msgid "Update" msgid "Update"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:89 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:93
msgid "Update Dashboard" msgid "Update Dashboard"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:128 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:132
msgid "Upload Profile" msgid "Upload Profile"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:441 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:468
msgid "Use Hosts" msgid "Use Hosts"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:438 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:465
msgid "Use System Hosts" msgid "Use System Hosts"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:248 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:273
msgid "User Agent" msgid "User Agent"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:389
msgid "Username" msgid "Username"
msgstr "" msgstr ""

View File

@ -8,33 +8,33 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:314 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:339
msgid "API Port" msgid "API Port"
msgstr "API 端口" msgstr "API 端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:318 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:343
msgid "API Secret" msgid "API Secret"
msgstr "API 密钥" msgstr "API 密钥"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:174 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178
msgid "Access Control" msgid "Access Control"
msgstr "访问控制" msgstr "访问控制"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:177 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:181
msgid "All Mode" msgid "All Mode"
msgstr "全部模式" msgstr "全部模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:228 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:253
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:233 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:258
msgid "All Port" msgid "All Port"
msgstr "全部端口" msgstr "全部端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:326 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352
msgid "Allow Lan" msgid "Allow Lan"
msgstr "允许局域网访问" msgstr "允许局域网访问"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:182
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:421 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:448
msgid "Allow Mode" msgid "Allow Mode"
msgstr "白名单模式" msgstr "白名单模式"
@ -42,32 +42,40 @@ msgstr "白名单模式"
msgid "App Log" msgid "App Log"
msgstr "插件日志" msgstr "插件日志"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:53
msgid "App Version" msgid "App Version"
msgstr "插件版本" msgstr "插件版本"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:285 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:310
msgid "Auto" msgid "Auto"
msgstr "自动" msgstr "自动"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:100 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:104
msgid "Basic Config" msgid "Basic Config"
msgstr "基础配置" msgstr "基础配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:179 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:183
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:420 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:447
msgid "Block Mode" msgid "Block Mode"
msgstr "黑名单模式" msgstr "黑名单模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:221 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:232
msgid "Bypass" msgid "Bypass"
msgstr "绕过" msgstr "绕过"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:223 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:248
msgid "Bypass China Mainland IP" msgid "Bypass China Mainland IP"
msgstr "绕过中国大陆 IP" msgstr "绕过中国大陆 IP"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:117 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:241
msgid "Bypass Group"
msgstr "绕过用户组"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:234
msgid "Bypass User"
msgstr "绕过用户"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:121
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25
msgid "Choose Profile" msgid "Choose Profile"
msgstr "选择配置文件" msgstr "选择配置文件"
@ -77,8 +85,8 @@ msgstr "选择配置文件"
msgid "Clear Log" msgid "Clear Log"
msgstr "清空日志" msgstr "清空日志"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:229 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:254
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:234 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:259
msgid "Commonly Used Port" msgid "Commonly Used Port"
msgstr "常用端口" msgstr "常用端口"
@ -90,71 +98,71 @@ msgstr "配置"
msgid "Core Log" msgid "Core Log"
msgstr "核心日志" msgstr "核心日志"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:63 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:67
msgid "Core Status" msgid "Core Status"
msgstr "核心状态" msgstr "核心状态"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:56 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:60
msgid "Core Version" msgid "Core Version"
msgstr "核心版本" msgstr "核心版本"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:112 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:116
msgid "Cron Expression" msgid "Cron Expression"
msgstr "Cron 表达式" msgstr "Cron 表达式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:392 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:419
msgid "DNS Config" msgid "DNS Config"
msgstr "DNS 配置" msgstr "DNS 配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:398 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:425
msgid "DNS Mode" msgid "DNS Mode"
msgstr "DNS 模式" msgstr "DNS 模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:394 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:421
msgid "DNS Port" msgid "DNS Port"
msgstr "DNS 端口" msgstr "DNS 端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:226 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:251
msgid "Destination TCP Port to Proxy" msgid "Destination TCP Port to Proxy"
msgstr "要代理的 TCP 目标端口" msgstr "要代理的 TCP 目标端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:231 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256
msgid "Destination UDP Port to Proxy" msgid "Destination UDP Port to Proxy"
msgstr "要代理的 UDP 目标端口" msgstr "要代理的 UDP 目标端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:282 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:307
msgid "Direct Mode" msgid "Direct Mode"
msgstr "直连模式" msgstr "直连模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:287 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:312
msgid "Disable" msgid "Disable"
msgstr "禁用" msgstr "禁用"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:432 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:459
msgid "DoH Prefer HTTP/3" msgid "DoH Prefer HTTP/3"
msgstr "DoH 优先 HTTP/3" msgstr "DoH 优先 HTTP/3"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:458 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:485
msgid "Domain Name" msgid "Domain Name"
msgstr "域名" msgstr "域名"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:378
msgid "Edit Authentications" msgid "Edit Authentications"
msgstr "编辑身份验证" msgstr "编辑身份验证"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:414 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:441
msgid "Edit Fake-IP Filters" msgid "Edit Fake-IP Filters"
msgstr "编辑 Fake-IP 过滤列表" msgstr "编辑 Fake-IP 过滤列表"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:447 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:474
msgid "Edit Hosts" msgid "Edit Hosts"
msgstr "编辑 Hosts" msgstr "编辑 Hosts"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:489 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:516
msgid "Edit Nameserver Policies" msgid "Edit Nameserver Policies"
msgstr "编辑 DNS 服务器查询策略" msgstr "编辑 DNS 服务器查询策略"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:466 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:493
msgid "Edit Nameservers" msgid "Edit Nameservers"
msgstr "编辑 DNS 服务器" msgstr "编辑 DNS 服务器"
@ -162,38 +170,38 @@ msgstr "编辑 DNS 服务器"
msgid "Editor" msgid "Editor"
msgstr "编辑器" msgstr "编辑器"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:102 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:106
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:144 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:286 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:311
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:360 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:386
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:455 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:482
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:474 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:501
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:497 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:524
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:538 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:565
msgid "Enable" msgid "Enable"
msgstr "启用" msgstr "启用"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:389 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:416
msgid "Endpoint Independent NAT" msgid "Endpoint Independent NAT"
msgstr "独立于端点的 NAT" msgstr "独立于端点的 NAT"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:303 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:328
msgid "External Control Config" msgid "External Control Config"
msgstr "外部控制配置" msgstr "外部控制配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:424 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:451
msgid "Fake-IP Cache" msgid "Fake-IP Cache"
msgstr "Fake-IP 缓存" msgstr "Fake-IP 缓存"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:418 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:445
msgid "Fake-IP Filter Mode" msgid "Fake-IP Filter Mode"
msgstr "Fake-IP 过滤模式" msgstr "Fake-IP 过滤模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:403 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:430
msgid "Fake-IP Range" msgid "Fake-IP Range"
msgstr "Fake-IP 范围" msgstr "Fake-IP 范围"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:137 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:141
msgid "Fast Reload" msgid "Fast Reload"
msgstr "快速重载" msgstr "快速重载"
@ -209,60 +217,60 @@ msgstr "IPv4 保留地址"
msgid "File for Reserved IP6" msgid "File for Reserved IP6"
msgstr "IPv6 保留地址" msgstr "IPv6 保留地址"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:121 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29
msgid "File:" msgid "File:"
msgstr "文件:" msgstr "文件:"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:380 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:407
msgid "GSO" msgid "GSO"
msgstr "通用分段卸载" msgstr "通用分段卸载"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:383 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:410
msgid "GSO Max Size" msgid "GSO Max Size"
msgstr "分段最大长度" msgstr "分段最大长度"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:295
msgid "General Config" msgid "General Config"
msgstr "全局配置" msgstr "全局配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:511 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:538
msgid "GeoData Loader" msgid "GeoData Loader"
msgstr "GeoData 加载器" msgstr "GeoData 加载器"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:507 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:534
msgid "GeoIP Format" msgid "GeoIP Format"
msgstr "GeoIP 格式" msgstr "GeoIP 格式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:524 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:551
msgid "GeoIP(ASN) Url" msgid "GeoIP(ASN) Url"
msgstr "GeoIP(ASN) 下载地址" msgstr "GeoIP(ASN) 下载地址"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:521 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:548
msgid "GeoIP(DAT) Url" msgid "GeoIP(DAT) Url"
msgstr "GeoIP(DAT) 下载地址" msgstr "GeoIP(DAT) 下载地址"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:518 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:545
msgid "GeoIP(MMDB) Url" msgid "GeoIP(MMDB) Url"
msgstr "GeoIP(MMDB) 下载地址" msgstr "GeoIP(MMDB) 下载地址"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:515 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:542
msgid "GeoSite Url" msgid "GeoSite Url"
msgstr "GeoSite 下载地址" msgstr "GeoSite 下载地址"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:527 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:554
msgid "GeoX Auto Update" msgid "GeoX Auto Update"
msgstr "定时更新GeoX文件" msgstr "定时更新GeoX文件"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:505 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:532
msgid "GeoX Config" msgid "GeoX Config"
msgstr "GeoX 配置" msgstr "GeoX 配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:530 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:557
msgid "GeoX Update Interval" msgid "GeoX Update Interval"
msgstr "GeoX 文件更新间隔" msgstr "GeoX 文件更新间隔"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:280 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:305
msgid "Global Mode" msgid "Global Mode"
msgstr "全局模式" msgstr "全局模式"
@ -270,48 +278,52 @@ msgstr "全局模式"
msgid "Grant access to mihomo procedures" msgid "Grant access to mihomo procedures"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:329 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:355
msgid "HTTP Port" msgid "HTTP Port"
msgstr "HTTP 端口" msgstr "HTTP 端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:45 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
msgid "How To Use" msgid "How To Use"
msgstr "使用说明" msgstr "使用说明"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:461 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:488
msgid "IP" msgid "IP"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:156 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:160
msgid "IPv4 DNS Hijack" msgid "IPv4 DNS Hijack"
msgstr "IPv4 DNS 劫持" msgstr "IPv4 DNS 劫持"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:162 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:166
msgid "IPv4 Proxy" msgid "IPv4 Proxy"
msgstr "IPv4 代理" msgstr "IPv4 代理"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:292 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:317
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:435 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:462
msgid "IPv6" msgid "IPv6"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:159 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:163
msgid "IPv6 DNS Hijack" msgid "IPv6 DNS Hijack"
msgstr "IPv6 DNS 劫持" msgstr "IPv6 DNS 劫持"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:165 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:169
msgid "IPv6 Proxy" msgid "IPv6 Proxy"
msgstr "IPv6 代理" msgstr "IPv6 代理"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:324 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:350
msgid "Inbound Config" msgid "Inbound Config"
msgstr "入站配置" msgstr "入站配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:171 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:225
msgid "Interface"
msgstr "接口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:175
msgid "Lan Proxy" msgid "Lan Proxy"
msgstr "局域网代理" msgstr "局域网代理"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:259 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:284
msgid "Local" msgid "Local"
msgstr "本地" msgstr "本地"
@ -319,54 +331,54 @@ msgstr "本地"
msgid "Log" msgid "Log"
msgstr "日志" msgstr "日志"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:272 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:297
msgid "Log Level" msgid "Log Level"
msgstr "日志级别" msgstr "日志级别"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:376 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:403
msgid "MTU" msgid "MTU"
msgstr "最大传输单元" msgstr "最大传输单元"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:284 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:309
msgid "Match Process" msgid "Match Process"
msgstr "匹配进程" msgstr "匹配进程"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:500 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:527
msgid "Matcher" msgid "Matcher"
msgstr "匹配" msgstr "匹配"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:513 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:540
msgid "Memory Conservative Loader" msgid "Memory Conservative Loader"
msgstr "为内存受限设备优化的加载器" msgstr "为内存受限设备优化的加载器"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:45 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: mihomo/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3 #: mihomo/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3
msgid "MihomoTProxy" msgid "MihomoTProxy"
msgstr "" msgstr ""
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:337 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363
msgid "Mixed Port" msgid "Mixed Port"
msgstr "混合端口" msgstr "混合端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:131 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:135
msgid "Mixin" msgid "Mixin"
msgstr "混入" msgstr "混入"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:268 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:293
msgid "Mixin Config" msgid "Mixin Config"
msgstr "混入配置" msgstr "混入配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:536 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:563
msgid "Mixin File Content" msgid "Mixin File Content"
msgstr "混入文件内容" msgstr "混入文件内容"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:176 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:180
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:279 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:304
msgid "Mode" msgid "Mode"
msgstr "模式" msgstr "模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:484 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:511
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:503 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:530
msgid "Nameserver" msgid "Nameserver"
msgstr "DNS 服务器" msgstr "DNS 服务器"
@ -374,43 +386,43 @@ msgstr "DNS 服务器"
msgid "Not Running" msgid "Not Running"
msgstr "未在运行" msgstr "未在运行"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:95 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:99
msgid "Open Dashboard" msgid "Open Dashboard"
msgstr "打开面板" msgstr "打开面板"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:289 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:314
msgid "Outbound Interface" msgid "Outbound Interface"
msgstr "出站接口" msgstr "出站接口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:349 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:375
msgid "Overwrite Authentication" msgid "Overwrite Authentication"
msgstr "覆盖身份验证" msgstr "覆盖身份验证"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:409 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:436
msgid "Overwrite Fake-IP Filter" msgid "Overwrite Fake-IP Filter"
msgstr "覆盖 Fake-IP 过滤列表" msgstr "覆盖 Fake-IP 过滤列表"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:444 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:471
msgid "Overwrite Hosts" msgid "Overwrite Hosts"
msgstr "覆盖 Hosts" msgstr "覆盖 Hosts"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:463 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:490
msgid "Overwrite Nameserver" msgid "Overwrite Nameserver"
msgstr "覆盖 DNS 服务器" msgstr "覆盖 DNS 服务器"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:486 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:513
msgid "Overwrite Nameserver Policy" msgid "Overwrite Nameserver Policy"
msgstr "覆盖 DNS 服务器查询策略" msgstr "覆盖 DNS 服务器查询策略"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:366 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:392
msgid "Password" msgid "Password"
msgstr "密码" msgstr "密码"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:538 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:565
msgid "Please go to the editor tab to edit the file for mixin" msgid "Please go to the editor tab to edit the file for mixin"
msgstr "请前往编辑器标签编辑用于混入的文件" msgstr "请前往编辑器标签编辑用于混入的文件"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281
msgid "Prefer" msgid "Prefer"
msgstr "优先" msgstr "优先"
@ -418,39 +430,39 @@ msgstr "优先"
msgid "Profile for Startup" msgid "Profile for Startup"
msgstr "用于启动的配置文件" msgstr "用于启动的配置文件"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:140 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:144
msgid "Proxy Config" msgid "Proxy Config"
msgstr "代理配置" msgstr "代理配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:152
msgid "Redirect Mode" msgid "Redirect Mode"
msgstr "Redirect 模式" msgstr "Redirect 模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:341 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:367
msgid "Redirect Port" msgid "Redirect Port"
msgstr "Redirect 端口" msgstr "Redirect 端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:75 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:79
msgid "Reload Service" msgid "Reload Service"
msgstr "重载服务" msgstr "重载服务"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:258 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:283
msgid "Remote" msgid "Remote"
msgstr "远程" msgstr "远程"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:429 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:456
msgid "Respect Rules" msgid "Respect Rules"
msgstr "遵循分流规则" msgstr "遵循分流规则"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:82 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:86
msgid "Restart Service" msgid "Restart Service"
msgstr "重启服务" msgstr "重启服务"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:168 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:172
msgid "Router Proxy" msgid "Router Proxy"
msgstr "路由器代理" msgstr "路由器代理"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:306
msgid "Rule Mode" msgid "Rule Mode"
msgstr "规则模式" msgstr "规则模式"
@ -458,15 +470,15 @@ msgstr "规则模式"
msgid "Running" msgid "Running"
msgstr "运行中" msgstr "运行中"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:359
msgid "SOCKS Port" msgid "SOCKS Port"
msgstr "SOCKS 端口" msgstr "SOCKS 端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:321 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:347
msgid "Save Proxy Selection" msgid "Save Proxy Selection"
msgstr "保存节点/策略组选择" msgstr "保存节点/策略组选择"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:109 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:113
msgid "Scheduled Restart" msgid "Scheduled Restart"
msgstr "定时重启" msgstr "定时重启"
@ -480,94 +492,94 @@ msgstr "滚动到底部"
msgid "Service is not running." msgid "Service is not running."
msgstr "服务未在运行。" msgstr "服务未在运行。"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:371 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:398
msgid "Stack" msgid "Stack"
msgstr "栈" msgstr "栈"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:512 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:539
msgid "Standard Loader" msgid "Standard Loader"
msgstr "标准加载器" msgstr "标准加载器"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:105 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:109
msgid "Start Delay" msgid "Start Delay"
msgstr "启动延迟" msgstr "启动延迟"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:47 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:51
msgid "Status" msgid "Status"
msgstr "状态" msgstr "状态"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:236 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:261
msgid "Subscription Config" msgid "Subscription Config"
msgstr "订阅配置" msgstr "订阅配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:241 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:266
msgid "Subscription Name" msgid "Subscription Name"
msgstr "订阅名称" msgstr "订阅名称"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:245 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270
msgid "Subscription Url" msgid "Subscription Url"
msgstr "订阅链接" msgstr "订阅链接"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:129
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33
msgid "Subscription:" msgid "Subscription:"
msgstr "订阅:" msgstr "订阅:"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:295 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:320
msgid "TCP Keep Alive Idle" msgid "TCP Keep Alive Idle"
msgstr "TCP Keep Alive 空闲" msgstr "TCP Keep Alive 空闲"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:299 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:324
msgid "TCP Keep Alive Interval" msgid "TCP Keep Alive Interval"
msgstr "TCP Keep Alive 间隔" msgstr "TCP Keep Alive 间隔"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:147 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:151
msgid "TCP Proxy Mode" msgid "TCP Proxy Mode"
msgstr "TCP 代理模式" msgstr "TCP 代理模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:149
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:153 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:153
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:157
msgid "TPROXY Mode" msgid "TPROXY Mode"
msgstr "TPROXY 模式" msgstr "TPROXY 模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:345 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:371
msgid "TPROXY Port" msgid "TPROXY Port"
msgstr "TPROXY 端口" msgstr "TPROXY 端口"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:369 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:396
msgid "TUN Config" msgid "TUN Config"
msgstr "TUN 配置" msgstr "TUN 配置"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:150
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:158
msgid "TUN Mode" msgid "TUN Mode"
msgstr "TUN 模式" msgstr "TUN 模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:134 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:138
msgid "Test Profile" msgid "Test Profile"
msgstr "检查配置文件" msgstr "检查配置文件"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:142 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:146
msgid "Transparent Proxy" msgid "Transparent Proxy"
msgstr "透明代理" msgstr "透明代理"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:45 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
msgid "Transparent Proxy with Mihomo on OpenWrt." msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。" msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:477 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:504
msgid "Type" msgid "Type"
msgstr "类型" msgstr "类型"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:152 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:156
msgid "UDP Proxy Mode" msgid "UDP Proxy Mode"
msgstr "UDP 代理模式" msgstr "UDP 代理模式"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:305 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:330
msgid "UI Name" msgid "UI Name"
msgstr "UI 名称" msgstr "UI 名称"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:308 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333
msgid "UI Url" msgid "UI Url"
msgstr "UI 下载地址" msgstr "UI 下载地址"
@ -576,30 +588,33 @@ msgstr "UI 下载地址"
msgid "Unknown" msgid "Unknown"
msgstr "未知" msgstr "未知"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:263 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:288
msgid "Update" msgid "Update"
msgstr "更新" msgstr "更新"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:89 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:93
msgid "Update Dashboard" msgid "Update Dashboard"
msgstr "更新面板" msgstr "更新面板"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:128 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:132
msgid "Upload Profile" msgid "Upload Profile"
msgstr "上传配置文件" msgstr "上传配置文件"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:441 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:468
msgid "Use Hosts" msgid "Use Hosts"
msgstr "使用 Hosts" msgstr "使用 Hosts"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:438 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:465
msgid "Use System Hosts" msgid "Use System Hosts"
msgstr "使用系统的 Hosts" msgstr "使用系统的 Hosts"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:248 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:273
msgid "User Agent" msgid "User Agent"
msgstr "用户代理UA" msgstr "用户代理UA"
#: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363 #: mihomo/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:389
msgid "Username" msgid "Username"
msgstr "用户名" msgstr "用户名"
#~ msgid "Inbound Interface"
#~ msgstr "入站接口"

View File

@ -0,0 +1,4 @@
#!/bin/sh
rm -rf /var/luci-modulecache/; rm -f /var/luci-indexcache;
[ -x /etc/init.d/rpcd ] && /etc/init.d/rpcd reload;
exit 0

View File

@ -7,6 +7,8 @@
"service": [ "list" ] "service": [ "list" ]
}, },
"file": { "file": {
"/etc/passwd": ["read"],
"/etc/group": ["read"],
"/etc/mihomo/profiles/*.yaml": ["read"], "/etc/mihomo/profiles/*.yaml": ["read"],
"/etc/mihomo/profiles/*.yml": ["read"], "/etc/mihomo/profiles/*.yml": ["read"],
"/etc/mihomo/subscriptions/*.yaml": ["read"], "/etc/mihomo/subscriptions/*.yaml": ["read"],

View File

@ -1,7 +1,7 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=mihomo PKG_NAME:=mihomo
PKG_RELEASE:=2 PKG_RELEASE:=3
PKG_SOURCE_PROTO:=git PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git

View File

@ -24,9 +24,24 @@ config proxy 'proxy'
option 'acl_ip' '' option 'acl_ip' ''
option 'acl_ip6' '' option 'acl_ip6' ''
option 'acl_mac' '' option 'acl_mac' ''
option 'acl_interface' ''
list 'bypass_user' 'aria2'
list 'bypass_user' 'dnsmasq'
list 'bypass_user' 'ftp'
list 'bypass_user' 'logd'
list 'bypass_user' 'nobody'
list 'bypass_user' 'ntp'
list 'bypass_user' 'ubus'
list 'bypass_group' 'aria2'
list 'bypass_group' 'dnsmasq'
list 'bypass_group' 'ftp'
list 'bypass_group' 'logd'
list 'bypass_group' 'nogroup'
list 'bypass_group' 'ntp'
list 'bypass_group' 'ubus'
option 'bypass_china_mainland_ip' '0' option 'bypass_china_mainland_ip' '0'
option 'acl_tcp_dport' '0-65535' option 'proxy_tcp_dport' '0-65535'
option 'acl_udp_dport' '0-65535' option 'proxy_udp_dport' '0-65535'
config subscription 'subscription' config subscription 'subscription'
option 'name' 'default' option 'name' 'default'

View File

@ -64,11 +64,11 @@ start_service() {
config_get_bool router_proxy "proxy" "router_proxy" 0 config_get_bool router_proxy "proxy" "router_proxy" 0
config_get_bool lan_proxy "proxy" "lan_proxy" 0 config_get_bool lan_proxy "proxy" "lan_proxy" 0
### access control ### access control
local access_control_mode bypass_china_mainland_ip acl_tcp_dport acl_udp_dport local access_control_mode bypass_china_mainland_ip proxy_tcp_dport proxy_udp_dport
config_get access_control_mode "proxy" "access_control_mode" config_get access_control_mode "proxy" "access_control_mode"
config_get_bool bypass_china_mainland_ip "proxy" "bypass_china_mainland_ip" 0 config_get_bool bypass_china_mainland_ip "proxy" "bypass_china_mainland_ip" 0
config_get acl_tcp_dport "proxy" "acl_tcp_dport" "0-65535" config_get proxy_tcp_dport "proxy" "proxy_tcp_dport" "0-65535"
config_get acl_udp_dport "proxy" "acl_udp_dport" "0-65535" config_get proxy_udp_dport "proxy" "proxy_udp_dport" "0-65535"
## mixin config ## mixin config
### general ### general
local mode match_process outbound_interface ipv6 tcp_keep_alive_idle tcp_keep_alive_interval log_level local mode match_process outbound_interface ipv6 tcp_keep_alive_idle tcp_keep_alive_interval log_level
@ -336,11 +336,9 @@ start_service() {
ip -6 rule add pref "$UDP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto udp table "$udp_route_table" ip -6 rule add pref "$UDP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto udp table "$udp_route_table"
fi fi
fi fi
nft -f "$HIJACK_NFT" -D FW_MARK="$FW_MARK" -D FW_MARK_MASK="$FW_MARK_MASK" -D TUN_DEVICE="$TUN_DEVICE" -D DNS_PORT="$dns_port" -D REDIR_PORT="$redir_port" -D TPROXY_PORT="$tproxy_port" nft -f "$HIJACK_NFT" -D MIHOMO_GROUP="$MIHOMO_GROUP" -D FW_MARK="$FW_MARK" -D FW_MARK_MASK="$FW_MARK_MASK" -D TUN_DEVICE="$TUN_DEVICE" -D FAKE_IP="$fake_ip_range" -D DNS_PORT="$dns_port" -D REDIR_PORT="$redir_port" -D TPROXY_PORT="$tproxy_port"
nft -f "$RESERVED_IP_NFT" nft -f "$RESERVED_IP_NFT"
nft -f "$RESERVED_IP6_NFT" nft -f "$RESERVED_IP6_NFT"
nft add element inet "$FW_TABLE" bypass_group \{ "$MIHOMO_GROUP" \}
nft add element inet "$FW_TABLE" fake_ip \{ "$fake_ip_range" \}
# dns hijack # dns hijack
if [ "$ipv4_dns_hijack" == 1 ]; then if [ "$ipv4_dns_hijack" == 1 ]; then
log "Transparent Proxy: IPv4 DNS Hijack is enabled, IPv4 dns request will redirect to the core." log "Transparent Proxy: IPv4 DNS Hijack is enabled, IPv4 dns request will redirect to the core."
@ -359,7 +357,9 @@ start_service() {
log "Transparent Proxy: IPv6 Proxy is enabled, set proxy for IPv6 traffic." log "Transparent Proxy: IPv6 Proxy is enabled, set proxy for IPv6 traffic."
nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv6 \} nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv6 \}
fi fi
# bypass china mainland ip # bypass
config_list_foreach "proxy" "bypass_user" add_bypass_user
config_list_foreach "proxy" "bypass_group" add_bypass_group
if [ "$bypass_china_mainland_ip" == 1 ]; then if [ "$bypass_china_mainland_ip" == 1 ]; then
log "Transparent Proxy: Bypass china mainland ip is enabled." log "Transparent Proxy: Bypass china mainland ip is enabled."
if [ "$ipv4_proxy" == 1 ]; then if [ "$ipv4_proxy" == 1 ]; then
@ -369,15 +369,14 @@ start_service() {
nft -f "$GEOIP6_CN_NFT" nft -f "$GEOIP6_CN_NFT"
fi fi
fi fi
# destination port to proxy log "Transparent Proxy: Destination TCP Port to Proxy: $proxy_tcp_dport."
log "Transparent Proxy: Destination TCP Port to Proxy: $acl_tcp_dport." log "Transparent Proxy: Destination UDP Port to Proxy: $proxy_udp_dport."
log "Transparent Proxy: Destination UDP Port to Proxy: $acl_udp_dport." local proxy_dport
local acl_dport for proxy_dport in $proxy_tcp_dport; do
for acl_dport in $acl_tcp_dport; do nft add element inet "$FW_TABLE" proxy_dport \{ "tcp" . "$proxy_dport" \}
nft add element inet "$FW_TABLE" acl_dport \{ "tcp" . "$acl_dport" \}
done done
for acl_dport in $acl_udp_dport; do for proxy_dport in $proxy_udp_dport; do
nft add element inet "$FW_TABLE" acl_dport \{ "udp" . "$acl_dport" \} nft add element inet "$FW_TABLE" proxy_dport \{ "udp" . "$proxy_dport" \}
done done
# router proxy # router proxy
if [ "$router_proxy" == 1 ]; then if [ "$router_proxy" == 1 ]; then
@ -406,6 +405,7 @@ start_service() {
config_list_foreach "proxy" "acl_ip" add_acl_ip config_list_foreach "proxy" "acl_ip" add_acl_ip
config_list_foreach "proxy" "acl_ip6" add_acl_ip6 config_list_foreach "proxy" "acl_ip6" add_acl_ip6
config_list_foreach "proxy" "acl_mac" add_acl_mac config_list_foreach "proxy" "acl_mac" add_acl_mac
config_list_foreach "proxy" "acl_interface" add_acl_interface
if [ "$tcp_transparent_proxy_mode" == "redirect" ]; then if [ "$tcp_transparent_proxy_mode" == "redirect" ]; then
nft insert rule inet "$FW_TABLE" dstnat jump "${access_control_mode}_dns_hijack" nft insert rule inet "$FW_TABLE" dstnat jump "${access_control_mode}_dns_hijack"
nft add rule inet "$FW_TABLE" dstnat meta l4proto tcp jump "${access_control_mode}_${tcp_transparent_proxy_mode}" nft add rule inet "$FW_TABLE" dstnat meta l4proto tcp jump "${access_control_mode}_${tcp_transparent_proxy_mode}"
@ -592,6 +592,20 @@ mixin_nameserver_policy() {
nameserver="$1" matcher="$2" yq -M -i '.dns.nameserver-policy.[env(matcher)] += [env(nameserver)]' "$RUN_PROFILE_PATH" nameserver="$1" matcher="$2" yq -M -i '.dns.nameserver-policy.[env(matcher)] += [env(nameserver)]' "$RUN_PROFILE_PATH"
} }
add_bypass_user() {
local user; user="$1"
if [ "$user" != "root" ] && (cut -d ':' -f 1 < /etc/passwd | grep -q "$user"); then
nft add element inet "$FW_TABLE" bypass_user \{ "$user" \}
fi
}
add_bypass_group() {
local group; group="$1"
if [ "$group" != "root" ] && (cut -d ':' -f 1 < /etc/group | grep -q "$group"); then
nft add element inet "$FW_TABLE" bypass_group \{ "$group" \}
fi
}
add_acl_ip() { add_acl_ip() {
nft add element inet "$FW_TABLE" acl_ip \{ "$1" \} nft add element inet "$FW_TABLE" acl_ip \{ "$1" \}
} }
@ -604,6 +618,14 @@ add_acl_mac() {
nft add element inet "$FW_TABLE" acl_mac \{ "$1" \} nft add element inet "$FW_TABLE" acl_mac \{ "$1" \}
} }
add_acl_interface() {
local interface; interface="$1"
local device; network_get_device device "$interface"
if [ -n "$device" ]; then
nft add element inet "$FW_TABLE" acl_interface \{ "$device" \}
fi
}
update_subscription() { update_subscription() {
local subscription_section; subscription_section="$1" local subscription_section; subscription_section="$1"
if [ -n "$subscription_section" ]; then if [ -n "$subscription_section" ]; then

View File

@ -1,14 +1,18 @@
#!/usr/sbin/nft -f #!/usr/sbin/nft -f
table inet mihomo { table inet mihomo {
set bypass_user {
type uid
flags interval
auto-merge
}
set bypass_group { set bypass_group {
type gid type gid
flags interval flags interval
auto-merge auto-merge
elements = { elements = {
ntp, $MIHOMO_GROUP
dnsmasq,
logd
} }
} }
@ -44,12 +48,7 @@ table inet mihomo {
auto-merge auto-merge
} }
set fake_ip { set proxy_dport {
type ipv4_addr
flags interval
}
set acl_dport {
type inet_proto . inet_service type inet_proto . inet_service
flags interval flags interval
auto-merge auto-merge
@ -73,7 +72,14 @@ table inet mihomo {
auto-merge auto-merge
} }
set acl_interface {
type ifname
flags interval
auto-merge
}
chain router_dns_hijack { chain router_dns_hijack {
meta skuid @bypass_user counter return
meta skgid @bypass_group counter return meta skgid @bypass_group counter return
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 counter redirect to :$DNS_PORT meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 counter redirect to :$DNS_PORT
} }
@ -86,12 +92,14 @@ table inet mihomo {
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip saddr @acl_ip counter redirect to :$DNS_PORT meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip saddr @acl_ip counter redirect to :$DNS_PORT
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip6 saddr @acl_ip6 counter redirect to :$DNS_PORT meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip6 saddr @acl_ip6 counter redirect to :$DNS_PORT
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ether saddr @acl_mac counter redirect to :$DNS_PORT meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ether saddr @acl_mac counter redirect to :$DNS_PORT
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 iifname @acl_interface counter redirect to :$DNS_PORT
} }
chain block_dns_hijack { chain block_dns_hijack {
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip saddr @acl_ip counter return meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip saddr @acl_ip counter return
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip6 saddr @acl_ip6 counter return meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ip6 saddr @acl_ip6 counter return
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ether saddr @acl_mac counter return meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 ether saddr @acl_mac counter return
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 iifname @acl_interface counter return
meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 counter redirect to :$DNS_PORT meta nfproto @dns_hijack_nfproto meta l4proto udp th dport 53 counter redirect to :$DNS_PORT
} }
@ -103,12 +111,14 @@ table inet mihomo {
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter redirect to :$REDIR_PORT meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter redirect to :$REDIR_PORT
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter redirect to :$REDIR_PORT meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter redirect to :$REDIR_PORT
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter redirect to :$REDIR_PORT meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter redirect to :$REDIR_PORT
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } iifname @acl_interface counter redirect to :$REDIR_PORT
} }
chain block_redirect { chain block_redirect {
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } iifname @acl_interface counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } counter redirect to :$REDIR_PORT meta nfproto @proxy_nfproto meta l4proto { tcp, udp } counter redirect to :$REDIR_PORT
} }
@ -120,12 +130,14 @@ table inet mihomo {
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip meta mark set mark ^ $FW_MARK tproxy ip to :$TPROXY_PORT counter accept meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip meta mark set mark ^ $FW_MARK tproxy ip to :$TPROXY_PORT counter accept
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 meta mark set mark ^ $FW_MARK tproxy ip6 to :$TPROXY_PORT counter accept meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 meta mark set mark ^ $FW_MARK tproxy ip6 to :$TPROXY_PORT counter accept
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac meta mark set mark ^ $FW_MARK tproxy to :$TPROXY_PORT counter accept meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac meta mark set mark ^ $FW_MARK tproxy to :$TPROXY_PORT counter accept
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } iifname @acl_interface meta mark set mark ^ $FW_MARK tproxy to :$TPROXY_PORT counter accept
} }
chain block_tproxy { chain block_tproxy {
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } iifname @acl_interface counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } meta mark set mark ^ $FW_MARK tproxy to :$TPROXY_PORT counter accept meta nfproto @proxy_nfproto meta l4proto { tcp, udp } meta mark set mark ^ $FW_MARK tproxy to :$TPROXY_PORT counter accept
} }
@ -137,12 +149,14 @@ table inet mihomo {
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip meta mark set mark ^ $FW_MARK counter meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip meta mark set mark ^ $FW_MARK counter
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 meta mark set mark ^ $FW_MARK counter meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 meta mark set mark ^ $FW_MARK counter
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac meta mark set mark ^ $FW_MARK counter meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac meta mark set mark ^ $FW_MARK counter
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } iifname @acl_interface meta mark set mark ^ $FW_MARK counter
} }
chain block_tun { chain block_tun {
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip saddr @acl_ip counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter return meta nfproto @proxy_nfproto meta l4proto { tcp, udp } ether saddr @acl_mac counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } iifname @acl_interface counter return
meta nfproto @proxy_nfproto meta l4proto { tcp, udp } meta mark set mark ^ $FW_MARK counter meta nfproto @proxy_nfproto meta l4proto { tcp, udp } meta mark set mark ^ $FW_MARK counter
} }
@ -162,12 +176,13 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
} }
chain nat_output { chain nat_output {
type nat hook output priority filter; policy accept; type nat hook output priority filter; policy accept;
meta skuid @bypass_user counter return
meta skgid @bypass_group counter return meta skgid @bypass_group counter return
fib daddr type local counter return fib daddr type local counter return
ct direction reply counter return ct direction reply counter return
@ -175,8 +190,8 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
} }
chain mangle_prerouting { chain mangle_prerouting {
@ -189,13 +204,14 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
meta l4proto udp th dport 53 counter return meta l4proto udp th dport 53 counter return
} }
chain mangle_output { chain mangle_output {
type route hook output priority mangle; policy accept; type route hook output priority mangle; policy accept;
meta skuid @bypass_user counter return
meta skgid @bypass_group counter return meta skgid @bypass_group counter return
fib daddr type local counter return fib daddr type local counter return
ct direction reply counter return ct direction reply counter return
@ -203,8 +219,8 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
meta l4proto udp th dport 53 counter return meta l4proto udp th dport 53 counter return
} }
} }

View File

@ -14,6 +14,32 @@ mixin_file_content=$(uci -q get mihomo.mixin.mixin_file_content); [ -z "$mixin_f
start_delay=$(uci -q get mihomo.config.start_delay); [ -z "$start_delay" ] && uci set mihomo.config.start_delay=0 start_delay=$(uci -q get mihomo.config.start_delay); [ -z "$start_delay" ] && uci set mihomo.config.start_delay=0
# since v1.11.0
acl_tcp_dport=$(uci -q get mihomo.proxy.acl_tcp_dport); [ -n "$acl_tcp_dport" ] && uci rename mihomo.proxy.acl_tcp_dport=proxy_tcp_dport
acl_udp_dport=$(uci -q get mihomo.proxy.acl_udp_dport); [ -n "$acl_udp_dport" ] && uci rename mihomo.proxy.acl_udp_dport=proxy_udp_dport
bypass_user=$(uci -q get mihomo.proxy.bypass_user); [ -z "$bypass_user" ] && {
uci add_list mihomo.proxy.bypass_user="aria2"
uci add_list mihomo.proxy.bypass_user="dnsmasq"
uci add_list mihomo.proxy.bypass_user="ftp"
uci add_list mihomo.proxy.bypass_user="logd"
uci add_list mihomo.proxy.bypass_user="nobody"
uci add_list mihomo.proxy.bypass_user="ntp"
uci add_list mihomo.proxy.bypass_user="ubus"
}
bypass_group=$(uci -q get mihomo.proxy.bypass_group); [ -z "$bypass_group" ] && {
uci add_list mihomo.proxy.bypass_group="aria2"
uci add_list mihomo.proxy.bypass_group="dnsmasq"
uci add_list mihomo.proxy.bypass_group="ftp"
uci add_list mihomo.proxy.bypass_group="logd"
uci add_list mihomo.proxy.bypass_group="nogroup"
uci add_list mihomo.proxy.bypass_group="ntp"
uci add_list mihomo.proxy.bypass_group="ubus"
}
# commit # commit
uci commit mihomo uci commit mihomo

View File

@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=nftables PKG_NAME:=nftables
PKG_VERSION:=1.0.9 PKG_VERSION:=1.1.1
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=a3c304cd9ba061239ee0474f9afb938a9bb99d89b960246f66f0c3a0a85e14cd PKG_HASH:=6358830f3a64f31e39b0ad421d7dadcd240b72343ded48d8ef13b8faf204865a
PKG_MAINTAINER:= PKG_MAINTAINER:=
PKG_LICENSE:=GPL-2.0 PKG_LICENSE:=GPL-2.0

View File

@ -51,7 +51,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
--- a/src/netlink_delinearize.c --- a/src/netlink_delinearize.c
+++ b/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c
@@ -1473,6 +1473,53 @@ out_err: @@ -1467,6 +1467,53 @@ out_err:
stmt_free(stmt); stmt_free(stmt);
} }
@ -105,7 +105,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
static void netlink_parse_redir(struct netlink_parse_ctx *ctx, static void netlink_parse_redir(struct netlink_parse_ctx *ctx,
const struct location *loc, const struct location *loc,
const struct nftnl_expr *nle) const struct nftnl_expr *nle)
@@ -1901,6 +1948,7 @@ static const struct expr_handler netlink @@ -1897,6 +1944,7 @@ static const struct expr_handler netlink
{ .name = "tproxy", .parse = netlink_parse_tproxy }, { .name = "tproxy", .parse = netlink_parse_tproxy },
{ .name = "notrack", .parse = netlink_parse_notrack }, { .name = "notrack", .parse = netlink_parse_notrack },
{ .name = "masq", .parse = netlink_parse_masq }, { .name = "masq", .parse = netlink_parse_masq },
@ -115,7 +115,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
{ .name = "queue", .parse = netlink_parse_queue }, { .name = "queue", .parse = netlink_parse_queue },
--- a/src/netlink_linearize.c --- a/src/netlink_linearize.c
+++ b/src/netlink_linearize.c +++ b/src/netlink_linearize.c
@@ -1221,6 +1221,13 @@ static void netlink_gen_nat_stmt(struct @@ -1226,6 +1226,13 @@ static void netlink_gen_nat_stmt(struct
nftnl_reg_pmin = NFTNL_EXPR_MASQ_REG_PROTO_MIN; nftnl_reg_pmin = NFTNL_EXPR_MASQ_REG_PROTO_MIN;
nftnl_reg_pmax = NFTNL_EXPR_MASQ_REG_PROTO_MAX; nftnl_reg_pmax = NFTNL_EXPR_MASQ_REG_PROTO_MAX;
break; break;
@ -131,7 +131,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
--- a/src/parser_bison.y --- a/src/parser_bison.y
+++ b/src/parser_bison.y +++ b/src/parser_bison.y
@@ -621,6 +621,7 @@ int nft_lex(void *, void *, void *); @@ -643,6 +643,7 @@ int nft_lex(void *, void *, void *);
%token SNAT "snat" %token SNAT "snat"
%token DNAT "dnat" %token DNAT "dnat"
%token MASQUERADE "masquerade" %token MASQUERADE "masquerade"
@ -139,7 +139,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
%token REDIRECT "redirect" %token REDIRECT "redirect"
%token RANDOM "random" %token RANDOM "random"
%token FULLY_RANDOM "fully-random" %token FULLY_RANDOM "fully-random"
@@ -755,8 +756,8 @@ int nft_lex(void *, void *, void *); @@ -784,8 +785,8 @@ int nft_lex(void *, void *, void *);
%type <val> limit_burst_pkts limit_burst_bytes limit_mode limit_bytes time_unit quota_mode %type <val> limit_burst_pkts limit_burst_bytes limit_mode limit_bytes time_unit quota_mode
%type <stmt> reject_stmt reject_stmt_alloc %type <stmt> reject_stmt reject_stmt_alloc
%destructor { stmt_free($$); } reject_stmt reject_stmt_alloc %destructor { stmt_free($$); } reject_stmt reject_stmt_alloc
@ -150,7 +150,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
%type <val> nf_nat_flags nf_nat_flag offset_opt %type <val> nf_nat_flags nf_nat_flag offset_opt
%type <stmt> tproxy_stmt %type <stmt> tproxy_stmt
%destructor { stmt_free($$); } tproxy_stmt %destructor { stmt_free($$); } tproxy_stmt
@@ -3064,6 +3065,7 @@ stmt : verdict_stmt @@ -3216,6 +3217,7 @@ stmt : verdict_stmt
| queue_stmt | queue_stmt
| ct_stmt | ct_stmt
| masq_stmt close_scope_nat | masq_stmt close_scope_nat
@ -158,7 +158,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
| redir_stmt close_scope_nat | redir_stmt close_scope_nat
| dup_stmt close_scope_dup | dup_stmt close_scope_dup
| fwd_stmt close_scope_fwd | fwd_stmt close_scope_fwd
@@ -3976,6 +3978,28 @@ masq_stmt_args : TO COLON stmt_expr @@ -3999,6 +4001,28 @@ masq_stmt_args : TO COLON stmt_expr
{ {
$<stmt>0->nat.proto = $3; $<stmt>0->nat.proto = $3;
} }
@ -189,7 +189,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
$<stmt>0->nat.proto = $3; $<stmt>0->nat.proto = $3;
--- a/src/scanner.l --- a/src/scanner.l
+++ b/src/scanner.l +++ b/src/scanner.l
@@ -460,6 +460,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr @@ -462,6 +462,7 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr
"snat" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return SNAT; } "snat" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return SNAT; }
"dnat" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return DNAT; } "dnat" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return DNAT; }
"masquerade" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return MASQUERADE; } "masquerade" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return MASQUERADE; }
@ -199,7 +199,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
<SCANSTATE_STMT_NAT>{ <SCANSTATE_STMT_NAT>{
--- a/src/statement.c --- a/src/statement.c
+++ b/src/statement.c +++ b/src/statement.c
@@ -681,6 +681,7 @@ const char *nat_etype2str(enum nft_nat_e @@ -674,6 +674,7 @@ const char *nat_etype2str(enum nft_nat_e
[NFT_NAT_SNAT] = "snat", [NFT_NAT_SNAT] = "snat",
[NFT_NAT_DNAT] = "dnat", [NFT_NAT_DNAT] = "dnat",
[NFT_NAT_MASQ] = "masquerade", [NFT_NAT_MASQ] = "masquerade",