new feature: extra flags

1. you can integrate additional flags within the Extra Settings.
2. refactor UI
3. bump version to v1.1.0.
This commit is contained in:
asvow
2024-06-05 19:56:36 +08:00
parent 35d083156a
commit 03b49ab6e5
7 changed files with 208 additions and 154 deletions

View File

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

View File

@@ -23,6 +23,7 @@ return view.extend({
'daemon.err': { status: 'StdErr', startIndex: 9 },
'daemon.notice': { status: 'Info', startIndex: 10 }
};
if (res.stdout) {
self.logs = res.stdout.split('\n').map(function(log) {
var logParts = log.split(' ').filter(Boolean);
if (logParts.length >= 6) {
@@ -37,6 +38,7 @@ return view.extend({
return '';
}
}).filter(Boolean);
}
self.updateLogView();
} else {
throw new Error(res.stdout + ' ' + res.stderr);
@@ -48,7 +50,7 @@ return view.extend({
updateLogView: function() {
var view = document.getElementById('syslog');
var logs = this.logs;
if (logs.length === 0) {
if (logs.length <= 100) {
view.textContent = _('No logs available');
return;
}

View File

@@ -110,79 +110,81 @@ return view.extend({
}
s = m.section(form.NamedSection, 'settings', 'config');
s.title = _('Basic Settings');
s.tab('basic',_('Basic Settings'));
o = s.option(form.Flag, 'enabled', _('Enable'));
o = s.taboption('basic',form.Flag, 'enabled', _('Enable'));
o.default = o.disabled;
o.rmempty = false;
o = s.option(form.DummyValue, 'login_status', _('Login Status'));
o = s.taboption('basic',form.DummyValue, 'login_status', _('Login Status'));
o.depends('enabled', '1');
o.renderWidget = function(section_id, option_id) {
return E('div', { 'id': 'login_status_div' }, _('Collecting data ...'));
};
o = s.option(form.Value, 'port', _('Port'), _('Set the Tailscale port number.'));
o = s.taboption('basic',form.Value, 'port', _('Port'), _('Set the Tailscale port number.'));
o.datatype = 'port';
o.default = '41641';
o.rmempty = false;
o = s.option(form.Value, 'config_path', _('Workdir'), _('The working directory contains config files, audit logs, and runtime info.'));
o = s.taboption('basic',form.Value, 'config_path', _('Workdir'), _('The working directory contains config files, audit logs, and runtime info.'));
o.default = '/etc/tailscale';
o.rmempty = false;
o = s.option(form.ListValue, 'fw_mode', _('Firewall Mode'));
o = s.taboption('basic',form.ListValue, 'fw_mode', _('Firewall Mode'));
o.value('nftables', 'nftables');
o.value('iptables', 'iptables');
o.default = 'nftables';
o.rmempty = false;
o = s.option(form.Flag, 'log_stdout', _('Output Log'), _('Logging program activities.'));
o = s.taboption('basic',form.Flag, 'log_stdout', _('StdOut Log'), _('Logging program activities.'));
o.default = o.enabled;
o.rmempty = false;
o = s.option(form.Flag, 'log_stderr', _('Error Log'), _('Logging program errors and exceptions.'));
o = s.taboption('basic',form.Flag, 'log_stderr', _('StdErr Log'), _('Logging program errors and exceptions.'));
o.default = o.enabled;
o.rmempty = false;
s = m.section(form.NamedSection, 'settings', 'config');
s.title = _('Advanced Settings');
s.tab('advance',_('Advanced Settings'));
o = s.option(form.Flag, 'acceptRoutes', _('Auto Mesh'), _('Accept subnet routes that other nodes advertise.'));
o = s.taboption('advance',form.Flag, 'acceptRoutes', _('Auto Mesh'), _('Accept subnet routes that other nodes advertise.'));
o.default = o.disabled;
o.rmempty = false;
o = s.option(form.Value, 'hostname', _('Device Name'), _("Leave blank to use the device's hostname."));
o = s.taboption('advance',form.Value, 'hostname', _('Device Name'), _("Leave blank to use the device's hostname."));
o.default = '';
o.rmempty = true;
o = s.option(form.Flag, 'acceptDNS', _('Accept DNS'), _('Accept DNS configuration from the Tailscale admin console.'));
o = s.taboption('advance',form.Flag, 'acceptDNS', _('Accept DNS'), _('Accept DNS configuration from the Tailscale admin console.'));
o.default = o.enabled;
o.rmempty = false;
o = s.option(form.Flag, 'advertiseExitNode', _('Exit Node'), _('Offer to be an exit node for outbound internet traffic from the Tailscale network.'));
o = s.taboption('advance',form.Flag, 'advertiseExitNode', _('Exit Node'), _('Offer to be an exit node for outbound internet traffic from the Tailscale network.'));
o.default = o.disabled;
o.rmempty = false;
o = s.option(form.Flag, 's2s', _('Site To Site'), _('Use site-to-site layer 3 networking to connect two subnets on your Tailscale network with each other.'));
o.default = o.disabled;
o.depends('acceptRoutes', '1');
o.rmempty = false;
o = s.option(form.Value, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24'));
o = s.taboption('advance',form.Value, 'advertiseRoutes', _('Expose Subnets'), _('Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>.'));
o.default = '';
o.depends('acceptRoutes', '1');
o.rmempty = true;
o = s.option(form.MultiValue, 'access', _('Access Control'));
o = s.taboption('advance',form.Flag, 's2s', _('Site To Site'), _('Use site-to-site layer 3 networking to connect subnets on the Tailscale network.'));
o.default = o.disabled;
o.depends('acceptRoutes', '1');
o.rmempty = false;
o = s.taboption('advance',form.MultiValue, 'access', _('Access Control'));
o.value('tsfwlan', _('Tailscale access LAN'));
o.value('tsfwwan', _('Tailscale access WAN'));
o.value('lanfwts', _('LAN access Tailscale'));
o.value('wanfwts', _('WAN access Tailscale'));
o.default = "tsfwlan tsfwwan lanfwts";
o.depends('acceptRoutes', '1');
o.rmempty = false;
s.tab('extra',_('Extra Settings'));
o = s.taboption('extra', form.DynamicList, 'flags', _('Additional Flags'), String.format(_('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.'), '<a href="https://tailscale.com/kb/1080/cli#up" target="_blank">' + _('Available flags') + '</a>'));
s = m.section(form.NamedSection, 'settings', 'config');
s.title = _('Custom Server Settings');
s.description = String.format(_('Use %s to deploy a private server.'), '<a href="https://github.com/juanfont/headscale" target="_blank">headscale</a>');

View File

@@ -1,23 +1,27 @@
msgid ""
msgstr "Content-Type: text/plain; charset=UTF-8"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
msgid "Accept DNS"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
msgid "Accept DNS configuration from the Tailscale admin console."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
msgid "Accept subnet routes that other nodes advertise."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
msgid "Access Control"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Additional Flags"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148
msgid "Advanced Settings"
msgstr ""
@@ -25,14 +29,18 @@ msgstr ""
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:194
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "Auth Key"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
msgid "Auto Mesh"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Available flags"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
msgid "Basic Settings"
msgstr ""
@@ -42,11 +50,11 @@ msgstr ""
msgid "Collecting data ..."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:187
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
msgid "Custom Server Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
msgid "Device Name"
msgstr ""
@@ -54,20 +62,20 @@ msgstr ""
msgid "Enable"
msgstr ""
#: 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:163
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Exit Node"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:172
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
msgid "Expose Subnets"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:172
msgid "Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
msgid "Expose physical network routes into Tailscale, e.g. <code>10.0.0.0/24</code>."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:184
msgid "Extra Settings"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
@@ -98,14 +106,18 @@ msgstr ""
msgid "Interface Name"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
msgid "LAN access Tailscale"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
msgid "Leave blank to use the device's hostname."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
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 ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Logging program activities."
msgstr ""
@@ -151,14 +163,10 @@ msgstr ""
msgid "No logs available"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr ""
#: 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:125
msgid "Port"
msgstr ""
@@ -167,7 +175,7 @@ msgstr ""
msgid "RUNNING"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:192
msgid "Server Address"
msgstr ""
@@ -175,10 +183,18 @@ msgstr ""
msgid "Set the Tailscale port number."
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 "Site To Site"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "StdErr Log"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "StdOut Log"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
@@ -187,11 +203,11 @@ msgstr ""
msgid "Tailscale"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Tailscale access LAN"
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "Tailscale access WAN"
msgstr ""
@@ -224,15 +240,15 @@ msgstr ""
msgid "Unable to get interface info: %s."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:188
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
msgid "Use %s to deploy a private server."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Use site-to-site layer 3 networking to connect two subnets on your Tailscale network with each other."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr ""
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
msgid "WAN access Tailscale"
msgstr ""

View File

@@ -7,52 +7,60 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
msgid "Accept DNS"
msgstr "允许DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
msgid "Accept DNS configuration from the Tailscale admin console."
msgstr "使用 Tailscale 管理控制台的 DNS 配置。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他节点广播的子网路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
msgid "Access Control"
msgstr "访问控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Additional Flags"
msgstr "参数列表"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148
msgid "Advanced Settings"
msgstr "高级设置"
msgstr "高级选项"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:99
msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否注销当前登录并且解绑当前设备?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "Auth Key"
msgstr "认证密钥"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
msgid "Auto Mesh"
msgstr "自动组网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Available flags"
msgstr "可用参数"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
msgid "Basic Settings"
msgstr "基础设置"
msgstr "基础选项"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Collecting data ..."
msgstr "正在收集数据..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:187
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
msgid "Custom Server Settings"
msgstr "自定义服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
msgid "Device Name"
msgstr "设备名称"
@@ -60,21 +68,21 @@ msgstr "设备名称"
msgid "Enable"
msgstr "启用"
#: 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:163
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Exit Node"
msgstr "出口节点"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:172
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
msgid "Expose Subnets"
msgstr "公开网段"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:172
msgid "Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24"
msgstr "广播子网路由至 Tailscale例如10.0.0.0/24"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
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>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:184
msgid "Extra Settings"
msgstr "附加选项"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Firewall Mode"
@@ -104,21 +112,25 @@ msgstr "接口信息"
msgid "Interface Name"
msgstr "接口名称"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
msgid "LAN access Tailscale"
msgstr "本地局域网访问虚拟局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
msgid "Leave blank to use the device's hostname."
msgstr "留空以使用设备的主机名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
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 。"
#: 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:144
msgid "Logging program errors and exceptions."
msgstr "记录程序错误和异常信息。"
msgstr "记录程序错误和警告信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "Login Status"
@@ -157,14 +169,10 @@ msgstr "无在线接口。"
msgid "No logs available"
msgstr "日志不存在"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "作为 Tailscale 广域网出口节点。"
#: 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:125
msgid "Port"
msgstr "端口"
@@ -173,7 +181,7 @@ msgstr "端口"
msgid "RUNNING"
msgstr "运行中"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:192
msgid "Server Address"
msgstr "服务器地址"
@@ -181,10 +189,18 @@ msgstr "服务器地址"
msgid "Set the Tailscale port number."
msgstr "设置 Tailscale 端口号。"
#: 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 "Site To Site"
msgstr "子网互通"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "StdErr Log"
msgstr "错误日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "StdOut Log"
msgstr "运行日志"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:53
@@ -193,11 +209,11 @@ msgstr "子网互通"
msgid "Tailscale"
msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Tailscale access LAN"
msgstr "虚拟局域网访问本地局域网"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "Tailscale access WAN"
msgstr "虚拟局域网访问本地广域网"
@@ -230,15 +246,15 @@ msgstr "无法获取接口 %s 的信息:%s。"
msgid "Unable to get interface info: %s."
msgstr "无法获取接口信息:%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:188
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有服务器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Use site-to-site layer 3 networking to connect two subnets on your Tailscale network with each other."
msgstr "使用站点到站点的三层网络连接 Tailscale 中的两个子网。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站点到站点的三层网络连接 Tailscale 中的子网。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
msgid "WAN access Tailscale"
msgstr "本地广域网访问虚拟局域网"

View File

@@ -7,52 +7,60 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
msgid "Accept DNS"
msgstr "允許DNS"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:159
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:158
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:151
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
msgid "Accept subnet routes that other nodes advertise."
msgstr "接受其他節點廣播的子網路由。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:176
msgid "Access Control"
msgstr "訪問控制"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:149
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Additional Flags"
msgstr "參數列表"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:148
msgid "Advanced Settings"
msgstr "高級設置"
msgstr "高級選項"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:99
msgid "Are you sure you want to logout and unbind the current device?"
msgstr "是否註銷當前登錄並且解綁當前設備?"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:194
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:196
msgid "Auth Key"
msgstr "認證密鑰"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:151
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:150
msgid "Auto Mesh"
msgstr "自動組網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
msgid "Available flags"
msgstr "可用參數"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:113
msgid "Basic Settings"
msgstr "基礎設置"
msgstr "基礎選項"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:108
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:122
msgid "Collecting data ..."
msgstr "正在收集數據..."
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:187
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:189
msgid "Custom Server Settings"
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:154
msgid "Device Name"
msgstr "設備名稱"
@@ -60,21 +68,21 @@ msgstr "設備名稱"
msgid "Enable"
msgstr "啟用"
#: 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:163
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Exit Node"
msgstr "出口節點"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:172
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
msgid "Expose Subnets"
msgstr "公開網段"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:172
msgid "Expose physical network routes onto Tailscale. e.g. 10.0.0.0/24"
msgstr "廣播子網路由至 Tailscale例如10.0.0.0/24"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:166
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>。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:184
msgid "Extra Settings"
msgstr "附加選項"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:134
msgid "Firewall Mode"
@@ -104,21 +112,25 @@ msgstr "接口信息"
msgid "Interface Name"
msgstr "接口名稱"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
msgid "LAN access Tailscale"
msgstr "本地局域網訪問虛擬局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:155
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:154
msgid "Leave blank to use the device's hostname."
msgstr "留空以使用設備的主機名。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:186
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 。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "Logging program activities."
msgstr "記錄程運行信息。"
msgstr "記錄程運行信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "Logging program errors and exceptions."
msgstr "記錄程錯誤和異常信息。"
msgstr "記錄程錯誤和警告信息。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:119
msgid "Login Status"
@@ -157,14 +169,10 @@ msgstr "無在線接口。"
msgid "No logs available"
msgstr "日誌不存在"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:163
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:162
msgid "Offer to be an exit node for outbound internet traffic from the Tailscale network."
msgstr "作為 Tailscale 廣域網出口節點。"
#: 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:125
msgid "Port"
msgstr "端口"
@@ -173,17 +181,25 @@ msgstr "端口"
msgid "RUNNING"
msgstr "運行中"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:192
msgid "Server Address"
msgstr "服器地址"
msgstr "服器地址"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:125
msgid "Set the Tailscale port number."
msgstr "設置 Tailscale 端口號。"
#: 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 "Site To Site"
msgstr "子網互"
msgstr "子網互"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:144
msgid "StdErr Log"
msgstr "錯誤日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:140
msgid "StdOut Log"
msgstr "運行日誌"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:72
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:51
@@ -193,18 +209,18 @@ msgstr "子網互聯"
msgid "Tailscale"
msgstr "Tailscale"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:177
msgid "Tailscale access LAN"
msgstr "虛擬局域網訪問本地局域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:179
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:178
msgid "Tailscale access WAN"
msgstr "虛擬局域網訪問本地廣域網"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/interface.js:73
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:85
msgid "Tailscale is a cross-platform and easy to use virtual LAN."
msgstr "Tailscale 是一個跨平且易於使用的虛擬局域網 VPN。"
msgstr "Tailscale 是一個跨平且易於使用的虛擬局域網 VPN。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:130
msgid "The working directory contains config files, audit logs, and runtime info."
@@ -230,15 +246,15 @@ msgstr "無法獲取接口 %s 的信息:%s。"
msgid "Unable to get interface info: %s."
msgstr "無法獲取接口信息:%s。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:188
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:190
msgid "Use %s to deploy a private server."
msgstr "使用 %s 部署私有服器"
msgstr "使用 %s 部署私有服器"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:167
msgid "Use site-to-site layer 3 networking to connect two subnets on your Tailscale network with each other."
msgstr "使用站點到站點的三層網路連線 Tailscale 中的兩個子網。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:171
msgid "Use site-to-site layer 3 networking to connect subnets on the Tailscale network."
msgstr "使用站點到站點的三層網路連線 Tailscale 中的子網。"
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:181
#: luci-app-tailscale/htdocs/luci-static/resources/view/tailscale/setting.js:180
msgid "WAN access Tailscale"
msgstr "本地廣域網訪問虛擬局域網"

View File

@@ -20,7 +20,7 @@ section_enabled() {
custom_instance() {
local cfg="$1"
local acceptRoutes hostname acceptDNS advertiseExitNode s2s advertiseRoutes loginServer authkey std_out std_err
local acceptRoutes hostname acceptDNS advertiseExitNode advertiseRoutes s2s flags loginServer authkey std_out std_err
local ARGS=" up --reset"
if ! section_enabled "$cfg"; then
@@ -32,8 +32,9 @@ custom_instance() {
config_get hostname $cfg 'hostname'
config_get_bool acceptDNS $cfg 'acceptDNS'
config_get_bool advertiseExitNode $cfg 'advertiseExitNode'
config_get_bool s2s $cfg 's2s'
config_get advertiseRoutes $cfg 'advertiseRoutes'
config_get_bool s2s $cfg 's2s'
config_get flags $cfg 'flags'
config_get loginServer $cfg 'loginServer'
config_get authkey $cfg 'authkey'
config_get_bool std_out $cfg 'log_stdout'
@@ -43,8 +44,9 @@ custom_instance() {
[ -n "$hostname" ] && ARGS="$ARGS --hostname=$hostname"
[ "$acceptDNS" = "0" ] && ARGS="$ARGS --accept-dns=false"
[ "$advertiseExitNode" = "1" ] && ARGS="$ARGS --advertise-exit-node"
[ "$s2s" = "1" ] && ARGS="$ARGS --snat-subnet-routes=false --stateful-filtering=false"
[ -n "$advertiseRoutes" ] && ARGS="$ARGS --advertise-routes=$advertiseRoutes"
[ "$s2s" = "1" ] && ARGS="$ARGS --snat-subnet-routes=false --stateful-filtering=false"
[ -n "$flags" ] && ARGS="$ARGS $flags"
[ -n "$loginServer" ] && ARGS="$ARGS --login-server=$loginServer"
[ -n "$authkey" ] && ARGS="$ARGS --authkey=$authkey"