update 2024-12-17 16:29:49

This commit is contained in:
kenzok8 2024-12-17 16:29:49 +08:00
parent 18f5c2ade0
commit a150e20c22
17 changed files with 1117 additions and 1022 deletions

View File

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

View File

@ -0,0 +1,148 @@
'use strict';
'require form';
'require view';
'require uci';
'require poll';
'require tools.mihomo as mihomo';
function renderStatus(running) {
return updateStatus(E('input', { id: 'core_status', style: 'border: unset; font-style: italic; font-weight: bold;', readonly: '' }), running);
}
function updateStatus(element, running) {
if (element) {
element.style.color = running ? 'green' : 'red';
element.value = running ? _('Running') : _('Not Running');
}
return element;
}
return view.extend({
load: function () {
return Promise.all([
uci.load('mihomo'),
mihomo.appVersion(),
mihomo.coreVersion(),
mihomo.status(),
mihomo.listProfiles()
]);
},
render: function (data) {
const subscriptions = uci.sections('mihomo', 'subscription');
const appVersion = data[1];
const coreVersion = data[2];
const running = data[3];
const profiles = data[4];
let m, s, o;
m = new form.Map('mihomo', _('MihomoTProxy'), `${_('Transparent Proxy with Mihomo on OpenWrt.')} <a href="https://github.com/morytyann/OpenWrt-mihomo/wiki" target="_blank">${_('How To Use')}</a>`);
s = m.section(form.NamedSection, 'status', 'status', _('Status'));
o = s.option(form.Value, '_app_version', _('App Version'));
o.readonly = true;
o.load = function () {
return appVersion.trim();
};
o.write = function () { };
o = s.option(form.Value, '_core_version', _('Core Version'));
o.readonly = true;
o.load = function () {
return coreVersion.trim();
};
o.write = function () { };
o = s.option(form.DummyValue, '_core_status', _('Core Status'));
o.cfgvalue = function () {
return renderStatus(running);
};
poll.add(function () {
return L.resolveDefault(mihomo.status()).then(function (running) {
updateStatus(document.getElementById('core_status'), running);
});
});
o = s.option(form.Button, 'reload', '-');
o.inputstyle = 'action';
o.inputtitle = _('Reload Service');
o.onclick = function () {
return mihomo.reload();
};
o = s.option(form.Button, 'restart', '-');
o.inputstyle = 'negative';
o.inputtitle = _('Restart Service');
o.onclick = function () {
return mihomo.restart();
};
o = s.option(form.Button, 'update_dashboard', '-');
o.inputstyle = 'positive';
o.inputtitle = _('Update Dashboard');
o.onclick = function () {
return mihomo.callMihomoAPI('POST', '/upgrade/ui');
};
o = s.option(form.Button, 'open_dashboard', '-');
o.inputtitle = _('Open Dashboard');
o.onclick = function () {
return mihomo.openDashboard();
};
s = m.section(form.NamedSection, 'config', 'config', _('App Config'));
o = s.option(form.Flag, 'enabled', _('Enable'));
o.rmempty = false;
o = s.option(form.ListValue, 'profile', _('Choose Profile'));
o.optional = true;
for (const profile of profiles) {
o.value('file:' + profile.name, _('File:') + profile.name);
};
for (const subscription of subscriptions) {
o.value('subscription:' + subscription['.name'], _('Subscription:') + subscription.name);
};
o = s.option(form.Value, 'start_delay', _('Start Delay'));
o.datatype = 'uinteger';
o.placeholder = '0';
o = s.option(form.Flag, 'scheduled_restart', _('Scheduled Restart'));
o.rmempty = false;
o = s.option(form.Value, 'cron_expression', _('Cron Expression'));
o.retain = true;
o.rmempty = false;
o.depends('scheduled_restart', '1');
o = s.option(form.Flag, 'test_profile', _('Test Profile'));
o.rmempty = false;
o = s.option(form.Flag, 'fast_reload', _('Fast Reload'));
o.rmempty = false;
s = m.section(form.NamedSection, 'config', 'config', _('Core Environment Variable Config'));
o = s.option(form.Flag, 'disable_safe_path_check', _('Disable Safe Path Check'));
o.ucisection = 'env';
o.rmempty = false;
o = s.option(form.Flag, 'disable_loopback_detector', _('Disable Loopback Detector'));
o.ucisection = 'env';
o.rmempty = false;
o = s.option(form.Flag, 'disable_quic_go_gso', _('Disable GSO of quic-go'));
o.ucisection = 'env';
o.rmempty = false;
o = s.option(form.Flag, 'disable_quic_go_ecn', _('Disable ECN of quic-go'));
o.ucisection = 'env';
o.rmempty = false;
return m.render();
}
});

View File

@ -1,617 +0,0 @@
'use strict';
'require form';
'require view';
'require uci';
'require fs';
'require network';
'require rpc';
'require poll';
'require tools.widgets as widgets';
'require tools.mihomo as mihomo';
function renderStatus(running) {
return updateStatus(E('input', { id: 'core_status', style: 'border: unset; font-style: italic; font-weight: bold;', readonly: '' }), running);
}
function updateStatus(element, running) {
if (element) {
element.style.color = running ? 'green' : 'red';
element.value = running ? _('Running') : _('Not Running');
}
return element;
}
return view.extend({
load: function () {
return Promise.all([
uci.load('mihomo'),
mihomo.listProfiles(),
mihomo.appVersion(),
mihomo.coreVersion(),
mihomo.status(),
mihomo.getUsers(),
mihomo.getGroups(),
network.getHostHints(),
]);
},
render: function (data) {
const subscriptions = uci.sections('mihomo', 'subscription');
const profiles = data[1];
const appVersion = data[2];
const coreVersion = data[3];
const running = data[4];
const users = data[5];
const groups = data[6];
const hosts = data[7].hosts;
let m, s, o, so;
m = new form.Map('mihomo', _('MihomoTProxy'), `${_('Transparent Proxy with Mihomo on OpenWrt.')} <a href="https://github.com/morytyann/OpenWrt-mihomo/wiki" target="_blank">${_('How To Use')}</a>`);
s = m.section(form.NamedSection, 'status', 'status', _('Status'));
o = s.option(form.Value, '_app_version', _('App Version'));
o.readonly = true;
o.load = function () {
return appVersion.trim();
};
o.write = function () { };
o = s.option(form.Value, '_core_version', _('Core Version'));
o.readonly = true;
o.load = function () {
return coreVersion.trim();
};
o.write = function () { };
o = s.option(form.DummyValue, '_core_status', _('Core Status'));
o.cfgvalue = function () {
return renderStatus(running);
};
poll.add(function () {
return L.resolveDefault(mihomo.status()).then(function (running) {
updateStatus(document.getElementById('core_status'), running);
});
});
o = s.option(form.Button, 'reload', '-');
o.inputstyle = 'action';
o.inputtitle = _('Reload Service');
o.onclick = function () {
return mihomo.reload();
};
o = s.option(form.Button, 'restart', '-');
o.inputstyle = 'negative';
o.inputtitle = _('Restart Service');
o.onclick = function () {
return mihomo.restart();
};
o = s.option(form.Button, 'update_dashboard', '-');
o.inputstyle = 'positive';
o.inputtitle = _('Update Dashboard');
o.onclick = function () {
return mihomo.callMihomoAPI('POST', '/upgrade/ui');
};
o = s.option(form.Button, 'open_dashboard', '-');
o.inputtitle = _('Open Dashboard');
o.onclick = function () {
return mihomo.openDashboard();
};
s = m.section(form.NamedSection, 'config', 'config', _('Basic Config'));
s.tab('app', _('App Config'));
o = s.taboption('app', form.Flag, 'enabled', _('Enable'));
o.rmempty = false;
o = s.taboption('app', form.ListValue, 'profile', _('Choose Profile'));
o.optional = true;
for (const profile of profiles) {
o.value('file:' + profile.name, _('File:') + profile.name);
};
for (const subscription of subscriptions) {
o.value('subscription:' + subscription['.name'], _('Subscription:') + subscription.name);
};
o = s.taboption('app', form.FileUpload, 'upload_profile', _('Upload Profile'));
o.root_directory = mihomo.profilesDir;
o = s.taboption('app', form.Flag, 'mixin', _('Mixin'));
o.rmempty = false;
s.tab('startup', _('Startup Config'));
o = s.taboption('startup', form.Value, 'start_delay', _('Start Delay'));
o.datatype = 'uinteger';
o.placeholder = '0';
o = s.taboption('startup', form.Flag, 'scheduled_restart', _('Scheduled Restart'));
o.rmempty = false;
o = s.taboption('startup', form.Value, 'cron_expression', _('Cron Expression'));
o.retain = true;
o.rmempty = false;
o.depends('scheduled_restart', '1');
o = s.taboption('startup', form.Flag, 'test_profile', _('Test Profile'));
o.rmempty = false;
o = s.taboption('startup', form.Flag, 'fast_reload', _('Fast Reload'));
o.rmempty = false;
s.tab('core_env', _('Core Environment Variable Config'));
o = s.taboption('core_env', form.Flag, 'disable_safe_path_check', _('Disable Safe Path Check'));
o.ucisection = 'env';
o.rmempty = false;
o = s.taboption('core_env', form.Flag, 'disable_loopback_detector', _('Disable Loopback Detector'));
o.ucisection = 'env';
o.rmempty = false;
o = s.taboption('core_env', form.Flag, 'disable_quic_go_gso', _('Disable GSO of quic-go'));
o.ucisection = 'env';
o.rmempty = false;
o = s.taboption('core_env', form.Flag, 'disable_quic_go_ecn', _('Disable ECN of quic-go'));
o.ucisection = 'env';
o.rmempty = false;
s = m.section(form.NamedSection, 'proxy', 'proxy', _('Proxy Config'));
s.tab('transparent_proxy', _('Transparent Proxy'));
o = s.taboption('transparent_proxy', form.Flag, 'transparent_proxy', _('Enable'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.ListValue, 'tcp_transparent_proxy_mode', _('TCP Proxy Mode'));
o.value('redirect', _('Redirect Mode'));
o.value('tproxy', _('TPROXY Mode'));
o.value('tun', _('TUN Mode'));
o = s.taboption('transparent_proxy', form.ListValue, 'udp_transparent_proxy_mode', _('UDP Proxy Mode'));
o.value('tproxy', _('TPROXY Mode'));
o.value('tun', _('TUN Mode'));
o = s.taboption('transparent_proxy', form.Flag, 'ipv4_dns_hijack', _('IPv4 DNS Hijack'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'ipv6_dns_hijack', _('IPv6 DNS Hijack'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'ipv4_proxy', _('IPv4 Proxy'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'ipv6_proxy', _('IPv6 Proxy'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'router_proxy', _('Router Proxy'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'lan_proxy', _('Lan Proxy'));
o.rmempty = false;
s.tab('access_control', _('Access Control'));
o = s.taboption('access_control', form.ListValue, 'access_control_mode', _('Mode'));
o.value('all', _('All Mode'));
o.value('allow', _('Allow Mode'));
o.value('block', _('Block Mode'));
o = s.taboption('access_control', form.DynamicList, 'acl_ip', 'IP');
o.datatype = 'ipmask4';
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
for (const mac in hosts) {
const host = hosts[mac];
for (const ip of host.ipaddrs) {
const hint = host.name || mac;
o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
};
};
o = s.taboption('access_control', form.DynamicList, 'acl_ip6', 'IP6');
o.datatype = 'ipmask6';
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
for (const mac in hosts) {
const host = hosts[mac];
for (const ip of host.ip6addrs) {
const hint = host.name || mac;
o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
};
};
o = s.taboption('access_control', form.DynamicList, 'acl_mac', 'MAC');
o.datatype = 'macaddr';
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
for (const mac in hosts) {
const host = hosts[mac];
const hint = host.name || host.ipaddrs[0];
o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac);
};
o = s.taboption('access_control', widgets.NetworkSelect, 'acl_interface', _('Interface'));
o.multiple = true;
o.optional = true;
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
s.tab('bypass', _('Bypass'));
o = s.taboption('bypass', form.MultiValue, 'bypass_user', _('Bypass User'));
o.create = true;
for (const user of users) {
o.value(user);
};
o = s.taboption('bypass', form.MultiValue, 'bypass_group', _('Bypass Group'));
o.create = true;
for (const group of groups) {
o.value(group);
};
o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP'));
o.rmempty = false;
o = s.taboption('bypass', form.Value, 'proxy_tcp_dport', _('Destination TCP Port to Proxy'));
o.rmempty = false;
o.value('0-65535', _('All Port'));
o.value('21 22 80 110 143 194 443 465 853 993 995 8080 8443', _('Commonly Used Port'));
o = s.taboption('bypass', form.Value, 'proxy_udp_dport', _('Destination UDP Port to Proxy'));
o.rmempty = false;
o.value('0-65535', _('All Port'));
o.value('123 443 8443', _('Commonly Used Port'));
s = m.section(form.GridSection, 'subscription', _('Subscription Config'));
s.addremove = true;
s.anonymous = true;
s.sortable = true;
s.modaltitle = _('Edit Subscription');
o = s.option(form.Value, 'name', _('Subscription Name'));
o.rmempty = false;
o = s.option(form.Value, 'used', _('Used'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Value, 'total', _('Total'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Value, 'expire', _('Expire At'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Value, 'update', _('Update At'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Button, 'update_subscription');
o.editable = true;
o.inputstyle = 'positive';
o.inputtitle = _('Update');
o.modalonly = false;
o.onclick = function (_, section_id) {
return mihomo.updateSubscription(section_id);
};
o = s.option(form.Value, 'url', _('Subscription Url'));
o.modalonly = true;
o.rmempty = false;
o = s.option(form.Value, 'user_agent', _('User Agent'));
o.default = 'clash';
o.modalonly = true;
o.rmempty = false;
o.value('mihomo');
o.value('clash.meta');
o.value('clash');
o = s.option(form.ListValue, 'prefer', _('Prefer'));
o.default = 'remote';
o.modalonly = true;
o.value('remote', _('Remote'));
o.value('local', _('Local'));
s = m.section(form.NamedSection, 'mixin', 'mixin', _('Mixin Config'));
s.tab('general', _('General Config'));
o = s.taboption('general', form.ListValue, 'log_level', '*' + ' ' + _('Log Level'));
o.value('silent');
o.value('error');
o.value('warning');
o.value('info');
o.value('debug');
o = s.taboption('general', form.ListValue, 'mode', _('Mode'));
o.value('global', _('Global Mode'));
o.value('rule', _('Rule Mode'));
o.value('direct', _('Direct Mode'));
o = s.taboption('general', form.ListValue, 'match_process', _('Match Process'));
o.value('strict', _('Auto'));
o.value('always', _('Enable'));
o.value('off', _('Disable'));
o = s.taboption('general', widgets.NetworkSelect, 'outbound_interface', '*' + ' ' + _('Outbound Interface'));
o.optional = true;
o = s.taboption('general', form.Flag, 'ipv6', '*' + ' ' + _('IPv6'));
o.rmempty = false;
o = s.taboption('general', form.Value, 'tcp_keep_alive_idle', _('TCP Keep Alive Idle'));
o.datatype = 'uinteger';
o.placeholder = '600';
o = s.taboption('general', form.Value, 'tcp_keep_alive_interval', _('TCP Keep Alive Interval'));
o.datatype = 'uinteger';
o.placeholder = '15';
s.tab('external_control', _('External Control Config'));
o = s.taboption('external_control', form.Value, 'ui_name', '*' + ' ' + _('UI Name'));
o.rmempty = false;
o = s.taboption('external_control', form.Value, 'ui_url', '*' + ' ' + _('UI Url'));
o.rmempty = false;
o.value('https://ghp.ci/https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip', 'MetaCubeXD');
o.value('https://ghp.ci/https://github.com/MetaCubeX/Yacd-meta/archive/refs/heads/gh-pages.zip', 'YACD');
o.value('https://ghp.ci/https://github.com/MetaCubeX/Razord-meta/archive/refs/heads/gh-pages.zip', 'Razord');
o.value('https://ghp.ci/https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip', 'Zashboard');
o = s.taboption('external_control', form.Value, 'api_port', '*' + ' ' + _('API Port'));
o.datatype = 'port';
o.placeholder = '9090';
o = s.taboption('external_control', form.Value, 'api_secret', '*' + ' ' + _('API Secret'));
o.password = true;
o.rmempty = false;
o = s.taboption('external_control', form.Flag, 'selection_cache', _('Save Proxy Selection'));
o.rmempty = false;
s.tab('inbound', _('Inbound Config'));
o = s.taboption('inbound', form.Flag, 'allow_lan', '*' + ' ' + _('Allow Lan'));
o.rmempty = false;
o = s.taboption('inbound', form.Value, 'http_port', '*' + ' ' + _('HTTP Port'));
o.datatype = 'port';
o.placeholder = '8080';
o = s.taboption('inbound', form.Value, 'socks_port', '*' + ' ' + _('SOCKS Port'));
o.datatype = 'port';
o.placeholder = '1080';
o = s.taboption('inbound', form.Value, 'mixed_port', '*' + ' ' + _('Mixed Port'));
o.datatype = 'port';
o.placeholder = '7890';
o = s.taboption('inbound', form.Value, 'redir_port', '*' + ' ' + _('Redirect Port'));
o.datatype = 'port';
o.placeholder = '7891';
o = s.taboption('inbound', form.Value, 'tproxy_port', '*' + ' ' + _('TPROXY Port'));
o.datatype = 'port';
o.placeholder = '7892';
o = s.taboption('inbound', form.Flag, 'authentication', '*' + ' ' + _('Overwrite Authentication'));
o.rmempty = false;
o = s.taboption('inbound', form.SectionValue, '_authentications', form.TableSection, 'authentication', _('Edit Authentications'));
o.retain = true;
o.depends('authentication', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'username', _('Username'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'password', _('Password'));
so.password = true;
so.rmempty = false;
s.tab('tun', _('TUN Config'));
o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack'));
o.value('system', 'System');
o.value('gvisor', 'gVisor');
o.value('mixed', 'Mixed');
o = s.taboption('tun', form.Value, 'tun_mtu', '*' + ' ' + _('MTU'));
o.datatype = 'uinteger';
o.placeholder = '9000';
o = s.taboption('tun', form.Flag, 'tun_gso', '*' + ' ' + _('GSO'));
o.rmempty = false;
o = s.taboption('tun', form.Value, 'tun_gso_max_size', '*' + ' ' + _('GSO Max Size'));
o.datatype = 'uinteger';
o.placeholder = '65536';
o.retain = true;
o.depends('tun_gso', '1');
o = s.taboption('tun', form.Flag, 'tun_endpoint_independent_nat', '*' + ' ' + _('Endpoint Independent NAT'));
o.rmempty = false;
s.tab('dns', _('DNS Config'));
o = s.taboption('dns', form.Value, 'dns_port', '*' + ' ' + _('DNS Port'));
o.datatype = 'port';
o.placeholder = '1053';
o = s.taboption('dns', form.ListValue, 'dns_mode', '*' + ' ' + _('DNS Mode'));
o.value('normal', 'Normal');
o.value('fake-ip', 'Fake-IP');
o.value('redir-host', 'Redir-Host');
o = s.taboption('dns', form.Value, 'fake_ip_range', '*' + ' ' + _('Fake-IP Range'));
o.datatype = 'cidr4';
o.placeholder = '198.18.0.1/16';
o.retain = true;
o.depends('dns_mode', 'fake-ip');
o = s.taboption('dns', form.Flag, 'fake_ip_filter', _('Overwrite Fake-IP Filter'));
o.retain = true;
o.rmempty = false;
o.depends('dns_mode', 'fake-ip');
o = s.taboption('dns', form.DynamicList, 'fake_ip_filters', _('Edit Fake-IP Filters'));
o.retain = true;
o.depends({ 'dns_mode': 'fake-ip', 'fake_ip_filter': '1' });
o = s.taboption('dns', form.ListValue, 'fake_ip_filter_mode', _('Fake-IP Filter Mode'));
o.retain = true;
o.value('blacklist', _('Block Mode'));
o.value('whitelist', _('Allow Mode'));
o.depends({ 'dns_mode': 'fake-ip', 'fake_ip_filter': '1' });
o = s.taboption('dns', form.Flag, 'fake_ip_cache', _('Fake-IP Cache'));
o.retain = true;
o.rmempty = false;
o.depends('dns_mode', 'fake-ip');
o = s.taboption('dns', form.Flag, 'dns_respect_rules', _('Respect Rules'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_doh_prefer_http3', _('DoH Prefer HTTP/3'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_ipv6', _('IPv6'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_system_hosts', _('Use System Hosts'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_hosts', _('Use Hosts'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'hosts', _('Overwrite Hosts'));
o.rmempty = false;
o = s.taboption('dns', form.SectionValue, '_hosts', form.TableSection, 'host', _('Edit Hosts'));
o.retain = true;
o.depends('hosts', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'domain_name', _('Domain Name'));
so.rmempty = false;
so = o.subsection.option(form.DynamicList, 'ip', _('IP'));
o = s.taboption('dns', form.Flag, 'dns_nameserver', _('Overwrite Nameserver'));
o.rmempty = false;
o = s.taboption('dns', form.SectionValue, '_dns_nameserver', form.TableSection, 'nameserver', _('Edit Nameservers'));
o.retain = true;
o.depends('dns_nameserver', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.ListValue, 'type', _('Type'));
so.value('default-nameserver');
so.value('proxy-server-nameserver');
so.value('direct-nameserver');
so.value('nameserver');
so.value('fallback');
so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver'));
o = s.taboption('dns', form.Flag, 'dns_nameserver_policy', _('Overwrite Nameserver Policy'));
o.rmempty = false;
o = s.taboption('dns', form.SectionValue, '_dns_nameserver_policies', form.TableSection, 'nameserver_policy', _('Edit Nameserver Policies'));
o.retain = true;
o.depends('dns_nameserver_policy', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'matcher', _('Matcher'));
so.rmempty = false;
so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver'));
s.tab('geox', _('GeoX Config'));
o = s.taboption('geox', form.ListValue, 'geoip_format', _('GeoIP Format'));
o.value('dat', 'DAT');
o.value('mmdb', 'MMDB');
o = s.taboption('geox', form.ListValue, 'geodata_loader', _('GeoData Loader'));
o.value('standard', _('Standard Loader'));
o.value('memconservative', _('Memory Conservative Loader'));
o = s.taboption('geox', form.Value, 'geosite_url', _('GeoSite Url'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geoip_mmdb_url', _('GeoIP(MMDB) Url'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geoip_dat_url', _('GeoIP(DAT) Url'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geoip_asn_url', _('GeoIP(ASN) Url'));
o.rmempty = false;
o = s.taboption('geox', form.Flag, 'geox_auto_update', _('GeoX Auto Update'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geox_update_interval', _('GeoX Update Interval'));
o.datatype = 'uinteger';
o.placeholder = '24';
o.retain = true;
o.depends('geox_auto_update', '1');
s.tab('mixin_file_content', _('Mixin File Content'));
o = s.taboption('mixin_file_content', form.Flag, 'mixin_file_content', '*' + ' ' + _('Enable'), _('Please go to the editor tab to edit the file for mixin'));
o.rmempty = false;
return m.render();
}
});

View File

@ -9,7 +9,7 @@ return view.extend({
load: function () {
return Promise.all([
uci.load('mihomo'),
mihomo.listProfiles(),
mihomo.listProfiles()
]);
},
render: function (data) {
@ -20,9 +20,9 @@ return view.extend({
m = new form.Map('mihomo');
s = m.section(form.NamedSection, 'editor', 'editor');
s = m.section(form.NamedSection, 'editor', 'editor', _('Editor'));
o = s.option(form.ListValue, '_profile', _('Choose Profile'));
o = s.option(form.ListValue, '_file', _('Choose File'));
o.optional = true;
for (const profile of profiles) {
@ -43,19 +43,19 @@ return view.extend({
};
o.onchange = function (event, section_id, value) {
return L.resolveDefault(fs.read_direct(value), '').then(function (content) {
m.lookupOption('mihomo.editor._profile_content')[0].getUIElement('editor').setValue(content);
m.lookupOption('mihomo.editor._file_content')[0].getUIElement('editor').setValue(content);
});
};
o = s.option(form.TextValue, '_profile_content',);
o = s.option(form.TextValue, '_file_content',);
o.rows = 25;
o.wrap = false;
o.write = function (section_id, formvalue) {
const path = m.lookupOption('mihomo.editor._profile')[0].formvalue('editor');
const path = m.lookupOption('mihomo.editor._file')[0].formvalue('editor');
return fs.write(path, formvalue);
};
o.remove = function (section_id) {
const path = m.lookupOption('mihomo.editor._profile')[0].formvalue('editor');
const path = m.lookupOption('mihomo.editor._file')[0].formvalue('editor');
return fs.write(path);
};

View File

@ -2,9 +2,8 @@
'require form';
'require view';
'require uci';
'require fs';
'require poll';
'require tools.mihomo as mihomo'
'require tools.mihomo as mihomo';
return view.extend({
load: function () {
@ -22,7 +21,7 @@ return view.extend({
m = new form.Map('mihomo');
s = m.section(form.NamedSection, 'log', 'log');
s = m.section(form.NamedSection, 'log', 'log', _('Log'));
s.tab('app_log', _('App Log'));
@ -95,4 +94,4 @@ return view.extend({
handleSaveApply: null,
handleSave: null,
handleReset: null
});
});

View File

@ -0,0 +1,303 @@
'use strict';
'require form';
'require view';
'require uci';
'require fs';
'require poll';
'require tools.widgets as widgets';
'require tools.mihomo as mihomo';
return view.extend({
load: function () {
return Promise.all([
uci.load('mihomo')
]);
},
render: function (data) {
let m, s, o, so;
m = new form.Map('mihomo');
s = m.section(form.NamedSection, 'config', 'config', _('Mixin Config'));
o = s.option(form.Flag, 'mixin', _('Enable'));
o.rmempty = false;
s = m.section(form.NamedSection, 'mixin', 'mixin', _('Mixin Option'));
s.tab('general', _('General Config'));
o = s.taboption('general', form.ListValue, 'log_level', '*' + ' ' + _('Log Level'));
o.value('silent');
o.value('error');
o.value('warning');
o.value('info');
o.value('debug');
o = s.taboption('general', form.ListValue, 'mode', _('Mode'));
o.value('global', _('Global Mode'));
o.value('rule', _('Rule Mode'));
o.value('direct', _('Direct Mode'));
o = s.taboption('general', form.ListValue, 'match_process', _('Match Process'));
o.value('strict', _('Auto'));
o.value('always', _('Enable'));
o.value('off', _('Disable'));
o = s.taboption('general', widgets.NetworkSelect, 'outbound_interface', '*' + ' ' + _('Outbound Interface'));
o.optional = true;
o = s.taboption('general', form.Flag, 'ipv6', '*' + ' ' + _('IPv6'));
o.rmempty = false;
o = s.taboption('general', form.Value, 'tcp_keep_alive_idle', _('TCP Keep Alive Idle'));
o.datatype = 'uinteger';
o.placeholder = '600';
o = s.taboption('general', form.Value, 'tcp_keep_alive_interval', _('TCP Keep Alive Interval'));
o.datatype = 'uinteger';
o.placeholder = '15';
s.tab('external_control', _('External Control Config'));
o = s.taboption('external_control', form.Value, 'ui_name', '*' + ' ' + _('UI Name'));
o = s.taboption('external_control', form.Value, 'ui_url', '*' + ' ' + _('UI Url'));
o.rmempty = false;
o.value('https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip', 'Zashboard');
o.value('https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip', 'MetaCubeXD');
o.value('https://github.com/MetaCubeX/Yacd-meta/archive/refs/heads/gh-pages.zip', 'YACD');
o.value('https://github.com/MetaCubeX/Razord-meta/archive/refs/heads/gh-pages.zip', 'Razord');
o = s.taboption('external_control', form.Value, 'api_port', '*' + ' ' + _('API Port'));
o.datatype = 'port';
o.placeholder = '9090';
o = s.taboption('external_control', form.Value, 'api_secret', '*' + ' ' + _('API Secret'));
o.password = true;
o.rmempty = false;
o = s.taboption('external_control', form.Flag, 'selection_cache', _('Save Proxy Selection'));
o.rmempty = false;
s.tab('inbound', _('Inbound Config'));
o = s.taboption('inbound', form.Flag, 'allow_lan', '*' + ' ' + _('Allow Lan'));
o.rmempty = false;
o = s.taboption('inbound', form.Value, 'http_port', '*' + ' ' + _('HTTP Port'));
o.datatype = 'port';
o.placeholder = '8080';
o = s.taboption('inbound', form.Value, 'socks_port', '*' + ' ' + _('SOCKS Port'));
o.datatype = 'port';
o.placeholder = '1080';
o = s.taboption('inbound', form.Value, 'mixed_port', '*' + ' ' + _('Mixed Port'));
o.datatype = 'port';
o.placeholder = '7890';
o = s.taboption('inbound', form.Value, 'redir_port', '*' + ' ' + _('Redirect Port'));
o.datatype = 'port';
o.placeholder = '7891';
o = s.taboption('inbound', form.Value, 'tproxy_port', '*' + ' ' + _('TPROXY Port'));
o.datatype = 'port';
o.placeholder = '7892';
o = s.taboption('inbound', form.Flag, 'authentication', '*' + ' ' + _('Overwrite Authentication'));
o.rmempty = false;
o = s.taboption('inbound', form.SectionValue, '_authentications', form.TableSection, 'authentication', _('Edit Authentications'));
o.retain = true;
o.depends('authentication', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'username', _('Username'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'password', _('Password'));
so.password = true;
so.rmempty = false;
s.tab('tun', _('TUN Config'));
o = s.taboption('tun', form.ListValue, 'tun_stack', '*' + ' ' + _('Stack'));
o.value('system', 'System');
o.value('gvisor', 'gVisor');
o.value('mixed', 'Mixed');
o = s.taboption('tun', form.Value, 'tun_mtu', '*' + ' ' + _('MTU'));
o.datatype = 'uinteger';
o.placeholder = '9000';
o = s.taboption('tun', form.Flag, 'tun_gso', '*' + ' ' + _('GSO'));
o.rmempty = false;
o = s.taboption('tun', form.Value, 'tun_gso_max_size', '*' + ' ' + _('GSO Max Size'));
o.datatype = 'uinteger';
o.placeholder = '65536';
o.retain = true;
o.depends('tun_gso', '1');
o = s.taboption('tun', form.Flag, 'tun_endpoint_independent_nat', '*' + ' ' + _('Endpoint Independent NAT'));
o.rmempty = false;
s.tab('dns', _('DNS Config'));
o = s.taboption('dns', form.Value, 'dns_port', '*' + ' ' + _('DNS Port'));
o.datatype = 'port';
o.placeholder = '1053';
o = s.taboption('dns', form.ListValue, 'dns_mode', '*' + ' ' + _('DNS Mode'));
o.value('normal', 'Normal');
o.value('fake-ip', 'Fake-IP');
o.value('redir-host', 'Redir-Host');
o = s.taboption('dns', form.Value, 'fake_ip_range', '*' + ' ' + _('Fake-IP Range'));
o.datatype = 'cidr4';
o.placeholder = '198.18.0.1/16';
o.retain = true;
o.depends('dns_mode', 'fake-ip');
o = s.taboption('dns', form.Flag, 'fake_ip_filter', _('Overwrite Fake-IP Filter'));
o.retain = true;
o.rmempty = false;
o.depends('dns_mode', 'fake-ip');
o = s.taboption('dns', form.DynamicList, 'fake_ip_filters', _('Edit Fake-IP Filters'));
o.retain = true;
o.depends({ 'dns_mode': 'fake-ip', 'fake_ip_filter': '1' });
o = s.taboption('dns', form.ListValue, 'fake_ip_filter_mode', _('Fake-IP Filter Mode'));
o.retain = true;
o.value('blacklist', _('Block Mode'));
o.value('whitelist', _('Allow Mode'));
o.depends({ 'dns_mode': 'fake-ip', 'fake_ip_filter': '1' });
o = s.taboption('dns', form.Flag, 'fake_ip_cache', _('Fake-IP Cache'));
o.retain = true;
o.rmempty = false;
o.depends('dns_mode', 'fake-ip');
o = s.taboption('dns', form.Flag, 'dns_respect_rules', _('Respect Rules'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_doh_prefer_http3', _('DoH Prefer HTTP/3'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_ipv6', _('IPv6'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_system_hosts', _('Use System Hosts'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'dns_hosts', _('Use Hosts'));
o.rmempty = false;
o = s.taboption('dns', form.Flag, 'hosts', _('Overwrite Hosts'));
o.rmempty = false;
o = s.taboption('dns', form.SectionValue, '_hosts', form.TableSection, 'host', _('Edit Hosts'));
o.retain = true;
o.depends('hosts', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'domain_name', _('Domain Name'));
so.rmempty = false;
so = o.subsection.option(form.DynamicList, 'ip', _('IP'));
o = s.taboption('dns', form.Flag, 'dns_nameserver', _('Overwrite Nameserver'));
o.rmempty = false;
o = s.taboption('dns', form.SectionValue, '_dns_nameserver', form.TableSection, 'nameserver', _('Edit Nameservers'));
o.retain = true;
o.depends('dns_nameserver', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.ListValue, 'type', _('Type'));
so.value('default-nameserver');
so.value('proxy-server-nameserver');
so.value('direct-nameserver');
so.value('nameserver');
so.value('fallback');
so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver'));
o = s.taboption('dns', form.Flag, 'dns_nameserver_policy', _('Overwrite Nameserver Policy'));
o.rmempty = false;
o = s.taboption('dns', form.SectionValue, '_dns_nameserver_policies', form.TableSection, 'nameserver_policy', _('Edit Nameserver Policies'));
o.retain = true;
o.depends('dns_nameserver_policy', '1');
o.subsection.addremove = true;
o.subsection.anonymous = true;
o.subsection.sortable = true;
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
so.rmempty = false;
so = o.subsection.option(form.Value, 'matcher', _('Matcher'));
so.rmempty = false;
so = o.subsection.option(form.DynamicList, 'nameserver', _('Nameserver'));
s.tab('geox', _('GeoX Config'));
o = s.taboption('geox', form.ListValue, 'geoip_format', _('GeoIP Format'));
o.value('dat', 'DAT');
o.value('mmdb', 'MMDB');
o = s.taboption('geox', form.ListValue, 'geodata_loader', _('GeoData Loader'));
o.value('standard', _('Standard Loader'));
o.value('memconservative', _('Memory Conservative Loader'));
o = s.taboption('geox', form.Value, 'geosite_url', _('GeoSite Url'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geoip_mmdb_url', _('GeoIP(MMDB) Url'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geoip_dat_url', _('GeoIP(DAT) Url'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geoip_asn_url', _('GeoIP(ASN) Url'));
o.rmempty = false;
o = s.taboption('geox', form.Flag, 'geox_auto_update', _('GeoX Auto Update'));
o.rmempty = false;
o = s.taboption('geox', form.Value, 'geox_update_interval', _('GeoX Update Interval'));
o.datatype = 'uinteger';
o.placeholder = '24';
o.retain = true;
o.depends('geox_auto_update', '1');
s.tab('mixin_file_content', _('Mixin File Content'));
o = s.taboption('mixin_file_content', form.Flag, 'mixin_file_content', '*' + ' ' + _('Enable'), _('Please go to the editor tab to edit the file for mixin'));
o.rmempty = false;
return m.render();
}
});

View File

@ -0,0 +1,86 @@
'use strict';
'require form';
'require view';
'require uci';
'require tools.mihomo as mihomo';
return view.extend({
load: function () {
return Promise.all([
uci.load('mihomo')
]);
},
render: function (data) {
let m, s, o, so;
m = new form.Map('mihomo');
s = m.section(form.NamedSection, 'config', 'config', _('Profile'));
o = s.option(form.FileUpload, '_upload_profile', _('Upload Profile'));
o.browser = true;
o.enable_download = true;
o.root_directory = mihomo.profilesDir;
o.write = function (section_id, formvalue) {
return true;
};
s = m.section(form.GridSection, 'subscription', _('Subscription'));
s.addremove = true;
s.anonymous = true;
s.sortable = true;
s.modaltitle = _('Edit Subscription');
o = s.option(form.Value, 'name', _('Subscription Name'));
o.rmempty = false;
o = s.option(form.Value, 'used', _('Used'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Value, 'total', _('Total'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Value, 'expire', _('Expire At'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Value, 'update', _('Update At'));
o.modalonly = false;
o.optional = true;
o.readonly = true;
o = s.option(form.Button, 'update_subscription');
o.editable = true;
o.inputstyle = 'positive';
o.inputtitle = _('Update');
o.modalonly = false;
o.onclick = function (_, section_id) {
return mihomo.updateSubscription(section_id);
};
o = s.option(form.Value, 'url', _('Subscription Url'));
o.modalonly = true;
o.rmempty = false;
o = s.option(form.Value, 'user_agent', _('User Agent'));
o.default = 'clash';
o.modalonly = true;
o.rmempty = false;
o.value('mihomo');
o.value('clash.meta');
o.value('clash');
o = s.option(form.ListValue, 'prefer', _('Prefer'));
o.default = 'remote';
o.modalonly = true;
o.value('remote', _('Remote'));
o.value('local', _('Local'));
return m.render();
}
});

View File

@ -0,0 +1,145 @@
'use strict';
'require form';
'require view';
'require uci';
'require network';
'require tools.widgets as widgets';
'require tools.mihomo as mihomo';
return view.extend({
load: function () {
return Promise.all([
uci.load('mihomo'),
network.getHostHints(),
mihomo.getUsers(),
mihomo.getGroups()
]);
},
render: function (data) {
const hosts = data[1].hosts;
const users = data[2];
const groups = data[3];
let m, s, o;
m = new form.Map('mihomo');
s = m.section(form.NamedSection, 'proxy', 'proxy', _('Proxy Config'));
s.tab('transparent_proxy', _('Transparent Proxy'));
o = s.taboption('transparent_proxy', form.Flag, 'transparent_proxy', _('Enable'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.ListValue, 'tcp_transparent_proxy_mode', _('TCP Proxy Mode'));
o.value('redirect', _('Redirect Mode'));
o.value('tproxy', _('TPROXY Mode'));
o.value('tun', _('TUN Mode'));
o = s.taboption('transparent_proxy', form.ListValue, 'udp_transparent_proxy_mode', _('UDP Proxy Mode'));
o.value('tproxy', _('TPROXY Mode'));
o.value('tun', _('TUN Mode'));
o = s.taboption('transparent_proxy', form.Flag, 'ipv4_dns_hijack', _('IPv4 DNS Hijack'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'ipv6_dns_hijack', _('IPv6 DNS Hijack'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'ipv4_proxy', _('IPv4 Proxy'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'ipv6_proxy', _('IPv6 Proxy'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'router_proxy', _('Router Proxy'));
o.rmempty = false;
o = s.taboption('transparent_proxy', form.Flag, 'lan_proxy', _('Lan Proxy'));
o.rmempty = false;
s.tab('access_control', _('Access Control'));
o = s.taboption('access_control', form.ListValue, 'access_control_mode', _('Mode'));
o.value('all', _('All Mode'));
o.value('allow', _('Allow Mode'));
o.value('block', _('Block Mode'));
o = s.taboption('access_control', form.DynamicList, 'acl_ip', 'IP');
o.datatype = 'ipmask4';
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
for (const mac in hosts) {
const host = hosts[mac];
for (const ip of host.ipaddrs) {
const hint = host.name || mac;
o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
};
};
o = s.taboption('access_control', form.DynamicList, 'acl_ip6', 'IP6');
o.datatype = 'ipmask6';
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
for (const mac in hosts) {
const host = hosts[mac];
for (const ip of host.ip6addrs) {
const hint = host.name || mac;
o.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
};
};
o = s.taboption('access_control', form.DynamicList, 'acl_mac', 'MAC');
o.datatype = 'macaddr';
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
for (const mac in hosts) {
const host = hosts[mac];
const hint = host.name || host.ipaddrs[0];
o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac);
};
o = s.taboption('access_control', widgets.NetworkSelect, 'acl_interface', _('Interface'));
o.multiple = true;
o.optional = true;
o.retain = true;
o.depends('access_control_mode', 'allow');
o.depends('access_control_mode', 'block');
s.tab('bypass', _('Bypass'));
o = s.taboption('bypass', form.MultiValue, 'bypass_user', _('Bypass User'));
o.create = true;
for (const user of users) {
o.value(user);
};
o = s.taboption('bypass', form.MultiValue, 'bypass_group', _('Bypass Group'));
o.create = true;
for (const group of groups) {
o.value(group);
};
o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP'));
o.rmempty = false;
o = s.taboption('bypass', form.Value, 'proxy_tcp_dport', _('Destination TCP Port to Proxy'));
o.rmempty = false;
o.value('0-65535', _('All Port'));
o.value('21 22 80 110 143 194 443 465 853 993 995 8080 8443', _('Commonly Used Port'));
o = s.taboption('bypass', form.Value, 'proxy_udp_dport', _('Destination UDP Port to Proxy'));
o.rmempty = false;
o.value('0-65535', _('All Port'));
o.value('123 443 8443', _('Commonly Used Port'));
return m.render();
}
});

View File

@ -1,232 +1,230 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:386
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:72
msgid "API Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:390
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:76
msgid "API Secret"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:200
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:61
msgid "Access Control"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:203
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:64
msgid "All Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:275
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:280
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:136
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:141
msgid "All Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:399
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:85
msgid "Allow Lan"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:204
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:495
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65
msgid "Allow Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:106
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:94
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:13
msgid "App Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:27
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:38
msgid "App Log"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:53
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:43
msgid "App Version"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:356
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:43
msgid "Auto"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:104
msgid "Basic Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:205
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:494
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:180
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66
msgid "Block Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:254
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:115
msgid "Bypass"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:131
msgid "Bypass China Mainland IP"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:263
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:124
msgid "Bypass Group"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:117
msgid "Bypass User"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:111
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25
msgid "Choose File"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:99
msgid "Choose Profile"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:31
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:64
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:42
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:75
msgid "Clear Log"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:276
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:137
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:142
msgid "Commonly Used Port"
msgstr ""
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:14
msgid "Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:128
msgid "Core Environment Variable Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:60
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:71
msgid "Core Log"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:67
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:57
msgid "Core Status"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:60
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:50
msgid "Core Version"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:137
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:117
msgid "Cron Expression"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:466
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152
msgid "DNS Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:472
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:158
msgid "DNS Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:468
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:154
msgid "DNS Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:273
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:134
msgid "Destination TCP Port to Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:278
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:139
msgid "Destination UDP Port to Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:353
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40
msgid "Direct Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:358
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:45
msgid "Disable"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:162
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:142
msgid "Disable ECN of quic-go"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:158
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:138
msgid "Disable GSO of quic-go"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:134
msgid "Disable Loopback Detector"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:150
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:130
msgid "Disable Safe Path Check"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:506
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192
msgid "DoH Prefer HTTP/3"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:532
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218
msgid "Domain Name"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:425
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:111
msgid "Edit Authentications"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:488
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:174
msgid "Edit Fake-IP Filters"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:521
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207
msgid "Edit Hosts"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:563
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249
msgid "Edit Nameserver Policies"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:540
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226
msgid "Edit Nameservers"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:287
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:32
msgid "Edit Subscription"
msgstr ""
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:22
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:23
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:45
msgid "Editor"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:108
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:170
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:357
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:433
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:529
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:548
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:571
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:96
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:215
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:234
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:257
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31
msgid "Enable"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:463
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:149
msgid "Endpoint Independent NAT"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:302
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:47
msgid "Expire At"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:374
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:61
msgid "External Control Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:498
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184
msgid "Fake-IP Cache"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:492
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:178
msgid "Fake-IP Filter Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:477
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:163
msgid "Fake-IP Range"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:145
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:125
msgid "Fast Reload"
msgstr ""
@ -242,60 +240,60 @@ msgstr ""
msgid "File for Reserved IP6"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:115
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:103
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29
msgid "File:"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:454
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:140
msgid "GSO"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:457
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143
msgid "GSO Max Size"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:341
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:28
msgid "General Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:585
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:271
msgid "GeoData Loader"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:581
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:267
msgid "GeoIP Format"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:598
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284
msgid "GeoIP(ASN) Url"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:595
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281
msgid "GeoIP(DAT) Url"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:592
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278
msgid "GeoIP(MMDB) Url"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:589
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275
msgid "GeoSite Url"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:601
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287
msgid "GeoX Auto Update"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:579
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:265
msgid "GeoX Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:604
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290
msgid "GeoX Update Interval"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:351
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:38
msgid "Global Mode"
msgstr ""
@ -303,212 +301,222 @@ msgstr ""
msgid "Grant access to mihomo procedures"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:402
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:88
msgid "HTTP Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39
msgid "How To Use"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:535
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221
msgid "IP"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:182
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:43
msgid "IPv4 DNS Hijack"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:188
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:49
msgid "IPv4 Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:509
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195
msgid "IPv6"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:185
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:46
msgid "IPv6 DNS Hijack"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:191
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:52
msgid "IPv6 Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:397
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:83
msgid "Inbound Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:247
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:108
msgid "Interface"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:197
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:58
msgid "Lan Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:337
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:82
msgid "Local"
msgstr ""
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:30
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:36
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53
msgid "Log"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:343
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:30
msgid "Log Level"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:450
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:136
msgid "MTU"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:355
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:42
msgid "Match Process"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:574
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260
msgid "Matcher"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:587
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:273
msgid "Memory Conservative Loader"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3
msgid "MihomoTProxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:410
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:96
msgid "Mixed Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125
msgid "Mixin"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:339
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:21
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:29
msgid "Mixin Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:610
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:296
msgid "Mixin File Content"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:202
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:350
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:26
msgid "Mixin Option"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:37
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:63
msgid "Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:558
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:577
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:244
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263
msgid "Nameserver"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
msgid "Not Running"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:99
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:89
msgid "Open Dashboard"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:360
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:47
msgid "Outbound Interface"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:422
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:108
msgid "Overwrite Authentication"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:483
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:169
msgid "Overwrite Fake-IP Filter"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:518
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204
msgid "Overwrite Hosts"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:537
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:223
msgid "Overwrite Nameserver"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:560
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:246
msgid "Overwrite Nameserver Policy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:439
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:125
msgid "Password"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
msgid "Please go to the editor tab to edit the file for mixin"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:78
msgid "Prefer"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:18
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:21
msgid "Profile"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:37
msgid "Profile for Startup"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:166
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:27
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:37
msgid "Proxy Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:174
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:35
msgid "Redirect Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:414
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:100
msgid "Redirect Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:79
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:69
msgid "Reload Service"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:336
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:81
msgid "Remote"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:503
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:189
msgid "Respect Rules"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:86
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:76
msgid "Restart Service"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:194
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:55
msgid "Router Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:39
msgid "Rule Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
msgid "Running"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:406
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:92
msgid "SOCKS Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:394
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:80
msgid "Save Proxy Selection"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:134
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:114
msgid "Scheduled Restart"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:54
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:87
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:65
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:98
msgid "Scroll To Bottom"
msgstr ""
@ -517,102 +525,98 @@ msgstr ""
msgid "Service is not running."
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:445
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131
msgid "Stack"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:586
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:272
msgid "Standard Loader"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:130
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:110
msgid "Start Delay"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:128
msgid "Startup Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:51
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:41
msgid "Status"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:283
msgid "Subscription Config"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:28
msgid "Subscription"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:289
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:34
msgid "Subscription Name"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:321
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:66
msgid "Subscription Url"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:119
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:107
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33
msgid "Subscription:"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:366
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:53
msgid "TCP Keep Alive Idle"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:370
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:57
msgid "TCP Keep Alive Interval"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:173
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:34
msgid "TCP Proxy Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:175
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:179
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:36
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:40
msgid "TPROXY Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:418
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:104
msgid "TPROXY Port"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:443
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:129
msgid "TUN Config"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:176
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:180
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:37
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:41
msgid "TUN Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:142
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:122
msgid "Test Profile"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:297
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:42
msgid "Total"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:168
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:29
msgid "Transparent Proxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39
msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:551
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237
msgid "Type"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:39
msgid "UDP Proxy Mode"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:376
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:63
msgid "UI Name"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:379
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:65
msgid "UI Url"
msgstr ""
@ -621,38 +625,38 @@ msgstr ""
msgid "Unknown"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:315
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:60
msgid "Update"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:307
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:52
msgid "Update At"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:93
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:83
msgid "Update Dashboard"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:122
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:20
msgid "Upload Profile"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:515
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201
msgid "Use Hosts"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:512
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198
msgid "Use System Hosts"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:292
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:37
msgid "Used"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:325
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:70
msgid "User Agent"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:436
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:122
msgid "Username"
msgstr ""

View File

@ -8,232 +8,230 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:386
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:72
msgid "API Port"
msgstr "API 端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:390
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:76
msgid "API Secret"
msgstr "API 密钥"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:200
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:61
msgid "Access Control"
msgstr "访问控制"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:203
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:64
msgid "All Mode"
msgstr "全部模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:275
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:280
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:136
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:141
msgid "All Port"
msgstr "全部端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:399
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:85
msgid "Allow Lan"
msgstr "允许局域网访问"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:204
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:495
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:181
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:65
msgid "Allow Mode"
msgstr "白名单模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:106
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:94
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:13
msgid "App Config"
msgstr "插件配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:27
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:38
msgid "App Log"
msgstr "插件日志"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:53
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:43
msgid "App Version"
msgstr "插件版本"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:356
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:43
msgid "Auto"
msgstr "自动"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:104
msgid "Basic Config"
msgstr "基础配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:205
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:494
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:180
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:66
msgid "Block Mode"
msgstr "黑名单模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:254
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:115
msgid "Bypass"
msgstr "绕过"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:270
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:131
msgid "Bypass China Mainland IP"
msgstr "绕过中国大陆 IP"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:263
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:124
msgid "Bypass Group"
msgstr "绕过用户组"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:256
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:117
msgid "Bypass User"
msgstr "绕过用户"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:111
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:25
msgid "Choose File"
msgstr "选择文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:99
msgid "Choose Profile"
msgstr "选择配置文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:31
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:64
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:42
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:75
msgid "Clear Log"
msgstr "清空日志"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:276
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:281
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:137
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:142
msgid "Commonly Used Port"
msgstr "常用端口"
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:14
msgid "Config"
msgstr "配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:148
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:128
msgid "Core Environment Variable Config"
msgstr "核心环境变量配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:60
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:71
msgid "Core Log"
msgstr "核心日志"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:67
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:57
msgid "Core Status"
msgstr "核心状态"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:60
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:50
msgid "Core Version"
msgstr "核心版本"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:137
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:117
msgid "Cron Expression"
msgstr "Cron 表达式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:466
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:152
msgid "DNS Config"
msgstr "DNS 配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:472
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:158
msgid "DNS Mode"
msgstr "DNS 模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:468
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:154
msgid "DNS Port"
msgstr "DNS 端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:273
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:134
msgid "Destination TCP Port to Proxy"
msgstr "要代理的 TCP 目标端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:278
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:139
msgid "Destination UDP Port to Proxy"
msgstr "要代理的 UDP 目标端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:353
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:40
msgid "Direct Mode"
msgstr "直连模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:358
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:45
msgid "Disable"
msgstr "禁用"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:162
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:142
msgid "Disable ECN of quic-go"
msgstr "禁用 quic-go 的显式拥塞通"
msgstr "禁用 quic-go 的显式拥塞通"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:158
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:138
msgid "Disable GSO of quic-go"
msgstr "禁用 quic-go 的通用分段卸载"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:154
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:134
msgid "Disable Loopback Detector"
msgstr "禁用回环检测"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:150
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:130
msgid "Disable Safe Path Check"
msgstr "禁用安全路径检查"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:506
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:192
msgid "DoH Prefer HTTP/3"
msgstr "DoH 优先 HTTP/3"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:532
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:218
msgid "Domain Name"
msgstr "域名"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:425
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:111
msgid "Edit Authentications"
msgstr "编辑身份验证"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:488
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:174
msgid "Edit Fake-IP Filters"
msgstr "编辑 Fake-IP 过滤列表"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:521
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:207
msgid "Edit Hosts"
msgstr "编辑 Hosts"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:563
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:249
msgid "Edit Nameserver Policies"
msgstr "编辑 DNS 服务器查询策略"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:540
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:226
msgid "Edit Nameservers"
msgstr "编辑 DNS 服务器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:287
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:32
msgid "Edit Subscription"
msgstr "编辑订阅"
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:22
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:23
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:45
msgid "Editor"
msgstr "编辑器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:108
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:170
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:357
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:433
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:529
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:548
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:571
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:96
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:23
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:44
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:119
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:215
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:234
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:257
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:31
msgid "Enable"
msgstr "启用"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:463
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:149
msgid "Endpoint Independent NAT"
msgstr "独立于端点的 NAT"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:302
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:47
msgid "Expire At"
msgstr "到期时间"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:374
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:61
msgid "External Control Config"
msgstr "外部控制配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:498
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:184
msgid "Fake-IP Cache"
msgstr "Fake-IP 缓存"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:492
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:178
msgid "Fake-IP Filter Mode"
msgstr "Fake-IP 过滤模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:477
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:163
msgid "Fake-IP Range"
msgstr "Fake-IP 范围"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:145
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:125
msgid "Fast Reload"
msgstr "快速重载"
@ -249,60 +247,60 @@ msgstr "IPv4 保留地址"
msgid "File for Reserved IP6"
msgstr "IPv6 保留地址"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:115
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:103
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:29
msgid "File:"
msgstr "文件:"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:454
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:140
msgid "GSO"
msgstr "通用分段卸载"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:457
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:143
msgid "GSO Max Size"
msgstr "分段最大长度"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:341
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:28
msgid "General Config"
msgstr "全局配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:585
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:271
msgid "GeoData Loader"
msgstr "GeoData 加载器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:581
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:267
msgid "GeoIP Format"
msgstr "GeoIP 格式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:598
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:284
msgid "GeoIP(ASN) Url"
msgstr "GeoIP(ASN) 下载地址"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:595
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:281
msgid "GeoIP(DAT) Url"
msgstr "GeoIP(DAT) 下载地址"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:592
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:278
msgid "GeoIP(MMDB) Url"
msgstr "GeoIP(MMDB) 下载地址"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:589
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:275
msgid "GeoSite Url"
msgstr "GeoSite 下载地址"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:601
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:287
msgid "GeoX Auto Update"
msgstr "定时更新GeoX文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:579
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:265
msgid "GeoX Config"
msgstr "GeoX 配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:604
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:290
msgid "GeoX Update Interval"
msgstr "GeoX 文件更新间隔"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:351
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:38
msgid "Global Mode"
msgstr "全局模式"
@ -310,212 +308,222 @@ msgstr "全局模式"
msgid "Grant access to mihomo procedures"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:402
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:88
msgid "HTTP Port"
msgstr "HTTP 端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39
msgid "How To Use"
msgstr "使用说明"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:535
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:221
msgid "IP"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:182
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:43
msgid "IPv4 DNS Hijack"
msgstr "IPv4 DNS 劫持"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:188
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:49
msgid "IPv4 Proxy"
msgstr "IPv4 代理"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:363
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:509
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:50
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:195
msgid "IPv6"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:185
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:46
msgid "IPv6 DNS Hijack"
msgstr "IPv6 DNS 劫持"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:191
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:52
msgid "IPv6 Proxy"
msgstr "IPv6 代理"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:397
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:83
msgid "Inbound Config"
msgstr "入站配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:247
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:108
msgid "Interface"
msgstr "接口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:197
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:58
msgid "Lan Proxy"
msgstr "局域网代理"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:337
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:82
msgid "Local"
msgstr "本地"
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:30
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:36
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:53
msgid "Log"
msgstr "日志"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:343
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:30
msgid "Log Level"
msgstr "日志级别"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:450
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:136
msgid "MTU"
msgstr "最大传输单元"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:355
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:42
msgid "Match Process"
msgstr "匹配进程"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:574
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:260
msgid "Matcher"
msgstr "匹配"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:587
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:273
msgid "Memory Conservative Loader"
msgstr "为内存受限设备优化的加载器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:3
msgid "MihomoTProxy"
msgstr ""
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:410
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:96
msgid "Mixed Port"
msgstr "混合端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:125
msgid "Mixin"
msgstr "混入"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:339
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:21
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:29
msgid "Mixin Config"
msgstr "混入配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:610
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:296
msgid "Mixin File Content"
msgstr "混入文件内容"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:202
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:350
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:26
msgid "Mixin Option"
msgstr "混入选项"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:37
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:63
msgid "Mode"
msgstr "模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:558
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:577
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:244
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:263
msgid "Nameserver"
msgstr "DNS 服务器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
msgid "Not Running"
msgstr "未在运行"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:99
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:89
msgid "Open Dashboard"
msgstr "打开面板"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:360
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:47
msgid "Outbound Interface"
msgstr "出站接口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:422
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:108
msgid "Overwrite Authentication"
msgstr "覆盖身份验证"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:483
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:169
msgid "Overwrite Fake-IP Filter"
msgstr "覆盖 Fake-IP 过滤列表"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:518
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:204
msgid "Overwrite Hosts"
msgstr "覆盖 Hosts"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:537
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:223
msgid "Overwrite Nameserver"
msgstr "覆盖 DNS 服务器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:560
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:246
msgid "Overwrite Nameserver Policy"
msgstr "覆盖 DNS 服务器查询策略"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:439
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:125
msgid "Password"
msgstr "密码"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:612
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:298
msgid "Please go to the editor tab to edit the file for mixin"
msgstr "请前往编辑器标签编辑用于混入的文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:333
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:78
msgid "Prefer"
msgstr "优先"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:18
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:21
msgid "Profile"
msgstr "配置文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:37
msgid "Profile for Startup"
msgstr "用于启动的配置文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:166
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:27
#: applications/luci-app-mihomo/root/usr/share/luci/menu.d/luci-app-mihomo.json:37
msgid "Proxy Config"
msgstr "代理配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:174
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:35
msgid "Redirect Mode"
msgstr "Redirect 模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:414
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:100
msgid "Redirect Port"
msgstr "Redirect 端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:79
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:69
msgid "Reload Service"
msgstr "重载服务"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:336
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:81
msgid "Remote"
msgstr "远程"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:503
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:189
msgid "Respect Rules"
msgstr "遵循分流规则"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:86
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:76
msgid "Restart Service"
msgstr "重启服务"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:194
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:55
msgid "Router Proxy"
msgstr "路由器代理"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:352
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:39
msgid "Rule Mode"
msgstr "规则模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:19
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:15
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:15
msgid "Running"
msgstr "运行中"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:406
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:92
msgid "SOCKS Port"
msgstr "SOCKS 端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:394
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:80
msgid "Save Proxy Selection"
msgstr "保存节点/策略组选择"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:134
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:114
msgid "Scheduled Restart"
msgstr "定时重启"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:54
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:87
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:65
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/log.js:98
msgid "Scroll To Bottom"
msgstr "滚动到底部"
@ -524,102 +532,98 @@ msgstr "滚动到底部"
msgid "Service is not running."
msgstr "服务未在运行。"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:445
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:131
msgid "Stack"
msgstr "栈"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:586
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:272
msgid "Standard Loader"
msgstr "标准加载器"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:130
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:110
msgid "Start Delay"
msgstr "启动延迟"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:128
msgid "Startup Config"
msgstr "启动配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:51
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:41
msgid "Status"
msgstr "状态"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:283
msgid "Subscription Config"
msgstr "订阅配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:28
msgid "Subscription"
msgstr "订阅"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:289
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:34
msgid "Subscription Name"
msgstr "订阅名称"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:321
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:66
msgid "Subscription Url"
msgstr "订阅链接"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:119
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:107
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/editor.js:33
msgid "Subscription:"
msgstr "订阅:"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:366
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:53
msgid "TCP Keep Alive Idle"
msgstr "TCP Keep Alive 空闲"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:370
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:57
msgid "TCP Keep Alive Interval"
msgstr "TCP Keep Alive 间隔"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:173
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:34
msgid "TCP Proxy Mode"
msgstr "TCP 代理模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:175
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:179
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:36
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:40
msgid "TPROXY Mode"
msgstr "TPROXY 模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:418
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:104
msgid "TPROXY Port"
msgstr "TPROXY 端口"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:443
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:129
msgid "TUN Config"
msgstr "TUN 配置"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:176
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:180
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:37
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:41
msgid "TUN Mode"
msgstr "TUN 模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:142
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:122
msgid "Test Profile"
msgstr "检查配置文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:297
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:42
msgid "Total"
msgstr "总量"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:168
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:29
msgid "Transparent Proxy"
msgstr "透明代理"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:49
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:39
msgid "Transparent Proxy with Mihomo on OpenWrt."
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:551
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:237
msgid "Type"
msgstr "类型"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:178
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/proxy.js:39
msgid "UDP Proxy Mode"
msgstr "UDP 代理模式"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:376
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:63
msgid "UI Name"
msgstr "UI 名称"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:379
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:65
msgid "UI Url"
msgstr "UI 下载地址"
@ -628,38 +632,38 @@ msgstr "UI 下载地址"
msgid "Unknown"
msgstr "未知"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:315
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:60
msgid "Update"
msgstr "更新"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:307
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:52
msgid "Update At"
msgstr "更新时间"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:93
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/app.js:83
msgid "Update Dashboard"
msgstr "更新面板"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:122
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:20
msgid "Upload Profile"
msgstr "上传配置文件"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:515
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:201
msgid "Use Hosts"
msgstr "使用 Hosts"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:512
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:198
msgid "Use System Hosts"
msgstr "使用系统的 Hosts"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:292
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:37
msgid "Used"
msgstr "已使用"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:325
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/profile.js:70
msgid "User Agent"
msgstr "用户代理UA"
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/config.js:436
#: applications/luci-app-mihomo/htdocs/luci-static/resources/view/mihomo/mixin.js:122
msgid "Username"
msgstr "用户名"

View File

@ -2,8 +2,7 @@
"admin/services/mihomo": {
"title": "MihomoTProxy",
"action": {
"type": "alias",
"path": "admin/services/mihomo/config"
"type": "firstchild"
},
"depends": {
"acl": [ "luci-app-mihomo" ],
@ -11,16 +10,40 @@
}
},
"admin/services/mihomo/config": {
"title": "Config",
"title": "App Config",
"order": 10,
"action": {
"type": "view",
"path": "mihomo/config"
"path": "mihomo/app"
}
},
"admin/services/mihomo/profile": {
"title": "Profile",
"order": 20,
"action": {
"type": "view",
"path": "mihomo/profile"
}
},
"admin/services/mihomo/mixin": {
"title": "Mixin Config",
"order": 30,
"action": {
"type": "view",
"path": "mihomo/mixin"
}
},
"admin/services/mihomo/proxy": {
"title": "Proxy Config",
"order": 40,
"action": {
"type": "view",
"path": "mihomo/proxy"
}
},
"admin/services/mihomo/editor": {
"title": "Editor",
"order": 20,
"order": 50,
"action": {
"type": "view",
"path": "mihomo/editor"
@ -28,7 +51,7 @@
},
"admin/services/mihomo/log": {
"title": "Log",
"order": 30,
"order": 60,
"action": {
"type": "view",
"path": "mihomo/log"

View File

@ -7,7 +7,7 @@ include $(TOPDIR)/rules.mk
PKG_NAME:=luci-app-passwall
PKG_VERSION:=24.12.17
PKG_RELEASE:=1
PKG_RELEASE:=2
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_$(PKG_NAME)_Iptables_Transparent_Proxy \

View File

@ -1969,7 +1969,7 @@ start() {
}
[ -n "$USE_TABLES" ] && source $APP_PATH/${USE_TABLES}.sh start
set_cache_var "USE_TABLES" "$USE_TABLES"
[ -z $(get_cache_var "ACL_default_dns_port") ] && lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1
[ -z "$(get_cache_var "ACL_default_dns_port")" ] && lua $APP_PATH/helper_dnsmasq.lua logic_restart -LOG 1
if [ "$ENABLED_DEFAULT_ACL" == 1 ] || [ "$ENABLED_ACLS" == 1 ]; then
bridge_nf_ipt=$(sysctl -e -n net.bridge.bridge-nf-call-iptables)
set_cache_var "bak_bridge_nf_ipt" "$bridge_nf_ipt"
@ -1999,7 +1999,7 @@ stop() {
source $APP_PATH/helper_smartdns.sh del
rm -rf $GLOBAL_DNSMASQ_CONF
rm -rf $GLOBAL_DNSMASQ_CONF_PATH
[ -z $(get_cache_var "ACL_default_dns_port") ] && lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
[ -z "$(get_cache_var "ACL_default_dns_port")" ] && lua $APP_PATH/helper_dnsmasq.lua restart -LOG 0
bak_bridge_nf_ipt=$(get_cache_var "bak_bridge_nf_ipt")
[ -n "${bak_bridge_nf_ipt}" ] && sysctl -w net.bridge.bridge-nf-call-iptables=${bak_bridge_nf_ipt} >/dev/null 2>&1
bak_bridge_nf_ip6t=$(get_cache_var "bak_bridge_nf_ip6t")

View File

@ -214,11 +214,11 @@ load_acl() {
[ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS
[ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS
[ -n $(get_cache_var "ACL_${sid}_tcp_node") ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node")
[ -n $(get_cache_var "ACL_${sid}_udp_node") ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node")
[ -n $(get_cache_var "ACL_${sid}_tcp_port") ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port")
[ -n $(get_cache_var "ACL_${sid}_udp_port") ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port")
[ -n $(get_cache_var "ACL_${sid}_dns_port") ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port")
[ -n "$(get_cache_var "ACL_${sid}_tcp_node")" ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node")
[ -n "$(get_cache_var "ACL_${sid}_udp_node")" ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node")
[ -n "$(get_cache_var "ACL_${sid}_tcp_port")" ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port")
[ -n "$(get_cache_var "ACL_${sid}_udp_port")" ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port")
[ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port")
use_shunt_tcp=0
use_shunt_udp=0

View File

@ -274,11 +274,11 @@ load_acl() {
[ "$tcp_redir_ports" = "default" ] && tcp_redir_ports=$TCP_REDIR_PORTS
[ "$udp_redir_ports" = "default" ] && udp_redir_ports=$UDP_REDIR_PORTS
[ -n $(get_cache_var "ACL_${sid}_tcp_node") ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node")
[ -n $(get_cache_var "ACL_${sid}_udp_node") ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node")
[ -n $(get_cache_var "ACL_${sid}_tcp_port") ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port")
[ -n $(get_cache_var "ACL_${sid}_udp_port") ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port")
[ -n $(get_cache_var "ACL_${sid}_dns_port") ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port")
[ -n "$(get_cache_var "ACL_${sid}_tcp_node")" ] && tcp_node=$(get_cache_var "ACL_${sid}_tcp_node")
[ -n "$(get_cache_var "ACL_${sid}_udp_node")" ] && udp_node=$(get_cache_var "ACL_${sid}_udp_node")
[ -n "$(get_cache_var "ACL_${sid}_tcp_port")" ] && tcp_port=$(get_cache_var "ACL_${sid}_tcp_port")
[ -n "$(get_cache_var "ACL_${sid}_udp_port")" ] && udp_port=$(get_cache_var "ACL_${sid}_udp_port")
[ -n "$(get_cache_var "ACL_${sid}_dns_port")" ] && dns_redirect_port=$(get_cache_var "ACL_${sid}_dns_port")
use_shunt_tcp=0
use_shunt_udp=0

View File

@ -82,7 +82,7 @@ test_auto_switch() {
local b_nodes=$1
local now_node=$2
[ -z "$now_node" ] && {
if [ -n $(/usr/share/${CONFIG}/app.sh get_cache_var "socks_${id}") ]; then
if [ -n "$(/usr/share/${CONFIG}/app.sh get_cache_var "socks_${id}")" ]; then
now_node=$(/usr/share/${CONFIG}/app.sh get_cache_var "socks_${id}")
else
#echolog "自动切换检测:未知错误"

View File

@ -3,12 +3,12 @@ config status 'status'
config config 'config'
option 'init' '1'
option 'enabled' '0'
option 'profile' 'subscription:subscription'
option 'start_delay' '0'
option 'scheduled_restart' '0'
option 'cron_expression' '0 3 * * *'
option 'profile' 'subscription:subscription'
option 'mixin' '1'
option 'test_profile' '1'
option 'mixin' '1'
config proxy 'proxy'
option 'transparent_proxy' '1'
@ -57,7 +57,7 @@ config mixin 'mixin'
option 'tcp_keep_alive_idle' '600'
option 'tcp_keep_alive_interval' '15'
option 'ui_name' 'metacubexd'
option 'ui_url' 'https://ghp.ci/https://github.com/MetaCubeX/metacubexd/archive/refs/heads/gh-pages.zip'
option 'ui_url' 'https://github.com/Zephyruso/zashboard/archive/refs/heads/gh-pages.zip'
option 'api_port' '9090'
option 'api_secret' ''
option 'selection_cache' '1'
@ -90,10 +90,10 @@ config mixin 'mixin'
option 'dns_nameserver_policy' '0'
option 'geoip_format' 'dat'
option 'geodata_loader' 'memconservative'
option 'geosite_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat'
option 'geoip_mmdb_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.metadb'
option 'geoip_dat_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat'
option 'geoip_asn_url' 'https://ghp.ci/https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb'
option 'geosite_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geosite.dat'
option 'geoip_mmdb_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.metadb'
option 'geoip_dat_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/geoip-lite.dat'
option 'geoip_asn_url' 'https://github.com/MetaCubeX/meta-rules-dat/releases/download/latest/GeoLite2-ASN.mmdb'
option 'geox_auto_update' '0'
option 'geox_update_interval' '24'
option 'mixin_file_content' '0'