optimize view & net config

This commit is contained in:
asvow
2024-02-03 20:04:08 +08:00
parent 2261668265
commit 990ebc9d27
6 changed files with 178 additions and 175 deletions

View File

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

View File

@@ -18,30 +18,29 @@ var callServiceList = rpc.declare({
expect: { '': {} }
});
function getServiceStatus() {
function getStatus() {
var status = {};
return Promise.resolve(callServiceList('tailscale')).then(function (res) {
var isRunning = false;
try {
isRunning = res['tailscale']['instances']['instance1']['running'];
} catch (e) { }
return isRunning;
});
}
function getLoginStatus() {
return fs.exec("/usr/sbin/tailscale", ["status", "--json"]).then(function(res) {
var status = JSON.parse(res.stdout);
if (!status.AuthURL && status.BackendState == "NeedsLogin") {
status.isRunning = res['tailscale']['instances']['instance1']['running'];
} catch (e) {
status.isRunning = false;
}
return fs.exec("/usr/sbin/tailscale", ["status", "--json"]);
}).then(function(res) {
var tailscaleStatus = JSON.parse(res.stdout);
if (!tailscaleStatus.AuthURL && tailscaleStatus.BackendState == "NeedsLogin") {
fs.exec("/usr/sbin/tailscale", ["login"]);
}
var displayName = status.BackendState == "Running" ? status.User[status.Self.UserID].DisplayName : undefined;
return {
backendState: status.BackendState,
authURL: status.AuthURL,
displayName: displayName
};
status.backendState = tailscaleStatus.BackendState;
status.authURL = tailscaleStatus.AuthURL;
status.displayName = status.backendState == "Running" ? tailscaleStatus.User[tailscaleStatus.Self.UserID].DisplayName : undefined;
return status;
}).catch(function(error) {
return { backendState: undefined, authURL: undefined, displayName: undefined };
status.backendState = undefined;
status.authURL = undefined;
status.displayName = undefined;
return status;
});
}
@@ -75,8 +74,7 @@ function renderLogin(loginStatus, authURL, displayName) {
return view.extend({
load: function() {
return Promise.all([
uci.load('tailscale'),
getServiceStatus()
uci.load('tailscale')
]);
},
@@ -89,8 +87,25 @@ return view.extend({
s = m.section(form.TypedSection);
s.anonymous = true;
s.render = function () {
poll.add(function() {
return Promise.resolve(getStatus()).then(function(res) {
var service_view = document.getElementById("service_status");
var login_view = document.getElementById("login_status_div");
service_view.innerHTML = renderStatus(res.isRunning);
login_view.innerHTML = renderLogin(res.backendState, res.authURL, res.displayName);
var logoutButton = document.getElementById('logout_button');
if (logoutButton) {
logoutButton.onclick = function() {
if (confirm(_('Are you sure you want to logout and unbind the current device?'))) {
fs.exec("/usr/sbin/tailscale", ["logout"]);
}
}
}
});
});
return E('div', { class: 'cbi-section', id: 'status_bar' }, [
E('p', { id: 'service_status' }, renderStatus(isRunning))
E('p', { id: 'service_status' }, _('Collecting data ...'))
]);
}
@@ -104,20 +119,6 @@ return view.extend({
o = s.option(form.DummyValue, 'login_status', _('Login Status'));
o.depends('enabled', '1');
o.renderWidget = function(section_id, option_id) {
poll.add(function() {
return Promise.resolve(getLoginStatus()).then(function(res) {
document.getElementById('login_status_div').innerHTML = renderLogin(res.backendState, res.authURL, res.displayName);
var logoutButton = document.getElementById('logout_button');
if (logoutButton) {
logoutButton.onclick = function() {
if (confirm(_('Are you sure you want to logout and unbind the current device?'))) {
fs.exec("/usr/sbin/tailscale", ["logout"]);
}
}
}
});
});
return E('div', { 'id': 'login_status_div' }, _('Collecting data ...'));
};

View File

@@ -1,15 +1,15 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept DNS"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept DNS configuration from the Tailscale admin console."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
msgid "Accept subnet routes that other nodes advertise."
msgstr ""
@@ -17,11 +17,11 @@ msgstr ""
msgid "Access Control"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "Advanced 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:99
msgid "Are you sure you want to logout and unbind the current device?"
msgstr ""
@@ -29,15 +29,16 @@ msgstr ""
msgid "Auth Key"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
msgid "Auto Mesh"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:98
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
msgid "Basic Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Collecting data ..."
msgstr ""
@@ -45,31 +46,31 @@ msgstr ""
msgid "Custom Server Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Device Name"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:100
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:115
msgid "Enable"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Error Log"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Exit Node"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Expose Subnets"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:133
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Firewall Mode"
msgstr ""
@@ -101,23 +102,23 @@ msgstr ""
msgid "LAN access Tailscale"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Leave blank to use the device's hostname."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Logging program activities."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Logging program errors and exceptions."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "Login Status"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:67
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66
msgid "Logout and Unbind"
msgstr ""
@@ -125,12 +126,12 @@ msgstr ""
msgid "MTU"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68
msgid "NOT RUNNING"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:64
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:63
msgid "Needs Login"
msgstr ""
@@ -142,19 +143,19 @@ msgstr ""
msgid "No interface online."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Output Log"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Port"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:52
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
msgid "RUNNING"
msgstr ""
@@ -162,14 +163,14 @@ msgstr ""
msgid "Server Address"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Set the Tailscale port number."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:52
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:87
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale"
msgstr ""
@@ -183,11 +184,11 @@ msgid "Tailscale access WAN"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:87
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:129
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "The working directory contains config files, audit logs, and runtime info."
msgstr ""
@@ -215,6 +216,6 @@ msgstr ""
msgid "WAN access Tailscale"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:129
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "Workdir"
msgstr ""

View File

@@ -7,15 +7,15 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept DNS"
msgstr "允许DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
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:151
msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他节点广播的子网路由。"
@@ -23,11 +23,11 @@ msgstr "接受其他节点广播的子网路由。"
msgid "Access Control"
msgstr "访问控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "Advanced 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:99
msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否注销当前登录并且解绑当前设备?"
@@ -35,15 +35,16 @@ msgstr "是否注销当前登录并且解绑当前设备?"
msgid "Auth Key"
msgstr "认证密钥"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
msgid "Auto Mesh"
msgstr "自动组网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:98
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
msgid "Basic Settings"
msgstr "基础设置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Collecting data ..."
msgstr "正在收集数据..."
@@ -51,31 +52,31 @@ msgstr "正在收集数据..."
msgid "Custom Server Settings"
msgstr "自定义服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Device Name"
msgstr "设备名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:100
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:115
msgid "Enable"
msgstr "启用"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Error Log"
msgstr "错误日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Exit Node"
msgstr "出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Expose Subnets"
msgstr "公开网段"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24"
msgstr "广播子网路由至Tailscale。例如10.0.0.0/24"
msgstr "广播子网路由至 Tailscale。例如10.0.0.0/24"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:133
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Firewall Mode"
msgstr "防火墙模式"
@@ -85,7 +86,7 @@ msgstr "全局设置"
#: luci-app-tailscale/root/usr/share/rpcd/acl.d/luci-app-tailscale.json:3
msgid "Grant access to Tailscale configuration"
msgstr "授予访问Tailscale配置的权限"
msgstr "授予访问 Tailscale 配置的权限"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:86
msgid "IPv4 Address"
@@ -107,23 +108,23 @@ msgstr "接口名称"
msgid "LAN access Tailscale"
msgstr "本地局域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Leave blank to use the device's hostname."
msgstr "留空以使用设备的主机名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Logging program activities."
msgstr "记录程序运行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Logging program errors and exceptions."
msgstr "记录程序错误和异常信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "Login Status"
msgstr "已绑定用户"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:67
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66
msgid "Logout and Unbind"
msgstr "注销登录并解除绑定"
@@ -131,12 +132,12 @@ msgstr "注销登录并解除绑定"
msgid "MTU"
msgstr "MTU"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68
msgid "NOT RUNNING"
msgstr "未运行"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:64
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:63
msgid "Needs Login"
msgstr "未登录"
@@ -148,19 +149,19 @@ msgstr "网络接口信息"
msgid "No interface online."
msgstr "无在线接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
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:139
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Output Log"
msgstr "运行日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Port"
msgstr "端口"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:52
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
msgid "RUNNING"
msgstr "运行中"
@@ -168,14 +169,14 @@ msgstr "运行中"
msgid "Server Address"
msgstr "服务器地址"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Set the Tailscale port number."
msgstr "设置Tailscale端口号。"
msgstr "设置 Tailscale 端口号。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:52
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:87
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale"
msgstr "Tailscale"
@@ -189,11 +190,11 @@ msgid "Tailscale access WAN"
msgstr "虚拟局域网访问本地广域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:87
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
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:129
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目录包含配置文件、审计日志和运行时信息。"
@@ -221,6 +222,6 @@ msgstr "使用 %s 部署私有服务器"
msgid "WAN access Tailscale"
msgstr "本地广域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:129
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "Workdir"
msgstr "工作目录"

View File

@@ -7,15 +7,15 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
msgid "Accept DNS"
msgstr "允許DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
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:151
msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他節點廣播的子網路由。"
@@ -23,11 +23,11 @@ msgstr "接受其他節點廣播的子網路由。"
msgid "Access Control"
msgstr "訪問控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
msgid "Advanced 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:99
msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否註銷當前登錄並且解綁當前設備?"
@@ -35,15 +35,16 @@ msgstr "是否註銷當前登錄並且解綁當前設備?"
msgid "Auth Key"
msgstr "認證密鑰"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
msgid "Auto Mesh"
msgstr "自動組網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:98
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
msgid "Basic Settings"
msgstr "基礎設置"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:121
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Collecting data ..."
msgstr "正在收集數據..."
@@ -51,31 +52,31 @@ msgstr "正在收集數據..."
msgid "Custom Server Settings"
msgstr "自定義服務器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Device Name"
msgstr "設備名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:100
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:115
msgid "Enable"
msgstr "啟用"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Error Log"
msgstr "錯誤日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
msgid "Exit Node"
msgstr "出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Expose Subnets"
msgstr "公開網段"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24"
msgstr "廣播子網路由至Tailscale。例如10.0.0.0/24"
msgstr "廣播子網路由至 Tailscale。例如10.0.0.0/24"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:133
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Firewall Mode"
msgstr "防火牆模式"
@@ -85,7 +86,7 @@ msgstr "全局設置"
#: luci-app-tailscale/root/usr/share/rpcd/acl.d/luci-app-tailscale.json:3
msgid "Grant access to Tailscale configuration"
msgstr "授予訪問Tailscale配置的權限"
msgstr "授予訪問 Tailscale 配置的權限"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:86
msgid "IPv4 Address"
@@ -107,23 +108,23 @@ msgstr "接口名稱"
msgid "LAN access Tailscale"
msgstr "本地局域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
msgid "Leave blank to use the device's hostname."
msgstr "留空以使用設備的主機名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:139
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Logging program activities."
msgstr "記錄程序運行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:143
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Logging program errors and exceptions."
msgstr "記錄程序錯誤和異常信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:104
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "Login Status"
msgstr "已綁定用戶"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:67
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:66
msgid "Logout and Unbind"
msgstr "註銷登錄並解除綁定"
@@ -131,12 +132,12 @@ msgstr "註銷登錄並解除綁定"
msgid "MTU"
msgstr "MTU"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:69
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:68
msgid "NOT RUNNING"
msgstr "未運行"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:64
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:63
msgid "Needs Login"
msgstr "未登錄"
@@ -148,19 +149,19 @@ msgstr "網絡接口信息"
msgid "No interface online."
msgstr "無在線接口。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
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:139
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Output Log"
msgstr "運行日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Port"
msgstr "端口"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:52
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
msgid "RUNNING"
msgstr "運行中"
@@ -168,14 +169,14 @@ msgstr "運行中"
msgid "Server Address"
msgstr "服務器地址"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:124
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Set the Tailscale port number."
msgstr "設置Tailscale端口號。"
msgstr "設置 Tailscale 端口號。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:52
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:54
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:87
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
#: luci-app-tailscale/root/usr/share/luci/menu.d/luci-app-tailscale.json:3
msgid "Tailscale"
msgstr "Tailscale"
@@ -189,11 +190,11 @@ msgid "Tailscale access WAN"
msgstr "虛擬局域網訪問本地廣域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:87
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
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:129
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "The working directory contains config files, audit logs, and runtime info."
msgstr "工作目錄包含配置文件、審計日誌和運行時信息。"
@@ -221,6 +222,6 @@ msgstr "使用 %s 部署私有服務器"
msgid "WAN access Tailscale"
msgstr "本地廣域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:129
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "Workdir"
msgstr "工作目錄"

View File

@@ -55,41 +55,43 @@ custom_instance() {
[ -f "/var/run/tailscale.wait.pid" ] && return
touch /var/run/tailscale.wait.pid
count=0
while [ -z "$(ifconfig | grep 'tailscale' | awk '{print $1}')" ]
while [ -z "$(ifconfig | grep 'tailscale' | awk '{print $1}')" ] || [ -z "$(tailscale ip -4)" ]
do
sleep 2
let count++
[ "${count}" -ge 5 ] && { rm /var/run/tailscale.wait.pid; exit 19; }
done
ts0=$(ifconfig | grep 'tailscale' | awk '{print $1}')
for i in ${ts0}
do
echo "tailscale interface $i is started!"
if [ -z "$(uci -q get network.$i)" ]; then
if [ -z "$(uci -q get network.tailscale)" ]; then
uci set network.tailscale='interface'
if [ "$ts0" = *$'\n'* ]; then
uci set network.ts_lan='device'
uci set network.ts_lan.type='bridge'
uci set network.ts_lan.name='ts-lan'
for port in "${ts0}"; do
uci add_list network.ts_lan.ports=$port
done
uci set network.tailscale.proto='none'
uci set network.tailscale.device='ts-lan'
else
ts_ip=$(tailscale ip -4)
uci set network.$i=interface
uci set network.$i.proto='static'
uci set network.$i.ipaddr=$ts_ip
uci set network.$i.netmask='255.0.0.0'
uci set network.$i.device=$i
uci set network.tailscale.proto='static'
uci set network.tailscale.ipaddr=$ts_ip
uci set network.tailscale.netmask='255.0.0.0'
uci set network.tailscale.device=$ts0
fi
done
fi
config_get_bool acceptRoutes $cfg 'acceptRoutes'
if [ "$acceptRoutes" == "1" ]; then
if [ -z "$(uci -q get firewall.tszone)" ]; then
uci set firewall.tszone=zone
uci set firewall.tszone='zone'
uci set firewall.tszone.input='ACCEPT'
uci set firewall.tszone.output='ACCEPT'
uci set firewall.tszone.forward='REJECT'
uci set firewall.tszone.masq='1'
uci set firewall.tszone.name='tailscale'
if [ "$ts0" = *$'\n'* ]; then
printf '%s\n' "$ts0" | IFS=$'\n' read -ra ts0_array
uci add_list firewall.tszone.network ${ts0_array[@]}
else
uci set firewall.tszone.network=$ts0
fi
uci set firewall.tszone.network='tailscale'
fi
else
uci -q delete firewall.tszone
@@ -177,12 +179,9 @@ stop_instance() {
local cfg="$1"
/usr/sbin/tailscaled --cleanup
# Remove network interfaces
ts0="$(ifconfig | grep 'tailscale' | awk '{print $1}')"
for i in ${ts0}
do
uci -q delete network.$i
done
# Remove network settings
uci -q delete network.tailscale
uci -q delete network.ts_lan
# Remove firewall settings
uci -q delete firewall.tszone