Compare commits
2 Commits
1d794d2efc
...
73586f1afa
Author | SHA1 | Date | |
---|---|---|---|
![]() |
73586f1afa | ||
![]() |
30cf173156 |
@ -1,6 +1,6 @@
|
|||||||
include $(TOPDIR)/rules.mk
|
include $(TOPDIR)/rules.mk
|
||||||
|
|
||||||
PKG_VERSION:=1.21.2
|
PKG_VERSION:=1.22.0
|
||||||
|
|
||||||
LUCI_TITLE:=LuCI Support for nikki
|
LUCI_TITLE:=LuCI Support for nikki
|
||||||
LUCI_DEPENDS:=+luci-base +nikki
|
LUCI_DEPENDS:=+luci-base +nikki
|
||||||
|
@ -37,7 +37,8 @@ return view.extend({
|
|||||||
|
|
||||||
m = new form.Map('nikki', _('Nikki'), `${_('Transparent Proxy with Mihomo on OpenWrt.')} <a href="https://github.com/nikkinikki-org/OpenWrt-nikki/wiki" target="_blank">${_('How To Use')}</a>`);
|
m = new form.Map('nikki', _('Nikki'), `${_('Transparent Proxy with Mihomo on OpenWrt.')} <a href="https://github.com/nikkinikki-org/OpenWrt-nikki/wiki" target="_blank">${_('How To Use')}</a>`);
|
||||||
|
|
||||||
s = m.section(form.NamedSection, 'status', 'status', _('Status'));
|
s = m.section(form.TableSection, 'status', _('Status'));
|
||||||
|
s.anonymous = true;
|
||||||
|
|
||||||
o = s.option(form.Value, '_app_version', _('App Version'));
|
o = s.option(form.Value, '_app_version', _('App Version'));
|
||||||
o.readonly = true;
|
o.readonly = true;
|
||||||
@ -63,28 +64,28 @@ return view.extend({
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
o = s.option(form.Button, 'reload', '-');
|
o = s.option(form.Button, 'reload');
|
||||||
o.inputstyle = 'action';
|
o.inputstyle = 'action';
|
||||||
o.inputtitle = _('Reload Service');
|
o.inputtitle = _('Reload Service');
|
||||||
o.onclick = function () {
|
o.onclick = function () {
|
||||||
return nikki.reload();
|
return nikki.reload();
|
||||||
};
|
};
|
||||||
|
|
||||||
o = s.option(form.Button, 'restart', '-');
|
o = s.option(form.Button, 'restart');
|
||||||
o.inputstyle = 'negative';
|
o.inputstyle = 'negative';
|
||||||
o.inputtitle = _('Restart Service');
|
o.inputtitle = _('Restart Service');
|
||||||
o.onclick = function () {
|
o.onclick = function () {
|
||||||
return nikki.restart();
|
return nikki.restart();
|
||||||
};
|
};
|
||||||
|
|
||||||
o = s.option(form.Button, 'update_dashboard', '-');
|
o = s.option(form.Button, 'update_dashboard');
|
||||||
o.inputstyle = 'positive';
|
o.inputstyle = 'positive';
|
||||||
o.inputtitle = _('Update Dashboard');
|
o.inputtitle = _('Update Dashboard');
|
||||||
o.onclick = function () {
|
o.onclick = function () {
|
||||||
return nikki.updateDashboard();
|
return nikki.updateDashboard();
|
||||||
};
|
};
|
||||||
|
|
||||||
o = s.option(form.Button, 'open_dashboard', '-');
|
o = s.option(form.Button, 'open_dashboard');
|
||||||
o.inputtitle = _('Open Dashboard');
|
o.inputtitle = _('Open Dashboard');
|
||||||
o.onclick = function () {
|
o.onclick = function () {
|
||||||
return nikki.openDashboard();
|
return nikki.openDashboard();
|
||||||
|
@ -29,8 +29,8 @@ return view.extend({
|
|||||||
o = s.taboption('app_log', form.Button, 'clear_app_log');
|
o = s.taboption('app_log', form.Button, 'clear_app_log');
|
||||||
o.inputstyle = 'negative';
|
o.inputstyle = 'negative';
|
||||||
o.inputtitle = _('Clear Log');
|
o.inputtitle = _('Clear Log');
|
||||||
o.onclick = function () {
|
o.onclick = function (_, section_id) {
|
||||||
m.lookupOption('nikki.log._app_log')[0].getUIElement('log').setValue('');
|
m.lookupOption('_app_log', section_id)[0].getUIElement(section_id).setValue('');
|
||||||
return nikki.clearAppLog();
|
return nikki.clearAppLog();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -52,8 +52,8 @@ return view.extend({
|
|||||||
|
|
||||||
o = s.taboption('app_log', form.Button, 'scroll_app_log_to_bottom');
|
o = s.taboption('app_log', form.Button, 'scroll_app_log_to_bottom');
|
||||||
o.inputtitle = _('Scroll To Bottom');
|
o.inputtitle = _('Scroll To Bottom');
|
||||||
o.onclick = function () {
|
o.onclick = function (_, section_id) {
|
||||||
const element = m.lookupOption('nikki.log._app_log')[0].getUIElement('log').node.firstChild;
|
const element = m.lookupOption('_app_log', section_id)[0].getUIElement(section_id).node.firstChild;
|
||||||
element.scrollTop = element.scrollHeight;
|
element.scrollTop = element.scrollHeight;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -62,8 +62,8 @@ return view.extend({
|
|||||||
o = s.taboption('core_log', form.Button, 'clear_core_log');
|
o = s.taboption('core_log', form.Button, 'clear_core_log');
|
||||||
o.inputstyle = 'negative';
|
o.inputstyle = 'negative';
|
||||||
o.inputtitle = _('Clear Log');
|
o.inputtitle = _('Clear Log');
|
||||||
o.onclick = function () {
|
o.onclick = function (_, section_id) {
|
||||||
m.lookupOption('nikki.log._core_log')[0].getUIElement('log').setValue('');
|
m.lookupOption('_core_log', section_id)[0].getUIElement(section_id).setValue('');
|
||||||
return nikki.clearCoreLog();
|
return nikki.clearCoreLog();
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -85,8 +85,8 @@ return view.extend({
|
|||||||
|
|
||||||
o = s.taboption('core_log', form.Button, 'scroll_core_log_to_bottom');
|
o = s.taboption('core_log', form.Button, 'scroll_core_log_to_bottom');
|
||||||
o.inputtitle = _('Scroll To Bottom');
|
o.inputtitle = _('Scroll To Bottom');
|
||||||
o.onclick = function () {
|
o.onclick = function (_, section_id) {
|
||||||
const element = m.lookupOption('nikki.log._core_log')[0].getUIElement('log').node.firstChild;
|
const element = m.lookupOption('_core_log', section_id)[0].getUIElement(section_id).node.firstChild;
|
||||||
element.scrollTop = element.scrollHeight;
|
element.scrollTop = element.scrollHeight;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -61,7 +61,7 @@ return view.extend({
|
|||||||
o.value(network.getName());
|
o.value(network.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
o = s.taboption('general', form.ListValue, 'ipv6', _('IPv6'));
|
o = s.taboption('general', form.ListValue, 'ipv6', 'IPv6');
|
||||||
o.optional = true;
|
o.optional = true;
|
||||||
o.placeholder = _('Unmodified');
|
o.placeholder = _('Unmodified');
|
||||||
o.value('0', _('Disable'));
|
o.value('0', _('Disable'));
|
||||||
@ -233,7 +233,7 @@ return view.extend({
|
|||||||
o.placeholder = _('Unmodified');
|
o.placeholder = _('Unmodified');
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('dns', form.ListValue, 'dns_ipv6', _('IPv6'));
|
o = s.taboption('dns', form.ListValue, 'dns_ipv6', 'IPv6');
|
||||||
o.optional = true;
|
o.optional = true;
|
||||||
o.placeholder = _('Unmodified');
|
o.placeholder = _('Unmodified');
|
||||||
o.value('0', _('Disable'));
|
o.value('0', _('Disable'));
|
||||||
@ -309,7 +309,7 @@ return view.extend({
|
|||||||
so = o.subsection.option(form.Value, 'domain_name', _('Domain Name'));
|
so = o.subsection.option(form.Value, 'domain_name', _('Domain Name'));
|
||||||
so.rmempty = false;
|
so.rmempty = false;
|
||||||
|
|
||||||
so = o.subsection.option(form.DynamicList, 'ip', _('IP'));
|
so = o.subsection.option(form.DynamicList, 'ip', 'IP');
|
||||||
|
|
||||||
o = s.taboption('dns', form.Flag, 'dns_nameserver', _('Overwrite Nameserver'));
|
o = s.taboption('dns', form.Flag, 'dns_nameserver', _('Overwrite Nameserver'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
@ -22,104 +22,87 @@ return view.extend({
|
|||||||
const groups = data[3]?.groups ?? [];
|
const groups = data[3]?.groups ?? [];
|
||||||
const cgroups = data[3]?.cgroups ?? [];
|
const cgroups = data[3]?.cgroups ?? [];
|
||||||
|
|
||||||
let m, s, o;
|
let m, s, o, so;
|
||||||
|
|
||||||
m = new form.Map('nikki');
|
m = new form.Map('nikki');
|
||||||
|
|
||||||
s = m.section(form.NamedSection, 'proxy', 'proxy', _('Proxy Config'));
|
s = m.section(form.NamedSection, 'proxy', 'proxy', _('Proxy Config'));
|
||||||
|
|
||||||
s.tab('transparent_proxy', _('Transparent Proxy'));
|
s.tab('proxy', _('Proxy Config'));
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'transparent_proxy', _('Enable'));
|
o = s.taboption('proxy', form.Flag, 'enabled', _('Enable'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.ListValue, 'tcp_transparent_proxy_mode', _('TCP Proxy Mode'));
|
o = s.taboption('proxy', form.ListValue, 'tcp_mode', _('TCP Mode'));
|
||||||
o.optional = true;
|
o.optional = true;
|
||||||
o.placeholder = _('Disable');
|
o.placeholder = _('Disable');
|
||||||
o.value('redirect', _('Redirect Mode'));
|
o.value('redirect', _('Redirect Mode'));
|
||||||
o.value('tproxy', _('TPROXY Mode'));
|
o.value('tproxy', _('TPROXY Mode'));
|
||||||
o.value('tun', _('TUN Mode'));
|
o.value('tun', _('TUN Mode'));
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.ListValue, 'udp_transparent_proxy_mode', _('UDP Proxy Mode'));
|
o = s.taboption('proxy', form.ListValue, 'udp_mode', _('UDP Mode'));
|
||||||
o.optional = true;
|
o.optional = true;
|
||||||
o.placeholder = _('Disable');
|
o.placeholder = _('Disable');
|
||||||
o.value('tproxy', _('TPROXY Mode'));
|
o.value('tproxy', _('TPROXY Mode'));
|
||||||
o.value('tun', _('TUN Mode'));
|
o.value('tun', _('TUN Mode'));
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'ipv4_dns_hijack', _('IPv4 DNS Hijack'));
|
o = s.taboption('proxy', form.Flag, 'ipv4_dns_hijack', _('IPv4 DNS Hijack'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'ipv6_dns_hijack', _('IPv6 DNS Hijack'));
|
o = s.taboption('proxy', form.Flag, 'ipv6_dns_hijack', _('IPv6 DNS Hijack'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'ipv4_proxy', _('IPv4 Proxy'));
|
o = s.taboption('proxy', form.Flag, 'ipv4_proxy', _('IPv4 Proxy'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'ipv6_proxy', _('IPv6 Proxy'));
|
o = s.taboption('proxy', form.Flag, 'ipv6_proxy', _('IPv6 Proxy'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'fake_ip_ping_hijack', _('Fake-IP Ping Hijack'));
|
o = s.taboption('proxy', form.Flag, 'fake_ip_ping_hijack', _('Fake-IP Ping Hijack'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'router_proxy', _('Router Proxy'));
|
s.tab('router', _('Router Proxy'));
|
||||||
|
|
||||||
|
o = s.taboption('router', form.Flag, 'router_proxy', _('Enable'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
o = s.taboption('transparent_proxy', form.Flag, 'lan_proxy', _('Lan Proxy'));
|
o = s.taboption('router', form.SectionValue, '_router_access_control', form.TableSection, 'router_access_control', _('Access Control'));
|
||||||
o.rmempty = false;
|
|
||||||
|
|
||||||
s.tab('access_control', _('Access Control'));
|
o.subsection.addremove = true;
|
||||||
|
o.subsection.anonymous = true;
|
||||||
|
o.subsection.sortable = true;
|
||||||
|
|
||||||
o = s.taboption('access_control', form.ListValue, 'access_control_mode', _('Mode'));
|
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
|
||||||
o.value('all', _('All Mode'));
|
so.default = '1';
|
||||||
o.value('allow', _('Allow Mode'));
|
so.rmempty = false;
|
||||||
o.value('block', _('Block Mode'));
|
|
||||||
|
|
||||||
o = s.taboption('access_control', form.DynamicList, 'acl_ip', 'IP');
|
so = o.subsection.option(form.DynamicList, 'user', _('User'));
|
||||||
o.datatype = 'ipmask4';
|
|
||||||
o.retain = true;
|
|
||||||
o.depends('access_control_mode', 'allow');
|
|
||||||
o.depends('access_control_mode', 'block');
|
|
||||||
|
|
||||||
for (const mac in hosts) {
|
for (const user of users) {
|
||||||
const host = hosts[mac];
|
so.value(user);
|
||||||
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');
|
so = o.subsection.option(form.DynamicList, 'group', _('Group'));
|
||||||
o.datatype = 'ipmask6';
|
|
||||||
o.retain = true;
|
|
||||||
o.depends('access_control_mode', 'allow');
|
|
||||||
o.depends('access_control_mode', 'block');
|
|
||||||
|
|
||||||
for (const mac in hosts) {
|
for (const group of groups) {
|
||||||
const host = hosts[mac];
|
so.value(group);
|
||||||
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');
|
so = o.subsection.option(form.DynamicList, 'cgroup', _('CGroup'));
|
||||||
o.datatype = 'macaddr';
|
|
||||||
o.retain = true;
|
|
||||||
o.depends('access_control_mode', 'allow');
|
|
||||||
o.depends('access_control_mode', 'block');
|
|
||||||
|
|
||||||
for (const mac in hosts) {
|
for (const cgroup of cgroups) {
|
||||||
const host = hosts[mac];
|
so.value(cgroup);
|
||||||
const hint = host.name ?? host.ipaddrs[0];
|
|
||||||
o.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
o = s.taboption('access_control', form.DynamicList, 'acl_interface', _('Interface'));
|
so = o.subsection.option(form.Flag, 'proxy', _('Proxy'));
|
||||||
o.multiple = true;
|
so.rmempty = false;
|
||||||
o.optional = true;
|
|
||||||
o.retain = true;
|
s.tab('lan', _('LAN Proxy'));
|
||||||
o.depends('access_control_mode', 'allow');
|
|
||||||
o.depends('access_control_mode', 'block');
|
o = s.taboption('lan', form.Flag, 'lan_proxy', _('Enable'));
|
||||||
|
|
||||||
|
o = s.taboption('lan', form.DynamicList, 'lan_inbound_interface', _('Inbound Interface'));
|
||||||
|
o.rmempty = false;
|
||||||
|
|
||||||
for (const network of networks) {
|
for (const network of networks) {
|
||||||
if (network.getName() === 'loopback') {
|
if (network.getName() === 'loopback') {
|
||||||
@ -128,26 +111,49 @@ return view.extend({
|
|||||||
o.value(network.getName());
|
o.value(network.getName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
o = s.taboption('lan', form.SectionValue, '_lan_access_control', form.TableSection, 'lan_access_control', _('Access Control'));
|
||||||
|
|
||||||
|
o.subsection.addremove = true;
|
||||||
|
o.subsection.anonymous = true;
|
||||||
|
o.subsection.sortable = true;
|
||||||
|
|
||||||
|
so = o.subsection.option(form.Flag, 'enabled', _('Enable'));
|
||||||
|
so.default = '1';
|
||||||
|
so.rmempty = false;
|
||||||
|
|
||||||
|
so = o.subsection.option(form.DynamicList, 'ip', 'IP');
|
||||||
|
|
||||||
|
for (const mac in hosts) {
|
||||||
|
const host = hosts[mac];
|
||||||
|
for (const ip of host.ipaddrs) {
|
||||||
|
const hint = host.name ?? mac;
|
||||||
|
so.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
so = o.subsection.option(form.DynamicList, 'ip6', 'IP6');
|
||||||
|
|
||||||
|
for (const mac in hosts) {
|
||||||
|
const host = hosts[mac];
|
||||||
|
for (const ip of host.ip6addrs) {
|
||||||
|
const hint = host.name ?? mac;
|
||||||
|
so.value(ip, hint ? '%s (%s)'.format(ip, hint) : ip);
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
so = o.subsection.option(form.DynamicList, 'mac', 'MAC');
|
||||||
|
|
||||||
|
for (const mac in hosts) {
|
||||||
|
const host = hosts[mac];
|
||||||
|
const hint = host.name ?? host.ipaddrs[0];
|
||||||
|
so.value(mac, hint ? '%s (%s)'.format(mac, hint) : mac);
|
||||||
|
};
|
||||||
|
|
||||||
|
so = o.subsection.option(form.Flag, 'proxy', _('Proxy'));
|
||||||
|
so.rmempty = false;
|
||||||
|
|
||||||
s.tab('bypass', _('Bypass'));
|
s.tab('bypass', _('Bypass'));
|
||||||
|
|
||||||
o = s.taboption('bypass', form.DynamicList, 'bypass_user', _('Bypass User'));
|
|
||||||
|
|
||||||
for (const user of users) {
|
|
||||||
o.value(user);
|
|
||||||
};
|
|
||||||
|
|
||||||
o = s.taboption('bypass', form.DynamicList, 'bypass_group', _('Bypass Group'));
|
|
||||||
|
|
||||||
for (const group of groups) {
|
|
||||||
o.value(group);
|
|
||||||
};
|
|
||||||
|
|
||||||
o = s.taboption('bypass', form.DynamicList, 'bypass_cgroup', _('Bypass cgroup'));
|
|
||||||
|
|
||||||
for (const cgroup of cgroups) {
|
|
||||||
o.value(cgroup);
|
|
||||||
};
|
|
||||||
|
|
||||||
o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP'));
|
o = s.taboption('bypass', form.Flag, 'bypass_china_mainland_ip', _('Bypass China Mainland IP'));
|
||||||
o.rmempty = false;
|
o.rmempty = false;
|
||||||
|
|
||||||
|
@ -1,33 +1,29 @@
|
|||||||
msgid ""
|
msgid ""
|
||||||
msgstr "Content-Type: text/plain; charset=UTF-8"
|
msgstr "Content-Type: text/plain; charset=UTF-8"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121
|
||||||
msgid "API Listen"
|
msgid "API Listen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:125
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
|
||||||
msgid "API Secret"
|
msgid "API Secret"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:70
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:114
|
||||||
msgid "Access Control"
|
msgid "Access Control"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:73
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:162
|
||||||
msgid "All Mode"
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:167
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:159
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:164
|
|
||||||
msgid "All Port"
|
msgid "All Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138
|
||||||
msgid "Allow Lan"
|
msgid "Allow Lan"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:262
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:74
|
|
||||||
msgid "Allow Mode"
|
msgid "Allow Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -44,45 +40,36 @@ msgstr ""
|
|||||||
msgid "App Version"
|
msgid "App Version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:486
|
||||||
msgid "Append Rule"
|
msgid "Append Rule"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:416
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417
|
||||||
msgid "Append Rule Provider"
|
msgid "Append Rule Provider"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:472
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473
|
||||||
msgid "Behavior"
|
msgid "Behavior"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:262
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:75
|
|
||||||
msgid "Block Mode"
|
msgid "Block Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:131
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:155
|
||||||
msgid "Bypass"
|
msgid "Bypass"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:154
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157
|
||||||
msgid "Bypass China Mainland IP"
|
msgid "Bypass China Mainland IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:167
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:170
|
||||||
msgid "Bypass DSCP"
|
msgid "Bypass DSCP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:140
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:91
|
||||||
msgid "Bypass Group"
|
msgid "CGroup"
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:133
|
|
||||||
msgid "Bypass User"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147
|
|
||||||
msgid "Bypass cgroup"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
|
||||||
@ -98,8 +85,8 @@ msgstr ""
|
|||||||
msgid "Clear Log"
|
msgid "Clear Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:163
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:168
|
||||||
msgid "Commonly Used Port"
|
msgid "Commonly Used Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -123,15 +110,15 @@ msgstr ""
|
|||||||
msgid "Cron Expression"
|
msgid "Cron Expression"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229
|
||||||
msgid "DNS Config"
|
msgid "DNS Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231
|
||||||
msgid "DNS Listen"
|
msgid "DNS Listen"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
|
||||||
msgid "DNS Mode"
|
msgid "DNS Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -139,27 +126,27 @@ msgstr ""
|
|||||||
msgid "Debug Log"
|
msgid "Debug Log"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:507
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:508
|
||||||
msgid "Destination IP"
|
msgid "Destination IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:511
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
|
||||||
msgid "Destination IP Geo"
|
msgid "Destination IP Geo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:508
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509
|
||||||
msgid "Destination Port"
|
msgid "Destination Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160
|
||||||
msgid "Destination TCP Port to Proxy"
|
msgid "Destination TCP Port to Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:162
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
|
||||||
msgid "Destination UDP Port to Proxy"
|
msgid "Destination UDP Port to Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189
|
||||||
msgid "Device Name"
|
msgid "Device Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -171,20 +158,20 @@ msgstr ""
|
|||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:273
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:373
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:559
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
@ -210,60 +197,60 @@ msgstr ""
|
|||||||
msgid "Disable TCP Keep Alive"
|
msgid "Disable TCP Keep Alive"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:277
|
||||||
msgid "DoH Prefer HTTP/3"
|
msgid "DoH Prefer HTTP/3"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:308
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:309
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:503
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:504
|
||||||
msgid "Domain Name"
|
msgid "Domain Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:510
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:511
|
||||||
msgid "Domain Name Geo"
|
msgid "Domain Name Geo"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
|
||||||
msgid "Domain Name Keyword"
|
msgid "Domain Name Keyword"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:507
|
||||||
msgid "Domain Name Regex"
|
msgid "Domain Name Regex"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:504
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
|
||||||
msgid "Domain Name Suffix"
|
msgid "Domain Name Suffix"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:169
|
||||||
msgid "Edit Authentications"
|
msgid "Edit Authentications"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:222
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223
|
||||||
msgid "Edit DNS Hijacks"
|
msgid "Edit DNS Hijacks"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255
|
||||||
msgid "Edit Fake-IP Filters"
|
msgid "Edit Fake-IP Filters"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298
|
||||||
msgid "Edit Hosts"
|
msgid "Edit Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:339
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340
|
||||||
msgid "Edit Nameserver Policies"
|
msgid "Edit Nameserver Policies"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:317
|
||||||
msgid "Edit Nameservers"
|
msgid "Edit Nameservers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:420
|
||||||
msgid "Edit Rule Providers"
|
msgid "Edit Rule Providers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:489
|
||||||
msgid "Edit Rules"
|
msgid "Edit Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -281,34 +268,38 @@ msgstr ""
|
|||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:142
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:325
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:358
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:362
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:373
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:374
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:496
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:497
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:559
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:560
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:75
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:102
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:120
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214
|
||||||
msgid "Endpoint Independent NAT"
|
msgid "Endpoint Independent NAT"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -320,11 +311,11 @@ msgstr ""
|
|||||||
msgid "External Control Config"
|
msgid "External Control Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:264
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
|
||||||
msgid "Fake-IP Cache"
|
msgid "Fake-IP Cache"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259
|
||||||
msgid "Fake-IP Filter Mode"
|
msgid "Fake-IP Filter Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -332,7 +323,7 @@ msgstr ""
|
|||||||
msgid "Fake-IP Ping Hijack"
|
msgid "Fake-IP Ping Hijack"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:247
|
||||||
msgid "Fake-IP Range"
|
msgid "Fake-IP Range"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -340,15 +331,15 @@ msgstr ""
|
|||||||
msgid "Fast Reload"
|
msgid "Fast Reload"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467
|
||||||
msgid "File Format"
|
msgid "File Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461
|
||||||
msgid "File Path"
|
msgid "File Path"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:455
|
||||||
msgid "File Size Limit"
|
msgid "File Size Limit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -369,15 +360,15 @@ msgstr ""
|
|||||||
msgid "File:"
|
msgid "File:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:379
|
||||||
msgid "Force Sniff Domain Name"
|
msgid "Force Sniff Domain Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:204
|
||||||
msgid "GSO"
|
msgid "GSO"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:209
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
|
||||||
msgid "GSO Max Size"
|
msgid "GSO Max Size"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -389,39 +380,39 @@ msgstr ""
|
|||||||
msgid "Generate & Download"
|
msgid "Generate & Download"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538
|
||||||
msgid "GeoData Loader"
|
msgid "GeoData Loader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:532
|
||||||
msgid "GeoIP Format"
|
msgid "GeoIP Format"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
|
||||||
msgid "GeoIP(ASN) Url"
|
msgid "GeoIP(ASN) Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
|
||||||
msgid "GeoIP(DAT) Url"
|
msgid "GeoIP(DAT) Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
|
||||||
msgid "GeoIP(MMDB) Url"
|
msgid "GeoIP(MMDB) Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
|
||||||
msgid "GeoSite Url"
|
msgid "GeoSite Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:556
|
||||||
msgid "GeoX Auto Update"
|
msgid "GeoX Auto Update"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:530
|
||||||
msgid "GeoX Config"
|
msgid "GeoX Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:561
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:562
|
||||||
msgid "GeoX Update Interval"
|
msgid "GeoX Update Interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -437,7 +428,11 @@ msgstr ""
|
|||||||
msgid "Grant access to nikki procedures"
|
msgid "Grant access to nikki procedures"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:85
|
||||||
|
msgid "Group"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
|
||||||
msgid "HTTP Port"
|
msgid "HTTP Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -445,10 +440,6 @@ msgstr ""
|
|||||||
msgid "How To Use"
|
msgid "How To Use"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311
|
|
||||||
msgid "IP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:49
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:49
|
||||||
msgid "IPv4 DNS Hijack"
|
msgid "IPv4 DNS Hijack"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -457,11 +448,6 @@ msgstr ""
|
|||||||
msgid "IPv4 Proxy"
|
msgid "IPv4 Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:64
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235
|
|
||||||
msgid "IPv6"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:52
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:52
|
||||||
msgid "IPv6 DNS Hijack"
|
msgid "IPv6 DNS Hijack"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -470,20 +456,20 @@ msgstr ""
|
|||||||
msgid "IPv6 Proxy"
|
msgid "IPv6 Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:386
|
||||||
msgid "Ignore Sniff Domain Name"
|
msgid "Ignore Sniff Domain Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
|
||||||
msgid "Inbound Config"
|
msgid "Inbound Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:117
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:104
|
||||||
msgid "Interface"
|
msgid "Inbound Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:67
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:100
|
||||||
msgid "Lan Proxy"
|
msgid "LAN Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:82
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:82
|
||||||
@ -499,7 +485,7 @@ msgstr ""
|
|||||||
msgid "Log Level"
|
msgid "Log Level"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200
|
||||||
msgid "MTU"
|
msgid "MTU"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -507,16 +493,16 @@ msgstr ""
|
|||||||
msgid "Match Process"
|
msgid "Match Process"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:350
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:351
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:513
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:514
|
||||||
msgid "Matcher"
|
msgid "Matcher"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
|
||||||
msgid "Memory Conservative Loader"
|
msgid "Memory Conservative Loader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152
|
||||||
msgid "Mixed Port"
|
msgid "Mixed Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -524,7 +510,7 @@ msgstr ""
|
|||||||
msgid "Mixin Config"
|
msgid "Mixin Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:565
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:566
|
||||||
msgid "Mixin File Content"
|
msgid "Mixin File Content"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -533,16 +519,15 @@ msgid "Mixin Option"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:72
|
|
||||||
msgid "Mode"
|
msgid "Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:353
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:354
|
||||||
msgid "Nameserver"
|
msgid "Nameserver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -551,12 +536,12 @@ msgstr ""
|
|||||||
msgid "Nikki"
|
msgid "Nikki"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:523
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:524
|
||||||
msgid "No Resolve"
|
msgid "No Resolve"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:516
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:517
|
||||||
msgid "Node"
|
msgid "Node"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -572,55 +557,55 @@ msgstr ""
|
|||||||
msgid "Outbound Interface"
|
msgid "Outbound Interface"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:166
|
||||||
msgid "Overwrite Authentication"
|
msgid "Overwrite Authentication"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:219
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
|
||||||
msgid "Overwrite DNS Hijack"
|
msgid "Overwrite DNS Hijack"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412
|
||||||
msgid "Overwrite Destination"
|
msgid "Overwrite Destination"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252
|
||||||
msgid "Overwrite Fake-IP Filter"
|
msgid "Overwrite Fake-IP Filter"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:375
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:376
|
||||||
msgid "Overwrite Force Sniff Domain Name"
|
msgid "Overwrite Force Sniff Domain Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295
|
||||||
msgid "Overwrite Hosts"
|
msgid "Overwrite Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:383
|
||||||
msgid "Overwrite Ignore Sniff Domain Name"
|
msgid "Overwrite Ignore Sniff Domain Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:314
|
||||||
msgid "Overwrite Nameserver"
|
msgid "Overwrite Nameserver"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:336
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
|
||||||
msgid "Overwrite Nameserver Policy"
|
msgid "Overwrite Nameserver Policy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:389
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390
|
||||||
msgid "Overwrite Sniff By Protocol"
|
msgid "Overwrite Sniff By Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:182
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
|
||||||
msgid "Please go to the editor tab to edit the file for mixin"
|
msgid "Please go to the editor tab to edit the file for mixin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -628,7 +613,7 @@ msgstr ""
|
|||||||
msgid "Prefer"
|
msgid "Prefer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:510
|
||||||
msgid "Process Name"
|
msgid "Process Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -641,11 +626,17 @@ msgstr ""
|
|||||||
msgid "Profile for Startup"
|
msgid "Profile for Startup"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:97
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:152
|
||||||
|
msgid "Proxy"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:29
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:29
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31
|
||||||
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:37
|
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:37
|
||||||
msgid "Proxy Config"
|
msgid "Proxy Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@ -662,7 +653,7 @@ msgstr ""
|
|||||||
msgid "Redirect Mode"
|
msgid "Redirect Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:156
|
||||||
msgid "Redirect Port"
|
msgid "Redirect Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -674,7 +665,7 @@ msgstr ""
|
|||||||
msgid "Remote"
|
msgid "Remote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271
|
||||||
msgid "Respect Rules"
|
msgid "Respect Rules"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -686,7 +677,7 @@ msgstr ""
|
|||||||
msgid "Router Proxy"
|
msgid "Router Proxy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:414
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
|
||||||
msgid "Rule Config"
|
msgid "Rule Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -698,7 +689,7 @@ msgstr ""
|
|||||||
msgid "Rule Provider:"
|
msgid "Rule Provider:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:502
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:503
|
||||||
msgid "Rule Set"
|
msgid "Rule Set"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -706,11 +697,11 @@ msgstr ""
|
|||||||
msgid "Running"
|
msgid "Running"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148
|
||||||
msgid "SOCKS Port"
|
msgid "SOCKS Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:130
|
||||||
msgid "Save Proxy Selection"
|
msgid "Save Proxy Selection"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -723,27 +714,27 @@ msgstr ""
|
|||||||
msgid "Scroll To Bottom"
|
msgid "Scroll To Bottom"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
|
||||||
msgid "Sniff By Protocol"
|
msgid "Sniff By Protocol"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:370
|
||||||
msgid "Sniff Pure IP"
|
msgid "Sniff Pure IP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:364
|
||||||
msgid "Sniff Redir-Host"
|
msgid "Sniff Redir-Host"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:356
|
||||||
msgid "Sniffer Config"
|
msgid "Sniffer Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
|
||||||
msgid "Stack"
|
msgid "Stack"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
|
||||||
msgid "Standard Loader"
|
msgid "Standard Loader"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -785,7 +776,7 @@ msgid "TCP Keep Alive Interval"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:36
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:36
|
||||||
msgid "TCP Proxy Mode"
|
msgid "TCP Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:40
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:40
|
||||||
@ -793,11 +784,11 @@ msgstr ""
|
|||||||
msgid "TPROXY Mode"
|
msgid "TPROXY Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:160
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161
|
||||||
msgid "TPROXY Port"
|
msgid "TPROXY Port"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:187
|
||||||
msgid "TUN Config"
|
msgid "TUN Config"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -814,22 +805,18 @@ msgstr ""
|
|||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31
|
|
||||||
msgid "Transparent Proxy"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38
|
||||||
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:327
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:328
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:437
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:501
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43
|
||||||
msgid "UDP Proxy Mode"
|
msgid "UDP Mode"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110
|
||||||
@ -862,42 +849,42 @@ msgstr ""
|
|||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:122
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:150
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:158
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:162
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:190
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:202
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:212
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:215
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:260
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:266
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:272
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:273
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:290
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:359
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:533
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:534
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:545
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:548
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:554
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:563
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
|
||||||
msgid "Unmodified"
|
msgid "Unmodified"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -913,7 +900,7 @@ msgstr ""
|
|||||||
msgid "Update Dashboard"
|
msgid "Update Dashboard"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:480
|
||||||
msgid "Update Interval"
|
msgid "Update Interval"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -921,15 +908,15 @@ msgstr ""
|
|||||||
msgid "Upload Profile"
|
msgid "Upload Profile"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:442
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:443
|
||||||
msgid "Url"
|
msgid "Url"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289
|
||||||
msgid "Use Hosts"
|
msgid "Use Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:283
|
||||||
msgid "Use System Hosts"
|
msgid "Use System Hosts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -937,10 +924,14 @@ msgstr ""
|
|||||||
msgid "Used"
|
msgid "Used"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:79
|
||||||
|
msgid "User"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:70
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:70
|
||||||
msgid "User Agent"
|
msgid "User Agent"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -8,33 +8,29 @@ msgstr ""
|
|||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:120
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:121
|
||||||
msgid "API Listen"
|
msgid "API Listen"
|
||||||
msgstr "API 监听"
|
msgstr "API 监听"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:125
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:126
|
||||||
msgid "API Secret"
|
msgid "API Secret"
|
||||||
msgstr "API 密钥"
|
msgstr "API 密钥"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:70
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:69
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:114
|
||||||
msgid "Access Control"
|
msgid "Access Control"
|
||||||
msgstr "访问控制"
|
msgstr "访问控制"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:73
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:162
|
||||||
msgid "All Mode"
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:167
|
||||||
msgstr "全部模式"
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:159
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:164
|
|
||||||
msgid "All Port"
|
msgid "All Port"
|
||||||
msgstr "全部端口"
|
msgstr "全部端口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:137
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:138
|
||||||
msgid "Allow Lan"
|
msgid "Allow Lan"
|
||||||
msgstr "允许局域网访问"
|
msgstr "允许局域网访问"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:262
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:263
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:74
|
|
||||||
msgid "Allow Mode"
|
msgid "Allow Mode"
|
||||||
msgstr "白名单模式"
|
msgstr "白名单模式"
|
||||||
|
|
||||||
@ -51,46 +47,37 @@ msgstr "插件日志"
|
|||||||
msgid "App Version"
|
msgid "App Version"
|
||||||
msgstr "插件版本"
|
msgstr "插件版本"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:485
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:486
|
||||||
msgid "Append Rule"
|
msgid "Append Rule"
|
||||||
msgstr "追加规则"
|
msgstr "追加规则"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:416
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:417
|
||||||
msgid "Append Rule Provider"
|
msgid "Append Rule Provider"
|
||||||
msgstr "追加规则提供者"
|
msgstr "追加规则提供者"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:472
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:473
|
||||||
msgid "Behavior"
|
msgid "Behavior"
|
||||||
msgstr "行为"
|
msgstr "行为"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:262
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:75
|
|
||||||
msgid "Block Mode"
|
msgid "Block Mode"
|
||||||
msgstr "黑名单模式"
|
msgstr "黑名单模式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:131
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:155
|
||||||
msgid "Bypass"
|
msgid "Bypass"
|
||||||
msgstr "绕过"
|
msgstr "绕过"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:154
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157
|
||||||
msgid "Bypass China Mainland IP"
|
msgid "Bypass China Mainland IP"
|
||||||
msgstr "绕过中国大陆 IP"
|
msgstr "绕过中国大陆 IP"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:167
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:170
|
||||||
msgid "Bypass DSCP"
|
msgid "Bypass DSCP"
|
||||||
msgstr "绕过 DSCP"
|
msgstr "绕过 DSCP"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:140
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:91
|
||||||
msgid "Bypass Group"
|
msgid "CGroup"
|
||||||
msgstr "绕过用户组"
|
msgstr "控制组"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:133
|
|
||||||
msgid "Bypass User"
|
|
||||||
msgstr "绕过用户"
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:147
|
|
||||||
msgid "Bypass cgroup"
|
|
||||||
msgstr "绕过资源控制组"
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/editor.js:29
|
||||||
msgid "Choose File"
|
msgid "Choose File"
|
||||||
@ -105,8 +92,8 @@ msgstr "选择配置文件"
|
|||||||
msgid "Clear Log"
|
msgid "Clear Log"
|
||||||
msgstr "清空日志"
|
msgstr "清空日志"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:163
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:168
|
||||||
msgid "Commonly Used Port"
|
msgid "Commonly Used Port"
|
||||||
msgstr "常用端口"
|
msgstr "常用端口"
|
||||||
|
|
||||||
@ -130,15 +117,15 @@ msgstr "核心版本"
|
|||||||
msgid "Cron Expression"
|
msgid "Cron Expression"
|
||||||
msgstr "Cron 表达式"
|
msgstr "Cron 表达式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:228
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:229
|
||||||
msgid "DNS Config"
|
msgid "DNS Config"
|
||||||
msgstr "DNS 配置"
|
msgstr "DNS 配置"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:230
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:231
|
||||||
msgid "DNS Listen"
|
msgid "DNS Listen"
|
||||||
msgstr "DNS 监听"
|
msgstr "DNS 监听"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:241
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
|
||||||
msgid "DNS Mode"
|
msgid "DNS Mode"
|
||||||
msgstr "DNS 模式"
|
msgstr "DNS 模式"
|
||||||
|
|
||||||
@ -146,27 +133,27 @@ msgstr "DNS 模式"
|
|||||||
msgid "Debug Log"
|
msgid "Debug Log"
|
||||||
msgstr "调试日志"
|
msgstr "调试日志"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:507
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:508
|
||||||
msgid "Destination IP"
|
msgid "Destination IP"
|
||||||
msgstr "目标 IP"
|
msgstr "目标 IP"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:511
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:512
|
||||||
msgid "Destination IP Geo"
|
msgid "Destination IP Geo"
|
||||||
msgstr "目标 IP(Geo)"
|
msgstr "目标 IP(Geo)"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:508
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509
|
||||||
msgid "Destination Port"
|
msgid "Destination Port"
|
||||||
msgstr "目标端口"
|
msgstr "目标端口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:157
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:160
|
||||||
msgid "Destination TCP Port to Proxy"
|
msgid "Destination TCP Port to Proxy"
|
||||||
msgstr "要代理的 TCP 目标端口"
|
msgstr "要代理的 TCP 目标端口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:162
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:165
|
||||||
msgid "Destination UDP Port to Proxy"
|
msgid "Destination UDP Port to Proxy"
|
||||||
msgstr "要代理的 UDP 目标端口"
|
msgstr "要代理的 UDP 目标端口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:188
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189
|
||||||
msgid "Device Name"
|
msgid "Device Name"
|
||||||
msgstr "设备名称"
|
msgstr "设备名称"
|
||||||
|
|
||||||
@ -178,20 +165,20 @@ msgstr "直连模式"
|
|||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:73
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:79
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:85
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:273
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:373
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:559
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:38
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:45
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
@ -217,60 +204,60 @@ msgstr "禁用安全路径检查"
|
|||||||
msgid "Disable TCP Keep Alive"
|
msgid "Disable TCP Keep Alive"
|
||||||
msgstr "禁用 TCP Keep Alive"
|
msgstr "禁用 TCP Keep Alive"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:276
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:277
|
||||||
msgid "DoH Prefer HTTP/3"
|
msgid "DoH Prefer HTTP/3"
|
||||||
msgstr "DoH 优先 HTTP/3"
|
msgstr "DoH 优先 HTTP/3"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:308
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:309
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:503
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:504
|
||||||
msgid "Domain Name"
|
msgid "Domain Name"
|
||||||
msgstr "域名"
|
msgstr "域名"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:510
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:511
|
||||||
msgid "Domain Name Geo"
|
msgid "Domain Name Geo"
|
||||||
msgstr "域名(Geo)"
|
msgstr "域名(Geo)"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
|
||||||
msgid "Domain Name Keyword"
|
msgid "Domain Name Keyword"
|
||||||
msgstr "域名(关键字)"
|
msgstr "域名(关键字)"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:506
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:507
|
||||||
msgid "Domain Name Regex"
|
msgid "Domain Name Regex"
|
||||||
msgstr "域名(正则表达式)"
|
msgstr "域名(正则表达式)"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:504
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:505
|
||||||
msgid "Domain Name Suffix"
|
msgid "Domain Name Suffix"
|
||||||
msgstr "域名(后缀)"
|
msgstr "域名(后缀)"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:168
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:169
|
||||||
msgid "Edit Authentications"
|
msgid "Edit Authentications"
|
||||||
msgstr "编辑身份验证"
|
msgstr "编辑身份验证"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:222
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:223
|
||||||
msgid "Edit DNS Hijacks"
|
msgid "Edit DNS Hijacks"
|
||||||
msgstr "编辑 DNS 劫持"
|
msgstr "编辑 DNS 劫持"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:254
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:255
|
||||||
msgid "Edit Fake-IP Filters"
|
msgid "Edit Fake-IP Filters"
|
||||||
msgstr "编辑 Fake-IP 过滤列表"
|
msgstr "编辑 Fake-IP 过滤列表"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:297
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:298
|
||||||
msgid "Edit Hosts"
|
msgid "Edit Hosts"
|
||||||
msgstr "编辑 Hosts"
|
msgstr "编辑 Hosts"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:339
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:340
|
||||||
msgid "Edit Nameserver Policies"
|
msgid "Edit Nameserver Policies"
|
||||||
msgstr "编辑 DNS 服务器查询策略"
|
msgstr "编辑 DNS 服务器查询策略"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:316
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:317
|
||||||
msgid "Edit Nameservers"
|
msgid "Edit Nameservers"
|
||||||
msgstr "编辑 DNS 服务器"
|
msgstr "编辑 DNS 服务器"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:419
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:420
|
||||||
msgid "Edit Rule Providers"
|
msgid "Edit Rule Providers"
|
||||||
msgstr "编辑规则提供者"
|
msgstr "编辑规则提供者"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:488
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:489
|
||||||
msgid "Edit Rules"
|
msgid "Edit Rules"
|
||||||
msgstr "编辑规则"
|
msgstr "编辑规则"
|
||||||
|
|
||||||
@ -288,34 +275,38 @@ msgstr "编辑器"
|
|||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:74
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:80
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:86
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:133
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:134
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:141
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:142
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:176
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:177
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:207
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:208
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:217
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:218
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:239
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:240
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:268
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:269
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:274
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:275
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:280
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:281
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:286
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:287
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:292
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:293
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:305
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:306
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:324
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:325
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:347
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:348
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:357
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:358
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:361
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:362
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:367
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:368
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:373
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:374
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:399
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:400
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:427
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:428
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:496
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:497
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:559
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:560
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:33
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:66
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:75
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:102
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:120
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "启用"
|
msgstr "启用"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:213
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:214
|
||||||
msgid "Endpoint Independent NAT"
|
msgid "Endpoint Independent NAT"
|
||||||
msgstr "独立于端点的 NAT"
|
msgstr "独立于端点的 NAT"
|
||||||
|
|
||||||
@ -327,11 +318,11 @@ msgstr "到期时间"
|
|||||||
msgid "External Control Config"
|
msgid "External Control Config"
|
||||||
msgstr "外部控制配置"
|
msgstr "外部控制配置"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:264
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:265
|
||||||
msgid "Fake-IP Cache"
|
msgid "Fake-IP Cache"
|
||||||
msgstr "Fake-IP 缓存"
|
msgstr "Fake-IP 缓存"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:258
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:259
|
||||||
msgid "Fake-IP Filter Mode"
|
msgid "Fake-IP Filter Mode"
|
||||||
msgstr "Fake-IP 过滤模式"
|
msgstr "Fake-IP 过滤模式"
|
||||||
|
|
||||||
@ -339,7 +330,7 @@ msgstr "Fake-IP 过滤模式"
|
|||||||
msgid "Fake-IP Ping Hijack"
|
msgid "Fake-IP Ping Hijack"
|
||||||
msgstr "Fake-IP Ping 劫持"
|
msgstr "Fake-IP Ping 劫持"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:246
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:247
|
||||||
msgid "Fake-IP Range"
|
msgid "Fake-IP Range"
|
||||||
msgstr "Fake-IP 范围"
|
msgstr "Fake-IP 范围"
|
||||||
|
|
||||||
@ -347,15 +338,15 @@ msgstr "Fake-IP 范围"
|
|||||||
msgid "Fast Reload"
|
msgid "Fast Reload"
|
||||||
msgstr "快速重载"
|
msgstr "快速重载"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:466
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:467
|
||||||
msgid "File Format"
|
msgid "File Format"
|
||||||
msgstr "文件格式"
|
msgstr "文件格式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:460
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:461
|
||||||
msgid "File Path"
|
msgid "File Path"
|
||||||
msgstr "文件路径"
|
msgstr "文件路径"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:454
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:455
|
||||||
msgid "File Size Limit"
|
msgid "File Size Limit"
|
||||||
msgstr "文件大小限制"
|
msgstr "文件大小限制"
|
||||||
|
|
||||||
@ -376,15 +367,15 @@ msgstr "IPv6 保留地址"
|
|||||||
msgid "File:"
|
msgid "File:"
|
||||||
msgstr "文件:"
|
msgstr "文件:"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:378
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:379
|
||||||
msgid "Force Sniff Domain Name"
|
msgid "Force Sniff Domain Name"
|
||||||
msgstr "强制嗅探的域名"
|
msgstr "强制嗅探的域名"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:203
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:204
|
||||||
msgid "GSO"
|
msgid "GSO"
|
||||||
msgstr "通用分段卸载"
|
msgstr "通用分段卸载"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:209
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:210
|
||||||
msgid "GSO Max Size"
|
msgid "GSO Max Size"
|
||||||
msgstr "分段最大长度"
|
msgstr "分段最大长度"
|
||||||
|
|
||||||
@ -396,39 +387,39 @@ msgstr "全局配置"
|
|||||||
msgid "Generate & Download"
|
msgid "Generate & Download"
|
||||||
msgstr "生成并下载"
|
msgstr "生成并下载"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:537
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:538
|
||||||
msgid "GeoData Loader"
|
msgid "GeoData Loader"
|
||||||
msgstr "GeoData 加载器"
|
msgstr "GeoData 加载器"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:531
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:532
|
||||||
msgid "GeoIP Format"
|
msgid "GeoIP Format"
|
||||||
msgstr "GeoIP 格式"
|
msgstr "GeoIP 格式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:552
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
|
||||||
msgid "GeoIP(ASN) Url"
|
msgid "GeoIP(ASN) Url"
|
||||||
msgstr "GeoIP(ASN) 下载地址"
|
msgstr "GeoIP(ASN) 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:549
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
|
||||||
msgid "GeoIP(DAT) Url"
|
msgid "GeoIP(DAT) Url"
|
||||||
msgstr "GeoIP(DAT) 下载地址"
|
msgstr "GeoIP(DAT) 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:546
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
|
||||||
msgid "GeoIP(MMDB) Url"
|
msgid "GeoIP(MMDB) Url"
|
||||||
msgstr "GeoIP(MMDB) 下载地址"
|
msgstr "GeoIP(MMDB) 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:543
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
|
||||||
msgid "GeoSite Url"
|
msgid "GeoSite Url"
|
||||||
msgstr "GeoSite 下载地址"
|
msgstr "GeoSite 下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:555
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:556
|
||||||
msgid "GeoX Auto Update"
|
msgid "GeoX Auto Update"
|
||||||
msgstr "定时更新GeoX文件"
|
msgstr "定时更新GeoX文件"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:529
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:530
|
||||||
msgid "GeoX Config"
|
msgid "GeoX Config"
|
||||||
msgstr "GeoX 配置"
|
msgstr "GeoX 配置"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:561
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:562
|
||||||
msgid "GeoX Update Interval"
|
msgid "GeoX Update Interval"
|
||||||
msgstr "GeoX 文件更新间隔"
|
msgstr "GeoX 文件更新间隔"
|
||||||
|
|
||||||
@ -444,7 +435,11 @@ msgstr "全局模式"
|
|||||||
msgid "Grant access to nikki procedures"
|
msgid "Grant access to nikki procedures"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:143
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:85
|
||||||
|
msgid "Group"
|
||||||
|
msgstr "用户组"
|
||||||
|
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:144
|
||||||
msgid "HTTP Port"
|
msgid "HTTP Port"
|
||||||
msgstr "HTTP 端口"
|
msgstr "HTTP 端口"
|
||||||
|
|
||||||
@ -452,10 +447,6 @@ msgstr "HTTP 端口"
|
|||||||
msgid "How To Use"
|
msgid "How To Use"
|
||||||
msgstr "使用说明"
|
msgstr "使用说明"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:311
|
|
||||||
msgid "IP"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:49
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:49
|
||||||
msgid "IPv4 DNS Hijack"
|
msgid "IPv4 DNS Hijack"
|
||||||
msgstr "IPv4 DNS 劫持"
|
msgstr "IPv4 DNS 劫持"
|
||||||
@ -464,11 +455,6 @@ msgstr "IPv4 DNS 劫持"
|
|||||||
msgid "IPv4 Proxy"
|
msgid "IPv4 Proxy"
|
||||||
msgstr "IPv4 代理"
|
msgstr "IPv4 代理"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:64
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:235
|
|
||||||
msgid "IPv6"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:52
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:52
|
||||||
msgid "IPv6 DNS Hijack"
|
msgid "IPv6 DNS Hijack"
|
||||||
msgstr "IPv6 DNS 劫持"
|
msgstr "IPv6 DNS 劫持"
|
||||||
@ -477,20 +463,20 @@ msgstr "IPv6 DNS 劫持"
|
|||||||
msgid "IPv6 Proxy"
|
msgid "IPv6 Proxy"
|
||||||
msgstr "IPv6 代理"
|
msgstr "IPv6 代理"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:385
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:386
|
||||||
msgid "Ignore Sniff Domain Name"
|
msgid "Ignore Sniff Domain Name"
|
||||||
msgstr "忽略嗅探的域名"
|
msgstr "忽略嗅探的域名"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:135
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:136
|
||||||
msgid "Inbound Config"
|
msgid "Inbound Config"
|
||||||
msgstr "入站配置"
|
msgstr "入站配置"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:117
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:104
|
||||||
msgid "Interface"
|
msgid "Inbound Interface"
|
||||||
msgstr "接口"
|
msgstr "入站接口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:67
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:100
|
||||||
msgid "Lan Proxy"
|
msgid "LAN Proxy"
|
||||||
msgstr "局域网代理"
|
msgstr "局域网代理"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:82
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:82
|
||||||
@ -506,7 +492,7 @@ msgstr "日志"
|
|||||||
msgid "Log Level"
|
msgid "Log Level"
|
||||||
msgstr "日志级别"
|
msgstr "日志级别"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:199
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:200
|
||||||
msgid "MTU"
|
msgid "MTU"
|
||||||
msgstr "最大传输单元"
|
msgstr "最大传输单元"
|
||||||
|
|
||||||
@ -514,16 +500,16 @@ msgstr "最大传输单元"
|
|||||||
msgid "Match Process"
|
msgid "Match Process"
|
||||||
msgstr "匹配进程"
|
msgstr "匹配进程"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:350
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:351
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:513
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:514
|
||||||
msgid "Matcher"
|
msgid "Matcher"
|
||||||
msgstr "匹配"
|
msgstr "匹配"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:542
|
||||||
msgid "Memory Conservative Loader"
|
msgid "Memory Conservative Loader"
|
||||||
msgstr "为内存受限设备优化的加载器"
|
msgstr "为内存受限设备优化的加载器"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:151
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:152
|
||||||
msgid "Mixed Port"
|
msgid "Mixed Port"
|
||||||
msgstr "混合端口"
|
msgstr "混合端口"
|
||||||
|
|
||||||
@ -531,7 +517,7 @@ msgstr "混合端口"
|
|||||||
msgid "Mixin Config"
|
msgid "Mixin Config"
|
||||||
msgstr "混入配置"
|
msgstr "混入配置"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:565
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:566
|
||||||
msgid "Mixin File Content"
|
msgid "Mixin File Content"
|
||||||
msgstr "混入文件内容"
|
msgstr "混入文件内容"
|
||||||
|
|
||||||
@ -540,16 +526,15 @@ msgid "Mixin Option"
|
|||||||
msgstr "混入选项"
|
msgstr "混入选项"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:39
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:72
|
|
||||||
msgid "Mode"
|
msgid "Mode"
|
||||||
msgstr "模式"
|
msgstr "模式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:433
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:434
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "名称"
|
msgstr "名称"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:334
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:335
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:353
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:354
|
||||||
msgid "Nameserver"
|
msgid "Nameserver"
|
||||||
msgstr "DNS 服务器"
|
msgstr "DNS 服务器"
|
||||||
|
|
||||||
@ -558,12 +543,12 @@ msgstr "DNS 服务器"
|
|||||||
msgid "Nikki"
|
msgid "Nikki"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:523
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:524
|
||||||
msgid "No Resolve"
|
msgid "No Resolve"
|
||||||
msgstr "不解析"
|
msgstr "不解析"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:447
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:448
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:516
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:517
|
||||||
msgid "Node"
|
msgid "Node"
|
||||||
msgstr "节点"
|
msgstr "节点"
|
||||||
|
|
||||||
@ -579,55 +564,55 @@ msgstr "打开面板"
|
|||||||
msgid "Outbound Interface"
|
msgid "Outbound Interface"
|
||||||
msgstr "出站接口"
|
msgstr "出站接口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:165
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:166
|
||||||
msgid "Overwrite Authentication"
|
msgid "Overwrite Authentication"
|
||||||
msgstr "覆盖身份验证"
|
msgstr "覆盖身份验证"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:219
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:220
|
||||||
msgid "Overwrite DNS Hijack"
|
msgid "Overwrite DNS Hijack"
|
||||||
msgstr "覆盖 DNS 劫持"
|
msgstr "覆盖 DNS 劫持"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:411
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:412
|
||||||
msgid "Overwrite Destination"
|
msgid "Overwrite Destination"
|
||||||
msgstr "将嗅探结果作为连接目标"
|
msgstr "将嗅探结果作为连接目标"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:251
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:252
|
||||||
msgid "Overwrite Fake-IP Filter"
|
msgid "Overwrite Fake-IP Filter"
|
||||||
msgstr "覆盖 Fake-IP 过滤列表"
|
msgstr "覆盖 Fake-IP 过滤列表"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:375
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:376
|
||||||
msgid "Overwrite Force Sniff Domain Name"
|
msgid "Overwrite Force Sniff Domain Name"
|
||||||
msgstr "覆盖强制嗅探的域名"
|
msgstr "覆盖强制嗅探的域名"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:294
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:295
|
||||||
msgid "Overwrite Hosts"
|
msgid "Overwrite Hosts"
|
||||||
msgstr "覆盖 Hosts"
|
msgstr "覆盖 Hosts"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:382
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:383
|
||||||
msgid "Overwrite Ignore Sniff Domain Name"
|
msgid "Overwrite Ignore Sniff Domain Name"
|
||||||
msgstr "覆盖忽略嗅探的域名"
|
msgstr "覆盖忽略嗅探的域名"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:313
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:314
|
||||||
msgid "Overwrite Nameserver"
|
msgid "Overwrite Nameserver"
|
||||||
msgstr "覆盖 DNS 服务器"
|
msgstr "覆盖 DNS 服务器"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:336
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:337
|
||||||
msgid "Overwrite Nameserver Policy"
|
msgid "Overwrite Nameserver Policy"
|
||||||
msgstr "覆盖 DNS 服务器查询策略"
|
msgstr "覆盖 DNS 服务器查询策略"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:389
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:390
|
||||||
msgid "Overwrite Sniff By Protocol"
|
msgid "Overwrite Sniff By Protocol"
|
||||||
msgstr "覆盖按协议嗅探"
|
msgstr "覆盖按协议嗅探"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:182
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:183
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "密码"
|
msgstr "密码"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:567
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:568
|
||||||
msgid "Please go to the editor tab to edit the file for mixin"
|
msgid "Please go to the editor tab to edit the file for mixin"
|
||||||
msgstr "请前往编辑器标签编辑用于混入的文件"
|
msgstr "请前往编辑器标签编辑用于混入的文件"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:408
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:409
|
||||||
msgid "Port"
|
msgid "Port"
|
||||||
msgstr "端口"
|
msgstr "端口"
|
||||||
|
|
||||||
@ -635,7 +620,7 @@ msgstr "端口"
|
|||||||
msgid "Prefer"
|
msgid "Prefer"
|
||||||
msgstr "优先"
|
msgstr "优先"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:509
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:510
|
||||||
msgid "Process Name"
|
msgid "Process Name"
|
||||||
msgstr "进程名"
|
msgstr "进程名"
|
||||||
|
|
||||||
@ -648,11 +633,17 @@ msgstr "配置文件"
|
|||||||
msgid "Profile for Startup"
|
msgid "Profile for Startup"
|
||||||
msgstr "用于启动的配置文件"
|
msgstr "用于启动的配置文件"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:402
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:403
|
||||||
msgid "Protocol"
|
msgid "Protocol"
|
||||||
msgstr "协议"
|
msgstr "协议"
|
||||||
|
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:97
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:152
|
||||||
|
msgid "Proxy"
|
||||||
|
msgstr "代理"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:29
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:29
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31
|
||||||
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:37
|
#: applications/luci-app-nikki/root/usr/share/luci/menu.d/luci-app-nikki.json:37
|
||||||
msgid "Proxy Config"
|
msgid "Proxy Config"
|
||||||
msgstr "代理配置"
|
msgstr "代理配置"
|
||||||
@ -669,7 +660,7 @@ msgstr "随机"
|
|||||||
msgid "Redirect Mode"
|
msgid "Redirect Mode"
|
||||||
msgstr "Redirect 模式"
|
msgstr "Redirect 模式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:155
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:156
|
||||||
msgid "Redirect Port"
|
msgid "Redirect Port"
|
||||||
msgstr "Redirect 端口"
|
msgstr "Redirect 端口"
|
||||||
|
|
||||||
@ -681,7 +672,7 @@ msgstr "重载服务"
|
|||||||
msgid "Remote"
|
msgid "Remote"
|
||||||
msgstr "远程"
|
msgstr "远程"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:270
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:271
|
||||||
msgid "Respect Rules"
|
msgid "Respect Rules"
|
||||||
msgstr "遵循分流规则"
|
msgstr "遵循分流规则"
|
||||||
|
|
||||||
@ -693,7 +684,7 @@ msgstr "重启服务"
|
|||||||
msgid "Router Proxy"
|
msgid "Router Proxy"
|
||||||
msgstr "路由器代理"
|
msgstr "路由器代理"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:414
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:415
|
||||||
msgid "Rule Config"
|
msgid "Rule Config"
|
||||||
msgstr "规则配置"
|
msgstr "规则配置"
|
||||||
|
|
||||||
@ -705,7 +696,7 @@ msgstr "规则模式"
|
|||||||
msgid "Rule Provider:"
|
msgid "Rule Provider:"
|
||||||
msgstr "规则提供者:"
|
msgstr "规则提供者:"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:502
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:503
|
||||||
msgid "Rule Set"
|
msgid "Rule Set"
|
||||||
msgstr "规则集"
|
msgstr "规则集"
|
||||||
|
|
||||||
@ -713,11 +704,11 @@ msgstr "规则集"
|
|||||||
msgid "Running"
|
msgid "Running"
|
||||||
msgstr "运行中"
|
msgstr "运行中"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:147
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:148
|
||||||
msgid "SOCKS Port"
|
msgid "SOCKS Port"
|
||||||
msgstr "SOCKS 端口"
|
msgstr "SOCKS 端口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:129
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:130
|
||||||
msgid "Save Proxy Selection"
|
msgid "Save Proxy Selection"
|
||||||
msgstr "保存节点/策略组选择"
|
msgstr "保存节点/策略组选择"
|
||||||
|
|
||||||
@ -730,27 +721,27 @@ msgstr "定时重启"
|
|||||||
msgid "Scroll To Bottom"
|
msgid "Scroll To Bottom"
|
||||||
msgstr "滚动到底部"
|
msgstr "滚动到底部"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:392
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:393
|
||||||
msgid "Sniff By Protocol"
|
msgid "Sniff By Protocol"
|
||||||
msgstr "按协议嗅探"
|
msgstr "按协议嗅探"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:369
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:370
|
||||||
msgid "Sniff Pure IP"
|
msgid "Sniff Pure IP"
|
||||||
msgstr "嗅探纯 IP 连接"
|
msgstr "嗅探纯 IP 连接"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:363
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:364
|
||||||
msgid "Sniff Redir-Host"
|
msgid "Sniff Redir-Host"
|
||||||
msgstr "嗅探 Redir-Host 流量"
|
msgstr "嗅探 Redir-Host 流量"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:355
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:356
|
||||||
msgid "Sniffer Config"
|
msgid "Sniffer Config"
|
||||||
msgstr "嗅探器配置"
|
msgstr "嗅探器配置"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:192
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:193
|
||||||
msgid "Stack"
|
msgid "Stack"
|
||||||
msgstr "栈"
|
msgstr "栈"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:541
|
||||||
msgid "Standard Loader"
|
msgid "Standard Loader"
|
||||||
msgstr "标准加载器"
|
msgstr "标准加载器"
|
||||||
|
|
||||||
@ -792,19 +783,19 @@ msgid "TCP Keep Alive Interval"
|
|||||||
msgstr "TCP Keep Alive 间隔"
|
msgstr "TCP Keep Alive 间隔"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:36
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:36
|
||||||
msgid "TCP Proxy Mode"
|
msgid "TCP Mode"
|
||||||
msgstr "TCP 代理模式"
|
msgstr "TCP 模式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:40
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:40
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:46
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:46
|
||||||
msgid "TPROXY Mode"
|
msgid "TPROXY Mode"
|
||||||
msgstr "TPROXY 模式"
|
msgstr "TPROXY 模式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:160
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:161
|
||||||
msgid "TPROXY Port"
|
msgid "TPROXY Port"
|
||||||
msgstr "TPROXY 端口"
|
msgstr "TPROXY 端口"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:186
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:187
|
||||||
msgid "TUN Config"
|
msgid "TUN Config"
|
||||||
msgstr "TUN 配置"
|
msgstr "TUN 配置"
|
||||||
|
|
||||||
@ -821,23 +812,19 @@ msgstr "检查配置文件"
|
|||||||
msgid "Total"
|
msgid "Total"
|
||||||
msgstr "总量"
|
msgstr "总量"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:31
|
|
||||||
msgid "Transparent Proxy"
|
|
||||||
msgstr "透明代理"
|
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/app.js:38
|
||||||
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
msgid "Transparent Proxy with Mihomo on OpenWrt."
|
||||||
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
|
msgstr "在 OpenWrt 上使用 Mihomo 进行透明代理。"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:327
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:328
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:436
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:437
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:500
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:501
|
||||||
msgid "Type"
|
msgid "Type"
|
||||||
msgstr "类型"
|
msgstr "类型"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:43
|
||||||
msgid "UDP Proxy Mode"
|
msgid "UDP Mode"
|
||||||
msgstr "UDP 代理模式"
|
msgstr "UDP 模式"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:110
|
||||||
msgid "UI Name"
|
msgid "UI Name"
|
||||||
@ -869,42 +856,42 @@ msgstr "统一延迟"
|
|||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:107
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:111
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:114
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:122
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:123
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:127
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:128
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:131
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:132
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:139
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:140
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:145
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:146
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:149
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:150
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:153
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:154
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:157
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:158
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:162
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:163
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:189
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:190
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:194
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:195
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:201
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:202
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:205
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:206
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:211
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:212
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:215
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:216
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:232
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:233
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:237
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:238
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:242
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:243
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:248
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:249
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:260
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:261
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:266
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:267
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:272
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:273
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:278
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:279
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:284
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:285
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:290
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:291
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:359
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:360
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:365
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:366
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:371
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:372
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:533
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:534
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:539
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:540
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:544
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:545
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:547
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:548
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:550
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:551
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:553
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:554
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:557
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:558
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:563
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:564
|
||||||
msgid "Unmodified"
|
msgid "Unmodified"
|
||||||
msgstr "不修改"
|
msgstr "不修改"
|
||||||
|
|
||||||
@ -920,7 +907,7 @@ msgstr "更新时间"
|
|||||||
msgid "Update Dashboard"
|
msgid "Update Dashboard"
|
||||||
msgstr "更新面板"
|
msgstr "更新面板"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:479
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:480
|
||||||
msgid "Update Interval"
|
msgid "Update Interval"
|
||||||
msgstr "更新间隔"
|
msgstr "更新间隔"
|
||||||
|
|
||||||
@ -928,15 +915,15 @@ msgstr "更新间隔"
|
|||||||
msgid "Upload Profile"
|
msgid "Upload Profile"
|
||||||
msgstr "上传配置文件"
|
msgstr "上传配置文件"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:442
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:443
|
||||||
msgid "Url"
|
msgid "Url"
|
||||||
msgstr "下载地址"
|
msgstr "下载地址"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:288
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:289
|
||||||
msgid "Use Hosts"
|
msgid "Use Hosts"
|
||||||
msgstr "使用 Hosts"
|
msgstr "使用 Hosts"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:282
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:283
|
||||||
msgid "Use System Hosts"
|
msgid "Use System Hosts"
|
||||||
msgstr "使用系统的 Hosts"
|
msgstr "使用系统的 Hosts"
|
||||||
|
|
||||||
@ -944,10 +931,14 @@ msgstr "使用系统的 Hosts"
|
|||||||
msgid "Used"
|
msgid "Used"
|
||||||
msgstr "已使用"
|
msgstr "已使用"
|
||||||
|
|
||||||
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/proxy.js:79
|
||||||
|
msgid "User"
|
||||||
|
msgstr "用户"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:70
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/profile.js:70
|
||||||
msgid "User Agent"
|
msgid "User Agent"
|
||||||
msgstr "用户代理(UA)"
|
msgstr "用户代理(UA)"
|
||||||
|
|
||||||
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:179
|
#: applications/luci-app-nikki/htdocs/luci-static/resources/view/nikki/mixin.js:180
|
||||||
msgid "Username"
|
msgid "Username"
|
||||||
msgstr "用户名"
|
msgstr "用户名"
|
||||||
|
@ -59,8 +59,8 @@ const methods = {
|
|||||||
},
|
},
|
||||||
get_identifiers: {
|
get_identifiers: {
|
||||||
call: function() {
|
call: function() {
|
||||||
const users = filter(get_users(), (x) => x != '' && x != 'root');
|
const users = filter(get_users(), (x) => x != '');
|
||||||
const groups = filter(get_groups(), (x) => x != '' && x != 'root');
|
const groups = filter(get_groups(), (x) => x != '');
|
||||||
const cgroups = filter(get_cgroups(), (x) => x != '' && x != 'nikki');
|
const cgroups = filter(get_cgroups(), (x) => x != '' && x != 'nikki');
|
||||||
return { users: users, groups: groups, cgroups: cgroups };
|
return { users: users, groups: groups, cgroups: cgroups };
|
||||||
}
|
}
|
||||||
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
|||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git
|
PKG_SOURCE_URL:=https://github.com/MetaCubeX/mihomo.git
|
||||||
PKG_SOURCE_DATE:=2025-04-06
|
PKG_SOURCE_DATE:=2025-04-12
|
||||||
PKG_SOURCE_VERSION:=9e8f4ada4754ae95b002535acbeb457e40b06731
|
PKG_SOURCE_VERSION:=cedb36df5fe58d5d972b1507c1ab656aca5f046d
|
||||||
PKG_MIRROR_HASH:=1c8a7d70de0cb903b58eca1937b6561003cae7e76f9f021fd3eb9007b6a1f65f
|
PKG_MIRROR_HASH:=b2f9fe4e2ebd38036eac0f2c5af79362cb2afbb780c36c236259ecace9db11da
|
||||||
|
|
||||||
PKG_LICENSE:=GPL3.0+
|
PKG_LICENSE:=GPL3.0+
|
||||||
PKG_MAINTAINER:=Joseph Mory <morytyann@gmail.com>
|
PKG_MAINTAINER:=Joseph Mory <morytyann@gmail.com>
|
||||||
@ -16,7 +16,7 @@ PKG_BUILD_DEPENDS:=golang/host
|
|||||||
PKG_BUILD_PARALLEL:=1
|
PKG_BUILD_PARALLEL:=1
|
||||||
PKG_BUILD_FLAGS:=no-mips16
|
PKG_BUILD_FLAGS:=no-mips16
|
||||||
|
|
||||||
PKG_BUILD_VERSION:=alpha-9e8f4ad
|
PKG_BUILD_VERSION:=alpha-cedb36d
|
||||||
PKG_BUILD_TIME:=$(shell date -u -Iseconds)
|
PKG_BUILD_TIME:=$(shell date -u -Iseconds)
|
||||||
|
|
||||||
GO_PKG:=github.com/metacubex/mihomo
|
GO_PKG:=github.com/metacubex/mihomo
|
||||||
|
@ -10,9 +10,9 @@ config config 'config'
|
|||||||
option 'test_profile' '1'
|
option 'test_profile' '1'
|
||||||
|
|
||||||
config proxy 'proxy'
|
config proxy 'proxy'
|
||||||
option 'transparent_proxy' '1'
|
option 'enabled' '1'
|
||||||
option 'tcp_transparent_proxy_mode' 'redirect'
|
option 'tcp_mode' 'redirect'
|
||||||
option 'udp_transparent_proxy_mode' 'tun'
|
option 'udp_mode' 'tun'
|
||||||
option 'ipv4_dns_hijack' '1'
|
option 'ipv4_dns_hijack' '1'
|
||||||
option 'ipv6_dns_hijack' '1'
|
option 'ipv6_dns_hijack' '1'
|
||||||
option 'ipv4_proxy' '1'
|
option 'ipv4_proxy' '1'
|
||||||
@ -20,30 +20,7 @@ config proxy 'proxy'
|
|||||||
option 'fake_ip_ping_hijack' '1'
|
option 'fake_ip_ping_hijack' '1'
|
||||||
option 'router_proxy' '1'
|
option 'router_proxy' '1'
|
||||||
option 'lan_proxy' '1'
|
option 'lan_proxy' '1'
|
||||||
option 'access_control_mode' 'all'
|
list 'lan_inbound_interface' 'lan'
|
||||||
option 'acl_ip' ''
|
|
||||||
option 'acl_ip6' ''
|
|
||||||
option 'acl_mac' ''
|
|
||||||
option 'acl_interface' ''
|
|
||||||
list 'bypass_user' 'dnsmasq'
|
|
||||||
list 'bypass_user' 'ftp'
|
|
||||||
list 'bypass_user' 'logd'
|
|
||||||
list 'bypass_user' 'nobody'
|
|
||||||
list 'bypass_user' 'ntp'
|
|
||||||
list 'bypass_user' 'ubus'
|
|
||||||
list 'bypass_group' 'dnsmasq'
|
|
||||||
list 'bypass_group' 'ftp'
|
|
||||||
list 'bypass_group' 'logd'
|
|
||||||
list 'bypass_group' 'nogroup'
|
|
||||||
list 'bypass_group' 'ntp'
|
|
||||||
list 'bypass_group' 'ubus'
|
|
||||||
list 'bypass_cgroup' 'adguardhome'
|
|
||||||
list 'bypass_cgroup' 'aria2'
|
|
||||||
list 'bypass_cgroup' 'dnsmasq'
|
|
||||||
list 'bypass_cgroup' 'netbird'
|
|
||||||
list 'bypass_cgroup' 'qbittorrent'
|
|
||||||
list 'bypass_cgroup' 'tailscale'
|
|
||||||
list 'bypass_cgroup' 'zerotier'
|
|
||||||
list 'bypass_dscp' '4'
|
list 'bypass_dscp' '4'
|
||||||
option 'bypass_china_mainland_ip' '0'
|
option 'bypass_china_mainland_ip' '0'
|
||||||
option 'proxy_tcp_dport' '0-65535'
|
option 'proxy_tcp_dport' '0-65535'
|
||||||
@ -100,6 +77,38 @@ config env 'env'
|
|||||||
option 'disable_quic_go_gso' '0'
|
option 'disable_quic_go_gso' '0'
|
||||||
option 'disable_quic_go_ecn' '0'
|
option 'disable_quic_go_ecn' '0'
|
||||||
|
|
||||||
|
config router_access_control
|
||||||
|
option 'enabled' '1'
|
||||||
|
list 'user' 'dnsmasq'
|
||||||
|
list 'user' 'ftp'
|
||||||
|
list 'user' 'logd'
|
||||||
|
list 'user' 'nobody'
|
||||||
|
list 'user' 'ntp'
|
||||||
|
list 'user' 'ubus'
|
||||||
|
list 'group' 'dnsmasq'
|
||||||
|
list 'group' 'ftp'
|
||||||
|
list 'group' 'logd'
|
||||||
|
list 'group' 'nogroup'
|
||||||
|
list 'group' 'ntp'
|
||||||
|
list 'group' 'ubus'
|
||||||
|
list 'cgroup' 'adguardhome'
|
||||||
|
list 'cgroup' 'aria2'
|
||||||
|
list 'cgroup' 'dnsmasq'
|
||||||
|
list 'cgroup' 'netbird'
|
||||||
|
list 'cgroup' 'qbittorrent'
|
||||||
|
list 'cgroup' 'sysntpd'
|
||||||
|
list 'cgroup' 'tailscale'
|
||||||
|
list 'cgroup' 'zerotier'
|
||||||
|
option 'proxy' '0'
|
||||||
|
|
||||||
|
config router_access_control
|
||||||
|
option 'enabled' '1'
|
||||||
|
option 'proxy' '1'
|
||||||
|
|
||||||
|
config lan_access_control
|
||||||
|
option 'enabled' '1'
|
||||||
|
option 'proxy' '1'
|
||||||
|
|
||||||
config authentication
|
config authentication
|
||||||
option 'enabled' '1'
|
option 'enabled' '1'
|
||||||
option 'username' 'nikki'
|
option 'username' 'nikki'
|
||||||
|
@ -143,11 +143,11 @@ service_started() {
|
|||||||
fi
|
fi
|
||||||
# load config
|
# load config
|
||||||
config_load nikki
|
config_load nikki
|
||||||
# check if transparent proxy enabled
|
# check if proxy enabled
|
||||||
local transparent_proxy
|
local enabled
|
||||||
config_get_bool transparent_proxy "proxy" "transparent_proxy" 0
|
config_get_bool enabled "proxy" "enabled" 0
|
||||||
if [ "$transparent_proxy" == 0 ]; then
|
if [ "$enabled" == 0 ]; then
|
||||||
log "Transparent Proxy" "Disabled."
|
log "Proxy" "Disabled."
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
# get config
|
# get config
|
||||||
@ -156,19 +156,19 @@ service_started() {
|
|||||||
local tun_device
|
local tun_device
|
||||||
config_get tun_device "mixin" "tun_device" "nikki"
|
config_get tun_device "mixin" "tun_device" "nikki"
|
||||||
## proxy config
|
## proxy config
|
||||||
### transparent proxy
|
### general
|
||||||
local tcp_transparent_proxy_mode udp_transparent_proxy_mode ipv4_proxy ipv6_proxy
|
local tcp_mode udp_mode ipv4_proxy ipv6_proxy
|
||||||
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode"
|
config_get tcp_mode "proxy" "tcp_mode"
|
||||||
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode"
|
config_get udp_mode "proxy" "udp_mode"
|
||||||
config_get_bool ipv4_proxy "proxy" "ipv4_proxy" 0
|
config_get_bool ipv4_proxy "proxy" "ipv4_proxy" 0
|
||||||
config_get_bool ipv6_proxy "proxy" "ipv6_proxy" 0
|
config_get_bool ipv6_proxy "proxy" "ipv6_proxy" 0
|
||||||
# prepare config
|
# prepare config
|
||||||
local tproxy_enable; tproxy_enable=0
|
local tproxy_enable; tproxy_enable=0
|
||||||
if [[ "$tcp_transparent_proxy_mode" == "tproxy" || "$udp_transparent_proxy_mode" == "tproxy" ]]; then
|
if [[ "$tcp_mode" == "tproxy" || "$udp_mode" == "tproxy" ]]; then
|
||||||
tproxy_enable=1
|
tproxy_enable=1
|
||||||
fi
|
fi
|
||||||
local tun_enable; tun_enable=0
|
local tun_enable; tun_enable=0
|
||||||
if [[ "$tcp_transparent_proxy_mode" == "tun" || "$udp_transparent_proxy_mode" == "tun" ]]; then
|
if [[ "$tcp_mode" == "tun" || "$udp_mode" == "tun" ]]; then
|
||||||
tun_enable=1
|
tun_enable=1
|
||||||
fi
|
fi
|
||||||
# fix compatible with dockerd
|
# fix compatible with dockerd
|
||||||
@ -197,17 +197,17 @@ service_started() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
# transparent proxy
|
# proxy
|
||||||
log "Transparent Proxy" "Enabled."
|
log "Proxy" "Enabled."
|
||||||
# wait for tun device online
|
# wait for tun device online
|
||||||
if [ "$tun_enable" == 1 ]; then
|
if [ "$tun_enable" == 1 ]; then
|
||||||
log "Transparent Proxy" "Waiting for tun device online..."
|
log "Proxy" "Waiting for tun device online..."
|
||||||
local tun_timeout; tun_timeout=15
|
local tun_timeout; tun_timeout=15
|
||||||
local tun_interval; tun_interval=1
|
local tun_interval; tun_interval=1
|
||||||
while [ "$tun_timeout" -gt 0 ]; do
|
while [ "$tun_timeout" -gt 0 ]; do
|
||||||
if (ip link show dev "$tun_device" > /dev/null 2>&1); then
|
if (ip link show dev "$tun_device" > /dev/null 2>&1); then
|
||||||
if [ $(ip -json addr show dev "$tun_device" | tun_device="$tun_device" yq -M '.[] | select(.ifname = strenv(tun_device)) | .addr_info | length') -gt 0 ]; then
|
if [ $(ip -json addr show dev "$tun_device" | tun_device="$tun_device" yq -M '.[] | select(.ifname = strenv(tun_device)) | .addr_info | length') -gt 0 ]; then
|
||||||
log "Transparent Proxy" "Tun device is online."
|
log "Proxy" "Tun device is online."
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
@ -215,7 +215,7 @@ service_started() {
|
|||||||
sleep "$tun_interval"
|
sleep "$tun_interval"
|
||||||
done
|
done
|
||||||
if [ "$tun_timeout" -le 0 ]; then
|
if [ "$tun_timeout" -le 0 ]; then
|
||||||
log "Transparent Proxy" "Waiting timeout, tun device is not online."
|
log "Proxy" "Waiting timeout, tun device is not online."
|
||||||
log "App" "Exit."
|
log "App" "Exit."
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
@ -246,9 +246,9 @@ service_started() {
|
|||||||
utpl -D cgroup_name="$CGROUP_NAME" -D cgroup_id="$CGROUP_ID" -D tproxy_fw_mark="$TPROXY_FW_MARK" -D tun_fw_mark="$TUN_FW_MARK" -S "$HIJACK_UT" | nft -f -
|
utpl -D cgroup_name="$CGROUP_NAME" -D cgroup_id="$CGROUP_ID" -D tproxy_fw_mark="$TPROXY_FW_MARK" -D tun_fw_mark="$TUN_FW_MARK" -S "$HIJACK_UT" | nft -f -
|
||||||
# check hijack
|
# check hijack
|
||||||
if (nft list tables | grep -q nikki); then
|
if (nft list tables | grep -q nikki); then
|
||||||
log "Transparent Proxy" "Hijack successful."
|
log "Proxy" "Hijack successful."
|
||||||
else
|
else
|
||||||
log "Transparent Proxy" "Hijack failed."
|
log "Proxy" "Hijack failed."
|
||||||
log "App" "Exit."
|
log "App" "Exit."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
@ -5,11 +5,11 @@
|
|||||||
|
|
||||||
config_load nikki
|
config_load nikki
|
||||||
config_get enabled "config" "enabled" 0
|
config_get enabled "config" "enabled" 0
|
||||||
config_get tcp_transparent_proxy_mode "proxy" "tcp_transparent_proxy_mode"
|
config_get tcp_mode "proxy" "tcp_mode"
|
||||||
config_get udp_transparent_proxy_mode "proxy" "udp_transparent_proxy_mode"
|
config_get udp_mode "proxy" "udp_mode"
|
||||||
config_get tun_device "mixin" "tun_device"
|
config_get tun_device "mixin" "tun_device"
|
||||||
|
|
||||||
if [ "$enabled" == 1 ] && [[ "$tcp_transparent_proxy_mode" == "tun" || "$udp_transparent_proxy_mode" == "tun" ]]; then
|
if [ "$enabled" == 1 ] && [[ "$tcp_mode" == "tun" || "$udp_mode" == "tun" ]]; then
|
||||||
nft insert rule inet fw4 input iifname "$tun_device" counter accept comment "nikki"
|
nft insert rule inet fw4 input iifname "$tun_device" counter accept comment "nikki"
|
||||||
nft insert rule inet fw4 forward oifname "$tun_device" counter accept comment "nikki"
|
nft insert rule inet fw4 forward oifname "$tun_device" counter accept comment "nikki"
|
||||||
nft insert rule inet fw4 forward iifname "$tun_device" counter accept comment "nikki"
|
nft insert rule inet fw4 forward iifname "$tun_device" counter accept comment "nikki"
|
||||||
|
@ -30,6 +30,82 @@ mixin_dns_port=$(uci -q get nikki.mixin.dns_port); [ -n "$mixin_dns_port" ] && {
|
|||||||
uci set nikki.mixin.dns_listen=[::]:$mixin_dns_port
|
uci set nikki.mixin.dns_listen=[::]:$mixin_dns_port
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# since v1.22.0
|
||||||
|
|
||||||
|
proxy_transparent_proxy=$(uci -q get nikki.proxy.transparent_proxy); [ -n "$proxy_transparent_proxy" ] && {
|
||||||
|
uci rename nikki.proxy.transparent_proxy=enabled
|
||||||
|
uci rename nikki.proxy.tcp_transparent_proxy_mode=tcp_mode
|
||||||
|
uci rename nikki.proxy.udp_transparent_proxy_mode=udp_mode
|
||||||
|
|
||||||
|
uci add nikki router_access_control
|
||||||
|
uci set nikki.@router_access_control[-1].enabled=1
|
||||||
|
proxy_bypass_user=$(uci -q get nikki.proxy.bypass_user); [ -n "$proxy_bypass_user" ] && {
|
||||||
|
for user in $proxy_bypass_user; do
|
||||||
|
uci add_list nikki.@router_access_control[-1].user="$user"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
proxy_bypass_group=$(uci -q get nikki.proxy.bypass_group); [ -n "$proxy_bypass_group" ] && {
|
||||||
|
for group in $proxy_bypass_group; do
|
||||||
|
uci add_list nikki.@router_access_control[-1].group="$group"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
proxy_bypass_cgroup=$(uci -q get nikki.proxy.bypass_cgroup); [ -n "$proxy_bypass_cgroup" ] && {
|
||||||
|
for cgroup in $proxy_bypass_cgroup; do
|
||||||
|
uci add_list nikki.@router_access_control[-1].cgroup="$cgroup"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
uci set nikki.@router_access_control[-1].proxy=0
|
||||||
|
|
||||||
|
uci add nikki router_access_control
|
||||||
|
uci set nikki.@router_access_control[-1].enabled=1
|
||||||
|
uci set nikki.@router_access_control[-1].proxy=1
|
||||||
|
|
||||||
|
uci add_list nikki.proxy.lan_inbound_interface=lan
|
||||||
|
|
||||||
|
proxy_access_control_mode=$(uci -q get nikki.proxy.access_control_mode); [ "$proxy_access_control_mode" != "all" ] && {
|
||||||
|
proxy_acl_ip=$(uci -q get nikki.proxy.acl_ip); [ -n "$proxy_acl_ip" ] && {
|
||||||
|
for ip in $proxy_acl_ip; do
|
||||||
|
uci add nikki lan_access_control
|
||||||
|
uci set nikki.@lan_access_control[-1].enabled=1
|
||||||
|
uci add_list nikki.@lan_access_control[-1].ip="$ip"
|
||||||
|
[ "$proxy_access_control_mode" == "allow" ] && uci set nikki.@lan_access_control[-1].proxy=1
|
||||||
|
[ "$proxy_access_control_mode" == "block" ] && uci set nikki.@lan_access_control[-1].proxy=0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
proxy_acl_ip6=$(uci -q get nikki.proxy.acl_ip6); [ -n "$proxy_acl_ip6" ] && {
|
||||||
|
for ip6 in $proxy_acl_ip6; do
|
||||||
|
uci add nikki lan_access_control
|
||||||
|
uci set nikki.@lan_access_control[-1].enabled=1
|
||||||
|
uci add_list nikki.@lan_access_control[-1].ip6="$ip6"
|
||||||
|
[ "$proxy_access_control_mode" == "allow" ] && uci set nikki.@lan_access_control[-1].proxy=1
|
||||||
|
[ "$proxy_access_control_mode" == "block" ] && uci set nikki.@lan_access_control[-1].proxy=0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
proxy_acl_mac=$(uci -q get nikki.proxy.acl_mac); [ -n "$proxy_acl_mac" ] && {
|
||||||
|
for mac in $proxy_acl_mac; do
|
||||||
|
uci add nikki lan_access_control
|
||||||
|
uci set nikki.@lan_access_control[-1].enabled=1
|
||||||
|
uci add_list nikki.@lan_access_control[-1].mac="$mac"
|
||||||
|
[ "$proxy_access_control_mode" == "allow" ] && uci set nikki.@lan_access_control[-1].proxy=1
|
||||||
|
[ "$proxy_access_control_mode" == "block" ] && uci set nikki.@lan_access_control[-1].proxy=0
|
||||||
|
done
|
||||||
|
}
|
||||||
|
[ "$proxy_access_control_mode" == "block" ] && {
|
||||||
|
uci add nikki lan_access_control
|
||||||
|
uci set nikki.@lan_access_control[-1].enabled=1
|
||||||
|
uci set nikki.@lan_access_control[-1].proxy=1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
uci del nikki.proxy.access_control_mode
|
||||||
|
uci del nikki.proxy.acl_ip
|
||||||
|
uci del nikki.proxy.acl_ip6
|
||||||
|
uci del nikki.proxy.acl_mac
|
||||||
|
uci del nikki.proxy.acl_interface
|
||||||
|
uci del nikki.proxy.bypass_user
|
||||||
|
uci del nikki.proxy.bypass_group
|
||||||
|
uci del nikki.proxy.bypass_cgroup
|
||||||
|
}
|
||||||
|
|
||||||
# commit
|
# commit
|
||||||
uci commit nikki
|
uci commit nikki
|
||||||
|
@ -27,32 +27,43 @@
|
|||||||
|
|
||||||
const tun_device = uci.get('nikki', 'mixin', 'tun_device');
|
const tun_device = uci.get('nikki', 'mixin', 'tun_device');
|
||||||
|
|
||||||
const tcp_transparent_proxy_mode = uci.get('nikki', 'proxy', 'tcp_transparent_proxy_mode');
|
const tcp_mode = uci.get('nikki', 'proxy', 'tcp_mode');
|
||||||
const udp_transparent_proxy_mode = uci.get('nikki', 'proxy', 'udp_transparent_proxy_mode');
|
const udp_mode = uci.get('nikki', 'proxy', 'udp_mode');
|
||||||
const ipv4_dns_hijack = uci_bool(uci.get('nikki', 'proxy', 'ipv4_dns_hijack'));
|
const ipv4_dns_hijack = uci_bool(uci.get('nikki', 'proxy', 'ipv4_dns_hijack'));
|
||||||
const ipv6_dns_hijack = uci_bool(uci.get('nikki', 'proxy', 'ipv6_dns_hijack'));
|
const ipv6_dns_hijack = uci_bool(uci.get('nikki', 'proxy', 'ipv6_dns_hijack'));
|
||||||
const ipv4_proxy = uci_bool(uci.get('nikki', 'proxy', 'ipv4_proxy'));
|
const ipv4_proxy = uci_bool(uci.get('nikki', 'proxy', 'ipv4_proxy'));
|
||||||
const ipv6_proxy = uci_bool(uci.get('nikki', 'proxy', 'ipv6_proxy'));
|
const ipv6_proxy = uci_bool(uci.get('nikki', 'proxy', 'ipv6_proxy'));
|
||||||
const fake_ip_ping_hijack = uci_bool(uci.get('nikki', 'proxy', 'fake_ip_ping_hijack'));
|
const fake_ip_ping_hijack = uci_bool(uci.get('nikki', 'proxy', 'fake_ip_ping_hijack'));
|
||||||
|
|
||||||
const router_proxy = uci_bool(uci.get('nikki', 'proxy', 'router_proxy'));
|
const router_proxy = uci_bool(uci.get('nikki', 'proxy', 'router_proxy'));
|
||||||
|
const router_access_control = [];
|
||||||
|
uci.foreach('nikki', 'router_access_control', (access_control) => {
|
||||||
|
access_control['enabled'] = uci_bool(access_control['enabled']);
|
||||||
|
access_control['user'] = filter(uci_array(access_control['user']), (x) => index(users, x) >= 0);
|
||||||
|
access_control['group'] = filter(uci_array(access_control['group']), (x) => index(groups, x) >= 0);
|
||||||
|
access_control['cgroup'] = filter(uci_array(access_control['cgroup']), (x) => index(cgroups, x) >= 0);
|
||||||
|
access_control['proxy'] = uci_bool(access_control['proxy']);
|
||||||
|
push(router_access_control, access_control);
|
||||||
|
});
|
||||||
|
|
||||||
const lan_proxy = uci_bool(uci.get('nikki', 'proxy', 'lan_proxy'));
|
const lan_proxy = uci_bool(uci.get('nikki', 'proxy', 'lan_proxy'));
|
||||||
|
const lan_inbound_interface = uci_array(uci.get('nikki', 'proxy', 'lan_inbound_interface'));
|
||||||
const access_control_mode = uci.get('nikki', 'proxy', 'access_control_mode');
|
const lan_inbound_device = [];
|
||||||
const acl_ip = uci_array(uci.get('nikki', 'proxy', 'acl_ip'));
|
for (let interface in lan_inbound_interface) {
|
||||||
const acl_ip6 = uci_array(uci.get('nikki', 'proxy', 'acl_ip6'));
|
const device = ubus.call('network.interface', 'status', {'interface': interface})?.l3_device ?? '';
|
||||||
const acl_mac = uci_array(uci.get('nikki', 'proxy', 'acl_mac'));
|
if (device != '') {
|
||||||
const acl_interface = uci_array(uci.get('nikki', 'proxy', 'acl_interface'));
|
push(lan_inbound_device, device);
|
||||||
|
}
|
||||||
const bypass_user = filter(uci_array(uci.get('nikki', 'proxy', 'bypass_user')), (x) => x != 'root' && index(users, x) >= 0);
|
|
||||||
const bypass_group = filter(uci_array(uci.get('nikki', 'proxy', 'bypass_group')), (x) => x != 'root' && index(groups, x) >= 0);
|
|
||||||
|
|
||||||
let bypass_cgroup = [];
|
|
||||||
if (cgroups_version == 1) {
|
|
||||||
push(bypass_cgroup, cgroup_id);
|
|
||||||
} else if (cgroups_version == 2) {
|
|
||||||
bypass_cgroup = filter(uci_array(uci.get('nikki', 'proxy', 'bypass_cgroup')), (x) => x != 'nikki' && index(cgroups, x) >= 0);
|
|
||||||
push(bypass_cgroup, cgroup_name);
|
|
||||||
}
|
}
|
||||||
|
const lan_access_control = [];
|
||||||
|
uci.foreach('nikki', 'lan_access_control', (access_control) => {
|
||||||
|
access_control['enabled'] = uci_bool(access_control['enabled']);
|
||||||
|
access_control['ip'] = uci_array(access_control['ip']);
|
||||||
|
access_control['ip6'] = uci_array(access_control['ip6']);
|
||||||
|
access_control['mac'] = uci_array(access_control['mac']);
|
||||||
|
access_control['proxy'] = uci_bool(access_control['proxy']);
|
||||||
|
push(lan_access_control, access_control);
|
||||||
|
});
|
||||||
|
|
||||||
const bypass_dscp = uci_array(uci.get('nikki', 'proxy', 'bypass_dscp'));
|
const bypass_dscp = uci_array(uci.get('nikki', 'proxy', 'bypass_dscp'));
|
||||||
const bypass_china_mainland_ip = uci_bool(uci.get('nikki', 'proxy', 'bypass_china_mainland_ip'));
|
const bypass_china_mainland_ip = uci_bool(uci.get('nikki', 'proxy', 'bypass_china_mainland_ip'));
|
||||||
@ -67,14 +78,6 @@
|
|||||||
push(dns_hijack_nfproto, 'ipv6');
|
push(dns_hijack_nfproto, 'ipv6');
|
||||||
}
|
}
|
||||||
|
|
||||||
const acl_device = [];
|
|
||||||
for (let i = 0; i < length(acl_interface); i++) {
|
|
||||||
const device = ubus.call('network.interface', 'status', {'interface': acl_interface[i]})?.l3_device ?? '';
|
|
||||||
if (device != '') {
|
|
||||||
push(acl_device, device);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const proxy_nfproto = [];
|
const proxy_nfproto = [];
|
||||||
if (ipv4_proxy) {
|
if (ipv4_proxy) {
|
||||||
push(proxy_nfproto, 'ipv4');
|
push(proxy_nfproto, 'ipv4');
|
||||||
@ -98,8 +101,8 @@ table inet nikki {
|
|||||||
flags interval
|
flags interval
|
||||||
{% if (length(dns_hijack_nfproto) > 0): %}
|
{% if (length(dns_hijack_nfproto) > 0): %}
|
||||||
elements = {
|
elements = {
|
||||||
{% for (let x in dns_hijack_nfproto): %}
|
{% for (let nfproto in dns_hijack_nfproto): %}
|
||||||
{{ x }},
|
{{ nfproto }},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -110,67 +113,13 @@ table inet nikki {
|
|||||||
flags interval
|
flags interval
|
||||||
{% if (length(proxy_nfproto) > 0): %}
|
{% if (length(proxy_nfproto) > 0): %}
|
||||||
elements = {
|
elements = {
|
||||||
{% for (let x in proxy_nfproto): %}
|
{% for (let nfproto in proxy_nfproto): %}
|
||||||
{{ x }},
|
{{ nfproto }},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
set bypass_user {
|
|
||||||
type uid
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (length(bypass_user) > 0): %}
|
|
||||||
elements = {
|
|
||||||
{% for (let x in bypass_user): %}
|
|
||||||
{{ x }},
|
|
||||||
{% endfor %}
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
set bypass_group {
|
|
||||||
type gid
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (length(bypass_group) > 0): %}
|
|
||||||
elements = {
|
|
||||||
{% for (let x in bypass_group): %}
|
|
||||||
{{ x }},
|
|
||||||
{% endfor %}
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
|
|
||||||
{% if (cgroups_version == 1): %}
|
|
||||||
set bypass_cgroup {
|
|
||||||
typeof meta cgroup
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (length(bypass_cgroup) > 0): %}
|
|
||||||
elements = {
|
|
||||||
{% for (let x in bypass_cgroup): %}
|
|
||||||
{{ x }},
|
|
||||||
{% endfor %}
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
{% elif (cgroups_version == 2): %}
|
|
||||||
set bypass_cgroup {
|
|
||||||
type cgroupsv2
|
|
||||||
flags interval
|
|
||||||
auto-merge
|
|
||||||
{% if (length(bypass_cgroup) > 0): %}
|
|
||||||
elements = {
|
|
||||||
{% for (let x in bypass_cgroup): %}
|
|
||||||
services/{{ x }},
|
|
||||||
{% endfor %}
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
set reserved_ip {
|
set reserved_ip {
|
||||||
type ipv4_addr
|
type ipv4_addr
|
||||||
flags interval
|
flags interval
|
||||||
@ -183,6 +132,19 @@ table inet nikki {
|
|||||||
auto-merge
|
auto-merge
|
||||||
}
|
}
|
||||||
|
|
||||||
|
set lan_inbound_device {
|
||||||
|
type ifname
|
||||||
|
flags interval
|
||||||
|
auto-merge
|
||||||
|
{% if (length(lan_inbound_device) > 0): %}
|
||||||
|
elements = {
|
||||||
|
{% for (let device in lan_inbound_device): %}
|
||||||
|
{{ device }},
|
||||||
|
{% endfor %}
|
||||||
|
}
|
||||||
|
{% endif %}
|
||||||
|
}
|
||||||
|
|
||||||
set china_ip {
|
set china_ip {
|
||||||
type ipv4_addr
|
type ipv4_addr
|
||||||
flags interval
|
flags interval
|
||||||
@ -199,8 +161,8 @@ table inet nikki {
|
|||||||
auto-merge
|
auto-merge
|
||||||
{% if (length(proxy_dport) > 0): %}
|
{% if (length(proxy_dport) > 0): %}
|
||||||
elements = {
|
elements = {
|
||||||
{% for (let x in proxy_dport): %}
|
{% for (let dport in proxy_dport): %}
|
||||||
{{ x }},
|
{{ dport }},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -212,145 +174,215 @@ table inet nikki {
|
|||||||
auto-merge
|
auto-merge
|
||||||
{% if (length(bypass_dscp) > 0): %}
|
{% if (length(bypass_dscp) > 0): %}
|
||||||
elements = {
|
elements = {
|
||||||
{% for (let x in bypass_dscp): %}
|
{% for (let dscp in bypass_dscp): %}
|
||||||
{{ x }},
|
{{ dscp }},
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
set acl_ip {
|
chain router_dns_hijack {
|
||||||
type ipv4_addr
|
{% for (let access_control in router_access_control): %}
|
||||||
flags interval
|
{% if (access_control['enabled']): %}
|
||||||
auto-merge
|
{% if (length(access_control['user']) == 0 && length(access_control['group']) == 0 && length(access_control['cgroup']) == 0): %}
|
||||||
{% if (length(acl_ip) > 0): %}
|
meta l4proto { tcp, udp } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
elements = {
|
|
||||||
{% for (let x in acl_ip): %}
|
{% else %}
|
||||||
{{ x }},
|
{% if (length(access_control['user']) > 0): %}
|
||||||
{% endfor %}
|
meta l4proto { tcp, udp } meta skuid { {% for (let user in access_control['user']): %} {{ user }}, {% endfor %} } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['group']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } meta skgid { {% for (let group in access_control['group']): %} {{ group }}, {% endfor %} } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (cgroups_version == 2 && length(access_control['cgroup']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } socket cgroupv2 level 2 { {% for (let cgroup in access_control['cgroup']): %} services/{{ cgroup }}, {% endfor %} } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
set acl_ip6 {
|
chain router_redirect {
|
||||||
type ipv6_addr
|
{% for (let access_control in router_access_control): %}
|
||||||
flags interval
|
{% if (access_control['enabled']): %}
|
||||||
auto-merge
|
{% if (length(access_control['user']) == 0 && length(access_control['group']) == 0 && length(access_control['cgroup']) == 0): %}
|
||||||
{% if (length(acl_ip6) > 0): %}
|
meta l4proto tcp counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
elements = {
|
|
||||||
{% for (let x in acl_ip6): %}
|
{% else %}
|
||||||
{{ x }},
|
{% if (length(access_control['user']) > 0): %}
|
||||||
{% endfor %}
|
meta l4proto tcp meta skuid { {% for (let user in access_control['user']): %} {{ user }}, {% endfor %} } counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['group']) > 0): %}
|
||||||
|
meta l4proto tcp meta skgid { {% for (let group in access_control['group']): %} {{ group }}, {% endfor %} } counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (cgroups_version == 2 && length(access_control['cgroup']) > 0): %}
|
||||||
|
meta l4proto tcp socket cgroupv2 level 2 { {% for (let cgroup in access_control['cgroup']): %} services/{{ cgroup }}, {% endfor %} } counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
set acl_mac {
|
chain router_tproxy {
|
||||||
type ether_addr
|
{% for (let access_control in router_access_control): %}
|
||||||
flags interval
|
{% if (access_control['enabled']): %}
|
||||||
auto-merge
|
{% if (length(access_control['user']) == 0 && length(access_control['group']) == 0 && length(access_control['cgroup']) == 0): %}
|
||||||
{% if (length(acl_mac) > 0): %}
|
meta l4proto { tcp, udp } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
elements = {
|
|
||||||
{% for (let x in acl_mac): %}
|
{% else %}
|
||||||
{{ x }},
|
{% if (length(access_control['user']) > 0): %}
|
||||||
{% endfor %}
|
meta l4proto { tcp, udp } meta skuid { {% for (let user in access_control['user']): %} {{ user }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['group']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } meta skgid { {% for (let group in access_control['group']): %} {{ group }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (cgroups_version == 2 && length(access_control['cgroup']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } socket cgroupv2 level 2 { {% for (let cgroup in access_control['cgroup']): %} services/{{ cgroup }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
set acl_device {
|
chain router_tun {
|
||||||
type ifname
|
{% for (let access_control in router_access_control): %}
|
||||||
flags interval
|
{% if (access_control['enabled']): %}
|
||||||
auto-merge
|
{% if (length(access_control['user']) == 0 && length(access_control['group']) == 0 && length(access_control['cgroup']) == 0): %}
|
||||||
{% if (length(acl_device) > 0): %}
|
meta l4proto { tcp, udp } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %} counter return {% endif %}
|
||||||
elements = {
|
|
||||||
{% for (let x in acl_device): %}
|
{% else %}
|
||||||
{{ x }},
|
{% if (length(access_control['user']) > 0): %}
|
||||||
{% endfor %}
|
meta l4proto { tcp, udp } meta skuid { {% for (let user in access_control['user']): %} {{ user }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %} counter return {% endif %}
|
||||||
}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['group']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } meta skgid { {% for (let group in access_control['group']): %} {{ group }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %} counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (cgroups_version == 2 && length(access_control['cgroup']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } socket cgroupv2 level 2 { {% for (let cgroup in access_control['cgroup']): %} services/{{ cgroup }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %} counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
chain lan_dns_hijack {
|
chain lan_dns_hijack {
|
||||||
{% if (access_control_mode == 'all'): %}
|
{% for (let access_control in lan_access_control): %}
|
||||||
meta l4proto { tcp, udp } th dport 53 counter redirect to :{{ dns_port }}
|
{% if (access_control['enabled']): %}
|
||||||
{% elif (access_control_mode == 'allow'): %}
|
{% if (length(access_control['ip']) == 0 && length(access_control['ip6']) == 0 && length(access_control['mac']) == 0): %}
|
||||||
meta l4proto { tcp, udp } th dport 53 ip saddr @acl_ip counter redirect to :{{ dns_port }}
|
meta l4proto { tcp, udp } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
meta l4proto { tcp, udp } th dport 53 ip6 saddr @acl_ip6 counter redirect to :{{ dns_port }}
|
|
||||||
meta l4proto { tcp, udp } th dport 53 ether saddr @acl_mac counter redirect to :{{ dns_port }}
|
{% else %}
|
||||||
meta l4proto { tcp, udp } th dport 53 iifname @acl_device counter redirect to :{{ dns_port }}
|
{% if (length(access_control['ip']) > 0): %}
|
||||||
{% elif (access_control_mode == 'block'): %}
|
meta l4proto { tcp, udp } ip saddr { {% for (let ip in access_control['ip']): %} {{ ip }}, {% endfor %} } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
meta l4proto { tcp, udp } th dport 53 ip saddr @acl_ip counter return
|
|
||||||
meta l4proto { tcp, udp } th dport 53 ip6 saddr @acl_ip6 counter return
|
|
||||||
meta l4proto { tcp, udp } th dport 53 ether saddr @acl_mac counter return
|
|
||||||
meta l4proto { tcp, udp } th dport 53 iifname @acl_device counter return
|
|
||||||
meta l4proto { tcp, udp } th dport 53 counter redirect to :{{ dns_port }}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['ip6']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } ip6 saddr { {% for (let ip6 in access_control['ip6']): %} {{ ip6 }}, {% endfor %} } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (length(access_control['mac']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } ether saddr { {% for (let mac in access_control['mac']): %} {{ mac }}, {% endfor %} } th dport 53 counter {% if (access_control.proxy == '1'): %} redirect to :{{ dns_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
chain lan_redirect {
|
chain lan_redirect {
|
||||||
{% if (access_control_mode == 'all'): %}
|
{% for (let access_control in lan_access_control): %}
|
||||||
meta l4proto tcp counter redirect to :{{ redir_port }}
|
{% if (access_control['enabled']): %}
|
||||||
{% elif (access_control_mode == 'allow'): %}
|
{% if (length(access_control['ip']) == 0 && length(access_control['ip6']) == 0 && length(access_control['mac']) == 0): %}
|
||||||
meta l4proto tcp ip saddr @acl_ip counter redirect to :{{ redir_port }}
|
meta l4proto tcp tcp counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} counter return {% endif %}
|
||||||
meta l4proto tcp ip6 saddr @acl_ip6 counter redirect to :{{ redir_port }}
|
|
||||||
meta l4proto tcp ether saddr @acl_mac counter redirect to :{{ redir_port }}
|
{% else %}
|
||||||
meta l4proto tcp iifname @acl_device counter redirect to :{{ redir_port }}
|
{% if (length(access_control['ip']) > 0): %}
|
||||||
{% elif (access_control_mode == 'block'): %}
|
meta l4proto tcp ip saddr { {% for (let ip in access_control['ip']): %} {{ ip }}, {% endfor %} } counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
meta l4proto tcp ip saddr @acl_ip counter return
|
|
||||||
meta l4proto tcp ip6 saddr @acl_ip6 counter return
|
|
||||||
meta l4proto tcp ether saddr @acl_mac counter return
|
|
||||||
meta l4proto tcp iifname @acl_device counter return
|
|
||||||
meta l4proto tcp counter redirect to :{{ redir_port }}
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['ip6']) > 0): %}
|
||||||
|
meta l4proto tcp ip6 saddr { {% for (let ip6 in access_control['ip6']): %} {{ ip6 }}, {% endfor %} } counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (length(access_control['mac']) > 0): %}
|
||||||
|
meta l4proto tcp ether saddr { {% for (let mac in access_control['mac']): %} {{ mac }}, {% endfor %} } counter {% if (access_control.proxy == '1'): %} redirect to :{{ redir_port }} {% else %} return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
chain lan_tproxy {
|
chain lan_tproxy {
|
||||||
{% if (access_control_mode == 'all'): %}
|
{% for (let access_control in lan_access_control): %}
|
||||||
meta l4proto { tcp, udp } meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept
|
{% if (access_control['enabled']): %}
|
||||||
{% elif (access_control_mode == 'allow'): %}
|
{% if (length(access_control['ip']) == 0 && length(access_control['ip6']) == 0 && length(access_control['mac']) == 0): %}
|
||||||
meta l4proto { tcp, udp } ip saddr @acl_ip meta mark set {{ tproxy_fw_mark }} tproxy ip to :{{ tproxy_port }} counter accept
|
meta l4proto { tcp, udp } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
meta l4proto { tcp, udp } ip6 saddr @acl_ip6 meta mark set {{ tproxy_fw_mark }} tproxy ip6 to :{{ tproxy_port }} counter accept
|
|
||||||
meta l4proto { tcp, udp } ether saddr @acl_mac meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept
|
{% else %}
|
||||||
meta l4proto { tcp, udp } iifname @acl_device meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept
|
{% if (length(access_control['ip']) > 0): %}
|
||||||
{% elif (access_control_mode == 'block'): %}
|
meta l4proto { tcp, udp } ip saddr { {% for (let ip in access_control['ip']): %} {{ ip }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy ip to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
meta l4proto { tcp, udp } ip saddr @acl_ip counter return
|
|
||||||
meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return
|
|
||||||
meta l4proto { tcp, udp } ether saddr @acl_mac counter return
|
|
||||||
meta l4proto { tcp, udp } iifname @acl_device counter return
|
|
||||||
meta l4proto { tcp, udp } meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['ip6']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } ip6 saddr { {% for (let ip6 in access_control['ip6']): %} {{ ip6 }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy ip6 to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (length(access_control['mac']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } ether saddr { {% for (let mac in access_control['mac']): %} {{ mac }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept {% else %} counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
chain lan_tun {
|
chain lan_tun {
|
||||||
{% if (access_control_mode == 'all'): %}
|
{% for (let access_control in lan_access_control): %}
|
||||||
meta l4proto { tcp, udp } meta mark set {{ tun_fw_mark }} counter
|
{% if (access_control['enabled']): %}
|
||||||
{% elif (access_control_mode == 'allow'): %}
|
{% if (length(access_control['ip']) == 0 && length(access_control['ip6']) == 0 && length(access_control['mac']) == 0): %}
|
||||||
meta l4proto { tcp, udp } ip saddr @acl_ip meta mark set {{ tun_fw_mark }} counter
|
meta l4proto { tcp, udp } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %}counter return {% endif %}
|
||||||
meta l4proto { tcp, udp } ip6 saddr @acl_ip6 meta mark set {{ tun_fw_mark }} counter
|
|
||||||
meta l4proto { tcp, udp } ether saddr @acl_mac meta mark set {{ tun_fw_mark }} counter
|
{% else %}
|
||||||
meta l4proto { tcp, udp } iifname @acl_device meta mark set {{ tun_fw_mark }} counter
|
{% if (length(access_control['ip']) > 0): %}
|
||||||
{% elif (access_control_mode == 'block'): %}
|
meta l4proto { tcp, udp } ip saddr { {% for (let ip in access_control['ip']): %} {{ ip }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %}counter return {% endif %}
|
||||||
meta l4proto { tcp, udp } ip saddr @acl_ip counter return
|
|
||||||
meta l4proto { tcp, udp } ip6 saddr @acl_ip6 counter return
|
|
||||||
meta l4proto { tcp, udp } ether saddr @acl_mac counter return
|
|
||||||
meta l4proto { tcp, udp } iifname @acl_device counter return
|
|
||||||
meta l4proto { tcp, udp } meta mark set {{ tun_fw_mark }} counter
|
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
{% if (length(access_control['ip6']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } ip6 saddr { {% for (let ip6 in access_control['ip6']): %} {{ ip6 }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %}counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% if (length(access_control['mac']) > 0): %}
|
||||||
|
meta l4proto { tcp, udp } ether saddr { {% for (let mac in access_control['mac']): %} {{ mac }}, {% endfor %} } {% if (access_control.proxy == '1'): %} meta mark set {{ tun_fw_mark }} counter accept {% else %}counter return {% endif %}
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
}
|
}
|
||||||
|
|
||||||
{% if (router_proxy): %}
|
{% if (router_proxy): %}
|
||||||
chain nat_output {
|
chain nat_output {
|
||||||
type nat hook output priority filter; policy accept;
|
type nat hook output priority filter; policy accept;
|
||||||
{% if (cgroups_version == 1): %}
|
{% if (cgroups_version == 1): %}
|
||||||
meta cgroup @bypass_cgroup counter return
|
meta cgroup {{ cgroup_id }} counter return
|
||||||
{% elif (cgroups_version == 2): %}
|
{% elif (cgroups_version == 2): %}
|
||||||
socket cgroupv2 level 2 @bypass_cgroup counter return
|
socket cgroupv2 level 2 services/{{ cgroup_name }} counter return
|
||||||
{% endif %}
|
{% endif %}
|
||||||
meta skuid @bypass_user counter return
|
meta nfproto @dns_hijack_nfproto jump router_dns_hijack
|
||||||
meta skgid @bypass_group counter return
|
{% if (tcp_mode == 'redirect'): %}
|
||||||
meta nfproto @dns_hijack_nfproto meta l4proto { tcp, udp } th dport 53 counter redirect to :{{ dns_port }}
|
|
||||||
{% if (tcp_transparent_proxy_mode == 'redirect'): %}
|
|
||||||
fib daddr type { local, multicast, broadcast, anycast } counter return
|
fib daddr type { local, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
@ -361,7 +393,7 @@ table inet nikki {
|
|||||||
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
|
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
|
||||||
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
||||||
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
||||||
meta nfproto @proxy_nfproto meta l4proto tcp counter redirect to :{{ redir_port }}
|
meta nfproto @proxy_nfproto jump router_redirect
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if (fake_ip_ping_hijack): %}
|
{% if (fake_ip_ping_hijack): %}
|
||||||
ip protocol icmp icmp type echo-request ip daddr {{ fake_ip_range }} counter redirect
|
ip protocol icmp icmp type echo-request ip daddr {{ fake_ip_range }} counter redirect
|
||||||
@ -371,12 +403,10 @@ table inet nikki {
|
|||||||
chain mangle_output {
|
chain mangle_output {
|
||||||
type route hook output priority mangle; policy accept;
|
type route hook output priority mangle; policy accept;
|
||||||
{% if (cgroups_version == 1): %}
|
{% if (cgroups_version == 1): %}
|
||||||
meta cgroup @bypass_cgroup counter return
|
meta cgroup {{ cgroup_id }} counter return
|
||||||
{% elif (cgroups_version == 2): %}
|
{% elif (cgroups_version == 2): %}
|
||||||
socket cgroupv2 level 2 @bypass_cgroup counter return
|
socket cgroupv2 level 2 services/{{ cgroup_name }} counter return
|
||||||
{% endif %}
|
{% endif %}
|
||||||
meta skuid @bypass_user counter return
|
|
||||||
meta skgid @bypass_group counter return
|
|
||||||
fib daddr type { local, multicast, broadcast, anycast } counter return
|
fib daddr type { local, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
@ -388,25 +418,25 @@ table inet nikki {
|
|||||||
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
||||||
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
||||||
meta nfproto @dns_hijack_nfproto meta l4proto { tcp, udp } th dport 53 counter return
|
meta nfproto @dns_hijack_nfproto meta l4proto { tcp, udp } th dport 53 counter return
|
||||||
{% if (tcp_transparent_proxy_mode == 'tproxy'): %}
|
{% if (tcp_mode == 'tproxy'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto tcp meta mark set {{ tproxy_fw_mark }} counter
|
meta nfproto @proxy_nfproto meta l4proto tcp jump router_tproxy
|
||||||
{% elif (tcp_transparent_proxy_mode == 'tun'): %}
|
{% elif (tcp_mode == 'tun'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto tcp meta mark set {{ tun_fw_mark }} counter
|
meta nfproto @proxy_nfproto meta l4proto tcp jump router_tun
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if (udp_transparent_proxy_mode == 'tproxy'): %}
|
{% if (udp_mode == 'tproxy'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto udp meta mark set {{ tproxy_fw_mark }} counter
|
meta nfproto @proxy_nfproto meta l4proto udp jump router_tproxy
|
||||||
{% elif (udp_transparent_proxy_mode == 'tun'): %}
|
{% elif (udp_mode == 'tun'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto udp meta mark set {{ tun_fw_mark }} counter
|
meta nfproto @proxy_nfproto meta l4proto udp jump router_tun
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
|
|
||||||
chain mangle_prerouting_router {
|
chain mangle_prerouting_router {
|
||||||
type filter hook prerouting priority mangle - 1; policy accept;
|
type filter hook prerouting priority mangle - 1; policy accept;
|
||||||
{% if (tcp_transparent_proxy_mode == 'tproxy' || udp_transparent_proxy_mode == 'tproxy'): %}
|
{% if (tcp_mode == 'tproxy' || udp_mode == 'tproxy'): %}
|
||||||
meta l4proto { tcp, udp } iifname lo meta mark {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept
|
iifname lo meta l4proto { tcp, udp } meta mark {{ tproxy_fw_mark }} tproxy to :{{ tproxy_port }} counter accept
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if (tcp_transparent_proxy_mode == 'tun' || udp_transparent_proxy_mode == 'tun'): %}
|
{% if (tcp_mode == 'tun' || udp_mode == 'tun'): %}
|
||||||
meta l4proto { tcp, udp } iifname {{ tun_device }} counter accept
|
iifname {{ tun_device }} meta l4proto { icmp, tcp, udp } counter accept
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
@ -414,8 +444,8 @@ table inet nikki {
|
|||||||
{% if (lan_proxy): %}
|
{% if (lan_proxy): %}
|
||||||
chain dstnat {
|
chain dstnat {
|
||||||
type nat hook prerouting priority dstnat + 1; policy accept;
|
type nat hook prerouting priority dstnat + 1; policy accept;
|
||||||
meta nfproto @dns_hijack_nfproto jump lan_dns_hijack
|
iifname @lan_inbound_device meta nfproto @dns_hijack_nfproto jump lan_dns_hijack
|
||||||
{% if (tcp_transparent_proxy_mode == 'redirect'): %}
|
{% if (tcp_mode == 'redirect'): %}
|
||||||
fib daddr type { local, multicast, broadcast, anycast } counter return
|
fib daddr type { local, multicast, broadcast, anycast } counter return
|
||||||
ct direction reply counter return
|
ct direction reply counter return
|
||||||
ip daddr @reserved_ip counter return
|
ip daddr @reserved_ip counter return
|
||||||
@ -426,7 +456,7 @@ table inet nikki {
|
|||||||
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
|
meta nfproto ipv6 meta l4proto . th dport != @proxy_dport counter return
|
||||||
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
||||||
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
||||||
meta nfproto @proxy_nfproto jump lan_redirect
|
iifname @lan_inbound_device meta nfproto @proxy_nfproto jump lan_redirect
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if (fake_ip_ping_hijack): %}
|
{% if (fake_ip_ping_hijack): %}
|
||||||
ip protocol icmp icmp type echo-request ip daddr {{ fake_ip_range }} counter redirect
|
ip protocol icmp icmp type echo-request ip daddr {{ fake_ip_range }} counter redirect
|
||||||
@ -446,15 +476,15 @@ table inet nikki {
|
|||||||
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
meta l4proto { tcp, udp } ip dscp @bypass_dscp ip daddr != {{ fake_ip_range }} counter return
|
||||||
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
meta l4proto { tcp, udp } ip6 dscp @bypass_dscp counter return
|
||||||
meta nfproto @dns_hijack_nfproto meta l4proto { tcp, udp } th dport 53 counter return
|
meta nfproto @dns_hijack_nfproto meta l4proto { tcp, udp } th dport 53 counter return
|
||||||
{% if (tcp_transparent_proxy_mode == 'tproxy'): %}
|
{% if (tcp_mode == 'tproxy'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto tcp jump lan_tproxy
|
iifname @lan_inbound_device meta nfproto @proxy_nfproto meta l4proto tcp jump lan_tproxy
|
||||||
{% elif (tcp_transparent_proxy_mode == 'tun'): %}
|
{% elif (tcp_mode == 'tun'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto tcp jump lan_tun
|
iifname @lan_inbound_device meta nfproto @proxy_nfproto meta l4proto tcp jump lan_tun
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if (udp_transparent_proxy_mode == 'tproxy'): %}
|
{% if (udp_mode == 'tproxy'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto udp jump lan_tproxy
|
iifname @lan_inbound_device meta nfproto @proxy_nfproto meta l4proto udp jump lan_tproxy
|
||||||
{% elif (udp_transparent_proxy_mode == 'tun'): %}
|
{% elif (udp_mode == 'tun'): %}
|
||||||
meta nfproto @proxy_nfproto meta l4proto udp jump lan_tun
|
iifname @lan_inbound_device meta nfproto @proxy_nfproto meta l4proto udp jump lan_tun
|
||||||
{% endif %}
|
{% endif %}
|
||||||
}
|
}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
@ -47,7 +47,7 @@ if (uci_bool(uci.get('nikki', 'mixin', 'authentication'))) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config['tun'] = {};
|
config['tun'] = {};
|
||||||
if (uci.get('nikki', 'proxy', 'tcp_transparent_proxy_mode') == 'tun' || uci.get('nikki', 'proxy', 'udp_transparent_proxy_mode') == 'tun') {
|
if (uci.get('nikki', 'proxy', 'tcp_mode') == 'tun' || uci.get('nikki', 'proxy', 'udp_mode') == 'tun') {
|
||||||
config['tun']['enable'] = true;
|
config['tun']['enable'] = true;
|
||||||
config['tun']['auto-route'] = false;
|
config['tun']['auto-route'] = false;
|
||||||
config['tun']['auto-redirect'] = false;
|
config['tun']['auto-redirect'] = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user