feat: subnet routes & bump version

This commit is contained in:
asvow
2024-09-28 02:21:57 +08:00
parent d00b4bb5fb
commit ff6ab2b00e
6 changed files with 360 additions and 268 deletions

View File

@@ -8,7 +8,7 @@ LUCI_TITLE:=LuCI for Tailscale
LUCI_DEPENDS:=+tailscale LUCI_DEPENDS:=+tailscale
LUCI_PKGARCH:=all LUCI_PKGARCH:=all
PKG_VERSION:=1.1.3 PKG_VERSION:=1.2.0
include $(TOPDIR)/feeds/luci/luci.mk include $(TOPDIR)/feeds/luci/luci.mk

View File

@@ -23,7 +23,8 @@ function getStatus() {
isRunning: false, isRunning: false,
backendState: undefined, backendState: undefined,
authURL: undefined, authURL: undefined,
displayName: undefined displayName: undefined,
routes: []
}; };
return Promise.resolve(callServiceList('tailscale')).then(res => { return Promise.resolve(callServiceList('tailscale')).then(res => {
try { try {
@@ -39,6 +40,8 @@ function getStatus() {
status.backendState = tailscaleStatus.BackendState; status.backendState = tailscaleStatus.BackendState;
status.authURL = tailscaleStatus.AuthURL; status.authURL = tailscaleStatus.AuthURL;
status.displayName = (status.backendState === "Running") ? tailscaleStatus.User[tailscaleStatus.Self.UserID].DisplayName : undefined; status.displayName = (status.backendState === "Running") ? tailscaleStatus.User[tailscaleStatus.Self.UserID].DisplayName : undefined;
status.routes = Object.values(tailscaleStatus.Peer)
.flatMap(peer => peer.PrimaryRoutes || []);
return status; return status;
}); });
}).catch(() => status); }).catch(() => status);
@@ -74,13 +77,15 @@ function renderLogin(loginStatus, authURL, displayName) {
return view.extend({ return view.extend({
load: function() { load: function() {
return Promise.all([ return Promise.all([
uci.load('tailscale') uci.load('tailscale'),
getStatus()
]); ]);
}, },
render: function(data) { render: function(data) {
var m, s, o; 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.')); 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.depends('acceptRoutes', '1');
o.rmempty = false; 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 = s.taboption('advance', form.MultiValue, 'access', _('Access Control'));
o.value('tsfwlan', _('Tailscale access LAN')); o.value('tsfwlan', _('Tailscale access LAN'));
o.value('tsfwwan', _('Tailscale access WAN')); o.value('tsfwwan', _('Tailscale access WAN'));

View File

@@ -1,84 +1,84 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Accept DNS" msgid "Accept DNS"
msgstr "" 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." msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "" 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 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
msgid "Accept Routes" msgid "Accept Routes"
msgstr "" 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" msgid "Available flags"
msgstr "" 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" msgid "Basic Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "" 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" msgid "Custom Server Settings"
msgstr "" 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" msgid "Device Name"
msgstr "" 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" msgid "Enable"
msgstr "" 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" msgid "Exit Node"
msgstr "" 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" msgid "Expose Subnets"
msgstr "" 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. <code>10.0.0.0/24</code>." msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:183 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:201
msgid "Extra Settings" msgid "Extra Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "" msgstr ""
@@ -90,11 +90,11 @@ msgstr ""
msgid "Grant access to Tailscale configuration" msgid "Grant access to Tailscale configuration"
msgstr "" 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" msgid "IPv4 Address"
msgstr "" 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" msgid "IPv6 Address"
msgstr "" msgstr ""
@@ -102,35 +102,35 @@ msgstr ""
msgid "Interface Info" msgid "Interface Info"
msgstr "" 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" msgid "Interface Name"
msgstr "" 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" msgid "LAN access Tailscale"
msgstr "" 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." msgid "Leave blank to use the device's hostname."
msgstr "" 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. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale." msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145
msgid "Logging program activities." msgid "Logging program activities."
msgstr "" 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." msgid "Logging program errors and exceptions."
msgstr "" 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" msgid "Login Status"
msgstr "" 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" msgid "Logout and Unbind"
msgstr "" msgstr ""
@@ -138,120 +138,138 @@ msgstr ""
msgid "Logs" msgid "Logs"
msgstr "" 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" msgid "MTU"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "" 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" msgid "Needs Login"
msgstr "" 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" msgid "Network Interface Information"
msgstr "" 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." msgid "No interface online."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:52 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "No logs available"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network." msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "Port" msgid "Port"
msgstr "" 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" msgid "RUNNING"
msgstr "" 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" msgid "Server Address"
msgstr "" 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." msgid "Set the Tailscale port number."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Site To Site" msgid "Site To Site"
msgstr "" 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" msgid "StdErr Log"
msgstr "" 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" msgid "StdOut Log"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 msgid "Subnet Routes"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
#: 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 #: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale" msgid "Tailscale"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "" 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" msgid "Tailscale access WAN"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90
msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js: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." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:105
msgid "Toggle Log Order"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:98
msgid "Total Download" msgid "Total Download"
msgstr "" 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" msgid "Total Upload"
msgstr "" 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." msgid "Unable to get interface %s info: %s."
msgstr "" 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." msgid "Unable to get interface info: %s."
msgstr "" 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." msgid "Use %s to deploy a private server."
msgstr "" 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." msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:197
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "" 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" msgid "Workdir"
msgstr "" msgstr ""

View File

@@ -7,84 +7,84 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Accept DNS" msgid "Accept DNS"
msgstr "允许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." msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "使用 Tailscale 管理控制台的 DNS 配置。" msgstr "使用 Tailscale 管理控制台的 DNS 配置。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 #: 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: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
msgid "Accept Routes" msgid "Accept Routes"
msgstr "启用路由" 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" msgid "Available flags"
msgstr "可用参数" 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" msgid "Basic Settings"
msgstr "基础设置" msgstr "基础设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "正在收集数据..." 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" msgid "Custom Server Settings"
msgstr "自定义服务器" 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" msgid "Device Name"
msgstr "设备名称" 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" msgid "Enable"
msgstr "启用" 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" msgid "Exit Node"
msgstr "出口节点" 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" msgid "Expose Subnets"
msgstr "公开网段" 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. <code>10.0.0.0/24</code>." msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "广播子网路由至 Tailscale例如<code>10.0.0.0/24</code>。" msgstr "广播子网路由至 Tailscale例如<code>10.0.0.0/24</code>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:183 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:201
msgid "Extra Settings" msgid "Extra Settings"
msgstr "附加设置" msgstr "附加设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "防火墙模式" msgstr "防火墙模式"
@@ -96,11 +96,11 @@ msgstr "全局设置"
msgid "Grant access to Tailscale configuration" msgid "Grant access to Tailscale configuration"
msgstr "授予访问 Tailscale 配置的权限" 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" msgid "IPv4 Address"
msgstr "IPv4地址" 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" msgid "IPv6 Address"
msgstr "IPv6地址" msgstr "IPv6地址"
@@ -108,35 +108,35 @@ msgstr "IPv6地址"
msgid "Interface Info" msgid "Interface Info"
msgstr "接口信息" 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" msgid "Interface Name"
msgstr "接口名称" 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" msgid "LAN access Tailscale"
msgstr "本地局域网访问虚拟局域网" 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." msgid "Leave blank to use the device's hostname."
msgstr "留空以使用设备的主机名。" 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. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale." msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "额外参数的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 启动时的%s。" msgstr "额外参数的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 启动时的%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145
msgid "Logging program activities." msgid "Logging program activities."
msgstr "记录程序运行信息。" 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." msgid "Logging program errors and exceptions."
msgstr "记录程序错误和警告信息。" 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" msgid "Login Status"
msgstr "已绑定用户" 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" msgid "Logout and Unbind"
msgstr "注销登录并解除绑定" msgstr "注销登录并解除绑定"
@@ -144,120 +144,138 @@ msgstr "注销登录并解除绑定"
msgid "Logs" msgid "Logs"
msgstr "日志" 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" msgid "MTU"
msgstr "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:56
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "未运行" 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" msgid "Needs Login"
msgstr "未登录" 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" msgid "Network Interface Information"
msgstr "网络接口信息" 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." msgid "No interface online."
msgstr "无在线接口。" msgstr "无在线接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:52 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "No logs available"
msgstr "日志不存在"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network." msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "作为 Tailscale 广域网出口节点。" msgstr "作为 Tailscale 广域网出口节点。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "Port" msgid "Port"
msgstr "端口" 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" msgid "RUNNING"
msgstr "运行中" 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" msgid "Server Address"
msgstr "服务器地址" 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." msgid "Set the Tailscale port number."
msgstr "设置 Tailscale 端口号。" 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" msgid "Site To Site"
msgstr "子网互通" 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" msgid "StdErr Log"
msgstr "错误日志" 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" msgid "StdOut Log"
msgstr "运行日志" msgstr "运行日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 msgid "Subnet Routes"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 msgstr "子网路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
#: 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 #: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale" msgid "Tailscale"
msgstr "Tailscale" msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "虚拟局域网访问本地局域网" 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" msgid "Tailscale access WAN"
msgstr "虚拟局域网访问本地广域网" msgstr "虚拟局域网访问本地广域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90
msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "Tailscale 是一个跨平台且易于使用的虚拟局域网 VPN。" msgstr "Tailscale 是一个跨平台且易于使用的虚拟局域网 VPN。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js: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." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目录包含配置文件、审计日志和运行时信息。" msgstr "工作目录包含配置文件、审计日志和运行时信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:105
msgid "Toggle Log Order"
msgstr "切换日志排序"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:98
msgid "Total Download" msgid "Total Download"
msgstr "总下载量" 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" msgid "Total Upload"
msgstr "总上传量" 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." msgid "Unable to get interface %s info: %s."
msgstr "无法获取接口 %s 的信息:%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." msgid "Unable to get interface info: %s."
msgstr "无法获取接口信息:%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." msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有服务器" 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." msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站点到站点的三层网络连接 Tailscale 中的子网。" msgstr "使用站点到站点的三层网络连接 Tailscale 中的子网。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:197
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "本地广域网访问虚拟局域网" 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" msgid "Workdir"
msgstr "工作目录" msgstr "工作目录"

View File

@@ -7,84 +7,84 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Accept DNS" msgid "Accept DNS"
msgstr "允許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." msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "使用 Tailscale 管理控制台的 DNS 設定。" msgstr "使用 Tailscale 管理控制台的 DNS 設定。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150 #: 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: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
msgid "Accept Routes" msgid "Accept Routes"
msgstr "啟用路由" 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" msgid "Available flags"
msgstr "可用參數" 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" msgid "Basic Settings"
msgstr "基礎設置" msgstr "基礎設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "正在收集數據..." 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" msgid "Custom Server Settings"
msgstr "自定義伺服器" 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" msgid "Device Name"
msgstr "設備名稱" 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" msgid "Enable"
msgstr "啟用" 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" msgid "Exit Node"
msgstr "出口節點" 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" msgid "Expose Subnets"
msgstr "公開網段" 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. <code>10.0.0.0/24</code>." msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr "廣播子網路由至 Tailscale例如<code>10.0.0.0/24</code>。" msgstr "廣播子網路由至 Tailscale例如<code>10.0.0.0/24</code>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:183 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:201
msgid "Extra Settings" msgid "Extra Settings"
msgstr "附加設置" msgstr "附加設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "防火牆模式" msgstr "防火牆模式"
@@ -96,11 +96,11 @@ msgstr "全局設置"
msgid "Grant access to Tailscale configuration" msgid "Grant access to Tailscale configuration"
msgstr "授予訪問 Tailscale 配置的權限" 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" msgid "IPv4 Address"
msgstr "IPv4地址" 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" msgid "IPv6 Address"
msgstr "IPv6地址" msgstr "IPv6地址"
@@ -108,35 +108,35 @@ msgstr "IPv6地址"
msgid "Interface Info" msgid "Interface Info"
msgstr "接口信息" 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" msgid "Interface Name"
msgstr "接口名稱" 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" msgid "LAN access Tailscale"
msgstr "本地局域網訪問虛擬局域網" 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." msgid "Leave blank to use the device's hostname."
msgstr "留空以使用設備的主機名。" 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. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale." msgid "List of extra flags. Format: --flags=value, e.g. <code>--exit-node=10.0.0.1</code>. <br> %s for enabling settings upon the initiation of Tailscale."
msgstr "額外參數的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 啟動時的%s。" msgstr "額外參數的列表。格式:--flags=value例如 <code>--exit-node=10.0.0.1</code>。<br> 在 Tailscale 啟動時的%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145
msgid "Logging program activities." msgid "Logging program activities."
msgstr "記錄程式運行信息。" 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." msgid "Logging program errors and exceptions."
msgstr "記錄程式錯誤和警告信息。" 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" msgid "Login Status"
msgstr "已綁定用戶" 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" msgid "Logout and Unbind"
msgstr "註銷登錄並解除綁定" msgstr "註銷登錄並解除綁定"
@@ -144,120 +144,138 @@ msgstr "註銷登錄並解除綁定"
msgid "Logs" msgid "Logs"
msgstr "日誌" 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" msgid "MTU"
msgstr "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:56
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71
msgid "NOT RUNNING" msgid "NOT RUNNING"
msgstr "未運行" 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" msgid "Needs Login"
msgstr "未登錄" 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" msgid "Network Interface Information"
msgstr "網絡接口信息" 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." msgid "No interface online."
msgstr "無在線接口。" msgstr "無在線接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:52 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "No logs available"
msgstr "日誌不存在"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network." msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "作為 Tailscale 廣域網出口節點。" msgstr "作為 Tailscale 廣域網出口節點。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "Port" msgid "Port"
msgstr "端口" 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" msgid "RUNNING"
msgstr "運行中" 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" msgid "Server Address"
msgstr "伺服器地址" 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." msgid "Set the Tailscale port number."
msgstr "設置 Tailscale 端口號。" 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" msgid "Site To Site"
msgstr "子網互通" 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" msgid "StdErr Log"
msgstr "錯誤日誌" 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" msgid "StdOut Log"
msgstr "運行日誌" msgstr "運行日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51 msgid "Subnet Routes"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53 msgstr "子網路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
#: 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 #: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale" msgid "Tailscale"
msgstr "Tailscale" msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "虛擬局域網訪問本地局域網" 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" msgid "Tailscale access WAN"
msgstr "虛擬局域網訪問本地廣域網" msgstr "虛擬局域網訪問本地廣域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90
msgid "Tailscale is a cross-platform and easy to use virtual LAN." msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "Tailscale 是一個跨平台且易於使用的虛擬局域網 VPN。" msgstr "Tailscale 是一個跨平台且易於使用的虛擬局域網 VPN。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js: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." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目錄包含配置文件、審計日誌和運行時信息。" msgstr "工作目錄包含配置文件、審計日誌和運行時信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/log.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:105
msgid "Toggle Log Order"
msgstr "切換日誌排序"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:98
msgid "Total Download" msgid "Total Download"
msgstr "總下載量" 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" msgid "Total Upload"
msgstr "總上傳量" 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." msgid "Unable to get interface %s info: %s."
msgstr "無法獲取接口 %s 的信息:%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." msgid "Unable to get interface info: %s."
msgstr "無法獲取接口信息:%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." msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有伺服器" 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." msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站點到站點的三層網路連線 Tailscale 中的子網。" msgstr "使用站點到站點的三層網路連線 Tailscale 中的子網。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:197
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "本地廣域網訪問虛擬局域網" 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" msgid "Workdir"
msgstr "工作目錄" msgstr "工作目錄"

View File

@@ -86,6 +86,23 @@ custom_instance() {
fi fi
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' config_get access $cfg 'access'
if [ -n "$access" ]; then if [ -n "$access" ]; then
if [ -z "$(uci -q get firewall.tszone)" ]; then if [ -z "$(uci -q get firewall.tszone)" ]; then
@@ -184,6 +201,9 @@ stop_instance() {
# Remove network settings # Remove network settings
uci -q delete network.tailscale uci -q delete network.tailscale
uci -q delete network.ts_lan 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 # Remove firewall settings
uci -q delete firewall.tszone uci -q delete firewall.tszone