mirror of
https://github.com/kenzok8/small.git
synced 2025-01-08 12:08:21 +08:00
update 2024-12-29 12:15:28
This commit is contained in:
parent
97f96384dd
commit
a817223b35
@ -1,6 +1,6 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_VERSION:=1.14.0
|
PKG_VERSION:=1.15.0
|
||||||
|
|
||||||
LUCI_TITLE:=LuCI Support for mihomo
|
LUCI_TITLE:=LuCI Support for mihomo
|
||||||
LUCI_DEPENDS:=+luci-base +mihomo
|
LUCI_DEPENDS:=+luci-base +mihomo
|
||||||
|
@ -128,6 +128,9 @@ return view.extend({
|
|||||||
|
|
||||||
s.tab('tun', _('TUN Config'));
|
s.tab('tun', _('TUN Config'));
|
||||||
|
|
||||||
|
o = s.taboption('tun', form.Value, 'tun_device', '*' + ' ' + _('Device'));
|
||||||
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack'));
|
o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack'));
|
||||||
o.value('system', 'System');
|
o.value('system', 'System');
|
||||||
o.value('gvisor', 'gVisor');
|
o.value('gvisor', 'gVisor');
|
||||||
|
@ -26,7 +26,7 @@ msgstr ""
|
|||||||
msgid "Allow Lan"
|
msgid "Allow Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65
|
||||||
msgid "Allow Mode"
|
msgid "Allow Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -36,7 +36,7 @@ msgstr ""
|
|||||||
msgid "App Config"
|
msgid "App Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:38
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:26
|
||||||
msgid "App Log"
|
msgid "App Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -48,7 +48,7 @@ msgstr ""
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:180
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:183
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66
|
||||||
msgid "Block Mode"
|
msgid "Block Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -77,8 +77,8 @@ msgstr ""
|
|||||||
msgid "Choose Profile"
|
msgid "Choose Profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:42
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:30
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:75
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:63
|
||||||
msgid "Clear Log"
|
msgid "Clear Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ msgstr ""
|
|||||||
msgid "Core Environment Variable Config"
|
msgid "Core Environment Variable Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:71
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:59
|
||||||
msgid "Core Log"
|
msgid "Core Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -107,15 +107,15 @@ msgstr ""
|
|||||||
msgid "Cron Expression"
|
msgid "Cron Expression"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:155
|
||||||
msgid "DNS Config"
|
msgid "DNS Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:158
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:161
|
||||||
msgid "DNS Mode"
|
msgid "DNS Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:154
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:157
|
||||||
msgid "DNS Port"
|
msgid "DNS Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -127,6 +127,10 @@ msgstr ""
|
|||||||
msgid "Destination UDP Port to Proxy"
|
msgid "Destination UDP Port to Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131
|
||||||
|
msgid "Device"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40
|
||||||
msgid "Direct Mode"
|
msgid "Direct Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -151,11 +155,11 @@ msgstr ""
|
|||||||
msgid "Disable Safe Path Check"
|
msgid "Disable Safe Path Check"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195
|
||||||
msgid "DoH Prefer HTTP/3"
|
msgid "DoH Prefer HTTP/3"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221
|
||||||
msgid "Domain Name"
|
msgid "Domain Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -163,19 +167,19 @@ msgstr ""
|
|||||||
msgid "Edit Authentications"
|
msgid "Edit Authentications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:174
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:177
|
||||||
msgid "Edit Fake-IP Filters"
|
msgid "Edit Fake-IP Filters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:210
|
||||||
msgid "Edit Hosts"
|
msgid "Edit Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:252
|
||||||
msgid "Edit Nameserver Policies"
|
msgid "Edit Nameserver Policies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:229
|
||||||
msgid "Edit Nameservers"
|
msgid "Edit Nameservers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -192,15 +196,15 @@ msgstr ""
|
|||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:215
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:234
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:257
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:301
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:149
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152
|
||||||
msgid "Endpoint Independent NAT"
|
msgid "Endpoint Independent NAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -212,15 +216,15 @@ msgstr ""
|
|||||||
msgid "External Control Config"
|
msgid "External Control Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:187
|
||||||
msgid "Fake-IP Cache"
|
msgid "Fake-IP Cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:178
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181
|
||||||
msgid "Fake-IP Filter Mode"
|
msgid "Fake-IP Filter Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:163
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:166
|
||||||
msgid "Fake-IP Range"
|
msgid "Fake-IP Range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -245,11 +249,11 @@ msgstr ""
|
|||||||
msgid "File:"
|
msgid "File:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:140
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143
|
||||||
msgid "GSO"
|
msgid "GSO"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:146
|
||||||
msgid "GSO Max Size"
|
msgid "GSO Max Size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -257,39 +261,39 @@ msgstr ""
|
|||||||
msgid "General Config"
|
msgid "General Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:271
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:274
|
||||||
msgid "GeoData Loader"
|
msgid "GeoData Loader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:267
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:270
|
||||||
msgid "GeoIP Format"
|
msgid "GeoIP Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287
|
||||||
msgid "GeoIP(ASN) Url"
|
msgid "GeoIP(ASN) Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284
|
||||||
msgid "GeoIP(DAT) Url"
|
msgid "GeoIP(DAT) Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281
|
||||||
msgid "GeoIP(MMDB) Url"
|
msgid "GeoIP(MMDB) Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278
|
||||||
msgid "GeoSite Url"
|
msgid "GeoSite Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290
|
||||||
msgid "GeoX Auto Update"
|
msgid "GeoX Auto Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:265
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:268
|
||||||
msgid "GeoX Config"
|
msgid "GeoX Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:293
|
||||||
msgid "GeoX Update Interval"
|
msgid "GeoX Update Interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -309,7 +313,7 @@ msgstr ""
|
|||||||
msgid "How To Use"
|
msgid "How To Use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:224
|
||||||
msgid "IP"
|
msgid "IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -322,7 +326,7 @@ msgid "IPv4 Proxy"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -350,7 +354,7 @@ msgstr ""
|
|||||||
msgid "Local"
|
msgid "Local"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:36
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:24
|
||||||
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53
|
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53
|
||||||
msgid "Log"
|
msgid "Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -359,7 +363,7 @@ msgstr ""
|
|||||||
msgid "Log Level"
|
msgid "Log Level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:136
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:139
|
||||||
msgid "MTU"
|
msgid "MTU"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -367,11 +371,11 @@ msgstr ""
|
|||||||
msgid "Match Process"
|
msgid "Match Process"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263
|
||||||
msgid "Matcher"
|
msgid "Matcher"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:273
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:276
|
||||||
msgid "Memory Conservative Loader"
|
msgid "Memory Conservative Loader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -389,7 +393,7 @@ msgstr ""
|
|||||||
msgid "Mixin Config"
|
msgid "Mixin Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:296
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:299
|
||||||
msgid "Mixin File Content"
|
msgid "Mixin File Content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -402,13 +406,12 @@ msgstr ""
|
|||||||
msgid "Mode"
|
msgid "Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:244
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:247
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:266
|
||||||
msgid "Nameserver"
|
msgid "Nameserver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
|
|
||||||
msgid "Not Running"
|
msgid "Not Running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -424,19 +427,19 @@ msgstr ""
|
|||||||
msgid "Overwrite Authentication"
|
msgid "Overwrite Authentication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:169
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:172
|
||||||
msgid "Overwrite Fake-IP Filter"
|
msgid "Overwrite Fake-IP Filter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207
|
||||||
msgid "Overwrite Hosts"
|
msgid "Overwrite Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:223
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226
|
||||||
msgid "Overwrite Nameserver"
|
msgid "Overwrite Nameserver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:246
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249
|
||||||
msgid "Overwrite Nameserver Policy"
|
msgid "Overwrite Nameserver Policy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -444,7 +447,7 @@ msgstr ""
|
|||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:301
|
||||||
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 ""
|
||||||
|
|
||||||
@ -482,7 +485,7 @@ msgstr ""
|
|||||||
msgid "Remote"
|
msgid "Remote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:189
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192
|
||||||
msgid "Respect Rules"
|
msgid "Respect Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -499,7 +502,6 @@ msgid "Rule Mode"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
|
|
||||||
msgid "Running"
|
msgid "Running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -515,8 +517,8 @@ msgstr ""
|
|||||||
msgid "Scheduled Restart"
|
msgid "Scheduled Restart"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:65
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:53
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:98
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:86
|
||||||
msgid "Scroll To Bottom"
|
msgid "Scroll To Bottom"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -525,11 +527,11 @@ msgstr ""
|
|||||||
msgid "Service is not running."
|
msgid "Service is not running."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:134
|
||||||
msgid "Stack"
|
msgid "Stack"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:272
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275
|
||||||
msgid "Standard Loader"
|
msgid "Standard Loader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -604,7 +606,7 @@ msgstr ""
|
|||||||
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:240
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -641,11 +643,11 @@ msgstr ""
|
|||||||
msgid "Upload Profile"
|
msgid "Upload Profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204
|
||||||
msgid "Use Hosts"
|
msgid "Use Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201
|
||||||
msgid "Use System Hosts"
|
msgid "Use System Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ msgstr "全部端口"
|
|||||||
msgid "Allow Lan"
|
msgid "Allow Lan"
|
||||||
msgstr "允许局域网访问"
|
msgstr "允许局域网访问"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65
|
||||||
msgid "Allow Mode"
|
msgid "Allow Mode"
|
||||||
msgstr "白名单模式"
|
msgstr "白名单模式"
|
||||||
@ -43,7 +43,7 @@ msgstr "白名单模式"
|
|||||||
msgid "App Config"
|
msgid "App Config"
|
||||||
msgstr "插件配置"
|
msgstr "插件配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:38
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:26
|
||||||
msgid "App Log"
|
msgid "App Log"
|
||||||
msgstr "插件日志"
|
msgstr "插件日志"
|
||||||
|
|
||||||
@ -55,7 +55,7 @@ msgstr "插件版本"
|
|||||||
msgid "Auto"
|
msgid "Auto"
|
||||||
msgstr "自动"
|
msgstr "自动"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:180
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:183
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66
|
||||||
msgid "Block Mode"
|
msgid "Block Mode"
|
||||||
msgstr "黑名单模式"
|
msgstr "黑名单模式"
|
||||||
@ -84,8 +84,8 @@ msgstr "选择文件"
|
|||||||
msgid "Choose Profile"
|
msgid "Choose Profile"
|
||||||
msgstr "选择配置文件"
|
msgstr "选择配置文件"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:42
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:30
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:75
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:63
|
||||||
msgid "Clear Log"
|
msgid "Clear Log"
|
||||||
msgstr "清空日志"
|
msgstr "清空日志"
|
||||||
|
|
||||||
@ -98,7 +98,7 @@ msgstr "常用端口"
|
|||||||
msgid "Core Environment Variable Config"
|
msgid "Core Environment Variable Config"
|
||||||
msgstr "核心环境变量配置"
|
msgstr "核心环境变量配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:71
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:59
|
||||||
msgid "Core Log"
|
msgid "Core Log"
|
||||||
msgstr "核心日志"
|
msgstr "核心日志"
|
||||||
|
|
||||||
@ -114,15 +114,15 @@ msgstr "核心版本"
|
|||||||
msgid "Cron Expression"
|
msgid "Cron Expression"
|
||||||
msgstr "Cron 表达式"
|
msgstr "Cron 表达式"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:155
|
||||||
msgid "DNS Config"
|
msgid "DNS Config"
|
||||||
msgstr "DNS 配置"
|
msgstr "DNS 配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:158
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:161
|
||||||
msgid "DNS Mode"
|
msgid "DNS Mode"
|
||||||
msgstr "DNS 模式"
|
msgstr "DNS 模式"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:154
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:157
|
||||||
msgid "DNS Port"
|
msgid "DNS Port"
|
||||||
msgstr "DNS 端口"
|
msgstr "DNS 端口"
|
||||||
|
|
||||||
@ -134,6 +134,10 @@ msgstr "要代理的 TCP 目标端口"
|
|||||||
msgid "Destination UDP Port to Proxy"
|
msgid "Destination UDP Port to Proxy"
|
||||||
msgstr "要代理的 UDP 目标端口"
|
msgstr "要代理的 UDP 目标端口"
|
||||||
|
|
||||||
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131
|
||||||
|
msgid "Device"
|
||||||
|
msgstr "设备名称"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40
|
||||||
msgid "Direct Mode"
|
msgid "Direct Mode"
|
||||||
msgstr "直连模式"
|
msgstr "直连模式"
|
||||||
@ -158,11 +162,11 @@ msgstr "禁用回环检测"
|
|||||||
msgid "Disable Safe Path Check"
|
msgid "Disable Safe Path Check"
|
||||||
msgstr "禁用安全路径检查"
|
msgstr "禁用安全路径检查"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195
|
||||||
msgid "DoH Prefer HTTP/3"
|
msgid "DoH Prefer HTTP/3"
|
||||||
msgstr "DoH 优先 HTTP/3"
|
msgstr "DoH 优先 HTTP/3"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221
|
||||||
msgid "Domain Name"
|
msgid "Domain Name"
|
||||||
msgstr "域名"
|
msgstr "域名"
|
||||||
|
|
||||||
@ -170,19 +174,19 @@ msgstr "域名"
|
|||||||
msgid "Edit Authentications"
|
msgid "Edit Authentications"
|
||||||
msgstr "编辑身份验证"
|
msgstr "编辑身份验证"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:174
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:177
|
||||||
msgid "Edit Fake-IP Filters"
|
msgid "Edit Fake-IP Filters"
|
||||||
msgstr "编辑 Fake-IP 过滤列表"
|
msgstr "编辑 Fake-IP 过滤列表"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:210
|
||||||
msgid "Edit Hosts"
|
msgid "Edit Hosts"
|
||||||
msgstr "编辑 Hosts"
|
msgstr "编辑 Hosts"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:252
|
||||||
msgid "Edit Nameserver Policies"
|
msgid "Edit Nameserver Policies"
|
||||||
msgstr "编辑 DNS 服务器查询策略"
|
msgstr "编辑 DNS 服务器查询策略"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:229
|
||||||
msgid "Edit Nameservers"
|
msgid "Edit Nameservers"
|
||||||
msgstr "编辑 DNS 服务器"
|
msgstr "编辑 DNS 服务器"
|
||||||
|
|
||||||
@ -199,15 +203,15 @@ msgstr "编辑器"
|
|||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:215
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:234
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:257
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:301
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "启用"
|
msgstr "启用"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:149
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152
|
||||||
msgid "Endpoint Independent NAT"
|
msgid "Endpoint Independent NAT"
|
||||||
msgstr "独立于端点的 NAT"
|
msgstr "独立于端点的 NAT"
|
||||||
|
|
||||||
@ -219,15 +223,15 @@ msgstr "到期时间"
|
|||||||
msgid "External Control Config"
|
msgid "External Control Config"
|
||||||
msgstr "外部控制配置"
|
msgstr "外部控制配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:187
|
||||||
msgid "Fake-IP Cache"
|
msgid "Fake-IP Cache"
|
||||||
msgstr "Fake-IP 缓存"
|
msgstr "Fake-IP 缓存"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:178
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181
|
||||||
msgid "Fake-IP Filter Mode"
|
msgid "Fake-IP Filter Mode"
|
||||||
msgstr "Fake-IP 过滤模式"
|
msgstr "Fake-IP 过滤模式"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:163
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:166
|
||||||
msgid "Fake-IP Range"
|
msgid "Fake-IP Range"
|
||||||
msgstr "Fake-IP 范围"
|
msgstr "Fake-IP 范围"
|
||||||
|
|
||||||
@ -252,11 +256,11 @@ msgstr "IPv6 保留地址"
|
|||||||
msgid "File:"
|
msgid "File:"
|
||||||
msgstr "文件:"
|
msgstr "文件:"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:140
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143
|
||||||
msgid "GSO"
|
msgid "GSO"
|
||||||
msgstr "通用分段卸载"
|
msgstr "通用分段卸载"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:146
|
||||||
msgid "GSO Max Size"
|
msgid "GSO Max Size"
|
||||||
msgstr "分段最大长度"
|
msgstr "分段最大长度"
|
||||||
|
|
||||||
@ -264,39 +268,39 @@ msgstr "分段最大长度"
|
|||||||
msgid "General Config"
|
msgid "General Config"
|
||||||
msgstr "全局配置"
|
msgstr "全局配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:271
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:274
|
||||||
msgid "GeoData Loader"
|
msgid "GeoData Loader"
|
||||||
msgstr "GeoData 加载器"
|
msgstr "GeoData 加载器"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:267
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:270
|
||||||
msgid "GeoIP Format"
|
msgid "GeoIP Format"
|
||||||
msgstr "GeoIP 格式"
|
msgstr "GeoIP 格式"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287
|
||||||
msgid "GeoIP(ASN) Url"
|
msgid "GeoIP(ASN) Url"
|
||||||
msgstr "GeoIP(ASN) 下载地址"
|
msgstr "GeoIP(ASN) 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284
|
||||||
msgid "GeoIP(DAT) Url"
|
msgid "GeoIP(DAT) Url"
|
||||||
msgstr "GeoIP(DAT) 下载地址"
|
msgstr "GeoIP(DAT) 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281
|
||||||
msgid "GeoIP(MMDB) Url"
|
msgid "GeoIP(MMDB) Url"
|
||||||
msgstr "GeoIP(MMDB) 下载地址"
|
msgstr "GeoIP(MMDB) 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278
|
||||||
msgid "GeoSite Url"
|
msgid "GeoSite Url"
|
||||||
msgstr "GeoSite 下载地址"
|
msgstr "GeoSite 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290
|
||||||
msgid "GeoX Auto Update"
|
msgid "GeoX Auto Update"
|
||||||
msgstr "定时更新GeoX文件"
|
msgstr "定时更新GeoX文件"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:265
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:268
|
||||||
msgid "GeoX Config"
|
msgid "GeoX Config"
|
||||||
msgstr "GeoX 配置"
|
msgstr "GeoX 配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:293
|
||||||
msgid "GeoX Update Interval"
|
msgid "GeoX Update Interval"
|
||||||
msgstr "GeoX 文件更新间隔"
|
msgstr "GeoX 文件更新间隔"
|
||||||
|
|
||||||
@ -316,7 +320,7 @@ msgstr "HTTP 端口"
|
|||||||
msgid "How To Use"
|
msgid "How To Use"
|
||||||
msgstr "使用说明"
|
msgstr "使用说明"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:224
|
||||||
msgid "IP"
|
msgid "IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -329,7 +333,7 @@ msgid "IPv4 Proxy"
|
|||||||
msgstr "IPv4 代理"
|
msgstr "IPv4 代理"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198
|
||||||
msgid "IPv6"
|
msgid "IPv6"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -357,7 +361,7 @@ msgstr "局域网代理"
|
|||||||
msgid "Local"
|
msgid "Local"
|
||||||
msgstr "本地"
|
msgstr "本地"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:36
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:24
|
||||||
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53
|
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53
|
||||||
msgid "Log"
|
msgid "Log"
|
||||||
msgstr "日志"
|
msgstr "日志"
|
||||||
@ -366,7 +370,7 @@ msgstr "日志"
|
|||||||
msgid "Log Level"
|
msgid "Log Level"
|
||||||
msgstr "日志级别"
|
msgstr "日志级别"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:136
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:139
|
||||||
msgid "MTU"
|
msgid "MTU"
|
||||||
msgstr "最大传输单元"
|
msgstr "最大传输单元"
|
||||||
|
|
||||||
@ -374,11 +378,11 @@ msgstr "最大传输单元"
|
|||||||
msgid "Match Process"
|
msgid "Match Process"
|
||||||
msgstr "匹配进程"
|
msgstr "匹配进程"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263
|
||||||
msgid "Matcher"
|
msgid "Matcher"
|
||||||
msgstr "匹配"
|
msgstr "匹配"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:273
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:276
|
||||||
msgid "Memory Conservative Loader"
|
msgid "Memory Conservative Loader"
|
||||||
msgstr "为内存受限设备优化的加载器"
|
msgstr "为内存受限设备优化的加载器"
|
||||||
|
|
||||||
@ -396,7 +400,7 @@ msgstr "混合端口"
|
|||||||
msgid "Mixin Config"
|
msgid "Mixin Config"
|
||||||
msgstr "混入配置"
|
msgstr "混入配置"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:296
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:299
|
||||||
msgid "Mixin File Content"
|
msgid "Mixin File Content"
|
||||||
msgstr "混入文件内容"
|
msgstr "混入文件内容"
|
||||||
|
|
||||||
@ -409,13 +413,12 @@ msgstr "混入选项"
|
|||||||
msgid "Mode"
|
msgid "Mode"
|
||||||
msgstr "模式"
|
msgstr "模式"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:244
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:247
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:266
|
||||||
msgid "Nameserver"
|
msgid "Nameserver"
|
||||||
msgstr "DNS 服务器"
|
msgstr "DNS 服务器"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
|
|
||||||
msgid "Not Running"
|
msgid "Not Running"
|
||||||
msgstr "未在运行"
|
msgstr "未在运行"
|
||||||
|
|
||||||
@ -431,19 +434,19 @@ msgstr "出站接口"
|
|||||||
msgid "Overwrite Authentication"
|
msgid "Overwrite Authentication"
|
||||||
msgstr "覆盖身份验证"
|
msgstr "覆盖身份验证"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:169
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:172
|
||||||
msgid "Overwrite Fake-IP Filter"
|
msgid "Overwrite Fake-IP Filter"
|
||||||
msgstr "覆盖 Fake-IP 过滤列表"
|
msgstr "覆盖 Fake-IP 过滤列表"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207
|
||||||
msgid "Overwrite Hosts"
|
msgid "Overwrite Hosts"
|
||||||
msgstr "覆盖 Hosts"
|
msgstr "覆盖 Hosts"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:223
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226
|
||||||
msgid "Overwrite Nameserver"
|
msgid "Overwrite Nameserver"
|
||||||
msgstr "覆盖 DNS 服务器"
|
msgstr "覆盖 DNS 服务器"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:246
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249
|
||||||
msgid "Overwrite Nameserver Policy"
|
msgid "Overwrite Nameserver Policy"
|
||||||
msgstr "覆盖 DNS 服务器查询策略"
|
msgstr "覆盖 DNS 服务器查询策略"
|
||||||
|
|
||||||
@ -451,7 +454,7 @@ msgstr "覆盖 DNS 服务器查询策略"
|
|||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "密码"
|
msgstr "密码"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:301
|
||||||
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 "请前往编辑器标签编辑用于混入的文件"
|
||||||
|
|
||||||
@ -489,7 +492,7 @@ msgstr "重载服务"
|
|||||||
msgid "Remote"
|
msgid "Remote"
|
||||||
msgstr "远程"
|
msgstr "远程"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:189
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192
|
||||||
msgid "Respect Rules"
|
msgid "Respect Rules"
|
||||||
msgstr "遵循分流规则"
|
msgstr "遵循分流规则"
|
||||||
|
|
||||||
@ -506,7 +509,6 @@ msgid "Rule Mode"
|
|||||||
msgstr "规则模式"
|
msgstr "规则模式"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
|
|
||||||
msgid "Running"
|
msgid "Running"
|
||||||
msgstr "运行中"
|
msgstr "运行中"
|
||||||
|
|
||||||
@ -522,8 +524,8 @@ msgstr "保存节点/策略组选择"
|
|||||||
msgid "Scheduled Restart"
|
msgid "Scheduled Restart"
|
||||||
msgstr "定时重启"
|
msgstr "定时重启"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:65
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:53
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:98
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:86
|
||||||
msgid "Scroll To Bottom"
|
msgid "Scroll To Bottom"
|
||||||
msgstr "滚动到底部"
|
msgstr "滚动到底部"
|
||||||
|
|
||||||
@ -532,11 +534,11 @@ msgstr "滚动到底部"
|
|||||||
msgid "Service is not running."
|
msgid "Service is not running."
|
||||||
msgstr "服务未在运行。"
|
msgstr "服务未在运行。"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:134
|
||||||
msgid "Stack"
|
msgid "Stack"
|
||||||
msgstr "栈"
|
msgstr "栈"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:272
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275
|
||||||
msgid "Standard Loader"
|
msgid "Standard Loader"
|
||||||
msgstr "标准加载器"
|
msgstr "标准加载器"
|
||||||
|
|
||||||
@ -611,7 +613,7 @@ msgstr "透明代理"
|
|||||||
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
||||||
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
|
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:240
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "类型"
|
msgstr "类型"
|
||||||
|
|
||||||
@ -648,11 +650,11 @@ msgstr "更新面板"
|
|||||||
msgid "Upload Profile"
|
msgid "Upload Profile"
|
||||||
msgstr "上传配置文件"
|
msgstr "上传配置文件"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204
|
||||||
msgid "Use Hosts"
|
msgid "Use Hosts"
|
||||||
msgstr "使用 Hosts"
|
msgstr "使用 Hosts"
|
||||||
|
|
||||||
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198
|
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201
|
||||||
msgid "Use System Hosts"
|
msgid "Use System Hosts"
|
||||||
msgstr "使用系统的 Hosts"
|
msgstr "使用系统的 Hosts"
|
||||||
|
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_NAME:=mihomo
|
PKG_NAME:=mihomo
|
||||||
PKG_RELEASE:=1
|
PKG_RELEASE:=2
|
||||||
|
|
||||||
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
|
||||||
PKG_SOURCE_DATE:=2024-12-19
|
PKG_SOURCE_DATE:=2024-12-28
|
||||||
PKG_SOURCE_VERSION:=89dfabe9b36b22df896dcd1ab03c67c667ec20f3
|
PKG_SOURCE_VERSION:=a9ce5da09d38f6057bd248cd146cbd8c05dc9fd6
|
||||||
PKG_MIRROR_HASH:=5d2e9fe03dffa573af6bc300e39e21d95e7cde964f54d531e040e104780abd08
|
PKG_MIRROR_HASH:=b893642d6bb24d64d6c36c722d44f821340027c5aa0a56e2f62d3c70bf2ea059
|
||||||
|
|
||||||
PKG_LICENSE:=MIT
|
PKG_LICENSE:=MIT
|
||||||
PKG_MAINTAINER:=Joseph Mory <morytyann@gmail.com>
|
PKG_MAINTAINER:=Joseph Mory <morytyann@gmail.com>
|
||||||
@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=golang/host
|
|||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
PKG_BUILD_FLAGS:=no-mips16
|
PKG_BUILD_FLAGS:=no-mips16
|
||||||
|
|
||||||
PKG_BUILD_VERSION:=alpha-89dfabe
|
PKG_BUILD_VERSION:=alpha-a9ce5da
|
||||||
PKG_BUILD_TIME:=$(shell date -u -Iseconds)
|
PKG_BUILD_TIME:=$(shell date -u -Iseconds)
|
||||||
|
|
||||||
GO_PKG:=github.com/metacubex/mihomo
|
GO_PKG:=github.com/metacubex/mihomo
|
||||||
|
@ -68,6 +68,7 @@ config mixin 'mixin'
|
|||||||
option 'redir_port' '7891'
|
option 'redir_port' '7891'
|
||||||
option 'tproxy_port' '7892'
|
option 'tproxy_port' '7892'
|
||||||
option 'authentication' '1'
|
option 'authentication' '1'
|
||||||
|
option 'tun_device' 'mihomo'
|
||||||
option 'tun_stack' 'system'
|
option 'tun_stack' 'system'
|
||||||
option 'tun_mtu' '9000'
|
option 'tun_mtu' '9000'
|
||||||
option 'tun_gso' '1'
|
option 'tun_gso' '1'
|
||||||
|
@ -10,8 +10,8 @@ USE_PROCD=1
|
|||||||
extra_command 'update_subscription' 'Update subscription by section id'
|
extra_command 'update_subscription' 'Update subscription by section id'
|
||||||
|
|
||||||
boot() {
|
boot() {
|
||||||
# prepare log
|
# prepare files
|
||||||
prepare_log
|
prepare_files
|
||||||
# load config
|
# load config
|
||||||
config_load mihomo
|
config_load mihomo
|
||||||
# start delay
|
# start delay
|
||||||
@ -27,8 +27,8 @@ boot() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
start_service() {
|
start_service() {
|
||||||
# prepare log
|
# prepare files
|
||||||
prepare_log
|
prepare_files
|
||||||
# load config
|
# load config
|
||||||
config_load mihomo
|
config_load mihomo
|
||||||
# check if enabled
|
# check if enabled
|
||||||
@ -53,22 +53,10 @@ start_service() {
|
|||||||
config_get_bool fast_reload "config" "fast_reload" 0
|
config_get_bool fast_reload "config" "fast_reload" 0
|
||||||
## proxy config
|
## proxy config
|
||||||
### transparent proxy
|
### transparent proxy
|
||||||
local transparent_proxy tcp_transparent_proxy_mode udp_transparent_proxy_mode ipv4_dns_hijack ipv6_dns_hijack ipv4_proxy ipv6_proxy router_proxy lan_proxy
|
local tcp_transparent_proxy_mode udp_transparent_proxy_mode
|
||||||
config_get_bool transparent_proxy "proxy" "transparent_proxy" 0
|
config_get_bool transparent_proxy "proxy" "transparent_proxy" 0
|
||||||
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode" "tproxy"
|
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode" "tproxy"
|
||||||
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode" "tproxy"
|
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode" "tproxy"
|
||||||
config_get_bool ipv4_dns_hijack "proxy" "ipv4_dns_hijack" 0
|
|
||||||
config_get_bool ipv6_dns_hijack "proxy" "ipv6_dns_hijack" 0
|
|
||||||
config_get_bool ipv4_proxy "proxy" "ipv4_proxy" 0
|
|
||||||
config_get_bool ipv6_proxy "proxy" "ipv6_proxy" 0
|
|
||||||
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 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 proxy_tcp_dport "proxy" "proxy_tcp_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
|
||||||
@ -96,7 +84,8 @@ start_service() {
|
|||||||
config_get tproxy_port "mixin" "tproxy_port" "7892"
|
config_get tproxy_port "mixin" "tproxy_port" "7892"
|
||||||
config_get_bool authentication "mixin" "authentication" 0
|
config_get_bool authentication "mixin" "authentication" 0
|
||||||
### tun
|
### tun
|
||||||
local tun_stack tun_mtu tun_gso tun_gso_max_size tun_endpoint_independent_nat
|
local tun_device tun_stack tun_mtu tun_gso tun_gso_max_size tun_endpoint_independent_nat
|
||||||
|
config_get tun_device "mixin" "tun_device" "mihomo"
|
||||||
config_get tun_stack "mixin" "tun_stack" "system"
|
config_get tun_stack "mixin" "tun_stack" "system"
|
||||||
config_get tun_mtu "mixin" "tun_mtu" "9000"
|
config_get tun_mtu "mixin" "tun_mtu" "9000"
|
||||||
config_get_bool tun_gso "mixin" "tun_gso" 0
|
config_get_bool tun_gso "mixin" "tun_gso" 0
|
||||||
@ -186,7 +175,7 @@ start_service() {
|
|||||||
log_level="$log_level" ipv6="$ipv6" \
|
log_level="$log_level" ipv6="$ipv6" \
|
||||||
ui_path="ui" ui_name="$ui_name" ui_url="$ui_url" api_listen="0.0.0.0:$api_port" api_secret="$api_secret" \
|
ui_path="ui" ui_name="$ui_name" ui_url="$ui_url" api_listen="0.0.0.0:$api_port" api_secret="$api_secret" \
|
||||||
allow_lan="$allow_lan" http_port="$http_port" socks_port="$socks_port" mixed_port="$mixed_port" redir_port="$redir_port" tproxy_port="$tproxy_port" \
|
allow_lan="$allow_lan" http_port="$http_port" socks_port="$socks_port" mixed_port="$mixed_port" redir_port="$redir_port" tproxy_port="$tproxy_port" \
|
||||||
tun_enable="$tun_enable" tun_stack="$tun_stack" tun_device="$TUN_DEVICE" tun_mtu="$tun_mtu" tun_gso="$tun_gso" tun_gso_max_size="$tun_gso_max_size" tun_endpoint_independent_nat="$tun_endpoint_independent_nat" \
|
tun_enable="$tun_enable" tun_stack="$tun_stack" tun_device="$tun_device" tun_mtu="$tun_mtu" tun_gso="$tun_gso" tun_gso_max_size="$tun_gso_max_size" tun_endpoint_independent_nat="$tun_endpoint_independent_nat" \
|
||||||
dns_enable="true" dns_listen="0.0.0.0:$dns_port" dns_mode="$dns_mode" fake_ip_range="$fake_ip_range" \
|
dns_enable="true" dns_listen="0.0.0.0:$dns_port" dns_mode="$dns_mode" fake_ip_range="$fake_ip_range" \
|
||||||
yq -M -i '
|
yq -M -i '
|
||||||
.log-level = strenv(log_level) | .ipv6 = env(ipv6) == 1 |
|
.log-level = strenv(log_level) | .ipv6 = env(ipv6) == 1 |
|
||||||
@ -202,7 +191,7 @@ start_service() {
|
|||||||
log_level="$log_level" mode="$mode" match_process="$match_process" tcp_keep_alive_idle="$tcp_keep_alive_idle" tcp_keep_alive_interval="$tcp_keep_alive_interval" ipv6="$ipv6" \
|
log_level="$log_level" mode="$mode" match_process="$match_process" tcp_keep_alive_idle="$tcp_keep_alive_idle" tcp_keep_alive_interval="$tcp_keep_alive_interval" ipv6="$ipv6" \
|
||||||
ui_path="ui" ui_name="$ui_name" ui_url="$ui_url" api_listen="0.0.0.0:$api_port" api_secret="$api_secret" selection_cache="$selection_cache" \
|
ui_path="ui" ui_name="$ui_name" ui_url="$ui_url" api_listen="0.0.0.0:$api_port" api_secret="$api_secret" selection_cache="$selection_cache" \
|
||||||
allow_lan="$allow_lan" http_port="$http_port" socks_port="$socks_port" mixed_port="$mixed_port" redir_port="$redir_port" tproxy_port="$tproxy_port" \
|
allow_lan="$allow_lan" http_port="$http_port" socks_port="$socks_port" mixed_port="$mixed_port" redir_port="$redir_port" tproxy_port="$tproxy_port" \
|
||||||
tun_enable="$tun_enable" tun_stack="$tun_stack" tun_device="$TUN_DEVICE" tun_mtu="$tun_mtu" tun_gso="$tun_gso" tun_gso_max_size="$tun_gso_max_size" tun_endpoint_independent_nat="$tun_endpoint_independent_nat" \
|
tun_enable="$tun_enable" tun_stack="$tun_stack" tun_device="$tun_device" tun_mtu="$tun_mtu" tun_gso="$tun_gso" tun_gso_max_size="$tun_gso_max_size" tun_endpoint_independent_nat="$tun_endpoint_independent_nat" \
|
||||||
dns_enable="true" dns_listen="0.0.0.0:$dns_port" dns_mode="$dns_mode" fake_ip_range="$fake_ip_range" fake_ip_cache="$fake_ip_cache" \
|
dns_enable="true" dns_listen="0.0.0.0:$dns_port" dns_mode="$dns_mode" fake_ip_range="$fake_ip_range" fake_ip_cache="$fake_ip_cache" \
|
||||||
dns_respect_rules="$dns_respect_rules" dns_doh_prefer_http3="$dns_doh_prefer_http3" dns_ipv6="$dns_ipv6" dns_system_hosts="$dns_system_hosts" dns_hosts="$dns_hosts" \
|
dns_respect_rules="$dns_respect_rules" dns_doh_prefer_http3="$dns_doh_prefer_http3" dns_ipv6="$dns_ipv6" dns_system_hosts="$dns_system_hosts" dns_hosts="$dns_hosts" \
|
||||||
geoip_format="$geoip_format" geodata_loader="$geodata_loader" geosite_url="$geosite_url" geoip_mmdb_url="$geoip_mmdb_url" geoip_dat_url="$geoip_dat_url" geoip_asn_url="$geoip_asn_url" \
|
geoip_format="$geoip_format" geodata_loader="$geodata_loader" geosite_url="$geosite_url" geoip_mmdb_url="$geoip_mmdb_url" geoip_dat_url="$geoip_dat_url" geoip_asn_url="$geoip_asn_url" \
|
||||||
@ -285,164 +274,239 @@ start_service() {
|
|||||||
procd_set_param limits nofile="1048576 1048576"
|
procd_set_param limits nofile="1048576 1048576"
|
||||||
|
|
||||||
procd_close_instance
|
procd_close_instance
|
||||||
# transparent proxy
|
|
||||||
if [ "$transparent_proxy" == 1 ]; then
|
|
||||||
log "Transparent Proxy" "Enabled."
|
|
||||||
log "Transparent Proxy" "TCP Mode: $tcp_transparent_proxy_mode."
|
|
||||||
log "Transparent Proxy" "UDP Mode: $udp_transparent_proxy_mode."
|
|
||||||
# prepare
|
|
||||||
if [ "$tproxy_enable" == 1 ]; then
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
ip route add local default dev lo table "$TPROXY_ROUTE_TABLE"
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
ip -6 route add local default dev lo table "$TPROXY_ROUTE_TABLE"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$tun_enable" == 1 ]; then
|
|
||||||
ip tuntap add dev "$TUN_DEVICE" mode tun vnet_hdr
|
|
||||||
ip link set "$TUN_DEVICE" up
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
ip route add unicast default dev "$TUN_DEVICE" table "$TUN_ROUTE_TABLE"
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
ip -6 route add unicast default dev "$TUN_DEVICE" table "$TUN_ROUTE_TABLE"
|
|
||||||
fi
|
|
||||||
$FIREWALL_INCLUDE_SH
|
|
||||||
fi
|
|
||||||
local tcp_route_table
|
|
||||||
if [ "$tcp_transparent_proxy_mode" == "tproxy" ]; then
|
|
||||||
tcp_route_table="$TPROXY_ROUTE_TABLE"
|
|
||||||
elif [ "$tcp_transparent_proxy_mode" == "tun" ]; then
|
|
||||||
tcp_route_table="$TUN_ROUTE_TABLE"
|
|
||||||
fi
|
|
||||||
if [ -n "$tcp_route_table" ]; then
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
ip rule add pref "$TCP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto tcp table "$tcp_route_table"
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
ip -6 rule add pref "$TCP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto tcp table "$tcp_route_table"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
local udp_route_table
|
|
||||||
if [ "$udp_transparent_proxy_mode" == "tproxy" ]; then
|
|
||||||
udp_route_table="$TPROXY_ROUTE_TABLE"
|
|
||||||
elif [ "$udp_transparent_proxy_mode" == "tun" ]; then
|
|
||||||
udp_route_table="$TUN_ROUTE_TABLE"
|
|
||||||
fi
|
|
||||||
if [ -n "$udp_route_table" ]; then
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
ip rule add pref "$UDP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto udp table "$udp_route_table"
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
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 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"
|
|
||||||
# dns hijack
|
|
||||||
if [ "$ipv4_dns_hijack" == 1 ]; then
|
|
||||||
log "Transparent Proxy" "Hijack IPv4 dns request."
|
|
||||||
nft add element inet "$FW_TABLE" dns_hijack_nfproto \{ ipv4 \}
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_dns_hijack" == 1 ]; then
|
|
||||||
log "Transparent Proxy" "Hijack IPv6 dns request."
|
|
||||||
nft add element inet "$FW_TABLE" dns_hijack_nfproto \{ ipv6 \}
|
|
||||||
fi
|
|
||||||
# proxy
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
log "Transparent Proxy" "Proxy IPv4 traffic."
|
|
||||||
nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv4 \}
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
log "Transparent Proxy" "Proxy IPv6 traffic."
|
|
||||||
nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv6 \}
|
|
||||||
fi
|
|
||||||
# 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."
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
nft -f "$GEOIP_CN_NFT"
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
nft -f "$GEOIP6_CN_NFT"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
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 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
|
|
||||||
log "Transparent Proxy" "Set proxy for router."
|
|
||||||
if [ "$tcp_transparent_proxy_mode" == "redirect" ]; then
|
|
||||||
nft insert rule inet "$FW_TABLE" nat_output jump router_dns_hijack
|
|
||||||
nft add rule inet "$FW_TABLE" nat_output meta l4proto tcp jump router_${tcp_transparent_proxy_mode}
|
|
||||||
else
|
|
||||||
nft flush chain inet "$FW_TABLE" nat_output
|
|
||||||
nft add rule inet "$FW_TABLE" nat_output jump router_dns_hijack
|
|
||||||
nft add rule inet "$FW_TABLE" mangle_output meta l4proto tcp jump router_reroute
|
|
||||||
fi
|
|
||||||
nft add rule inet "$FW_TABLE" mangle_output meta l4proto udp jump router_reroute
|
|
||||||
fi
|
|
||||||
# lan proxy
|
|
||||||
if [ "$lan_proxy" == 1 ]; then
|
|
||||||
log "Transparent Proxy" "Set proxy for lan."
|
|
||||||
# access control
|
|
||||||
if [ "$access_control_mode" == "all" ]; then
|
|
||||||
log "Transparent Proxy" "Access Control is using all mode, set proxy for all client."
|
|
||||||
elif [ "$access_control_mode" == "allow" ]; then
|
|
||||||
log "Transparent Proxy" "Access Control is using allow mode, set proxy for client which is in acl."
|
|
||||||
elif [ "$access_control_mode" == "block" ]; then
|
|
||||||
log "Transparent Proxy" "Access Control is using block mode, set proxy for client which is not in acl."
|
|
||||||
fi
|
|
||||||
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}"
|
|
||||||
else
|
|
||||||
nft flush chain inet "$FW_TABLE" dstnat
|
|
||||||
nft add rule inet "$FW_TABLE" dstnat jump "${access_control_mode}_dns_hijack"
|
|
||||||
nft add rule inet "$FW_TABLE" mangle_prerouting meta l4proto tcp jump "${access_control_mode}_${tcp_transparent_proxy_mode}"
|
|
||||||
fi
|
|
||||||
nft add rule inet "$FW_TABLE" mangle_prerouting meta l4proto udp jump "${access_control_mode}_${udp_transparent_proxy_mode}"
|
|
||||||
fi
|
|
||||||
# fix compatible between tproxy and dockerd (kmod-br-netfilter)
|
|
||||||
if [ "$tproxy_enable" == 1 ] && (lsmod | grep -q br_netfilter); then
|
|
||||||
if [ "$ipv4_proxy" == 1 ]; then
|
|
||||||
local bridge_nf_call_iptables; bridge_nf_call_iptables=$(sysctl -e -n net.bridge.bridge-nf-call-iptables)
|
|
||||||
if [ "$bridge_nf_call_iptables" == 1 ]; then
|
|
||||||
touch /tmp/bridge_nf_call_iptables.flag
|
|
||||||
sysctl -q -w net.bridge.bridge-nf-call-iptables=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
if [ "$ipv6_proxy" == 1 ]; then
|
|
||||||
local bridge_nf_call_ip6tables; bridge_nf_call_ip6tables=$(sysctl -e -n net.bridge.bridge-nf-call-ip6tables)
|
|
||||||
if [ "$bridge_nf_call_ip6tables" == 1 ]; then
|
|
||||||
touch /tmp/bridge_nf_call_ip6tables.flag
|
|
||||||
sysctl -q -w net.bridge.bridge-nf-call-ip6tables=0
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
# cron
|
# cron
|
||||||
if [[ "$scheduled_restart" == 1 && -n "$cron_expression" ]]; then
|
if [[ "$scheduled_restart" == 1 && -n "$cron_expression" ]]; then
|
||||||
log "App" "Set scheduled restart."
|
log "App" "Set scheduled restart."
|
||||||
echo "$cron_expression /etc/init.d/mihomo restart #mihomo" >> "/etc/crontabs/root"
|
echo "$cron_expression /etc/init.d/mihomo restart #mihomo" >> "/etc/crontabs/root"
|
||||||
/etc/init.d/cron restart
|
/etc/init.d/cron restart
|
||||||
fi
|
fi
|
||||||
log "App" "Start Successful."
|
# set started flag
|
||||||
|
touch "$STARTED_FLAG"
|
||||||
|
}
|
||||||
|
|
||||||
|
service_started() {
|
||||||
|
# check if started
|
||||||
|
if [ ! -f "$STARTED_FLAG" ]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# load config
|
||||||
|
config_load mihomo
|
||||||
|
# check if transparent proxy enabled
|
||||||
|
local transparent_proxy
|
||||||
|
config_get_bool transparent_proxy "proxy" "transparent_proxy" 0
|
||||||
|
if [ "$transparent_proxy" == 0 ]; then
|
||||||
|
log "Transparent Proxy" "Disabled."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
# get config
|
||||||
|
### inbound
|
||||||
|
local http_port socks_port mixed_port redir_port tproxy_port
|
||||||
|
config_get http_port "mixin" "http_port" "8080"
|
||||||
|
config_get socks_port "mixin" "socks_port" "1080"
|
||||||
|
config_get mixed_port "mixin" "mixed_port" "7890"
|
||||||
|
config_get redir_port "mixin" "redir_port" "7891"
|
||||||
|
config_get tproxy_port "mixin" "tproxy_port" "7892"
|
||||||
|
### dns
|
||||||
|
local dns_port fake_ip_range
|
||||||
|
config_get dns_port "mixin" "dns_port" "1053"
|
||||||
|
config_get fake_ip_range "mixin" "fake_ip_range" "198.18.0.1/16"
|
||||||
|
### tun
|
||||||
|
local tun_device
|
||||||
|
config_get tun_device "mixin" "tun_device" "mihomo"
|
||||||
|
## proxy config
|
||||||
|
### transparent proxy
|
||||||
|
local tcp_transparent_proxy_mode udp_transparent_proxy_mode ipv4_dns_hijack ipv6_dns_hijack ipv4_proxy ipv6_proxy router_proxy lan_proxy
|
||||||
|
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode" "redirect"
|
||||||
|
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode" "tun"
|
||||||
|
config_get_bool ipv4_dns_hijack "proxy" "ipv4_dns_hijack" 0
|
||||||
|
config_get_bool ipv6_dns_hijack "proxy" "ipv6_dns_hijack" 0
|
||||||
|
config_get_bool ipv4_proxy "proxy" "ipv4_proxy" 0
|
||||||
|
config_get_bool ipv6_proxy "proxy" "ipv6_proxy" 0
|
||||||
|
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 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 proxy_tcp_dport "proxy" "proxy_tcp_dport" "0-65535"
|
||||||
|
config_get proxy_udp_dport "proxy" "proxy_udp_dport" "0-65535"
|
||||||
|
# prepare
|
||||||
|
local tproxy_enable; tproxy_enable=0
|
||||||
|
if [[ "$tcp_transparent_proxy_mode" == "tproxy" || "$udp_transparent_proxy_mode" == "tproxy" ]]; then
|
||||||
|
tproxy_enable=1
|
||||||
|
fi
|
||||||
|
local tun_enable; tun_enable=0
|
||||||
|
if [[ "$tcp_transparent_proxy_mode" == "tun" || "$udp_transparent_proxy_mode" == "tun" ]]; then
|
||||||
|
tun_enable=1
|
||||||
|
fi
|
||||||
|
# transparent proxy
|
||||||
|
log "Transparent Proxy" "Enabled."
|
||||||
|
log "Transparent Proxy" "TCP Mode: $tcp_transparent_proxy_mode."
|
||||||
|
log "Transparent Proxy" "UDP Mode: $udp_transparent_proxy_mode."
|
||||||
|
# wait for tun device online
|
||||||
|
if [ "$tun_enable" == 1 ]; then
|
||||||
|
log "Transparent Proxy" "Waiting for tun device online..."
|
||||||
|
local tun_timeout; tun_timeout=60
|
||||||
|
local tun_interval; tun_interval=1
|
||||||
|
while [ "$tun_timeout" -gt 0 ]; do
|
||||||
|
if (ip link show dev "$tun_device" > /dev/null 2>&1); then
|
||||||
|
if [ $(ip -json addr show dev mihomo | yq '.[] | select(.ifname = "mihomo") | .addr_info | length') -gt 0 ]; then
|
||||||
|
log "Transparent Proxy" "Tun device is online."
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
tun_timeout=$((tun_timeout - tun_interval))
|
||||||
|
sleep "$tun_interval"
|
||||||
|
done
|
||||||
|
if [ "$tun_timeout" -le 0 ]; then
|
||||||
|
log "Transparent Proxy" "Waiting timeout, tun device is not online."
|
||||||
|
log "App" "Exit."
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# prepare
|
||||||
|
if [ "$tproxy_enable" == 1 ]; then
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
ip -4 route add local default dev lo table "$TPROXY_ROUTE_TABLE"
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
ip -6 route add local default dev lo table "$TPROXY_ROUTE_TABLE"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$tun_enable" == 1 ]; then
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
ip -4 route add unicast default dev "$tun_device" table "$TUN_ROUTE_TABLE"
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
ip -6 route add unicast default dev "$tun_device" table "$TUN_ROUTE_TABLE"
|
||||||
|
fi
|
||||||
|
$FIREWALL_INCLUDE_SH
|
||||||
|
fi
|
||||||
|
local tcp_route_table
|
||||||
|
if [ "$tcp_transparent_proxy_mode" == "tproxy" ]; then
|
||||||
|
tcp_route_table="$TPROXY_ROUTE_TABLE"
|
||||||
|
elif [ "$tcp_transparent_proxy_mode" == "tun" ]; then
|
||||||
|
tcp_route_table="$TUN_ROUTE_TABLE"
|
||||||
|
fi
|
||||||
|
if [ -n "$tcp_route_table" ]; then
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
ip -4 rule add pref "$TCP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto tcp table "$tcp_route_table"
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
ip -6 rule add pref "$TCP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto tcp table "$tcp_route_table"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
local udp_route_table
|
||||||
|
if [ "$udp_transparent_proxy_mode" == "tproxy" ]; then
|
||||||
|
udp_route_table="$TPROXY_ROUTE_TABLE"
|
||||||
|
elif [ "$udp_transparent_proxy_mode" == "tun" ]; then
|
||||||
|
udp_route_table="$TUN_ROUTE_TABLE"
|
||||||
|
fi
|
||||||
|
if [ -n "$udp_route_table" ]; then
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
ip -4 rule add pref "$UDP_RULE_PREF" fwmark "$FW_MARK/$FW_MARK_MASK" ipproto udp table "$udp_route_table"
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
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 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"
|
||||||
|
# dns hijack
|
||||||
|
if [ "$ipv4_dns_hijack" == 1 ]; then
|
||||||
|
log "Transparent Proxy" "Hijack IPv4 dns request."
|
||||||
|
nft add element inet "$FW_TABLE" dns_hijack_nfproto \{ ipv4 \}
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_dns_hijack" == 1 ]; then
|
||||||
|
log "Transparent Proxy" "Hijack IPv6 dns request."
|
||||||
|
nft add element inet "$FW_TABLE" dns_hijack_nfproto \{ ipv6 \}
|
||||||
|
fi
|
||||||
|
# proxy
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
log "Transparent Proxy" "Proxy IPv4 traffic."
|
||||||
|
nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv4 \}
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
log "Transparent Proxy" "Proxy IPv6 traffic."
|
||||||
|
nft add element inet "$FW_TABLE" proxy_nfproto \{ ipv6 \}
|
||||||
|
fi
|
||||||
|
# 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."
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
nft -f "$GEOIP_CN_NFT"
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
nft -f "$GEOIP6_CN_NFT"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
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 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
|
||||||
|
log "Transparent Proxy" "Set proxy for router."
|
||||||
|
if [ "$tcp_transparent_proxy_mode" == "redirect" ]; then
|
||||||
|
nft insert rule inet "$FW_TABLE" nat_output jump router_dns_hijack
|
||||||
|
nft add rule inet "$FW_TABLE" nat_output meta l4proto tcp jump router_${tcp_transparent_proxy_mode}
|
||||||
|
else
|
||||||
|
nft flush chain inet "$FW_TABLE" nat_output
|
||||||
|
nft add rule inet "$FW_TABLE" nat_output jump router_dns_hijack
|
||||||
|
nft add rule inet "$FW_TABLE" mangle_output meta l4proto tcp jump router_reroute
|
||||||
|
fi
|
||||||
|
nft add rule inet "$FW_TABLE" mangle_output meta l4proto udp jump router_reroute
|
||||||
|
fi
|
||||||
|
# lan proxy
|
||||||
|
if [ "$lan_proxy" == 1 ]; then
|
||||||
|
log "Transparent Proxy" "Set proxy for lan."
|
||||||
|
# access control
|
||||||
|
if [ "$access_control_mode" == "all" ]; then
|
||||||
|
log "Transparent Proxy" "Access Control is using all mode, set proxy for all client."
|
||||||
|
elif [ "$access_control_mode" == "allow" ]; then
|
||||||
|
log "Transparent Proxy" "Access Control is using allow mode, set proxy for client which is in acl."
|
||||||
|
elif [ "$access_control_mode" == "block" ]; then
|
||||||
|
log "Transparent Proxy" "Access Control is using block mode, set proxy for client which is not in acl."
|
||||||
|
fi
|
||||||
|
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}"
|
||||||
|
else
|
||||||
|
nft flush chain inet "$FW_TABLE" dstnat
|
||||||
|
nft add rule inet "$FW_TABLE" dstnat jump "${access_control_mode}_dns_hijack"
|
||||||
|
nft add rule inet "$FW_TABLE" mangle_prerouting meta l4proto tcp jump "${access_control_mode}_${tcp_transparent_proxy_mode}"
|
||||||
|
fi
|
||||||
|
nft add rule inet "$FW_TABLE" mangle_prerouting meta l4proto udp jump "${access_control_mode}_${udp_transparent_proxy_mode}"
|
||||||
|
fi
|
||||||
|
# fix compatible between tproxy and dockerd (kmod-br-netfilter)
|
||||||
|
if [ "$tproxy_enable" == 1 ] && (lsmod | grep -q br_netfilter); then
|
||||||
|
if [ "$ipv4_proxy" == 1 ]; then
|
||||||
|
local bridge_nf_call_iptables; bridge_nf_call_iptables=$(sysctl -e -n net.bridge.bridge-nf-call-iptables)
|
||||||
|
if [ "$bridge_nf_call_iptables" == 1 ]; then
|
||||||
|
touch "$BRIDGE_NF_CALL_IPTABLES_FLAG"
|
||||||
|
sysctl -q -w net.bridge.bridge-nf-call-iptables=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$ipv6_proxy" == 1 ]; then
|
||||||
|
local bridge_nf_call_ip6tables; bridge_nf_call_ip6tables=$(sysctl -e -n net.bridge.bridge-nf-call-ip6tables)
|
||||||
|
if [ "$bridge_nf_call_ip6tables" == 1 ]; then
|
||||||
|
touch "$BRIDGE_NF_CALL_IP6TABLES_FLAG"
|
||||||
|
sysctl -q -w net.bridge.bridge-nf-call-ip6tables=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
service_stopped() {
|
service_stopped() {
|
||||||
@ -462,22 +526,19 @@ cleanup() {
|
|||||||
# clear log
|
# clear log
|
||||||
clear_log
|
clear_log
|
||||||
# delete routing policy
|
# delete routing policy
|
||||||
ip rule del ipproto tcp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
ip -4 rule del ipproto tcp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip rule del ipproto udp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
ip -4 rule del ipproto udp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip rule del ipproto tcp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
ip -4 rule del ipproto tcp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip rule del ipproto udp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
ip -4 rule del ipproto udp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip -6 rule del ipproto tcp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
ip -6 rule del ipproto tcp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip -6 rule del ipproto udp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
ip -6 rule del ipproto udp table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip -6 rule del ipproto tcp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
ip -6 rule del ipproto tcp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip -6 rule del ipproto udp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
ip -6 rule del ipproto udp table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
# delete routing table
|
# delete routing table
|
||||||
ip route flush table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
ip -4 route flush table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip route flush table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
ip -4 route flush table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip -6 route flush table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
ip -6 route flush table "$TPROXY_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
ip -6 route flush table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
ip -6 route flush table "$TUN_ROUTE_TABLE" > /dev/null 2>&1
|
||||||
# delete tun
|
|
||||||
ip link set "$TUN_DEVICE" down > /dev/null 2>&1
|
|
||||||
ip tuntap del dev "$TUN_DEVICE" mode tun > /dev/null 2>&1
|
|
||||||
# delete hijack
|
# delete hijack
|
||||||
nft delete table inet "$FW_TABLE" > /dev/null 2>&1
|
nft delete table inet "$FW_TABLE" > /dev/null 2>&1
|
||||||
local handles handle
|
local handles handle
|
||||||
@ -489,13 +550,15 @@ cleanup() {
|
|||||||
for handle in $handles; do
|
for handle in $handles; do
|
||||||
nft delete rule inet fw4 forward handle "$handle"
|
nft delete rule inet fw4 forward handle "$handle"
|
||||||
done
|
done
|
||||||
|
# delete started flag
|
||||||
|
rm -f "$STARTED_FLAG"
|
||||||
# revert fix compatible between tproxy and dockerd (kmod-br-netfilter)
|
# revert fix compatible between tproxy and dockerd (kmod-br-netfilter)
|
||||||
if [ -f "/tmp/bridge_nf_call_iptables.flag" ]; then
|
if [ -f "$BRIDGE_NF_CALL_IPTABLES_FLAG" ]; then
|
||||||
rm -f /tmp/bridge_nf_call_iptables.flag
|
rm -f "$BRIDGE_NF_CALL_IPTABLES_FLAG"
|
||||||
sysctl -q -w net.bridge.bridge-nf-call-iptables=1
|
sysctl -q -w net.bridge.bridge-nf-call-iptables=1
|
||||||
fi
|
fi
|
||||||
if [ -f "/tmp/bridge_nf_call_ip6tables.flag" ]; then
|
if [ -f "$BRIDGE_NF_CALL_IP6TABLES_FLAG" ]; then
|
||||||
rm -f /tmp/bridge_nf_call_ip6tables.flag
|
rm -f "$BRIDGE_NF_CALL_IP6TABLES_FLAG"
|
||||||
sysctl -q -w net.bridge.bridge-nf-call-ip6tables=1
|
sysctl -q -w net.bridge.bridge-nf-call-ip6tables=1
|
||||||
fi
|
fi
|
||||||
# delete cron
|
# delete cron
|
||||||
@ -503,27 +566,6 @@ cleanup() {
|
|||||||
/etc/init.d/cron restart
|
/etc/init.d/cron restart
|
||||||
}
|
}
|
||||||
|
|
||||||
prepare_log() {
|
|
||||||
if [ ! -d "$LOG_DIR" ]; then
|
|
||||||
mkdir -p "$LOG_DIR"
|
|
||||||
fi
|
|
||||||
if [ ! -f "$APP_LOG_PATH" ]; then
|
|
||||||
touch "$APP_LOG_PATH"
|
|
||||||
fi
|
|
||||||
if [ ! -f "$CORE_LOG_PATH" ]; then
|
|
||||||
touch "$CORE_LOG_PATH"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
clear_log() {
|
|
||||||
echo -n > "$APP_LOG_PATH"
|
|
||||||
echo -n > "$CORE_LOG_PATH"
|
|
||||||
}
|
|
||||||
|
|
||||||
log() {
|
|
||||||
echo "[$(date "+%Y-%m-%d %H:%M:%S")] [$1] $2" >> "$APP_LOG_PATH"
|
|
||||||
}
|
|
||||||
|
|
||||||
mixin_authentications() {
|
mixin_authentications() {
|
||||||
local section="$1"
|
local section="$1"
|
||||||
|
|
||||||
|
@ -170,7 +170,7 @@ table inet mihomo {
|
|||||||
|
|
||||||
chain dstnat {
|
chain dstnat {
|
||||||
type nat hook prerouting priority dstnat + 1; policy accept;
|
type nat hook prerouting priority dstnat + 1; policy accept;
|
||||||
fib daddr type local counter return
|
fib daddr type { local, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
ip6 daddr @reserved_ip6 counter return
|
ip6 daddr @reserved_ip6 counter return
|
||||||
@ -184,7 +184,7 @@ table inet mihomo {
|
|||||||
type nat hook output priority filter; policy accept;
|
type nat hook output priority filter; policy accept;
|
||||||
meta skuid @bypass_user counter return
|
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, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
ip6 daddr @reserved_ip6 counter return
|
ip6 daddr @reserved_ip6 counter return
|
||||||
@ -198,7 +198,7 @@ table inet mihomo {
|
|||||||
type filter hook prerouting priority mangle; policy accept;
|
type filter hook prerouting priority mangle; policy accept;
|
||||||
meta l4proto { tcp, udp } iifname lo meta mark & $FW_MARK_MASK == $FW_MARK tproxy to :$TPROXY_PORT counter accept
|
meta l4proto { tcp, udp } iifname lo meta mark & $FW_MARK_MASK == $FW_MARK tproxy to :$TPROXY_PORT counter accept
|
||||||
meta l4proto { tcp, udp } iifname $TUN_DEVICE counter accept
|
meta l4proto { tcp, udp } iifname $TUN_DEVICE counter accept
|
||||||
fib daddr type local counter return
|
fib daddr type { local, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
ip6 daddr @reserved_ip6 counter return
|
ip6 daddr @reserved_ip6 counter return
|
||||||
@ -213,7 +213,7 @@ table inet mihomo {
|
|||||||
type route hook output priority mangle; policy accept;
|
type route hook output priority mangle; policy accept;
|
||||||
meta skuid @bypass_user counter return
|
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, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
ip6 daddr @reserved_ip6 counter return
|
ip6 daddr @reserved_ip6 counter return
|
||||||
|
@ -7,11 +7,12 @@ config_load mihomo
|
|||||||
config_get enabled "config" "enabled" 0
|
config_get enabled "config" "enabled" 0
|
||||||
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode"
|
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode"
|
||||||
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode"
|
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode"
|
||||||
|
config_get tun_device "mixin" "tun_device"
|
||||||
|
|
||||||
if [ "$enabled" == 1 ] && [[ "$tcp_transparent_proxy_mode" == "tun" || "$udp_transparent_proxy_mode" == "tun" ]]; then
|
if [ "$enabled" == 1 ] && [[ "$tcp_transparent_proxy_mode" == "tun" || "$udp_transparent_proxy_mode" == "tun" ]]; then
|
||||||
nft insert rule inet fw4 input iifname "$TUN_DEVICE" counter accept comment "mihomo"
|
nft insert rule inet fw4 input iifname "$tun_device" counter accept comment "mihomo"
|
||||||
nft insert rule inet fw4 forward oifname "$TUN_DEVICE" counter accept comment "mihomo"
|
nft insert rule inet fw4 forward oifname "$tun_device" counter accept comment "mihomo"
|
||||||
nft insert rule inet fw4 forward iifname "$TUN_DEVICE" counter accept comment "mihomo"
|
nft insert rule inet fw4 forward iifname "$tun_device" counter accept comment "mihomo"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
@ -12,7 +12,6 @@ TCP_RULE_PREF="1024"
|
|||||||
UDP_RULE_PREF="1025"
|
UDP_RULE_PREF="1025"
|
||||||
TPROXY_ROUTE_TABLE="80"
|
TPROXY_ROUTE_TABLE="80"
|
||||||
TUN_ROUTE_TABLE="81"
|
TUN_ROUTE_TABLE="81"
|
||||||
TUN_DEVICE="mihomo"
|
|
||||||
|
|
||||||
# paths
|
# paths
|
||||||
PROG="/usr/bin/mihomo"
|
PROG="/usr/bin/mihomo"
|
||||||
@ -23,10 +22,18 @@ MIXIN_FILE_PATH="$HOME_DIR/mixin.yaml"
|
|||||||
RUN_DIR="$HOME_DIR/run"
|
RUN_DIR="$HOME_DIR/run"
|
||||||
RUN_PROFILE_PATH="$RUN_DIR/config.yaml"
|
RUN_PROFILE_PATH="$RUN_DIR/config.yaml"
|
||||||
RUN_UI_DIR="$RUN_DIR/ui"
|
RUN_UI_DIR="$RUN_DIR/ui"
|
||||||
|
|
||||||
|
# log
|
||||||
LOG_DIR="/var/log/mihomo"
|
LOG_DIR="/var/log/mihomo"
|
||||||
APP_LOG_PATH="$LOG_DIR/app.log"
|
APP_LOG_PATH="$LOG_DIR/app.log"
|
||||||
CORE_LOG_PATH="$LOG_DIR/core.log"
|
CORE_LOG_PATH="$LOG_DIR/core.log"
|
||||||
|
|
||||||
|
# flag
|
||||||
|
FLAG_DIR="/var/run/mihomo"
|
||||||
|
STARTED_FLAG="$FLAG_DIR/started.flag"
|
||||||
|
BRIDGE_NF_CALL_IPTABLES_FLAG="$FLAG_DIR/bridge_nf_call_iptables.flag"
|
||||||
|
BRIDGE_NF_CALL_IP6TABLES_FLAG="$FLAG_DIR/bridge_nf_call_ip6tables.flag"
|
||||||
|
|
||||||
# scripts
|
# scripts
|
||||||
SH_DIR="$HOME_DIR/scripts"
|
SH_DIR="$HOME_DIR/scripts"
|
||||||
INCLUDE_SH="$SH_DIR/include.sh"
|
INCLUDE_SH="$SH_DIR/include.sh"
|
||||||
@ -64,3 +71,27 @@ format_filesize() {
|
|||||||
echo "$(awk "BEGIN {print $size / $pb}") PB"
|
echo "$(awk "BEGIN {print $size / $pb}") PB"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
prepare_files() {
|
||||||
|
if [ ! -d "$LOG_DIR" ]; then
|
||||||
|
mkdir -p "$LOG_DIR"
|
||||||
|
fi
|
||||||
|
if [ ! -f "$APP_LOG_PATH" ]; then
|
||||||
|
touch "$APP_LOG_PATH"
|
||||||
|
fi
|
||||||
|
if [ ! -f "$CORE_LOG_PATH" ]; then
|
||||||
|
touch "$CORE_LOG_PATH"
|
||||||
|
fi
|
||||||
|
if [ ! -d "$FLAG_DIR" ]; then
|
||||||
|
mkdir -p "$FLAG_DIR"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
clear_log() {
|
||||||
|
echo -n > "$APP_LOG_PATH"
|
||||||
|
echo -n > "$CORE_LOG_PATH"
|
||||||
|
}
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "[$(date "+%Y-%m-%d %H:%M:%S")] [$1] $2" >> "$APP_LOG_PATH"
|
||||||
|
}
|
||||||
|
@ -50,6 +50,9 @@ env=$(uci -q get mihomo.env); [ -z "$env" ] && {
|
|||||||
uci set mihomo.env.disable_quic_go_ecn=0
|
uci set mihomo.env.disable_quic_go_ecn=0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# since v1.15.0
|
||||||
|
tun_device=$(uci -q get mihomo.mixin.tun_device); [ -z "$tun_device" ] && uci set mihomo.mixin.tun_device=mihomo
|
||||||
|
|
||||||
# commit
|
# commit
|
||||||
uci commit mihomo
|
uci commit mihomo
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user