ysk-server-shared 1.1.22 → 1.1.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/dist/browser.d.ts +1 -0
  2. package/dist/browser.d.ts.map +1 -1
  3. package/dist/browser.js +1 -0
  4. package/dist/browser.js.map +1 -1
  5. package/dist/ddns.d.ts +74 -0
  6. package/dist/ddns.d.ts.map +1 -0
  7. package/dist/ddns.js +45 -0
  8. package/dist/ddns.js.map +1 -0
  9. package/dist/index.d.ts +1 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/route-capabilities.js +1 -1
  14. package/dist/route-capabilities.js.map +1 -1
  15. package/locales/ar/dns.json +99 -2
  16. package/locales/ar/translation.json +103 -3
  17. package/locales/ar/vpn.json +4 -1
  18. package/locales/bn/dns.json +99 -2
  19. package/locales/bn/translation.json +103 -3
  20. package/locales/bn/vpn.json +4 -1
  21. package/locales/en/dns.json +97 -0
  22. package/locales/en/translation.json +100 -0
  23. package/locales/en/vpn.json +3 -0
  24. package/locales/es/dns.json +99 -2
  25. package/locales/es/translation.json +103 -3
  26. package/locales/es/vpn.json +4 -1
  27. package/locales/fr/dns.json +99 -2
  28. package/locales/fr/translation.json +103 -3
  29. package/locales/fr/vpn.json +4 -1
  30. package/locales/hi/dns.json +99 -2
  31. package/locales/hi/translation.json +103 -3
  32. package/locales/hi/vpn.json +4 -1
  33. package/locales/id/dns.json +99 -2
  34. package/locales/id/translation.json +103 -3
  35. package/locales/id/vpn.json +4 -1
  36. package/locales/ja/dns.json +99 -2
  37. package/locales/ja/translation.json +103 -3
  38. package/locales/ja/vpn.json +4 -1
  39. package/locales/ko/dns.json +99 -2
  40. package/locales/ko/translation.json +103 -3
  41. package/locales/ko/vpn.json +4 -1
  42. package/locales/pt/dns.json +99 -2
  43. package/locales/pt/translation.json +103 -3
  44. package/locales/pt/vpn.json +4 -1
  45. package/locales/ur/dns.json +99 -2
  46. package/locales/ur/translation.json +103 -3
  47. package/locales/ur/vpn.json +4 -1
  48. package/locales/zh-CN/dns.json +99 -2
  49. package/locales/zh-CN/translation.json +103 -3
  50. package/locales/zh-CN/vpn.json +4 -1
  51. package/locales/zh-HK/dns.json +97 -0
  52. package/locales/zh-HK/translation.json +100 -0
  53. package/locales/zh-HK/vpn.json +3 -0
  54. package/package.json +1 -1
@@ -26,7 +26,8 @@
26
26
  "cluster": "集群",
27
27
  "dnssec": "DNSSEC",
28
28
  "tools": "工具",
29
- "about": "说明"
29
+ "about": "说明",
30
+ "ddns": "DDNS"
30
31
  },
31
32
  "recentWrite": "最近写入结果",
32
33
  "zonesTitle": "区域 ({{count}})",
@@ -236,5 +237,101 @@
236
237
  "startProbeFailed": "Could not re-check DNS health after start",
237
238
  "startNotListening": "PowerDNS start returned, but the unit is not answering on port 53",
238
239
  "goStartService": "Start DNS service",
239
- "startBindHint": "If start returns to stopped, port 53 is often held by systemd-resolved. Use Heal bind below, then start again."
240
+ "startBindHint": "If start returns to stopped, port 53 is often held by systemd-resolved. Use Heal bind below, then start again.",
241
+ "aboutDdnsTitle": "DDNS",
242
+ "aboutDdnsBody": "The DDNS tab updates named A/AAAA records when this host’s WAN address changes. It does not replace zone CRUD. Written is not the same as public resolver truth.",
243
+ "ddns": {
244
+ "honesty": "A successful write is not public DNS yet. Resolver caches and registrar NS still apply. Empty or private IPs are never published.",
245
+ "needExecute": "Provider updates need root and YSK_EXECUTE=1. Detection still runs.",
246
+ "lastRun": "Last run",
247
+ "updateNow": "Update now",
248
+ "updateTitle": "Publish detected WAN addresses?",
249
+ "updateDesc": "Calls Cloudflare, nsupdate, or the local zone for each enabled record. Type UPDATE to confirm.",
250
+ "updated": "DDNS update finished",
251
+ "updateFailed": "DDNS update failed",
252
+ "saved": "Saved",
253
+ "saveFailed": "Could not save",
254
+ "deleted": "Record removed",
255
+ "emptyTitle": "No DDNS records",
256
+ "emptyDesc": "Add a hostname below. Cloudflare, RFC 2136, or this host’s PowerDNS zone (managedBy=ddns).",
257
+ "colFqdn": "Hostname",
258
+ "colProvider": "Provider",
259
+ "colPublished": "Published",
260
+ "zone": "Zone",
261
+ "zoneHint": "Leave empty to use the last two labels of the hostname",
262
+ "providerLocal": "Local PowerDNS",
263
+ "proxied": "Cloudflare proxied",
264
+ "proxiedHint": "Orange cloud. Leave off for VPN / WireGuard hostnames.",
265
+ "addRecord": "Add hostname",
266
+ "interval": "Interval (seconds)",
267
+ "intervalHint": "60–86400. In-process scheduler; not crontab.",
268
+ "cfToken": "Cloudflare API token",
269
+ "cfTokenHint": "Write-only. Env CF_API_TOKEN is used if set. Never shown again.",
270
+ "updateIdentity": "Remember WAN IPv4",
271
+ "updateIdentityHint": "Store last public IPv4 in DDNS status for this host",
272
+ "vpnHint": "VPN Endpoint can use a DDNS hostname (not rewritten automatically).",
273
+ "sslHint": "Let’s Encrypt HTTP-01 needs the hostname to resolve here. Certificates are not reissued on IP change.",
274
+ "deleteTitle": "Remove DDNS hostname?",
275
+ "deleteDesc": "Type {{fqdn}} to confirm. Local managedBy=ddns rows are not deleted from the zone editor.",
276
+ "nextRun": "Next run",
277
+ "wanRemembered": "Remembered WAN IPv4",
278
+ "probe": "Probe WAN",
279
+ "probed": "WAN probe finished",
280
+ "probeFailedUi": "WAN probe failed",
281
+ "forceHint": "Update now republishes even when the address is unchanged. Probe never calls a provider.",
282
+ "colEnabled": "State",
283
+ "colFrom": "From",
284
+ "colTo": "To",
285
+ "colWhen": "When",
286
+ "colNote": "Note",
287
+ "pauseRecord": "Pause",
288
+ "resumeRecord": "Resume",
289
+ "statusCard": "WAN status",
290
+ "recordsCard": "Hostnames",
291
+ "addCard": "Add hostname",
292
+ "settingsCard": "Settings",
293
+ "historyTitle": "Recent updates",
294
+ "historyEmpty": "No DDNS history yet",
295
+ "paused": "Scheduler paused",
296
+ "pausedHint": "Scheduled updates are off. Probe and Update now still run.",
297
+ "schedulerOn": "Scheduled updates",
298
+ "schedulerOnHint": "In-process scheduler. Not crontab. Off means no automatic upsert.",
299
+ "zoneSelectHint": "Local zones on this host. Cloudflare and RFC 2136 can use any zone name.",
300
+ "noLocalZones": "No local zones yet. Create one on the Zones tab first if you use Local PowerDNS.",
301
+ "proxiedWarnTitle": "Cloudflare orange cloud?",
302
+ "proxiedWarnDesc": "A proxied record hides the origin IP. VPN and WireGuard hostnames should stay DNS only. Type PROXY to confirm.",
303
+ "tokenConfigured": "A Cloudflare token is stored. Leave blank to keep it.",
304
+ "tokenMissing": "No Cloudflare token stored (env CF_API_TOKEN still applies).",
305
+ "rfcServer": "RFC 2136 server",
306
+ "rfcServerHint": "Remote servers need a TSIG key file under the data directory. Loopback may be unsigned. The secret is never passed on argv.",
307
+ "rfcKeyFile": "TSIG key file",
308
+ "rfcKeyFileHint": "Relative to the DDNS data directory, or an absolute path under the data directory.",
309
+ "rfcKeyConfigured": "A key file path is stored. Leave blank to keep it.",
310
+ "primaryFqdn": "Primary hostname",
311
+ "primaryFqdnHint": "Used as a VPN endpoint hint. Does not rewrite existing peers.",
312
+ "err": {
313
+ "requiresExecute": "Needs root and YSK_EXECUTE=1 to publish.",
314
+ "missingToken": "Cloudflare API token is missing.",
315
+ "rfc2136NeedKey": "Remote RFC 2136 needs a TSIG key file under the data directory.",
316
+ "rfc2136KeyMissing": "TSIG key file is missing or outside the data directory.",
317
+ "noPublicIpv4": "No public IPv4 detected.",
318
+ "noPublicIpv6": "No public IPv6 detected.",
319
+ "notPublicIpv4": "Detected IPv4 is not public.",
320
+ "notPublicIpv6": "Detected IPv6 is not public.",
321
+ "probeFailed": "Public IP probe failed.",
322
+ "localNoZone": "No local DNS zone for this hostname.",
323
+ "localNeedsDb": "Local provider needs the control-plane database.",
324
+ "managedByClash": "That name is owned by another feature (not DDNS).",
325
+ "unknownProvider": "Unknown DDNS provider.",
326
+ "nsupdateFailed": "nsupdate failed.",
327
+ "updateFailed": "Provider update failed.",
328
+ "invalidFqdn": "Invalid hostname.",
329
+ "invalidType": "Type must be A or AAAA.",
330
+ "invalidProvider": "Unknown provider.",
331
+ "notFound": "Record not found.",
332
+ "confirmMismatch": "Confirm must match the hostname.",
333
+ "schedulerDisabled": "Scheduled DDNS is paused.",
334
+ "provider": "Provider returned an error."
335
+ }
336
+ }
240
337
  }
@@ -2978,7 +2978,8 @@
2978
2978
  "cluster": "集群",
2979
2979
  "dnssec": "DNSSEC",
2980
2980
  "tools": "工具",
2981
- "about": "说明"
2981
+ "about": "说明",
2982
+ "ddns": "DDNS"
2982
2983
  },
2983
2984
  "recentWrite": "最近写入结果",
2984
2985
  "zonesTitle": "区域 ({{count}})",
@@ -3188,7 +3189,103 @@
3188
3189
  "startProbeFailed": "Could not re-check DNS health after start",
3189
3190
  "startNotListening": "PowerDNS start returned, but the unit is not answering on port 53",
3190
3191
  "goStartService": "Start DNS service",
3191
- "startBindHint": "If start returns to stopped, port 53 is often held by systemd-resolved. Use Heal bind below, then start again."
3192
+ "startBindHint": "If start returns to stopped, port 53 is often held by systemd-resolved. Use Heal bind below, then start again.",
3193
+ "aboutDdnsTitle": "DDNS",
3194
+ "aboutDdnsBody": "The DDNS tab updates named A/AAAA records when this host’s WAN address changes. It does not replace zone CRUD. Written is not the same as public resolver truth.",
3195
+ "ddns": {
3196
+ "honesty": "A successful write is not public DNS yet. Resolver caches and registrar NS still apply. Empty or private IPs are never published.",
3197
+ "needExecute": "Provider updates need root and YSK_EXECUTE=1. Detection still runs.",
3198
+ "lastRun": "Last run",
3199
+ "updateNow": "Update now",
3200
+ "updateTitle": "Publish detected WAN addresses?",
3201
+ "updateDesc": "Calls Cloudflare, nsupdate, or the local zone for each enabled record. Type UPDATE to confirm.",
3202
+ "updated": "DDNS update finished",
3203
+ "updateFailed": "DDNS update failed",
3204
+ "saved": "Saved",
3205
+ "saveFailed": "Could not save",
3206
+ "deleted": "Record removed",
3207
+ "emptyTitle": "No DDNS records",
3208
+ "emptyDesc": "Add a hostname below. Cloudflare, RFC 2136, or this host’s PowerDNS zone (managedBy=ddns).",
3209
+ "colFqdn": "Hostname",
3210
+ "colProvider": "Provider",
3211
+ "colPublished": "Published",
3212
+ "zone": "Zone",
3213
+ "zoneHint": "Leave empty to use the last two labels of the hostname",
3214
+ "providerLocal": "Local PowerDNS",
3215
+ "proxied": "Cloudflare proxied",
3216
+ "proxiedHint": "Orange cloud. Leave off for VPN / WireGuard hostnames.",
3217
+ "addRecord": "Add hostname",
3218
+ "interval": "Interval (seconds)",
3219
+ "intervalHint": "60–86400. In-process scheduler; not crontab.",
3220
+ "cfToken": "Cloudflare API token",
3221
+ "cfTokenHint": "Write-only. Env CF_API_TOKEN is used if set. Never shown again.",
3222
+ "updateIdentity": "Remember WAN IPv4",
3223
+ "updateIdentityHint": "Store last public IPv4 in DDNS status for this host",
3224
+ "vpnHint": "VPN Endpoint can use a DDNS hostname (not rewritten automatically).",
3225
+ "sslHint": "Let’s Encrypt HTTP-01 needs the hostname to resolve here. Certificates are not reissued on IP change.",
3226
+ "deleteTitle": "Remove DDNS hostname?",
3227
+ "deleteDesc": "Type {{fqdn}} to confirm. Local managedBy=ddns rows are not deleted from the zone editor.",
3228
+ "nextRun": "Next run",
3229
+ "wanRemembered": "Remembered WAN IPv4",
3230
+ "probe": "Probe WAN",
3231
+ "probed": "WAN probe finished",
3232
+ "probeFailedUi": "WAN probe failed",
3233
+ "forceHint": "Update now republishes even when the address is unchanged. Probe never calls a provider.",
3234
+ "colEnabled": "State",
3235
+ "colFrom": "From",
3236
+ "colTo": "To",
3237
+ "colWhen": "When",
3238
+ "colNote": "Note",
3239
+ "pauseRecord": "Pause",
3240
+ "resumeRecord": "Resume",
3241
+ "statusCard": "WAN status",
3242
+ "recordsCard": "Hostnames",
3243
+ "addCard": "Add hostname",
3244
+ "settingsCard": "Settings",
3245
+ "historyTitle": "Recent updates",
3246
+ "historyEmpty": "No DDNS history yet",
3247
+ "paused": "Scheduler paused",
3248
+ "pausedHint": "Scheduled updates are off. Probe and Update now still run.",
3249
+ "schedulerOn": "Scheduled updates",
3250
+ "schedulerOnHint": "In-process scheduler. Not crontab. Off means no automatic upsert.",
3251
+ "zoneSelectHint": "Local zones on this host. Cloudflare and RFC 2136 can use any zone name.",
3252
+ "noLocalZones": "No local zones yet. Create one on the Zones tab first if you use Local PowerDNS.",
3253
+ "proxiedWarnTitle": "Cloudflare orange cloud?",
3254
+ "proxiedWarnDesc": "A proxied record hides the origin IP. VPN and WireGuard hostnames should stay DNS only. Type PROXY to confirm.",
3255
+ "tokenConfigured": "A Cloudflare token is stored. Leave blank to keep it.",
3256
+ "tokenMissing": "No Cloudflare token stored (env CF_API_TOKEN still applies).",
3257
+ "rfcServer": "RFC 2136 server",
3258
+ "rfcServerHint": "Remote servers need a TSIG key file under the data directory. Loopback may be unsigned. The secret is never passed on argv.",
3259
+ "rfcKeyFile": "TSIG key file",
3260
+ "rfcKeyFileHint": "Relative to the DDNS data directory, or an absolute path under the data directory.",
3261
+ "rfcKeyConfigured": "A key file path is stored. Leave blank to keep it.",
3262
+ "primaryFqdn": "Primary hostname",
3263
+ "primaryFqdnHint": "Used as a VPN endpoint hint. Does not rewrite existing peers.",
3264
+ "err": {
3265
+ "requiresExecute": "Needs root and YSK_EXECUTE=1 to publish.",
3266
+ "missingToken": "Cloudflare API token is missing.",
3267
+ "rfc2136NeedKey": "Remote RFC 2136 needs a TSIG key file under the data directory.",
3268
+ "rfc2136KeyMissing": "TSIG key file is missing or outside the data directory.",
3269
+ "noPublicIpv4": "No public IPv4 detected.",
3270
+ "noPublicIpv6": "No public IPv6 detected.",
3271
+ "notPublicIpv4": "Detected IPv4 is not public.",
3272
+ "notPublicIpv6": "Detected IPv6 is not public.",
3273
+ "probeFailed": "Public IP probe failed.",
3274
+ "localNoZone": "No local DNS zone for this hostname.",
3275
+ "localNeedsDb": "Local provider needs the control-plane database.",
3276
+ "managedByClash": "That name is owned by another feature (not DDNS).",
3277
+ "unknownProvider": "Unknown DDNS provider.",
3278
+ "nsupdateFailed": "nsupdate failed.",
3279
+ "updateFailed": "Provider update failed.",
3280
+ "invalidFqdn": "Invalid hostname.",
3281
+ "invalidType": "Type must be A or AAAA.",
3282
+ "invalidProvider": "Unknown provider.",
3283
+ "notFound": "Record not found.",
3284
+ "confirmMismatch": "Confirm must match the hostname.",
3285
+ "schedulerDisabled": "Scheduled DDNS is paused.",
3286
+ "provider": "Provider returned an error."
3287
+ }
3288
+ }
3192
3289
  },
3193
3290
  "docker": {
3194
3291
  "title": "Docker",
@@ -14624,6 +14721,9 @@
14624
14721
  "portRequired": "请填写监听端口。",
14625
14722
  "importInvalid": "未能识别为 WireGuard 或 OpenVPN 客户端配置。",
14626
14723
  "qrFailed": "未能生成此配置的二维码。请改为下载或复制文本。",
14627
- "cfgTitle": "配置 — {{name}}"
14724
+ "cfgTitle": "配置 — {{name}}",
14725
+ "ddnsFill": "Use DDNS hostname",
14726
+ "ddnsFilled": "Filled endpoint host from DDNS. Peers are unchanged.",
14727
+ "ddnsFillEmpty": "No DDNS primary hostname yet. Add one on the DNS DDNS tab."
14628
14728
  }
14629
14729
  }
@@ -156,5 +156,8 @@
156
156
  "portRequired": "请填写监听端口。",
157
157
  "importInvalid": "未能识别为 WireGuard 或 OpenVPN 客户端配置。",
158
158
  "qrFailed": "未能生成此配置的二维码。请改为下载或复制文本。",
159
- "cfgTitle": "配置 — {{name}}"
159
+ "cfgTitle": "配置 — {{name}}",
160
+ "ddnsFill": "Use DDNS hostname",
161
+ "ddnsFilled": "Filled endpoint host from DDNS. Peers are unchanged.",
162
+ "ddnsFillEmpty": "No DDNS primary hostname yet. Add one on the DNS DDNS tab."
160
163
  }
@@ -26,6 +26,7 @@
26
26
  "cluster": "叢集",
27
27
  "dnssec": "DNSSEC",
28
28
  "tools": "工具",
29
+ "ddns": "DDNS",
29
30
  "about": "說明"
30
31
  },
31
32
  "recentWrite": "最近寫入結果",
@@ -227,6 +228,102 @@
227
228
  "aboutHealthBody": "在「工具」探測 PowerDNS、修復綁定、開放 53 埠。",
228
229
  "aboutStackTitle": "軟件版本",
229
230
  "aboutStackBody": "在「軟件」檢查/更新 PowerDNS 套件。",
231
+ "aboutDdnsTitle": "DDNS",
232
+ "aboutDdnsBody": "DDNS 分頁在本機 WAN 位址變更時更新指定的 A/AAAA。它不取代區域記錄編輯。寫入並不等於公網解析已生效。",
233
+ "ddns": {
234
+ "honesty": "寫入成功並非公網 DNS 已傳播。解析快取與 registrar NS 仍然有效。空白或私網 IP 不會發布。",
235
+ "needExecute": "供應商更新需要 root 與 YSK_EXECUTE=1。探測仍會執行。",
236
+ "lastRun": "上次執行",
237
+ "nextRun": "下次執行",
238
+ "wanRemembered": "已記住的 WAN IPv4",
239
+ "updateNow": "立即更新",
240
+ "updateTitle": "發布偵測到的 WAN 位址?",
241
+ "updateDesc": "會對每筆已啟用記錄呼叫 Cloudflare、nsupdate 或本機 zone,即使位址未變更。請輸入 UPDATE 確認。",
242
+ "updated": "DDNS 更新完成",
243
+ "updateFailed": "DDNS 更新失敗",
244
+ "probe": "探測 WAN",
245
+ "probed": "WAN 探測完成",
246
+ "probeFailedUi": "WAN 探測失敗",
247
+ "forceHint": "「立即更新」即使位址未變更也會再發布。探測不會呼叫供應商。",
248
+ "saved": "已儲存",
249
+ "saveFailed": "無法儲存",
250
+ "deleted": "已移除記錄",
251
+ "emptyTitle": "尚未有 DDNS 記錄",
252
+ "emptyDesc": "在下方新增主機名稱。可選 Cloudflare、RFC 2136,或本機 PowerDNS(managedBy=ddns)。",
253
+ "colFqdn": "主機名稱",
254
+ "colProvider": "供應商",
255
+ "colPublished": "已發布",
256
+ "colEnabled": "狀態",
257
+ "colFrom": "由",
258
+ "colTo": "至",
259
+ "colWhen": "時間",
260
+ "colNote": "備註",
261
+ "pauseRecord": "暫停",
262
+ "resumeRecord": "恢復",
263
+ "statusCard": "WAN 狀態",
264
+ "recordsCard": "主機名稱",
265
+ "addCard": "新增主機名稱",
266
+ "settingsCard": "設定",
267
+ "historyTitle": "近期更新",
268
+ "historyEmpty": "尚無 DDNS 紀錄",
269
+ "paused": "排程已暫停",
270
+ "pausedHint": "自動更新已關閉。探測與「立即更新」仍可執行。",
271
+ "schedulerOn": "自動更新",
272
+ "schedulerOnHint": "行程內排程,不是 crontab。關閉後不會自動 upsert。",
273
+ "zone": "區域",
274
+ "zoneHint": "留空則使用主機名稱最後兩段。本機供應商應選擇已存在的區域。",
275
+ "zoneSelectHint": "本機已有區域。Cloudflare 與 RFC 2136 可用任意區域名稱。",
276
+ "noLocalZones": "尚無本機區域。若使用本機 PowerDNS,請先在「區域」分頁建立。",
277
+ "providerLocal": "本機 PowerDNS",
278
+ "proxied": "Cloudflare proxied",
279
+ "proxiedHint": "Orange cloud。VPN/WireGuard 主機名稱請關閉。",
280
+ "proxiedWarnTitle": "使用 Cloudflare orange cloud?",
281
+ "proxiedWarnDesc": "Proxied 記錄會隱藏來源 IP。VPN 與 WireGuard 主機名稱應維持 DNS only。請輸入 PROXY 確認。",
282
+ "addRecord": "新增主機名稱",
283
+ "interval": "間隔(秒)",
284
+ "intervalHint": "60–86400。行程內排程,不是 crontab。",
285
+ "cfToken": "Cloudflare API token",
286
+ "cfTokenHint": "只寫不回顯。若已設環境變數 CF_API_TOKEN 則使用該值。",
287
+ "tokenConfigured": "已儲存 Cloudflare token。留空則保持原值。",
288
+ "tokenMissing": "尚未儲存 Cloudflare token(仍可使用環境變數 CF_API_TOKEN)。",
289
+ "rfcServer": "RFC 2136 伺服器",
290
+ "rfcServerHint": "遠端伺服器需要資料目錄內的 TSIG key file。Loopback 可以不簽名。密鑰不會放進 argv。",
291
+ "rfcKeyFile": "TSIG key file",
292
+ "rfcKeyFileHint": "相對於 DDNS 資料目錄,或資料目錄下的絕對路徑。",
293
+ "rfcKeyConfigured": "已儲存 key file 路徑。留空則保持原值。",
294
+ "primaryFqdn": "主要主機名稱",
295
+ "primaryFqdnHint": "作為 VPN Endpoint 提示。不會改寫現有 peers。",
296
+ "updateIdentity": "記住 WAN IPv4",
297
+ "updateIdentityHint": "把上次公網 IPv4 存入 DDNS 狀態",
298
+ "vpnHint": "VPN Endpoint 可用 DDNS 主機名稱(不會自動改寫現有設定)。",
299
+ "sslHint": "Let's Encrypt HTTP-01 需要主機名稱解析到本機。IP 變更後不會自動重簽憑證。",
300
+ "deleteTitle": "移除 DDNS 主機名稱?",
301
+ "deleteDesc": "請輸入 {{fqdn}} 確認。不會刪除 zone 編輯器裡的本機記錄。",
302
+ "err": {
303
+ "requiresExecute": "發布需要 root 與 YSK_EXECUTE=1。",
304
+ "missingToken": "缺少 Cloudflare API token。",
305
+ "rfc2136NeedKey": "遠端 RFC 2136 需要資料目錄內的 TSIG key file。",
306
+ "rfc2136KeyMissing": "TSIG key file 不存在,或不在資料目錄內。",
307
+ "noPublicIpv4": "未偵測到公網 IPv4。",
308
+ "noPublicIpv6": "未偵測到公網 IPv6。",
309
+ "notPublicIpv4": "偵測到的 IPv4 不是公網位址。",
310
+ "notPublicIpv6": "偵測到的 IPv6 不是公網位址。",
311
+ "probeFailed": "公網 IP 探測失敗。",
312
+ "localNoZone": "此主機名稱沒有對應的本機 DNS 區域。",
313
+ "localNeedsDb": "本機供應商需要控制平面資料庫。",
314
+ "managedByClash": "該名稱由其他功能擁有(不是 DDNS)。",
315
+ "unknownProvider": "未知的 DDNS 供應商。",
316
+ "nsupdateFailed": "nsupdate 失敗。",
317
+ "updateFailed": "供應商更新失敗。",
318
+ "invalidFqdn": "主機名稱無效。",
319
+ "invalidType": "類型必須為 A 或 AAAA。",
320
+ "invalidProvider": "未知供應商。",
321
+ "notFound": "找不到記錄。",
322
+ "confirmMismatch": "確認內容必須與主機名稱相同。",
323
+ "schedulerDisabled": "DDNS 排程已暫停。",
324
+ "provider": "供應商回傳錯誤。"
325
+ }
326
+ },
230
327
  "createMailZoneNow": "已建立郵件區域 {{domain}}",
231
328
  "toolsFirewallTitle": "防火牆(UFW)",
232
329
  "toolsFirewallHint": "允許或拒絕 53 埠。不會啟動或停止 PowerDNS。",
@@ -2978,6 +2978,7 @@
2978
2978
  "cluster": "叢集",
2979
2979
  "dnssec": "DNSSEC",
2980
2980
  "tools": "工具",
2981
+ "ddns": "DDNS",
2981
2982
  "about": "說明"
2982
2983
  },
2983
2984
  "recentWrite": "最近寫入結果",
@@ -3179,6 +3180,102 @@
3179
3180
  "aboutHealthBody": "在「工具」探測 PowerDNS、修復綁定、開放 53 埠。",
3180
3181
  "aboutStackTitle": "軟件版本",
3181
3182
  "aboutStackBody": "在「軟件」檢查/更新 PowerDNS 套件。",
3183
+ "aboutDdnsTitle": "DDNS",
3184
+ "aboutDdnsBody": "DDNS 分頁在本機 WAN 位址變更時更新指定的 A/AAAA。它不取代區域記錄編輯。寫入並不等於公網解析已生效。",
3185
+ "ddns": {
3186
+ "honesty": "寫入成功並非公網 DNS 已傳播。解析快取與 registrar NS 仍然有效。空白或私網 IP 不會發布。",
3187
+ "needExecute": "供應商更新需要 root 與 YSK_EXECUTE=1。探測仍會執行。",
3188
+ "lastRun": "上次執行",
3189
+ "nextRun": "下次執行",
3190
+ "wanRemembered": "已記住的 WAN IPv4",
3191
+ "updateNow": "立即更新",
3192
+ "updateTitle": "發布偵測到的 WAN 位址?",
3193
+ "updateDesc": "會對每筆已啟用記錄呼叫 Cloudflare、nsupdate 或本機 zone,即使位址未變更。請輸入 UPDATE 確認。",
3194
+ "updated": "DDNS 更新完成",
3195
+ "updateFailed": "DDNS 更新失敗",
3196
+ "probe": "探測 WAN",
3197
+ "probed": "WAN 探測完成",
3198
+ "probeFailedUi": "WAN 探測失敗",
3199
+ "forceHint": "「立即更新」即使位址未變更也會再發布。探測不會呼叫供應商。",
3200
+ "saved": "已儲存",
3201
+ "saveFailed": "無法儲存",
3202
+ "deleted": "已移除記錄",
3203
+ "emptyTitle": "尚未有 DDNS 記錄",
3204
+ "emptyDesc": "在下方新增主機名稱。可選 Cloudflare、RFC 2136,或本機 PowerDNS(managedBy=ddns)。",
3205
+ "colFqdn": "主機名稱",
3206
+ "colProvider": "供應商",
3207
+ "colPublished": "已發布",
3208
+ "colEnabled": "狀態",
3209
+ "colFrom": "由",
3210
+ "colTo": "至",
3211
+ "colWhen": "時間",
3212
+ "colNote": "備註",
3213
+ "pauseRecord": "暫停",
3214
+ "resumeRecord": "恢復",
3215
+ "statusCard": "WAN 狀態",
3216
+ "recordsCard": "主機名稱",
3217
+ "addCard": "新增主機名稱",
3218
+ "settingsCard": "設定",
3219
+ "historyTitle": "近期更新",
3220
+ "historyEmpty": "尚無 DDNS 紀錄",
3221
+ "paused": "排程已暫停",
3222
+ "pausedHint": "自動更新已關閉。探測與「立即更新」仍可執行。",
3223
+ "schedulerOn": "自動更新",
3224
+ "schedulerOnHint": "行程內排程,不是 crontab。關閉後不會自動 upsert。",
3225
+ "zone": "區域",
3226
+ "zoneHint": "留空則使用主機名稱最後兩段。本機供應商應選擇已存在的區域。",
3227
+ "zoneSelectHint": "本機已有區域。Cloudflare 與 RFC 2136 可用任意區域名稱。",
3228
+ "noLocalZones": "尚無本機區域。若使用本機 PowerDNS,請先在「區域」分頁建立。",
3229
+ "providerLocal": "本機 PowerDNS",
3230
+ "proxied": "Cloudflare proxied",
3231
+ "proxiedHint": "Orange cloud。VPN/WireGuard 主機名稱請關閉。",
3232
+ "proxiedWarnTitle": "使用 Cloudflare orange cloud?",
3233
+ "proxiedWarnDesc": "Proxied 記錄會隱藏來源 IP。VPN 與 WireGuard 主機名稱應維持 DNS only。請輸入 PROXY 確認。",
3234
+ "addRecord": "新增主機名稱",
3235
+ "interval": "間隔(秒)",
3236
+ "intervalHint": "60–86400。行程內排程,不是 crontab。",
3237
+ "cfToken": "Cloudflare API token",
3238
+ "cfTokenHint": "只寫不回顯。若已設環境變數 CF_API_TOKEN 則使用該值。",
3239
+ "tokenConfigured": "已儲存 Cloudflare token。留空則保持原值。",
3240
+ "tokenMissing": "尚未儲存 Cloudflare token(仍可使用環境變數 CF_API_TOKEN)。",
3241
+ "rfcServer": "RFC 2136 伺服器",
3242
+ "rfcServerHint": "遠端伺服器需要資料目錄內的 TSIG key file。Loopback 可以不簽名。密鑰不會放進 argv。",
3243
+ "rfcKeyFile": "TSIG key file",
3244
+ "rfcKeyFileHint": "相對於 DDNS 資料目錄,或資料目錄下的絕對路徑。",
3245
+ "rfcKeyConfigured": "已儲存 key file 路徑。留空則保持原值。",
3246
+ "primaryFqdn": "主要主機名稱",
3247
+ "primaryFqdnHint": "作為 VPN Endpoint 提示。不會改寫現有 peers。",
3248
+ "updateIdentity": "記住 WAN IPv4",
3249
+ "updateIdentityHint": "把上次公網 IPv4 存入 DDNS 狀態",
3250
+ "vpnHint": "VPN Endpoint 可用 DDNS 主機名稱(不會自動改寫現有設定)。",
3251
+ "sslHint": "Let's Encrypt HTTP-01 需要主機名稱解析到本機。IP 變更後不會自動重簽憑證。",
3252
+ "deleteTitle": "移除 DDNS 主機名稱?",
3253
+ "deleteDesc": "請輸入 {{fqdn}} 確認。不會刪除 zone 編輯器裡的本機記錄。",
3254
+ "err": {
3255
+ "requiresExecute": "發布需要 root 與 YSK_EXECUTE=1。",
3256
+ "missingToken": "缺少 Cloudflare API token。",
3257
+ "rfc2136NeedKey": "遠端 RFC 2136 需要資料目錄內的 TSIG key file。",
3258
+ "rfc2136KeyMissing": "TSIG key file 不存在,或不在資料目錄內。",
3259
+ "noPublicIpv4": "未偵測到公網 IPv4。",
3260
+ "noPublicIpv6": "未偵測到公網 IPv6。",
3261
+ "notPublicIpv4": "偵測到的 IPv4 不是公網位址。",
3262
+ "notPublicIpv6": "偵測到的 IPv6 不是公網位址。",
3263
+ "probeFailed": "公網 IP 探測失敗。",
3264
+ "localNoZone": "此主機名稱沒有對應的本機 DNS 區域。",
3265
+ "localNeedsDb": "本機供應商需要控制平面資料庫。",
3266
+ "managedByClash": "該名稱由其他功能擁有(不是 DDNS)。",
3267
+ "unknownProvider": "未知的 DDNS 供應商。",
3268
+ "nsupdateFailed": "nsupdate 失敗。",
3269
+ "updateFailed": "供應商更新失敗。",
3270
+ "invalidFqdn": "主機名稱無效。",
3271
+ "invalidType": "類型必須為 A 或 AAAA。",
3272
+ "invalidProvider": "未知供應商。",
3273
+ "notFound": "找不到記錄。",
3274
+ "confirmMismatch": "確認內容必須與主機名稱相同。",
3275
+ "schedulerDisabled": "DDNS 排程已暫停。",
3276
+ "provider": "供應商回傳錯誤。"
3277
+ }
3278
+ },
3182
3279
  "createMailZoneNow": "已建立郵件區域 {{domain}}",
3183
3280
  "toolsFirewallTitle": "防火牆(UFW)",
3184
3281
  "toolsFirewallHint": "允許或拒絕 53 埠。不會啟動或停止 PowerDNS。",
@@ -14526,6 +14623,9 @@
14526
14623
  "listenPortTcp": "監聽埠(TCP)",
14527
14624
  "endpoint": "公開端點",
14528
14625
  "endpointHint": "客戶端連入的公網 host:port",
14626
+ "ddnsFill": "使用 DDNS 主機名稱",
14627
+ "ddnsFilled": "已用 DDNS 填入 Endpoint 主機。現有 peers 未改動。",
14628
+ "ddnsFillEmpty": "尚無 DDNS 主要主機名稱。請先到 DNS 的 DDNS 分頁新增。",
14529
14629
  "ensureServer": "套用伺服器",
14530
14630
  "openFirewall": "開埠 {{port}}/{{proto}}",
14531
14631
  "presets": "常用埠",
@@ -58,6 +58,9 @@
58
58
  "listenPortTcp": "監聽埠(TCP)",
59
59
  "endpoint": "公開端點",
60
60
  "endpointHint": "客戶端連入的公網 host:port",
61
+ "ddnsFill": "使用 DDNS 主機名稱",
62
+ "ddnsFilled": "已用 DDNS 填入 Endpoint 主機。現有 peers 未改動。",
63
+ "ddnsFillEmpty": "尚無 DDNS 主要主機名稱。請先到 DNS 的 DDNS 分頁新增。",
61
64
  "ensureServer": "套用伺服器",
62
65
  "openFirewall": "開埠 {{port}}/{{proto}}",
63
66
  "presets": "常用埠",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ysk-server-shared",
3
- "version": "1.1.22",
3
+ "version": "1.1.24",
4
4
  "description": "Shared types, DTOs, and interfaces for YSK Server",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",