From ae77b199a429398778d12d90e43d99bce558226d Mon Sep 17 00:00:00 2001 From: asvow <88471740+asvow@users.noreply.github.com> Date: Wed, 16 Oct 2024 18:51:30 +0800 Subject: [PATCH] feat: detect lan & wan subnet --- .../resources/view/tailscale/setting.js | 54 ++++++++- po/templates/tailscale.pot | 114 +++++++++--------- po/zh_Hans/tailscale.po | 114 +++++++++--------- po/zh_Hant/tailscale.po | 114 +++++++++--------- .../share/rpcd/acl.d/luci-app-tailscale.json | 4 +- 5 files changed, 227 insertions(+), 173 deletions(-) diff --git a/htdocs/luci-static/resources/view/tailscale/setting.js b/htdocs/luci-static/resources/view/tailscale/setting.js index 24f3143..1ebad27 100644 --- a/htdocs/luci-static/resources/view/tailscale/setting.js +++ b/htdocs/luci-static/resources/view/tailscale/setting.js @@ -18,6 +18,51 @@ var callServiceList = rpc.declare({ 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() { var status = { isRunning: false, @@ -81,13 +126,15 @@ return view.extend({ load: function() { return Promise.all([ uci.load('tailscale'), - getStatus() + getStatus(), + getInterfaceSubnets() ]); }, render: function(data) { var m, s, o; var statusData = data[1]; + var interfaceSubnets = data[2]; var onlineExitNodes = statusData.onlineExitNodes; var subnetRoutes = statusData.subnetRoutes; @@ -187,6 +234,11 @@ return view.extend({ o.rmempty = true; o = s.taboption('advance', form.DynamicList, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. 10.0.0.0/24.')); + if (interfaceSubnets.length > 0) { + interfaceSubnets.forEach(function(subnet) { + o.value(subnet, subnet); + }); + } o.default = ''; o.rmempty = true; diff --git a/po/templates/tailscale.pot b/po/templates/tailscale.pot index 9aa856f..37bbcb4 100644 --- a/po/templates/tailscale.pot +++ b/po/templates/tailscale.pot @@ -1,88 +1,88 @@ msgid "" 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 --" 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" 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." 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" 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." 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" 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" 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" 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?" 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" 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" 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" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:164 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178 msgid "Collecting data ..." 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" 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" 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" 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" 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" 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. 10.0.0.0/24." 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" 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" msgstr "" @@ -110,31 +110,31 @@ msgstr "" msgid "Interface Name" 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" 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." 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. --exit-node=10.0.0.1.
%s for enabling settings upon the initiation of Tailscale." 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." 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." 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" 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" msgstr "" @@ -146,12 +146,12 @@ msgstr "" msgid "MTU" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119 msgid "NOT RUNNING" 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" msgstr "" @@ -159,11 +159,11 @@ msgstr "" msgid "Network Interface Information" 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" 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" msgstr "" @@ -171,19 +171,19 @@ msgstr "" msgid "No interface online." 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." 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" 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" 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" msgstr "" @@ -197,60 +197,60 @@ msgctxt "scroll to bottom (the tail) of the log file" msgid "Scroll to tail" 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." 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." 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" 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." 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" 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" 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" 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" msgstr "" #: 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:59 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: 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 msgid "Tailscale" 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" 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" msgstr "" #: 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." 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." msgstr "" @@ -274,18 +274,18 @@ msgstr "" msgid "Unable to load log data:" 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." 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." 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" 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" msgstr "" diff --git a/po/zh_Hans/tailscale.po b/po/zh_Hans/tailscale.po index bb911bd..2d8cef4 100644 --- a/po/zh_Hans/tailscale.po +++ b/po/zh_Hans/tailscale.po @@ -7,88 +7,88 @@ msgstr "" "MIME-Version: 1.0\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 --" 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" 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." 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" 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." 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" 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" 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" 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?" 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" 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" 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" msgstr "基础设置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:164 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178 msgid "Collecting data ..." 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" 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" 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" 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" 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" 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. 10.0.0.0/24." msgstr "广播子网路由至 Tailscale,例如:10.0.0.0/24。" -#: 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" 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" msgstr "防火墙模式" @@ -116,31 +116,31 @@ msgstr "接口信息" msgid "Interface Name" 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" 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." 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. --exit-node=10.0.0.1.
%s for enabling settings upon the initiation of Tailscale." msgstr "额外参数的列表。格式:--flags=value,例如 --exit-node=10.0.0.1
在 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." 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." 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" 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" msgstr "注销登录并解除绑定" @@ -152,12 +152,12 @@ msgstr "日志" msgid "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:74 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119 msgid "NOT RUNNING" 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" msgstr "未登录" @@ -165,11 +165,11 @@ msgstr "未登录" msgid "Network Interface Information" 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" 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" msgstr "没有可用的子网路由" @@ -177,19 +177,19 @@ msgstr "没有可用的子网路由" msgid "No interface online." 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." 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" 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" 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" msgstr "运行中" @@ -203,60 +203,60 @@ msgctxt "scroll to bottom (the tail) of the log file" msgid "Scroll to tail" 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." 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." 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" 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." 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" 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" 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" 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" msgstr "子网路由" #: 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:59 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: 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 msgid "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" 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" msgstr "虚拟局域网访问本地广域网" #: 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." 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." msgstr "工作目录包含配置文件、审计日志和运行时信息。" @@ -280,18 +280,18 @@ msgstr "无法获取接口信息:%s。" msgid "Unable to load log data:" 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." 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." 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" 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" msgstr "工作目录" diff --git a/po/zh_Hant/tailscale.po b/po/zh_Hant/tailscale.po index d513de7..d412baa 100644 --- a/po/zh_Hant/tailscale.po +++ b/po/zh_Hant/tailscale.po @@ -7,88 +7,88 @@ msgstr "" "MIME-Version: 1.0\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 --" 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" 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." 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" 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." 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" 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" 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" 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?" 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" 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" 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" msgstr "基礎設置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:164 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178 msgid "Collecting data ..." 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" 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" 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" 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" 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" 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. 10.0.0.0/24." msgstr "廣播子網路由至 Tailscale,例如:10.0.0.0/24。" -#: 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" 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" msgstr "防火牆模式" @@ -116,31 +116,31 @@ msgstr "接口信息" msgid "Interface Name" 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" 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." 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. --exit-node=10.0.0.1.
%s for enabling settings upon the initiation of Tailscale." msgstr "額外參數的列表。格式:--flags=value,例如 --exit-node=10.0.0.1
在 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." 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." 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" 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" msgstr "註銷登錄並解除綁定" @@ -152,12 +152,12 @@ msgstr "日誌" msgid "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:74 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119 msgid "NOT RUNNING" 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" msgstr "未登錄" @@ -165,11 +165,11 @@ msgstr "未登錄" msgid "Network Interface Information" 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" 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" msgstr "沒有可用的子網路由" @@ -177,19 +177,19 @@ msgstr "沒有可用的子網路由" msgid "No interface online." 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." 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" 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" 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" msgstr "運行中" @@ -203,60 +203,60 @@ msgctxt "scroll to bottom (the tail) of the log file" msgid "Scroll to tail" 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." 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." 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" 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." 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" 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" 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" 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" msgstr "子網路由" #: 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:59 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:102 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: 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 msgid "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" 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" msgstr "虛擬局域網訪問本地廣域網" #: 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." 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." msgstr "工作目錄包含配置文件、審計日誌和運行時信息。" @@ -280,18 +280,18 @@ msgstr "無法獲取接口信息:%s。" msgid "Unable to load log data:" 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." 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." 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" 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" msgstr "工作目錄" diff --git a/root/usr/share/rpcd/acl.d/luci-app-tailscale.json b/root/usr/share/rpcd/acl.d/luci-app-tailscale.json index 5e2981b..6fc1860 100644 --- a/root/usr/share/rpcd/acl.d/luci-app-tailscale.json +++ b/root/usr/share/rpcd/acl.d/luci-app-tailscale.json @@ -8,7 +8,9 @@ "/usr/sbin/tailscale": [ "exec" ] }, "ubus": { - "service": [ "list" ] + "service": [ "list" ], + "network.interface.lan": [ "status" ], + "network.interface.wan": [ "status" ] }, "uci": [ "tailscale" ] },