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_CPE_ID:=cpe:/a:netfilter:libnftnl
PKG_VERSION:=1.2.6
PKG_VERSION:=1.2.8
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=ceeaea2cd92147da19f13a35a7f1a4bc2767ff897e838e4b479cf54b59c777f4
PKG_HASH:=37fea5d6b5c9b08de7920d298de3cdc942e7ae64b1a3e8b880b2d390ae67ad95
PKG_MAINTAINER:=Steven Barth <steven@midlink.org>
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
+++ b/include/libnftnl/expr.h
@@ -245,6 +245,12 @@ enum {
@@ -272,6 +272,13 @@ enum {
};
enum {
+ NFTNL_EXPR_FULLCONE_FLAGS = NFTNL_EXPR_BASE,
+ NFTNL_EXPR_FULLCONE_REG_PROTO_MIN,
+ NFTNL_EXPR_FULLCONE_REG_PROTO_MAX,
+ __NFTNL_EXPR_FULLCONE_MAX
+};
+
+enum {
@ -65,7 +66,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
expr/socket.c \
--- /dev/null
+++ b/src/expr/fullcone.c
@@ -0,0 +1,167 @@
@@ -0,0 +1,165 @@
+/*
+ * (C) 2022 wongsyrone
+ *
@ -110,8 +111,6 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
+ case NFTNL_EXPR_FULLCONE_REG_PROTO_MAX:
+ memcpy(&fullcone->sreg_proto_max, data, sizeof(fullcone->sreg_proto_max));
+ break;
+ default:
+ return -1;
+ }
+ return 0;
+}
@ -226,7 +225,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
+struct expr_ops expr_ops_fullcone = {
+ .name = "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,
+ .get = nftnl_expr_fullcone_get,
+ .parse = nftnl_expr_fullcone_parse,

View File

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

View File

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

View File

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

View File

@ -1,33 +1,33 @@
msgid ""
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"
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"
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"
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"
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:233
#: 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:258
msgid "All Port"
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"
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:421
#: 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:448
msgid "Allow Mode"
msgstr ""
@ -35,32 +35,40 @@ msgstr ""
msgid "App Log"
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"
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"
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"
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:420
#: 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:447
msgid "Block Mode"
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"
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"
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
msgid "Choose Profile"
msgstr ""
@ -70,8 +78,8 @@ msgstr ""
msgid "Clear Log"
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:234
#: 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:259
msgid "Commonly Used Port"
msgstr ""
@ -83,71 +91,71 @@ msgstr ""
msgid "Core Log"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr ""
@ -155,38 +163,38 @@ msgstr ""
msgid "Editor"
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:144
#: 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:360
#: 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:474
#: 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:538
#: 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:148
#: 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:386
#: 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:501
#: 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:565
msgid "Enable"
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"
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"
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"
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"
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"
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"
msgstr ""
@ -202,60 +210,60 @@ msgstr ""
msgid "File for Reserved IP6"
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
msgid "File:"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr ""
@ -263,48 +271,52 @@ msgstr ""
msgid "Grant access to mihomo procedures"
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"
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"
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"
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"
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"
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:435
#: 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:462
msgid "IPv6"
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"
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"
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"
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"
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"
msgstr ""
@ -312,54 +324,54 @@ msgstr ""
msgid "Log"
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"
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"
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"
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"
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"
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
msgid "MihomoTProxy"
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"
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"
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"
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"
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:279
#: 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:304
msgid "Mode"
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:503
#: 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:530
msgid "Nameserver"
msgstr ""
@ -367,43 +379,43 @@ msgstr ""
msgid "Not Running"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr ""
@ -411,39 +423,39 @@ msgstr ""
msgid "Profile for Startup"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr ""
@ -451,15 +463,15 @@ msgstr ""
msgid "Running"
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"
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"
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"
msgstr ""
@ -473,94 +485,94 @@ msgstr ""
msgid "Service is not running."
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"
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"
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"
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"
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"
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"
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"
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
msgid "Subscription:"
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"
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"
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"
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:157
msgid "TPROXY Mode"
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"
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"
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:158
msgid "TUN Mode"
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"
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"
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."
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"
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"
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"
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"
msgstr ""
@ -569,30 +581,30 @@ msgstr ""
msgid "Unknown"
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"
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"
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"
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"
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"
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"
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"
msgstr ""

View File

@ -8,33 +8,33 @@ msgstr ""
"MIME-Version: 1.0\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"
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"
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"
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"
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:233
#: 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:258
msgid "All Port"
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"
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:421
#: 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:448
msgid "Allow Mode"
msgstr "白名单模式"
@ -42,32 +42,40 @@ msgstr "白名单模式"
msgid "App Log"
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"
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"
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"
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:420
#: 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:447
msgid "Block Mode"
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"
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"
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
msgid "Choose Profile"
msgstr "选择配置文件"
@ -77,8 +85,8 @@ msgstr "选择配置文件"
msgid "Clear Log"
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:234
#: 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:259
msgid "Commonly Used Port"
msgstr "常用端口"
@ -90,71 +98,71 @@ msgstr "配置"
msgid "Core Log"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr "编辑 DNS 服务器"
@ -162,38 +170,38 @@ msgstr "编辑 DNS 服务器"
msgid "Editor"
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:144
#: 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:360
#: 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:474
#: 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:538
#: 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:148
#: 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:386
#: 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:501
#: 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:565
msgid "Enable"
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"
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"
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"
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"
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"
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"
msgstr "快速重载"
@ -209,60 +217,60 @@ msgstr "IPv4 保留地址"
msgid "File for Reserved IP6"
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
msgid "File:"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr "全局模式"
@ -270,48 +278,52 @@ msgstr "全局模式"
msgid "Grant access to mihomo procedures"
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"
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"
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"
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"
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"
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:435
#: 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:462
msgid "IPv6"
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"
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"
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"
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"
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"
msgstr "本地"
@ -319,54 +331,54 @@ msgstr "本地"
msgid "Log"
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"
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"
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"
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"
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"
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
msgid "MihomoTProxy"
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"
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"
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"
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"
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:279
#: 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:304
msgid "Mode"
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:503
#: 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:530
msgid "Nameserver"
msgstr "DNS 服务器"
@ -374,43 +386,43 @@ msgstr "DNS 服务器"
msgid "Not Running"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr "优先"
@ -418,39 +430,39 @@ msgstr "优先"
msgid "Profile for Startup"
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"
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"
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"
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"
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"
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"
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"
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"
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"
msgstr "规则模式"
@ -458,15 +470,15 @@ msgstr "规则模式"
msgid "Running"
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"
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"
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"
msgstr "定时重启"
@ -480,94 +492,94 @@ msgstr "滚动到底部"
msgid "Service is not running."
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"
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"
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"
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"
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"
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"
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"
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
msgid "Subscription:"
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"
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"
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"
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:157
msgid "TPROXY Mode"
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"
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"
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:158
msgid "TUN Mode"
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"
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"
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."
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"
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"
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"
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"
msgstr "UI 下载地址"
@ -576,30 +588,33 @@ msgstr "UI 下载地址"
msgid "Unknown"
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"
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"
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"
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"
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"
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"
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"
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" ]
},
"file": {
"/etc/passwd": ["read"],
"/etc/group": ["read"],
"/etc/mihomo/profiles/*.yaml": ["read"],
"/etc/mihomo/profiles/*.yml": ["read"],
"/etc/mihomo/subscriptions/*.yaml": ["read"],

View File

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

View File

@ -24,9 +24,24 @@ config proxy 'proxy'
option 'acl_ip' ''
option 'acl_ip6' ''
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 'acl_tcp_dport' '0-65535'
option 'acl_udp_dport' '0-65535'
option 'proxy_tcp_dport' '0-65535'
option 'proxy_udp_dport' '0-65535'
config subscription 'subscription'
option 'name' 'default'

View File

@ -64,11 +64,11 @@ start_service() {
config_get_bool router_proxy "proxy" "router_proxy" 0
config_get_bool lan_proxy "proxy" "lan_proxy" 0
### 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_bool bypass_china_mainland_ip "proxy" "bypass_china_mainland_ip" 0
config_get acl_tcp_dport "proxy" "acl_tcp_dport" "0-65535"
config_get acl_udp_dport "proxy" "acl_udp_dport" "0-65535"
config_get proxy_tcp_dport "proxy" "proxy_tcp_dport" "0-65535"
config_get proxy_udp_dport "proxy" "proxy_udp_dport" "0-65535"
## mixin config
### general
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"
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_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
if [ "$ipv4_dns_hijack" == 1 ]; then
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."
nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv6 \}
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
log "Transparent Proxy: Bypass china mainland ip is enabled."
if [ "$ipv4_proxy" == 1 ]; then
@ -369,15 +369,14 @@ start_service() {
nft -f "$GEOIP6_CN_NFT"
fi
fi
# destination port to proxy
log "Transparent Proxy: Destination TCP Port to Proxy: $acl_tcp_dport."
log "Transparent Proxy: Destination UDP Port to Proxy: $acl_udp_dport."
local acl_dport
for acl_dport in $acl_tcp_dport; do
nft add element inet "$FW_TABLE" acl_dport \{ "tcp" . "$acl_dport" \}
log "Transparent Proxy: Destination TCP Port to Proxy: $proxy_tcp_dport."
log "Transparent Proxy: Destination UDP Port to Proxy: $proxy_udp_dport."
local proxy_dport
for proxy_dport in $proxy_tcp_dport; do
nft add element inet "$FW_TABLE" proxy_dport \{ "tcp" . "$proxy_dport" \}
done
for acl_dport in $acl_udp_dport; do
nft add element inet "$FW_TABLE" acl_dport \{ "udp" . "$acl_dport" \}
for proxy_dport in $proxy_udp_dport; do
nft add element inet "$FW_TABLE" proxy_dport \{ "udp" . "$proxy_dport" \}
done
# router proxy
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_ip6" add_acl_ip6
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
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}"
@ -592,6 +592,20 @@ mixin_nameserver_policy() {
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() {
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" \}
}
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() {
local subscription_section; subscription_section="$1"
if [ -n "$subscription_section" ]; then

View File

@ -1,14 +1,18 @@
#!/usr/sbin/nft -f
table inet mihomo {
set bypass_user {
type uid
flags interval
auto-merge
}
set bypass_group {
type gid
flags interval
auto-merge
elements = {
ntp,
dnsmasq,
logd
$MIHOMO_GROUP
}
}
@ -44,12 +48,7 @@ table inet mihomo {
auto-merge
}
set fake_ip {
type ipv4_addr
flags interval
}
set acl_dport {
set proxy_dport {
type inet_proto . inet_service
flags interval
auto-merge
@ -73,7 +72,14 @@ table inet mihomo {
auto-merge
}
set acl_interface {
type ifname
flags interval
auto-merge
}
chain router_dns_hijack {
meta skuid @bypass_user counter return
meta skgid @bypass_group counter return
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 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 iifname @acl_interface counter redirect to :$DNS_PORT
}
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 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 iifname @acl_interface counter return
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 } 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 } iifname @acl_interface counter redirect to :$REDIR_PORT
}
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 } 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 } iifname @acl_interface counter return
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 } 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 } iifname @acl_interface meta mark set mark ^ $FW_MARK tproxy to :$TPROXY_PORT counter accept
}
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 } 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 } 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
}
@ -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 } 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 } iifname @acl_interface meta mark set mark ^ $FW_MARK counter
}
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 } 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 } iifname @acl_interface counter return
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
ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return
meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
}
chain nat_output {
type nat hook output priority filter; policy accept;
meta skuid @bypass_user counter return
meta skgid @bypass_group counter return
fib daddr type local counter return
ct direction reply counter return
@ -175,8 +190,8 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return
meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
}
chain mangle_prerouting {
@ -189,13 +204,14 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return
meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
meta l4proto udp th dport 53 counter return
}
chain mangle_output {
type route hook output priority mangle; policy accept;
meta skuid @bypass_user counter return
meta skgid @bypass_group counter return
fib daddr type local counter return
ct direction reply counter return
@ -203,8 +219,8 @@ table inet mihomo {
ip6 daddr @reserved_ip6 counter return
ip daddr @china_ip counter return
ip6 daddr @china_ip6 counter return
meta l4proto . th dport != @acl_dport ip daddr != @fake_ip counter return
meta nfproto ipv6 meta l4proto . th dport != @acl_dport counter return
meta nfproto ipv4 meta l4proto . th dport != @proxy_dport ip daddr != $FAKE_IP counter return
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport 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
# 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
uci commit mihomo

View File

@ -6,12 +6,12 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=nftables
PKG_VERSION:=1.0.9
PKG_VERSION:=1.1.1
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=https://netfilter.org/projects/$(PKG_NAME)/files
PKG_HASH:=a3c304cd9ba061239ee0474f9afb938a9bb99d89b960246f66f0c3a0a85e14cd
PKG_HASH:=6358830f3a64f31e39b0ad421d7dadcd240b72343ded48d8ef13b8faf204865a
PKG_MAINTAINER:=
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
+++ b/src/netlink_delinearize.c
@@ -1473,6 +1473,53 @@ out_err:
@@ -1467,6 +1467,53 @@ out_err:
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,
const struct location *loc,
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 = "notrack", .parse = netlink_parse_notrack },
{ .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 },
--- a/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_pmax = NFTNL_EXPR_MASQ_REG_PROTO_MAX;
break;
@ -131,7 +131,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
--- a/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 DNAT "dnat"
%token MASQUERADE "masquerade"
@ -139,7 +139,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
%token REDIRECT "redirect"
%token RANDOM "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 <stmt> 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 <stmt> tproxy_stmt
%destructor { stmt_free($$); } tproxy_stmt
@@ -3064,6 +3065,7 @@ stmt : verdict_stmt
@@ -3216,6 +3217,7 @@ stmt : verdict_stmt
| queue_stmt
| ct_stmt
| masq_stmt close_scope_nat
@ -158,7 +158,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
| redir_stmt close_scope_nat
| dup_stmt close_scope_dup
| 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;
}
@ -189,7 +189,7 @@ Signed-off-by: Syrone Wong <wong.syrone@gmail.com>
$<stmt>0->nat.proto = $3;
--- a/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; }
"dnat" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_NAT); return DNAT; }
"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>{
--- a/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_DNAT] = "dnat",
[NFT_NAT_MASQ] = "masquerade",