diff --git a/Makefile b/Makefile index 3eab395..952adb6 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ LUCI_TITLE:=LuCI for Tailscale LUCI_DEPENDS:=+tailscale LUCI_PKGARCH:=all -PKG_VERSION:=1.1.3 +PKG_VERSION:=1.2.0 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 ffac984..d4a55ad 100644 --- a/htdocs/luci-static/resources/view/tailscale/setting.js +++ b/htdocs/luci-static/resources/view/tailscale/setting.js @@ -23,7 +23,8 @@ function getStatus() { isRunning: false, backendState: undefined, authURL: undefined, - displayName: undefined + displayName: undefined, + routes: [] }; return Promise.resolve(callServiceList('tailscale')).then(res => { try { @@ -39,6 +40,8 @@ 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) + .flatMap(peer => peer.PrimaryRoutes || []); return status; }); }).catch(() => status); @@ -74,13 +77,15 @@ function renderLogin(loginStatus, authURL, displayName) { return view.extend({ load: function() { return Promise.all([ - uci.load('tailscale') + uci.load('tailscale'), + getStatus() ]); }, render: function(data) { var m, s, o; - var isRunning = data[1]; + var statusData = data[1]; + var routes = statusData.routes; m = new form.Map('tailscale', _('Tailscale'), _('Tailscale is a cross-platform and easy to use virtual LAN.')); @@ -172,6 +177,19 @@ return view.extend({ o.depends('acceptRoutes', '1'); 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) { + o.value(route, route); + }); + } else { + o.value('', _('No Available Subnet Routes')); + o.readonly = true; + } + o.default = ''; + o.depends('s2s', '1'); + o.rmempty = true; + o = s.taboption('advance', form.MultiValue, 'access', _('Access Control')); o.value('tsfwlan', _('Tailscale access LAN')); o.value('tsfwwan', _('Tailscale access WAN')); diff --git a/po/templates/tailscale.pot b/po/templates/tailscale.pot index 0b5a8f9..c3ad304 100644 --- a/po/templates/tailscale.pot +++ b/po/templates/tailscale.pot @@ -1,84 +1,84 @@ msgid "" msgstr "Content-Type: text/plain; charset=UTF-8" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 +#: 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:158 +#: 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:150 -msgid "Accept subnet routes that other nodes advertise." -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 -msgid "Access Control" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185 -msgid "Additional Flags" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148 -msgid "Advanced Settings" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:99 -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:195 -msgid "Auth Key" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 +#: 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:185 +#: 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:113 +#: 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:108 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 +#: 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:188 +#: 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:154 +#: 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:115 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 msgid "Enable" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Exit Node" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 msgid "Expose Subnets" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 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:183 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:201 msgid "Extra Settings" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "Firewall Mode" msgstr "" @@ -90,11 +90,11 @@ msgstr "" msgid "Grant access to Tailscale configuration" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:86 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:93 msgid "IPv4 Address" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:90 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:97 msgid "IPv6 Address" msgstr "" @@ -102,35 +102,35 @@ msgstr "" msgid "Interface Info" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:82 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:89 msgid "Interface Name" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 msgid "LAN access Tailscale" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Leave blank to use the device's hostname." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 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:140 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 msgid "Logging program activities." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "Logging program errors and exceptions." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 msgid "Login Status" 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 "Logout and Unbind" msgstr "" @@ -138,120 +138,138 @@ msgstr "" msgid "Logs" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:94 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:101 msgid "MTU" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 msgid "NOT RUNNING" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:63 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66 msgid "Needs Login" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:80 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:87 msgid "Network Interface Information" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:76 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 +msgid "No Available Subnet Routes" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:83 msgid "No interface online." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:52 -msgid "No logs available" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 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:125 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 msgid "Port" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 msgid "RUNNING" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:191 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 +msgctxt "scroll to top (the head) of the log file" +msgid "Scroll to head" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js: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 +msgid "Select subnet routes advertised by other nodes in Tailscale network." +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 msgid "Server Address" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 msgid "Set the Tailscale port number." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 msgid "Site To Site" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "StdErr Log" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 msgid "StdOut Log" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 +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/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:176 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194 msgid "Tailscale access LAN" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 msgid "Tailscale access WAN" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 msgid "The working directory contains config files, audit logs, and runtime info." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 -msgid "Toggle Log Order" -msgstr "" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:98 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:105 msgid "Total Download" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:102 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:109 msgid "Total Upload" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:31 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:33 msgid "Unable to get interface %s info: %s." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:16 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:18 msgid "Unable to get interface info: %s." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:36 +msgid "Unable to load log data:" +msgstr "" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 msgid "Use %s to deploy a private server." msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:170 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 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:179 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:197 msgid "WAN access Tailscale" msgstr "" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 msgid "Workdir" msgstr "" diff --git a/po/zh_Hans/tailscale.po b/po/zh_Hans/tailscale.po index e67983b..ed39b10 100644 --- a/po/zh_Hans/tailscale.po +++ b/po/zh_Hans/tailscale.po @@ -7,84 +7,84 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Accept DNS" msgstr "允许DNS" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Accept DNS configuration from the Tailscale admin console." msgstr "使用 Tailscale 管理控制台的 DNS 配置。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 -msgid "Accept subnet routes that other nodes advertise." -msgstr "接受其他节点广播的子网路由。" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 -msgid "Access Control" -msgstr "访问控制" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185 -msgid "Additional Flags" -msgstr "参数列表" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148 -msgid "Advanced Settings" -msgstr "高级设置" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:99 -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:195 -msgid "Auth Key" -msgstr "认证密钥" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 +#: 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:185 +#: 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:113 +#: 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:108 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 +#: 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:188 +#: 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:154 +#: 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:115 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 msgid "Enable" msgstr "启用" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Exit Node" msgstr "出口节点" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 msgid "Expose Subnets" msgstr "公开网段" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 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:183 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:201 msgid "Extra Settings" msgstr "附加设置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "Firewall Mode" msgstr "防火墙模式" @@ -96,11 +96,11 @@ msgstr "全局设置" msgid "Grant access to Tailscale configuration" msgstr "授予访问 Tailscale 配置的权限" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:86 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:93 msgid "IPv4 Address" msgstr "IPv4地址" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:90 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:97 msgid "IPv6 Address" msgstr "IPv6地址" @@ -108,35 +108,35 @@ msgstr "IPv6地址" msgid "Interface Info" msgstr "接口信息" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:82 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:89 msgid "Interface Name" msgstr "接口名称" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 msgid "LAN access Tailscale" msgstr "本地局域网访问虚拟局域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Leave blank to use the device's hostname." msgstr "留空以使用设备的主机名。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 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:140 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 msgid "Logging program activities." msgstr "记录程序运行信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "Logging program errors and exceptions." msgstr "记录程序错误和警告信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 msgid "Login Status" 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 "Logout and Unbind" msgstr "注销登录并解除绑定" @@ -144,120 +144,138 @@ msgstr "注销登录并解除绑定" msgid "Logs" msgstr "日志" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:94 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:101 msgid "MTU" msgstr "MTU" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 msgid "NOT RUNNING" msgstr "未运行" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:63 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66 msgid "Needs Login" msgstr "未登录" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:80 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:87 msgid "Network Interface Information" msgstr "网络接口信息" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:76 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 +msgid "No Available Subnet Routes" +msgstr "没有可用的子网路由" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:83 msgid "No interface online." msgstr "无在线接口。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:52 -msgid "No logs available" -msgstr "日志不存在" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 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:125 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 msgid "Port" msgstr "端口" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 msgid "RUNNING" msgstr "运行中" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:191 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 +msgctxt "scroll to top (the head) of the log file" +msgid "Scroll to head" +msgstr "滚动到顶部" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js: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 +msgid "Select subnet routes advertised by other nodes in Tailscale network." +msgstr "选择非本设备广播的子网路由。" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 msgid "Server Address" msgstr "服务器地址" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 msgid "Set the Tailscale port number." msgstr "设置 Tailscale 端口号。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 msgid "Site To Site" msgstr "子网互通" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "StdErr Log" msgstr "错误日志" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 msgid "StdOut Log" msgstr "运行日志" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 +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/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:176 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194 msgid "Tailscale access LAN" msgstr "虚拟局域网访问本地局域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 msgid "Tailscale access WAN" msgstr "虚拟局域网访问本地广域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 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:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 msgid "The working directory contains config files, audit logs, and runtime info." msgstr "工作目录包含配置文件、审计日志和运行时信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 -msgid "Toggle Log Order" -msgstr "切换日志排序" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:98 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:105 msgid "Total Download" msgstr "总下载量" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:102 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:109 msgid "Total Upload" msgstr "总上传量" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:31 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:33 msgid "Unable to get interface %s info: %s." msgstr "无法获取接口 %s 的信息:%s。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:16 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:18 msgid "Unable to get interface info: %s." msgstr "无法获取接口信息:%s。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:36 +msgid "Unable to load log data:" +msgstr "无法读取日志数据:" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 msgid "Use %s to deploy a private server." msgstr "使用 %s 部署私有服务器" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:170 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 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:179 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:197 msgid "WAN access Tailscale" msgstr "本地广域网访问虚拟局域网" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 msgid "Workdir" msgstr "工作目录" diff --git a/po/zh_Hant/tailscale.po b/po/zh_Hant/tailscale.po index dfb3e5e..f85b82d 100644 --- a/po/zh_Hant/tailscale.po +++ b/po/zh_Hant/tailscale.po @@ -7,84 +7,84 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Accept DNS" msgstr "允許DNS" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 msgid "Accept DNS configuration from the Tailscale admin console." msgstr "使用 Tailscale 管理控制台的 DNS 設定。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 -msgid "Accept subnet routes that other nodes advertise." -msgstr "接受其他節點廣播的子網路由。" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 -msgid "Access Control" -msgstr "訪問控制" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185 -msgid "Additional Flags" -msgstr "參數列表" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148 -msgid "Advanced Settings" -msgstr "高級設置" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:99 -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:195 -msgid "Auth Key" -msgstr "認證密鑰" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 +#: 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:185 +#: 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:113 +#: 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:108 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 +#: 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:188 +#: 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:154 +#: 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:115 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 msgid "Enable" msgstr "啟用" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 msgid "Exit Node" msgstr "出口節點" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 msgid "Expose Subnets" msgstr "公開網段" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 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:183 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:201 msgid "Extra Settings" msgstr "附加設置" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 msgid "Firewall Mode" msgstr "防火牆模式" @@ -96,11 +96,11 @@ msgstr "全局設置" msgid "Grant access to Tailscale configuration" msgstr "授予訪問 Tailscale 配置的權限" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:86 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:93 msgid "IPv4 Address" msgstr "IPv4地址" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:90 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:97 msgid "IPv6 Address" msgstr "IPv6地址" @@ -108,35 +108,35 @@ msgstr "IPv6地址" msgid "Interface Info" msgstr "接口信息" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:82 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:89 msgid "Interface Name" msgstr "接口名稱" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 msgid "LAN access Tailscale" msgstr "本地局域網訪問虛擬局域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 msgid "Leave blank to use the device's hostname." msgstr "留空以使用設備的主機名。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:185 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 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:140 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 msgid "Logging program activities." msgstr "記錄程式運行信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "Logging program errors and exceptions." msgstr "記錄程式錯誤和警告信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124 msgid "Login Status" 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 "Logout and Unbind" msgstr "註銷登錄並解除綁定" @@ -144,120 +144,138 @@ msgstr "註銷登錄並解除綁定" msgid "Logs" msgstr "日誌" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:94 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:101 msgid "MTU" msgstr "MTU" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 msgid "NOT RUNNING" msgstr "未運行" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:63 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66 msgid "Needs Login" msgstr "未登錄" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:80 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:87 msgid "Network Interface Information" msgstr "網絡接口信息" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:76 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 +msgid "No Available Subnet Routes" +msgstr "沒有可用的子網路由" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:83 msgid "No interface online." msgstr "無在線接口。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:52 -msgid "No logs available" -msgstr "日誌不存在" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 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:125 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 msgid "Port" msgstr "端口" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 msgid "RUNNING" msgstr "運行中" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:191 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 +msgctxt "scroll to top (the head) of the log file" +msgid "Scroll to head" +msgstr "捲動到頂部" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js: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 +msgid "Select subnet routes advertised by other nodes in Tailscale network." +msgstr "選擇非本設備廣播的子網路由。" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 msgid "Server Address" msgstr "伺服器地址" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 msgid "Set the Tailscale port number." msgstr "設置 Tailscale 端口號。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 msgid "Site To Site" msgstr "子網互通" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 msgid "StdErr Log" msgstr "錯誤日誌" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 msgid "StdOut Log" msgstr "運行日誌" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 +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/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:176 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194 msgid "Tailscale access LAN" msgstr "虛擬局域網訪問本地局域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 msgid "Tailscale access WAN" msgstr "虛擬局域網訪問本地廣域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73 -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 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:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 msgid "The working directory contains config files, audit logs, and runtime info." msgstr "工作目錄包含配置文件、審計日誌和運行時信息。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 -msgid "Toggle Log Order" -msgstr "切換日誌排序" - -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:98 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:105 msgid "Total Download" msgstr "總下載量" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:102 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:109 msgid "Total Upload" msgstr "總上傳量" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:31 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:33 msgid "Unable to get interface %s info: %s." msgstr "無法獲取接口 %s 的信息:%s。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:16 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:18 msgid "Unable to get interface info: %s." msgstr "無法獲取接口信息:%s。" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:36 +msgid "Unable to load log data:" +msgstr "無法載入日誌檔:" + +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 msgid "Use %s to deploy a private server." msgstr "使用 %s 部署私有伺服器" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:170 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175 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:179 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:197 msgid "WAN access Tailscale" msgstr "本地廣域網訪問虛擬局域網" -#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130 +#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 msgid "Workdir" msgstr "工作目錄" diff --git a/root/etc/init.d/tailscale b/root/etc/init.d/tailscale index 500cc1f..34ffe59 100755 --- a/root/etc/init.d/tailscale +++ b/root/etc/init.d/tailscale @@ -86,6 +86,23 @@ custom_instance() { fi fi + config_get subnetRoutes $cfg 'subnetRoutes' + if [ -n "$subnetRoutes" ]; then + i=1 + lan_ip=$(uci get network.lan.ipaddr) + for route in $subnetRoutes; do + uci set network.ts_subnet$i='route' + uci set network.ts_subnet$i.interface='lan' + uci set network.ts_subnet$i.target=$route + uci set network.ts_subnet$i.gateway=$lan_ip + let i++ + done + else + for route in $(uci show network | grep 'network\.ts_subnet[0-9]*\+=route' | grep -o 'network\.ts_subnet[0-9]*'); do + uci -q delete $route + done + fi + config_get access $cfg 'access' if [ -n "$access" ]; then if [ -z "$(uci -q get firewall.tszone)" ]; then @@ -184,6 +201,9 @@ stop_instance() { # Remove network settings uci -q delete network.tailscale uci -q delete network.ts_lan + for route in $(uci show network | grep 'network\.ts_subnet[0-9]*\+=route' | grep -o 'network\.ts_subnet[0-9]*'); do + uci -q delete $route + done # Remove firewall settings uci -q delete firewall.tszone