diff --git a/Makefile b/Makefile index 952adb6..6c0bd56 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ LUCI_TITLE:=LuCI for Tailscale LUCI_DEPENDS:=+tailscale LUCI_PKGARCH:=all -PKG_VERSION:=1.2.0 +PKG_VERSION:=1.2.1 include $(TOPDIR)/feeds/luci/luci.mk diff --git a/htdocs/luci-static/resources/view/tailscale/setting.js b/htdocs/luci-static/resources/view/tailscale/setting.js index d4a55ad..24f3143 100644 --- a/htdocs/luci-static/resources/view/tailscale/setting.js +++ b/htdocs/luci-static/resources/view/tailscale/setting.js @@ -24,7 +24,8 @@ function getStatus() { backendState: undefined, authURL: undefined, displayName: undefined, - routes: [] + onlineExitNodes: [], + subnetRoutes: [] }; return Promise.resolve(callServiceList('tailscale')).then(res => { try { @@ -40,7 +41,9 @@ function getStatus() { status.backendState = tailscaleStatus.BackendState; status.authURL = tailscaleStatus.AuthURL; status.displayName = (status.backendState === "Running") ? tailscaleStatus.User[tailscaleStatus.Self.UserID].DisplayName : undefined; - status.routes = Object.values(tailscaleStatus.Peer) + status.onlineExitNodes = Object.values(tailscaleStatus.Peer) + .flatMap(peer => (peer.ExitNodeOption && peer.Online) ? [peer.HostName] : []); + status.subnetRoutes = Object.values(tailscaleStatus.Peer) .flatMap(peer => peer.PrimaryRoutes || []); return status; }); @@ -85,7 +88,8 @@ return view.extend({ render: function(data) { var m, s, o; var statusData = data[1]; - var routes = statusData.routes; + var onlineExitNodes = statusData.onlineExitNodes; + var subnetRoutes = statusData.subnetRoutes; m = new form.Map('tailscale', _('Tailscale'), _('Tailscale is a cross-platform and easy to use virtual LAN.')); @@ -168,6 +172,20 @@ return view.extend({ o.default = o.disabled; o.rmempty = false; + o = s.taboption('advance', form.ListValue, 'exitNode', _('Online Exit Nodes'), _('Select an online machine name to use as an exit node.')); + if (onlineExitNodes.length > 0) { + o.value('', _('-- Please choose --')); + onlineExitNodes.forEach(function(node) { + o.value(node, node); + }); + } else { + o.value('', _('No Available Exit Nodes')); + o.readonly = true; + } + o.default = ''; + o.depends('advertiseExitNode', '0'); + 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.')); o.default = ''; o.rmempty = true; @@ -178,8 +196,8 @@ return view.extend({ o.rmempty = false; o = s.taboption('advance', form.DynamicList, 'subnetRoutes', _('Subnet Routes'), _('Select subnet routes advertised by other nodes in Tailscale network.')); - if (routes.length > 0) { - routes.forEach(function(route) { + if (subnetRoutes.length > 0) { + subnetRoutes.forEach(function(route) { o.value(route, route); }); } else { diff --git a/po/templates/tailscale.pot b/po/templates/tailscale.pot index c3ad304..9aa856f 100644 --- a/po/templates/tailscale.pot +++ b/po/templates/tailscale.pot @@ -1,84 +1,88 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 -msgid "Accept DNS" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 -msgid "Accept DNS configuration from the Tailscale admin console." -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 -msgid "Accept Routes" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 -msgid "Accept subnet routes that other nodes advertise." -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 -msgid "Access Control" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 -msgid "Additional Flags" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 -msgid "Advanced Settings" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 -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:215 -msgid "Auth Key" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 -msgid "Available flags" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:118 -msgid "Basic Settings" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127 -msgid "Collecting data ..." -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:208 -msgid "Custom Server Settings" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 -msgid "Device Name" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 -msgid "Enable" +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 +msgid "-- Please choose --" msgstr "" #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +msgid "Accept DNS" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +msgid "Accept DNS configuration from the Tailscale admin console." +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +msgid "Accept Routes" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +msgid "Accept subnet routes that other nodes advertise." +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 +msgid "Access Control" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 +msgid "Additional Flags" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157 +msgid "Advanced Settings" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 +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 +msgid "Auth Key" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 +msgid "Available flags" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 +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 +msgid "Collecting data ..." +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226 +msgid "Custom Server Settings" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 +msgid "Device Name" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 +msgid "Enable" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 msgid "Exit Node" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 msgid "Expose Subnets" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 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:201 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219 msgid "Extra Settings" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143 msgid "Firewall Mode" msgstr "" @@ -106,31 +110,31 @@ msgstr "" msgid "Interface Name" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214 msgid "LAN access Tailscale" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Leave blank to use the device's hostname." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 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:145 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "Logging program activities." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 msgid "Logging program errors and exceptions." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128 msgid "Login Status" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72 msgid "Logout and Unbind" msgstr "" @@ -142,12 +146,12 @@ msgstr "" msgid "MTU" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 msgid "NOT RUNNING" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 msgid "Needs Login" msgstr "" @@ -155,7 +159,11 @@ msgstr "" msgid "Network Interface Information" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182 +msgid "No Available Exit Nodes" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204 msgid "No Available Subnet Routes" msgstr "" @@ -163,15 +171,19 @@ msgstr "" msgid "No interface online." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 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:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +msgid "Online Exit Nodes" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 msgid "Port" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 msgid "RUNNING" msgstr "" @@ -185,56 +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:180 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +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 msgid "Select subnet routes advertised by other nodes in Tailscale network." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229 msgid "Server Address" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 msgid "Set the Tailscale port number." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 msgid "Site To Site" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 msgid "StdErr Log" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "StdOut Log" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 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:54 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 +#: 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/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:194 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212 msgid "Tailscale access LAN" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213 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:90 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "The working directory contains config files, audit logs, and runtime info." msgstr "" @@ -258,18 +274,18 @@ msgstr "" msgid "Unable to load log data:" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227 msgid "Use %s to deploy a private server." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 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:197 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 msgid "WAN access Tailscale" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "Workdir" msgstr "" diff --git a/po/zh_Hans/tailscale.po b/po/zh_Hans/tailscale.po index ed39b10..bb911bd 100644 --- a/po/zh_Hans/tailscale.po +++ b/po/zh_Hans/tailscale.po @@ -7,84 +7,88 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 +msgid "-- Please choose --" +msgstr "-- 请选择 --" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Accept DNS" msgstr "允许DNS" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Accept DNS configuration from the Tailscale admin console." msgstr "使用 Tailscale 管理控制台的 DNS 配置。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Accept Routes" msgstr "启用路由" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Accept subnet routes that other nodes advertise." msgstr "接受其他节点广播的子网路由。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 msgid "Access Control" msgstr "访问控制" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 msgid "Additional Flags" msgstr "参数列表" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157 msgid "Advanced Settings" msgstr "高级设置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 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:215 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233 msgid "Auth Key" msgstr "认证密钥" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 msgid "Available flags" msgstr "可用参数" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:118 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 msgid "Basic Settings" msgstr "基础设置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 msgid "Collecting data ..." msgstr "正在收集数据..." -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:208 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226 msgid "Custom Server Settings" msgstr "自定义服务器" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Device Name" msgstr "设备名称" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 msgid "Enable" msgstr "启用" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 msgid "Exit Node" msgstr "出口节点" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 msgid "Expose Subnets" msgstr "公开网段" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 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:201 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219 msgid "Extra Settings" msgstr "附加设置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143 msgid "Firewall Mode" msgstr "防火墙模式" @@ -112,31 +116,31 @@ msgstr "接口信息" msgid "Interface Name" msgstr "接口名称" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214 msgid "LAN access Tailscale" msgstr "本地局域网访问虚拟局域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Leave blank to use the device's hostname." msgstr "留空以使用设备的主机名。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 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:145 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "Logging program activities." msgstr "记录程序运行信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 msgid "Logging program errors and exceptions." msgstr "记录程序错误和警告信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128 msgid "Login Status" msgstr "已绑定用户" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72 msgid "Logout and Unbind" msgstr "注销登录并解除绑定" @@ -148,12 +152,12 @@ msgstr "日志" msgid "MTU" msgstr "MTU" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 msgid "NOT RUNNING" msgstr "未运行" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 msgid "Needs Login" msgstr "未登录" @@ -161,7 +165,11 @@ msgstr "未登录" msgid "Network Interface Information" msgstr "网络接口信息" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182 +msgid "No Available Exit Nodes" +msgstr "没有可用的出口节点" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204 msgid "No Available Subnet Routes" msgstr "没有可用的子网路由" @@ -169,15 +177,19 @@ msgstr "没有可用的子网路由" msgid "No interface online." msgstr "无在线接口。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 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:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +msgid "Online Exit Nodes" +msgstr "可用出口节点" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 msgid "Port" msgstr "端口" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 msgid "RUNNING" msgstr "运行中" @@ -191,56 +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:180 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +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 msgid "Select subnet routes advertised by other nodes in Tailscale network." msgstr "选择非本设备广播的子网路由。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229 msgid "Server Address" msgstr "服务器地址" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 msgid "Set the Tailscale port number." 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:193 msgid "Site To Site" msgstr "子网互通" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 msgid "StdErr Log" msgstr "错误日志" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "StdOut Log" msgstr "运行日志" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 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:54 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 +#: 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/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:194 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212 msgid "Tailscale access LAN" msgstr "虚拟局域网访问本地局域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213 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:90 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 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:135 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "The working directory contains config files, audit logs, and runtime info." msgstr "工作目录包含配置文件、审计日志和运行时信息。" @@ -264,18 +280,18 @@ msgstr "无法获取接口信息:%s。" msgid "Unable to load log data:" msgstr "无法读取日志数据:" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227 msgid "Use %s to deploy a private server." msgstr "使用 %s 部署私有服务器" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 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:197 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 msgid "WAN access Tailscale" msgstr "本地广域网访问虚拟局域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "Workdir" msgstr "工作目录" diff --git a/po/zh_Hant/tailscale.po b/po/zh_Hant/tailscale.po index f85b82d..d513de7 100644 --- a/po/zh_Hant/tailscale.po +++ b/po/zh_Hant/tailscale.po @@ -7,84 +7,88 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 +msgid "-- Please choose --" +msgstr "-- 請選擇 --" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Accept DNS" msgstr "允許DNS" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Accept DNS configuration from the Tailscale admin console." msgstr "使用 Tailscale 管理控制台的 DNS 設定。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Accept Routes" msgstr "啟用路由" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Accept subnet routes that other nodes advertise." msgstr "接受其他節點廣播的子網路由。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 msgid "Access Control" msgstr "訪問控制" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 msgid "Additional Flags" msgstr "參數列表" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157 msgid "Advanced Settings" msgstr "高級設置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 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:215 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233 msgid "Auth Key" msgstr "認證密鑰" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 msgid "Available flags" msgstr "可用參數" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:118 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 msgid "Basic Settings" msgstr "基礎設置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131 msgid "Collecting data ..." msgstr "正在收集數據..." -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:208 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226 msgid "Custom Server Settings" msgstr "自定義伺服器" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Device Name" msgstr "設備名稱" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 msgid "Enable" msgstr "啟用" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 msgid "Exit Node" msgstr "出口節點" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 msgid "Expose Subnets" msgstr "公開網段" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 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:201 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219 msgid "Extra Settings" msgstr "附加設置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143 msgid "Firewall Mode" msgstr "防火牆模式" @@ -112,31 +116,31 @@ msgstr "接口信息" msgid "Interface Name" msgstr "接口名稱" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214 msgid "LAN access Tailscale" msgstr "本地局域網訪問虛擬局域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Leave blank to use the device's hostname." msgstr "留空以使用設備的主機名。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221 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:145 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "Logging program activities." msgstr "記錄程式運行信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 msgid "Logging program errors and exceptions." msgstr "記錄程式錯誤和警告信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128 msgid "Login Status" msgstr "已綁定用戶" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72 msgid "Logout and Unbind" msgstr "註銷登錄並解除綁定" @@ -148,12 +152,12 @@ msgstr "日誌" msgid "MTU" msgstr "MTU" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74 msgid "NOT RUNNING" msgstr "未運行" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 msgid "Needs Login" msgstr "未登錄" @@ -161,7 +165,11 @@ msgstr "未登錄" msgid "Network Interface Information" msgstr "網絡接口信息" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182 +msgid "No Available Exit Nodes" +msgstr "没有可用的出口節點" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204 msgid "No Available Subnet Routes" msgstr "沒有可用的子網路由" @@ -169,15 +177,19 @@ msgstr "沒有可用的子網路由" msgid "No interface online." msgstr "無在線接口。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 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:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +msgid "Online Exit Nodes" +msgstr "可用出口節點" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 msgid "Port" msgstr "端口" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57 msgid "RUNNING" msgstr "運行中" @@ -191,56 +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:180 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +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 msgid "Select subnet routes advertised by other nodes in Tailscale network." msgstr "選擇非本設備廣播的子網路由。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229 msgid "Server Address" msgstr "伺服器地址" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 msgid "Set the Tailscale port number." 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:193 msgid "Site To Site" msgstr "子網互通" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 msgid "StdErr Log" msgstr "錯誤日誌" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "StdOut Log" msgstr "運行日誌" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198 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:54 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 +#: 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/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:194 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212 msgid "Tailscale access LAN" msgstr "虛擬局域網訪問本地局域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213 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:90 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94 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:135 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "The working directory contains config files, audit logs, and runtime info." msgstr "工作目錄包含配置文件、審計日誌和運行時信息。" @@ -264,18 +280,18 @@ msgstr "無法獲取接口信息:%s。" msgid "Unable to load log data:" msgstr "無法載入日誌檔:" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227 msgid "Use %s to deploy a private server." msgstr "使用 %s 部署私有伺服器" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 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:197 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 msgid "WAN access Tailscale" msgstr "本地廣域網訪問虛擬局域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "Workdir" msgstr "工作目錄" diff --git a/root/etc/init.d/tailscale b/root/etc/init.d/tailscale index 50505aa..7a027d9 100755 --- a/root/etc/init.d/tailscale +++ b/root/etc/init.d/tailscale @@ -20,7 +20,7 @@ section_enabled() { custom_instance() { local cfg="$1" - local acceptRoutes hostname acceptDNS advertiseExitNode advertiseRoutes s2s flags loginServer authkey std_out std_err + local acceptRoutes hostname acceptDNS advertiseExitNode exitNode advertiseRoutes s2s subnetRoutes flags loginServer authkey std_out std_err local ARGS=" up --reset" if ! section_enabled "$cfg"; then @@ -32,6 +32,7 @@ custom_instance() { config_get hostname $cfg 'hostname' config_get_bool acceptDNS $cfg 'acceptDNS' config_get_bool advertiseExitNode $cfg 'advertiseExitNode' + config_get exitNode $cfg 'exitNode' config_get advertiseRoutes $cfg 'advertiseRoutes' config_get_bool s2s $cfg 's2s' config_get flags $cfg 'flags' @@ -44,6 +45,7 @@ custom_instance() { [ -n "$hostname" ] && ARGS="$ARGS --hostname=$hostname" [ "$acceptDNS" = "0" ] && ARGS="$ARGS --accept-dns=false" [ "$advertiseExitNode" = "1" ] && ARGS="$ARGS --advertise-exit-node" + [ -n "$exitNode" ] && ARGS="$ARGS --exit-node=$exitNode --exit-node-allow-lan-access=true" [ -n "$advertiseRoutes" ] && ARGS="$ARGS --advertise-routes=$(echo $advertiseRoutes | tr ' ' ',')" [ "$s2s" = "1" ] && ARGS="$ARGS --snat-subnet-routes=false" [ -n "$flags" ] && ARGS="$ARGS $flags" @@ -70,7 +72,7 @@ custom_instance() { MagicDNSSuffix=$(tailscale status --json | awk -F'"' '/"MagicDNSSuffix"/ {last=$(NF-1)} END {print last}') sed -i '/100.100.100.100/d' /etc/dnsmasq.conf echo "server=/$MagicDNSSuffix/100.100.100.100" >> /etc/dnsmasq.conf - /etc/init.d/dnsmasq restart + /etc/init.d/dnsmasq reload fi ts0=$(ifconfig | grep 'tailscale' | awk '{print $1}') @@ -94,6 +96,14 @@ custom_instance() { fi fi + lan2wan=$(uci show firewall | grep "firewall.@forwarding\[[0-9]\+\]\.src='lan'" -B 1 -A 1 | grep "firewall.@forwarding\[[0-9]\+\]\.dest='wan'" | grep -o '[0-9]\+') + if [ -n "$exitNode" ]; then + uci set firewall.@defaults[0].forward='REJECT' + [ -n $lan2wan ] && uci set firewall.@forwarding[$lan2wan].enabled='0' + else + uci -q delete firewall.@forwarding[$lan2wan].enabled + fi + config_get subnetRoutes $cfg 'subnetRoutes' if [ -n "$subnetRoutes" ]; then i=1 @@ -209,7 +219,7 @@ stop_instance() { # Remove dnsmasq settings sed -i '/100.100.100.100/d' /etc/dnsmasq.conf - /etc/init.d/dnsmasq restart + /etc/init.d/dnsmasq reload # Remove network settings uci -q delete network.tailscale @@ -219,6 +229,8 @@ stop_instance() { done # Remove firewall settings + lan2wan=$(uci show firewall | grep "firewall.@forwarding\[[0-9]\+\]\.src='lan'" -B 1 -A 1 | grep "firewall.@forwarding\[[0-9]\+\]\.dest='wan'" | grep -o '[0-9]\+') + uci -q delete firewall.@forwarding[$lan2wan].enabled uci -q delete firewall.tszone uci -q delete firewall.tsfwlan uci -q delete firewall.tsfwwan