optimize view & net config
This commit is contained in:
2
Makefile
2
Makefile
@@ -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
|
||||
|
||||
|
||||
@@ -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 ...'));
|
||||
};
|
||||
|
||||
|
||||
@@ -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 ""
|
||||
|
||||
@@ -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 "工作目录"
|
||||
|
||||
@@ -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 "工作目錄"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user