luci-app-tailscale-community: update and fix dep
authortokisaki galaxy <redacted>
Fri, 1 May 2026 03:05:23 +0000 (11:05 +0800)
committerPaul Donald <redacted>
Tue, 5 May 2026 10:42:55 +0000 (13:42 +0300)
sync linguistic files, fix upstream ip deps rename
to ip-full, add temporary disable func, fix exit
node firewall config

Signed-off-by: tokisaki galaxy <redacted>
applications/luci-app-tailscale-community/Makefile
applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js
applications/luci-app-tailscale-community/po/es/community.po
applications/luci-app-tailscale-community/po/templates/community.pot
applications/luci-app-tailscale-community/po/zh_Hans/community.po
applications/luci-app-tailscale-community/po/zh_Hant/community.po [new file with mode: 0644]
applications/luci-app-tailscale-community/root/etc/init.d/tailscale-settings
applications/luci-app-tailscale-community/root/usr/share/rpcd/ucode/tailscale.uc

index d448315a1a2f9e388b5932037b94082c06b3a068..9a8ab86a23e18e199aa1d75f882be866c8fe0ac1 100644 (file)
@@ -4,7 +4,7 @@ LUCI_TITLE:=LuCI support for Tailscale
 LUCI_URL:=https://github.com/tokisaki-galaxy/luci-app-tailscale-community
 PKG_DESCRIPTION:=Provides a LuCI Web management interface for Tailscale, allowing viewing status, configuring nodes and daemons.
 PKG_MAINTAINER:=Tokisaki-Galaxy <moebest@outlook.jp>
-LUCI_DEPENDS:=+tailscale +ip +luci-base
+LUCI_DEPENDS:=+tailscale +ip-full +luci-base
 LUCI_PKGARCH:=all
 
 include ../../luci.mk
index f0d1f2c9a183eb272666ec50c17f9be3c8232588..5de9932eb85395a423d1432b6e4f113645ce4e32 100644 (file)
@@ -15,6 +15,7 @@ const callSetupFirewall = rpc.declare({ object: 'tailscale', method: 'setup_fire
 let map;
 
 const tailscaleSettingsConf = [
+       [form.Flag, 'service_enabled', _('Enable Tailscale Service'), _('Enable or disable the Tailscale service. When disabled, the service will be stopped and the process will be killed.'), { rmempty: false }],
        [form.ListValue, 'fw_mode', _('Firewall Mode'), _('Select the firewall backend for Tailscale to use. Requires service restart to take effect.'), {values: ['nftables','iptables'],rmempty: false}],
        [form.Flag, 'accept_routes', _('Accept Routes'), _('Allow accepting routes announced by other nodes.'), { rmempty: false }],
        [form.Flag, 'advertise_exit_node', _('Advertise Exit Node'), _('Declare this device as an Exit Node.'), { rmempty: false }],
@@ -310,6 +311,7 @@ return view.extend({
                                if (uci.get('tailscale', 'settings') === null) {
                                        // No existing settings found; initialize UCI with RPC settings
                                        uci.add('tailscale', 'settings', 'settings');
+                                       uci.set('tailscale', 'settings', 'service_enabled', '1');
                                        uci.set('tailscale', 'settings', 'fw_mode', 'nftables');
                                        uci.set('tailscale', 'settings', 'accept_routes', (settings_from_rpc.accept_routes ? '1' : '0'));
                                        uci.set('tailscale', 'settings', 'advertise_exit_node', ((settings_from_rpc.advertise_exit_node || false) ? '1' : '0'));
index 45cc00c5e66f8089df0269fefebed1d2b2f76462..20597eecd9b0bedad48fc9fff834bc76904a0478 100644 (file)
@@ -11,55 +11,55 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 3.8\n"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:34
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
 msgid "(Experimental) Reduce Memory Usage"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:442
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
 msgid "1. Select \"Accept Routes\" (to access remote devices)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:443
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
 msgid ""
 "2. In \"Advertise Routes\", select your local subnet (to allow remote "
 "devices to access this LAN)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:446
 msgid "3. Click \"Auto Configure Firewall\" (to allow traffic forwarding)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
 msgid "Accept Routes"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:451
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:453
 msgid "Account Settings"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
 msgid "Advertise Exit Node"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:410
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
 msgid "Advertise Routes"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:410
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
 msgid ""
 "Advertise subnet routes behind this device. Select from the detected subnets "
 "below or enter custom routes (comma-separated)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
 msgid "Allow LAN Access"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
 msgid "Allow accepting routes announced by other nodes."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
 msgid "Allow connecting to this device through the SSH function of Tailscale."
 msgstr ""
 
@@ -67,444 +67,454 @@ msgstr ""
 msgid "Allow user access to tailscale"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:525
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:527
 msgid "Are you sure you want to log out?"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:418
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
 msgid "Auto Configure Firewall"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:532
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:534
 msgid "Cancel"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:476
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:478
 msgid "Click to Log out account on this device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:455
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:457
 msgid "Click to get a login URL for this device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:166
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:243
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:365
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:167
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:244
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:367
 msgid "Collecting data ..."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:551
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:553
 msgid "Confirm Logout"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
 msgid "Connection Info"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:488
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:490
 msgid ""
 "Could not open a new tab. Please check if your browser or an extension "
 "blocked the pop-up."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:460
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
 msgid "Custom Login Server"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:468
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
 msgid "Custom Login Server Auth Key"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
 msgid "Declare this device as an Exit Node."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:554
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:556
 msgid "Devices List"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
 msgid "Disable MagicDNS"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
 msgid "Disable SNAT"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
 msgid ""
 "Disable Source NAT (SNAT) for traffic to advertised routes. Most users "
 "should leave this unchecked."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "Disabled"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:479
 msgid "Disconnect from Tailscale and expire current node key."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
 msgid "Enable Peer Relay"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
 msgid "Enable Tailscale SSH"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid "Enable Tailscale Service"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
 msgid "Enable Web Interface"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid ""
+"Enable or disable the Tailscale service. When disabled, the service will be "
+"stopped and the process will be killed."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
 msgid ""
 "Enable this device as a Peer Relay server. Requires a public IP and an UDP "
 "port open on the router."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "Enabled"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:34
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
 msgid ""
 "Enabling this option can reduce memory usage, but it may sacrifice some "
 "performance (set GOGC=10)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:513
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
 msgid "Error"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:147
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
 msgid "Error caching DERP region map: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:150
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
 msgid "Error fetching DERP region map: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:120
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
 msgid "Error reading cached DERP region map: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:419
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
 msgid ""
 "Essential configuration for Subnet Routing (Site-to-Site) and Exit Node "
 "features."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:386
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
 msgid "Exit Node"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
 msgid ""
 "Expose a web interface on port 5252 for managing this node over Tailscale."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:430
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:432
 msgid "Failed to configure firewall: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:514
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:516
 msgid "Failed to get login URL. You may close this tab."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:519
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
 msgid "Failed to get login URL: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:517
 msgid "Failed to get login URL: Invalid response from server."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
 msgid "Firewall Mode"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:427
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:429
 msgid "Firewall configuration applied."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:374
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:376
 msgid "General Settings"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
 msgid "Hostname"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:437
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:439
 msgid "How to enable Site-to-Site?"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:458
 msgid ""
 "If the timeout is displayed, you can refresh the page and click Login again."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:472
 msgid ""
 "If you are using custom login server but not providing an Auth Key, will "
 "redirect to the login page without pre-filling the key."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:90
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:91
 msgid "Invalid Date"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:422
 msgid ""
 "It automatically creates the tailscale interface, sets up firewall zones for "
 "LAN <-> Tailscale forwarding,"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:93
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:94
 msgid "Just now"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:205
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:206
 msgid "LOGGED OUT"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:268
 msgid "Last Seen"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:464
 msgid "Leave blank for default Tailscale control plane."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:538
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
 msgid "Logging out..."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:454
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
 msgid "Login"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:475
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:548
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:550
 msgid "Logout"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:545
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
 msgid "Logout failed: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:87
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
 msgid "N/A"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:217
 msgid "NOT RUNNING"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:256
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:257
 msgid "No peer devices found."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:387
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:389
 msgid "None"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:89
 msgid "Now"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
 msgid "OS"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
 msgid "Offline"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
 msgid "Online"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:461
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:463
 msgid ""
 "Optional: Specify a custom control server URL (e.g., a Headscale instance, "
 "%s)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:469
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:471
 msgid ""
 "Optional: Specify an authentication key for the custom control server. Leave "
 "blank if not required."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:378
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:380
 msgid "Peer Relay Port"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:207
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:208
 msgid "Please use the login button in the settings below to authenticate."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:504
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:538
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
 msgid "Please wait."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:224
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
 msgid "RUNNING"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
 msgid "RX"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:504
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
 msgid "Requesting Login URL..."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:495
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:497
 msgid "Requesting Tailscale login URL... Please wait."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:386
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
 msgid ""
 "Select an exit node from the list. If enabled, Allow LAN Access is enabled "
 "implicitly."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
 msgid ""
 "Select the firewall backend for Tailscale to use. Requires service restart "
 "to take effect."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:195
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:203
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:215
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:224
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:204
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
 msgid "Service Status"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
 msgid "Shields Up"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:260
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
 msgid "Status"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:542
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:544
 msgid "Successfully logged out."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:197
 msgid "TAILSCALE NOT FOUND"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "TUN Mode"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
 msgid "TX"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:230
 msgid "Tailnet Name"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:339
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
 #: applications/luci-app-tailscale-community/root/usr/share/luci/menu.d/luci-app-tailscale-community.json:3
 msgid "Tailscale"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:172
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:173
 msgid "Tailscale Health Check: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
 msgid "Tailscale IP"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
 msgid "Tailscale IPv4"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
 msgid "Tailscale IPv6"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:494
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
 msgid "Tailscale Login"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:339
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
 msgid ""
 "Tailscale is a mesh VPN solution that makes it easy to connect your devices "
 "securely. This configuration page allows you to manage Tailscale settings on "
 "your OpenWrt device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:247
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:248
 msgid "Tailscale status error"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
 msgid "This can take up to 30 seconds."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:526
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:528
 msgid ""
 "This will disconnect this device from your Tailnet and require you to re-"
 "authenticate."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:379
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:381
 msgid ""
 "UDP port for the Peer Relay service. Open this port on your router firewall/"
 "NAT."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:120
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:147
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:150
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:519
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:545
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
 msgid "Unknown error"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
 msgid "Use system DNS instead of MagicDNS."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
 msgid "Version"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
 msgid ""
 "When enabled, blocks all inbound connections from the Tailscale network."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
 msgid "When using the exit node, access to the local LAN is allowed."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:447
 msgid ""
 "[Important] Log in to the Tailscale admin console and manually enable "
 "\"Subnet Routes\" for this device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:96
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:97
 msgid "ago"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:423
 msgid ""
 "and enables Masquerading and MSS Clamping (MTU fix) to ensure stable "
 "connections."
index d7fe8cec25f8db2b9cdbc20776b7c13ae75d0916..1289c7dde33eb2fe8aaa7b5f982216a4b1c1a3da 100644 (file)
@@ -1,55 +1,55 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:34
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
 msgid "(Experimental) Reduce Memory Usage"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:442
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
 msgid "1. Select \"Accept Routes\" (to access remote devices)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:443
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
 msgid ""
 "2. In \"Advertise Routes\", select your local subnet (to allow remote "
 "devices to access this LAN)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:446
 msgid "3. Click \"Auto Configure Firewall\" (to allow traffic forwarding)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
 msgid "Accept Routes"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:451
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:453
 msgid "Account Settings"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
 msgid "Advertise Exit Node"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:410
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
 msgid "Advertise Routes"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:410
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
 msgid ""
 "Advertise subnet routes behind this device. Select from the detected subnets "
 "below or enter custom routes (comma-separated)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
 msgid "Allow LAN Access"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
 msgid "Allow accepting routes announced by other nodes."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
 msgid "Allow connecting to this device through the SSH function of Tailscale."
 msgstr ""
 
@@ -57,444 +57,454 @@ msgstr ""
 msgid "Allow user access to tailscale"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:525
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:527
 msgid "Are you sure you want to log out?"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:418
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
 msgid "Auto Configure Firewall"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:532
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:534
 msgid "Cancel"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:476
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:478
 msgid "Click to Log out account on this device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:455
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:457
 msgid "Click to get a login URL for this device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:166
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:243
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:365
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:167
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:244
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:367
 msgid "Collecting data ..."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:551
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:553
 msgid "Confirm Logout"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
 msgid "Connection Info"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:488
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:490
 msgid ""
 "Could not open a new tab. Please check if your browser or an extension "
 "blocked the pop-up."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:460
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
 msgid "Custom Login Server"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:468
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
 msgid "Custom Login Server Auth Key"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
 msgid "Declare this device as an Exit Node."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:554
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:556
 msgid "Devices List"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
 msgid "Disable MagicDNS"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
 msgid "Disable SNAT"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
 msgid ""
 "Disable Source NAT (SNAT) for traffic to advertised routes. Most users "
 "should leave this unchecked."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "Disabled"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:479
 msgid "Disconnect from Tailscale and expire current node key."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
 msgid "Enable Peer Relay"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
 msgid "Enable Tailscale SSH"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid "Enable Tailscale Service"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
 msgid "Enable Web Interface"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid ""
+"Enable or disable the Tailscale service. When disabled, the service will be "
+"stopped and the process will be killed."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
 msgid ""
 "Enable this device as a Peer Relay server. Requires a public IP and an UDP "
 "port open on the router."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "Enabled"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:34
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
 msgid ""
 "Enabling this option can reduce memory usage, but it may sacrifice some "
 "performance (set GOGC=10)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:513
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
 msgid "Error"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:147
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
 msgid "Error caching DERP region map: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:150
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
 msgid "Error fetching DERP region map: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:120
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
 msgid "Error reading cached DERP region map: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:419
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
 msgid ""
 "Essential configuration for Subnet Routing (Site-to-Site) and Exit Node "
 "features."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:386
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
 msgid "Exit Node"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
 msgid ""
 "Expose a web interface on port 5252 for managing this node over Tailscale."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:430
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:432
 msgid "Failed to configure firewall: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:514
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:516
 msgid "Failed to get login URL. You may close this tab."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:519
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
 msgid "Failed to get login URL: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:517
 msgid "Failed to get login URL: Invalid response from server."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
 msgid "Firewall Mode"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:427
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:429
 msgid "Firewall configuration applied."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:374
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:376
 msgid "General Settings"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
 msgid "Hostname"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:437
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:439
 msgid "How to enable Site-to-Site?"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:458
 msgid ""
 "If the timeout is displayed, you can refresh the page and click Login again."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:472
 msgid ""
 "If you are using custom login server but not providing an Auth Key, will "
 "redirect to the login page without pre-filling the key."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:90
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:91
 msgid "Invalid Date"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:422
 msgid ""
 "It automatically creates the tailscale interface, sets up firewall zones for "
 "LAN <-> Tailscale forwarding,"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:93
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:94
 msgid "Just now"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:205
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:206
 msgid "LOGGED OUT"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:268
 msgid "Last Seen"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:464
 msgid "Leave blank for default Tailscale control plane."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:538
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
 msgid "Logging out..."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:454
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
 msgid "Login"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:475
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:548
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:550
 msgid "Logout"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:545
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
 msgid "Logout failed: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:87
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
 msgid "N/A"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:217
 msgid "NOT RUNNING"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:256
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:257
 msgid "No peer devices found."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:387
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:389
 msgid "None"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:89
 msgid "Now"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
 msgid "OS"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
 msgid "Offline"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
 msgid "Online"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:461
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:463
 msgid ""
 "Optional: Specify a custom control server URL (e.g., a Headscale instance, "
 "%s)."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:469
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:471
 msgid ""
 "Optional: Specify an authentication key for the custom control server. Leave "
 "blank if not required."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:378
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:380
 msgid "Peer Relay Port"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:207
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:208
 msgid "Please use the login button in the settings below to authenticate."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:504
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:538
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
 msgid "Please wait."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:224
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
 msgid "RUNNING"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
 msgid "RX"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:504
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
 msgid "Requesting Login URL..."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:495
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:497
 msgid "Requesting Tailscale login URL... Please wait."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:386
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
 msgid ""
 "Select an exit node from the list. If enabled, Allow LAN Access is enabled "
 "implicitly."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
 msgid ""
 "Select the firewall backend for Tailscale to use. Requires service restart "
 "to take effect."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:195
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:203
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:215
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:224
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:204
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
 msgid "Service Status"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
 msgid "Shields Up"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:260
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
 msgid "Status"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:542
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:544
 msgid "Successfully logged out."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:197
 msgid "TAILSCALE NOT FOUND"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "TUN Mode"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
 msgid "TX"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:230
 msgid "Tailnet Name"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:339
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
 #: applications/luci-app-tailscale-community/root/usr/share/luci/menu.d/luci-app-tailscale-community.json:3
 msgid "Tailscale"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:172
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:173
 msgid "Tailscale Health Check: %s"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
 msgid "Tailscale IP"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
 msgid "Tailscale IPv4"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
 msgid "Tailscale IPv6"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:494
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
 msgid "Tailscale Login"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:339
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
 msgid ""
 "Tailscale is a mesh VPN solution that makes it easy to connect your devices "
 "securely. This configuration page allows you to manage Tailscale settings on "
 "your OpenWrt device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:247
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:248
 msgid "Tailscale status error"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
 msgid "This can take up to 30 seconds."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:526
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:528
 msgid ""
 "This will disconnect this device from your Tailnet and require you to re-"
 "authenticate."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:379
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:381
 msgid ""
 "UDP port for the Peer Relay service. Open this port on your router firewall/"
 "NAT."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:120
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:147
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:150
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:519
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:545
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
 msgid "Unknown error"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
 msgid "Use system DNS instead of MagicDNS."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
 msgid "Version"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
 msgid ""
 "When enabled, blocks all inbound connections from the Tailscale network."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
 msgid "When using the exit node, access to the local LAN is allowed."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:447
 msgid ""
 "[Important] Log in to the Tailscale admin console and manually enable "
 "\"Subnet Routes\" for this device."
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:96
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:97
 msgid "ago"
 msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:423
 msgid ""
 "and enables Masquerading and MSS Clamping (MTU fix) to ensure stable "
 "connections."
index 73e1beddb91fd61e20539e35dd38d3ce0eb88275..8863c90f646bb8851642b0a532e183e635172820 100644 (file)
@@ -1,56 +1,56 @@
 msgid ""
 msgstr "Content-Type: text/plain; charset=UTF-8\n"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:34
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
 msgid "(Experimental) Reduce Memory Usage"
 msgstr "(实验性) 减少内存使用"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:442
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
 msgid "1. Select \"Accept Routes\" (to access remote devices)."
 msgstr "1. 勾选 接受路由 (接受远程设备访问)。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:443
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
 msgid ""
 "2. In \"Advertise Routes\", select your local subnet (to allow remote "
 "devices to access this LAN)."
 msgstr "2. 在 通告路由 选择本设备的局域网段 (让远程设备能访问你)。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:446
 msgid "3. Click \"Auto Configure Firewall\" (to allow traffic forwarding)."
 msgstr "3. 点击 自动配置防火墙 (打通防火墙转发)。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
 msgid "Accept Routes"
 msgstr "接受路由"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:451
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:453
 msgid "Account Settings"
 msgstr "账户设置"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
 msgid "Advertise Exit Node"
 msgstr "通告出口节点"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:410
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
 msgid "Advertise Routes"
 msgstr "通告路由"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:410
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
 msgid ""
 "Advertise subnet routes behind this device. Select from the detected subnets "
 "below or enter custom routes (comma-separated)."
 msgstr ""
 "通告此设备后的子网路由。从下面的子网中选择,或输入自定义路由 (逗号分隔)。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
 msgid "Allow LAN Access"
 msgstr "允许局域网访问"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
 msgid "Allow accepting routes announced by other nodes."
 msgstr "允许接受由其他节点通告的路由。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
 msgid "Allow connecting to this device through the SSH function of Tailscale."
 msgstr "允许通过 Tailscale 的 SSH 功能连接到此设备。"
 
@@ -58,186 +58,198 @@ msgstr "允许通过 Tailscale 的 SSH 功能连接到此设备。"
 msgid "Allow user access to tailscale"
 msgstr "允许用户访问 Tailscale"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:525
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:527
 msgid "Are you sure you want to log out?"
 msgstr "您确定要登出吗?"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:418
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
 msgid "Auto Configure Firewall"
 msgstr "自动配置防火墙"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:532
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:534
 msgid "Cancel"
 msgstr "取消"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:476
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:478
 msgid "Click to Log out account on this device."
 msgstr "点击以登出此设备上的账户。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:455
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:457
 msgid "Click to get a login URL for this device."
 msgstr "点击获取此设备的登录 URL。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:166
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:243
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:365
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:167
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:244
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:367
 msgid "Collecting data ..."
 msgstr "正在收集数据..."
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:551
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:553
 msgid "Confirm Logout"
 msgstr "确认登出"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
 msgid "Connection Info"
 msgstr "连接信息"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:488
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:490
 msgid ""
 "Could not open a new tab. Please check if your browser or an extension "
 "blocked the pop-up."
 msgstr "无法打开新标签页。请检查您的浏览器或扩展程序是否阻止了弹出窗口。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:460
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
 msgid "Custom Login Server"
 msgstr "自定义登录服务器"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:468
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
 msgid "Custom Login Server Auth Key"
 msgstr "自定义登录服务器认证密钥"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
 msgid "Declare this device as an Exit Node."
 msgstr "将此设备声明为出口节点。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:554
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:556
 msgid "Devices List"
-msgstr ""
+msgstr "设备列表"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
 msgid "Disable MagicDNS"
 msgstr "禁用 MagicDNS"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
 msgid "Disable SNAT"
 msgstr "禁用 SNAT"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
 msgid ""
 "Disable Source NAT (SNAT) for traffic to advertised routes. Most users "
 "should leave this unchecked."
 msgstr "为通告路由的流量禁用源地址转换 (SNAT)。大多数用户应保持此项不勾选。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "Disabled"
 msgstr "已禁用"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:479
 msgid "Disconnect from Tailscale and expire current node key."
 msgstr "从 Tailscale 断开连接并使当前节点密钥过期。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
 msgid "Enable Peer Relay"
-msgstr ""
+msgstr "启用节点中继"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
 msgid "Enable Tailscale SSH"
 msgstr "启用 Tailscale SSH"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid "Enable Tailscale Service"
+msgstr "Tailscale服务开关"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
 msgid "Enable Web Interface"
 msgstr "启用 Web 界面"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid ""
+"Enable or disable the Tailscale service. When disabled, the service will be "
+"stopped and the process will be killed."
+msgstr "启用或禁用Tailscale服务。禁用后,服务将被停止,当前进程将被终止。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
 msgid ""
 "Enable this device as a Peer Relay server. Requires a public IP and an UDP "
 "port open on the router."
 msgstr ""
+"将此设备设定为节点中继服务器(DERP)。需要此路由器具备公网IP以及开放一个UDP端"
+"口"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "Enabled"
 msgstr "已启用"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:34
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
 msgid ""
 "Enabling this option can reduce memory usage, but it may sacrifice some "
 "performance (set GOGC=10)."
 msgstr "启用此选项可以减少内存使用,但可能会牺牲一些性能 (设置 GOGC=10)。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:513
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
 msgid "Error"
 msgstr "错误"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:147
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
 msgid "Error caching DERP region map: %s"
 msgstr "缓存 DERP 区域地图时出错: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:150
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
 msgid "Error fetching DERP region map: %s"
 msgstr "获取 DERP 区域地图时出错: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:120
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
 msgid "Error reading cached DERP region map: %s"
 msgstr "读取缓存的 DERP 区域地图时出错: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:419
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
 msgid ""
 "Essential configuration for Subnet Routing (Site-to-Site) and Exit Node "
 "features."
-msgstr "子网路由和出口节点的基本配置。"
+msgstr "子网路由(局域网间互通)和出口节点的基本配置。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:386
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
 msgid "Exit Node"
 msgstr "出口节点"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
 msgid ""
 "Expose a web interface on port 5252 for managing this node over Tailscale."
 msgstr "在端口 5252 上暴露一个 Web 界面,用于通过 Tailscale 管理此节点。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:430
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:432
 msgid "Failed to configure firewall: %s"
 msgstr "获取防火墙设置失败: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:514
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:516
 msgid "Failed to get login URL. You may close this tab."
 msgstr "获取登录 URL 失败。您可以关闭此标签页。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:519
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
 msgid "Failed to get login URL: %s"
 msgstr "获取登录 URL 失败: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:517
 msgid "Failed to get login URL: Invalid response from server."
 msgstr "获取登录 URL 失败: 服务器响应无效。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
 msgid "Firewall Mode"
 msgstr "防火墙模式"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:427
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:429
 msgid "Firewall configuration applied."
 msgstr "已应用防火墙配置"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:374
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:376
 msgid "General Settings"
 msgstr "常规设置"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
 msgid "Hostname"
 msgstr "主机名"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:437
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:439
 msgid "How to enable Site-to-Site?"
-msgstr ""
+msgstr "如何实现站点到站点(即多局域网互通)?"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:458
 msgid ""
 "If the timeout is displayed, you can refresh the page and click Login again."
 msgstr "如果显示超时,您可以刷新页面并再次点击登录。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:472
 msgid ""
 "If you are using custom login server but not providing an Auth Key, will "
 "redirect to the login page without pre-filling the key."
@@ -245,199 +257,197 @@ msgstr ""
 "如果您使用自定义登录服务器但未提供认证密钥,将重定向到登录页面而不会预先填充"
 "密钥。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:90
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:91
 msgid "Invalid Date"
 msgstr "无效日期"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:422
 msgid ""
 "It automatically creates the tailscale interface, sets up firewall zones for "
 "LAN <-> Tailscale forwarding,"
-msgstr ""
-"子网路由和出口节点的基本配置。会自动tailscale接口,设置防火墙区域LAN <-> "
-"Tailscale转发"
+msgstr "将自动创建Tailscale接口并设置防火墙区域用于LAN <-> Tailscale转发"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:93
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:94
 msgid "Just now"
 msgstr "刚才"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:205
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:206
 msgid "LOGGED OUT"
 msgstr "已登出"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:268
 msgid "Last Seen"
 msgstr "上次在线"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:464
 msgid "Leave blank for default Tailscale control plane."
 msgstr "留空以使用默认的 Tailscale 控制平面。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:538
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
 msgid "Logging out..."
 msgstr "正在登出..."
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:454
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
 msgid "Login"
 msgstr "登录"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:475
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:548
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:550
 msgid "Logout"
 msgstr "登出"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:545
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
 msgid "Logout failed: %s"
 msgstr "登出失败: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:87
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
 msgid "N/A"
-msgstr "N/A"
+msgstr "不可用"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:217
 msgid "NOT RUNNING"
 msgstr "未运行"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:256
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:257
 msgid "No peer devices found."
-msgstr "未找到对等设备。"
+msgstr "未找到节点设备。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:387
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:389
 msgid "None"
-msgstr ""
+msgstr ""
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:89
 msgid "Now"
 msgstr "现在"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
 msgid "OS"
 msgstr "操作系统"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
 msgid "Offline"
 msgstr "离线"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:286
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
 msgid "Online"
 msgstr "在线"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:461
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:463
 msgid ""
 "Optional: Specify a custom control server URL (e.g., a Headscale instance, "
 "%s)."
-msgstr ""
+msgstr "可选:指定一个自定义控制服务器 URL (例如,一个 Headscale 实例, %s)。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:469
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:471
 msgid ""
 "Optional: Specify an authentication key for the custom control server. Leave "
 "blank if not required."
 msgstr "可选:为自定义控制服务器指定一个认证密钥。如果不需要,请留空。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:378
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:380
 msgid "Peer Relay Port"
-msgstr ""
+msgstr "DERP端口"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:207
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:208
 msgid "Please use the login button in the settings below to authenticate."
 msgstr "请使用下方设置中的登录按钮进行认证。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:504
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:538
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
 msgid "Please wait."
 msgstr "请稍候。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:224
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
 msgid "RUNNING"
 msgstr "正在运行"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
 msgid "RX"
 msgstr "接收"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:504
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
 msgid "Requesting Login URL..."
 msgstr "正在请求登录 URL..."
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:495
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:497
 msgid "Requesting Tailscale login URL... Please wait."
 msgstr "正在请求 Tailscale 登录 URL... 请稍候。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:386
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
 msgid ""
 "Select an exit node from the list. If enabled, Allow LAN Access is enabled "
 "implicitly."
-msgstr ""
+msgstr "列表中选择出口节点。一旦开启,默认局域网之间可以互访"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
 msgid ""
 "Select the firewall backend for Tailscale to use. Requires service restart "
 "to take effect."
 msgstr "选择 Tailscale 使用的防火墙后端。需要重启服务才能生效。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:195
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:203
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:215
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:224
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:204
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
 msgid "Service Status"
 msgstr "服务状态"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
 msgid "Shields Up"
 msgstr "开启防护 (Shields Up)"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:260
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
 msgid "Status"
 msgstr "状态"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:542
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:544
 msgid "Successfully logged out."
 msgstr "登出成功。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:197
 msgid "TAILSCALE NOT FOUND"
 msgstr "未找到 TAILSCALE"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
 msgid "TUN Mode"
 msgstr "TUN 模式"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
 msgid "TX"
 msgstr "发送"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:230
 msgid "Tailnet Name"
 msgstr "Tailnet 名称"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:339
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
 #: applications/luci-app-tailscale-community/root/usr/share/luci/menu.d/luci-app-tailscale-community.json:3
 msgid "Tailscale"
 msgstr "Tailscale"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:172
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:173
 msgid "Tailscale Health Check: %s"
 msgstr "Tailscale 健康检查: %s"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
 msgid "Tailscale IP"
 msgstr "Tailscale IP"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
 msgid "Tailscale IPv4"
 msgstr "Tailscale IPv4"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
 msgid "Tailscale IPv6"
 msgstr "Tailscale IPv6"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:494
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
 msgid "Tailscale Login"
 msgstr "Tailscale 登录"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:339
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
 msgid ""
 "Tailscale is a mesh VPN solution that makes it easy to connect your devices "
 "securely. This configuration page allows you to manage Tailscale settings on "
@@ -446,66 +456,66 @@ msgstr ""
 "Tailscale 是一个网状 VPN 解决方案,可以轻松地安全连接您的设备。此配置页面允许"
 "您在 OpenWrt 设备上管理 Tailscale 设置。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:247
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:248
 msgid "Tailscale status error"
-msgstr ""
+msgstr "Tailscale 状态异常"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
 msgid "This can take up to 30 seconds."
 msgstr "此过程最多可能需要 30 秒。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:526
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:528
 msgid ""
 "This will disconnect this device from your Tailnet and require you to re-"
 "authenticate."
 msgstr "这将使此设备从您的 Tailnet 断开连接,并需要您重新进行身份验证。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:379
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:381
 msgid ""
 "UDP port for the Peer Relay service. Open this port on your router firewall/"
 "NAT."
-msgstr ""
+msgstr "DERP的UDP端口号。需要在防火墙/NAT规则中开放该端口。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:120
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:147
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:150
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:519
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:545
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
 msgid "Unknown error"
 msgstr "未知错误"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
 msgid "Use system DNS instead of MagicDNS."
 msgstr "使用系统 DNS 而不是 MagicDNS。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
 msgid "Version"
 msgstr "版本"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
 msgid ""
 "When enabled, blocks all inbound connections from the Tailscale network."
 msgstr "启用后,将阻止来自 Tailscale 网络的所有入站连接。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
 msgid "When using the exit node, access to the local LAN is allowed."
 msgstr "使用出口节点时,允许访问本地局域网。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:447
 msgid ""
 "[Important] Log in to the Tailscale admin console and manually enable "
 "\"Subnet Routes\" for this device."
 msgstr "【重要】 登录 Tailscale 控制平面,在设备设置中手动授权子网路由。"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:96
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:97
 msgid "ago"
 msgstr "前"
 
-#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:423
 msgid ""
 "and enables Masquerading and MSS Clamping (MTU fix) to ensure stable "
 "connections."
-msgstr "并启用地址伪装和 MSS钳制确保连接稳定。"
+msgstr "并启用伪装和MSS钳制(MTU修复)功能,以确保连接稳定。"
 
 #~ msgid ""
 #~ "Optional: Specify a custom control server URL (e.g., a Headscale "
diff --git a/applications/luci-app-tailscale-community/po/zh_Hant/community.po b/applications/luci-app-tailscale-community/po/zh_Hant/community.po
new file mode 100644 (file)
index 0000000..0bb011f
--- /dev/null
@@ -0,0 +1,546 @@
+msgid ""
+msgstr "Content-Type: text/plain; charset=UTF-8\n"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
+msgid "(Experimental) Reduce Memory Usage"
+msgstr "(實驗性) 減少記憶體使用"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:444
+msgid "1. Select \"Accept Routes\" (to access remote devices)."
+msgstr "1. 勾選 接受路由 (接受遠端裝置訪問)。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:445
+msgid ""
+"2. In \"Advertise Routes\", select your local subnet (to allow remote "
+"devices to access this LAN)."
+msgstr "2. 在 通告路由 選擇本裝置的區域網段 (讓遠端裝置能訪問你)。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:446
+msgid "3. Click \"Auto Configure Firewall\" (to allow traffic forwarding)."
+msgstr "3. 點選 自動配置防火牆 (打通防火牆轉發)。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+msgid "Accept Routes"
+msgstr "接受路由"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:453
+msgid "Account Settings"
+msgstr "賬戶設定"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+msgid "Advertise Exit Node"
+msgstr "通告出口節點"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
+msgid "Advertise Routes"
+msgstr "通告路由"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:412
+msgid ""
+"Advertise subnet routes behind this device. Select from the detected subnets "
+"below or enter custom routes (comma-separated)."
+msgstr ""
+"通告此裝置後的子網路由。從下面的子網中選擇,或輸入自定義路由 (逗號分隔)。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+msgid "Allow LAN Access"
+msgstr "允許區域網訪問"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:20
+msgid "Allow accepting routes announced by other nodes."
+msgstr "允許接受由其他節點通告的路由。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+msgid "Allow connecting to this device through the SSH function of Tailscale."
+msgstr "允許透過 Tailscale 的 SSH 功能連線到此裝置。"
+
+#: applications/luci-app-tailscale-community/root/usr/share/rpcd/acl.d/luci-app-tailscale-community.json:3
+msgid "Allow user access to tailscale"
+msgstr "允許使用者訪問 Tailscale"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:527
+msgid "Are you sure you want to log out?"
+msgstr "您確定要登出嗎?"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:420
+msgid "Auto Configure Firewall"
+msgstr "自動配置防火牆"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:534
+msgid "Cancel"
+msgstr "取消"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:478
+msgid "Click to Log out account on this device."
+msgstr "點選以登出此裝置上的賬戶。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:457
+msgid "Click to get a login URL for this device."
+msgstr "點選獲取此裝置的登入 URL。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:167
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:244
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:367
+msgid "Collecting data ..."
+msgstr "正在收集資料..."
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:553
+msgid "Confirm Logout"
+msgstr "確認登出"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:265
+msgid "Connection Info"
+msgstr "連線資訊"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:490
+msgid ""
+"Could not open a new tab. Please check if your browser or an extension "
+"blocked the pop-up."
+msgstr "無法開啟新標籤頁。請檢查您的瀏覽器或擴充套件程式是否阻止了彈出視窗。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:462
+msgid "Custom Login Server"
+msgstr "自定義登入伺服器"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:470
+msgid "Custom Login Server Auth Key"
+msgstr "自定義登入伺服器認證金鑰"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:21
+msgid "Declare this device as an Exit Node."
+msgstr "將此裝置宣告為出口節點。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:556
+msgid "Devices List"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+msgid "Disable MagicDNS"
+msgstr "停用 MagicDNS"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+msgid "Disable SNAT"
+msgstr "停用 SNAT"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:24
+msgid ""
+"Disable Source NAT (SNAT) for traffic to advertised routes. Most users "
+"should leave this unchecked."
+msgstr "為通告路由的流量停用源地址轉換 (SNAT)。大多數使用者應保持此項不勾選。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
+msgid "Disabled"
+msgstr "已停用"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:479
+msgid "Disconnect from Tailscale and expire current node key."
+msgstr "從 Tailscale 斷開連線並使當前節點金鑰過期。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
+msgid "Enable Peer Relay"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:26
+msgid "Enable Tailscale SSH"
+msgstr "啟用 Tailscale SSH"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid "Enable Tailscale Service"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+msgid "Enable Web Interface"
+msgstr "啟用 Web 介面"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:18
+msgid ""
+"Enable or disable the Tailscale service. When disabled, the service will be "
+"stopped and the process will be killed."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:28
+msgid ""
+"Enable this device as a Peer Relay server. Requires a public IP and an UDP "
+"port open on the router."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
+msgid "Enabled"
+msgstr "已啟用"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:35
+msgid ""
+"Enabling this option can reduce memory usage, but it may sacrifice some "
+"performance (set GOGC=10)."
+msgstr "啟用此選項可以減少記憶體使用,但可能會犧牲一些效能 (設定 GOGC=10)。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:515
+msgid "Error"
+msgstr "錯誤"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
+msgid "Error caching DERP region map: %s"
+msgstr "快取 DERP 區域地圖時出錯: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
+msgid "Error fetching DERP region map: %s"
+msgstr "獲取 DERP 區域地圖時出錯: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
+msgid "Error reading cached DERP region map: %s"
+msgstr "讀取快取的 DERP 區域地圖時出錯: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:421
+msgid ""
+"Essential configuration for Subnet Routing (Site-to-Site) and Exit Node "
+"features."
+msgstr "子網路由和出口節點的基本配置。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
+msgid "Exit Node"
+msgstr "出口節點"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:23
+msgid ""
+"Expose a web interface on port 5252 for managing this node over Tailscale."
+msgstr "在埠 5252 上暴露一個 Web 介面,用於透過 Tailscale 管理此節點。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:432
+msgid "Failed to configure firewall: %s"
+msgstr "獲取防火牆設定失敗: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:516
+msgid "Failed to get login URL. You may close this tab."
+msgstr "獲取登入 URL 失敗。您可以關閉此標籤頁。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
+msgid "Failed to get login URL: %s"
+msgstr "獲取登入 URL 失敗: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:517
+msgid "Failed to get login URL: Invalid response from server."
+msgstr "獲取登入 URL 失敗: 伺服器響應無效。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+msgid "Firewall Mode"
+msgstr "防火牆模式"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:429
+msgid "Firewall configuration applied."
+msgstr "已應用防火牆配置"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:376
+msgid "General Settings"
+msgstr "常規設定"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:262
+msgid "Hostname"
+msgstr "主機名"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:439
+msgid "How to enable Site-to-Site?"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:458
+msgid ""
+"If the timeout is displayed, you can refresh the page and click Login again."
+msgstr "如果顯示超時,您可以重新整理頁面並再次點選登入。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:472
+msgid ""
+"If you are using custom login server but not providing an Auth Key, will "
+"redirect to the login page without pre-filling the key."
+msgstr ""
+"如果您使用自定義登入伺服器但未提供認證金鑰,將重定向到登入頁面而不會預先填充"
+"金鑰。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:91
+msgid "Invalid Date"
+msgstr "無效日期"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:422
+msgid ""
+"It automatically creates the tailscale interface, sets up firewall zones for "
+"LAN <-> Tailscale forwarding,"
+msgstr ""
+"子網路由和出口節點的基本配置。會自動tailscale介面,設定防火牆區域LAN <-> "
+"Tailscale轉發"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:94
+msgid "Just now"
+msgstr "剛才"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:206
+msgid "LOGGED OUT"
+msgstr "已登出"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:268
+msgid "Last Seen"
+msgstr "上次線上"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:464
+msgid "Leave blank for default Tailscale control plane."
+msgstr "留空以使用預設的 Tailscale 控制平面。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
+msgid "Logging out..."
+msgstr "正在登出..."
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:456
+msgid "Login"
+msgstr "登入"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:477
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:550
+msgid "Logout"
+msgstr "登出"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
+msgid "Logout failed: %s"
+msgstr "登出失敗: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:88
+msgid "N/A"
+msgstr "N/A"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:217
+msgid "NOT RUNNING"
+msgstr "未執行"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:257
+msgid "No peer devices found."
+msgstr "未找到對等裝置。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:389
+msgid "None"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:89
+msgid "Now"
+msgstr "現在"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:264
+msgid "OS"
+msgstr "作業系統"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
+msgid "Offline"
+msgstr "離線"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:287
+msgid "Online"
+msgstr "線上"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:463
+msgid ""
+"Optional: Specify a custom control server URL (e.g., a Headscale instance, "
+"%s)."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:471
+msgid ""
+"Optional: Specify an authentication key for the custom control server. Leave "
+"blank if not required."
+msgstr "可選:為自定義控制伺服器指定一個認證金鑰。如果不需要,請留空。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:380
+msgid "Peer Relay Port"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:208
+msgid "Please use the login button in the settings below to authenticate."
+msgstr "請使用下方設定中的登入按鈕進行認證。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:540
+msgid "Please wait."
+msgstr "請稍候。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
+msgid "RUNNING"
+msgstr "正在執行"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:266
+msgid "RX"
+msgstr "接收"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:500
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:506
+msgid "Requesting Login URL..."
+msgstr "正在請求登入 URL..."
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:497
+msgid "Requesting Tailscale login URL... Please wait."
+msgstr "正在請求 Tailscale 登入 URL... 請稍候。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:388
+msgid ""
+"Select an exit node from the list. If enabled, Allow LAN Access is enabled "
+"implicitly."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:19
+msgid ""
+"Select the firewall backend for Tailscale to use. Requires service restart "
+"to take effect."
+msgstr "選擇 Tailscale 使用的防火牆後端。需要重啟服務才能生效。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:196
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:204
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:216
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:225
+msgid "Service Status"
+msgstr "服務狀態"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+msgid "Shields Up"
+msgstr "開啟防護 (Shields Up)"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:261
+msgid "Status"
+msgstr "狀態"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:544
+msgid "Successfully logged out."
+msgstr "登出成功。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:197
+msgid "TAILSCALE NOT FOUND"
+msgstr "未找到 TAILSCALE"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:227
+msgid "TUN Mode"
+msgstr "TUN 模式"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:267
+msgid "TX"
+msgstr "傳送"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:230
+msgid "Tailnet Name"
+msgstr "Tailnet 名稱"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
+#: applications/luci-app-tailscale-community/root/usr/share/luci/menu.d/luci-app-tailscale-community.json:3
+msgid "Tailscale"
+msgstr "Tailscale"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:173
+msgid "Tailscale Health Check: %s"
+msgstr "Tailscale 健康檢查: %s"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:263
+msgid "Tailscale IP"
+msgstr "Tailscale IP"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:228
+msgid "Tailscale IPv4"
+msgstr "Tailscale IPv4"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:229
+msgid "Tailscale IPv6"
+msgstr "Tailscale IPv6"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:496
+msgid "Tailscale Login"
+msgstr "Tailscale 登入"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:341
+msgid ""
+"Tailscale is a mesh VPN solution that makes it easy to connect your devices "
+"securely. This configuration page allows you to manage Tailscale settings on "
+"your OpenWrt device."
+msgstr ""
+"Tailscale 是一個網狀 VPN 解決方案,可以輕鬆地安全連線您的裝置。此配置頁面允許"
+"您在 OpenWrt 裝置上管理 Tailscale 設定。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:248
+msgid "Tailscale status error"
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:498
+msgid "This can take up to 30 seconds."
+msgstr "此過程最多可能需要 30 秒。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:528
+msgid ""
+"This will disconnect this device from your Tailnet and require you to re-"
+"authenticate."
+msgstr "這將使此裝置從您的 Tailnet 斷開連線,並需要您重新進行身份驗證。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:381
+msgid ""
+"UDP port for the Peer Relay service. Open this port on your router firewall/"
+"NAT."
+msgstr ""
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:121
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:148
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:151
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:521
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:547
+msgid "Unknown error"
+msgstr "未知錯誤"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:27
+msgid "Use system DNS instead of MagicDNS."
+msgstr "使用系統 DNS 而不是 MagicDNS。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:226
+msgid "Version"
+msgstr "版本"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:25
+msgid ""
+"When enabled, blocks all inbound connections from the Tailscale network."
+msgstr "啟用後,將阻止來自 Tailscale 網路的所有入站連線。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:22
+msgid "When using the exit node, access to the local LAN is allowed."
+msgstr "使用出口節點時,允許訪問本地區域網。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:447
+msgid ""
+"[Important] Log in to the Tailscale admin console and manually enable "
+"\"Subnet Routes\" for this device."
+msgstr "【重要】 登入 Tailscale 控制平面,在裝置設定中手動授權子網路由。"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:97
+msgid "ago"
+msgstr "前"
+
+#: applications/luci-app-tailscale-community/htdocs/luci-static/resources/view/tailscale.js:423
+msgid ""
+"and enables Masquerading and MSS Clamping (MTU fix) to ensure stable "
+"connections."
+msgstr "並啟用地址偽裝和 MSS鉗制確保連線穩定。"
+
+#~ msgid ""
+#~ "Optional: Specify a custom control server URL (e.g., a Headscale "
+#~ "instance, https://example.com)."
+#~ msgstr ""
+#~ "可選:指定一個自定義控制伺服器 URL (例如,一個 Headscale 例項,https://"
+#~ "example.com)。"
+
+#~ msgid "Applying changes..."
+#~ msgstr "正在應用更改..."
+
+#~ msgid "Error applying settings: %s"
+#~ msgstr "應用設定時出錯: %s"
+
+#~ msgid "Error saving settings: %s"
+#~ msgstr "儲存設定時出錯: %s"
+
+#~ msgid "Failed to save settings: %s"
+#~ msgstr "儲存設定失敗: %s"
+
+#~ msgid "Network Devices"
+#~ msgstr "網路裝置"
+
+#~ msgid "Settings"
+#~ msgstr "設定"
+
+#~ msgid "Tailscale settings applied successfully."
+#~ msgstr "Tailscale 設定已成功應用。"
index abfbb05182c1a98a933bff9a15b7e97e760eb26e..e1ed75a26faad1ee2b7b2c8ca342f57db283d453 100755 (executable)
@@ -141,6 +141,24 @@ apply_settings() {
        return $ret
 }
 
+handle_service_state() {
+       config_load tailscale
+       local service_enabled
+       config_get service_enabled settings service_enabled '1'
+       
+       if [ "$service_enabled" = "0" ]; then
+               logger -t "$NAME" "Service is disabled, stopping tailscale"
+               /etc/init.d/tailscale stop 2>/dev/null
+               /etc/init.d/tailscale disable 2>/dev/null
+               killall tailscaled 2>/dev/null
+       else
+               logger -t "$NAME" "Service is enabled, ensuring tailscale is running"
+               /etc/init.d/tailscale enable 2>/dev/null
+               /etc/init.d/tailscale start 2>/dev/null
+               apply_settings
+       fi
+}
+
 start_service() {
        apply_settings
 }
@@ -150,5 +168,5 @@ service_triggers() {
 }
 
 reload_service() {
-       apply_settings
+       handle_service_state
 }
index e9e7e6dc4cb58db38d9646731109705e01ec72ce..3bb4aff7ef0860b7194fd8e04d21c158cf19bf04 100755 (executable)
@@ -321,6 +321,32 @@ methods.setup_firewall = {
                                changed_firewall = true;
                        }
 
+                       // Exit node requires WAN <-> tailscale forwarding
+                       let fwd_wan_to_ts = false;
+                       let fwd_ts_to_wan = false;
+
+                       for (let sec_key in fw_all) {
+                               let s = fw_all[sec_key];
+                               if (s['.type'] == 'forwarding') {
+                                       if (s.src == 'wan' && s.dest == 'tailscale') fwd_wan_to_ts = true;
+                                       if (s.src == 'tailscale' && s.dest == 'wan') fwd_ts_to_wan = true;
+                               }
+                       }
+
+                       if (!fwd_ts_to_wan) {
+                               let fid = uci.add('firewall', 'forwarding');
+                               uci.set('firewall', fid, 'src', 'tailscale');
+                               uci.set('firewall', fid, 'dest', 'wan');
+                               changed_firewall = true;
+                       }
+
+                       if (!fwd_wan_to_ts) {
+                               let fid = uci.add('firewall', 'forwarding');
+                               uci.set('firewall', fid, 'src', 'wan');
+                               uci.set('firewall', fid, 'dest', 'tailscale');
+                               changed_firewall = true;
+                       }
+
                        // 4. save
                        if (changed_network) {
                                uci.save('network');
git clone https://git.99rst.org/PROJECT