feat: online exit nodes & bump version

This commit is contained in:
asvow
2024-09-29 18:44:25 +08:00
parent 06e27c617c
commit 0f6cc25ee9
6 changed files with 288 additions and 210 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.2.0 PKG_VERSION:=1.2.1
include $(TOPDIR)/feeds/luci/luci.mk include $(TOPDIR)/feeds/luci/luci.mk

View File

@@ -24,7 +24,8 @@ function getStatus() {
backendState: undefined, backendState: undefined,
authURL: undefined, authURL: undefined,
displayName: undefined, displayName: undefined,
routes: [] onlineExitNodes: [],
subnetRoutes: []
}; };
return Promise.resolve(callServiceList('tailscale')).then(res => { return Promise.resolve(callServiceList('tailscale')).then(res => {
try { try {
@@ -40,7 +41,9 @@ 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) status.onlineExitNodes = Object.values(tailscaleStatus.Peer)
.flatMap(peer => (peer.ExitNodeOption && peer.Online) ? [peer.HostName] : []);
status.subnetRoutes = Object.values(tailscaleStatus.Peer)
.flatMap(peer => peer.PrimaryRoutes || []); .flatMap(peer => peer.PrimaryRoutes || []);
return status; return status;
}); });
@@ -85,7 +88,8 @@ return view.extend({
render: function(data) { render: function(data) {
var m, s, o; var m, s, o;
var statusData = data[1]; var statusData = data[1];
var routes = statusData.routes; var onlineExitNodes = statusData.onlineExitNodes;
var subnetRoutes = statusData.subnetRoutes;
m = new form.Map('tailscale', _('Tailscale'), _('Tailscale is a cross-platform and easy to use virtual LAN.')); m = new form.Map('tailscale', _('Tailscale'), _('Tailscale is a cross-platform and easy to use virtual LAN.'));
@@ -168,6 +172,20 @@ return view.extend({
o.default = o.disabled; o.default = o.disabled;
o.rmempty = false; o.rmempty = false;
o = s.taboption('advance', form.ListValue, 'exitNode', _('Online Exit Nodes'), _('Select an online machine name to use as an exit node.'));
if (onlineExitNodes.length > 0) {
o.value('', _('-- Please choose --'));
onlineExitNodes.forEach(function(node) {
o.value(node, node);
});
} else {
o.value('', _('No Available Exit Nodes'));
o.readonly = true;
}
o.default = '';
o.depends('advertiseExitNode', '0');
o.rmempty = true;
o = s.taboption('advance', form.DynamicList, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>.')); o = s.taboption('advance', form.DynamicList, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>.'));
o.default = ''; o.default = '';
o.rmempty = true; o.rmempty = true;
@@ -178,8 +196,8 @@ return view.extend({
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.')); o = s.taboption('advance', form.DynamicList, 'subnetRoutes', _('Subnet Routes'), _('Select subnet routes advertised by other nodes in Tailscale network.'));
if (routes.length > 0) { if (subnetRoutes.length > 0) {
routes.forEach(function(route) { subnetRoutes.forEach(function(route) {
o.value(route, route); o.value(route, route);
}); });
} else { } else {

View File

@@ -1,84 +1,88 @@
msgid "" msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8" msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Accept DNS" msgid "-- Please choose --"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Accept DNS configuration from the Tailscale admin console."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Accept Routes"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Accept subnet routes that other nodes advertise."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Access Control"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203
msgid "Additional Flags"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
msgid "Advanced Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
msgid "Are you sure you want to logout and unbind the current device?"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215
msgid "Auth Key"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203
msgid "Available flags"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:118
msgid "Basic Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127
msgid "Collecting data ..."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:208
msgid "Custom Server Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Device Name"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120
msgid "Enable"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Accept DNS"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Accept DNS configuration from the Tailscale admin console."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept Routes"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept subnet routes that other nodes advertise."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211
msgid "Access Control"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
msgid "Additional Flags"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157
msgid "Advanced Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
msgid "Are you sure you want to logout and unbind the current device?"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233
msgid "Auth Key"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
msgid "Available flags"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Basic Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:117
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131
msgid "Collecting data ..."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226
msgid "Custom Server Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Device Name"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
msgid "Enable"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Exit Node" msgid "Exit Node"
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:189
msgid "Expose Subnets" msgid "Expose Subnets"
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:189
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:201 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219
msgid "Extra Settings" msgid "Extra Settings"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "" msgstr ""
@@ -106,31 +110,31 @@ msgstr ""
msgid "Interface Name" msgid "Interface Name"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "LAN access Tailscale" msgid "LAN access Tailscale"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
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:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
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:145 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "Logging program activities." msgid "Logging program activities."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
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:124 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128
msgid "Login Status" msgid "Login Status"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72
msgid "Logout and Unbind" msgid "Logout and Unbind"
msgstr "" msgstr ""
@@ -142,12 +146,12 @@ msgstr ""
msgid "MTU" msgid "MTU"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74
msgid "NOT RUNNING" msgid "NOT RUNNING"
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 "Needs Login" msgid "Needs Login"
msgstr "" msgstr ""
@@ -155,7 +159,11 @@ msgstr ""
msgid "Network Interface Information" msgid "Network Interface Information"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182
msgid "No Available Exit Nodes"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204
msgid "No Available Subnet Routes" msgid "No Available Subnet Routes"
msgstr "" msgstr ""
@@ -163,15 +171,19 @@ msgstr ""
msgid "No interface online." msgid "No interface online."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
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:130 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Online Exit Nodes"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57
msgid "RUNNING" msgid "RUNNING"
msgstr "" msgstr ""
@@ -185,56 +197,60 @@ msgctxt "scroll to bottom (the tail) of the log file"
msgid "Scroll to tail" msgid "Scroll to tail"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Select an online machine name to use as an exit node."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198
msgid "Select subnet routes advertised by other nodes in Tailscale network." msgid "Select subnet routes advertised by other nodes in Tailscale network."
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229
msgid "Server Address" msgid "Server Address"
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:134
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:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Site To Site" msgid "Site To Site"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
msgid "StdErr Log" msgid "StdErr Log"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "StdOut Log" msgid "StdOut Log"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198
msgid "Subnet Routes" msgid "Subnet Routes"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3 #: 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:194 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213
msgid "Tailscale access WAN" msgid "Tailscale access WAN"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94
msgid "Tailscale is a cross-platform and easy to use virtual LAN." 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:135 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "The working directory contains config files, audit logs, and runtime info." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "" msgstr ""
@@ -258,18 +274,18 @@ msgstr ""
msgid "Unable to load log data:" msgid "Unable to load log data:"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227
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:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network." 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:197 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "" msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "Workdir" msgid "Workdir"
msgstr "" msgstr ""

View File

@@ -7,84 +7,88 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "-- Please choose --"
msgstr "-- 请选择 --"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Accept DNS" msgid "Accept DNS"
msgstr "允许DNS" msgstr "允许DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Accept DNS configuration from the Tailscale admin console." 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:155 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept Routes" msgid "Accept Routes"
msgstr "启用路由" msgstr "启用路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept subnet routes that other nodes advertise." msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他节点广播的子网路由。" msgstr "接受其他节点广播的子网路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211
msgid "Access Control" msgid "Access Control"
msgstr "访问控制" msgstr "访问控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
msgid "Additional Flags" msgid "Additional Flags"
msgstr "参数列表" msgstr "参数列表"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "高级设置" msgstr "高级设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
msgid "Are you sure you want to logout and unbind the current device?" msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否注销当前登录并且解绑当前设备?" msgstr "是否注销当前登录并且解绑当前设备?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233
msgid "Auth Key" msgid "Auth Key"
msgstr "认证密钥" msgstr "认证密钥"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
msgid "Available flags" msgid "Available flags"
msgstr "可用参数" msgstr "可用参数"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:118 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Basic Settings" msgid "Basic Settings"
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:117
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "正在收集数据..." msgstr "正在收集数据..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:208 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226
msgid "Custom Server Settings" msgid "Custom Server Settings"
msgstr "自定义服务器" msgstr "自定义服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Device Name" msgid "Device Name"
msgstr "设备名称" msgstr "设备名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
msgid "Enable" msgid "Enable"
msgstr "启用" msgstr "启用"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Exit Node" msgid "Exit Node"
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:189
msgid "Expose Subnets" msgid "Expose Subnets"
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:189
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:201 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219
msgid "Extra Settings" msgid "Extra Settings"
msgstr "附加设置" msgstr "附加设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "防火墙模式" msgstr "防火墙模式"
@@ -112,31 +116,31 @@ msgstr "接口信息"
msgid "Interface Name" msgid "Interface Name"
msgstr "接口名称" msgstr "接口名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "LAN access Tailscale" msgid "LAN access Tailscale"
msgstr "本地局域网访问虚拟局域网" msgstr "本地局域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
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:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
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:145 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "Logging program activities." msgid "Logging program activities."
msgstr "记录程序运行信息。" msgstr "记录程序运行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
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:124 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128
msgid "Login Status" msgid "Login Status"
msgstr "已绑定用户" msgstr "已绑定用户"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72
msgid "Logout and Unbind" msgid "Logout and Unbind"
msgstr "注销登录并解除绑定" msgstr "注销登录并解除绑定"
@@ -148,12 +152,12 @@ msgstr "日志"
msgid "MTU" msgid "MTU"
msgstr "MTU" msgstr "MTU"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74
msgid "NOT RUNNING" msgid "NOT RUNNING"
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 "Needs Login" msgid "Needs Login"
msgstr "未登录" msgstr "未登录"
@@ -161,7 +165,11 @@ msgstr "未登录"
msgid "Network Interface Information" msgid "Network Interface Information"
msgstr "网络接口信息" msgstr "网络接口信息"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182
msgid "No Available Exit Nodes"
msgstr "没有可用的出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204
msgid "No Available Subnet Routes" msgid "No Available Subnet Routes"
msgstr "没有可用的子网路由" msgstr "没有可用的子网路由"
@@ -169,15 +177,19 @@ msgstr "没有可用的子网路由"
msgid "No interface online." msgid "No interface online."
msgstr "无在线接口。" msgstr "无在线接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
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:130 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Online Exit Nodes"
msgstr "可用出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57
msgid "RUNNING" msgid "RUNNING"
msgstr "运行中" msgstr "运行中"
@@ -191,56 +203,60 @@ msgctxt "scroll to bottom (the tail) of the log file"
msgid "Scroll to tail" msgid "Scroll to tail"
msgstr "滚动到底部" msgstr "滚动到底部"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Select an online machine name to use as an exit node."
msgstr "选择一个可用的节点名称作为出口节点使用。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198
msgid "Select subnet routes advertised by other nodes in Tailscale network." msgid "Select subnet routes advertised by other nodes in Tailscale network."
msgstr "选择非本设备广播的子网路由。" msgstr "选择非本设备广播的子网路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229
msgid "Server Address" msgid "Server Address"
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:134
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:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Site To Site" msgid "Site To Site"
msgstr "子网互通" msgstr "子网互通"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
msgid "StdErr Log" msgid "StdErr Log"
msgstr "错误日志" msgstr "错误日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "StdOut Log" msgid "StdOut Log"
msgstr "运行日志" msgstr "运行日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198
msgid "Subnet Routes" msgid "Subnet Routes"
msgstr "子网路由" msgstr "子网路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3 #: 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:194 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "虚拟局域网访问本地局域网" msgstr "虚拟局域网访问本地局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213
msgid "Tailscale access WAN" msgid "Tailscale access WAN"
msgstr "虚拟局域网访问本地广域网" msgstr "虚拟局域网访问本地广域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94
msgid "Tailscale is a cross-platform and easy to use virtual LAN." 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:135 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "The working directory contains config files, audit logs, and runtime info." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目录包含配置文件、审计日志和运行时信息。" msgstr "工作目录包含配置文件、审计日志和运行时信息。"
@@ -264,18 +280,18 @@ msgstr "无法获取接口信息:%s。"
msgid "Unable to load log data:" msgid "Unable to load log data:"
msgstr "无法读取日志数据:" msgstr "无法读取日志数据:"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227
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:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network." 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:197 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "本地广域网访问虚拟局域网" msgstr "本地广域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "Workdir" msgid "Workdir"
msgstr "工作目录" msgstr "工作目录"

View File

@@ -7,84 +7,88 @@ msgstr ""
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "-- Please choose --"
msgstr "-- 請選擇 --"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Accept DNS" msgid "Accept DNS"
msgstr "允許DNS" msgstr "允許DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Accept DNS configuration from the Tailscale admin console." 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:155 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept Routes" msgid "Accept Routes"
msgstr "啟用路由" msgstr "啟用路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept subnet routes that other nodes advertise." msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他節點廣播的子網路由。" msgstr "接受其他節點廣播的子網路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211
msgid "Access Control" msgid "Access Control"
msgstr "訪問控制" msgstr "訪問控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
msgid "Additional Flags" msgid "Additional Flags"
msgstr "參數列表" msgstr "參數列表"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:157
msgid "Advanced Settings" msgid "Advanced Settings"
msgstr "高級設置" msgstr "高級設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
msgid "Are you sure you want to logout and unbind the current device?" msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否註銷當前登錄並且解綁當前設備?" msgstr "是否註銷當前登錄並且解綁當前設備?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:233
msgid "Auth Key" msgid "Auth Key"
msgstr "認證密鑰" msgstr "認證密鑰"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
msgid "Available flags" msgid "Available flags"
msgstr "可用參數" msgstr "可用參數"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:118 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Basic Settings" msgid "Basic Settings"
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:117
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:127 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:131
msgid "Collecting data ..." msgid "Collecting data ..."
msgstr "正在收集數據..." msgstr "正在收集數據..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:208 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:226
msgid "Custom Server Settings" msgid "Custom Server Settings"
msgstr "自定義伺服器" msgstr "自定義伺服器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Device Name" msgid "Device Name"
msgstr "設備名稱" msgstr "設備名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
msgid "Enable" msgid "Enable"
msgstr "啟用" msgstr "啟用"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Exit Node" msgid "Exit Node"
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:189
msgid "Expose Subnets" msgid "Expose Subnets"
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:189
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:201 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:219
msgid "Extra Settings" msgid "Extra Settings"
msgstr "附加設置" msgstr "附加設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
msgid "Firewall Mode" msgid "Firewall Mode"
msgstr "防火牆模式" msgstr "防火牆模式"
@@ -112,31 +116,31 @@ msgstr "接口信息"
msgid "Interface Name" msgid "Interface Name"
msgstr "接口名稱" msgstr "接口名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:214
msgid "LAN access Tailscale" msgid "LAN access Tailscale"
msgstr "本地局域網訪問虛擬局域網" msgstr "本地局域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
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:203 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:221
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:145 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "Logging program activities." msgid "Logging program activities."
msgstr "記錄程式運行信息。" msgstr "記錄程式運行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
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:124 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:128
msgid "Login Status" msgid "Login Status"
msgstr "已綁定用戶" msgstr "已綁定用戶"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:72
msgid "Logout and Unbind" msgid "Logout and Unbind"
msgstr "註銷登錄並解除綁定" msgstr "註銷登錄並解除綁定"
@@ -148,12 +152,12 @@ msgstr "日誌"
msgid "MTU" msgid "MTU"
msgstr "MTU" msgstr "MTU"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:71 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:74
msgid "NOT RUNNING" msgid "NOT RUNNING"
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 "Needs Login" msgid "Needs Login"
msgstr "未登錄" msgstr "未登錄"
@@ -161,7 +165,11 @@ msgstr "未登錄"
msgid "Network Interface Information" msgid "Network Interface Information"
msgstr "網絡接口信息" msgstr "網絡接口信息"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:182
msgid "No Available Exit Nodes"
msgstr "没有可用的出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:204
msgid "No Available Subnet Routes" msgid "No Available Subnet Routes"
msgstr "沒有可用的子網路由" msgstr "沒有可用的子網路由"
@@ -169,15 +177,19 @@ msgstr "沒有可用的子網路由"
msgid "No interface online." msgid "No interface online."
msgstr "無在線接口。" msgstr "無在線接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
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:130 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Online Exit Nodes"
msgstr "可用出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57
msgid "RUNNING" msgid "RUNNING"
msgstr "運行中" msgstr "運行中"
@@ -191,56 +203,60 @@ msgctxt "scroll to bottom (the tail) of the log file"
msgid "Scroll to tail" msgid "Scroll to tail"
msgstr "捲動到尾部" msgstr "捲動到尾部"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:175
msgid "Select an online machine name to use as an exit node."
msgstr "選擇一個可用的節點名稱作為出口節點使用。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198
msgid "Select subnet routes advertised by other nodes in Tailscale network." msgid "Select subnet routes advertised by other nodes in Tailscale network."
msgstr "選擇非本設備廣播的子網路由。" msgstr "選擇非本設備廣播的子網路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:211 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:229
msgid "Server Address" msgid "Server Address"
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:134
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:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Site To Site" msgid "Site To Site"
msgstr "子網互通" msgstr "子網互通"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:153
msgid "StdErr Log" msgid "StdErr Log"
msgstr "錯誤日誌" msgstr "錯誤日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:145 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "StdOut Log" msgid "StdOut Log"
msgstr "運行日誌" msgstr "運行日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:198
msgid "Subnet Routes" msgid "Subnet Routes"
msgstr "子網路由" msgstr "子網路由"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:120
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:57
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:56 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:59
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3 #: 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:194 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:212
msgid "Tailscale access LAN" msgid "Tailscale access LAN"
msgstr "虛擬局域網訪問本地局域網" msgstr "虛擬局域網訪問本地局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:195 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:213
msgid "Tailscale access WAN" msgid "Tailscale access WAN"
msgstr "虛擬局域網訪問本地廣域網" msgstr "虛擬局域網訪問本地廣域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:90 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:94
msgid "Tailscale is a cross-platform and easy to use virtual LAN." 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:135 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "The working directory contains config files, audit logs, and runtime info." msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目錄包含配置文件、審計日誌和運行時信息。" msgstr "工作目錄包含配置文件、審計日誌和運行時信息。"
@@ -264,18 +280,18 @@ msgstr "無法獲取接口信息:%s。"
msgid "Unable to load log data:" msgid "Unable to load log data:"
msgstr "無法載入日誌檔:" msgstr "無法載入日誌檔:"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:209 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:227
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:175 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:193
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network." 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:197 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:215
msgid "WAN access Tailscale" msgid "WAN access Tailscale"
msgstr "本地廣域網訪問虛擬局域網" msgstr "本地廣域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:135 #: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
msgid "Workdir" msgid "Workdir"
msgstr "工作目錄" msgstr "工作目錄"

View File

@@ -20,7 +20,7 @@ section_enabled() {
custom_instance() { custom_instance() {
local cfg="$1" local cfg="$1"
local acceptRoutes hostname acceptDNS advertiseExitNode advertiseRoutes s2s flags loginServer authkey std_out std_err local acceptRoutes hostname acceptDNS advertiseExitNode exitNode advertiseRoutes s2s subnetRoutes flags loginServer authkey std_out std_err
local ARGS=" up --reset" local ARGS=" up --reset"
if ! section_enabled "$cfg"; then if ! section_enabled "$cfg"; then
@@ -32,6 +32,7 @@ custom_instance() {
config_get hostname $cfg 'hostname' config_get hostname $cfg 'hostname'
config_get_bool acceptDNS $cfg 'acceptDNS' config_get_bool acceptDNS $cfg 'acceptDNS'
config_get_bool advertiseExitNode $cfg 'advertiseExitNode' config_get_bool advertiseExitNode $cfg 'advertiseExitNode'
config_get exitNode $cfg 'exitNode'
config_get advertiseRoutes $cfg 'advertiseRoutes' config_get advertiseRoutes $cfg 'advertiseRoutes'
config_get_bool s2s $cfg 's2s' config_get_bool s2s $cfg 's2s'
config_get flags $cfg 'flags' config_get flags $cfg 'flags'
@@ -44,6 +45,7 @@ custom_instance() {
[ -n "$hostname" ] && ARGS="$ARGS --hostname=$hostname" [ -n "$hostname" ] && ARGS="$ARGS --hostname=$hostname"
[ "$acceptDNS" = "0" ] && ARGS="$ARGS --accept-dns=false" [ "$acceptDNS" = "0" ] && ARGS="$ARGS --accept-dns=false"
[ "$advertiseExitNode" = "1" ] && ARGS="$ARGS --advertise-exit-node" [ "$advertiseExitNode" = "1" ] && ARGS="$ARGS --advertise-exit-node"
[ -n "$exitNode" ] && ARGS="$ARGS --exit-node=$exitNode --exit-node-allow-lan-access=true"
[ -n "$advertiseRoutes" ] && ARGS="$ARGS --advertise-routes=$(echo $advertiseRoutes | tr ' ' ',')" [ -n "$advertiseRoutes" ] && ARGS="$ARGS --advertise-routes=$(echo $advertiseRoutes | tr ' ' ',')"
[ "$s2s" = "1" ] && ARGS="$ARGS --snat-subnet-routes=false" [ "$s2s" = "1" ] && ARGS="$ARGS --snat-subnet-routes=false"
[ -n "$flags" ] && ARGS="$ARGS $flags" [ -n "$flags" ] && ARGS="$ARGS $flags"
@@ -70,7 +72,7 @@ custom_instance() {
MagicDNSSuffix=$(tailscale status --json | awk -F'"' '/"MagicDNSSuffix"/ {last=$(NF-1)} END {print last}') MagicDNSSuffix=$(tailscale status --json | awk -F'"' '/"MagicDNSSuffix"/ {last=$(NF-1)} END {print last}')
sed -i '/100.100.100.100/d' /etc/dnsmasq.conf sed -i '/100.100.100.100/d' /etc/dnsmasq.conf
echo "server=/$MagicDNSSuffix/100.100.100.100" >> /etc/dnsmasq.conf echo "server=/$MagicDNSSuffix/100.100.100.100" >> /etc/dnsmasq.conf
/etc/init.d/dnsmasq restart /etc/init.d/dnsmasq reload
fi fi
ts0=$(ifconfig | grep 'tailscale' | awk '{print $1}') ts0=$(ifconfig | grep 'tailscale' | awk '{print $1}')
@@ -94,6 +96,14 @@ custom_instance() {
fi fi
fi fi
lan2wan=$(uci show firewall | grep "firewall.@forwarding\[[0-9]\+\]\.src='lan'" -B 1 -A 1 | grep "firewall.@forwarding\[[0-9]\+\]\.dest='wan'" | grep -o '[0-9]\+')
if [ -n "$exitNode" ]; then
uci set firewall.@defaults[0].forward='REJECT'
[ -n $lan2wan ] && uci set firewall.@forwarding[$lan2wan].enabled='0'
else
uci -q delete firewall.@forwarding[$lan2wan].enabled
fi
config_get subnetRoutes $cfg 'subnetRoutes' config_get subnetRoutes $cfg 'subnetRoutes'
if [ -n "$subnetRoutes" ]; then if [ -n "$subnetRoutes" ]; then
i=1 i=1
@@ -209,7 +219,7 @@ stop_instance() {
# Remove dnsmasq settings # Remove dnsmasq settings
sed -i '/100.100.100.100/d' /etc/dnsmasq.conf sed -i '/100.100.100.100/d' /etc/dnsmasq.conf
/etc/init.d/dnsmasq restart /etc/init.d/dnsmasq reload
# Remove network settings # Remove network settings
uci -q delete network.tailscale uci -q delete network.tailscale
@@ -219,6 +229,8 @@ stop_instance() {
done done
# Remove firewall settings # Remove firewall settings
lan2wan=$(uci show firewall | grep "firewall.@forwarding\[[0-9]\+\]\.src='lan'" -B 1 -A 1 | grep "firewall.@forwarding\[[0-9]\+\]\.dest='wan'" | grep -o '[0-9]\+')
uci -q delete firewall.@forwarding[$lan2wan].enabled
uci -q delete firewall.tszone uci -q delete firewall.tszone
uci -q delete firewall.tsfwlan uci -q delete firewall.tsfwlan
uci -q delete firewall.tsfwwan uci -q delete firewall.tsfwwan