feat: detect lan & wan subnet

This commit is contained in:
asvow
2024-10-16 18:51:30 +08:00
parent 0f6cc25ee9
commit ae77b199a4
5 changed files with 227 additions and 173 deletions

View File

@@ -18,6 +18,51 @@ var callServiceList = rpc.declare({
expect: { '': {} } expect: { '': {} }
}); });
function callInterfaceStatus(interfaceName) {
return rpc.declare({
object: `network.interface.${interfaceName}`,
method: 'status',
params: ['name'],
expect: { '': {} }
});
}
function getInterfaceSubnets(interfaces = ['lan', 'wan']) {
const calculateSubnetAndCIDR = (ip, cidr) => {
const cidrInt = parseInt(cidr, 10);
const maskBinary = '1'.repeat(cidrInt).padEnd(32, '0');
const ipBinary = (ip) =>
ip.split('.').map(octet => parseInt(octet, 10).toString(2).padStart(8, '0'))
.join('');
const subnetBinary = ipBinary(ip).split('').map((bit, index) =>
(bit === '1' && maskBinary[index] === '1') ? '1' : '0'
).join('');
const subnet = [
parseInt(subnetBinary.slice(0, 8), 2),
parseInt(subnetBinary.slice(8, 16), 2),
parseInt(subnetBinary.slice(16, 24), 2),
parseInt(subnetBinary.slice(24, 32), 2)
].join('.');
return `${subnet}/${cidrInt}`;
};
const rpcCalls = interfaces.map(interfaceName => {
const callStatus = callInterfaceStatus(interfaceName);
return callStatus('ipv4-address').catch(() => ({ 'ipv4-address': [] }));
});
return Promise.all(rpcCalls)
.then(res => {
const interfaceSubnets = res.flatMap(status =>
(status['ipv4-address'] || []).map(addr => {
return calculateSubnetAndCIDR(addr.address, addr.mask)
})
);
return [...new Set(interfaceSubnets)];
})
.catch(() => []);
}
function getStatus() { function getStatus() {
var status = { var status = {
isRunning: false, isRunning: false,
@@ -81,13 +126,15 @@ return view.extend({
load: function() { load: function() {
return Promise.all([ return Promise.all([
uci.load('tailscale'), uci.load('tailscale'),
getStatus() getStatus(),
getInterfaceSubnets()
]); ]);
}, },
render: function(data) { render: function(data) {
var m, s, o; var m, s, o;
var statusData = data[1]; var statusData = data[1];
var interfaceSubnets = data[2];
var onlineExitNodes = statusData.onlineExitNodes; var onlineExitNodes = statusData.onlineExitNodes;
var subnetRoutes = statusData.subnetRoutes; var subnetRoutes = statusData.subnetRoutes;
@@ -187,6 +234,11 @@ return view.extend({
o.rmempty = true; o.rmempty = true;
o = s.taboption('advance', form.DynamicList, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>.')); o = s.taboption('advance', form.DynamicList, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>.'));
if (interfaceSubnets.length > 0) {
interfaceSubnets.forEach(function(subnet) {
o.value(subnet, subnet);
});
}
o.default = ''; o.default = '';
o.rmempty = true; o.rmempty = true;

View File

@@ -1,88 +1,88 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:224
msgid "-- Please choose --" msgid "-- Please choose --"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "Accept DNS" msgid "Accept DNS"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "Accept DNS configuration from the Tailscale admin console." msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:206
msgid "Accept Routes" msgid "Accept Routes"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:206
msgid "Accept subnet routes that other nodes advertise." msgid "Accept subnet routes that other nodes advertise."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:263
msgid "Access Control" msgid "Access Control"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "Additional Flags" msgid "Additional Flags"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Are you sure you want to logout and unbind the current device?" msgid "Are you sure you want to logout and unbind the current device?"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:285
msgid "Auth Key" msgid "Auth Key"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "Available flags" msgid "Available flags"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:169
msgid "Basic Settings" msgid "Basic Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:164
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:278
msgid "Custom Server Settings" msgid "Custom Server Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:210
msgid "Device Name" msgid "Device Name"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Enable" msgid "Enable"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:218
msgid "Exit Node" msgid "Exit Node"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:236
msgid "Expose Subnets" msgid "Expose Subnets"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:236
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>." msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:271
msgid "Extra Settings" msgid "Extra Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "" msgstr ""
@@ -110,31 +110,31 @@ msgstr ""
msgid "Interface Name" msgid "Interface Name"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:266
msgid "LAN access Tailscale" msgid "LAN access Tailscale"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:210
msgid "Leave blank to use the device's hostname." msgid "Leave blank to use the device's hostname."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale." msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "Logging program activities." msgid "Logging program activities."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:200
msgid "Logging program errors and exceptions." msgid "Logging program errors and exceptions."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Login Status" msgid "Login Status"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117
msgid "Logout and Unbind" msgid "Logout and Unbind"
msgstr "" msgstr ""
@@ -146,12 +146,12 @@ msgstr ""
msgid "MTU" msgid "MTU"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:114
msgid "Needs Login" msgid "Needs Login"
msgstr "" msgstr ""
@@ -159,11 +159,11 @@ msgstr ""
msgid "Network Interface Information" msgid "Network Interface Information"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229
msgid "No Available Exit Nodes" msgid "No Available Exit Nodes"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:256
msgid "No Available Subnet Routes" msgid "No Available Subnet Routes"
msgstr "" msgstr ""
@@ -171,19 +171,19 @@ msgstr ""
msgid "No interface online." msgid "No interface online."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:218
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network." msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:222
msgid "Online Exit Nodes" msgid "Online Exit Nodes"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102
msgid "RUNNING" msgid "RUNNING"
msgstr "" msgstr ""
@@ -197,60 +197,60 @@ msgctxt "scroll to bottom (the tail) of the log file"
msgid "Scroll to tail" msgid "Scroll to tail"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:222
msgid "Select an online machine name to use as an exit node." msgid "Select an online machine name to use as an exit node."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:250
msgid "Select subnet routes advertised by other nodes in Tailscale network." msgid "Select subnet routes advertised by other nodes in Tailscale network."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:281
msgid "Server Address" msgid "Server Address"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
msgid "Set the Tailscale port number." msgid "Set the Tailscale port number."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:245
msgid "Site To Site" msgid "Site To Site"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:200
msgid "StdErr Log" msgid "StdErr Log"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "StdOut Log" msgid "StdOut Log"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:250
msgid "Subnet Routes" msgid "Subnet Routes"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:141
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3 #: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale" msgid "Tailscale"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:264
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:265
msgid "Tailscale access WAN" msgid "Tailscale access WAN"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:141
msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "The working directory contains config files, audit logs, and runtime info." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "" msgstr ""
@@ -274,18 +274,18 @@ msgstr ""
msgid "Unable to load log data:" msgid "Unable to load log data:"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:279
msgid "Use %s to deploy a private server." msgid "Use %s to deploy a private server."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:245
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network." msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:267
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Workdir" msgid "Workdir"
msgstr "" msgstr ""

View File

@@ -7,88 +7,88 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:224
msgid "-- Please choose --" msgid "-- Please choose --"
msgstr "-- 请选择 --" msgstr "-- 请选择 --"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "Accept DNS" msgid "Accept DNS"
msgstr "允许DNS" msgstr "允许DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "Accept DNS configuration from the Tailscale admin console." msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "使用 Tailscale 管理控制台的 DNS 配置。" msgstr "使用 Tailscale 管理控制台的 DNS 配置。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:206
msgid "Accept Routes" msgid "Accept Routes"
msgstr "启用路由" msgstr "启用路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:206
msgid "Accept subnet routes that other nodes advertise." msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他节点广播的子网路由。" msgstr "接受其他节点广播的子网路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:263
msgid "Access Control" msgid "Access Control"
msgstr "访问控制" msgstr "访问控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "Additional Flags" msgid "Additional Flags"
msgstr "参数列表" msgstr "参数列表"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "高级设置" msgstr "高级设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Are you sure you want to logout and unbind the current device?" msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否注销当前登录并且解绑当前设备?" msgstr "是否注销当前登录并且解绑当前设备?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:285
msgid "Auth Key" msgid "Auth Key"
msgstr "认证密钥" msgstr "认证密钥"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "Available flags" msgid "Available flags"
msgstr "可用参数" msgstr "可用参数"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:169
msgid "Basic Settings" msgid "Basic Settings"
msgstr "基础设置" msgstr "基础设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:164
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "正在收集数据..." msgstr "正在收集数据..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:278
msgid "Custom Server Settings" msgid "Custom Server Settings"
msgstr "自定义服务器" msgstr "自定义服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:210
msgid "Device Name" msgid "Device Name"
msgstr "设备名称" msgstr "设备名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Enable" msgid "Enable"
msgstr "启用" msgstr "启用"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:218
msgid "Exit Node" msgid "Exit Node"
msgstr "出口节点" msgstr "出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:236
msgid "Expose Subnets" msgid "Expose Subnets"
msgstr "公开网段" msgstr "公开网段"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:236
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>." msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "广播子网路由至 Tailscale例如<code>10.0.0.0/24</code>。" msgstr "广播子网路由至 Tailscale例如<code>10.0.0.0/24</code>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:271
msgid "Extra Settings" msgid "Extra Settings"
msgstr "附加设置" msgstr "附加设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "防火墙模式" msgstr "防火墙模式"
@@ -116,31 +116,31 @@ msgstr "接口信息"
msgid "Interface Name" msgid "Interface Name"
msgstr "接口名称" msgstr "接口名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:266
msgid "LAN access Tailscale" msgid "LAN access Tailscale"
msgstr "本地局域网访问虚拟局域网" msgstr "本地局域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:210
msgid "Leave blank to use the device's hostname." msgid "Leave blank to use the device's hostname."
msgstr "留空以使用设备的主机名。" msgstr "留空以使用设备的主机名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale." msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "额外参数的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 启动时的%s。" msgstr "额外参数的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 启动时的%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "Logging program activities." msgid "Logging program activities."
msgstr "记录程序运行信息。" msgstr "记录程序运行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:200
msgid "Logging program errors and exceptions." msgid "Logging program errors and exceptions."
msgstr "记录程序错误和警告信息。" msgstr "记录程序错误和警告信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Login Status" msgid "Login Status"
msgstr "已绑定用户" msgstr "已绑定用户"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117
msgid "Logout and Unbind" msgid "Logout and Unbind"
msgstr "注销登录并解除绑定" msgstr "注销登录并解除绑定"
@@ -152,12 +152,12 @@ msgstr "日志"
msgid "MTU" msgid "MTU"
msgstr "MTU" msgstr "MTU"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "未运行" msgstr "未运行"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:114
msgid "Needs Login" msgid "Needs Login"
msgstr "未登录" msgstr "未登录"
@@ -165,11 +165,11 @@ msgstr "未登录"
msgid "Network Interface Information" msgid "Network Interface Information"
msgstr "网络接口信息" msgstr "网络接口信息"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229
msgid "No Available Exit Nodes" msgid "No Available Exit Nodes"
msgstr "没有可用的出口节点" msgstr "没有可用的出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:256
msgid "No Available Subnet Routes" msgid "No Available Subnet Routes"
msgstr "没有可用的子网路由" msgstr "没有可用的子网路由"
@@ -177,19 +177,19 @@ msgstr "没有可用的子网路由"
msgid "No interface online." msgid "No interface online."
msgstr "无在线接口。" msgstr "无在线接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:218
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network." msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "作为 Tailscale 广域网出口节点。" msgstr "作为 Tailscale 广域网出口节点。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:222
msgid "Online Exit Nodes" msgid "Online Exit Nodes"
msgstr "可用出口节点" msgstr "可用出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102
msgid "RUNNING" msgid "RUNNING"
msgstr "运行中" msgstr "运行中"
@@ -203,60 +203,60 @@ msgctxt "scroll to bottom (the tail) of the log file"
msgid "Scroll to tail" msgid "Scroll to tail"
msgstr "滚动到底部" msgstr "滚动到底部"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:222
msgid "Select an online machine name to use as an exit node." msgid "Select an online machine name to use as an exit node."
msgstr "选择一个可用的节点名称作为出口节点使用。" msgstr "选择一个可用的节点名称作为出口节点使用。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:250
msgid "Select subnet routes advertised by other nodes in Tailscale network." msgid "Select subnet routes advertised by other nodes in Tailscale network."
msgstr "选择非本设备广播的子网路由。" msgstr "选择非本设备广播的子网路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:281
msgid "Server Address" msgid "Server Address"
msgstr "服务器地址" msgstr "服务器地址"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
msgid "Set the Tailscale port number." msgid "Set the Tailscale port number."
msgstr "设置 Tailscale 端口号。" msgstr "设置 Tailscale 端口号。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:245
msgid "Site To Site" msgid "Site To Site"
msgstr "子网互通" msgstr "子网互通"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:200
msgid "StdErr Log" msgid "StdErr Log"
msgstr "错误日志" msgstr "错误日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "StdOut Log" msgid "StdOut Log"
msgstr "运行日志" msgstr "运行日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:250
msgid "Subnet Routes" msgid "Subnet Routes"
msgstr "子网路由" msgstr "子网路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:141
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3 #: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale" msgid "Tailscale"
msgstr "Tailscale" msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:264
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "虚拟局域网访问本地局域网" msgstr "虚拟局域网访问本地局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:265
msgid "Tailscale access WAN" msgid "Tailscale access WAN"
msgstr "虚拟局域网访问本地广域网" msgstr "虚拟局域网访问本地广域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:141
msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "Tailscale 是一个跨平台且易于使用的虚拟局域网 VPN。" msgstr "Tailscale 是一个跨平台且易于使用的虚拟局域网 VPN。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "The working directory contains config files, audit logs, and runtime info." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目录包含配置文件、审计日志和运行时信息。" msgstr "工作目录包含配置文件、审计日志和运行时信息。"
@@ -280,18 +280,18 @@ msgstr "无法获取接口信息:%s。"
msgid "Unable to load log data:" msgid "Unable to load log data:"
msgstr "无法读取日志数据:" msgstr "无法读取日志数据:"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:279
msgid "Use %s to deploy a private server." msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有服务器" msgstr "使用 %s 部署私有服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:245
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network." msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站点到站点的三层网络连接 Tailscale 中的子网。" msgstr "使用站点到站点的三层网络连接 Tailscale 中的子网。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:267
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "本地广域网访问虚拟局域网" msgstr "本地广域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Workdir" msgid "Workdir"
msgstr "工作目录" msgstr "工作目录"

View File

@@ -7,88 +7,88 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:224
msgid "-- Please choose --" msgid "-- Please choose --"
msgstr "-- 請選擇 --" msgstr "-- 請選擇 --"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "Accept DNS" msgid "Accept DNS"
msgstr "允許DNS" msgstr "允許DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "Accept DNS configuration from the Tailscale admin console." msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "使用 Tailscale 管理控制台的 DNS 設定。" msgstr "使用 Tailscale 管理控制台的 DNS 設定。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:206
msgid "Accept Routes" msgid "Accept Routes"
msgstr "啟用路由" msgstr "啟用路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:206
msgid "Accept subnet routes that other nodes advertise." msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他節點廣播的子網路由。" msgstr "接受其他節點廣播的子網路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:263
msgid "Access Control" msgid "Access Control"
msgstr "訪問控制" msgstr "訪問控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "Additional Flags" msgid "Additional Flags"
msgstr "參數列表" msgstr "參數列表"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "高級設置" msgstr "高級設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Are you sure you want to logout and unbind the current device?" msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否註銷當前登錄並且解綁當前設備?" msgstr "是否註銷當前登錄並且解綁當前設備?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:285
msgid "Auth Key" msgid "Auth Key"
msgstr "認證密鑰" msgstr "認證密鑰"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "Available flags" msgid "Available flags"
msgstr "可用參數" msgstr "可用參數"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:169
msgid "Basic Settings" msgid "Basic Settings"
msgstr "基礎設置" msgstr "基礎設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:164
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "正在收集數據..." msgstr "正在收集數據..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:278
msgid "Custom Server Settings" msgid "Custom Server Settings"
msgstr "自定義伺服器" msgstr "自定義伺服器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:210
msgid "Device Name" msgid "Device Name"
msgstr "設備名稱" msgstr "設備名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Enable" msgid "Enable"
msgstr "啟用" msgstr "啟用"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:218
msgid "Exit Node" msgid "Exit Node"
msgstr "出口節點" msgstr "出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:236
msgid "Expose Subnets" msgid "Expose Subnets"
msgstr "公開網段" msgstr "公開網段"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:236
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>." msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "廣播子網路由至 Tailscale例如<code>10.0.0.0/24</code>。" msgstr "廣播子網路由至 Tailscale例如<code>10.0.0.0/24</code>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:271
msgid "Extra Settings" msgid "Extra Settings"
msgstr "附加設置" msgstr "附加設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "防火牆模式" msgstr "防火牆模式"
@@ -116,31 +116,31 @@ msgstr "接口信息"
msgid "Interface Name" msgid "Interface Name"
msgstr "接口名稱" msgstr "接口名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:266
msgid "LAN access Tailscale" msgid "LAN access Tailscale"
msgstr "本地局域網訪問虛擬局域網" msgstr "本地局域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:210
msgid "Leave blank to use the device's hostname." msgid "Leave blank to use the device's hostname."
msgstr "留空以使用設備的主機名。" msgstr "留空以使用設備的主機名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:273
msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale." msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "額外參數的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 啟動時的%s。" msgstr "額外參數的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 啟動時的%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "Logging program activities." msgid "Logging program activities."
msgstr "記錄程式運行信息。" msgstr "記錄程式運行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:200
msgid "Logging program errors and exceptions." msgid "Logging program errors and exceptions."
msgstr "記錄程式錯誤和警告信息。" msgstr "記錄程式錯誤和警告信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Login Status" msgid "Login Status"
msgstr "已綁定用戶" msgstr "已綁定用戶"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117
msgid "Logout and Unbind" msgid "Logout and Unbind"
msgstr "註銷登錄並解除綁定" msgstr "註銷登錄並解除綁定"
@@ -152,12 +152,12 @@ msgstr "日誌"
msgid "MTU" msgid "MTU"
msgstr "MTU" msgstr "MTU"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "未運行" msgstr "未運行"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:114
msgid "Needs Login" msgid "Needs Login"
msgstr "未登錄" msgstr "未登錄"
@@ -165,11 +165,11 @@ msgstr "未登錄"
msgid "Network Interface Information" msgid "Network Interface Information"
msgstr "網絡接口信息" msgstr "網絡接口信息"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229
msgid "No Available Exit Nodes" msgid "No Available Exit Nodes"
msgstr "没有可用的出口節點" msgstr "没有可用的出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:256
msgid "No Available Subnet Routes" msgid "No Available Subnet Routes"
msgstr "沒有可用的子網路由" msgstr "沒有可用的子網路由"
@@ -177,19 +177,19 @@ msgstr "沒有可用的子網路由"
msgid "No interface online." msgid "No interface online."
msgstr "無在線接口。" msgstr "無在線接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:218
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network." msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "作為 Tailscale 廣域網出口節點。" msgstr "作為 Tailscale 廣域網出口節點。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:222
msgid "Online Exit Nodes" msgid "Online Exit Nodes"
msgstr "可用出口節點" msgstr "可用出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102
msgid "RUNNING" msgid "RUNNING"
msgstr "運行中" msgstr "運行中"
@@ -203,60 +203,60 @@ msgctxt "scroll to bottom (the tail) of the log file"
msgid "Scroll to tail" msgid "Scroll to tail"
msgstr "捲動到尾部" msgstr "捲動到尾部"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:222
msgid "Select an online machine name to use as an exit node." msgid "Select an online machine name to use as an exit node."
msgstr "選擇一個可用的節點名稱作為出口節點使用。" msgstr "選擇一個可用的節點名稱作為出口節點使用。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:250
msgid "Select subnet routes advertised by other nodes in Tailscale network." msgid "Select subnet routes advertised by other nodes in Tailscale network."
msgstr "選擇非本設備廣播的子網路由。" msgstr "選擇非本設備廣播的子網路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:281
msgid "Server Address" msgid "Server Address"
msgstr "伺服器地址" msgstr "伺服器地址"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
msgid "Set the Tailscale port number." msgid "Set the Tailscale port number."
msgstr "設置 Tailscale 端口號。" msgstr "設置 Tailscale 端口號。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:245
msgid "Site To Site" msgid "Site To Site"
msgstr "子網互通" msgstr "子網互通"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:200
msgid "StdErr Log" msgid "StdErr Log"
msgstr "錯誤日誌" msgstr "錯誤日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "StdOut Log" msgid "StdOut Log"
msgstr "運行日誌" msgstr "運行日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:250
msgid "Subnet Routes" msgid "Subnet Routes"
msgstr "子網路由" msgstr "子網路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:141
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3 #: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale" msgid "Tailscale"
msgstr "Tailscale" msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:264
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "虛擬局域網訪問本地局域網" msgstr "虛擬局域網訪問本地局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:265
msgid "Tailscale access WAN" msgid "Tailscale access WAN"
msgstr "虛擬局域網訪問本地廣域網" msgstr "虛擬局域網訪問本地廣域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:141
msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "Tailscale 是一個跨平台且易於使用的虛擬局域網 VPN。" msgstr "Tailscale 是一個跨平台且易於使用的虛擬局域網 VPN。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "The working directory contains config files, audit logs, and runtime info." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目錄包含配置文件、審計日誌和運行時信息。" msgstr "工作目錄包含配置文件、審計日誌和運行時信息。"
@@ -280,18 +280,18 @@ msgstr "無法獲取接口信息:%s。"
msgid "Unable to load log data:" msgid "Unable to load log data:"
msgstr "無法載入日誌檔:" msgstr "無法載入日誌檔:"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:279
msgid "Use %s to deploy a private server." msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有伺服器" msgstr "使用 %s 部署私有伺服器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:245
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network." msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站點到站點的三層網路連線 Tailscale 中的子網。" msgstr "使用站點到站點的三層網路連線 Tailscale 中的子網。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:267
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "本地廣域網訪問虛擬局域網" msgstr "本地廣域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Workdir" msgid "Workdir"
msgstr "工作目錄" msgstr "工作目錄"

View File

@@ -8,7 +8,9 @@
"/usr/sbin/tailscale": [ "exec" ] "/usr/sbin/tailscale": [ "exec" ]
}, },
"ubus": { "ubus": {
"service": [ "list" ] "service": [ "list" ],
"network.interface.lan": [ "status" ],
"network.interface.wan": [ "status" ]
}, },
"uci": [ "tailscale" ] "uci": [ "tailscale" ]
}, },