ysk-server-shared 1.0.0 → 1.1.9
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.
- package/README.md +21 -6
- package/dist/browser.d.ts +1 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +1 -0
- package/dist/browser.js.map +1 -1
- package/dist/bt-tracker.d.ts +56 -0
- package/dist/bt-tracker.d.ts.map +1 -1
- package/dist/bt-tracker.js +1 -0
- package/dist/bt-tracker.js.map +1 -1
- package/dist/capabilities.d.ts +1 -1
- package/dist/capabilities.d.ts.map +1 -1
- package/dist/capabilities.js +6 -0
- package/dist/capabilities.js.map +1 -1
- package/dist/cdn.d.ts +2 -0
- package/dist/cdn.d.ts.map +1 -1
- package/dist/databases.d.ts +2 -0
- package/dist/databases.d.ts.map +1 -1
- package/dist/docker.d.ts +134 -0
- package/dist/docker.d.ts.map +1 -0
- package/dist/docker.js +94 -0
- package/dist/docker.js.map +1 -0
- package/dist/dto.d.ts +10 -1
- package/dist/dto.d.ts.map +1 -1
- package/dist/email-domain.d.ts +7 -0
- package/dist/email-domain.d.ts.map +1 -1
- package/dist/files.d.ts +18 -0
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +35 -1
- package/dist/files.js.map +1 -1
- package/dist/ftp.d.ts +9 -0
- package/dist/ftp.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +7 -0
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js.map +1 -1
- package/dist/route-capabilities.d.ts +16 -0
- package/dist/route-capabilities.d.ts.map +1 -1
- package/dist/route-capabilities.js +142 -4
- package/dist/route-capabilities.js.map +1 -1
- package/dist/system.d.ts +4 -0
- package/dist/system.d.ts.map +1 -1
- package/dist/validators.d.ts +178 -0
- package/dist/validators.d.ts.map +1 -0
- package/dist/validators.js +121 -0
- package/dist/validators.js.map +1 -0
- package/locales/ar/agents.json +17 -2
- package/locales/ar/apache.json +7 -1
- package/locales/ar/audit.json +4 -1
- package/locales/ar/backups.json +36 -1
- package/locales/ar/btTracker.json +121 -39
- package/locales/ar/catalog.json +8 -8
- package/locales/ar/cdn.json +89 -1
- package/locales/ar/cli.json +4 -4
- package/locales/ar/common.json +9 -1
- package/locales/ar/cron.json +33 -1
- package/locales/ar/dashboard.json +24 -3
- package/locales/ar/db.json +75 -3
- package/locales/ar/dns.json +23 -1
- package/locales/ar/docker.json +248 -0
- package/locales/ar/email.json +50 -11
- package/locales/ar/errors.json +5 -2
- package/locales/ar/fail2ban.json +38 -13
- package/locales/ar/files.json +53 -10
- package/locales/ar/firewall.json +19 -10
- package/locales/ar/ftp.json +32 -1
- package/locales/ar/hostBrowse.json +37 -15
- package/locales/ar/listToolbar.json +2 -1
- package/locales/ar/login.json +12 -7
- package/locales/ar/logs.json +31 -2
- package/locales/ar/metrics.json +36 -1
- package/locales/ar/migrate.json +27 -1
- package/locales/ar/nav.json +11 -4
- package/locales/ar/network.json +27 -2
- package/locales/ar/nginx.json +4 -1
- package/locales/ar/notFound.json +6 -0
- package/locales/ar/notes.json +252 -64
- package/locales/ar/playbooks.json +1 -1
- package/locales/ar/projects.json +134 -12
- package/locales/ar/protection.json +72 -8
- package/locales/ar/publicFiles.json +18 -1
- package/locales/ar/rbac.json +15 -2
- package/locales/ar/readiness.json +33 -2
- package/locales/ar/redis.json +24 -1
- package/locales/ar/runtime.json +49 -2
- package/locales/ar/search.json +14 -10
- package/locales/ar/security.json +68 -7
- package/locales/ar/serviceExposure.json +18 -6
- package/locales/ar/services.json +69 -3
- package/locales/ar/software.json +2 -1
- package/locales/ar/softwareLifecycle.json +12 -2
- package/locales/ar/ssl.json +12 -1
- package/locales/ar/stackWizard.json +9 -2
- package/locales/ar/support.json +33 -17
- package/locales/ar/system.json +31 -2
- package/locales/ar/systemd.json +3 -1
- package/locales/ar/terminal.json +9 -1
- package/locales/ar/translation.json +2422 -302
- package/locales/ar/updates.json +76 -3
- package/locales/ar/users.json +19 -1
- package/locales/ar/validators.json +325 -0
- package/locales/ar/vnc.json +17 -1
- package/locales/ar/vpn.json +18 -3
- package/locales/bn/agents.json +17 -2
- package/locales/bn/apache.json +7 -1
- package/locales/bn/audit.json +4 -1
- package/locales/bn/backups.json +36 -1
- package/locales/bn/btTracker.json +121 -39
- package/locales/bn/catalog.json +5 -5
- package/locales/bn/cdn.json +89 -1
- package/locales/bn/cli.json +2 -2
- package/locales/bn/common.json +9 -1
- package/locales/bn/cron.json +33 -1
- package/locales/bn/dashboard.json +24 -3
- package/locales/bn/db.json +75 -3
- package/locales/bn/dns.json +23 -1
- package/locales/bn/docker.json +248 -0
- package/locales/bn/email.json +49 -10
- package/locales/bn/errors.json +5 -2
- package/locales/bn/fail2ban.json +26 -1
- package/locales/bn/files.json +53 -10
- package/locales/bn/firewall.json +17 -8
- package/locales/bn/ftp.json +32 -1
- package/locales/bn/hostBrowse.json +37 -15
- package/locales/bn/listToolbar.json +2 -1
- package/locales/bn/login.json +13 -8
- package/locales/bn/logs.json +31 -2
- package/locales/bn/metrics.json +36 -1
- package/locales/bn/migrate.json +27 -1
- package/locales/bn/nav.json +10 -3
- package/locales/bn/network.json +27 -2
- package/locales/bn/nginx.json +4 -1
- package/locales/bn/notFound.json +6 -0
- package/locales/bn/notes.json +222 -34
- package/locales/bn/projects.json +133 -11
- package/locales/bn/protection.json +66 -2
- package/locales/bn/publicFiles.json +18 -1
- package/locales/bn/rbac.json +15 -2
- package/locales/bn/readiness.json +32 -1
- package/locales/bn/redis.json +24 -1
- package/locales/bn/runtime.json +49 -2
- package/locales/bn/search.json +13 -9
- package/locales/bn/security.json +68 -7
- package/locales/bn/serviceExposure.json +18 -6
- package/locales/bn/services.json +68 -2
- package/locales/bn/software.json +2 -1
- package/locales/bn/softwareLifecycle.json +12 -2
- package/locales/bn/ssl.json +12 -1
- package/locales/bn/stackWizard.json +9 -2
- package/locales/bn/support.json +38 -22
- package/locales/bn/system.json +31 -2
- package/locales/bn/systemd.json +3 -1
- package/locales/bn/terminal.json +9 -1
- package/locales/bn/translation.json +2366 -246
- package/locales/bn/updates.json +76 -3
- package/locales/bn/users.json +19 -1
- package/locales/bn/validators.json +325 -0
- package/locales/bn/vnc.json +17 -1
- package/locales/bn/vpn.json +18 -3
- package/locales/en/agents.json +20 -5
- package/locales/en/apache.json +6 -0
- package/locales/en/audit.json +4 -1
- package/locales/en/backups.json +39 -4
- package/locales/en/btTracker.json +85 -3
- package/locales/en/cdn.json +104 -2
- package/locales/en/cli.json +7 -7
- package/locales/en/common.json +9 -1
- package/locales/en/cron.json +33 -1
- package/locales/en/dashboard.json +28 -7
- package/locales/en/db.json +81 -8
- package/locales/en/dns.json +23 -1
- package/locales/en/docker.json +248 -0
- package/locales/en/email.json +50 -11
- package/locales/en/errors.json +6 -3
- package/locales/en/fail2ban.json +31 -6
- package/locales/en/files.json +44 -1
- package/locales/en/firewall.json +10 -1
- package/locales/en/ftp.json +34 -3
- package/locales/en/hostBrowse.json +24 -2
- package/locales/en/listToolbar.json +2 -1
- package/locales/en/login.json +6 -1
- package/locales/en/logs.json +33 -4
- package/locales/en/metrics.json +37 -2
- package/locales/en/migrate.json +27 -1
- package/locales/en/nav.json +9 -2
- package/locales/en/network.json +27 -2
- package/locales/en/nginx.json +4 -1
- package/locales/en/notFound.json +6 -0
- package/locales/en/notes.json +233 -42
- package/locales/en/projects.json +133 -11
- package/locales/en/protection.json +68 -3
- package/locales/en/publicFiles.json +18 -1
- package/locales/en/rbac.json +15 -2
- package/locales/en/readiness.json +30 -1
- package/locales/en/redis.json +24 -1
- package/locales/en/runtime.json +51 -3
- package/locales/en/search.json +4 -0
- package/locales/en/security.json +70 -9
- package/locales/en/serviceExposure.json +13 -1
- package/locales/en/services.json +68 -2
- package/locales/en/software.json +2 -1
- package/locales/en/softwareLifecycle.json +11 -1
- package/locales/en/ssl.json +12 -1
- package/locales/en/stackWizard.json +9 -2
- package/locales/en/support.json +17 -1
- package/locales/en/system.json +36 -7
- package/locales/en/systemd.json +2 -0
- package/locales/en/terminal.json +10 -2
- package/locales/en/translation.json +2312 -192
- package/locales/en/updates.json +50 -4
- package/locales/en/users.json +20 -1
- package/locales/en/validators.json +325 -0
- package/locales/en/vnc.json +23 -7
- package/locales/en/vpn.json +17 -2
- package/locales/es/agents.json +17 -2
- package/locales/es/apache.json +7 -1
- package/locales/es/audit.json +4 -1
- package/locales/es/backups.json +36 -1
- package/locales/es/btTracker.json +119 -37
- package/locales/es/catalog.json +6 -6
- package/locales/es/cdn.json +89 -1
- package/locales/es/cli.json +2 -2
- package/locales/es/common.json +9 -1
- package/locales/es/cron.json +33 -1
- package/locales/es/dashboard.json +24 -3
- package/locales/es/db.json +75 -3
- package/locales/es/dns.json +23 -1
- package/locales/es/docker.json +248 -0
- package/locales/es/email.json +49 -10
- package/locales/es/errors.json +5 -2
- package/locales/es/fail2ban.json +26 -1
- package/locales/es/files.json +52 -9
- package/locales/es/firewall.json +17 -8
- package/locales/es/ftp.json +32 -1
- package/locales/es/hostBrowse.json +35 -13
- package/locales/es/listToolbar.json +2 -1
- package/locales/es/login.json +12 -7
- package/locales/es/logs.json +31 -2
- package/locales/es/metrics.json +36 -1
- package/locales/es/migrate.json +27 -1
- package/locales/es/nav.json +11 -4
- package/locales/es/network.json +27 -2
- package/locales/es/nginx.json +4 -1
- package/locales/es/notFound.json +6 -0
- package/locales/es/notes.json +229 -41
- package/locales/es/projects.json +133 -11
- package/locales/es/protection.json +66 -2
- package/locales/es/publicFiles.json +18 -1
- package/locales/es/rbac.json +15 -2
- package/locales/es/readiness.json +32 -1
- package/locales/es/redis.json +24 -1
- package/locales/es/runtime.json +49 -2
- package/locales/es/search.json +13 -9
- package/locales/es/security.json +68 -7
- package/locales/es/serviceExposure.json +18 -6
- package/locales/es/services.json +68 -2
- package/locales/es/software.json +2 -1
- package/locales/es/softwareLifecycle.json +12 -2
- package/locales/es/ssl.json +12 -1
- package/locales/es/stackWizard.json +9 -2
- package/locales/es/support.json +37 -21
- package/locales/es/system.json +31 -2
- package/locales/es/systemd.json +3 -1
- package/locales/es/terminal.json +9 -1
- package/locales/es/translation.json +2368 -248
- package/locales/es/updates.json +76 -3
- package/locales/es/users.json +19 -1
- package/locales/es/validators.json +325 -0
- package/locales/es/vnc.json +17 -1
- package/locales/es/vpn.json +18 -3
- package/locales/fr/agents.json +17 -2
- package/locales/fr/apache.json +7 -1
- package/locales/fr/audit.json +4 -1
- package/locales/fr/backups.json +36 -1
- package/locales/fr/btTracker.json +118 -36
- package/locales/fr/catalog.json +6 -6
- package/locales/fr/cdn.json +89 -1
- package/locales/fr/cli.json +3 -3
- package/locales/fr/common.json +9 -1
- package/locales/fr/cron.json +33 -1
- package/locales/fr/dashboard.json +24 -3
- package/locales/fr/db.json +75 -3
- package/locales/fr/dns.json +23 -1
- package/locales/fr/docker.json +248 -0
- package/locales/fr/email.json +47 -8
- package/locales/fr/errors.json +5 -2
- package/locales/fr/fail2ban.json +27 -2
- package/locales/fr/files.json +52 -9
- package/locales/fr/firewall.json +13 -4
- package/locales/fr/ftp.json +32 -1
- package/locales/fr/hostBrowse.json +34 -12
- package/locales/fr/listToolbar.json +2 -1
- package/locales/fr/login.json +11 -6
- package/locales/fr/logs.json +31 -2
- package/locales/fr/metrics.json +36 -1
- package/locales/fr/migrate.json +27 -1
- package/locales/fr/nav.json +11 -4
- package/locales/fr/network.json +27 -2
- package/locales/fr/nginx.json +4 -1
- package/locales/fr/notFound.json +6 -0
- package/locales/fr/notes.json +225 -37
- package/locales/fr/projects.json +131 -9
- package/locales/fr/protection.json +66 -2
- package/locales/fr/publicFiles.json +18 -1
- package/locales/fr/rbac.json +15 -2
- package/locales/fr/readiness.json +32 -1
- package/locales/fr/redis.json +25 -2
- package/locales/fr/runtime.json +49 -2
- package/locales/fr/search.json +11 -7
- package/locales/fr/security.json +68 -7
- package/locales/fr/serviceExposure.json +17 -5
- package/locales/fr/services.json +68 -2
- package/locales/fr/software.json +2 -1
- package/locales/fr/softwareLifecycle.json +12 -2
- package/locales/fr/ssl.json +12 -1
- package/locales/fr/stackWizard.json +9 -2
- package/locales/fr/support.json +37 -21
- package/locales/fr/system.json +31 -2
- package/locales/fr/systemd.json +3 -1
- package/locales/fr/terminal.json +9 -1
- package/locales/fr/translation.json +2352 -232
- package/locales/fr/updates.json +76 -3
- package/locales/fr/users.json +19 -1
- package/locales/fr/validators.json +325 -0
- package/locales/fr/vnc.json +17 -1
- package/locales/fr/vpn.json +17 -2
- package/locales/hi/agents.json +17 -2
- package/locales/hi/apache.json +7 -1
- package/locales/hi/audit.json +4 -1
- package/locales/hi/backups.json +36 -1
- package/locales/hi/btTracker.json +121 -39
- package/locales/hi/catalog.json +7 -7
- package/locales/hi/cdn.json +89 -1
- package/locales/hi/cli.json +1 -1
- package/locales/hi/common.json +9 -1
- package/locales/hi/cron.json +33 -1
- package/locales/hi/dashboard.json +24 -3
- package/locales/hi/db.json +75 -3
- package/locales/hi/dns.json +23 -1
- package/locales/hi/docker.json +248 -0
- package/locales/hi/email.json +49 -10
- package/locales/hi/errors.json +5 -2
- package/locales/hi/fail2ban.json +29 -4
- package/locales/hi/files.json +53 -10
- package/locales/hi/firewall.json +17 -8
- package/locales/hi/ftp.json +32 -1
- package/locales/hi/hostBrowse.json +37 -15
- package/locales/hi/listToolbar.json +2 -1
- package/locales/hi/login.json +13 -8
- package/locales/hi/logs.json +31 -2
- package/locales/hi/metrics.json +36 -1
- package/locales/hi/migrate.json +27 -1
- package/locales/hi/nav.json +11 -4
- package/locales/hi/network.json +27 -2
- package/locales/hi/nginx.json +4 -1
- package/locales/hi/notFound.json +6 -0
- package/locales/hi/notes.json +227 -39
- package/locales/hi/projects.json +134 -12
- package/locales/hi/protection.json +67 -3
- package/locales/hi/publicFiles.json +18 -1
- package/locales/hi/rbac.json +16 -3
- package/locales/hi/readiness.json +32 -1
- package/locales/hi/redis.json +24 -1
- package/locales/hi/runtime.json +49 -2
- package/locales/hi/search.json +14 -10
- package/locales/hi/security.json +68 -7
- package/locales/hi/serviceExposure.json +18 -6
- package/locales/hi/services.json +68 -2
- package/locales/hi/software.json +2 -1
- package/locales/hi/softwareLifecycle.json +12 -2
- package/locales/hi/ssl.json +12 -1
- package/locales/hi/stackWizard.json +9 -2
- package/locales/hi/support.json +36 -20
- package/locales/hi/system.json +31 -2
- package/locales/hi/systemd.json +3 -1
- package/locales/hi/terminal.json +9 -1
- package/locales/hi/translation.json +2379 -259
- package/locales/hi/updates.json +76 -3
- package/locales/hi/users.json +19 -1
- package/locales/hi/validators.json +325 -0
- package/locales/hi/vnc.json +17 -1
- package/locales/hi/vpn.json +19 -4
- package/locales/id/agents.json +17 -2
- package/locales/id/apache.json +7 -1
- package/locales/id/audit.json +4 -1
- package/locales/id/backups.json +36 -1
- package/locales/id/btTracker.json +119 -37
- package/locales/id/catalog.json +6 -6
- package/locales/id/cdn.json +89 -1
- package/locales/id/cli.json +2 -2
- package/locales/id/common.json +9 -1
- package/locales/id/cron.json +33 -1
- package/locales/id/dashboard.json +24 -3
- package/locales/id/db.json +75 -3
- package/locales/id/dns.json +23 -1
- package/locales/id/docker.json +248 -0
- package/locales/id/email.json +49 -10
- package/locales/id/errors.json +5 -2
- package/locales/id/fail2ban.json +26 -1
- package/locales/id/files.json +52 -9
- package/locales/id/firewall.json +15 -6
- package/locales/id/ftp.json +32 -1
- package/locales/id/hostBrowse.json +35 -13
- package/locales/id/listToolbar.json +2 -1
- package/locales/id/login.json +13 -8
- package/locales/id/logs.json +31 -2
- package/locales/id/metrics.json +36 -1
- package/locales/id/migrate.json +27 -1
- package/locales/id/nav.json +10 -3
- package/locales/id/network.json +27 -2
- package/locales/id/nginx.json +4 -1
- package/locales/id/notFound.json +6 -0
- package/locales/id/notes.json +224 -36
- package/locales/id/projects.json +132 -10
- package/locales/id/protection.json +66 -2
- package/locales/id/publicFiles.json +18 -1
- package/locales/id/rbac.json +15 -2
- package/locales/id/readiness.json +32 -1
- package/locales/id/redis.json +24 -1
- package/locales/id/runtime.json +49 -2
- package/locales/id/search.json +13 -9
- package/locales/id/security.json +67 -6
- package/locales/id/serviceExposure.json +18 -6
- package/locales/id/services.json +68 -2
- package/locales/id/software.json +2 -1
- package/locales/id/softwareLifecycle.json +12 -2
- package/locales/id/ssl.json +12 -1
- package/locales/id/stackWizard.json +9 -2
- package/locales/id/support.json +36 -20
- package/locales/id/system.json +31 -2
- package/locales/id/systemd.json +3 -1
- package/locales/id/terminal.json +9 -1
- package/locales/id/translation.json +2358 -238
- package/locales/id/updates.json +76 -3
- package/locales/id/users.json +19 -1
- package/locales/id/validators.json +325 -0
- package/locales/id/vnc.json +17 -1
- package/locales/id/vpn.json +18 -3
- package/locales/ja/agents.json +17 -2
- package/locales/ja/apache.json +7 -1
- package/locales/ja/audit.json +4 -1
- package/locales/ja/backups.json +36 -1
- package/locales/ja/btTracker.json +121 -39
- package/locales/ja/catalog.json +10 -10
- package/locales/ja/cdn.json +89 -1
- package/locales/ja/cli.json +3 -3
- package/locales/ja/common.json +9 -1
- package/locales/ja/cron.json +33 -1
- package/locales/ja/dashboard.json +24 -3
- package/locales/ja/db.json +75 -3
- package/locales/ja/dns.json +23 -1
- package/locales/ja/docker.json +248 -0
- package/locales/ja/email.json +49 -10
- package/locales/ja/errors.json +5 -2
- package/locales/ja/fail2ban.json +26 -1
- package/locales/ja/files.json +52 -9
- package/locales/ja/firewall.json +17 -8
- package/locales/ja/ftp.json +32 -1
- package/locales/ja/hostBrowse.json +37 -15
- package/locales/ja/listToolbar.json +2 -1
- package/locales/ja/login.json +11 -6
- package/locales/ja/logs.json +31 -2
- package/locales/ja/metrics.json +36 -1
- package/locales/ja/migrate.json +27 -1
- package/locales/ja/nav.json +13 -6
- package/locales/ja/network.json +28 -3
- package/locales/ja/nginx.json +4 -1
- package/locales/ja/notFound.json +6 -0
- package/locales/ja/notes.json +233 -45
- package/locales/ja/projects.json +133 -11
- package/locales/ja/protection.json +66 -2
- package/locales/ja/publicFiles.json +18 -1
- package/locales/ja/rbac.json +15 -2
- package/locales/ja/readiness.json +32 -1
- package/locales/ja/redis.json +24 -1
- package/locales/ja/runtime.json +50 -3
- package/locales/ja/search.json +12 -8
- package/locales/ja/security.json +68 -7
- package/locales/ja/serviceExposure.json +18 -6
- package/locales/ja/services.json +68 -2
- package/locales/ja/software.json +2 -1
- package/locales/ja/softwareLifecycle.json +12 -2
- package/locales/ja/ssl.json +12 -1
- package/locales/ja/stackWizard.json +9 -2
- package/locales/ja/support.json +38 -22
- package/locales/ja/system.json +31 -2
- package/locales/ja/systemd.json +3 -1
- package/locales/ja/terminal.json +9 -1
- package/locales/ja/translation.json +2385 -265
- package/locales/ja/updates.json +76 -3
- package/locales/ja/users.json +19 -1
- package/locales/ja/validators.json +325 -0
- package/locales/ja/vnc.json +17 -1
- package/locales/ja/vpn.json +18 -3
- package/locales/ko/agents.json +17 -2
- package/locales/ko/apache.json +7 -1
- package/locales/ko/audit.json +4 -1
- package/locales/ko/backups.json +36 -1
- package/locales/ko/btTracker.json +121 -39
- package/locales/ko/catalog.json +8 -8
- package/locales/ko/cdn.json +89 -1
- package/locales/ko/cli.json +2 -2
- package/locales/ko/common.json +9 -1
- package/locales/ko/cron.json +33 -1
- package/locales/ko/dashboard.json +24 -3
- package/locales/ko/db.json +75 -3
- package/locales/ko/dns.json +23 -1
- package/locales/ko/docker.json +248 -0
- package/locales/ko/email.json +49 -10
- package/locales/ko/errors.json +5 -2
- package/locales/ko/fail2ban.json +37 -12
- package/locales/ko/files.json +52 -9
- package/locales/ko/firewall.json +18 -9
- package/locales/ko/ftp.json +32 -1
- package/locales/ko/hostBrowse.json +37 -15
- package/locales/ko/listToolbar.json +2 -1
- package/locales/ko/login.json +10 -5
- package/locales/ko/logs.json +31 -2
- package/locales/ko/metrics.json +36 -1
- package/locales/ko/migrate.json +27 -1
- package/locales/ko/nav.json +11 -4
- package/locales/ko/network.json +27 -2
- package/locales/ko/nginx.json +4 -1
- package/locales/ko/notFound.json +6 -0
- package/locales/ko/notes.json +243 -55
- package/locales/ko/playbooks.json +1 -1
- package/locales/ko/projects.json +134 -12
- package/locales/ko/protection.json +69 -5
- package/locales/ko/publicFiles.json +18 -1
- package/locales/ko/rbac.json +15 -2
- package/locales/ko/readiness.json +33 -2
- package/locales/ko/redis.json +24 -1
- package/locales/ko/runtime.json +49 -2
- package/locales/ko/search.json +13 -9
- package/locales/ko/security.json +68 -7
- package/locales/ko/serviceExposure.json +18 -6
- package/locales/ko/services.json +68 -2
- package/locales/ko/software.json +2 -1
- package/locales/ko/softwareLifecycle.json +12 -2
- package/locales/ko/ssl.json +12 -1
- package/locales/ko/stackWizard.json +9 -2
- package/locales/ko/support.json +36 -20
- package/locales/ko/system.json +31 -2
- package/locales/ko/systemd.json +3 -1
- package/locales/ko/terminal.json +9 -1
- package/locales/ko/translation.json +2404 -284
- package/locales/ko/updates.json +76 -3
- package/locales/ko/users.json +19 -1
- package/locales/ko/validators.json +325 -0
- package/locales/ko/vnc.json +17 -1
- package/locales/ko/vpn.json +19 -4
- package/locales/pt/agents.json +17 -2
- package/locales/pt/apache.json +7 -1
- package/locales/pt/audit.json +4 -1
- package/locales/pt/backups.json +36 -1
- package/locales/pt/btTracker.json +119 -37
- package/locales/pt/catalog.json +4 -4
- package/locales/pt/cdn.json +89 -1
- package/locales/pt/cli.json +2 -2
- package/locales/pt/common.json +9 -1
- package/locales/pt/cron.json +33 -1
- package/locales/pt/dashboard.json +24 -3
- package/locales/pt/db.json +75 -3
- package/locales/pt/dns.json +23 -1
- package/locales/pt/docker.json +248 -0
- package/locales/pt/email.json +49 -10
- package/locales/pt/errors.json +5 -2
- package/locales/pt/fail2ban.json +26 -1
- package/locales/pt/files.json +52 -9
- package/locales/pt/firewall.json +16 -7
- package/locales/pt/ftp.json +32 -1
- package/locales/pt/hostBrowse.json +37 -15
- package/locales/pt/listToolbar.json +2 -1
- package/locales/pt/login.json +14 -9
- package/locales/pt/logs.json +31 -2
- package/locales/pt/metrics.json +36 -1
- package/locales/pt/migrate.json +27 -1
- package/locales/pt/nav.json +10 -3
- package/locales/pt/network.json +27 -2
- package/locales/pt/nginx.json +4 -1
- package/locales/pt/notFound.json +6 -0
- package/locales/pt/notes.json +226 -38
- package/locales/pt/projects.json +131 -9
- package/locales/pt/protection.json +66 -2
- package/locales/pt/publicFiles.json +18 -1
- package/locales/pt/rbac.json +15 -2
- package/locales/pt/readiness.json +32 -1
- package/locales/pt/redis.json +24 -1
- package/locales/pt/runtime.json +49 -2
- package/locales/pt/search.json +11 -7
- package/locales/pt/security.json +68 -7
- package/locales/pt/serviceExposure.json +17 -5
- package/locales/pt/services.json +68 -2
- package/locales/pt/software.json +2 -1
- package/locales/pt/softwareLifecycle.json +12 -2
- package/locales/pt/ssl.json +12 -1
- package/locales/pt/stackWizard.json +9 -2
- package/locales/pt/support.json +36 -20
- package/locales/pt/system.json +31 -2
- package/locales/pt/systemd.json +3 -1
- package/locales/pt/terminal.json +9 -1
- package/locales/pt/translation.json +2358 -238
- package/locales/pt/updates.json +76 -3
- package/locales/pt/users.json +19 -1
- package/locales/pt/validators.json +325 -0
- package/locales/pt/vnc.json +17 -1
- package/locales/pt/vpn.json +17 -2
- package/locales/ur/agents.json +17 -2
- package/locales/ur/apache.json +7 -1
- package/locales/ur/audit.json +4 -1
- package/locales/ur/backups.json +36 -1
- package/locales/ur/btTracker.json +121 -39
- package/locales/ur/catalog.json +6 -6
- package/locales/ur/cdn.json +89 -1
- package/locales/ur/cli.json +2 -2
- package/locales/ur/common.json +9 -1
- package/locales/ur/cron.json +33 -1
- package/locales/ur/dashboard.json +24 -3
- package/locales/ur/db.json +75 -3
- package/locales/ur/dns.json +23 -1
- package/locales/ur/docker.json +248 -0
- package/locales/ur/email.json +49 -10
- package/locales/ur/errors.json +5 -2
- package/locales/ur/fail2ban.json +26 -1
- package/locales/ur/files.json +53 -10
- package/locales/ur/firewall.json +17 -8
- package/locales/ur/ftp.json +32 -1
- package/locales/ur/hostBrowse.json +37 -15
- package/locales/ur/listToolbar.json +2 -1
- package/locales/ur/login.json +13 -8
- package/locales/ur/logs.json +31 -2
- package/locales/ur/metrics.json +36 -1
- package/locales/ur/migrate.json +27 -1
- package/locales/ur/nav.json +10 -3
- package/locales/ur/network.json +27 -2
- package/locales/ur/nginx.json +4 -1
- package/locales/ur/notFound.json +6 -0
- package/locales/ur/notes.json +222 -34
- package/locales/ur/projects.json +133 -11
- package/locales/ur/protection.json +66 -2
- package/locales/ur/publicFiles.json +18 -1
- package/locales/ur/rbac.json +15 -2
- package/locales/ur/readiness.json +32 -1
- package/locales/ur/redis.json +24 -1
- package/locales/ur/runtime.json +49 -2
- package/locales/ur/search.json +13 -9
- package/locales/ur/security.json +68 -7
- package/locales/ur/serviceExposure.json +18 -6
- package/locales/ur/services.json +68 -2
- package/locales/ur/software.json +2 -1
- package/locales/ur/softwareLifecycle.json +12 -2
- package/locales/ur/ssl.json +12 -1
- package/locales/ur/stackWizard.json +9 -2
- package/locales/ur/support.json +37 -21
- package/locales/ur/system.json +31 -2
- package/locales/ur/systemd.json +3 -1
- package/locales/ur/terminal.json +9 -1
- package/locales/ur/translation.json +2367 -247
- package/locales/ur/updates.json +76 -3
- package/locales/ur/users.json +19 -1
- package/locales/ur/validators.json +325 -0
- package/locales/ur/vnc.json +17 -1
- package/locales/ur/vpn.json +19 -4
- package/locales/zh-CN/agents.json +17 -2
- package/locales/zh-CN/apache.json +8 -2
- package/locales/zh-CN/audit.json +4 -1
- package/locales/zh-CN/backups.json +36 -1
- package/locales/zh-CN/btTracker.json +85 -3
- package/locales/zh-CN/catalog.json +2 -2
- package/locales/zh-CN/cdn.json +89 -1
- package/locales/zh-CN/cli.json +5 -5
- package/locales/zh-CN/common.json +9 -1
- package/locales/zh-CN/cron.json +33 -1
- package/locales/zh-CN/dashboard.json +25 -4
- package/locales/zh-CN/db.json +76 -4
- package/locales/zh-CN/dns.json +23 -1
- package/locales/zh-CN/docker.json +248 -0
- package/locales/zh-CN/email.json +49 -10
- package/locales/zh-CN/errors.json +5 -2
- package/locales/zh-CN/fail2ban.json +31 -6
- package/locales/zh-CN/files.json +46 -3
- package/locales/zh-CN/firewall.json +11 -2
- package/locales/zh-CN/ftp.json +32 -1
- package/locales/zh-CN/hostBrowse.json +23 -1
- package/locales/zh-CN/listToolbar.json +2 -1
- package/locales/zh-CN/login.json +6 -1
- package/locales/zh-CN/logs.json +36 -7
- package/locales/zh-CN/metrics.json +36 -1
- package/locales/zh-CN/migrate.json +27 -1
- package/locales/zh-CN/nav.json +10 -3
- package/locales/zh-CN/network.json +28 -3
- package/locales/zh-CN/nginx.json +5 -2
- package/locales/zh-CN/notFound.json +6 -0
- package/locales/zh-CN/notes.json +216 -28
- package/locales/zh-CN/projects.json +130 -8
- package/locales/zh-CN/protection.json +66 -2
- package/locales/zh-CN/publicFiles.json +18 -1
- package/locales/zh-CN/rbac.json +15 -2
- package/locales/zh-CN/readiness.json +33 -2
- package/locales/zh-CN/redis.json +24 -1
- package/locales/zh-CN/runtime.json +50 -3
- package/locales/zh-CN/search.json +5 -1
- package/locales/zh-CN/security.json +68 -7
- package/locales/zh-CN/serviceExposure.json +13 -1
- package/locales/zh-CN/services.json +68 -2
- package/locales/zh-CN/software.json +2 -1
- package/locales/zh-CN/softwareLifecycle.json +12 -2
- package/locales/zh-CN/ssl.json +12 -1
- package/locales/zh-CN/stackWizard.json +9 -2
- package/locales/zh-CN/support.json +18 -2
- package/locales/zh-CN/system.json +32 -3
- package/locales/zh-CN/systemd.json +3 -1
- package/locales/zh-CN/terminal.json +9 -1
- package/locales/zh-CN/translation.json +2273 -153
- package/locales/zh-CN/updates.json +76 -3
- package/locales/zh-CN/users.json +19 -1
- package/locales/zh-CN/validators.json +325 -0
- package/locales/zh-CN/vnc.json +17 -1
- package/locales/zh-CN/vpn.json +19 -4
- package/locales/zh-HK/agents.json +22 -7
- package/locales/zh-HK/apache.json +8 -2
- package/locales/zh-HK/audit.json +4 -1
- package/locales/zh-HK/backups.json +39 -4
- package/locales/zh-HK/btTracker.json +89 -7
- package/locales/zh-HK/catalog.json +2 -2
- package/locales/zh-HK/cdn.json +91 -3
- package/locales/zh-HK/cli.json +15 -15
- package/locales/zh-HK/common.json +9 -1
- package/locales/zh-HK/cron.json +37 -5
- package/locales/zh-HK/dashboard.json +28 -7
- package/locales/zh-HK/db.json +82 -10
- package/locales/zh-HK/dns.json +23 -1
- package/locales/zh-HK/docker.json +248 -0
- package/locales/zh-HK/email.json +64 -25
- package/locales/zh-HK/errors.json +6 -3
- package/locales/zh-HK/fail2ban.json +32 -7
- package/locales/zh-HK/files.json +48 -5
- package/locales/zh-HK/firewall.json +13 -4
- package/locales/zh-HK/ftp.json +34 -3
- package/locales/zh-HK/hostBrowse.json +24 -2
- package/locales/zh-HK/listToolbar.json +2 -1
- package/locales/zh-HK/login.json +7 -2
- package/locales/zh-HK/logs.json +40 -11
- package/locales/zh-HK/metrics.json +38 -3
- package/locales/zh-HK/migrate.json +26 -0
- package/locales/zh-HK/nav.json +12 -5
- package/locales/zh-HK/network.json +32 -7
- package/locales/zh-HK/nginx.json +6 -3
- package/locales/zh-HK/notFound.json +6 -0
- package/locales/zh-HK/notes.json +270 -82
- package/locales/zh-HK/projects.json +143 -21
- package/locales/zh-HK/protection.json +67 -3
- package/locales/zh-HK/publicFiles.json +20 -3
- package/locales/zh-HK/rbac.json +15 -2
- package/locales/zh-HK/readiness.json +35 -4
- package/locales/zh-HK/redis.json +27 -4
- package/locales/zh-HK/runtime.json +58 -11
- package/locales/zh-HK/search.json +5 -1
- package/locales/zh-HK/security.json +79 -18
- package/locales/zh-HK/serviceExposure.json +13 -1
- package/locales/zh-HK/services.json +69 -3
- package/locales/zh-HK/software.json +2 -1
- package/locales/zh-HK/softwareLifecycle.json +12 -2
- package/locales/zh-HK/ssl.json +13 -2
- package/locales/zh-HK/stackWizard.json +10 -3
- package/locales/zh-HK/support.json +22 -6
- package/locales/zh-HK/system.json +36 -7
- package/locales/zh-HK/systemd.json +9 -7
- package/locales/zh-HK/terminal.json +10 -2
- package/locales/zh-HK/translation.json +2475 -355
- package/locales/zh-HK/uiInline.json +3 -3
- package/locales/zh-HK/updates.json +77 -4
- package/locales/zh-HK/users.json +20 -2
- package/locales/zh-HK/validators.json +325 -0
- package/locales/zh-HK/vnc.json +23 -7
- package/locales/zh-HK/vpn.json +23 -8
- package/package.json +8 -9
|
@@ -7,6 +7,8 @@
|
|
|
7
7
|
"body": "OpenClaw / Hermes / IonClaw install and supervision; all tool calls go through Allowlist and approval.",
|
|
8
8
|
"status": {
|
|
9
9
|
"running": "Running",
|
|
10
|
+
"activating": "Starting",
|
|
11
|
+
"stuck": "Start stuck",
|
|
10
12
|
"connected": "Online",
|
|
11
13
|
"registered": "Registered only",
|
|
12
14
|
"stale": "Stale",
|
|
@@ -17,6 +19,9 @@
|
|
|
17
19
|
"unknown": "Not probed",
|
|
18
20
|
"fallback": "Unknown"
|
|
19
21
|
},
|
|
22
|
+
"activatingStuckHint": "Activating longer than 5 minutes — treated as failed. Check journal.",
|
|
23
|
+
"noOnlineAgents": "No agents online",
|
|
24
|
+
"journal": "journal",
|
|
20
25
|
"liveN": "{{count}} online",
|
|
21
26
|
"registeredOnly": "Registered only",
|
|
22
27
|
"awaitProbe": "Awaiting probe",
|
|
@@ -26,9 +31,10 @@
|
|
|
26
31
|
"fleet": "Fleet",
|
|
27
32
|
"aiTasks": "AI tasks",
|
|
28
33
|
"expBanner": "Experimental.",
|
|
29
|
-
"expBody": "Registration ≠ online. Real ops use CLI:",
|
|
30
|
-
"expDocs": "
|
|
31
|
-
"
|
|
34
|
+
"expBody": "Registration ≠ online. Real ops use the CLI:",
|
|
35
|
+
"expDocs": "Repository file:",
|
|
36
|
+
"expEdge": "On an edge:",
|
|
37
|
+
"expPayload": "Command payload example:",
|
|
32
38
|
"fleetCan": "What the fleet can do",
|
|
33
39
|
"fleetCanDesc": "Not a hollow list — real control-plane capabilities for edge nodes",
|
|
34
40
|
"capRegister": "Register",
|
|
@@ -40,7 +46,14 @@
|
|
|
40
46
|
"capDelete": "Delete",
|
|
41
47
|
"capDeleteD": "Removes session and related messages",
|
|
42
48
|
"capStatus": "Status",
|
|
43
|
-
"capStatusD": "Registered only → online (heartbeat) → stale (>60s without heartbeat)",
|
|
49
|
+
"capStatusD": "Registered only → online (heartbeat) → stale (>60s without heartbeat) → offline (disconnected / no further heartbeat)",
|
|
50
|
+
"statusFlowTitle": "Status flow",
|
|
51
|
+
"statusFlow": "Registered only → online → stale (>60s) → offline (disconnected). Filter “Offline” is disconnected.",
|
|
52
|
+
"colSession": "Session UUID",
|
|
53
|
+
"copySession": "Copy session UUID for cluster / CLI --session",
|
|
54
|
+
"staleFor": "Unseen {{age}}",
|
|
55
|
+
"commandTitle": "Queue a command for this session",
|
|
56
|
+
"historyTitleShort": "Open command history (read-only)",
|
|
44
57
|
"fleetTitle": "Fleet ({{count}})",
|
|
45
58
|
"fleetDesc": "Control-plane registry · registered ≠ node online",
|
|
46
59
|
"registerPlus": "+ Register agent",
|
|
@@ -130,7 +143,9 @@
|
|
|
130
143
|
"labelStderr": "stderr",
|
|
131
144
|
"labelAckCli": "ack + CLI JSON",
|
|
132
145
|
"labelStdoutBody": "CLI stdout body",
|
|
133
|
-
"resultOuterHint": "Outer result is CLI --json stdout."
|
|
146
|
+
"resultOuterHint": "Outer result is CLI --json stdout.",
|
|
147
|
+
"noteAllowlist": "Agent tool calls must pass the allowlist.",
|
|
148
|
+
"noteRbacCap": "Agent role is capped at write-low."
|
|
134
149
|
},
|
|
135
150
|
"ai": {
|
|
136
151
|
"status": {
|
|
@@ -196,6 +211,7 @@
|
|
|
196
211
|
"apache": {
|
|
197
212
|
"pageDesc": "Apache sites (PHP projects + standalone)",
|
|
198
213
|
"pillSites": "{{count}} sites",
|
|
214
|
+
"pillSitesSplit": "{{n}} sites · {{leftover}} leftover",
|
|
199
215
|
"listTitle": "Sites ({{count}})",
|
|
200
216
|
"emptyTitle": "No sites",
|
|
201
217
|
"createSite": "+ Create site",
|
|
@@ -203,6 +219,7 @@
|
|
|
203
219
|
"editTitle": "Edit site",
|
|
204
220
|
"deleteTitle": "Delete site?",
|
|
205
221
|
"deleteDesc": "Remove this Apache site?",
|
|
222
|
+
"stopSites": "{{n}} site(s) will stop answering HTTP.",
|
|
206
223
|
"colServerName": "Server name",
|
|
207
224
|
"colSource": "Source",
|
|
208
225
|
"colKind": "Type",
|
|
@@ -213,6 +230,8 @@
|
|
|
213
230
|
"sourceProject": "Project",
|
|
214
231
|
"sourceStandalone": "Standalone",
|
|
215
232
|
"sourceArtifact": "On disk",
|
|
233
|
+
"sourceOrphan": "Leftover",
|
|
234
|
+
"orphanSite": "Project gone",
|
|
216
235
|
"openProject": "Open project",
|
|
217
236
|
"kindLabel": "Type",
|
|
218
237
|
"kindProxy": "Proxy",
|
|
@@ -221,6 +240,7 @@
|
|
|
221
240
|
"upstreamLabel": "Upstream",
|
|
222
241
|
"rootLabel": "Document root",
|
|
223
242
|
"sslLabel": "SSL",
|
|
243
|
+
"sslTerminatedUpstream": "TLS ends at front Nginx",
|
|
224
244
|
"apply": "Apply",
|
|
225
245
|
"notInstalled": "Apache not installed",
|
|
226
246
|
"globalSettings": "Global settings",
|
|
@@ -244,6 +264,7 @@
|
|
|
244
264
|
"removeArtifact": "Remove residual",
|
|
245
265
|
"removeArtifactTitle": "Remove residual conf?",
|
|
246
266
|
"removeArtifactDesc": "Delete this unclaimed Apache conf from the panel data directory and disable the system twin when possible. Does not delete the project.",
|
|
267
|
+
"removeArtifactHint": "Deletes this leftover disk conf. Does not delete the project.",
|
|
247
268
|
"previewConf": "Preview conf",
|
|
248
269
|
"cleanupConflicts": "Clean conflict residuals",
|
|
249
270
|
"cleanupConflictsTitle": "Clean all conflict residuals?",
|
|
@@ -285,7 +306,10 @@
|
|
|
285
306
|
"project.publish": "Publish Nginx",
|
|
286
307
|
"project.suspend": "Suspend project",
|
|
287
308
|
"software.install": "Install software",
|
|
288
|
-
"software.update": "Update software"
|
|
309
|
+
"software.update": "Update software",
|
|
310
|
+
"backup.restore": "Backup restore",
|
|
311
|
+
"backup.run": "Backup run",
|
|
312
|
+
"backup.delete": "Backup deleted"
|
|
289
313
|
}
|
|
290
314
|
},
|
|
291
315
|
"backups": {
|
|
@@ -304,6 +328,7 @@
|
|
|
304
328
|
"backupFiles": "Backup files",
|
|
305
329
|
"projects": "Projects",
|
|
306
330
|
"lastAll": "Last all",
|
|
331
|
+
"latestFile": "Latest archive",
|
|
307
332
|
"remote": "Remote",
|
|
308
333
|
"withBackups": "Projects with backups",
|
|
309
334
|
"ops": "Actions",
|
|
@@ -317,6 +342,10 @@
|
|
|
317
342
|
"preview": "Preview",
|
|
318
343
|
"restoreWeb": "Restore web",
|
|
319
344
|
"restoreFull": "Full restore",
|
|
345
|
+
"restoreFullTitle": "Overwrite project files and databases from this archive — type the file name to confirm",
|
|
346
|
+
"restoreWebTitle": "Restore website files only from this archive",
|
|
347
|
+
"previewTitle": "Preview restore without writing",
|
|
348
|
+
"partialSkipped": "Partial — some projects skipped",
|
|
320
349
|
"delete": "Delete",
|
|
321
350
|
"opsTitle": "Actions",
|
|
322
351
|
"opsHint": "0 projects or all skipped = success;",
|
|
@@ -371,6 +400,7 @@
|
|
|
371
400
|
"endpointOptional": "Endpoint (optional)",
|
|
372
401
|
"localMirror": "Local mirror path",
|
|
373
402
|
"remotePath": "Remote path",
|
|
403
|
+
"remotePathHint": "Relative to the remote user’s home (or SFTP chroot). “.” is that home.",
|
|
374
404
|
"resticTitle": "Restic incremental",
|
|
375
405
|
"resticDesc": "Optional; restic on PATH. Password required when enabled (no default)",
|
|
376
406
|
"enableRestic": "Enable restic",
|
|
@@ -398,8 +428,24 @@
|
|
|
398
428
|
"cancel": "Cancel",
|
|
399
429
|
"deleteFailed": "Delete failed",
|
|
400
430
|
"deleted": "Deleted",
|
|
401
|
-
"deleteTitle": "
|
|
402
|
-
"deleteDesc": "
|
|
431
|
+
"deleteTitle": "Move backup to recycle bin?",
|
|
432
|
+
"deleteDesc": "Move {{name}} to the recycle bin. Permanent delete after 7 days.",
|
|
433
|
+
"tabTrash": "Recycle bin",
|
|
434
|
+
"trashTitle": "Recycle bin ({{count}})",
|
|
435
|
+
"trashSub": "Deleted archives stay here for 7 days, then they are removed permanently.",
|
|
436
|
+
"trashEmpty": "Recycle bin is empty",
|
|
437
|
+
"trashEmptyDesc": "Deleted backup files appear here for 7 days.",
|
|
438
|
+
"trashRestore": "Restore",
|
|
439
|
+
"trashPurge": "Delete forever",
|
|
440
|
+
"trashEmptyAll": "Empty recycle bin",
|
|
441
|
+
"trashExpires": "Expires {{at}}",
|
|
442
|
+
"trashPurgeTitle": "Permanently delete this backup?",
|
|
443
|
+
"trashPurgeDesc": "Permanently delete {{name}}. This cannot be undone.",
|
|
444
|
+
"trashEmptyTitle": "Empty recycle bin?",
|
|
445
|
+
"trashEmptyDescConfirm": "Permanently delete {{count}} archive(s). Type the count to confirm.",
|
|
446
|
+
"trashRestored": "Restored from recycle bin",
|
|
447
|
+
"trashPurged": "Permanently deleted",
|
|
448
|
+
"trashedOk": "Moved to recycle bin",
|
|
403
449
|
"resticSafeTitle": "restic restore to safe directory?",
|
|
404
450
|
"resticSafeDesc": "Restore {{snapshot}} to project {{project}} .restic-restore-* directory",
|
|
405
451
|
"resticRestoreDone": "restic restore complete",
|
|
@@ -410,7 +456,7 @@
|
|
|
410
456
|
"resticOverwriteDone": "restic overwrite home complete",
|
|
411
457
|
"opsResult": "Ops result",
|
|
412
458
|
"filesTitle": "Backup files ({{count}})",
|
|
413
|
-
"filesSub": "
|
|
459
|
+
"filesSub": "Archives live in the panel data directory. Download needs a login. Restore can preview, restore the site only, or restore everything.",
|
|
414
460
|
"backupAllBtn": "Backup all",
|
|
415
461
|
"yes": "Yes",
|
|
416
462
|
"no": "No",
|
|
@@ -419,7 +465,20 @@
|
|
|
419
465
|
"remotePushSub": "After local tar succeeds, push to SFTP, local path, or S3",
|
|
420
466
|
"accessKey": "Access Key",
|
|
421
467
|
"secretKey": "Secret Key",
|
|
422
|
-
"overwriteConfirmHint": "Type OVERWRITE to confirm overwrite"
|
|
468
|
+
"overwriteConfirmHint": "Type OVERWRITE to confirm overwrite",
|
|
469
|
+
"testRemote": "Test destination",
|
|
470
|
+
"testRemoteHint": "Connects to the remote host and writes a small probe file. Not read-only.",
|
|
471
|
+
"testRemoteDone": "Remote probe finished",
|
|
472
|
+
"testRemoteFailed": "Remote probe failed",
|
|
473
|
+
"resticRepoPh": "Panel data directory / restic-repo",
|
|
474
|
+
"testDisabledHint": "Turn on remote push before testing.",
|
|
475
|
+
"identityId": "Outbound SSH identity",
|
|
476
|
+
"identityHint": "Preferred. Same vault as /security SSH. Password needs sshpass.",
|
|
477
|
+
"identityNone": "None — password or default key",
|
|
478
|
+
"skippedListHint": "These projects were skipped:",
|
|
479
|
+
"skippedPendingOs": "Skipped — OS user / home not provisioned",
|
|
480
|
+
"goLogs": "Open logs",
|
|
481
|
+
"goAbout": "Backup notes"
|
|
423
482
|
},
|
|
424
483
|
"btTracker": {
|
|
425
484
|
"title": "BT Tracker",
|
|
@@ -431,11 +490,19 @@
|
|
|
431
490
|
"installed": "Installed",
|
|
432
491
|
"start": "Start",
|
|
433
492
|
"stop": "Stop",
|
|
493
|
+
"stopTitle": "Stop the tracker — seeding and downloads will interrupt",
|
|
494
|
+
"stopDesc": "Running torrents stop announcing. Peers disconnect until you start the tracker again.",
|
|
495
|
+
"fillPublicHost": "Use {{host}}",
|
|
496
|
+
"fillPublicHostTitle": "Fill the current panel hostname as the public announce host",
|
|
434
497
|
"refresh": "Refresh",
|
|
435
498
|
"settings": "Settings",
|
|
436
499
|
"httpPort": "HTTP / WS port",
|
|
437
500
|
"udpPort": "UDP port",
|
|
438
501
|
"listenHost": "Listen",
|
|
502
|
+
"listenHostHint": "0.0.0.0 listens on every address. Prefer 127.0.0.1 unless peers must reach this host.",
|
|
503
|
+
"listenAllWarn": "Tracker is bound to all addresses. With the firewall off this is public. Bind 127.0.0.1 for local-only, or restrict the port in the firewall.",
|
|
504
|
+
"bindLoopback": "127.0.0.1 only",
|
|
505
|
+
"bindAll": "0.0.0.0 (all)",
|
|
439
506
|
"wsEnabled": "WebSocket",
|
|
440
507
|
"wsEnabledHint": "",
|
|
441
508
|
"autostart": "Autostart",
|
|
@@ -444,12 +511,14 @@
|
|
|
444
511
|
"publicAnnounceHostHint": "",
|
|
445
512
|
"maxSeeds": "Max seeds",
|
|
446
513
|
"seederPorts": "Peer ports",
|
|
447
|
-
"
|
|
514
|
+
"seederPortMin": "Peer port start",
|
|
515
|
+
"seederPortMax": "Peer port end",
|
|
516
|
+
"seederPortsHint": "Inclusive range used by the local seeder (typically 6881–6889).",
|
|
448
517
|
"saveSettings": "Save",
|
|
449
518
|
"applyHint": "",
|
|
450
519
|
"torrents": "Torrents",
|
|
451
520
|
"torrentsEmpty": "No torrents",
|
|
452
|
-
"torrentsEmptyHint": "
|
|
521
|
+
"torrentsEmptyHint": "Add a .torrent, or create a BT share in Files",
|
|
453
522
|
"torrentsDesc": "",
|
|
454
523
|
"colName": "Name",
|
|
455
524
|
"colHash": "Hash",
|
|
@@ -461,8 +530,16 @@
|
|
|
461
530
|
"copy": "Copy",
|
|
462
531
|
"copied": "Copied",
|
|
463
532
|
"statsTorrents": "Torrents",
|
|
533
|
+
"statsLibrary": "Library",
|
|
534
|
+
"statsLibraryHint": "Torrents in the panel library / file shares",
|
|
535
|
+
"statsTrackerLeftover": "Tracker hashes not in library",
|
|
536
|
+
"statsTrackerLeftoverHint": "Info-hashes the local tracker has announced that are not torrent-library rows. Listed on the Tracker tab.",
|
|
537
|
+
"leftoverHashesTitle": "Tracker leftover hashes",
|
|
538
|
+
"publicHostMissingLive": "Tracker is listening but public announce host is not set. Off-host peers cannot find this seed.",
|
|
539
|
+
"leftoverHashesHint": "Read-only. These announces are not library or share rows.",
|
|
464
540
|
"statsPeers": "Peers",
|
|
465
541
|
"statsAnnounces": "Announces",
|
|
542
|
+
"statsAnnouncesHint": "Announce requests seen by the tracker process",
|
|
466
543
|
"statsJobs": "Jobs",
|
|
467
544
|
"openShares": "Shares",
|
|
468
545
|
"needExecute": "YSK_EXECUTE required to bind ports",
|
|
@@ -538,7 +615,71 @@
|
|
|
538
615
|
"udpPortSameHttp": "Same HTTP ({{port}})",
|
|
539
616
|
"udpPortClassic": "6969",
|
|
540
617
|
"portSuggest8000": "8000",
|
|
541
|
-
"announceHostUnset": "
|
|
618
|
+
"announceHostUnset": "Not set",
|
|
619
|
+
"tabTrackers": "Trackers",
|
|
620
|
+
"addTorrent": "Add torrent",
|
|
621
|
+
"addTorrentTitle": "Add torrent",
|
|
622
|
+
"addTorrentHint": "Upload a .torrent or paste a magnet. Choose a Files folder. WebTorrent downloads missing files and seeds when complete.",
|
|
623
|
+
"dropTorrent": "Drop a .torrent here",
|
|
624
|
+
"chooseFile": "or choose a file",
|
|
625
|
+
"magnetLabel": "Magnet",
|
|
626
|
+
"magnetPlaceholder": "magnet:?xt=urn:btih:…",
|
|
627
|
+
"inspect": "Read",
|
|
628
|
+
"extraTrackersPreview": "Will also announce to {{n}} extra tracker(s)",
|
|
629
|
+
"saveLocation": "Save location",
|
|
630
|
+
"saveRootPublic": "Public files",
|
|
631
|
+
"newFolder": "New folder",
|
|
632
|
+
"destPreview": "Will write to",
|
|
633
|
+
"startDownload": "Start download",
|
|
634
|
+
"filterDownloading": "Downloading",
|
|
635
|
+
"filterPaused": "Paused",
|
|
636
|
+
"filterError": "Error",
|
|
637
|
+
"emptyDrop": "Drop a .torrent here, or choose a file",
|
|
638
|
+
"emptyHint": "Files go in the folder you pick. If they are already complete, this host seeds. Engine: WebTorrent — no extra download software.",
|
|
639
|
+
"pause": "Pause",
|
|
640
|
+
"resume": "Resume",
|
|
641
|
+
"openFolder": "Open folder",
|
|
642
|
+
"remove": "Remove",
|
|
643
|
+
"removeKeep": "Remove, keep files",
|
|
644
|
+
"removeDelete": "Remove and delete files",
|
|
645
|
+
"removeConfirm": "Remove this torrent from the library?",
|
|
646
|
+
"kindShare": "Share",
|
|
647
|
+
"filesInTorrent": "files",
|
|
648
|
+
"extraTrackersDesc": "Extra announce URLs. Library download/seed and file-share seeds use them in addition to the .torrent list. This does not open the local tracker to arbitrary swarms.",
|
|
649
|
+
"extraTrackersEmpty": "No extra trackers. Add HTTP(S), UDP, or WS(S) announce URLs so this host can find peers.",
|
|
650
|
+
"extraTrackerAdd": "Add",
|
|
651
|
+
"extraTrackerUrl": "Announce URL",
|
|
652
|
+
"extraTrackerApply": "Apply to current seeds",
|
|
653
|
+
"extraTrackerApplyOk": "Applied extra trackers",
|
|
654
|
+
"extraEnabled": "On",
|
|
655
|
+
"extraTrackerBad": "URL must start with http://, https://, udp://, ws://, or wss://",
|
|
656
|
+
"extraTrackerDup": "Already listed",
|
|
657
|
+
"extraTrackerLimit": "Maximum 32 extra trackers",
|
|
658
|
+
"addOk": "Added to library",
|
|
659
|
+
"savedTo": "Save",
|
|
660
|
+
"folderEmpty": "No subfolders",
|
|
661
|
+
"needTorrentFile": "Choose a .torrent file",
|
|
662
|
+
"torrentTooBig": ".torrent larger than 8 MiB",
|
|
663
|
+
"seedStatusDownloading": "Downloading",
|
|
664
|
+
"seedStatusChecking": "Checking",
|
|
665
|
+
"seedStatusPaused": "Paused",
|
|
666
|
+
"seedStatusQueued": "Queued",
|
|
667
|
+
"swarmLeftover": "Tracker has {{count}} announce(s) not in the library",
|
|
668
|
+
"addSourceSection": "Source",
|
|
669
|
+
"addSourceFile": "File",
|
|
670
|
+
"addSourceMagnet": "Magnet",
|
|
671
|
+
"previewSection": "Preview",
|
|
672
|
+
"saveRoot": "Root",
|
|
673
|
+
"clearFile": "Clear file",
|
|
674
|
+
"extraTrackersTitle": "Extra announce",
|
|
675
|
+
"extraTrackersEmptyTitle": "No extra trackers yet",
|
|
676
|
+
"extraEnabledCount": "{{count}} enabled",
|
|
677
|
+
"extraApplyHint": "Enable at least one tracker to apply to current seeds",
|
|
678
|
+
"destMode": "How to use this folder",
|
|
679
|
+
"seedExisting": "Seed existing files",
|
|
680
|
+
"downloadNewFolder": "Download into a new folder",
|
|
681
|
+
"destFileConflict": "A file named {{name}} already exists here. Pick another folder, or seed the existing file if it matches.",
|
|
682
|
+
"waitingPeers": "Waiting for peers. If the files are already on this host, add again and choose Seed existing files."
|
|
542
683
|
},
|
|
543
684
|
"catalog": {
|
|
544
685
|
"sw": {
|
|
@@ -604,8 +745,60 @@
|
|
|
604
745
|
"confWritten": "Conf written ({{status}})",
|
|
605
746
|
"partialFail": "Not fully successful ({{status}}) — see notes",
|
|
606
747
|
"statNodes": "Nodes",
|
|
748
|
+
"hitNoStats": "No edge stats yet",
|
|
749
|
+
"loopbackOriginBlocked": "Will not apply loopback origin {{url}} to a remote edge. Set a reachable origin first.",
|
|
750
|
+
"applyFailedHint": "Apply failed",
|
|
751
|
+
"applyFailedNoNote": "No stored reason. Re-apply to capture the error.",
|
|
752
|
+
"applyStatus": {
|
|
753
|
+
"draft": "Draft",
|
|
754
|
+
"planned": "Planned",
|
|
755
|
+
"applying": "Applying",
|
|
756
|
+
"applied": "Applied",
|
|
757
|
+
"failed": "Failed",
|
|
758
|
+
"partial": "Partial"
|
|
759
|
+
},
|
|
607
760
|
"statSites": "Sites",
|
|
761
|
+
"statApplyFailed": "Apply failed",
|
|
762
|
+
"pillNodesSites": "{{n}} nodes · {{s}} sites",
|
|
763
|
+
"statOnline": "Online",
|
|
764
|
+
"statHit": "Hit rate",
|
|
765
|
+
"hitUnknown": "Unknown",
|
|
766
|
+
"lastHealthHint": "Last probe {{at}} · {{ok}}",
|
|
767
|
+
"lastHealthNever": "Not probed yet — run Probe",
|
|
768
|
+
"lastHealthFail": "probe failed",
|
|
769
|
+
"healthLoopNeedSites": "Add a site first",
|
|
770
|
+
"nodeStatus": {
|
|
771
|
+
"online": "online",
|
|
772
|
+
"offline": "offline",
|
|
773
|
+
"draining": "draining",
|
|
774
|
+
"unknown": "unknown"
|
|
775
|
+
},
|
|
608
776
|
"recentNotes": "Recent notes",
|
|
777
|
+
"previewOnlyNote": "Preview only — nothing was written to the edges.",
|
|
778
|
+
"statByRegion": "Region: ",
|
|
779
|
+
"statByApply": "Apply status: ",
|
|
780
|
+
"col": {
|
|
781
|
+
"origin": "Origin",
|
|
782
|
+
"edges": "Edges",
|
|
783
|
+
"apply": "Apply",
|
|
784
|
+
"dns": "DNS",
|
|
785
|
+
"edgesOnline": "Edges online / applied",
|
|
786
|
+
"dnsRr": "CDN DNS records"
|
|
787
|
+
},
|
|
788
|
+
"mode": {
|
|
789
|
+
"origin_pull": "Origin pull",
|
|
790
|
+
"reverse_proxy": "Reverse proxy",
|
|
791
|
+
"static_edge": "Static edge"
|
|
792
|
+
},
|
|
793
|
+
"dnsStrategy": {
|
|
794
|
+
"multi_a": "Multiple A records",
|
|
795
|
+
"cname": "CNAME",
|
|
796
|
+
"geo": "Geo"
|
|
797
|
+
},
|
|
798
|
+
"edgesOnlineApplied": "{{online}}/{{total}} online · {{applied}} applied",
|
|
799
|
+
"hitMiss": "Hits {{hits}} / misses {{misses}}",
|
|
800
|
+
"cacheBytes": "Cache ≈ {{n}} B",
|
|
801
|
+
"hitRateUnknown": "No access log with cache status and no cache directory, so hit rate cannot be estimated.",
|
|
609
802
|
"edgeConfPreview": "Nginx edge conf preview",
|
|
610
803
|
"tabs": {
|
|
611
804
|
"nodes": "Nodes",
|
|
@@ -614,11 +807,41 @@
|
|
|
614
807
|
"about": "About"
|
|
615
808
|
},
|
|
616
809
|
"nodesTitle": "CDN nodes ({{count}})",
|
|
617
|
-
"nodesDesc": "Register control
|
|
810
|
+
"nodesDesc": "Register control-plane, origin, edge, and DNS nodes. Probe refreshes status.",
|
|
811
|
+
"offlineHint": "Offline — probe failed. Remove the node if it is leftover.",
|
|
618
812
|
"colName": "Name",
|
|
619
813
|
"colRole": "Role",
|
|
620
814
|
"colStatus": "Status",
|
|
621
815
|
"clearDrain": "Clear drain",
|
|
816
|
+
"drain": "Drain",
|
|
817
|
+
"drainTitle": "Stop sending new CDN traffic to this edge",
|
|
818
|
+
"drainDesc": "Drain “{{name}}”? Existing connections stay until they finish.",
|
|
819
|
+
"drainLastTitle": "This is the last edge — drain will leave every site without an edge",
|
|
820
|
+
"drainLastDesc": "“{{name}}” is the only edge. Drain it and all sites have no edge.",
|
|
821
|
+
"clearDrainTitle": "Accept new traffic on this edge again",
|
|
822
|
+
"clearDrainDesc": "Clear drain on “{{name}}”?",
|
|
823
|
+
"deleteNodeTitle": "Delete this CDN edge",
|
|
824
|
+
"deleteLastNodeTitle": "Delete the last edge — all sites will have no edge",
|
|
825
|
+
"purge": "Purge",
|
|
826
|
+
"previewTitle": "Preview nginx config (no write)",
|
|
827
|
+
"writeConfTitle": "Write edge nginx config files",
|
|
828
|
+
"applyEdgesTitle": "Apply this site to edges (writes nginx)",
|
|
829
|
+
"purgeTitle": "Purge cache on edges",
|
|
830
|
+
"dnsSyncTitle": "Write CDN DNS records",
|
|
831
|
+
"probeDnsTitle": "Probe edges and DNS (read-only)",
|
|
832
|
+
"distSslTitle": "Copy TLS materials to edges",
|
|
833
|
+
"leIssueTitle": "Issue a Let’s Encrypt certificate and distribute it",
|
|
834
|
+
"deleteSiteTitle": "Delete this CDN site",
|
|
835
|
+
"siteOpConfirmGeneric": "Run this action on “{{name}}”?",
|
|
836
|
+
"siteOpConfirmDesc": "Site “{{name}}” · {{action}}. This can change nginx, DNS, or certificates.",
|
|
837
|
+
"siteOpConfirm": {
|
|
838
|
+
"apply": "Apply this site to edges?",
|
|
839
|
+
"render": "Write nginx config for this site?",
|
|
840
|
+
"purge": "Purge cache for this site?",
|
|
841
|
+
"dns-sync": "Sync DNS for this site?",
|
|
842
|
+
"dist": "Distribute TLS to edges?",
|
|
843
|
+
"issue": "Issue Let’s Encrypt and distribute?"
|
|
844
|
+
},
|
|
622
845
|
"emptyNodesTitle": "No CDN nodes yet",
|
|
623
846
|
"emptyNodesDesc": "Use “+ Add node” to register an edge, then create sites.",
|
|
624
847
|
"sitesTitle": "CDN sites ({{count}})",
|
|
@@ -689,7 +912,13 @@
|
|
|
689
912
|
"deleteNodeDesc": "Deletes CDN node \"{{name}}\".",
|
|
690
913
|
"deleteSiteDesc": "Deletes CDN site \"{{name}}\".",
|
|
691
914
|
"deleteSiteC1": "Site policy and edge associations",
|
|
692
|
-
"deleteSiteC2": "Applied nginx configs may need separate cleanup or re-apply"
|
|
915
|
+
"deleteSiteC2": "Applied nginx configs may need separate cleanup or re-apply",
|
|
916
|
+
"statOnlineOf": "Online {{n}}/{{total}}",
|
|
917
|
+
"colRegion": "Region",
|
|
918
|
+
"statDraining": "Draining {{n}}",
|
|
919
|
+
"statOffline": "Offline {{n}}",
|
|
920
|
+
"localTest": "local / test",
|
|
921
|
+
"statHitRate": "Hit rate {{v}}"
|
|
693
922
|
},
|
|
694
923
|
"cli": {
|
|
695
924
|
"unknownCommand": "Unknown command: {{command}}\nRun `{{cli}} help`",
|
|
@@ -705,7 +934,7 @@
|
|
|
705
934
|
},
|
|
706
935
|
"help": {
|
|
707
936
|
"blurb": "Control plane CLI — prefer --json for AI agents.\nDocs: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json",
|
|
708
|
-
"main": "{{product}} ({{cli}}) v{{version}}\n\nControl plane CLI — prefer --json for AI agents.\nDocs: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json\n\nUsage:\n {{cli}} <command> [options]\n\nCommands:\n setup Init dataDir + admin\n update Self-update check/apply\n serve HTTP API + Web UI\n system unit-install Install ysk-server.service [--enable]\n tools List tools; tools run --tool <name> [--dry-run]\n ask NL → AI plan [--execute]\n projects list|get|create|deploy|stop|health|backup|template\n backup all|list|status|restore|delete|schedule|control-plane|settings|restic\n templates App templates\n hosting nginx|dns|db|firewall helpers\n dns zone|zones
|
|
937
|
+
"main": "{{product}} ({{cli}}) v{{version}}\n\nControl plane CLI — prefer --json for AI agents.\nDocs: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json\n\nUsage:\n {{cli}} <command> [options]\n\nCommands:\n setup Init dataDir + admin\n update Self-update check/apply\n serve HTTP API + Web UI\n system unit-install Install ysk-server.service [--enable]\n stack plans|bundles|status|install|uninstall\n tools List tools; tools run --tool <name> [--dry-run]\n ask NL → AI plan [--execute]\n projects list|get|create|deploy|stop|health|backup|template\n users list|create|totp\n packages list\n rbac list|show\n audit list\n backup all|list|status|restore|delete|schedule|control-plane|settings|restic\n templates App templates\n hosting nginx|dns|db|firewall helpers\n dns zone|zones|lookup\n logs sources|query|journal|overview\n host overview|metrics (read-only)\n nginx status|list|test|sync\n ssl list|get (certificates)\n db-cluster list|get|create|plan (HA plan-first)\n ssh-key list|create|import|public|export|install|delete (SSH identity vault)\n ssh-2fa list|enroll|confirm|install|pam|retire (SSH login TOTP ≠ panel 2FA)\n services Host service matrix (systemctl probe)\n defense | protection status|ban|unban|whitelist\n security status|sessions|api-keys (2FA flags · session revoke · API keys)\n cdn nodes|sites|render|apply|purge|probe|dashboard|health-loop|from-project\n agents runtimes|fleet list|commands|register (panel + edge)\n agent run Outbound fleet poller (experimental)\n store status|export|import|migrate (json|sqlite|postgres document backends)\n files list|read|write|mkdir|rm|stat|rename|copy|move|chmod|trash|shares (sandbox)\n cron list|create|delete|enable|disable|run|install|status\n email domains|mailboxes|deliverability|bootstrap|dns (panel parity)\n health Local mode snapshot or --url http://host:port/health\n notifications list\n readiness | doctor Production readiness (honest)\n migrate inventory|host|post|status|resume|orphan-homes (full host migrate)\n vpn WireGuard / OpenVPN\n vnc accounts|clients|share\n apache sites|settings\n network ifaces|exposure|real-ip\n real-ip CDN Real IP\n updates inventory|apply\n software list|install|uninstall\n db MySQL / MariaDB / PostgreSQL\n redis status|keys|get|set\n ftp accounts|status\n runtimes list|install\n bt-tracker status|settings\n validators list|chains|disk|get (Beta)\n docker status|ps|images|compose|prune (engine)\n version | help\n\nGlobal:\n --json JSON stdout (AI)\n --data-dir PATH also --data-dir=PATH or YSK_DATA_DIR\n --config PATH\n --locale CODE CLI language (default en). Also YSK_LOCALE.\n Codes: en zh-HK zh-CN ja ko hi es ar fr bn pt id ur\n --limit N --offset N Slice large JSON lists (software / updates / host metrics / rbac)\n --help | --version\n\nExit: 0 ok · 1 error · 2 validation · 3 blocked · 4 not found · 5 host error\n\nSafety:\n Dangerous ops default to dry-run (plan only).\n Pass --execute (alias --apply) + env YSK_EXECUTE=1 to mutate host.\n Command names and flags are always English. --locale only translates messages.\n\nExamples:\n {{cli}} readiness --json\n {{cli}} host --json\n {{cli}} nginx status --json\n {{cli}} ssl list --json\n {{cli}} projects get --id UUID --json\n {{cli}} defense ban --ip 1.2.3.4 --json # dry-run plan\n {{cli}} projects list --json\n {{cli}} --locale=zh-HK help\n {{cli}} logs query --source journal: --lines 100 --json\n {{cli}} tools --json"
|
|
709
938
|
},
|
|
710
939
|
"usage": {
|
|
711
940
|
"tools": {
|
|
@@ -1295,7 +1524,7 @@
|
|
|
1295
1524
|
"--name": {
|
|
1296
1525
|
"name": {
|
|
1297
1526
|
"--domain": {
|
|
1298
|
-
"66e857": "Usage: ysk-server projects create --name <name> [--domain d] [--runtime node|php|static|python|go|rust] [--template id]\n"
|
|
1527
|
+
"66e857": "Usage: ysk-server projects create --name <name> [--domain d] [--runtime node|php|static|python|go|rust] [--template id] [--git-url URL] [--branch B] [--create-dns] [--create-mail] [--server-ip A.B.C.D] [--server-ipv6 ADDR]\n"
|
|
1299
1528
|
}
|
|
1300
1529
|
}
|
|
1301
1530
|
}
|
|
@@ -1313,7 +1542,7 @@
|
|
|
1313
1542
|
"--id": {
|
|
1314
1543
|
"id": {
|
|
1315
1544
|
"--git-url": {
|
|
1316
|
-
"a513f5": "Usage: ysk-server projects git-deploy --id ID [--git-url URL] [--branch main] [--no-redeploy] [--depth 1] [--entry f]\n"
|
|
1545
|
+
"a513f5": "Usage: ysk-server projects git-deploy --id ID [--git-url URL] [--branch|--ref main] [--no-redeploy] [--depth 1] [--entry f]\n"
|
|
1317
1546
|
}
|
|
1318
1547
|
}
|
|
1319
1548
|
}
|
|
@@ -1331,7 +1560,7 @@
|
|
|
1331
1560
|
"get": {
|
|
1332
1561
|
"create": {
|
|
1333
1562
|
"deploy": {
|
|
1334
|
-
"253b48": "Usage: ysk-server projects list|get|create|deploy|git-deploy|stop|backup|template|health [options]\n deploy --id UUID [--entry f] [--port N] [--fpm|--builtin] [--reload]\n git-deploy --id UUID [--git-url URL] [--branch B] [--no-redeploy]\n"
|
|
1563
|
+
"253b48": "Usage: ysk-server projects list|get|create|deploy|git-deploy|git|stop|backup|template|ftp|health [options]\n deploy --id UUID [--entry f] [--port N] [--fpm|--builtin] [--reload]\n git-deploy --id UUID [--git-url URL] [--branch|--ref B] [--no-redeploy]\n git status|log|fetch|checkout|reset|auth|hook|deploy --id UUID [--ref R] [--unshallow] [--yes]\n git auth --id UUID --token T|--deploy-key|--pin-host\n git hook --id UUID --enable|--rotate|--disable\n ftp --id UUID --password P [--user NAME] [--home app|root]\n"
|
|
1335
1564
|
}
|
|
1336
1565
|
}
|
|
1337
1566
|
}
|
|
@@ -1575,7 +1804,7 @@
|
|
|
1575
1804
|
},
|
|
1576
1805
|
"status": {
|
|
1577
1806
|
"bans": {
|
|
1578
|
-
"a8d96b": "Usage: {{CLI_NAME}} defense status|bans|suspects|ban|unban|whitelist|stack-apply|fail2ban|firewall|timeline|presets [--json]\n
|
|
1807
|
+
"a8d96b": "Usage: {{CLI_NAME}} defense status|bans|suspects|ban|unban|whitelist|stack-apply|fail2ban|firewall|timeline|presets [--json]\n bans [--q text] [--source fail2ban|panel|ufw|auto]\n suspects [--q text]\n stack-apply [--execute] # UFW + fail2ban + current preset\n fail2ban | firewall # deep probes (honest)\n timeline [--limit N] [--q text]\n presets # list + activePreset\n"
|
|
1579
1808
|
}
|
|
1580
1809
|
}
|
|
1581
1810
|
}
|
|
@@ -1597,7 +1826,7 @@
|
|
|
1597
1826
|
"--username": {
|
|
1598
1827
|
"u": {
|
|
1599
1828
|
"--password": {
|
|
1600
|
-
"7145c7": "Usage: ysk-server users create --username <u> --password <p> [--role operator|viewer|admin] [--package-id id]\n"
|
|
1829
|
+
"7145c7": "Usage: ysk-server users create --username <u> --password <p> [--role operator|viewer|admin] [--package-id id] [--locale zh-HK]\n"
|
|
1601
1830
|
}
|
|
1602
1831
|
}
|
|
1603
1832
|
}
|
|
@@ -1741,7 +1970,7 @@
|
|
|
1741
1970
|
}
|
|
1742
1971
|
},
|
|
1743
1972
|
"x": {
|
|
1744
|
-
"972912": "Usage:\n ysk-server migrate inventory [--data-dir PATH] --json\n ysk-server migrate host --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n ysk-server migrate post --job ID --data-dir PATH --execute # on target\n ysk-server migrate status [--job ID]\n ysk-server migrate resume --job ID --execute\n"
|
|
1973
|
+
"972912": "Usage:\n ysk-server migrate inventory [--data-dir PATH] --json\n ysk-server migrate host --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n ysk-server migrate post --job ID --data-dir PATH --execute # on target\n ysk-server migrate status [--job ID]\n ysk-server migrate resume --job ID --execute\n ysk-server migrate orphan-homes [--data-dir PATH] --json\n ysk-server migrate orphan-homes --path /home/ysk-server-UUID --confirm PATH --execute\n"
|
|
1745
1974
|
},
|
|
1746
1975
|
"hostingHelp": "Usage: ysk-server hosting <sub>\n Dangerous ops default dry-run; add --execute (+ YSK_EXECUTE=1) to apply\n nginx | nginx-sync [--execute]\n redis-provision | postgres-provision | mysql-provision [--execute]\n dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validate] [--reload]\n dns-zones | powerdns-status | powerdns-install [--install|--execute]\n powerdns-load --zone X --ip A.B.C.D [--load|--execute]\n email-apply --domain X [--install|--execute]\n email-mailbox --domain X --local user [--password P] [--ip A.B.C.D] [--system]\n ftps-apply --domain X [--install|--execute]\n runtimes | runtime-install --kind node|php|python|go|rust --version V [--install|--execute]\n dovecot-passdb --domain X | --all\n webmail-apply --domain webmail.example.com [--download]\n public-files --domain files.example.com [--reload]\n email-bootstrap --domain example.com --ip A.B.C.D [--install|--execute]\n email-deliverability --domain example.com # PTR/DNSBL/warmup pack (honest)\n firewall-apply [--smtp] [--execute]\n",
|
|
1747
1976
|
"logsQuery": "Usage: {{CLI_NAME}} logs query --source <id> [--lines N] [--grep G] [--since 1h] [--priority err]\n source examples: journal: journal:nginx.service file:syslog project:<uuid>\n {{CLI_NAME}} logs sources --json\n {{CLI_NAME}} logs journal [--unit nginx.service] --json\n"
|
|
@@ -1874,6 +2103,7 @@
|
|
|
1874
2103
|
}
|
|
1875
2104
|
},
|
|
1876
2105
|
"common": {
|
|
2106
|
+
"all": "All",
|
|
1877
2107
|
"cancel": "Cancel",
|
|
1878
2108
|
"confirm": "Confirm",
|
|
1879
2109
|
"refresh": "Refresh",
|
|
@@ -1896,11 +2126,15 @@
|
|
|
1896
2126
|
"languageNative": "English",
|
|
1897
2127
|
"language": "Language",
|
|
1898
2128
|
"switchLanguage": "Switch language",
|
|
2129
|
+
"showPassword": "Show",
|
|
2130
|
+
"hidePassword": "Hide",
|
|
1899
2131
|
"searchGlobal": "Search pages & resources…",
|
|
1900
2132
|
"menu": "Menu",
|
|
1901
2133
|
"processing": "Working…",
|
|
2134
|
+
"unavailable": "Not available right now",
|
|
1902
2135
|
"retry": "Retry",
|
|
1903
2136
|
"success": "Success",
|
|
2137
|
+
"ok": "OK",
|
|
1904
2138
|
"failed": "Failed",
|
|
1905
2139
|
"blocked": "Cannot run",
|
|
1906
2140
|
"status": "Status",
|
|
@@ -1910,7 +2144,9 @@
|
|
|
1910
2144
|
"noData": "No data",
|
|
1911
2145
|
"input": "Input",
|
|
1912
2146
|
"pleaseEnter": "Enter {{value}}",
|
|
2147
|
+
"required": "Required",
|
|
1913
2148
|
"about": "About",
|
|
2149
|
+
"more": "More",
|
|
1914
2150
|
"operation": "Actions",
|
|
1915
2151
|
"delete": "Delete",
|
|
1916
2152
|
"edit": "Edit",
|
|
@@ -1996,7 +2232,8 @@
|
|
|
1996
2232
|
"show": "Show",
|
|
1997
2233
|
"done": "Done",
|
|
1998
2234
|
"next": "Next",
|
|
1999
|
-
"previous": "Previous"
|
|
2235
|
+
"previous": "Previous",
|
|
2236
|
+
"redirectedTo": "Opened {{to}} (was {{from}})"
|
|
2000
2237
|
},
|
|
2001
2238
|
"cron": {
|
|
2002
2239
|
"presetCdTrue": "cd app + true (test)",
|
|
@@ -2076,6 +2313,7 @@
|
|
|
2076
2313
|
"hostNoYsk": "not installed or no YSK entries",
|
|
2077
2314
|
"pressInstall": "Registered jobs are not on the system crontab yet — click Install to system.",
|
|
2078
2315
|
"jobsTab": "Jobs ({{count}})",
|
|
2316
|
+
"jobsTabPending": "Jobs ({{count}}) · pending {{pending}}",
|
|
2079
2317
|
"registeredJobs": "Registered jobs ({{count}})",
|
|
2080
2318
|
"jobsSub": "Management entries · Install to system after changes",
|
|
2081
2319
|
"addJob": "+ Add job",
|
|
@@ -2135,9 +2373,46 @@
|
|
|
2135
2373
|
"sourceHost": "Host",
|
|
2136
2374
|
"noHostJobs": "No crontab jobs in this scope",
|
|
2137
2375
|
"hostPartial": "Could not read every user crontab (root required)",
|
|
2138
|
-
"pendingInstall": "Pending install ({{count}})"
|
|
2376
|
+
"pendingInstall": "Pending install ({{count}})",
|
|
2377
|
+
"pendingStale": "Not written to system crontab for {{days}} day(s) — it will not run.",
|
|
2378
|
+
"willNotRun": "Not written to system crontab — will not run.",
|
|
2379
|
+
"hourRange": "Hour must be 0–23.",
|
|
2380
|
+
"minuteRange": "Minute must be 0–59.",
|
|
2381
|
+
"hoursCommon": "Common hours",
|
|
2382
|
+
"hoursAll": "All hours",
|
|
2383
|
+
"invalidExpr": "Not a valid 5-field cron expression.",
|
|
2384
|
+
"needCommand": "Command is required.",
|
|
2385
|
+
"needUser": "Choose a project or a system user.",
|
|
2386
|
+
"hostCounts": "Host lines",
|
|
2387
|
+
"hostCountsVal": "{{ysk}} · other {{other}} · total {{total}}",
|
|
2388
|
+
"hostYskYes": "panel lines present",
|
|
2389
|
+
"hostYskNo": "no panel lines",
|
|
2390
|
+
"emptyHostCrontab": "No crontab for {{user}}.",
|
|
2391
|
+
"writtenOnHost": "Written",
|
|
2392
|
+
"registeredJobsChip": "Registered",
|
|
2393
|
+
"registeredVsWritten": "Registered in the panel vs written to host crontab",
|
|
2394
|
+
"installPreviewTitle": "Preview before installing to system crontab",
|
|
2395
|
+
"installPreviewDesc": "This merges the YSK block into the host crontab. Existing non-YSK lines stay.",
|
|
2396
|
+
"installPreviewMerge": "Install writes a YSK Server crontab merge block. It does not replace the whole crontab.",
|
|
2397
|
+
"installPreviewEmpty": "No pending managed jobs — install still refreshes the YSK block.",
|
|
2398
|
+
"editJobTitle": "Edit job",
|
|
2399
|
+
"editJobDesc": "Changes stay in the panel until you install to the system crontab.",
|
|
2400
|
+
"saveJob": "Save (management only)",
|
|
2401
|
+
"panelLines": "Panel lines",
|
|
2402
|
+
"otherLines": "Other lines",
|
|
2403
|
+
"totalLines": "Total",
|
|
2404
|
+
"writtenOnHostHint": "Lines already written to the host crontab",
|
|
2405
|
+
"registeredJobsHint": "Jobs registered in the panel (including pending install)",
|
|
2406
|
+
"pendingInstallCount": "{{n}} pending install",
|
|
2407
|
+
"systemJobBadge": "No project · system user"
|
|
2139
2408
|
},
|
|
2140
2409
|
"dashboard": {
|
|
2410
|
+
"serviceAria": "{{name}}: {{state}}",
|
|
2411
|
+
"sev": {
|
|
2412
|
+
"ok": "OK",
|
|
2413
|
+
"warn": "Warning",
|
|
2414
|
+
"bad": "Problem"
|
|
2415
|
+
},
|
|
2141
2416
|
"title": "Dashboard",
|
|
2142
2417
|
"health": "Health",
|
|
2143
2418
|
"protection": "Protection mode",
|
|
@@ -2177,10 +2452,12 @@
|
|
|
2177
2452
|
"readinessCheck": "Readiness:",
|
|
2178
2453
|
"prodOk": "Production ready",
|
|
2179
2454
|
"notFullyReady": "Not fully ready",
|
|
2455
|
+
"readinessBlocked": "{{n}} blocker(s)",
|
|
2180
2456
|
"modeScore": "Mode {{mode}} · score {{ready}}/{{total}}",
|
|
2181
2457
|
"mode": {
|
|
2182
2458
|
"degraded": "degraded",
|
|
2183
|
-
"production_capable": "
|
|
2459
|
+
"production_capable": "EXECUTE + root",
|
|
2460
|
+
"blocked": "blocked",
|
|
2184
2461
|
"normal": "normal"
|
|
2185
2462
|
},
|
|
2186
2463
|
"details": "Details",
|
|
@@ -2194,7 +2471,8 @@
|
|
|
2194
2471
|
"warnCount": " · warn {{count}}",
|
|
2195
2472
|
"applyAuditBadge": "Apply audit · ok {{ok}} · warn {{warn}} · bad {{bad}}",
|
|
2196
2473
|
"executeBadge": "EXECUTE {{state}}",
|
|
2197
|
-
"executeLabel": "
|
|
2474
|
+
"executeLabel": "System change",
|
|
2475
|
+
"publicNo2fa": "This panel listens on all interfaces and your admin account has no 2FA.",
|
|
2198
2476
|
"go": "Open",
|
|
2199
2477
|
"open": "Open",
|
|
2200
2478
|
"noCriticalWarn": "No critical or warning alerts",
|
|
@@ -2224,29 +2502,41 @@
|
|
|
2224
2502
|
"runtime": "Runtime",
|
|
2225
2503
|
"runtimeHint": "Sets default runtime version and deploy style",
|
|
2226
2504
|
"runtimeVersion": "Runtime version",
|
|
2227
|
-
"versionHint": "
|
|
2505
|
+
"versionHint": "Writes the project runtime version setting",
|
|
2228
2506
|
"serverIpv4": "Server IPv4",
|
|
2229
2507
|
"serverIpv4Hint": "DNS A / mail SPF",
|
|
2230
2508
|
"serverIpv4Ph": "This host public IPv4",
|
|
2231
2509
|
"serverIpv6": "Server IPv6 (optional)",
|
|
2232
2510
|
"serverIpv6Hint": "Writes AAAA / ip6: when set",
|
|
2233
2511
|
"serverIpv6Ph": "Public IPv6 (optional)",
|
|
2512
|
+
"needDomainFirst": "Enter a domain first",
|
|
2234
2513
|
"withDns": "Also create DNS zone",
|
|
2235
2514
|
"withDnsDesc": "Needs domain; registration only — apply zone on DNS page",
|
|
2236
2515
|
"withMail": "Also register mail domain",
|
|
2237
2516
|
"withMailDesc": "Needs domain; install software & DNS on mail detail page",
|
|
2238
|
-
"withDb": "Also draft
|
|
2239
|
-
"withDbDesc": "Control-plane registration; apply on SQL engine page",
|
|
2517
|
+
"withDb": "Also draft a database",
|
|
2518
|
+
"withDbDesc": "Control-plane registration; apply on the SQL engine page",
|
|
2240
2519
|
"wizardHint": "Quick create does not go live automatically",
|
|
2241
2520
|
"wizardSubmit": "Create",
|
|
2242
2521
|
"wizardOk": "Created",
|
|
2243
2522
|
"wizardPartial": "Partially failed",
|
|
2244
2523
|
"notifCenterTitle": "Notifications ({{count}})",
|
|
2245
2524
|
"notifCenterDesc": "Critical {{critical}} · warn {{warn}} · info {{info}}",
|
|
2246
|
-
"noNotifs": "No notifications",
|
|
2525
|
+
"noNotifs": "No notifications. Recent audit events are on Overview.",
|
|
2247
2526
|
"noNotifsDesc": "System alerts and todos appear here",
|
|
2248
2527
|
"applyAuditTitle": "Apply status audit",
|
|
2249
|
-
"applyAuditDesc": "ok {{ok}} · warn {{warn}} · bad {{bad}}"
|
|
2528
|
+
"applyAuditDesc": "ok {{ok}} · warn {{warn}} · bad {{bad}}",
|
|
2529
|
+
"barTitle": "{{count}} host alert(s)",
|
|
2530
|
+
"levelCritical": "Critical",
|
|
2531
|
+
"levelWarn": "Warning",
|
|
2532
|
+
"levelInfo": "Info",
|
|
2533
|
+
"colTitle": "Alert",
|
|
2534
|
+
"colDetail": "Detail",
|
|
2535
|
+
"colSource": "Source",
|
|
2536
|
+
"notifSearch": "Search alerts",
|
|
2537
|
+
"notifAll": "All",
|
|
2538
|
+
"notifDismiss": "Hide",
|
|
2539
|
+
"goFix": "Fix"
|
|
2250
2540
|
},
|
|
2251
2541
|
"dataTable": {
|
|
2252
2542
|
"empty": "No data",
|
|
@@ -2306,12 +2596,26 @@
|
|
|
2306
2596
|
"emptyDbInstallFirst": "Install {{engine}} via the banner, then Create database",
|
|
2307
2597
|
"emptyDbCannotProvision": "Cannot create databases on the server right now",
|
|
2308
2598
|
"emptyDbCreateHint": "Use Create database, then Apply",
|
|
2599
|
+
"emptyDbHostHasRows": "The host already has databases that are not in this control-plane list.",
|
|
2600
|
+
"registeredVsHostHint": "Registered in the panel / found on the host",
|
|
2601
|
+
"registeredCount": "Registered",
|
|
2602
|
+
"hostCount": "On host",
|
|
2603
|
+
"registeredUsers": "Registered users",
|
|
2604
|
+
"registeredUsersHint": "Panel registrations only — not every MySQL account",
|
|
2605
|
+
"hostStillExists": "Still on host",
|
|
2606
|
+
"expiresLabel": "Expires",
|
|
2607
|
+
"dumpNeedRegistered": "Register a database in the panel first",
|
|
2608
|
+
"dumpFirstDbTitle": "Export the first registered database",
|
|
2609
|
+
"importNeedRegistered": "Register a database in the panel first",
|
|
2610
|
+
"importLatestNeedConfirm": "Needs confirmation — imports into the registered database",
|
|
2611
|
+
"hostHasUntracked": "{{count}} host databases are not registered in the panel",
|
|
2612
|
+
"hostInventoryHint": "The table is control-plane rows only. Live names come from SHOW DATABASES.",
|
|
2309
2613
|
"userList": "Users",
|
|
2310
2614
|
"userListDesc": "Grant users access to databases",
|
|
2311
2615
|
"createUserBtn": "+ Create user",
|
|
2312
2616
|
"noUsersYet": "No users yet",
|
|
2313
2617
|
"tempReadonlyUsers": "Temporary read-only users",
|
|
2314
|
-
"tempReadonlyDesc": "
|
|
2618
|
+
"tempReadonlyDesc": "Expired accounts are dropped from the server when this page loads (needs EXECUTE + root). Rows left below still exist on the host.",
|
|
2315
2619
|
"dbName": "Database name",
|
|
2316
2620
|
"ttlHours": "TTL (hours)",
|
|
2317
2621
|
"ttlHoursHint": "Marked invalid after expiry",
|
|
@@ -2320,7 +2624,14 @@
|
|
|
2320
2624
|
"expiresAt": "Expires",
|
|
2321
2625
|
"revokeRegistration": "Revoke registration",
|
|
2322
2626
|
"remoteDbHosts": "Remote database hosts",
|
|
2323
|
-
"remoteDbHostsDesc": "Register connection targets (password not echoed back)",
|
|
2627
|
+
"remoteDbHostsDesc": "Register connection targets (password not echoed back). Saved ≠ reachable until Test connection.",
|
|
2628
|
+
"remoteTest": "Test connection",
|
|
2629
|
+
"remoteTestDone": "Remote host probe finished",
|
|
2630
|
+
"remoteTestOk": "reachable",
|
|
2631
|
+
"remoteTestFail": "unreachable",
|
|
2632
|
+
"remoteNotChecked": "not tested",
|
|
2633
|
+
"remoteDeleteTitle": "Remove this registration only",
|
|
2634
|
+
"remoteDeleteConfirm": "Remove registration {{name}}? The remote server is not changed.",
|
|
2324
2635
|
"displayName": "Display name",
|
|
2325
2636
|
"prodReplicaPlaceholder": "Production replica",
|
|
2326
2637
|
"remoteHostSaved": "Remote host saved",
|
|
@@ -2345,7 +2656,7 @@
|
|
|
2345
2656
|
"import": "Import",
|
|
2346
2657
|
"importOk": "Import complete",
|
|
2347
2658
|
"importFailed": "Import failed",
|
|
2348
|
-
"deleteDbTitle": "
|
|
2659
|
+
"deleteDbTitle": "Remove control-plane registration (does not DROP the server database)",
|
|
2349
2660
|
"deleteDbDesc": "Removes control-plane record only; does not DROP the server database.",
|
|
2350
2661
|
"deleteUserTitle": "Delete user registration?",
|
|
2351
2662
|
"deleteUserDesc": "Removes control-plane record only.",
|
|
@@ -2374,8 +2685,28 @@
|
|
|
2374
2685
|
"update": "Update",
|
|
2375
2686
|
"alsoCreateRole": "Also create role",
|
|
2376
2687
|
"cluster": {
|
|
2688
|
+
"standaloneOtherEngines": "This engine is standalone. Other engines have clusters: {{names}}.",
|
|
2689
|
+
"roleUnassigned": "No role assigned",
|
|
2377
2690
|
"title": "Cluster",
|
|
2378
|
-
"description": "Plan → write management → apply → probe →
|
|
2691
|
+
"description": "Plan → write management files → apply → probe → distribute to peers / fleet. Default is dry-run (no host restart).",
|
|
2692
|
+
"redirectedFromCluster": "You were redirected here from /cluster. This is the database cluster tab.",
|
|
2693
|
+
"notApplied": "Not applied",
|
|
2694
|
+
"plannedAt": "Created {{when}}",
|
|
2695
|
+
"clearStalePlans": "Clear stale plans",
|
|
2696
|
+
"clearStalePlansTitle": "Delete stale planned clusters?",
|
|
2697
|
+
"clearStalePlansDesc": "Deletes {{n}} planned/draft registration(s) older than 7 days. Does not apply or push. System conf is not touched.",
|
|
2698
|
+
"landingTitle": "Database cluster",
|
|
2699
|
+
"landingDesc": "All planned and applied database clusters on this host. Open an engine to create or apply.",
|
|
2700
|
+
"landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. Install an engine first.",
|
|
2701
|
+
"openEngine": "Open {{engine}}",
|
|
2702
|
+
"overviewPill": "Clusters {{n}}",
|
|
2703
|
+
"enginesInstalled": "Engines",
|
|
2704
|
+
"plannedCount": "Planned",
|
|
2705
|
+
"overviewList": "Clusters ({{count}})",
|
|
2706
|
+
"overviewEmpty": "No cluster registrations yet.",
|
|
2707
|
+
"engine": "Engine",
|
|
2708
|
+
"kind": "Kind",
|
|
2709
|
+
"members": "Members",
|
|
2379
2710
|
"kindGalera": "Simple Galera",
|
|
2380
2711
|
"kindMysqlReplica": "MySQL primary/replica",
|
|
2381
2712
|
"kindPgReplica": "PostgreSQL streaming replica",
|
|
@@ -2404,10 +2735,37 @@
|
|
|
2404
2735
|
"registrationDeleted": "Registration deleted",
|
|
2405
2736
|
"nodes": "Nodes",
|
|
2406
2737
|
"remoteInstallPlan": "Remote install plan",
|
|
2738
|
+
"fleetSession": "Fleet agent session id",
|
|
2739
|
+
"fleetSessionHint": "Optional. Pick a registered fleet session (uses fleet, not SSH). Leave empty for SSH scp.",
|
|
2740
|
+
"fleetSessionPh": "Agents page session UUID",
|
|
2741
|
+
"fleetSessionNone": "None — use SSH",
|
|
2742
|
+
"fleetSessionOpenAgents": "Open /agents to register a session",
|
|
2743
|
+
"createWizardTitle": "Opens the plan wizard. Needs a local IP and ≥1 peer. Writes panel artifacts only (dry-run). Does not restart the engine until you apply.",
|
|
2744
|
+
"bootstrap": "Bootstrap",
|
|
2745
|
+
"fleetApply": "Fleet apply",
|
|
2746
|
+
"planTitle": "Regenerate the cluster plan (no host change)",
|
|
2747
|
+
"writeFileTitle": "Write management files under the panel data dir (dry-run)",
|
|
2748
|
+
"probeLocalTitle": "Probe this host only",
|
|
2749
|
+
"probeAllTitle": "Probe every registered member",
|
|
2750
|
+
"bootstrapTitle": "Install local drop-in and bootstrap the first node",
|
|
2751
|
+
"remoteInstallPlanTitle": "Preview remote install (no execute)",
|
|
2752
|
+
"downloadBundleTitle": "Download peer conf bundle (.tar.gz)",
|
|
2753
|
+
"pushPlanTitle": "Preview push to peer (no scp)",
|
|
2754
|
+
"fleetSyncPlanTitle": "Preview fleet sync (no execute)",
|
|
2755
|
+
"fleetApplyTitle": "Enqueue apply on fleet members?",
|
|
2756
|
+
"status": {
|
|
2757
|
+
"healthy": "Healthy",
|
|
2758
|
+
"planned": "Planned",
|
|
2759
|
+
"partial": "Partial",
|
|
2760
|
+
"failed": "Failed",
|
|
2761
|
+
"draft": "Draft",
|
|
2762
|
+
"degraded": "Degraded",
|
|
2763
|
+
"applied": "Applied"
|
|
2764
|
+
},
|
|
2407
2765
|
"fleetSyncPlan": "Fleet sync plan",
|
|
2408
2766
|
"standaloneTitle": "Currently: standalone",
|
|
2409
2767
|
"standaloneRepl": "No replica registered. Set primary/master + replica to generate conf and scripts.",
|
|
2410
|
-
"standaloneHa": "No HA registered. Add
|
|
2768
|
+
"standaloneHa": "No HA registered. Add at least one peer, generate a conf plan, then bootstrap the first node and join the others.",
|
|
2411
2769
|
"recentProbe": "Recent probe (local wsrep)",
|
|
2412
2770
|
"probeRequired": "healthy requires a passing probe",
|
|
2413
2771
|
"planPreview": "Plan preview",
|
|
@@ -2454,6 +2812,7 @@
|
|
|
2454
2812
|
"remoteInstalled": "Remote installed",
|
|
2455
2813
|
"fleetSynced": "Fleet sync queued",
|
|
2456
2814
|
"fleetApplyQueued": "Fleet apply queued",
|
|
2815
|
+
"engineNotInstalled": "{{engine}} is not installed on this host — install it first, or open the engine that is actually running.",
|
|
2457
2816
|
"plan": "Plan",
|
|
2458
2817
|
"writeFile": "Write files",
|
|
2459
2818
|
"applyLocal": "Apply local",
|
|
@@ -2470,8 +2829,7 @@
|
|
|
2470
2829
|
"delete": "Delete",
|
|
2471
2830
|
"probe": "Probe",
|
|
2472
2831
|
"name": "Name",
|
|
2473
|
-
"type": "Type"
|
|
2474
|
-
"status": "Status"
|
|
2832
|
+
"type": "Type"
|
|
2475
2833
|
},
|
|
2476
2834
|
"console": {
|
|
2477
2835
|
"dataBrowse": "Browse data",
|
|
@@ -2479,6 +2837,7 @@
|
|
|
2479
2837
|
"realtime": "Live",
|
|
2480
2838
|
"reload": "Reload",
|
|
2481
2839
|
"needRestart": "Restart required",
|
|
2840
|
+
"affectsProjects": "Sites and services that use this engine will be interrupted.",
|
|
2482
2841
|
"lifecycle": "Lifecycle",
|
|
2483
2842
|
"overview": "Overview",
|
|
2484
2843
|
"actionDone": "{{action}} done",
|
|
@@ -2510,10 +2869,10 @@
|
|
|
2510
2869
|
"installEngine": "Use the banner above to install {{title}}.",
|
|
2511
2870
|
"reloadConfig": "Reload config",
|
|
2512
2871
|
"disableBoot": "Disable on boot",
|
|
2872
|
+
"disableBootConfirm": "The engine will not start after reboot until you enable it again.",
|
|
2513
2873
|
"needRights": "Needs system-change rights and admin. Failures show reasons — never fake success.",
|
|
2514
2874
|
"noneFetched": "— none —"
|
|
2515
2875
|
},
|
|
2516
|
-
"expiresLabel": "Expires",
|
|
2517
2876
|
"importEntry": "Entry: {{url}}",
|
|
2518
2877
|
"adminerRiskFull": "Public Adminer is risky — restrict source IPs or add HTTP auth. Needs PHP-FPM socket (default php8.2).",
|
|
2519
2878
|
"adminerWriteHintFull": "Write only = management written;",
|
|
@@ -2537,7 +2896,10 @@
|
|
|
2537
2896
|
"unfreezeOk": "{{engine}} repair complete",
|
|
2538
2897
|
"startAfterUnfreeze": "Start service (auto-runs repair plan on failure)",
|
|
2539
2898
|
"serviceDownTitle": "Database service is down",
|
|
2540
|
-
"serviceDownBody": "Service is unhealthy"
|
|
2899
|
+
"serviceDownBody": "Service is unhealthy",
|
|
2900
|
+
"adoptHostDb": "Register in panel (no create): {{name}}",
|
|
2901
|
+
"adoptHostDbTitle": "Registers the name in the control plane only — does not change host data",
|
|
2902
|
+
"cleanupExpiredTempUsersTitle": "Drops panel-issued temporary users that have expired"
|
|
2541
2903
|
},
|
|
2542
2904
|
"dialogs": {
|
|
2543
2905
|
"confirmDefault": "Confirm",
|
|
@@ -2581,6 +2943,8 @@
|
|
|
2581
2943
|
"zonesTitle": "Zones ({{count}})",
|
|
2582
2944
|
"zonesDesc": "After create, write/apply the zone",
|
|
2583
2945
|
"createZone": "+ Create zone",
|
|
2946
|
+
"mailZonesMissing": "Email domains have no DNS zone here: {{domains}}.",
|
|
2947
|
+
"createMailZone": "Create mail zone",
|
|
2584
2948
|
"colZoneName": "Zone name",
|
|
2585
2949
|
"colServerIp": "Server IP",
|
|
2586
2950
|
"colTemplate": "Template",
|
|
@@ -2657,7 +3021,10 @@
|
|
|
2657
3021
|
"validateDesc": "Create/edit auto-validates (CNAME clashes, A/AAAA format, etc.).",
|
|
2658
3022
|
"createZoneTitle": "Create DNS zone",
|
|
2659
3023
|
"createZoneDesc": "Generate records from a template",
|
|
3024
|
+
"createZoneNeedValid": "Enter a valid zone name and IPv4 address",
|
|
2660
3025
|
"zoneNameHint": "e.g. example.com (no trailing dot)",
|
|
3026
|
+
"invalidZone": "Invalid zone name. Use a real domain (e.g. example.com).",
|
|
3027
|
+
"invalidIpv4": "Invalid IPv4. Each octet must be 0–255.",
|
|
2661
3028
|
"serverIpv4": "Server IPv4",
|
|
2662
3029
|
"serverIpv4Hint": "Address used for template A records",
|
|
2663
3030
|
"thisHostIpv4": "This host public IPv4",
|
|
@@ -2751,9 +3118,16 @@
|
|
|
2751
3118
|
"lookupServer": "Server (@)",
|
|
2752
3119
|
"lookupServerHint": "127.0.0.1 = local auth; public IP tests external; empty = system resolver",
|
|
2753
3120
|
"healthHealPdns": "Heal PowerDNS bind",
|
|
3121
|
+
"healNeedInstall": "PowerDNS is not installed — install it on the Software tab first",
|
|
3122
|
+
"applyNeedService": "DNS service is not running — start or install it before apply",
|
|
3123
|
+
"goStartService": "Start DNS service",
|
|
3124
|
+
"startBindHint": "If start returns to stopped, port 53 is often held by systemd-resolved. Use Heal bind below, then start again.",
|
|
3125
|
+
"deleteZoneNeedName": "Delete this zone — you will type the zone name to confirm",
|
|
2754
3126
|
"healthHealPdnsHint": "Set local-address to public IP to avoid clashing with systemd-resolved on 0",
|
|
2755
3127
|
"healthHealPdnsOk": "PowerDNS bound to {{ip}} and start attempted",
|
|
2756
3128
|
"healthHealPdnsFailed": "PowerDNS heal failed",
|
|
3129
|
+
"startProbeFailed": "Could not re-check DNS health after start",
|
|
3130
|
+
"startNotListening": "PowerDNS start returned, but the unit is not answering on port 53",
|
|
2757
3131
|
"aboutTitle": "DNS essentials",
|
|
2758
3132
|
"aboutSub": "Zones first; records, cluster, and DNSSEC need a selected domain.",
|
|
2759
3133
|
"aboutZonesTitle": "Zones and scope",
|
|
@@ -2761,7 +3135,265 @@
|
|
|
2761
3135
|
"aboutHealthTitle": "Service health",
|
|
2762
3136
|
"aboutHealthBody": "Use Tools to probe PowerDNS, heal bind, and open port 53.",
|
|
2763
3137
|
"aboutStackTitle": "Software",
|
|
2764
|
-
"aboutStackBody": "Check/update the PowerDNS package under Software."
|
|
3138
|
+
"aboutStackBody": "Check/update the PowerDNS package under Software.",
|
|
3139
|
+
"createMailZoneNow": "Created mail zone {{domain}}",
|
|
3140
|
+
"toolsFirewallTitle": "Firewall (UFW)",
|
|
3141
|
+
"toolsFirewallHint": "Allow or deny port 53. This does not start or stop PowerDNS.",
|
|
3142
|
+
"toolsUnitTitle": "PowerDNS unit",
|
|
3143
|
+
"toolsUnitHint": "systemd unit pdns — start, stop, restart, reload.",
|
|
3144
|
+
"installConfirmTitle": "Install PowerDNS?",
|
|
3145
|
+
"installConfirmDesc": "Installs pdns-server and writes the managed authoritative config. Needs root and YSK_EXECUTE=1.",
|
|
3146
|
+
"installConfirmConsequence": "After install and start, PowerDNS will bind port 53.",
|
|
3147
|
+
"installPort53Busy": "Something already listens on port 53. PowerDNS may fail to bind until that listener is stopped or healed.",
|
|
3148
|
+
"installPort53BusyConsequence": "Heal bind or stop the other listener before expecting answers on port 53."
|
|
3149
|
+
},
|
|
3150
|
+
"docker": {
|
|
3151
|
+
"title": "Docker",
|
|
3152
|
+
"subtitle": "Install Docker Engine, then manage containers, images, volumes, and validator Compose stacks on this host.",
|
|
3153
|
+
"refresh": "Refresh",
|
|
3154
|
+
"notInstalled": "Docker Engine is not installed. Install docker.io and docker-compose-v2 from this page.",
|
|
3155
|
+
"protected": "Protected",
|
|
3156
|
+
"pruneConfirm": "Type PRUNE to confirm any prune",
|
|
3157
|
+
"needEngineTitle": "Install Docker Engine first",
|
|
3158
|
+
"stopEngineDesc": "This stops the Docker engine and all {{n}} container(s) on this host.",
|
|
3159
|
+
"notInstalledValue": "Not installed",
|
|
3160
|
+
"nameHint": "Letters, digits, underscore, dot, hyphen (max 128)",
|
|
3161
|
+
"volPlaceholder": "my-data",
|
|
3162
|
+
"netPlaceholder": "my-net",
|
|
3163
|
+
"runPorts": "Publish ports",
|
|
3164
|
+
"runPortsHint": "host:container per line, e.g. 8080:80",
|
|
3165
|
+
"runEnv": "Environment",
|
|
3166
|
+
"runEnvHint": "KEY=value per line",
|
|
3167
|
+
"runRestart": "Restart policy",
|
|
3168
|
+
"runNetwork": "Network",
|
|
3169
|
+
"runVolumes": "Volumes",
|
|
3170
|
+
"runVolumesHint": "volume:dest per line",
|
|
3171
|
+
"runAdvancedHint": "For multi-service stacks use validator nodes or Compose files already on this host.",
|
|
3172
|
+
"daemonConfirmTitle": "Apply daemon settings?",
|
|
3173
|
+
"daemonConfirmDesc": "Writes daemon.json and restarts docker.service. All containers will be interrupted.",
|
|
3174
|
+
"settingsHint": "Safe daemon.json subset only. Apply writes the file and restarts docker.service.",
|
|
3175
|
+
"cli": {
|
|
3176
|
+
"usage": "Usage: ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
|
|
3177
|
+
},
|
|
3178
|
+
"tab": {
|
|
3179
|
+
"overview": "Overview",
|
|
3180
|
+
"containers": "Containers",
|
|
3181
|
+
"images": "Images",
|
|
3182
|
+
"compose": "Compose",
|
|
3183
|
+
"volumes": "Volumes",
|
|
3184
|
+
"networks": "Networks",
|
|
3185
|
+
"prune": "Prune",
|
|
3186
|
+
"settings": "Settings",
|
|
3187
|
+
"about": "About"
|
|
3188
|
+
},
|
|
3189
|
+
"col": {
|
|
3190
|
+
"engine": "Engine",
|
|
3191
|
+
"containers": "Containers",
|
|
3192
|
+
"version": "Version",
|
|
3193
|
+
"dataRoot": "Data root",
|
|
3194
|
+
"disk": "Disk",
|
|
3195
|
+
"validators": "Validator stacks",
|
|
3196
|
+
"name": "Name",
|
|
3197
|
+
"image": "Image",
|
|
3198
|
+
"status": "Status",
|
|
3199
|
+
"ports": "Ports",
|
|
3200
|
+
"managed": "Managed",
|
|
3201
|
+
"size": "Size",
|
|
3202
|
+
"driver": "Driver",
|
|
3203
|
+
"type": "Type",
|
|
3204
|
+
"reclaimable": "Reclaimable"
|
|
3205
|
+
},
|
|
3206
|
+
"state": {
|
|
3207
|
+
"up": "Active",
|
|
3208
|
+
"down": "Stopped",
|
|
3209
|
+
"running": "Running",
|
|
3210
|
+
"exited": "Exited",
|
|
3211
|
+
"exitedCode": "Exited ({{n}})",
|
|
3212
|
+
"restarting": "Restarting",
|
|
3213
|
+
"restartingCount": "Restarting · {{n}} times",
|
|
3214
|
+
"paused": "Paused",
|
|
3215
|
+
"created": "Created",
|
|
3216
|
+
"dead": "Dead",
|
|
3217
|
+
"removing": "Removing",
|
|
3218
|
+
"unknown": "Unknown"
|
|
3219
|
+
},
|
|
3220
|
+
"df": {
|
|
3221
|
+
"images": "Images",
|
|
3222
|
+
"containers": "Containers",
|
|
3223
|
+
"volumes": "Local volumes",
|
|
3224
|
+
"builder": "Build cache",
|
|
3225
|
+
"other": "Other"
|
|
3226
|
+
},
|
|
3227
|
+
"actions": {
|
|
3228
|
+
"start": "Start",
|
|
3229
|
+
"stop": "Stop",
|
|
3230
|
+
"restart": "Restart",
|
|
3231
|
+
"remove": "Remove",
|
|
3232
|
+
"logs": "Logs",
|
|
3233
|
+
"inspect": "Inspect",
|
|
3234
|
+
"exec": "Exec (version)",
|
|
3235
|
+
"run": "Run image",
|
|
3236
|
+
"pull": "Pull",
|
|
3237
|
+
"up": "Up",
|
|
3238
|
+
"down": "Down",
|
|
3239
|
+
"createVolume": "Create volume",
|
|
3240
|
+
"createNetwork": "Create network",
|
|
3241
|
+
"pruneContainers": "Prune containers",
|
|
3242
|
+
"pruneImages": "Prune images",
|
|
3243
|
+
"pruneVolumes": "Prune volumes",
|
|
3244
|
+
"pruneSystem": "System prune",
|
|
3245
|
+
"startEngine": "Start engine",
|
|
3246
|
+
"stopEngine": "Stop engine",
|
|
3247
|
+
"restartEngine": "Restart engine",
|
|
3248
|
+
"applyDaemon": "Apply daemon settings"
|
|
3249
|
+
},
|
|
3250
|
+
"empty": {
|
|
3251
|
+
"containers": "No containers",
|
|
3252
|
+
"images": "No images",
|
|
3253
|
+
"compose": "No Compose projects",
|
|
3254
|
+
"composeDesc": "Projects come from validator nodes or Compose files already on this host. This page does not accept arbitrary YAML uploads.",
|
|
3255
|
+
"composeCta": "Open validator nodes",
|
|
3256
|
+
"volumes": "No volumes",
|
|
3257
|
+
"networks": "No networks"
|
|
3258
|
+
},
|
|
3259
|
+
"logs": {
|
|
3260
|
+
"empty": "No log output.",
|
|
3261
|
+
"follow": "Follow"
|
|
3262
|
+
},
|
|
3263
|
+
"deleteRunningWarn": "This container is still running or restarting. It will be force-removed.",
|
|
3264
|
+
"settings": {
|
|
3265
|
+
"logMaxSize": "Container log max size",
|
|
3266
|
+
"liveRestore": "Live restore (keep containers if the daemon restarts)",
|
|
3267
|
+
"mirrors": "Registry mirrors (one URL per line)",
|
|
3268
|
+
"insecure": "Insecure registries (one host per line)"
|
|
3269
|
+
},
|
|
3270
|
+
"about": {
|
|
3271
|
+
"body": "Docker is a first-class host service on YSK Server, like Nginx. Install via the panel (Ubuntu docker.io + docker-compose-v2). Validator nodes run as Compose projects named yskval-*.",
|
|
3272
|
+
"honesty": "Host changes need root and YSK_EXECUTE=1. Dry-run is the default. This page manages Docker on one host; use external Kubernetes for cluster orchestration.",
|
|
3273
|
+
"validators": "Open validator nodes"
|
|
3274
|
+
},
|
|
3275
|
+
"alerts": {
|
|
3276
|
+
"daemonTitle": "Docker daemon is down",
|
|
3277
|
+
"daemonBody": "The Docker engine is installed but docker.service is not active. Validator stacks cannot start."
|
|
3278
|
+
},
|
|
3279
|
+
"errors": {
|
|
3280
|
+
"notInstalled": "Docker is not installed",
|
|
3281
|
+
"daemonDown": "Docker daemon is not active",
|
|
3282
|
+
"needCompose": "docker compose (v2 plugin) is required",
|
|
3283
|
+
"badImage": "Invalid image reference",
|
|
3284
|
+
"badName": "Invalid name",
|
|
3285
|
+
"badPort": "Invalid port publish",
|
|
3286
|
+
"badEnv": "Invalid environment variable",
|
|
3287
|
+
"badVolume": "Invalid volume mount",
|
|
3288
|
+
"badNetwork": "Invalid network",
|
|
3289
|
+
"protectedNetwork": "Cannot remove a built-in Docker network",
|
|
3290
|
+
"badRestart": "Invalid restart policy",
|
|
3291
|
+
"badPrune": "Invalid prune scope",
|
|
3292
|
+
"needPruneConfirm": "Volume or system prune requires confirm=PRUNE",
|
|
3293
|
+
"badDaemon": "Invalid daemon setting",
|
|
3294
|
+
"composeMissing": "Compose file for this project was not found",
|
|
3295
|
+
"logsFailed": "Could not read container logs",
|
|
3296
|
+
"mutateFailed": "Docker command failed",
|
|
3297
|
+
"engineFailed": "Could not control docker.service",
|
|
3298
|
+
"badExec": "Exec is limited to allowlisted binaries and presets (no shell, no TTY)",
|
|
3299
|
+
"uninstallBusy": "Stop YSK-managed containers (including validator stacks) before uninstalling Docker"
|
|
3300
|
+
},
|
|
3301
|
+
"notes": {
|
|
3302
|
+
"dryMutate": "Dry-run only. Pass --execute and YSK_EXECUTE=1 to change the host.",
|
|
3303
|
+
"dryPrune": "Prune preview (not applied).",
|
|
3304
|
+
"dryEngine": "Engine control is dry-run.",
|
|
3305
|
+
"dryDaemon": "Would write /etc/docker/daemon.json and restart docker.service.",
|
|
3306
|
+
"daemonWrote": "Wrote daemon.json",
|
|
3307
|
+
"start": "Container started",
|
|
3308
|
+
"stop": "Container stopped",
|
|
3309
|
+
"restart": "Container restarted",
|
|
3310
|
+
"remove": "Container removed",
|
|
3311
|
+
"ran": "Container started from image",
|
|
3312
|
+
"pulled": "Image pulled",
|
|
3313
|
+
"exec": "Ran allowlisted exec",
|
|
3314
|
+
"imageRemoved": "Image removed",
|
|
3315
|
+
"volumeCreated": "Volume created",
|
|
3316
|
+
"volumeRemoved": "Volume removed",
|
|
3317
|
+
"networkCreated": "Network created",
|
|
3318
|
+
"networkRemoved": "Network removed",
|
|
3319
|
+
"pruned": "Prune finished",
|
|
3320
|
+
"compose": {
|
|
3321
|
+
"up": "Compose project started",
|
|
3322
|
+
"down": "Compose project stopped",
|
|
3323
|
+
"restart": "Compose project restarted",
|
|
3324
|
+
"rm": "Compose project removed"
|
|
3325
|
+
},
|
|
3326
|
+
"engine": {
|
|
3327
|
+
"start": "docker.service started",
|
|
3328
|
+
"stop": "docker.service stopped",
|
|
3329
|
+
"restart": "docker.service restarted"
|
|
3330
|
+
}
|
|
3331
|
+
},
|
|
3332
|
+
"ui": {
|
|
3333
|
+
"whatYouGet": "What this page does",
|
|
3334
|
+
"whatYouGetLead": "Install Docker Engine once. After that you can run a single container, pull images, and see validator Compose stacks that already live on this host.",
|
|
3335
|
+
"capEngine": "Engine",
|
|
3336
|
+
"capEngineDesc": "One-click install of docker.io and docker-compose-v2. Start and stop docker.service here.",
|
|
3337
|
+
"capWork": "Containers and images",
|
|
3338
|
+
"capWorkDesc": "Pick a common image, pull it, run it, then read logs or inspect the container.",
|
|
3339
|
+
"capStacks": "Validator stacks",
|
|
3340
|
+
"capStacksDesc": "Multi-service stacks are validator Compose projects (yskval-*). This page does not accept YAML uploads.",
|
|
3341
|
+
"cardEngine": "Engine",
|
|
3342
|
+
"cardDisk": "Disk",
|
|
3343
|
+
"cardWork": "On this host",
|
|
3344
|
+
"compose": "Compose",
|
|
3345
|
+
"cgroup": "cgroup",
|
|
3346
|
+
"used": "Used",
|
|
3347
|
+
"free": "Free",
|
|
3348
|
+
"running": "Running",
|
|
3349
|
+
"images": "Images",
|
|
3350
|
+
"volumes": "Volumes",
|
|
3351
|
+
"networks": "Networks",
|
|
3352
|
+
"goImages": "Images",
|
|
3353
|
+
"goValidators": "Validator nodes",
|
|
3354
|
+
"imagePickHint": "Choose a common image. Use Other only when you need a different reference.",
|
|
3355
|
+
"imageCustom": "Other",
|
|
3356
|
+
"driver": "Driver",
|
|
3357
|
+
"driverLocalOnly": "This panel creates local volumes only.",
|
|
3358
|
+
"netDefaultDriver": "New networks use Docker’s default bridge driver.",
|
|
3359
|
+
"pruneWhat": "What to remove",
|
|
3360
|
+
"pruneAck": "I understand unused data will be deleted and cannot be restored",
|
|
3361
|
+
"pruneAckDesc": "Volume and system prune cannot be undone. Stopped containers and unused images are removed for the selected scope.",
|
|
3362
|
+
"pruneNow": "Prune now",
|
|
3363
|
+
"useMirrors": "Use registry mirrors",
|
|
3364
|
+
"useInsecure": "Allow insecure registries",
|
|
3365
|
+
"publishPorts": "Publish ports to the host",
|
|
3366
|
+
"attachVolume": "Attach a volume",
|
|
3367
|
+
"setEnv": "Set environment variables",
|
|
3368
|
+
"defaultNet": "Default",
|
|
3369
|
+
"mountPath": "Mount path",
|
|
3370
|
+
"restartNo": "Never",
|
|
3371
|
+
"restartUnless": "Unless stopped",
|
|
3372
|
+
"restartAlways": "Always",
|
|
3373
|
+
"restartOnFail": "On failure",
|
|
3374
|
+
"needAck": "Confirm before pruning",
|
|
3375
|
+
"scopeContainers": "Stopped containers",
|
|
3376
|
+
"scopeImages": "Unused images",
|
|
3377
|
+
"scopeVolumes": "Unused volumes",
|
|
3378
|
+
"scopeBuilder": "Build cache",
|
|
3379
|
+
"scopeSystem": "Everything unused",
|
|
3380
|
+
"noVolumesYet": "No volumes yet — create one on the Volumes tab first.",
|
|
3381
|
+
"customPort": "Another host port",
|
|
3382
|
+
"customPortHost": "Host port",
|
|
3383
|
+
"customPortContainer": "Container port",
|
|
3384
|
+
"pctUsed": "{{n}}% used",
|
|
3385
|
+
"customPortHint": "1–65535. Example: 9090 → 80.",
|
|
3386
|
+
"pickBridge": "Bridge network"
|
|
3387
|
+
},
|
|
3388
|
+
"deleteTitle": "Delete {{id}}",
|
|
3389
|
+
"deleteDesc": "This cannot be undone.",
|
|
3390
|
+
"deleteC1": "The resource is removed from this host.",
|
|
3391
|
+
"deleteComposeVal": "This is a validator stack — the validator instance is also deleted.",
|
|
3392
|
+
"pruneTitle": "Prune Docker resources",
|
|
3393
|
+
"pruneDesc": "Type PRUNE to confirm. Unused data cannot be restored.",
|
|
3394
|
+
"pruneC1": "Unused resources in the selected scope are deleted.",
|
|
3395
|
+
"pruneC2": "Volume and system prune permanently delete unused data volumes.",
|
|
3396
|
+
"pruneC3": "Stopped containers or unused images in this scope are removed."
|
|
2765
3397
|
},
|
|
2766
3398
|
"email": {
|
|
2767
3399
|
"title": "Email",
|
|
@@ -2806,13 +3438,16 @@
|
|
|
2806
3438
|
"webmailMovedHint": "Webmail is configured globally (not per domain).",
|
|
2807
3439
|
"openGlobalWebmailSettings": "Open webmail settings",
|
|
2808
3440
|
"domainsTitle": "Domains ({{filtered}}/{{total}})",
|
|
3441
|
+
"domainsListDesc": "Mail domains registered on this host",
|
|
2809
3442
|
"emptyFilterHint": "No domains match the search",
|
|
2810
3443
|
"emptyCreateHint": "Use Create in the toolbar to register a domain;",
|
|
2811
3444
|
"queueLocalTitle": "Mail queue",
|
|
2812
3445
|
"needExecute": "Needs YSK_EXECUTE",
|
|
2813
3446
|
"viewQueue": "View queue",
|
|
2814
3447
|
"flushQueue": "Flush queue",
|
|
2815
|
-
"
|
|
3448
|
+
"flushQueueEmpty": "Queue is empty",
|
|
3449
|
+
"flushQueueNeedExecute": "Flushing the queue needs YSK_EXECUTE (host execute permission)",
|
|
3450
|
+
"queueHint": "Local Postfix queue. Viewing is a read probe; flush needs YSK_EXECUTE.",
|
|
2816
3451
|
"deleteThisId": "Delete this ID",
|
|
2817
3452
|
"queueEmpty": "No deferred mail",
|
|
2818
3453
|
"queueEmptyHint": "No deferred messages",
|
|
@@ -2834,7 +3469,8 @@
|
|
|
2834
3469
|
"opsHost": "Host provider: PTR, Port 25 outbound policy",
|
|
2835
3470
|
"opsRegistrar": "Registrar: publish MX / SPF / DKIM / DMARC",
|
|
2836
3471
|
"statusTitle": "Status",
|
|
2837
|
-
"statusDraft": "
|
|
3472
|
+
"statusDraft": "Draft (panel only)",
|
|
3473
|
+
"deliverabilityChecks": "Checks",
|
|
2838
3474
|
"statusWritten": "written: management files written, may not be live",
|
|
2839
3475
|
"statusApplied": "applied: successfully applied before (still check service is-active)",
|
|
2840
3476
|
"statusReputation": "Inbox reputation can never be 100% automated",
|
|
@@ -2870,6 +3506,16 @@
|
|
|
2870
3506
|
"copyAllRecords": "Copy all records",
|
|
2871
3507
|
"openDnsPage": "Open DNS page",
|
|
2872
3508
|
"healthScore": "Health score",
|
|
3509
|
+
"healthUnchecked": "Not checked yet",
|
|
3510
|
+
"healthUncheckedHint": "Live DNS / PTR / port 25 have not been probed yet.",
|
|
3511
|
+
"healthPartialScore": "Partial {{n}}/100 (DNS only)",
|
|
3512
|
+
"healthPartialHint": "DNS checklist only — live and blacklist not probed.",
|
|
3513
|
+
"deliverabilityScore": "Deliverability pack",
|
|
3514
|
+
"opendkimNoReload": "OpenDKIM has no reload — use restart after key or table changes.",
|
|
3515
|
+
"opendkimNoReloadTitle": "systemctl reload opendkim is not supported on this stack",
|
|
3516
|
+
"healthChecklist": "Checklist {{score}}/100",
|
|
3517
|
+
"healthChecklistHint": "Checklist score — live DNS / PTR / port 25 not probed yet",
|
|
3518
|
+
"healthLiveHint": "Live probe score",
|
|
2873
3519
|
"suggestedRecords": "Suggested records",
|
|
2874
3520
|
"externalTodosCount": "External todos",
|
|
2875
3521
|
"colType": "Type",
|
|
@@ -2954,7 +3600,7 @@
|
|
|
2954
3600
|
"hourlyMsgCap": "Hourly message cap",
|
|
2955
3601
|
"hourlyMsgCapHint": "Global uses the minimum across domains",
|
|
2956
3602
|
"enableAntispam": "Enable antispam mark (Rspamd multimap)",
|
|
2957
|
-
"enableAntispamDesc": "Off
|
|
3603
|
+
"enableAntispamDesc": "Off keeps this domain out of the Rspamd antispam map. Write panel first, then apply to system.",
|
|
2958
3604
|
"writeControlOnly": "Write panel only",
|
|
2959
3605
|
"applyToSystemBtn": "Apply to system",
|
|
2960
3606
|
"dnsblResult": "DNSBL result",
|
|
@@ -3079,6 +3725,7 @@
|
|
|
3079
3725
|
"health": {
|
|
3080
3726
|
"dnsUnconfirmed": "DNS records (MX/SPF/DKIM) not yet confirmed",
|
|
3081
3727
|
"dmarcMissing": "DMARC missing — strongly recommended",
|
|
3728
|
+
"dmarcUnpublished": "DMARC is generated in the panel but not published in public DNS yet",
|
|
3082
3729
|
"ptrBad": "PTR reverse DNS missing or incorrect — request at VPS provider",
|
|
3083
3730
|
"port25Blocked": "Outbound Port 25 appears blocked — request unblock or use SMTP relay",
|
|
3084
3731
|
"port25Unknown": "Port 25 status unknown — run connectivity check"
|
|
@@ -3122,7 +3769,8 @@
|
|
|
3122
3769
|
"postfixReloaded": "Postfix reloaded.",
|
|
3123
3770
|
"postfixReloadFailed": "Postfix reload failed: {{detail}}",
|
|
3124
3771
|
"dovecotApplied": "Wrote Dovecot TLS snippet and attempted reload.",
|
|
3125
|
-
"dovecotSkipped": "Skipped Dovecot (not installed or doveconf unavailable)."
|
|
3772
|
+
"dovecotSkipped": "Skipped Dovecot (not installed or doveconf unavailable).",
|
|
3773
|
+
"dovecotSslOmitted": "Mail certificate is missing; wrote ssl=no so Dovecot can start without the LE files."
|
|
3126
3774
|
},
|
|
3127
3775
|
"policyApplySystemHint": "Check “apply to system” to write Postfix/Rspamd maps and reload;",
|
|
3128
3776
|
"rateLimitAppliedNote": "Hourly outbound rate and antispam flag applied (when system apply is on).",
|
|
@@ -3161,12 +3809,12 @@
|
|
|
3161
3809
|
"deliverabilityDesc": "PTR / DNS / port 25 checks",
|
|
3162
3810
|
"dnsTodosDesc": "Copy then add at your DNS host",
|
|
3163
3811
|
"deliverabilityHonesty": "Cannot set PTR or unlock port 25 for you",
|
|
3164
|
-
"warmupSuggest": "
|
|
3165
|
-
"writeSsoSkeleton": "
|
|
3166
|
-
"rateLimitPerHour": "
|
|
3167
|
-
"rateLimitGlobalHint": "
|
|
3168
|
-
"savePolicyWritten": "
|
|
3169
|
-
"dnsblMultiIp": "
|
|
3812
|
+
"warmupSuggest": "Warm-up suggestions",
|
|
3813
|
+
"writeSsoSkeleton": "Write Roundcube SSO skeleton",
|
|
3814
|
+
"rateLimitPerHour": "Hourly message cap",
|
|
3815
|
+
"rateLimitGlobalHint": "Global cap uses the lowest per-domain limit",
|
|
3816
|
+
"savePolicyWritten": "Written to the control plane only",
|
|
3817
|
+
"dnsblMultiIp": "Multi-IP RBL",
|
|
3170
3818
|
"webmailTool": "Webmail software",
|
|
3171
3819
|
"webmailToolRoundcube": "Roundcube (default)",
|
|
3172
3820
|
"webmailToolSnappy": "SnappyMail (lightweight)",
|
|
@@ -3176,6 +3824,9 @@
|
|
|
3176
3824
|
"webmailRisk": "Public webmail is risky — enable HTTPS soon.",
|
|
3177
3825
|
"webmailForceHttps": "Force HTTPS (Roundcube; SSL required)",
|
|
3178
3826
|
"reinstallWebmail": "Reinstall / upgrade",
|
|
3827
|
+
"installWebmailTitle": "Create the shared webmail project (first install)",
|
|
3828
|
+
"reinstallWebmailTitle": "Rebuild / upgrade the existing webmail project",
|
|
3829
|
+
"reinstallNeedInstall": "Install webmail first",
|
|
3179
3830
|
"webmailSsoAdvanced": "Advanced · SSO plugin",
|
|
3180
3831
|
"tlsRoleMail": "mail (IMAP/SMTP)",
|
|
3181
3832
|
"tlsRoleMailHint": "Mail server hostname",
|
|
@@ -3184,6 +3835,7 @@
|
|
|
3184
3835
|
"tlsRoleApex": "Apex domain",
|
|
3185
3836
|
"tlsRoleApexHint": "Web / apex certificate",
|
|
3186
3837
|
"tlsRequestLe": "Request LE",
|
|
3838
|
+
"tlsRequestLeFor": "Request LE for {{host}}",
|
|
3187
3839
|
"advancedToolsTitle": "Queue & clients",
|
|
3188
3840
|
"flushQueueConfirm": "Flush the local MTA queue? This cannot be undone.",
|
|
3189
3841
|
"mailSslTitleShort": "Certificates & TLS",
|
|
@@ -3199,6 +3851,7 @@
|
|
|
3199
3851
|
"deleteMailboxC3": "System Dovecot/Postfix may still need cleanup",
|
|
3200
3852
|
"deleteAliasTitle": "Delete alias/forward?",
|
|
3201
3853
|
"deleteAliasDesc": "Deletes {{source}}.",
|
|
3854
|
+
"deleteImpact": "{{mailboxes}} mailboxes · {{records}} DNS records · {{aliases}} aliases",
|
|
3202
3855
|
"deleteDomainC1": "All mailboxes and aliases",
|
|
3203
3856
|
"deleteDomainC2": "Control-plane DKIM, DNS suggestions, and flags",
|
|
3204
3857
|
"deleteDomainC3": "Local dataDir/email directory if present",
|
|
@@ -3238,7 +3891,25 @@
|
|
|
3238
3891
|
"mailboxEmptyTitle": "No mailboxes yet",
|
|
3239
3892
|
"passwordMismatch": "Passwords do not match",
|
|
3240
3893
|
"passwordTooShort": "Password must be at least 8 characters",
|
|
3241
|
-
"mailboxUpdateNeedField": "Set a new password or change status"
|
|
3894
|
+
"mailboxUpdateNeedField": "Set a new password or change status",
|
|
3895
|
+
"catchallHint": "Unknown local parts go to the target mailbox. Draft until mail apply.",
|
|
3896
|
+
"queueSearchPh": "Search ID, sender, or recipient…",
|
|
3897
|
+
"queueId": "Queue ID",
|
|
3898
|
+
"queueSender": "Sender",
|
|
3899
|
+
"queueRecipients": "Recipients",
|
|
3900
|
+
"queueSize": "Size",
|
|
3901
|
+
"queueReason": "Reason",
|
|
3902
|
+
"queueActive": "Active",
|
|
3903
|
+
"queueHeld": "Held",
|
|
3904
|
+
"queueDeferred": "Deferred",
|
|
3905
|
+
"deleteQueueTitle": "Delete this queued message?",
|
|
3906
|
+
"deleteQueueDesc": "Remove {{id}} from the local MTA queue. Needs YSK_EXECUTE.",
|
|
3907
|
+
"openQueuePage": "Open mail queue",
|
|
3908
|
+
"dovecotFailedHint": "Dovecot failed. Open the Software tab for the unit status.",
|
|
3909
|
+
"dovecotFailedStatus": "Dovecot is {{status}}. Open the Software tab for the unit summary.",
|
|
3910
|
+
"mailCertMissing": "No certificate for {{hosts}}. Issue it on the SSL page.",
|
|
3911
|
+
"mailCertPresent": "A mail certificate is already issued — this is not a missing-cert problem.",
|
|
3912
|
+
"webmailNeedCert": "No certificate for {{host}} — issue it on SSL before forcing HTTPS."
|
|
3242
3913
|
},
|
|
3243
3914
|
"errors": {
|
|
3244
3915
|
"YSK_UNAUTHORIZED": "Unauthorized",
|
|
@@ -3267,7 +3938,7 @@
|
|
|
3267
3938
|
"adminTotpStrict": "Admins must enable 2FA (strict). Use an enrolled account or disable strict mode.",
|
|
3268
3939
|
"totpReplay": "Code already used; wait for the next period",
|
|
3269
3940
|
"totpRequired": "A valid authentication code is required",
|
|
3270
|
-
"mustEnrollTotp": "
|
|
3941
|
+
"mustEnrollTotp": "Policy: enable two-factor authentication now",
|
|
3271
3942
|
"userNotFound": "User not found",
|
|
3272
3943
|
"totpSetupNeedReauth": "Enabling 2FA requires your password (or a recent step-up code)",
|
|
3273
3944
|
"totpBeginFirst": "Start 2FA setup first",
|
|
@@ -3279,7 +3950,9 @@
|
|
|
3279
3950
|
"sessionExpired": "Session expired; sign in again",
|
|
3280
3951
|
"sessionIdle": "Idle timeout; sign in again",
|
|
3281
3952
|
"totpNotEnabled": "2FA is not enabled",
|
|
3282
|
-
"totpSecretNoDataDir": "TOTP secret is encrypted but dataDir is not set"
|
|
3953
|
+
"totpSecretNoDataDir": "TOTP secret is encrypted but dataDir is not set",
|
|
3954
|
+
"mustChangePassword": "You must set a new password before continuing",
|
|
3955
|
+
"policyNeedsOwn2fa": "Turn on 2FA for this account and confirm with a TOTP code before requiring 2FA for others"
|
|
3283
3956
|
},
|
|
3284
3957
|
"http": {
|
|
3285
3958
|
"notFoundRoute": "Not found: {{method}} {{path}}",
|
|
@@ -3289,7 +3962,8 @@
|
|
|
3289
3962
|
"unprocessable": "Request rejected by server",
|
|
3290
3963
|
"requestFailed": "Request failed ({{status}})",
|
|
3291
3964
|
"jsonInvalid": "Invalid JSON",
|
|
3292
|
-
"internal": "Internal error"
|
|
3965
|
+
"internal": "Internal error",
|
|
3966
|
+
"payloadTooLarge": "Request body is too large"
|
|
3293
3967
|
},
|
|
3294
3968
|
"YSK_HOST_BROWSE_SSRF": "Host browse blocked by security policy",
|
|
3295
3969
|
"YSK_HOST_BROWSE_SESSION": "Host browse session not found or expired",
|
|
@@ -3306,10 +3980,10 @@
|
|
|
3306
3980
|
"startService": "Start service",
|
|
3307
3981
|
"notInstalled": "fail2ban is not installed",
|
|
3308
3982
|
"toolHintPrefix": "Underlying tools:",
|
|
3309
|
-
"toolHintBody": "fail2ban
|
|
3310
|
-
"toolHintTemp": "
|
|
3311
|
-
"toolHintBody2": "
|
|
3312
|
-
"toolHintUfw": "
|
|
3983
|
+
"toolHintBody": "fail2ban temporarily bans after scanning logs. For attack response use",
|
|
3984
|
+
"toolHintTemp": "",
|
|
3985
|
+
"toolHintBody2": "",
|
|
3986
|
+
"toolHintUfw": "handles ports and permanent rules.",
|
|
3313
3987
|
"tabs": {
|
|
3314
3988
|
"bans": "Ban list",
|
|
3315
3989
|
"whitelist": "Whitelist",
|
|
@@ -3334,11 +4008,15 @@
|
|
|
3334
4008
|
"emptyBansDesc": "Or no permission to read fail2ban-client",
|
|
3335
4009
|
"ignoreipTitle": "ignoreip whitelist",
|
|
3336
4010
|
"ignoreipDesc": "IPs never banned (panel file + optional live fail2ban-client)",
|
|
4011
|
+
"whitelistEmptyWarn": "Whitelist is empty while jails can ban you. Add your login IP before applying ignoreip.",
|
|
4012
|
+
"suggestIgnoreLogin": "Your login IP {{ip}}",
|
|
4013
|
+
"applyIgnoreEmptyWarn": "Applying with an empty whitelist clears ignoreip",
|
|
4014
|
+
"applyIgnoreNeedConfirm": "Rewrites jail ignoreip and reloads fail2ban",
|
|
3337
4015
|
"addIp": "Add IP",
|
|
3338
4016
|
"addWhitelist": "Add to whitelist",
|
|
3339
4017
|
"applyPolicyIgnoreip": "Apply policy (incl. ignoreip)",
|
|
3340
4018
|
"applyIgnoreipOk": "Wrote ignoreip into jail.local and applied",
|
|
3341
|
-
"ignoreipHint": "Without
|
|
4019
|
+
"ignoreipHint": "Without system-change permission only the panel file is written. Apply policy rebuilds jail.local ignoreip and reloads.",
|
|
3342
4020
|
"whitelistTitle": "Whitelist ({{count}})",
|
|
3343
4021
|
"whitelistRemoved": "Removed from whitelist",
|
|
3344
4022
|
"remove": "Remove",
|
|
@@ -3376,13 +4054,36 @@
|
|
|
3376
4054
|
"reload": "fail2ban reloaded",
|
|
3377
4055
|
"restart": "fail2ban restarted",
|
|
3378
4056
|
"stop": "fail2ban stopped"
|
|
3379
|
-
}
|
|
4057
|
+
},
|
|
4058
|
+
"statWhitelist": "Whitelist",
|
|
4059
|
+
"invalidIp": "Enter a valid IPv4, IPv6, or CIDR.",
|
|
4060
|
+
"whitelistPendingApply": "Saved to the panel list. Press Apply policy to write jail.local.",
|
|
4061
|
+
"ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
|
|
4062
|
+
"jailsTabHint": "Status of active jails. Turn jails on or off in the Policy tab.",
|
|
4063
|
+
"colJail": "Jail",
|
|
4064
|
+
"colEnabled": "On",
|
|
4065
|
+
"serviceStateLine": "Unit {{unit}} · {{state}} · boot {{boot}}",
|
|
4066
|
+
"jail": {
|
|
4067
|
+
"sshd": "SSH brute-force",
|
|
4068
|
+
"nginxHttpAuth": "Nginx HTTP authentication",
|
|
4069
|
+
"nginxBotsearch": "Nginx scanner / bot probes",
|
|
4070
|
+
"nginxBadbots": "Nginx known bad bots",
|
|
4071
|
+
"nginxLimitReq": "Nginx rate-limit jail",
|
|
4072
|
+
"postfix": "Postfix mail brute-force",
|
|
4073
|
+
"dovecot": "Dovecot mail login",
|
|
4074
|
+
"recidive": "Repeat offenders"
|
|
4075
|
+
},
|
|
4076
|
+
"cannotBanSelf": "This is the host or your login IP — add it to ignoreip instead of banning",
|
|
4077
|
+
"suggestIgnoreHint": "Suggested admin IPs (panel file only until you apply policy):",
|
|
4078
|
+
"suggestIgnoreAdd": "Add {{ip}}"
|
|
3380
4079
|
},
|
|
3381
4080
|
"featurePage": {
|
|
3382
4081
|
"back": "Back"
|
|
3383
4082
|
},
|
|
3384
4083
|
"files": {
|
|
3385
4084
|
"pillFiles": "{{count}} files",
|
|
4085
|
+
"pillTrash": "{{count}} in trash",
|
|
4086
|
+
"pillSpace": "{{used}} used",
|
|
3386
4087
|
"statFiles": "Files",
|
|
3387
4088
|
"statFolders": "Folders",
|
|
3388
4089
|
"statUsage": "Usage",
|
|
@@ -3441,10 +4142,14 @@
|
|
|
3441
4142
|
"selectAllAria": "Select all",
|
|
3442
4143
|
"selectAll": "Select all",
|
|
3443
4144
|
"folder": "Folder",
|
|
4145
|
+
"dirNamedLikeFile": "(folder leftover; name looks like a file)",
|
|
3444
4146
|
"dropToUpload": "Drop to upload",
|
|
3445
4147
|
"trashTitle": "Trash ({{count}})",
|
|
3446
4148
|
"trashDesc": "Deleted files can be restored or permanently removed",
|
|
3447
4149
|
"emptyTrash": "Empty trash",
|
|
4150
|
+
"emptyTrashTitle": "Empty trash?",
|
|
4151
|
+
"emptyTrashDesc": "Every file in trash will be permanently deleted. This cannot be undone.",
|
|
4152
|
+
"purgeForeverDesc": "This file will be permanently deleted. This cannot be undone.",
|
|
3448
4153
|
"emptyTrashDone": "Trash emptied",
|
|
3449
4154
|
"colOrigPath": "Original path",
|
|
3450
4155
|
"colDeletedAt": "Deleted at",
|
|
@@ -3472,12 +4177,16 @@
|
|
|
3472
4177
|
"enabledMount": "Enabled · {{path}}",
|
|
3473
4178
|
"notEnabled": "Not enabled",
|
|
3474
4179
|
"disable": "Disable",
|
|
4180
|
+
"webdavAlreadyOff": "WebDAV is already off",
|
|
3475
4181
|
"webdavDisabled": "WebDAV disabled",
|
|
3476
4182
|
"webdavEnabledNoEcho": "Enabled (password will not be shown again; re-issue if needed)",
|
|
3477
4183
|
"webdavDefaultOff": "Off by default — click Enable and issue token to start",
|
|
4184
|
+
"webdavAfterEnable": "Available after you enable WebDAV and issue a token.",
|
|
3478
4185
|
"webdavOn": "Enabled",
|
|
3479
4186
|
"webdavOff": "Disabled",
|
|
4187
|
+
"webdavOffNoToken": "Disabled (no active token)",
|
|
3480
4188
|
"webdavTokenId": "Token #{{id}}",
|
|
4189
|
+
"webdavTokenInactive": "Disabled — token #{{id}} is not active",
|
|
3481
4190
|
"webdavUpdated": "Updated {{at}}",
|
|
3482
4191
|
"webdavTokenOnceTitle": "Copy the password now",
|
|
3483
4192
|
"webdavTokenOnceHint": "This password is shown only once; it cannot be retrieved after you leave this page.",
|
|
@@ -3569,6 +4278,9 @@
|
|
|
3569
4278
|
"movedToTrash": "Moved to trash",
|
|
3570
4279
|
"moveToTrashTitle": "Move to trash?",
|
|
3571
4280
|
"moveToTrashDesc": "Delete {{count}} item(s) (restorable from trash)",
|
|
4281
|
+
"deleteMore": " and {{n}} more",
|
|
4282
|
+
"unshareTitle": "Revoke this share?",
|
|
4283
|
+
"unshareDesc": "Revoke the link for {{name}} ({{url}}). The link stops working immediately.",
|
|
3572
4284
|
"preview": "Preview",
|
|
3573
4285
|
"imagePreviewNeedLogin": "Image preview needs login; use download instead",
|
|
3574
4286
|
"pdfDownloadHint": "Download PDF to open (needs auth headers)",
|
|
@@ -3699,7 +4411,37 @@
|
|
|
3699
4411
|
"publicShareBtFailed": "WebTorrent failed: {{detail}}",
|
|
3700
4412
|
"publicShareBtNeedMagnet": "No magnet URI for this share",
|
|
3701
4413
|
"publicShareBtUnsupported": "This browser cannot run WebTorrent; use magnet or .torrent instead",
|
|
3702
|
-
"btNone": "—"
|
|
4414
|
+
"btNone": "—",
|
|
4415
|
+
"uploadStatusSkipped": "Skipped",
|
|
4416
|
+
"uploadStatusCancelled": "Cancelled",
|
|
4417
|
+
"conflict": {
|
|
4418
|
+
"titleFile": "An item named “{{name}}” already exists",
|
|
4419
|
+
"titleFolder": "A folder named “{{name}}” already exists",
|
|
4420
|
+
"descFile": "Choose what to do. Nothing is overwritten until you pick Replace.",
|
|
4421
|
+
"descFolder": "Choose what to do. Merge keeps the existing folder and continues with its contents.",
|
|
4422
|
+
"incoming": "Incoming",
|
|
4423
|
+
"existing": "Already here",
|
|
4424
|
+
"kindFile": "File",
|
|
4425
|
+
"kindFolder": "Folder",
|
|
4426
|
+
"skip": "Skip",
|
|
4427
|
+
"skipHint": "Do not add this item",
|
|
4428
|
+
"keepBoth": "Keep both",
|
|
4429
|
+
"keepBothHint": "Save incoming as {{name}}",
|
|
4430
|
+
"replace": "Replace",
|
|
4431
|
+
"replaceHint": "Overwrite the existing file. A version snapshot is kept when possible.",
|
|
4432
|
+
"replaceFolderHint": "Overwrite files with the same names inside this folder. Other files stay.",
|
|
4433
|
+
"merge": "Merge",
|
|
4434
|
+
"mergeHint": "Keep the existing folder and add incoming files into it",
|
|
4435
|
+
"applyAll": "Apply to all remaining conflicts",
|
|
4436
|
+
"applyAllHint": "Use this action for the rest of this drop or transfer",
|
|
4437
|
+
"cancelRest": "Cancel remaining",
|
|
4438
|
+
"progress": "{{current}} of {{total}}",
|
|
4439
|
+
"typeMismatch": "A {{destKind}} named “{{name}}” is already here. Incoming is a {{incomingKind}}.",
|
|
4440
|
+
"skipped": "Skipped",
|
|
4441
|
+
"cancelled": "Cancelled"
|
|
4442
|
+
},
|
|
4443
|
+
"webdavReissueUnchanged": "Token id did not change after re-issue — the write may not have persisted. Try again.",
|
|
4444
|
+
"webdavDisableFailed": "WebDAV is still enabled after disable — the write may not have persisted. Try again."
|
|
3703
4445
|
},
|
|
3704
4446
|
"firewall": {
|
|
3705
4447
|
"profiles": {
|
|
@@ -3723,6 +4465,8 @@
|
|
|
3723
4465
|
"statAllow": "Allow",
|
|
3724
4466
|
"statDeny": "Deny",
|
|
3725
4467
|
"statDefaultIn": "Default incoming",
|
|
4468
|
+
"defaultNotApplied": "n/a (UFW off)",
|
|
4469
|
+
"ufwOffHint": "Default incoming is not applied while UFW is off",
|
|
3726
4470
|
"executeOn": "On",
|
|
3727
4471
|
"executeOff": "Off",
|
|
3728
4472
|
"ufwDisabled": "UFW disabled",
|
|
@@ -3732,6 +4476,7 @@
|
|
|
3732
4476
|
"notInstalled": "UFW is not installed",
|
|
3733
4477
|
"toolHintPrefix": "Underlying tools:",
|
|
3734
4478
|
"toolHintBody": "UFW = ports / permanent rules · for attack response and auto-ban use",
|
|
4479
|
+
"toolHintfail2ban": "fail2ban = temporary log-based bans",
|
|
3735
4480
|
"toolHintFail2ban": "fail2ban = temporary log-based bans",
|
|
3736
4481
|
"executeOffHint": "System changes off — status is readable;",
|
|
3737
4482
|
"tabs": {
|
|
@@ -3792,6 +4537,7 @@
|
|
|
3792
4537
|
"deleteRuleDesc": "Removes that UFW rule number (needs system-change permission).",
|
|
3793
4538
|
"servicesTitle": "Managed services",
|
|
3794
4539
|
"servicesHint": "Desired network exposure for YSK services. Opening a service syncs these rules automatically.",
|
|
4540
|
+
"servicesUfwOff": "UFW is off. This list is the desired exposure, not rules the host is enforcing.",
|
|
3795
4541
|
"servicesEmpty": "No service exposure data yet",
|
|
3796
4542
|
"servicesEmptyDesc": "Start a managed service (web, FTPS, VPN, DB…) to populate this list.",
|
|
3797
4543
|
"servicesManualHint": "Manual port chips are under the Ports tab — prefer managing access here so rules stay tagged (ysk-svc).",
|
|
@@ -3801,7 +4547,12 @@
|
|
|
3801
4547
|
"colPorts": "Ports",
|
|
3802
4548
|
"colSync": "Status",
|
|
3803
4549
|
"synced": "Synced",
|
|
3804
|
-
"syncNow": "Sync"
|
|
4550
|
+
"syncNow": "Sync",
|
|
4551
|
+
"disableConfirmTitle": "Disable UFW?",
|
|
4552
|
+
"disableConfirmDesc": "The host firewall will stop filtering traffic. SSH and the panel can be exposed if the host is on a public network.",
|
|
4553
|
+
"disableConfirmConsequence": "Existing allow/deny rules stay stored but are not enforced until UFW is enabled again.",
|
|
4554
|
+
"desiredOnlyUfwOff": "Desired: {{mode}} · UFW off (not applied)",
|
|
4555
|
+
"syncNotApplied": "UFW off · not applied"
|
|
3805
4556
|
},
|
|
3806
4557
|
"ftp": {
|
|
3807
4558
|
"title": "FTPS accounts",
|
|
@@ -3858,6 +4609,22 @@
|
|
|
3858
4609
|
"accountCount": "Accounts",
|
|
3859
4610
|
"loginBanner": "Login banner",
|
|
3860
4611
|
"sslDomain": "SSL domain",
|
|
4612
|
+
"plaintextInsecure": "Cleartext FTP (no TLS) — insecure. Enable FTPS before exposing port 21.",
|
|
4613
|
+
"plaintextPublicLive": "vsftpd is listening on a public address without FTPS. Credentials travel in the clear. Enable FTPS, bind to this host only, or confirm PLAINTEXT to keep this posture.",
|
|
4614
|
+
"bindAddress": "Listen scope",
|
|
4615
|
+
"bindAddressHint": "New installs bind to this host only. Public listen without FTPS needs a typed confirmation.",
|
|
4616
|
+
"bindLocal": "This host only",
|
|
4617
|
+
"bindLocalHint": "127.0.0.1 — fine without TLS for local tests",
|
|
4618
|
+
"bindPublic": "Public",
|
|
4619
|
+
"bindPublicHint": "All interfaces — enable FTPS or confirm PLAINTEXT",
|
|
4620
|
+
"enableFtpsAndStart": "Enable FTPS and start",
|
|
4621
|
+
"publicPlainNeedConfirm": "Public cleartext FTP needs a PLAINTEXT confirmation",
|
|
4622
|
+
"plainConfirmTitle": "Start public FTP without FTPS?",
|
|
4623
|
+
"plainConfirmDesc": "Port 21 will accept logins and data in the clear on the public address.",
|
|
4624
|
+
"plainConfirmC1": "Usernames and passwords are visible on the network.",
|
|
4625
|
+
"plainConfirmC2": "PASV will advertise the configured public IP.",
|
|
4626
|
+
"plainConfirmC3": "Host firewall and cloud security group are not opened for you.",
|
|
4627
|
+
"plainConfirmAction": "Start cleartext FTP",
|
|
3861
4628
|
"pasvRange": "PASV range",
|
|
3862
4629
|
"forceTls": "Force TLS",
|
|
3863
4630
|
"allowWrite": "Allow write",
|
|
@@ -3866,7 +4633,13 @@
|
|
|
3866
4633
|
"listenPortHint": "Default 21; open firewall if using another port",
|
|
3867
4634
|
"customPort": "Custom port",
|
|
3868
4635
|
"ipStack": "IP stack",
|
|
3869
|
-
"ipStackHint": "Most vsftpd builds: listen and listen_ipv6 are mutually exclusive
|
|
4636
|
+
"ipStackHint": "Most vsftpd builds: listen and listen_ipv6 are mutually exclusive.",
|
|
4637
|
+
"listenConflictLive": "Live vsftpd.conf has listen={{v4}} and listen_ipv6={{v6}} — both YES will fail to start.",
|
|
4638
|
+
"listenConflictNeedFix": "Fix listen / listen_ipv6 first (they cannot both be YES), then apply.",
|
|
4639
|
+
"fixListenIpv4": "Use IPv4 only (listen=YES, listen_ipv6=NO)",
|
|
4640
|
+
"liveFileValue": "File now: {{value}}",
|
|
4641
|
+
"startBlockedFailed": "Service is failed — apply a valid config before start",
|
|
4642
|
+
"ftpsNeedCert": "Pick a certificate domain first",
|
|
3870
4643
|
"ipv4Only": "IPv4 only",
|
|
3871
4644
|
"ipv6Mapped": "IPv6 (mapped OK)",
|
|
3872
4645
|
"bannerHint": "Welcome string clients see after connect",
|
|
@@ -3878,7 +4651,10 @@
|
|
|
3878
4651
|
"openFirewallPage": "Open firewall page",
|
|
3879
4652
|
"customEnd": "Custom end",
|
|
3880
4653
|
"pasvPublicIp": "PASV public IP",
|
|
4654
|
+
"detectPublicIp": "Detect public IP",
|
|
4655
|
+
"detectPublicIpTitle": "Fill the first non-loopback IPv4 from this host",
|
|
3881
4656
|
"pasvPublicIpHint": "NAT/cloud: set public IP; local can leave empty",
|
|
4657
|
+
"pasvIpRequired": "Set a public PASV IP before apply (NAT/cloud). Detect or type an address.",
|
|
3882
4658
|
"optionalEmpty": "(optional)",
|
|
3883
4659
|
"securityTitle": "Security settings",
|
|
3884
4660
|
"securityDesc": "TLS, write access, chroot; Apply and restart to take effect",
|
|
@@ -3900,7 +4676,7 @@
|
|
|
3900
4676
|
"opsResult": "Ops result",
|
|
3901
4677
|
"saved": "Saved",
|
|
3902
4678
|
"accountsList": "Account list",
|
|
3903
|
-
"accountsListDesc": "After create, Apply to sync vsftpd. If
|
|
4679
|
+
"accountsListDesc": "After create, Apply to sync vsftpd. If it is not installed, use the Software tab.",
|
|
3904
4680
|
"startService": " start.",
|
|
3905
4681
|
"createAccountPlus": "+ Create account",
|
|
3906
4682
|
"noFtpAccounts": "No FTP accounts yet",
|
|
@@ -3936,7 +4712,13 @@
|
|
|
3936
4712
|
"sftpRegister": "Register key",
|
|
3937
4713
|
"sftpAddedAt": "Added {{time}}",
|
|
3938
4714
|
"sftpTechSummary": "Technical details (advanced)",
|
|
3939
|
-
"sftpTechNote": "Keys are written under the managed path"
|
|
4715
|
+
"sftpTechNote": "Keys are written under the managed path",
|
|
4716
|
+
"filterProject": "Showing FTP accounts for this project",
|
|
4717
|
+
"clearProjectFilter": "Show all accounts",
|
|
4718
|
+
"vsftpdFailedHint": "vsftpd failed. Open the Service tab (listen and listen_ipv6 cannot both be YES).",
|
|
4719
|
+
"vsftpdFailedGeneric": "vsftpd failed. Open the Service tab for live settings and journal.",
|
|
4720
|
+
"stateFailed": "Failed to start",
|
|
4721
|
+
"tabService": "Service"
|
|
3940
4722
|
},
|
|
3941
4723
|
"geo": {
|
|
3942
4724
|
"continents": {
|
|
@@ -4109,6 +4891,7 @@
|
|
|
4109
4891
|
"viaHost": "via host",
|
|
4110
4892
|
"emptyTitle": "Host-mediated browse",
|
|
4111
4893
|
"emptyBody": "Enter a URL. DNS, TLS, and egress use this server — not your browser. Cookies stay in a server-side jar.",
|
|
4894
|
+
"needUrl": "Enter a URL above to start a session.",
|
|
4112
4895
|
"ssrfBlocked": "Blocked by security policy (SSRF / mode)",
|
|
4113
4896
|
"loadFailed": "Fetch failed on host",
|
|
4114
4897
|
"sessionReady": "Session ready",
|
|
@@ -4127,12 +4910,15 @@
|
|
|
4127
4910
|
"engineBrowser": "Real browser",
|
|
4128
4911
|
"engineSwitchHint": "Switching engine opens a new session.",
|
|
4129
4912
|
"needChrome": "Real browser needs system Chrome/Chromium (or set YSK_HOST_BROWSE_CHROME). Using proxy otherwise.",
|
|
4913
|
+
"engineBrowserNeedChrome": "Real browser (Chrome not installed)",
|
|
4914
|
+
"egressHint": "The target site sees this server’s outbound address ({{host}}), not your laptop. Cookies stay in the server session jar.",
|
|
4130
4915
|
"needChromeFallback": "Chrome unavailable — switched to proxy engine.",
|
|
4131
4916
|
"liveError": "Live stream failed",
|
|
4132
4917
|
"liveWaiting": "Connecting host browser…",
|
|
4133
4918
|
"tabSettings": "Settings",
|
|
4134
4919
|
"softwareNeeded": "Chromium / Chrome required for real browser engine",
|
|
4135
|
-
"softwareHint": "One-click installs distro Chromium via apt. Google Chrome
|
|
4920
|
+
"softwareHint": "One-click installs distro Chromium via apt. Google Chrome is also detected if already present. Needs superuser and system-change permission.",
|
|
4921
|
+
"closeNoSession": "No session yet",
|
|
4136
4922
|
"goInstallChrome": "Open Software tab",
|
|
4137
4923
|
"settingsIntro": "These panel settings override process environment variables for Host Browse.",
|
|
4138
4924
|
"settingsEngine": "Default engine",
|
|
@@ -4173,6 +4959,8 @@
|
|
|
4173
4959
|
},
|
|
4174
4960
|
"home": "Home",
|
|
4175
4961
|
"bookmark": "Bookmark",
|
|
4962
|
+
"bookmarkAdd": "Add or remove bookmark",
|
|
4963
|
+
"bookmarkList": "Bookmark list",
|
|
4176
4964
|
"bookmarks": "Bookmarks",
|
|
4177
4965
|
"history": "History",
|
|
4178
4966
|
"bookmarkToggled": "Bookmark updated",
|
|
@@ -4181,6 +4969,9 @@
|
|
|
4181
4969
|
"mediaNote": "Real browser: video is streamed into the panel. Enable audio bridge in Settings to hear page audio (requires user gesture).",
|
|
4182
4970
|
"isolationNote": "Real browser creates an ephemeral Linux user for Chrome; leaving the page or idle timeout destroys that user.",
|
|
4183
4971
|
"resumeHint": "Resume previous session ({{count}} tabs)",
|
|
4972
|
+
"resumeHintDetail": "Resume previous session ({{count}} tabs) · {{url}} · {{when}}",
|
|
4973
|
+
"resumeHintOwned": "Resume last browse for {{user}} ({{count}} tabs) · {{url}} · {{when}}",
|
|
4974
|
+
"clearSessionData": "Clear session data",
|
|
4184
4975
|
"resume": "Resume",
|
|
4185
4976
|
"resumeDismiss": "Dismiss",
|
|
4186
4977
|
"resumeDone": "Session resumed",
|
|
@@ -4215,7 +5006,20 @@
|
|
|
4215
5006
|
"mediaAudioLabel": "Audio",
|
|
4216
5007
|
"mediaAudioDesc": "Optional bridge from host Chrome; may require unlock click.",
|
|
4217
5008
|
"mediaPolicyLabel": "Policy",
|
|
4218
|
-
"mediaPolicyDesc": "Downloads and autoplay follow the safety and download settings above."
|
|
5009
|
+
"mediaPolicyDesc": "Downloads and autoplay follow the safety and download settings above.",
|
|
5010
|
+
"frameBlocked": "The page could not be shown in the panel frame.",
|
|
5011
|
+
"historyEmpty": "No history in this session.",
|
|
5012
|
+
"bookmarksEmpty": "No bookmarks yet.",
|
|
5013
|
+
"closeSessionHint": "Clears cookies for this browse session. Bookmarks stay.",
|
|
5014
|
+
"envUnset": "not set",
|
|
5015
|
+
"envPanelValue": "panel: {{value}}",
|
|
5016
|
+
"envColVar": "Variable",
|
|
5017
|
+
"envColHost": "Host process",
|
|
5018
|
+
"envColPanel": "Panel setting",
|
|
5019
|
+
"envColEffective": "Effective",
|
|
5020
|
+
"settingsNoSandboxWarn": "Disables Chromium sandbox. Use only inside a trusted container. Applies on next real-browser session.",
|
|
5021
|
+
"settingsDangerDlWarn": "Allows executable and script downloads through the host browser. Confirm you need this.",
|
|
5022
|
+
"settingsDangerConfirmTitle": "Enable a high-risk browse setting?"
|
|
4219
5023
|
},
|
|
4220
5024
|
"listToolbar": {
|
|
4221
5025
|
"searchPlaceholder": "Search…",
|
|
@@ -4227,7 +5031,8 @@
|
|
|
4227
5031
|
"activeFilters": "{{count}} filters active",
|
|
4228
5032
|
"noResults": "No matches",
|
|
4229
5033
|
"noResultsHint": "Try another keyword or clear filters.",
|
|
4230
|
-
"searching": "Searching…"
|
|
5034
|
+
"searching": "Searching…",
|
|
5035
|
+
"emptyChip": "No items in this filter"
|
|
4231
5036
|
},
|
|
4232
5037
|
"logViewer": {
|
|
4233
5038
|
"banIpTitle": "Ban {{ip}} in Protection"
|
|
@@ -4244,7 +5049,12 @@
|
|
|
4244
5049
|
"totpLabel": "Authentication code",
|
|
4245
5050
|
"totpHint": "6-digit code from your authenticator app",
|
|
4246
5051
|
"submitting": "Signing in…",
|
|
4247
|
-
"sessionExpired": "Session expired; sign in again"
|
|
5052
|
+
"sessionExpired": "Session expired; sign in again",
|
|
5053
|
+
"newPassword": "New password",
|
|
5054
|
+
"newPasswordAgain": "Confirm new password",
|
|
5055
|
+
"changePassword": "Change password",
|
|
5056
|
+
"passwordMismatch": "The two passwords do not match",
|
|
5057
|
+
"passwordChanged": "Password updated"
|
|
4248
5058
|
},
|
|
4249
5059
|
"logs": {
|
|
4250
5060
|
"catSystem": "System files",
|
|
@@ -4293,6 +5103,9 @@
|
|
|
4293
5103
|
"followingSse": " · following (SSE)",
|
|
4294
5104
|
"loadingSources": "Loading sources…",
|
|
4295
5105
|
"pickSource": "Pick a source on the left, or a shortcut · then Query",
|
|
5106
|
+
"noRowsInWindow": "No records in this time window",
|
|
5107
|
+
"showInactiveUnits": "Show inactive units",
|
|
5108
|
+
"sseNeedFollow": "Turn on Follow first — SSE is only for live tail",
|
|
4296
5109
|
"maintOverview": "Maintenance overview",
|
|
4297
5110
|
"executable": "Executable",
|
|
4298
5111
|
"restricted": "Restricted",
|
|
@@ -4356,8 +5169,11 @@
|
|
|
4356
5169
|
"lines": "{{n}} lines",
|
|
4357
5170
|
"followingSseDyn": " · following{{sse}}",
|
|
4358
5171
|
"ipBan": "IP → ban",
|
|
4359
|
-
"vacuumNote": "
|
|
4360
|
-
"vacuumTime": "
|
|
5172
|
+
"vacuumNote": "Reclaims systemd-journald disk. Without execute permission the action is blocked — it is not treated as success.",
|
|
5173
|
+
"vacuumTime": "Clean by retention",
|
|
5174
|
+
"vacuumNeedRetention": "Enter a retention window first (for example 14d)",
|
|
5175
|
+
"vacuumNeedConfirm": "Needs confirmation — deletes old journal logs",
|
|
5176
|
+
"vacuumSizeNeedConfirm": "Needs confirmation — caps journal disk use",
|
|
4361
5177
|
"vacuumHint": "Keep ≥7 days recommended; re-probe disk after.",
|
|
4362
5178
|
"logrotateStatus": "System logrotate status (read-only probe)",
|
|
4363
5179
|
"logrotateMissing": "No status file or unreadable — check logrotate package in services matrix",
|
|
@@ -4365,12 +5181,13 @@
|
|
|
4365
5181
|
"relatedOpsDesc": "Log observation vs incident response",
|
|
4366
5182
|
"scLogsLine": "Observe journal / files / projects",
|
|
4367
5183
|
"scProtLine": "Incident response, auto ban (click IP)",
|
|
4368
|
-
"journalVacuumTitle": "
|
|
5184
|
+
"journalVacuumTitle": "Clean journald disk",
|
|
4369
5185
|
"journalSection": "Journal",
|
|
4370
5186
|
"sseLabel": "SSE",
|
|
4371
5187
|
"logrotateLabel": "logrotate",
|
|
4372
5188
|
"srcNginx": "nginx",
|
|
4373
5189
|
"srcSsh": "ssh",
|
|
5190
|
+
"srcfail2ban": "fail2ban",
|
|
4374
5191
|
"srcFail2ban": "fail2ban",
|
|
4375
5192
|
"srcAuthLog": "auth.log",
|
|
4376
5193
|
"srcNginxError": "nginx error",
|
|
@@ -4379,7 +5196,29 @@
|
|
|
4379
5196
|
"groupVarLog": "/var/log",
|
|
4380
5197
|
"prioErr": "err+",
|
|
4381
5198
|
"prioWarn": "warn+",
|
|
4382
|
-
"prioInfo": "info+"
|
|
5199
|
+
"prioInfo": "info+",
|
|
5200
|
+
"vacuumSize": "Limit to 500 MB",
|
|
5201
|
+
"logrotateNoStatus": "No logrotate status file yet (normal if it has never run).",
|
|
5202
|
+
"autoVacuumOff": "Automatic clean is off. Time is unused until you enable it.",
|
|
5203
|
+
"aboutAllowlist": "Explore can only read allowlisted journal units and /var/log paths. Arbitrary host paths are not offered.",
|
|
5204
|
+
"aboutCustomPath": "Add a custom path on Settings (only /var/log or /run/log). Then open it from Explore.",
|
|
5205
|
+
"vacuumSizeAlreadyBelow": "Current usage already below cap, this will no-op",
|
|
5206
|
+
"vacuumSizeNoopDesc": "Journal is already under 500 MB. This still runs vacuum --size=500M and typically deletes nothing.",
|
|
5207
|
+
"journalDiskHint": "Current systemd-journald usage (active journal). Rotated files under /var/log are not included.",
|
|
5208
|
+
"varLogDiskHint": "Estimated du of /var/log, including rotated files. Approximate.",
|
|
5209
|
+
"queryFirst": "Query first",
|
|
5210
|
+
"errorsWindowHint": "Recent errors from the last overview probe (not live-updating when you switch tabs)",
|
|
5211
|
+
"sourceCount": "{{shown}} shown",
|
|
5212
|
+
"sourceUnavailable": "This source has not produced a log yet",
|
|
5213
|
+
"sourceNoLog": "No log yet",
|
|
5214
|
+
"projectSourcesTitle": "{{n}} source(s) (files + journal)",
|
|
5215
|
+
"logrotatePath": "Path",
|
|
5216
|
+
"logrotateLast": "Last rotated",
|
|
5217
|
+
"exportJsonl": "JSONL export",
|
|
5218
|
+
"sseLive": " (live stream)",
|
|
5219
|
+
"logrotateExpand": "Show {{n}} more",
|
|
5220
|
+
"logrotateCollapse": "Show fewer",
|
|
5221
|
+
"logrotateVersion": "Status version {{v}}"
|
|
4383
5222
|
},
|
|
4384
5223
|
"metrics": {
|
|
4385
5224
|
"alert": {
|
|
@@ -4410,6 +5249,15 @@
|
|
|
4410
5249
|
"alerts": "Alerts"
|
|
4411
5250
|
},
|
|
4412
5251
|
"load": "Load",
|
|
5252
|
+
"load1m": "Load 1m",
|
|
5253
|
+
"uptime": "Uptime",
|
|
5254
|
+
"filterCpu5": "≥5% CPU",
|
|
5255
|
+
"filterMem5": "≥5% memory",
|
|
5256
|
+
"signalHint": "Select a process, then send TERM or KILL.",
|
|
5257
|
+
"signalFromRow": "Select this process for TERM / KILL",
|
|
5258
|
+
"selectForSignal": "Select",
|
|
5259
|
+
"forceKillTitleNamed": "KILL PID {{pid}} ({{cmd}})?",
|
|
5260
|
+
"sendSigTitleNamed": "Send TERM to PID {{pid}} ({{cmd}})?",
|
|
4413
5261
|
"min1": "1m",
|
|
4414
5262
|
"min5": "5m",
|
|
4415
5263
|
"min15": "15m",
|
|
@@ -4465,6 +5313,8 @@
|
|
|
4465
5313
|
"noProjectsDesc": "Create a project to see real home usage here",
|
|
4466
5314
|
"usageNote": "Usage from local du (not estimated). Quota is a control-plane soft limit; hard setquota needs apply-to-host.",
|
|
4467
5315
|
"thresholdAlerts": "Threshold alerts",
|
|
5316
|
+
"alertsBuiltinOnly": "Built-in CPU / memory / disk thresholds only. No email, webhook, or Slack channel.",
|
|
5317
|
+
"lastEvaluated": "Last checked",
|
|
4468
5318
|
"alertsOkTitle": "All clear",
|
|
4469
5319
|
"alertsOkDesc": "No memory / load / disk threshold alerts.",
|
|
4470
5320
|
"cpu": "CPU",
|
|
@@ -4481,6 +5331,18 @@
|
|
|
4481
5331
|
"selectAllAria": "Select all filtered",
|
|
4482
5332
|
"selectPidAria": "Select PID {{pid}}",
|
|
4483
5333
|
"controlPlane": "Control plane",
|
|
5334
|
+
"controlPlaneNoSignal": "The control-plane process cannot be signalled",
|
|
5335
|
+
"protectedPid": "PID 1 / init / systemd cannot be signalled from the panel",
|
|
5336
|
+
"sigTermTitle": "Send SIGTERM (ask process to exit)",
|
|
5337
|
+
"sigKillTitle": "Send SIGKILL (force kill — cannot be caught)",
|
|
5338
|
+
"batchTerm": "TERM",
|
|
5339
|
+
"batchKill": "KILL",
|
|
5340
|
+
"rawTopLabel": "Raw top (untranslated)",
|
|
5341
|
+
"followSseLabel": "Follow (live stream)",
|
|
5342
|
+
"alertsReadOnly": "Built-in CPU / memory / disk thresholds only. No email, webhook, or Slack channel.",
|
|
5343
|
+
"alertsGoNotifications": "Open notification centre",
|
|
5344
|
+
"lastCheck": "Last check",
|
|
5345
|
+
"rawTopHint": "Untranslated top(1) output",
|
|
4484
5346
|
"detailShort": "Info",
|
|
4485
5347
|
"procUnavailable": "Could not get processes",
|
|
4486
5348
|
"noProcData": "No process data yet",
|
|
@@ -4499,7 +5361,7 @@
|
|
|
4499
5361
|
"reniceHint": "-20 highest · 19 lowest (needs EXECUTE)",
|
|
4500
5362
|
"noData": "No data",
|
|
4501
5363
|
"mountsTitle": "Disk mounts ({{count}})",
|
|
4502
|
-
"mountsDesc": "Real
|
|
5364
|
+
"mountsDesc": "Real disk usage (temporary filesystems filtered)",
|
|
4503
5365
|
"noMounts": "No mount list",
|
|
4504
5366
|
"noMountsDesc": "df unavailable or filtered. Root disk still on Overview.",
|
|
4505
5367
|
"seeProjectUsage": "Project home usage is on the Project usage tab (real du · {{size}})",
|
|
@@ -4511,7 +5373,19 @@
|
|
|
4511
5373
|
"usageNoteFull": "Usage from local du (not estimated). Quota is a control-plane soft limit; hard setquota needs apply-to-host.",
|
|
4512
5374
|
"sseNeedLogin": "Not logged in; cannot open SSE",
|
|
4513
5375
|
"sseSessionExpired": "Not logged in or session expired; cannot open SSE",
|
|
4514
|
-
"sseHttpError": "stream HTTP {{status}}"
|
|
5376
|
+
"sseHttpError": "stream HTTP {{status}}",
|
|
5377
|
+
"colFilesystem": "Filesystem",
|
|
5378
|
+
"colMount": "Mount",
|
|
5379
|
+
"colSize": "Size",
|
|
5380
|
+
"colUsed": "Used",
|
|
5381
|
+
"colAvail": "Available",
|
|
5382
|
+
"colUsePct": "Used %",
|
|
5383
|
+
"colHome": "Home",
|
|
5384
|
+
"usageNoteLink": "Control-plane soft quota. Apply hard limits on the project Isolation tab.",
|
|
5385
|
+
"shareNoQuotaHint": "No quota set, so share is not a percentage. Set a quota on the project Isolation tab.",
|
|
5386
|
+
"setQuotaLink": "Set quota",
|
|
5387
|
+
"unusualHome": "Unusual path",
|
|
5388
|
+
"unusualHomeHint": "Not a /home/… project home. Canonical isolation is /home/ysk-server-{id}."
|
|
4515
5389
|
},
|
|
4516
5390
|
"migrate": {
|
|
4517
5391
|
"tabInventory": "Inventory",
|
|
@@ -4525,6 +5399,9 @@
|
|
|
4525
5399
|
"subtitle": "Source control plane → full copy to new host. Afterward only change public IP/DNS; accounts, paths, and projects stay the same.",
|
|
4526
5400
|
"inventorying": "Inventorying",
|
|
4527
5401
|
"inventoried": "Inventoried",
|
|
5402
|
+
"inventoriedWarn": "Inventoried · {{n}} warnings",
|
|
5403
|
+
"inventoriedOrphans": "Inventoried · {{n}} leftover homes",
|
|
5404
|
+
"inventoriedWarnAndOrphans": "Inventoried · {{w}} warnings · {{n}} leftover",
|
|
4528
5405
|
"inventoryFailed": "Inventory failed",
|
|
4529
5406
|
"pendingInventory": "Pending inventory",
|
|
4530
5407
|
"projects": "Projects",
|
|
@@ -4553,6 +5430,8 @@
|
|
|
4553
5430
|
"authMethod": "Auth method",
|
|
4554
5431
|
"rootPassword": "Root password",
|
|
4555
5432
|
"notPersisted": "Not persisted",
|
|
5433
|
+
"passwordNotStored": "Password is used for this SSH session only and is not saved on disk.",
|
|
5434
|
+
"overwriteDanger": "Overwrite will replace existing YSK data on the target. This cannot be undone from the panel.",
|
|
4556
5435
|
"outboundIdentity": "Outbound identity in vault",
|
|
4557
5436
|
"dryRun": "Dry-run precheck",
|
|
4558
5437
|
"startMigrate": "Start full-host migration",
|
|
@@ -4581,6 +5460,27 @@
|
|
|
4581
5460
|
"restartApiHint": "If you just deployed a new version, restart the API (",
|
|
4582
5461
|
"afterRestart": ") then Refresh.",
|
|
4583
5462
|
"inventoryWarnings": "Inventory warnings ({{count}})",
|
|
5463
|
+
"orphanHomesHint": "Leftover project homes (not in the store). Remove only after you confirm they are unused.",
|
|
5464
|
+
"orphanHomesTitle": "Leftover project homes ({{count}})",
|
|
5465
|
+
"orphanHomesSummary": "{{count}} path(s) on disk are not in the store. Back up first if unsure, then remove unused paths.",
|
|
5466
|
+
"orphanColHome": "Home",
|
|
5467
|
+
"orphanColModified": "Modified",
|
|
5468
|
+
"orphanColEntries": "Entries",
|
|
5469
|
+
"orphanEntries": "{{n}} top-level entries in the directory",
|
|
5470
|
+
"orphanKpi": "Leftover",
|
|
5471
|
+
"sourceOs": "OS",
|
|
5472
|
+
"sourceDataDir": "dataDir",
|
|
5473
|
+
"sourceDbRedis": "Databases / Redis",
|
|
5474
|
+
"sourceDbRedisValue": "{{db}} databases · {{redis}} Redis",
|
|
5475
|
+
"orphanRemove": "Remove",
|
|
5476
|
+
"orphanRemoveTitle": "Delete leftover project home?",
|
|
5477
|
+
"orphanRemoveDesc": "Permanently delete {{path}} from disk. This is not a store project. Needs superuser and system-change permission.",
|
|
5478
|
+
"orphanRemovePhrase": "Type DELETE to confirm.",
|
|
5479
|
+
"orphanRemoveNeedConfirm": "Needs confirmation",
|
|
5480
|
+
"orphanBackupFirst": "Back up first (open Backups)",
|
|
5481
|
+
"orphanMtime": "Last modified {{at}}",
|
|
5482
|
+
"expandAllWarnings": "Show all {{n}} warnings",
|
|
5483
|
+
"collapseWarnings": "Show fewer",
|
|
4584
5484
|
"moreWarnings": "…and {{n}} more",
|
|
4585
5485
|
"authPassword": "root password (switch to key after temp key install)",
|
|
4586
5486
|
"authIdentity": "SSH identity vault identityId",
|
|
@@ -4591,7 +5491,7 @@
|
|
|
4591
5491
|
"allowOverwriteDesc": "· Required if target already has ysk.json",
|
|
4592
5492
|
"dryRunOnly": "Dry-run only",
|
|
4593
5493
|
"dryRunOnlyDesc": "· Inventory + precheck only; no rsync or target writes",
|
|
4594
|
-
"executeNote": "Host needs
|
|
5494
|
+
"executeNote": "Host needs system-change permission and a superuser API. After migrate, update DNS A/AAAA and check cloud firewall + mail PTR.",
|
|
4595
5495
|
"dnsCutover": "DNS cutover (manual)",
|
|
4596
5496
|
"dnsCutoverDesc": "Point A/AAAA for these names to the new public IP;"
|
|
4597
5497
|
},
|
|
@@ -4670,7 +5570,9 @@
|
|
|
4670
5570
|
"runtimes": "Runtimes",
|
|
4671
5571
|
"security": "Security",
|
|
4672
5572
|
"system": "System",
|
|
4673
|
-
"ai": "AI"
|
|
5573
|
+
"ai": "AI",
|
|
5574
|
+
"validators": "Validators",
|
|
5575
|
+
"containers": "Containers"
|
|
4674
5576
|
},
|
|
4675
5577
|
"java": "Java",
|
|
4676
5578
|
"kotlin": "Kotlin",
|
|
@@ -4690,13 +5592,27 @@
|
|
|
4690
5592
|
"bookmarkAdded": "Pinned to sidebar",
|
|
4691
5593
|
"bookmarkRemoved": "Removed from sidebar",
|
|
4692
5594
|
"btTracker": "BT Tracker",
|
|
4693
|
-
"support": "Support"
|
|
5595
|
+
"support": "Support",
|
|
5596
|
+
"noAccessTitle": "No access",
|
|
5597
|
+
"noAccessDesc": "Your role does not include this page. Ask an admin if you need it.",
|
|
5598
|
+
"backToDashboard": "Back to dashboard",
|
|
5599
|
+
"validators": "Validators (Beta)",
|
|
5600
|
+
"docker": "Docker"
|
|
4694
5601
|
},
|
|
4695
5602
|
"network": {
|
|
4696
5603
|
"title": "Network interfaces",
|
|
4697
5604
|
"canMutate": "Mutable",
|
|
4698
5605
|
"readOnlyBlocked": "Read-only / blocked",
|
|
4699
5606
|
"statIfaces": "Interfaces",
|
|
5607
|
+
"statUp": "Up",
|
|
5608
|
+
"oper": {
|
|
5609
|
+
"up": "Up",
|
|
5610
|
+
"down": "Down",
|
|
5611
|
+
"unknown": "Unknown",
|
|
5612
|
+
"loopback": "Always on",
|
|
5613
|
+
"loopbackHint": "Loopback is always available and cannot be changed.",
|
|
5614
|
+
"other": "Other"
|
|
5615
|
+
},
|
|
4700
5616
|
"statGateway": "Gateway",
|
|
4701
5617
|
"pageActions": "Page actions",
|
|
4702
5618
|
"loadingSnap": "Loading network snapshot…",
|
|
@@ -4729,6 +5645,8 @@
|
|
|
4729
5645
|
"defaultDev": "Default egress: {{dev}}",
|
|
4730
5646
|
"saveNm": "Save (NetworkManager, survives reboot)",
|
|
4731
5647
|
"ephemeralHint": "Unchecked = live ip route add only",
|
|
5648
|
+
"nmUnavailable": "NetworkManager is not running — only a live route can be added",
|
|
5649
|
+
"defaultRouteDownNeedName": "This is the default route egress. Type the interface name to confirm — the panel may disconnect.",
|
|
4732
5650
|
"saveRoute": "Save route",
|
|
4733
5651
|
"dnsSettings": "DNS settings",
|
|
4734
5652
|
"dnsNmHint": "Writes NM connection “{{conn}}” and reconnects (persistent)",
|
|
@@ -4797,9 +5715,17 @@
|
|
|
4797
5715
|
"applyDnsNotes": "Apply runs nmcli connection modify + up; brief disconnect is normal. Stub 127.0.0.53 is not written (local resolved).",
|
|
4798
5716
|
"testResolve": "Test resolve",
|
|
4799
5717
|
"loadRaw": "Load raw output",
|
|
5718
|
+
"hideRaw": "Hide raw output",
|
|
5719
|
+
"rawLoadedAt": "Loaded {{time}}",
|
|
4800
5720
|
"confirmDown": "Confirm Down",
|
|
5721
|
+
"linkDownTitle": "Take {{name}} offline",
|
|
5722
|
+
"linkDownNeedConfirm": "Type the interface name to confirm",
|
|
4801
5723
|
"defaultRouteDownWarn": "This interface is the default route egress; down may cut panel access.",
|
|
4802
5724
|
"deleteDefaultMayDrop": " — deleting default may drop connectivity.",
|
|
5725
|
+
"deleteDefaultPanelWarn": "Deleting the default route can drop this panel session. Type DEFAULT to confirm.",
|
|
5726
|
+
"deleteDefaultNeedConfirm": "Needs confirmation — type DEFAULT (may drop this panel)",
|
|
5727
|
+
"deleteRouteNeedConfirm": "Needs confirmation",
|
|
5728
|
+
"typeDefaultToConfirm": "Type DEFAULT to confirm",
|
|
4803
5729
|
"gateway": "Gateway",
|
|
4804
5730
|
"nameservers": "Nameservers",
|
|
4805
5731
|
"searchDomains": "Search domains",
|
|
@@ -4829,10 +5755,16 @@
|
|
|
4829
5755
|
"azure_frontdoor": "Azure Front Door",
|
|
4830
5756
|
"gcore": "Gcore CDN",
|
|
4831
5757
|
"custom": "Custom proxies"
|
|
4832
|
-
}
|
|
5758
|
+
},
|
|
5759
|
+
"needProvider": "Choose a CDN provider before fetching its IP list.",
|
|
5760
|
+
"spoofWarn": "Trusting the wrong CIDR lets clients spoof X-Forwarded-For / CDN headers as their IP."
|
|
4833
5761
|
},
|
|
4834
5762
|
"linkUp": "Up",
|
|
4835
|
-
"linkDown": "Down"
|
|
5763
|
+
"linkDown": "Down",
|
|
5764
|
+
"linkDownDefault": "Down default route",
|
|
5765
|
+
"loopbackImmutable": "Loopback cannot be changed",
|
|
5766
|
+
"operUnknownHint": "Kernel did not report UP/DOWN (common for lo). The interface is still usable.",
|
|
5767
|
+
"persistNmHint": "Persistable means changes can survive reboot via NetworkManager."
|
|
4836
5768
|
},
|
|
4837
5769
|
"nginx": {
|
|
4838
5770
|
"pillSites": "{{count}} site(s)",
|
|
@@ -4841,6 +5773,8 @@
|
|
|
4841
5773
|
"purgeOk": "Purged",
|
|
4842
5774
|
"projectSitesHint": "Project sites (managed conf) and standalone sites are listed separately. Edit project Nginx under Projects → Network.",
|
|
4843
5775
|
"purgeCache": "Purge cache + reload",
|
|
5776
|
+
"purgeCacheTitle": "Purge Nginx cache and reload?",
|
|
5777
|
+
"purgeCacheDesc": "Clears the on-disk cache and reloads Nginx. Live sites stay up.",
|
|
4844
5778
|
"notInstalled": "Nginx is not installed",
|
|
4845
5779
|
"listTitle": "Sites ({{count}})",
|
|
4846
5780
|
"listDesc": "After create, click Apply to sync to the system",
|
|
@@ -4916,9 +5850,19 @@
|
|
|
4916
5850
|
"setHsts": "HSTS",
|
|
4917
5851
|
"setCfRealIp": "Cloudflare Real IP",
|
|
4918
5852
|
"setIndexes": "Directory listing",
|
|
4919
|
-
"bodyInherit": "Global"
|
|
5853
|
+
"bodyInherit": "Global",
|
|
5854
|
+
"stopSites": "{{n}} site(s) will stop answering HTTP."
|
|
5855
|
+
},
|
|
5856
|
+
"notFound": {
|
|
5857
|
+
"title": "Page not found",
|
|
5858
|
+
"body": "No panel page at {{path}}.",
|
|
5859
|
+
"hint": "Unknown URLs no longer send you to the dashboard.",
|
|
5860
|
+
"home": "Dashboard"
|
|
4920
5861
|
},
|
|
4921
5862
|
"notes": {
|
|
5863
|
+
"agents": {
|
|
5864
|
+
"sessionNotFound": "Session not found: {{sessionId}}"
|
|
5865
|
+
},
|
|
4922
5866
|
"notFound": "Not found",
|
|
4923
5867
|
"needPath": "Specify a path",
|
|
4924
5868
|
"needName": "Enter a name",
|
|
@@ -4950,19 +5894,53 @@
|
|
|
4950
5894
|
},
|
|
4951
5895
|
"ssh": {
|
|
4952
5896
|
"identityNotFound": "Identity not found",
|
|
4953
|
-
"registrationNotFound": "Registration not found"
|
|
5897
|
+
"registrationNotFound": "Registration not found",
|
|
5898
|
+
"keyOkNologin": "Key accepted. Account is nologin or SFTP-only (no SSH shell). Treated as PASS.",
|
|
5899
|
+
"keyOkSftp": "SFTP pwd succeeded after SSH shell was refused."
|
|
4954
5900
|
},
|
|
4955
5901
|
"cdn": {
|
|
4956
5902
|
"siteNotFound": "CDN site not found",
|
|
4957
|
-
"nodeMissing": "Node does not exist"
|
|
5903
|
+
"nodeMissing": "Node does not exist",
|
|
5904
|
+
"loopbackOriginRemote": "Origin is 127.0.0.1 — that is this host, not a remote edge. Set a reachable origin IP or bind_ip.",
|
|
5905
|
+
"originRemoteRewrite": "Remote edges will use reachable origin {{url}} instead of loopback.",
|
|
5906
|
+
"originRemoteUnknown": "Origin is loopback and no public/LAN IP or bind_ip is known — apply will refuse remote edges until one is set.",
|
|
5907
|
+
"needSshOrFleet": "Remote edge needs an outbound SSH identity (or username) or a /agents fleet session. Health URL alone is not apply transport.",
|
|
5908
|
+
"probe": {
|
|
5909
|
+
"timeout": "Connect timeout after {{ms}}ms ({{detail}}). Peer may be firewalled.",
|
|
5910
|
+
"dns": "DNS lookup failed ({{detail}}).",
|
|
5911
|
+
"refused": "Connection refused after {{ms}}ms ({{detail}}). Port closed or one-way block.",
|
|
5912
|
+
"tls": "TLS verify failed ({{detail}}).",
|
|
5913
|
+
"unreach": "Host unreachable after {{ms}}ms ({{detail}}).",
|
|
5914
|
+
"http": "HTTP probe failed after {{ms}}ms ({{detail}})."
|
|
5915
|
+
}
|
|
4958
5916
|
},
|
|
4959
5917
|
"backup": {
|
|
5918
|
+
"testUnsaved": "Testing unsaved form values (not written to settings).",
|
|
5919
|
+
"testIdentity": "sftp (identity) to {{spec}} ok",
|
|
5920
|
+
"sshAuthFailed": "SSH key or password rejected (publickey). Pick an outbound identity or install sshpass.",
|
|
5921
|
+
"remotePathIsFile": "Remote path {{path}} is a file. Use a directory.",
|
|
5922
|
+
"remoteMkdirFailed": "Could not create remote directory: {{detail}}",
|
|
5923
|
+
"sidecarPushed": "Also pushed SQL sidecar {{name}}",
|
|
4960
5924
|
"fileNotFound": "Backup file not found",
|
|
4961
5925
|
"resticNoPassword": "restic is enabled but password is not set",
|
|
4962
|
-
"resticNotInPath": "restic not in PATH"
|
|
5926
|
+
"resticNotInPath": "restic not in PATH",
|
|
5927
|
+
"dbEnvUnreadable": "Could not read .db.env; skipped SQL dump.",
|
|
5928
|
+
"dbEnvNoName": ".db.env has no database name; skipped SQL dump.",
|
|
5929
|
+
"targetOutside": "Restore target must be inside the project home or the public files root.",
|
|
5930
|
+
"controlPlaneDryRun": "Preview only — nothing written. In the panel, use Restore and confirm the phrase to write.",
|
|
5931
|
+
"controlPlaneNeedConfirm": "Full control-plane restore needs the confirm phrase RESTORE-CONTROL-PLANE.",
|
|
5932
|
+
"controlPlaneRestartAfter": "Restart the API after a successful restore.",
|
|
5933
|
+
"movedToTrash": "Moved {{name}} to the recycle bin. Permanent delete after {{days}} days.",
|
|
5934
|
+
"restoreNameExists": "Cannot restore {{name}} — a live archive with that name already exists.",
|
|
5935
|
+
"restoredFromTrash": "Restored {{name}} from the recycle bin.",
|
|
5936
|
+
"trashEmptied": "Permanently deleted {{n}} archive(s) from the recycle bin."
|
|
4963
5937
|
},
|
|
4964
5938
|
"redis": {
|
|
4965
|
-
"cliMissing": "redis-cli is not installed"
|
|
5939
|
+
"cliMissing": "redis-cli is not installed",
|
|
5940
|
+
"requirepassAlreadySet": "Redis already has requirepass — not overwritten.",
|
|
5941
|
+
"requirepassApplied": "requirepass applied at runtime",
|
|
5942
|
+
"requirepassApplyFailed": "Could not CONFIG SET requirepass (will rely on restart + conf)",
|
|
5943
|
+
"generatedRequirepass": "Generated Redis password (shown once): {{password}}"
|
|
4966
5944
|
},
|
|
4967
5945
|
"nginx": {
|
|
4968
5946
|
"reloaded": "nginx reloaded",
|
|
@@ -4985,7 +5963,8 @@
|
|
|
4985
5963
|
"vsftpdStarted": "vsftpd started",
|
|
4986
5964
|
"openPortsStep": "Firewall ports (manual)",
|
|
4987
5965
|
"openPortsReminder": "Open TCP ports on host firewall and cloud security group: {{ports}}. FTPS apply does not open ports for you.",
|
|
4988
|
-
"openPortsPasvHint": "If login works but directory LIST times out, the PASV data range is blocked — open the ful"
|
|
5966
|
+
"openPortsPasvHint": "If login works but directory LIST times out, the PASV data range is blocked — open the ful",
|
|
5967
|
+
"publicPlaintextBlocked": "Refusing to start public FTP without FTPS. Bind to this host only, enable FTPS with a certificate, or confirm PLAINTEXT to expose cleartext on the public address."
|
|
4989
5968
|
},
|
|
4990
5969
|
"deploy": {
|
|
4991
5970
|
"nodeMissingIsolated": "Node binary missing for isolated deploy: {{path}} — install Node {{version}} toolchain then redeploy. Refusing to write a unit that would 203/EXEC.",
|
|
@@ -5003,7 +5982,8 @@
|
|
|
5003
5982
|
"pathOutsideSandbox": "Path outside sandbox: {{target}}",
|
|
5004
5983
|
"notFoundRel": "Not found: {{relPath}}",
|
|
5005
5984
|
"fileNotFoundRel": "File not found: {{relPath}}",
|
|
5006
|
-
"notFoundFrom": "Not found: {{fromPath}}"
|
|
5985
|
+
"notFoundFrom": "Not found: {{fromPath}}",
|
|
5986
|
+
"alreadyExists": "Already exists: {{name}}"
|
|
5007
5987
|
},
|
|
5008
5988
|
"dns": {
|
|
5009
5989
|
"needZoneServerIp": "Enter zone and server IP",
|
|
@@ -5039,11 +6019,24 @@
|
|
|
5039
6019
|
"applyDigOk": "PowerDNS BIND: list-zones + dig OK",
|
|
5040
6020
|
"applyDigFail": "Zone registered in conf but dig still empty/REFUSED — not marking applied",
|
|
5041
6021
|
"applySyncIncomplete": "PowerDNS bind sync incomplete — zone file on disk only (not applied). Fix EXECUTE/root or pdns logs.",
|
|
5042
|
-
"writeOnlyHint": "Zone file written only — PowerDNS will not answer until load/apply registers named"
|
|
6022
|
+
"writeOnlyHint": "Zone file written only — PowerDNS will not answer until load/apply registers named",
|
|
6023
|
+
"noActiveUnit": "No active named/bind9/pdns unit",
|
|
6024
|
+
"pdnsUnitRestarts": "pdns unit state/restarts: {{detail}}",
|
|
6025
|
+
"port53LoopbackOnly": "Port 53 is only on loopback (systemd-resolved 127.0.0.53) — not a product authoritative nameserver",
|
|
6026
|
+
"port53Closed": "Port 53 is not listening (UDP/TCP)",
|
|
6027
|
+
"udp53NotPublic": "UDP/53 is not listening on a public address",
|
|
6028
|
+
"tcp53NotPublic": "TCP/53 is not listening on a public address",
|
|
6029
|
+
"noManagedZones": "No managed zone files under dataDir/dns/zones",
|
|
6030
|
+
"pdnsListZones": "PowerDNS list-zones: {{n}}",
|
|
6031
|
+
"lookupIgnoredAt": "dig is unavailable — @{{server}} was ignored. Not using the system resolver as that server’s answer.",
|
|
6032
|
+
"localAOk": "local A {{name}} → {{ip}}"
|
|
5043
6033
|
},
|
|
5044
6034
|
"db": {
|
|
5045
6035
|
"needExecuteCreate": "Host execute is off; cannot create database from the panel",
|
|
5046
|
-
"dryRunMysql": "dry-run: database not created. Use --execute with YSK_EXECUTE=1 to provision"
|
|
6036
|
+
"dryRunMysql": "dry-run: database not created. Use --execute with YSK_EXECUTE=1 to provision",
|
|
6037
|
+
"remoteNoCreds": "No username/password stored — TCP only (registration is not a login).",
|
|
6038
|
+
"remoteReachable": "TCP {{host}}:{{port}} open ({{ms}}ms).",
|
|
6039
|
+
"remoteUnreachable": "TCP {{host}}:{{port}} closed or filtered ({{ms}}ms)."
|
|
5047
6040
|
},
|
|
5048
6041
|
"net": {
|
|
5049
6042
|
"invalidIface": "Invalid interface name",
|
|
@@ -5085,9 +6078,6 @@
|
|
|
5085
6078
|
"postqueueMailDown": "Postfix is not running (showq unavailable). Panel tried to start it when YSK_EXECUTE is on — check the Software tab / systemctl status postfix.",
|
|
5086
6079
|
"postqueueSpoolMissing": "Postfix queue directories are missing (e.g. hold/). Panel tried to create the spool tree and start Postfix when YSK_EXECUTE is on."
|
|
5087
6080
|
},
|
|
5088
|
-
"agents": {
|
|
5089
|
-
"sessionNotFound": "Session not found: {{sessionId}}"
|
|
5090
|
-
},
|
|
5091
6081
|
"software": {
|
|
5092
6082
|
"startUnit": "Start {{u}}",
|
|
5093
6083
|
"installedSpec": "Installed {{title}}",
|
|
@@ -5124,7 +6114,17 @@
|
|
|
5124
6114
|
"dns": "DNS",
|
|
5125
6115
|
"email": "Email",
|
|
5126
6116
|
"isolation": "Project isolation",
|
|
5127
|
-
"ops": "Operations"
|
|
6117
|
+
"ops": "Operations",
|
|
6118
|
+
"runtimesNode": "Node.js",
|
|
6119
|
+
"runtimesPhp": "PHP",
|
|
6120
|
+
"runtimesPython": "Python",
|
|
6121
|
+
"runtimesGo": "Go",
|
|
6122
|
+
"pm2": "PM2",
|
|
6123
|
+
"runtimesNodeFix": "Install Node from /runtimes/node",
|
|
6124
|
+
"runtimesPhpFix": "Install PHP from /runtimes/php",
|
|
6125
|
+
"runtimesPythonFix": "Install Python from /runtimes/python",
|
|
6126
|
+
"runtimesGoFix": "Install Go from /runtimes/go",
|
|
6127
|
+
"pm2Fix": "Install PM2 from the Node runtime page"
|
|
5128
6128
|
},
|
|
5129
6129
|
"needAdmin": "Administrator permission required",
|
|
5130
6130
|
"notInstalled": "Not installed",
|
|
@@ -5135,6 +6135,44 @@
|
|
|
5135
6135
|
"probe": "Probe",
|
|
5136
6136
|
"install": "Install",
|
|
5137
6137
|
"port": "Port",
|
|
6138
|
+
"git": {
|
|
6139
|
+
"missingBin": "git is not on PATH",
|
|
6140
|
+
"auth": "Authentication failed. Add a deploy key or HTTPS token.",
|
|
6141
|
+
"hostkey": "SSH host key verification failed. Confirm and pin the host key.",
|
|
6142
|
+
"dirty": "Working tree has {{count}} local change(s). Pull is blocked.",
|
|
6143
|
+
"diverged": "Cannot fast-forward. Reset to the remote ref if you intend to discard local Git history.",
|
|
6144
|
+
"missingRef": "That branch, tag, or commit is not on the remote.",
|
|
6145
|
+
"shallow": "This clone is shallow. Fetch full history before pinning an old commit.",
|
|
6146
|
+
"notRepo": "app/ is not a Git repository yet.",
|
|
6147
|
+
"diffEmpty": "No unstaged diff (protected .env is excluded).",
|
|
6148
|
+
"unrelated": "Unrelated histories. Reclone only after confirm — custom files will be lost.",
|
|
6149
|
+
"lock": "Git index.lock is present. Remove it only if no git process is running.",
|
|
6150
|
+
"disk": "Disk full or quota exceeded.",
|
|
6151
|
+
"timeout": "Git timed out.",
|
|
6152
|
+
"network": "Network error talking to the remote.",
|
|
6153
|
+
"lfs": "This repo uses Git LFS and git-lfs is not available.",
|
|
6154
|
+
"submodule": "Submodule update failed.",
|
|
6155
|
+
"unknown": "Git failed. See the command output.",
|
|
6156
|
+
"fetchOk": "Fetched from origin.",
|
|
6157
|
+
"checkoutOk": "Checked out {{ref}}.",
|
|
6158
|
+
"resetOk": "Reset hard to {{ref}}.",
|
|
6159
|
+
"envRestored": "Restored app/.env from the control plane.",
|
|
6160
|
+
"needPinHost": "SSH host key is not pinned. Scan and pin it before clone or fetch.",
|
|
6161
|
+
"tokenSaved": "HTTPS token stored (never shown again).",
|
|
6162
|
+
"tokenCleared": "HTTPS token removed.",
|
|
6163
|
+
"tokenInvalid": "Token must be at least 8 characters.",
|
|
6164
|
+
"deployKeyCreated": "Deploy key created. Add the public key on the Git host.",
|
|
6165
|
+
"deployKeyCleared": "Deploy key detached from this project.",
|
|
6166
|
+
"hostPinned": "Pinned SSH host keys for {{host}}.",
|
|
6167
|
+
"hostUnpinned": "Cleared pinned SSH host keys.",
|
|
6168
|
+
"hostScanFailed": "ssh-keyscan returned no keys for that host.",
|
|
6169
|
+
"hookEnabled": "Inbound Git hook is on. Paste the URL into GitHub, Gitea, or GitLab yourself.",
|
|
6170
|
+
"hookDisabled": "Inbound Git hook is off. The URL will not sync.",
|
|
6171
|
+
"hookSecretOnce": "Copy this hook secret now. It is not shown again.",
|
|
6172
|
+
"refsNeedUrl": "Enter a Git URL first.",
|
|
6173
|
+
"refsOk": "Loaded {{branches}} branch(es) and {{tags}} tag(s).",
|
|
6174
|
+
"refsEmpty": "Remote advertised no branches or tags."
|
|
6175
|
+
},
|
|
5138
6176
|
"auto": {
|
|
5139
6177
|
"n0001": "Status: applied",
|
|
5140
6178
|
"n0002": "User not found",
|
|
@@ -5397,7 +6435,7 @@
|
|
|
5397
6435
|
"n0259": "domain",
|
|
5398
6436
|
"n0260": "domain Not found:",
|
|
5399
6437
|
"n0261": "dovecot reload failed or servicenot (sieve Wrote; reload Success)",
|
|
5400
|
-
"n0262": "dry-run fleet dispatch (not )",
|
|
6438
|
+
"n0262": "dry-run fleet dispatch (not queued)",
|
|
5401
6439
|
"n0263": "dry-run peer push (not scp)",
|
|
5402
6440
|
"n0264": "dry-run remote install (not ssh)",
|
|
5403
6441
|
"n0265": "dry-run transfer done ( full bootstrap)",
|
|
@@ -5406,10 +6444,10 @@
|
|
|
5406
6444
|
"n0268": "dry-run — not write /etc",
|
|
5407
6445
|
"n0269": "dry-run: add --execute firstapply ufw",
|
|
5408
6446
|
"n0270": "dry-run: inventory + preflight passed, not package/transfer",
|
|
5409
|
-
"n0271": "
|
|
5410
|
-
"n0272": "
|
|
5411
|
-
"n0273": "
|
|
5412
|
-
"n0274": "
|
|
6447
|
+
"n0271": "Dry-run: probe/plan only. Pass --execute with YSK_EXECUTE=1 to actually provision.",
|
|
6448
|
+
"n0272": "Dry-run: wrote the managed file (dataDir). Pass --execute with YSK_EXECUTE=1 as root to install the system drop-in.",
|
|
6449
|
+
"n0273": "Dry-run: not banned. Pass --execute with YSK_EXECUTE=1 to actually ban.",
|
|
6450
|
+
"n0274": "Dry-run: not unbanned. Pass --execute with YSK_EXECUTE=1 to actually unban.",
|
|
5413
6451
|
"n0275": "dryRun=true — change API",
|
|
5414
6452
|
"n0276": "dryRun: not write",
|
|
5415
6453
|
"n0277": "dump Wrote dataDir, not transfer",
|
|
@@ -5519,7 +6557,7 @@
|
|
|
5519
6557
|
"n0381": "post-transfer reapply",
|
|
5520
6558
|
"n0382": "post-transfer restore",
|
|
5521
6559
|
"n0383": "postconf not message_rate_limit (complete applied)",
|
|
5522
|
-
"n0384": "postgres-replica
|
|
6560
|
+
"n0384": "kind postgres-replica needs --engine postgres",
|
|
5523
6561
|
"n0385": "postgres_databases name",
|
|
5524
6562
|
"n0386": "postqueue unavailable or mailNot installed",
|
|
5525
6563
|
"n0387": "Install nginx on the host, or use panel software / runtime install",
|
|
@@ -5688,7 +6726,7 @@
|
|
|
5688
6726
|
"n0550": "128M, 256M, 512M, -1 ()",
|
|
5689
6727
|
"n0551": "e.g. 512MiB; leave empty to unset",
|
|
5690
6728
|
"n0552": "900 1 300 10; disable",
|
|
5691
|
-
"n0553": "
|
|
6729
|
+
"n0553": "Paste a session UUID from /agents on the cluster form, or CLI --member 10.0.0.3=replica:fleet:SESSION_UUID",
|
|
5692
6730
|
"n0554": "= ASN (system), not",
|
|
5693
6731
|
"n0555": "22/80/443; can offnot port",
|
|
5694
6732
|
"n0556": "kept: 10",
|
|
@@ -5758,7 +6796,7 @@
|
|
|
5758
6796
|
"n0620": "startprocessnot process",
|
|
5759
6797
|
"n0621": "OPcache",
|
|
5760
6798
|
"n0622": "SSL",
|
|
5761
|
-
"n0623": "",
|
|
6799
|
+
"n0623": "Active",
|
|
5762
6800
|
"n0624": "file",
|
|
5763
6801
|
"n0625": "file",
|
|
5764
6802
|
"n0626": "node wsrep, HA ≥2 node",
|
|
@@ -5785,7 +6823,7 @@
|
|
|
5785
6823
|
"n0647": "intern (MB)",
|
|
5786
6824
|
"n0648": "password",
|
|
5787
6825
|
"n0649": "Error, please apply",
|
|
5788
|
-
"n0650": "Security → My security
|
|
6826
|
+
"n0650": "Enable admin 2FA under Security → My security, then add a backup admin on Users.",
|
|
5789
6827
|
"n0651": "and path",
|
|
5790
6828
|
"n0652": "install PAM",
|
|
5791
6829
|
"n0653": "install vsftpd",
|
|
@@ -5974,7 +7012,7 @@
|
|
|
5974
7012
|
"n0836": "certificateplease Failed",
|
|
5975
7013
|
"n0837": "≥ file",
|
|
5976
7014
|
"n0838": "settingskeptbackup",
|
|
5977
|
-
"n0839": "
|
|
7015
|
+
"n0839": "Success means this target accepts BatchMode SSH (non-interactive). It is not a grant of global access.",
|
|
5978
7016
|
"n0840": "or 32767",
|
|
5979
7017
|
"n0841": "softwareInstalled",
|
|
5980
7018
|
"n0842": "permission/",
|
|
@@ -6134,7 +7172,7 @@
|
|
|
6134
7172
|
"n0996": "local nginx -t OK ( managed conf, ≠ edge applied)",
|
|
6135
7173
|
"n0997": "local wsrep can, size not node",
|
|
6136
7174
|
"n0998": "local ysk.json cannotread / fingerprint",
|
|
6137
|
-
"n0999": "
|
|
7175
|
+
"n0999": "Local node is OK; a complete healthy status needs a peer probe (not done).",
|
|
6138
7176
|
"n1000": "local nginx — conf Wrote, not reload",
|
|
6139
7177
|
"n1001": "localAvailable NM connection; willSuccess. can \"\" or NetworkManager.",
|
|
6140
7178
|
"n1002": "localAvailable ps — cannot ()",
|
|
@@ -6260,7 +7298,7 @@
|
|
|
6260
7298
|
"n1120": "domain — map for (systemapplywill postmap )",
|
|
6261
7299
|
"n1121": "IP",
|
|
6262
7300
|
"n1122": "Available auto-ban enrich",
|
|
6263
|
-
"n1123": "
|
|
7301
|
+
"n1123": "Cannot ban on the host: YSK_EXECUTE is off. The panel list was not changed.",
|
|
6264
7302
|
"n1124": "cannot dump Redis: redis-cli",
|
|
6265
7303
|
"n1125": "cannot dump: serverHost execute is not enabled",
|
|
6266
7304
|
"n1126": "cannot fan-out: Host execute is not enabled",
|
|
@@ -6310,7 +7348,7 @@
|
|
|
6310
7348
|
"n1170": "cannot from npm or GitHub version (not )",
|
|
6311
7349
|
"n1171": "cannotprobe systemctl",
|
|
6312
7350
|
"n1172": "cannot DNS cluster: Host execute is not enabled",
|
|
6313
|
-
"n1173": "
|
|
7351
|
+
"n1173": "Host execute is off. Live SFTP/S3/local probe needs YSK_EXECUTE=1.",
|
|
6314
7352
|
"n1174": "cannot metrics",
|
|
6315
7353
|
"n1175": "cannot: serverHost execute is not enabled",
|
|
6316
7354
|
"n1176": "cannot ACME: Host execute is not enabled",
|
|
@@ -6730,7 +7768,7 @@
|
|
|
6730
7768
|
"n1590": "",
|
|
6731
7769
|
"n1591": "Not root — useradd / systemd / nginx system paths are restricted",
|
|
6732
7770
|
"n1592": "not seccomp requires runAsUser",
|
|
6733
|
-
"n1593": "
|
|
7771
|
+
"n1593": "Public requests / min",
|
|
6734
7772
|
"n1594": "panelconnection; Available\"\" ( )",
|
|
6735
7773
|
"n1595": "Panel is not running as root",
|
|
6736
7774
|
"n1596": "Available apply:false",
|
|
@@ -6748,6 +7786,8 @@
|
|
|
6748
7786
|
"n1608": "verifyinvalid",
|
|
6749
7787
|
"n1609": "passed",
|
|
6750
7788
|
"n1610": "Package index not refreshed (YSK_EXECUTE off) — showing apt list only; enable execute to run apt-get update",
|
|
7789
|
+
"n1611": "UFW is inactive: {{n}} permanent deny rule(s) are stored in user.rules but the kernel is not enforcing them.",
|
|
7790
|
+
"n1612": "UFW is inactive. A deny rule would be written to user.rules only — the kernel would not drop packets. Enable UFW first. Not enabling automatically.",
|
|
6751
7791
|
"t0001": "listenPort invalid: {{v0}}",
|
|
6752
7792
|
"t0002": "restoreversion {{v0}}",
|
|
6753
7793
|
"t0003": "file (>{{v0}} bytes)",
|
|
@@ -7001,7 +8041,7 @@
|
|
|
7001
8041
|
"t0251": "{{v0}} Install incomplete",
|
|
7002
8042
|
"t0252": "{{v0}} servicestart",
|
|
7003
8043
|
"t0253": "Start failed: {{v0}}",
|
|
7004
|
-
"t0254": "Supports Node.js version {{v0}};
|
|
8044
|
+
"t0254": "Supports Node.js version {{v0}}; available versions: {{v1}}",
|
|
7005
8045
|
"t0255": "Supports PHP version {{v0}}; Available: {{v1}}",
|
|
7006
8046
|
"t0256": "Supports Python version {{v0}}; Available: {{v1}}",
|
|
7007
8047
|
"t0257": "Supports Go version {{v0}}; Available: {{v1}}",
|
|
@@ -7078,7 +8118,7 @@
|
|
|
7078
8118
|
"t0328": "projectdirectory: {{v0}}",
|
|
7079
8119
|
"t0329": "tar failed: {{v0}}",
|
|
7080
8120
|
"t0330": "Wrotebackup {{v0}}",
|
|
7081
|
-
"t0331": "
|
|
8121
|
+
"t0331": "Preview: {{v0}} files in the archive (showing {{v1}})",
|
|
7082
8122
|
"t0332": "cannot: {{v0}}",
|
|
7083
8123
|
"t0333": "restore (web) to {{v0}}",
|
|
7084
8124
|
"t0334": "web restoreFailed: {{v0}}",
|
|
@@ -7123,20 +8163,20 @@
|
|
|
7123
8163
|
"t0373": "Project \"{{v0}}\" isolation",
|
|
7124
8164
|
"t0374": "to localpath {{v0}}",
|
|
7125
8165
|
"t0375": "identity {{v0}}: {{v1}}",
|
|
7126
|
-
"t0376": "
|
|
7127
|
-
"t0377": "
|
|
7128
|
-
"t0378": "
|
|
7129
|
-
"t0379": "
|
|
7130
|
-
"t0380": "
|
|
7131
|
-
"t0381": "
|
|
8166
|
+
"t0376": "sftp (identity) to {{v0}} ok",
|
|
8167
|
+
"t0377": "sftp (identity) failed: {{v0}}",
|
|
8168
|
+
"t0378": "sftp to {{v0}} ok",
|
|
8169
|
+
"t0379": "sftp failed: {{v0}}",
|
|
8170
|
+
"t0380": "sftp to {{v0}} ok",
|
|
8171
|
+
"t0381": "sftp failed: {{v0}} (set backup remote identityId)",
|
|
7132
8172
|
"t0382": "S3 {{v0}}",
|
|
7133
8173
|
"t0383": "S3 failed: {{v0}}",
|
|
7134
8174
|
"t0384": ": {{v0}}/{{v1}} admin Enabled 2FA",
|
|
7135
|
-
"t0385": "Policy not enforced: {{v0}}/{{v1}} admin(s) have 2FA
|
|
8175
|
+
"t0385": "Policy not enforced: {{v0}}/{{v1}} admin(s) have 2FA. If there is a single admin without 2FA, enable 2FA then add a backup admin.",
|
|
7136
8176
|
"t0386": "{{v0}} PATH",
|
|
7137
8177
|
"t0387": "{{v0}} not found",
|
|
7138
8178
|
"t0388": "Install {{v0}} or add it to PATH",
|
|
7139
|
-
"t0389": "
|
|
8179
|
+
"t0389": "Available versions: {{v0}}",
|
|
7140
8180
|
"t0390": "{{v0}}% ( {{v1}} MB)",
|
|
7141
8181
|
"t0391": "{{v0}}% ({{v1}})",
|
|
7142
8182
|
"t0392": "servicestart {{v0}}",
|
|
@@ -7376,18 +8416,18 @@
|
|
|
7376
8416
|
"t0626": "transfer: home rsync Failed {{v0}}",
|
|
7377
8417
|
"t0627": "skipped: {{v0}}",
|
|
7378
8418
|
"t0628": "transfer done → {{v0}}:{{v1}}",
|
|
7379
|
-
"t0629": "
|
|
8419
|
+
"t0629": "Project {{v0}} has no system user yet (home missing: {{v1}}). Finish isolation on the project page.",
|
|
7380
8420
|
"t0630": "project {{v0}} bind_ip={{v1}} — can ( IP )",
|
|
7381
8421
|
"t0631": "project {{v0}} home not path: {{v1}}",
|
|
7382
|
-
"t0632": "home (store ): {{v0}}",
|
|
8422
|
+
"t0632": "Orphan home on disk (no matching store project): {{v0}}",
|
|
7383
8423
|
"t0633": "Maildir: {{v0}}",
|
|
7384
8424
|
"t0634": "{{v0}} — cannot to target",
|
|
7385
8425
|
"t0635": "cannotprobe {{v0}}",
|
|
7386
8426
|
"t0636": "{{v0}} · {{v1}}",
|
|
7387
8427
|
"t0637": "project {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
|
|
7388
|
-
"t0638": "
|
|
8428
|
+
"t0638": "Install software {{v0}} · homes {{v1}}",
|
|
7389
8429
|
"t0639": "cutover host {{v0}}",
|
|
7390
|
-
"t0640": "
|
|
8430
|
+
"t0640": "{{v0}} warning(s) — review before cutover.",
|
|
7391
8431
|
"t0641": "key {{v0}}",
|
|
7392
8432
|
"t0642": "cannotkey: {{v0}}",
|
|
7393
8433
|
"t0643": "targetnot write authorized_keys: {{v0}}",
|
|
@@ -7451,7 +8491,7 @@
|
|
|
7451
8491
|
"t0701": "CDN {{v0}}",
|
|
7452
8492
|
"t0702": "origin shield Node does not exist: {{v0}}",
|
|
7453
8493
|
"t0703": "edges: {{v0}}",
|
|
7454
|
-
"t0704": "
|
|
8494
|
+
"t0704": "Origin URL (from project bind): {{v0}}",
|
|
7455
8495
|
"t0705": "update CDN {{v0}}",
|
|
7456
8496
|
"t0706": "create CDN {{v0}}",
|
|
7457
8497
|
"t0707": "origin shield: edge shield {{v0}} → {{v1}}",
|
|
@@ -7547,7 +8587,14 @@
|
|
|
7547
8587
|
"t0797": "timezone failed: {{v0}}",
|
|
7548
8588
|
"tScoreFrom": "score={{score}} from={{from}}",
|
|
7549
8589
|
"appliedTag": " (applied)",
|
|
7550
|
-
"writtenTag": " (written only)"
|
|
8590
|
+
"writtenTag": " (written only)",
|
|
8591
|
+
"selfDestMissing": "Cannot find the running install directory (systemd ExecStart or cli.js)",
|
|
8592
|
+
"selfDestUnwritable": "Cannot write to the running install directory {{v0}}",
|
|
8593
|
+
"selfApplied": "Applied {{v0}} onto {{v1}}",
|
|
8594
|
+
"selfVerifyFail": "Version file after overlay does not contain {{v0}}",
|
|
8595
|
+
"selfDownloadFail": "Cannot download or unpack official package {{v0}}: {{v1}}",
|
|
8596
|
+
"selfOverlayFail": "Could not overlay the official package onto the running install: {{v0}}",
|
|
8597
|
+
"selfUpgradeHint": "Panel apply failed. As root run: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade"
|
|
7551
8598
|
},
|
|
7552
8599
|
"tpl": {
|
|
7553
8600
|
"deleted": "Deleted {{name}}",
|
|
@@ -7610,7 +8657,7 @@
|
|
|
7610
8657
|
"noParen": "(none)",
|
|
7611
8658
|
"keepOldDb": "(kept old DB)",
|
|
7612
8659
|
"ufwNotDetected": "UFW not detected on this host",
|
|
7613
|
-
"fail2banStartHint": "Start it on the
|
|
8660
|
+
"fail2banStartHint": "Start it on the fail2ban page",
|
|
7614
8661
|
"hasExecuteNotRoot": "EXECUTE is on but process is not root",
|
|
7615
8662
|
"notRootTarget": "Not root (target useradd/apt will be blocked)",
|
|
7616
8663
|
"reapplyDone": "reapply key steps completed",
|
|
@@ -7739,6 +8786,8 @@
|
|
|
7739
8786
|
"openvpnComing": "OpenVPN full path is staged for the next release.",
|
|
7740
8787
|
"outlineComing": "Outline / Shadowsocks is staged for a later release.",
|
|
7741
8788
|
"needExecuteServer": "VPN server setup requires root and YSK_EXECUTE=1.",
|
|
8789
|
+
"serverStopped": "{{engine}} server stopped.",
|
|
8790
|
+
"serverStopFailed": "Could not stop {{engine}} server: {{detail}}",
|
|
7742
8791
|
"needExecuteClient": "VPN client connect requires root and YSK_EXECUTE=1.",
|
|
7743
8792
|
"keygenFailed": "WireGuard key generation failed (is wg installed?).",
|
|
7744
8793
|
"serverKeysCreated": "WireGuard server keys created.",
|
|
@@ -7748,6 +8797,7 @@
|
|
|
7748
8797
|
"peerCreated": "Client «{{name}}» created.",
|
|
7749
8798
|
"peerNotFound": "Client not found.",
|
|
7750
8799
|
"peerRemoved": "Client removed.",
|
|
8800
|
+
"peersSynced": "Peer list reloaded on the running WireGuard interface.",
|
|
7751
8801
|
"setEndpointHint": "Set public endpoint (host:port) so mobile clients can reach this server.",
|
|
7752
8802
|
"invalidConf": "Conf must include [Interface] and PrivateKey.",
|
|
7753
8803
|
"clientImported": "Profile «{{name}}» imported.",
|
|
@@ -7783,6 +8833,15 @@
|
|
|
7783
8833
|
"needInstall": "Install {{stack}}",
|
|
7784
8834
|
"needExecute": "YSK_EXECUTE is disabled — cannot install packages or provision Linux users.",
|
|
7785
8835
|
"needRoot": "Not running as root — system useradd and vncserver apply are blocked.",
|
|
8836
|
+
"hostnameResolves": "Hostname {{hostname}} resolves.",
|
|
8837
|
+
"hostnameUnresolvable": "This host cannot resolve its own hostname ({{hostname}}). VNC session start will fail until /etc/hosts is fixed.",
|
|
8838
|
+
"hostnameAlreadyResolves": "Hostname {{hostname}} already resolves — /etc/hosts unchanged.",
|
|
8839
|
+
"hostnameWouldAppend": "Would append to /etc/hosts: {{line}}",
|
|
8840
|
+
"hostnameAppended": "Appended to /etc/hosts: {{line}}",
|
|
8841
|
+
"hostnameAppendFailed": "Could not write /etc/hosts: {{detail}}",
|
|
8842
|
+
"hostnameAliasPresent": "Hostname {{hostname}} is already an exact /etc/hosts alias — not appended again.",
|
|
8843
|
+
"hostnameStillUnresolvable": "Wrote /etc/hosts but {{hostname}} still does not resolve. Confirm nsswitch hosts includes files.",
|
|
8844
|
+
"skipStartHostname": "Did not start the display — fix hostname resolution first.",
|
|
7786
8845
|
"novncAssetsOnly": "noVNC web assets found; websockify binary still missing.",
|
|
7787
8846
|
"viewerNeedExecute": "Starting a local VNC desktop for browser view needs root + YSK_EXECUTE",
|
|
7788
8847
|
"browserSessionReady": "Browser VNC session ready: {{name}}",
|
|
@@ -7816,10 +8875,12 @@
|
|
|
7816
8875
|
"userdelBlocked": "Cannot remove Linux user {{user}} without root + YSK_EXECUTE",
|
|
7817
8876
|
"userAlreadyGone": "Linux user {{user}} already absent",
|
|
7818
8877
|
"userdelFailed": "userdel failed for {{user}}: {{detail}}",
|
|
8878
|
+
"userdelLeftover": "Panel account removed, but Linux user {{user}} is still on the host. Remove it from Users or the host.",
|
|
7819
8879
|
"userDeleted": "Removed Linux user {{user}}",
|
|
7820
8880
|
"passwordTooShort": "VNC password must be at least 6 characters",
|
|
7821
8881
|
"passwordWrittenOnly": "Password marked in control plane only (need root + YSK_EXECUTE for vncpasswd)",
|
|
7822
8882
|
"passwordFailed": "Failed to write VNC password: {{detail}}",
|
|
8883
|
+
"passwordNeedTiger": "vncpasswd not found. Install TigerVNC (tigervnc-standalone-server) before setting a password.",
|
|
7823
8884
|
"passwordSet": "VNC password set for {{user}}",
|
|
7824
8885
|
"passwordUpdated": "Password updated for {{name}}",
|
|
7825
8886
|
"passwordMetaOnly": "Password stored as meta only until system apply",
|
|
@@ -7829,6 +8890,7 @@
|
|
|
7829
8890
|
"xstartupWritten": "Wrote {{path}}",
|
|
7830
8891
|
"sessionStartBlocked": "Cannot start VNC session without root + YSK_EXECUTE",
|
|
7831
8892
|
"sessionStartFailed": "Failed to start display :{{display}}: {{detail}}",
|
|
8893
|
+
"sessionStartHostname": "Failed to start display :{{display}}: this host cannot resolve its own hostname. Add the hostname to /etc/hosts (or fix DNS) then start the session again.",
|
|
7832
8894
|
"sessionStarted": "Started VNC for {{user}} on :{{display}} (port {{port}})",
|
|
7833
8895
|
"sessionStartUnverified": "Start command returned OK but RFB port not yet listening",
|
|
7834
8896
|
"sessionAlreadyRunning": "VNC already running for {{user}} on :{{display}} (port {{port}})",
|
|
@@ -7871,7 +8933,9 @@
|
|
|
7871
8933
|
"clientDeleted": "Client profile deleted",
|
|
7872
8934
|
"sessionStartCwd": "VNC start failed: working directory not accessible to the session user (display :{{display}}). Fixed by starting from HOME.",
|
|
7873
8935
|
"desktopRestarted": "Desktop profile applied and session restarted ({{desktop}}). Reconnect VNC/noVNC.",
|
|
7874
|
-
"desktopNeedsStart": "Desktop profile {{desktop}} written to xstartup. Start the session to apply."
|
|
8936
|
+
"desktopNeedsStart": "Desktop profile {{desktop}} written to xstartup. Start the session to apply.",
|
|
8937
|
+
"linuxUserRolledBack": "Removed leftover Linux user {{user}} after VNC password failed.",
|
|
8938
|
+
"linuxUserOrphan": "Could not remove leftover Linux user {{user}} after VNC password failed."
|
|
7875
8939
|
},
|
|
7876
8940
|
"apache": {
|
|
7877
8941
|
"needServerName": "Server name required",
|
|
@@ -7921,7 +8985,72 @@
|
|
|
7921
8985
|
"startedDetached": "BT tracker detached worker started (pid {{pid}}, port {{port}})",
|
|
7922
8986
|
"runningDetached": "Tracker running as detached worker (pid {{pid}})",
|
|
7923
8987
|
"jobQueued": "BT torrent creation queued (large share)",
|
|
7924
|
-
"jobRunning": "BT torrent creation running"
|
|
8988
|
+
"jobRunning": "BT torrent creation running",
|
|
8989
|
+
"libraryAdded": "Added {{name}} to the WebTorrent library",
|
|
8990
|
+
"libraryInspectFailed": "Could not read that .torrent or magnet",
|
|
8991
|
+
"libraryDup": "That torrent is already in the library",
|
|
8992
|
+
"libraryDestBad": "Save folder is not a valid Files path",
|
|
8993
|
+
"libraryTorrentTooBig": ".torrent file is larger than 8 MiB",
|
|
8994
|
+
"libraryNotFound": "Library item not found",
|
|
8995
|
+
"libraryPaused": "Paused",
|
|
8996
|
+
"libraryResumed": "Resumed",
|
|
8997
|
+
"libraryRemoved": "Removed from library",
|
|
8998
|
+
"libraryFilesRemoved": "Deleted downloaded files",
|
|
8999
|
+
"libraryRestoreDone": "Library restore: started {{started}}/{{attempted}} (failed {{failed}})",
|
|
9000
|
+
"applyTrackersDone": "Applied extra trackers to {{n}} live announce slots",
|
|
9001
|
+
"libraryNeedServe": "Saved. Open the panel (ysk-server serve) so WebTorrent can download or seed.",
|
|
9002
|
+
"libraryDestIsFile": "Cannot create a folder named {{name}} — a file with that name already exists.",
|
|
9003
|
+
"librarySeedMissing": "No matching files in that folder to seed.",
|
|
9004
|
+
"libraryWaitingPeers": "Waiting for peers. If the files are already on this host, add again and choose seed-existing."
|
|
9005
|
+
},
|
|
9006
|
+
"migrate": {
|
|
9007
|
+
"orphanConfirm": "Type the exact leftover home path to confirm delete.",
|
|
9008
|
+
"orphanStillInStore": "That home still belongs to a project in the store.",
|
|
9009
|
+
"orphanMissing": "Path not on disk: {{path}}",
|
|
9010
|
+
"orphanNeedExecute": "Would remove leftover {{path}}. Needs YSK_EXECUTE=1.",
|
|
9011
|
+
"orphanRmFailed": "Could not remove leftover home: {{detail}}",
|
|
9012
|
+
"orphanRemoved": "Removed leftover project home {{path}}."
|
|
9013
|
+
},
|
|
9014
|
+
"publicFiles": {
|
|
9015
|
+
"liveConf": "Live Nginx conf: {{path}}",
|
|
9016
|
+
"publicRoot": "Public root: {{path}}",
|
|
9017
|
+
"confNameStale": "Conf file {{file}} does not match current server_name {{serverName}}. Re-apply public files to rewrite the name."
|
|
9018
|
+
},
|
|
9019
|
+
"leftover": {
|
|
9020
|
+
"staleCliTitle": "Stale leftover CLI",
|
|
9021
|
+
"staleCli": "Leftover CLI still present: {{path}} (running product {{version}}). PATH may prefer it. Remove with: rm -f {{path}}",
|
|
9022
|
+
"apacheDefaultTitle": "Apache leftover default site",
|
|
9023
|
+
"apacheDefault": "Apache 000-default is still enabled. That is the stock site file — it does not mean Apache is listening on public :80 (YSK Apache is expected on 127.0.0.1:8080). Overlay does not disable it. Apply Apache from the panel or hosting apache apply --execute.",
|
|
9024
|
+
"nginxCatchAllTitle": "Nginx catch-all missing",
|
|
9025
|
+
"nginxCatchAll": "ysk-000-default.conf is not in /etc/nginx/conf.d. Unknown SNI can fall through. Run projects nginx-sync --execute.",
|
|
9026
|
+
"vsftpdTitle": "vsftpd unit failed",
|
|
9027
|
+
"vsftpd": "vsftpd is failed. Overlay does not rewrite listen/listen_ipv6. Apply FTP from the panel.",
|
|
9028
|
+
"dovecotTitle": "Dovecot TLS points at missing cert",
|
|
9029
|
+
"dovecot": "Dovecot ssl_cert points at missing {{path}}. Overlay does not rewrite ssl=no. Apply mail TLS after issuing the cert, or apply email stack.",
|
|
9030
|
+
"overlayDoesNotHeal": "Product overlay does not rewrite nginx, Apache, vsftpd, or Dovecot. Use the listed apply commands (root + YSK_EXECUTE=1).",
|
|
9031
|
+
"executeStaleCli": "Pass --execute (root + YSK_EXECUTE=1) to remove stale CLI bins.",
|
|
9032
|
+
"executeMissingTls": "Pass --execute (root + YSK_EXECUTE=1) to disable missing-cert TLS so vsftpd/Dovecot can start.",
|
|
9033
|
+
"executeGeneric": "Pass --execute (root + YSK_EXECUTE=1) to apply leftover cleanup for the findings above.",
|
|
9034
|
+
"staleCliRemoved": "Removed leftover CLI {{path}}.",
|
|
9035
|
+
"staleCliRemoveFailed": "Could not remove leftover CLI {{path}}: {{detail}}",
|
|
9036
|
+
"vsftpdSslOff": "Set vsftpd ssl_enable=NO because the FTPS certificate file is missing, then restarted vsftpd.",
|
|
9037
|
+
"dovecotSslOff": "Set Dovecot ssl=no because {{path}} is missing, then restarted Dovecot.",
|
|
9038
|
+
"readinessTitle": "Host leftovers after overlay",
|
|
9039
|
+
"readinessClean": "No leftover Apache default, missing nginx catch-all, failed vsftpd, or stale CLI detected.",
|
|
9040
|
+
"nginxRemoved": "Removed leftover nginx conf {{path}}.",
|
|
9041
|
+
"nginxNotLeftover": "Not a leftover public-files conf — refuse delete.",
|
|
9042
|
+
"nginxUnusedKeep": "000-default is unused, not leftover — not deleted.",
|
|
9043
|
+
"nginxSystemCopy": "System copy still present: {{path}}. Needs YSK_EXECUTE + root to remove.",
|
|
9044
|
+
"nginxReloadFailed": "nginx -t or reload failed after removing {{path}}."
|
|
9045
|
+
},
|
|
9046
|
+
"defense": {
|
|
9047
|
+
"panelReqLabel": "Panel requests / min",
|
|
9048
|
+
"panelReqExcluded": "Authenticated panel traffic — shown here, not counted in threat score",
|
|
9049
|
+
"tcpOk": "TCP {{target}} reachable",
|
|
9050
|
+
"tcpFail": "TCP {{target}} failed",
|
|
9051
|
+
"dnsDegraded": "DNS path degraded",
|
|
9052
|
+
"reqRateHigh": "Public request rate {{reqs}}/min ≥ {{threshold}}",
|
|
9053
|
+
"ddosHeuristic": "High public request rate plus edge probe failure"
|
|
7925
9054
|
}
|
|
7926
9055
|
},
|
|
7927
9056
|
"ops": {
|
|
@@ -8072,13 +9201,16 @@
|
|
|
8072
9201
|
"template": "Template (optional)",
|
|
8073
9202
|
"templateNone": "— none —",
|
|
8074
9203
|
"searchPlaceholder": "Search name, domain, or ID…",
|
|
9204
|
+
"listDesc": "Manage sites on this host.",
|
|
8075
9205
|
"filterAll": "All runtimes",
|
|
8076
9206
|
"statTotal": "Total",
|
|
8077
9207
|
"statRunning": "Running",
|
|
8078
9208
|
"statDegraded": "Degraded",
|
|
8079
9209
|
"statUnhealthy": "Unhealthy",
|
|
8080
9210
|
"statStopped": "Stopped / ready",
|
|
8081
|
-
"
|
|
9211
|
+
"statStoppedOnly": "Stopped",
|
|
9212
|
+
"statReadyOnly": "Ready",
|
|
9213
|
+
"statPendingOs": "OS user pending",
|
|
8082
9214
|
"status": {
|
|
8083
9215
|
"failed": "Failed",
|
|
8084
9216
|
"failedHint": "Deploy or health check failed — check logs",
|
|
@@ -8108,6 +9240,7 @@
|
|
|
8108
9240
|
},
|
|
8109
9241
|
"next": {
|
|
8110
9242
|
"pendingOsTitle": "System user not provisioned",
|
|
9243
|
+
"provisionOsAction": "Create system user",
|
|
8111
9244
|
"pendingOsBody": "This project has no isolated system user yet.",
|
|
8112
9245
|
"pendingOsActions": "You can still deploy; full isolation needs admin privileges on the host.",
|
|
8113
9246
|
"deployTitle": "Next: Deploy",
|
|
@@ -8123,7 +9256,12 @@
|
|
|
8123
9256
|
"httpStatus": "HTTP",
|
|
8124
9257
|
"latency": "Latency",
|
|
8125
9258
|
"error": "Error",
|
|
8126
|
-
"at": "Checked at"
|
|
9259
|
+
"at": "Checked at",
|
|
9260
|
+
"deployMode": "Deploy mode",
|
|
9261
|
+
"edgeKind": "Edge",
|
|
9262
|
+
"goLiveOk": "Go-live",
|
|
9263
|
+
"goLiveAt": "Go-live at",
|
|
9264
|
+
"degraded": "Degraded"
|
|
8127
9265
|
},
|
|
8128
9266
|
"railPhp": "PHP / site",
|
|
8129
9267
|
"railStatic": "Static site",
|
|
@@ -8137,7 +9275,16 @@
|
|
|
8137
9275
|
"neverDeployed": "Never deployed",
|
|
8138
9276
|
"created": "Created {{name}}",
|
|
8139
9277
|
"backToList": "Back to projects",
|
|
8140
|
-
"openUrl": "Open
|
|
9278
|
+
"openUrl": "Open site",
|
|
9279
|
+
"openUrlNeedDomain": "Set a domain first — do not open 127.0.0.1 in your browser",
|
|
9280
|
+
"needOsUser": "Create the system user on the Isolation tab first",
|
|
9281
|
+
"goIsolation": "Open Isolation tab",
|
|
9282
|
+
"homeMissing": "Home directory does not exist",
|
|
9283
|
+
"homeMissingHint": "Same live probe as migrate inventory — create the system user on Isolation",
|
|
9284
|
+
"stopTitle": "Stop this project (systemd unit and public site)",
|
|
9285
|
+
"deployTitle": "Deploy this project",
|
|
9286
|
+
"httpStatsHint": "From this project’s access log (last sample)",
|
|
9287
|
+
"httpStatsNone": "No project access log yet",
|
|
8141
9288
|
"notFound": "Project not found",
|
|
8142
9289
|
"home": "Home directory",
|
|
8143
9290
|
"env": "Environment",
|
|
@@ -8187,8 +9334,8 @@
|
|
|
8187
9334
|
"healthUnknown": "Not checked",
|
|
8188
9335
|
"sectionRuntimeDeploy": "Runtime deploy",
|
|
8189
9336
|
"sectionRuntimeDeployDesc": "Start the process for this project runtime (Node / PHP)",
|
|
8190
|
-
"sectionGit": "Git
|
|
8191
|
-
"sectionGitDesc": "
|
|
9337
|
+
"sectionGit": "Git",
|
|
9338
|
+
"sectionGitDesc": "Clone, sync, and inbound push",
|
|
8192
9339
|
"sectionEnv": "Environment variables",
|
|
8193
9340
|
"sectionEnvDesc": "Write KEY=value lines to the project .env",
|
|
8194
9341
|
"gitUrl": "Git URL",
|
|
@@ -8234,7 +9381,7 @@
|
|
|
8234
9381
|
"nginxValuePublished": "Published",
|
|
8235
9382
|
"nginxValueNone": "Not published",
|
|
8236
9383
|
"osValueReady": "Ready",
|
|
8237
|
-
"osValuePending": "
|
|
9384
|
+
"osValuePending": "OS user pending",
|
|
8238
9385
|
"openFiles": "Files",
|
|
8239
9386
|
"enableCdn": "Enable CDN",
|
|
8240
9387
|
"openLogs": "Logs",
|
|
@@ -8243,10 +9390,11 @@
|
|
|
8243
9390
|
"osUserIncomplete": "System user provisioning incomplete",
|
|
8244
9391
|
"saveLogDirsFailed": "Failed to save log directories",
|
|
8245
9392
|
"createName": "Project name",
|
|
9393
|
+
"noPathSepHint": "The name cannot contain / or \\.",
|
|
8246
9394
|
"createRuntime": "Runtime",
|
|
8247
9395
|
"createRuntimeHint": "You can change deploy options later in detail",
|
|
8248
9396
|
"createVersion": "Version",
|
|
8249
|
-
"createVersionHint": "
|
|
9397
|
+
"createVersionHint": "Writes the project runtime version setting; deploy / FPM uses it",
|
|
8250
9398
|
"createVersionAria": "Runtime version",
|
|
8251
9399
|
"createPrimaryDomain": "Primary domain",
|
|
8252
9400
|
"createPrimaryDomainHint": "Optional for now",
|
|
@@ -8390,8 +9538,16 @@
|
|
|
8390
9538
|
"netHttpsDesc": "Publish Nginx after save. Full-site 301 overrides proxy/PHP/static content",
|
|
8391
9539
|
"netForceHttps": "Force HTTPS",
|
|
8392
9540
|
"netForceHttpsDesc": "HTTP → HTTPS (301); needs SSL cert and SSL publish",
|
|
9541
|
+
"netForceHttpsOn": "HTTP will redirect to HTTPS after you publish the edge.",
|
|
9542
|
+
"netForceHttpsOff": "No forced redirect is stored.",
|
|
9543
|
+
"netBoundCert": "Bound certificate",
|
|
9544
|
+
"netBoundCertExpiry": "expires {{at}}",
|
|
9545
|
+
"netNoBoundCert": "No certificate on disk for this hostname",
|
|
9546
|
+
"netForceHttpsNeedCert": "Issue a certificate on /ssl for this domain before forcing HTTPS.",
|
|
9547
|
+
"netHttpsLiveNotForced": "An edge file exists; HTTPS may already work. This box only forces HTTP→HTTPS.",
|
|
8393
9548
|
"netHsts": "Enable HSTS",
|
|
8394
9549
|
"netHstsDesc": "Browsers stick to HTTPS (recommended after force HTTPS)",
|
|
9550
|
+
"netHstsNeedHttps": "Turn on force HTTPS first",
|
|
8395
9551
|
"netRedirectUrl": "Full-site redirect URL",
|
|
8396
9552
|
"netRedirectHint": "Optional. Full-site 301 to this URL (move / apex→www)",
|
|
8397
9553
|
"netBasicAuthTitle": "HTTP basic auth (browser login)",
|
|
@@ -8512,7 +9668,7 @@
|
|
|
8512
9668
|
"deployPhpIniSaved": "Project php.ini overrides saved; deploy or apply FPM again",
|
|
8513
9669
|
"deployHistory": "Deploy history ({{count}})",
|
|
8514
9670
|
"deployHistoryDesc": "From audit; newest first",
|
|
8515
|
-
"deployGitUrlHint": "HTTPS or
|
|
9671
|
+
"deployGitUrlHint": "HTTPS or git@host:org/repo.git",
|
|
8516
9672
|
"deployEnvHint": "One KEY=value per line; # comments",
|
|
8517
9673
|
"resume": "Resume project",
|
|
8518
9674
|
"suspend": "Suspend project",
|
|
@@ -8598,16 +9754,111 @@
|
|
|
8598
9754
|
"netPublishMaint": "Maintenance",
|
|
8599
9755
|
"sslNeedDomain": "Set a domain before publishing Nginx / SSL.",
|
|
8600
9756
|
"createTemplateMissing": "{{v0}} ;「— —」。",
|
|
8601
|
-
"deleteDialogDesc": "
|
|
9757
|
+
"deleteDialogDesc": "This permanently deletes “{{name}}”. It cannot be undone.",
|
|
8602
9758
|
"deleteWillStop": "systemd / PM2 /",
|
|
8603
9759
|
"deleteWillWeb": "Nginx conf、PHP-FPM pool、Apache vhost()",
|
|
8604
9760
|
"deleteWillOs": "Linux home ()",
|
|
8605
9761
|
"deleteKeepOs": "home Linux ()",
|
|
8606
9762
|
"deleteWillDb": "…",
|
|
8607
9763
|
"deleteRemoveFilesDesc": "Cancel,",
|
|
8608
|
-
"deleteTypeNameHint": "「{{
|
|
9764
|
+
"deleteTypeNameHint": "「{{name}}」",
|
|
8609
9765
|
"deleteDnsWarn": "DNS zone / domain 。",
|
|
8610
|
-
"manageInNginx": "Manage in Nginx"
|
|
9766
|
+
"manageInNginx": "Manage in Nginx",
|
|
9767
|
+
"advFtpHomeApp": "Site app directory",
|
|
9768
|
+
"advFtpHomeRoot": "Project home (full)",
|
|
9769
|
+
"advFtpManage": "Open FTP page",
|
|
9770
|
+
"resShell": "Login shell",
|
|
9771
|
+
"resSaveHint": "Save and apply changes the live OS. Control-plane only stores the form. Re-apply uses the last saved values.",
|
|
9772
|
+
"resBashConfirmTitle": "Allow interactive bash?",
|
|
9773
|
+
"resBashConfirmDesc": "This grants an interactive login shell to the project user. Confirm only if you need SSH or PTY as that user.",
|
|
9774
|
+
"createGitHint": "Optional. Stored on the project; clone from the Deploy tab (does not clone on create).",
|
|
9775
|
+
"gitTokenLaterHint": "HTTPS token and clone depth are set on the project Deploy tab after create.",
|
|
9776
|
+
"gitBranch": "Branch",
|
|
9777
|
+
"gitBranchHint": "Pick a remote branch or tag.",
|
|
9778
|
+
"gitBranchAfterUrl": "Enter a Git URL first. Empty uses the remote default branch.",
|
|
9779
|
+
"gitLastRef": "Last sync: {{branch}} @ {{commit}}",
|
|
9780
|
+
"gitConfirmTitle": "Clone into this project?",
|
|
9781
|
+
"gitConfirmBody": "If app/ is still the Hello World placeholder it will be cleared, then cloned. Custom files that are not a YSK scaffold are refused.",
|
|
9782
|
+
"gitConfirmRemoteBody": "This points origin at the new URL and pulls. Unrelated histories fail; custom files are not wiped.",
|
|
9783
|
+
"runtimeActual": "Actual binary {{path}}",
|
|
9784
|
+
"runtimeFallback": "Chosen {{version}} is not on this host. Process uses {{path}}.",
|
|
9785
|
+
"gitSync": "Sync",
|
|
9786
|
+
"gitFetch": "Fetch",
|
|
9787
|
+
"gitCheckout": "Checkout",
|
|
9788
|
+
"gitReset": "Reset to remote",
|
|
9789
|
+
"gitResetNeedConfirm": "Needs confirmation — discards local commits",
|
|
9790
|
+
"gitDeepen": "Fetch full history",
|
|
9791
|
+
"gitLogTitle": "Recent commits",
|
|
9792
|
+
"gitDirtyTitle": "Local changes block pull",
|
|
9793
|
+
"gitDirtyBody": "{{count}} file(s) differ from Git (Files edits or the app). Discard them or abort.",
|
|
9794
|
+
"gitSyncBlockedDirty": "Sync is disabled until local changes are discarded (Reset) or the files match Git.",
|
|
9795
|
+
"gitViewDiff": "View diff",
|
|
9796
|
+
"gitDiscard": "Discard local files",
|
|
9797
|
+
"gitOpenFiles": "Open in Files",
|
|
9798
|
+
"gitNotCloned": "Not cloned",
|
|
9799
|
+
"gitClean": "Clean",
|
|
9800
|
+
"gitDirty": "Dirty",
|
|
9801
|
+
"gitBehind": "Behind {{count}}",
|
|
9802
|
+
"gitAhead": "Ahead {{count}}",
|
|
9803
|
+
"gitDetached": "Pinned",
|
|
9804
|
+
"gitShallow": "Shallow",
|
|
9805
|
+
"gitMissing": "git missing",
|
|
9806
|
+
"gitResetConfirmTitle": "Reset hard to remote?",
|
|
9807
|
+
"gitResetConfirmBody": "This discards local Git history and untracked files except .env, then restores .env from the control plane.",
|
|
9808
|
+
"gitHeads": "Remote branches",
|
|
9809
|
+
"gitToken": "HTTPS token",
|
|
9810
|
+
"gitTokenHint": "Encrypted at rest. Never stored in the remote URL.",
|
|
9811
|
+
"gitTokenPlaceholder": "ghp_… or glpat-…",
|
|
9812
|
+
"gitTokenSet": "Token set",
|
|
9813
|
+
"gitSaveToken": "Save token",
|
|
9814
|
+
"gitClearToken": "Clear token",
|
|
9815
|
+
"gitDeployKey": "Deploy public key",
|
|
9816
|
+
"gitDeployKeyHint": "Add this as a read-only deploy key on the Git host.",
|
|
9817
|
+
"gitDeployKeyOn": "Deploy key",
|
|
9818
|
+
"gitMakeKey": "Create deploy key",
|
|
9819
|
+
"gitCopyPub": "Copy public key",
|
|
9820
|
+
"gitClearKey": "Clear deploy key",
|
|
9821
|
+
"gitKeyCopied": "Public key copied",
|
|
9822
|
+
"gitPinHost": "Pin host key",
|
|
9823
|
+
"gitPinHostBody": "{{host}} is not pinned. Confirm the fingerprints, then pin before SSH clone.",
|
|
9824
|
+
"gitHostUnpinned": "Host key not pinned",
|
|
9825
|
+
"gitHookTitle": "Push hook",
|
|
9826
|
+
"gitHookHint": "Paste the URL into GitHub / Gitea / GitLab (push only). Not Slack.",
|
|
9827
|
+
"gitHookOn": "On",
|
|
9828
|
+
"gitHookOff": "Off",
|
|
9829
|
+
"gitHookEnable": "Enable",
|
|
9830
|
+
"gitHookRotate": "Rotate secret",
|
|
9831
|
+
"gitHookDisable": "Disable",
|
|
9832
|
+
"gitHookSecretOnce": "Copy this secret now — it will not be shown again.",
|
|
9833
|
+
"gitHookCopyUrl": "Copy",
|
|
9834
|
+
"gitHookCopySecret": "Copy secret",
|
|
9835
|
+
"gitHookCopied": "Copied",
|
|
9836
|
+
"gitHookSetup": "Payload URL = the URL above. Content type application/json. Events: push only. Secret = the one-time value.",
|
|
9837
|
+
"gitHookGithub": "Settings → Webhooks → Add webhook. Content type application/json. Events: Just the push event. GitHub.com needs HTTPS.",
|
|
9838
|
+
"gitHookGitea": "Settings → Webhooks → Add Webhook → Gitea. Method POST. Event: Push.",
|
|
9839
|
+
"gitHookGitlab": "Settings → Webhooks. Trigger: Push events. Secret token = hook secret (X-Gitlab-Token).",
|
|
9840
|
+
"gitHookHonesty": "Host unit needs YSK_EXECUTE=1 or the hook only returns a plan.",
|
|
9841
|
+
"gitHookSkipOther": "Other branches are ignored.",
|
|
9842
|
+
"gitAuthHttps": "HTTPS token",
|
|
9843
|
+
"gitAuthSsh": "SSH deploy key",
|
|
9844
|
+
"gitLoadRefs": "Load branches",
|
|
9845
|
+
"gitRefDefault": "Remote default",
|
|
9846
|
+
"gitRefBranches": "Branches",
|
|
9847
|
+
"gitRefTags": "Tags",
|
|
9848
|
+
"gitRefOther": "Other ref…",
|
|
9849
|
+
"gitRefCustom": "Commit or ref",
|
|
9850
|
+
"gitRefsNeedUrl": "Enter a URL first.",
|
|
9851
|
+
"gitRefsNeedAuth": "Save a token or deploy key, then load branches.",
|
|
9852
|
+
"gitRefsHint": "Loaded from the remote. Choose one — do not type.",
|
|
9853
|
+
"gitHookSetupToggle": "How to paste this",
|
|
9854
|
+
"gitHookOneLiner": "HMAC or X-YSK-Git-Hook. Only this project’s ref.",
|
|
9855
|
+
"gitHookExecuteHint": "Needs YSK_EXECUTE=1 to clone or deploy.",
|
|
9856
|
+
"gitShowKey": "Show key",
|
|
9857
|
+
"gitHideKey": "Hide",
|
|
9858
|
+
"gitBehindShort": "↓{{count}}",
|
|
9859
|
+
"gitAheadShort": "↑{{count}}",
|
|
9860
|
+
"gitDirtyShort": "Dirty · {{count}}",
|
|
9861
|
+
"gitFilesLink": "Files"
|
|
8611
9862
|
},
|
|
8612
9863
|
"protection": {
|
|
8613
9864
|
"levels": {
|
|
@@ -8641,7 +9892,9 @@
|
|
|
8641
9892
|
"note": {
|
|
8642
9893
|
"notApplied": "Not applied on host (needs root + YSK_EXECUTE=1) — saved to panel settings",
|
|
8643
9894
|
"nginxWritten": "Wrote Nginx rate-limit panel file",
|
|
8644
|
-
"f2bWritten": "Wrote fail2ban panel settings"
|
|
9895
|
+
"f2bWritten": "Wrote fail2ban panel settings",
|
|
9896
|
+
"hintDropped": "Internal protection hint omitted",
|
|
9897
|
+
"nginxLimits": "Will write Nginx rate-limit snippet"
|
|
8645
9898
|
},
|
|
8646
9899
|
"rel": {
|
|
8647
9900
|
"justNow": "Just now",
|
|
@@ -8664,6 +9917,10 @@
|
|
|
8664
9917
|
"autoBanAutomation": "Auto-ban: {{onOff}} ({{mode}})",
|
|
8665
9918
|
"automationSaved": "Automation settings saved",
|
|
8666
9919
|
"statFirewall": "Firewall",
|
|
9920
|
+
"statSuspects": "Suspect IPs",
|
|
9921
|
+
"statSuspectsSplit": "{{actionable}} actionable / {{total}} listed",
|
|
9922
|
+
"suspectActionableCount": "Actionable IPs {{count}}",
|
|
9923
|
+
"scoreBasisHint": "Listed suspects vs IPs you can still ban (excludes already banned / whitelist).",
|
|
8667
9924
|
"statAutoBan": "Auto-ban",
|
|
8668
9925
|
"statApply": "System apply",
|
|
8669
9926
|
"statActiveBans": "Active bans",
|
|
@@ -8683,6 +9940,12 @@
|
|
|
8683
9940
|
"reapply": "Re-apply",
|
|
8684
9941
|
"nginxLimits": "Nginx rate limits",
|
|
8685
9942
|
"notWritten": "Not written",
|
|
9943
|
+
"modeValue": {
|
|
9944
|
+
"normal": "Normal",
|
|
9945
|
+
"degraded": "Degraded",
|
|
9946
|
+
"ddos-protection": "DDoS protection",
|
|
9947
|
+
"offline": "Offline"
|
|
9948
|
+
},
|
|
8686
9949
|
"mode": "Mode",
|
|
8687
9950
|
"controlPlane": "Control plane",
|
|
8688
9951
|
"canApply": "Can apply",
|
|
@@ -8790,6 +10053,10 @@
|
|
|
8790
10053
|
"dbReady": "DB ready",
|
|
8791
10054
|
"stale": "Stale",
|
|
8792
10055
|
"older7d": ">7 days",
|
|
10056
|
+
"freshnessNa": "n/a",
|
|
10057
|
+
"freshnessMissing": "No database",
|
|
10058
|
+
"freshnessStale": "Stale",
|
|
10059
|
+
"freshnessFresh": "Current",
|
|
8793
10060
|
"lastSuccess": "Last success",
|
|
8794
10061
|
"downloaded": "Downloaded",
|
|
8795
10062
|
"missing": "Missing",
|
|
@@ -8844,10 +10111,21 @@
|
|
|
8844
10111
|
"sectionAutoBan": "② Auto-ban",
|
|
8845
10112
|
"unban": "Unban",
|
|
8846
10113
|
"ban": "Ban",
|
|
10114
|
+
"banConfirmTitle": "Ban {{ip}}?",
|
|
10115
|
+
"banConfirmMethod": "Method: {{method}}",
|
|
10116
|
+
"banConfirmUntilUnban": "Stays banned until you unban it (or fail2ban expiry).",
|
|
10117
|
+
"banConfirmDesc": "This IP will be blocked on the host. Confirm it is not a current panel or session address.",
|
|
10118
|
+
"wlRemovedUndo": "Removed {{ip}} from the allow list. Undo within 5 seconds.",
|
|
10119
|
+
"undo": "Undo",
|
|
10120
|
+
"banSelectedConfirmTitle": "Ban {{count}} selected IPs?",
|
|
10121
|
+
"banSelectedConfirmDesc": "These addresses will be blocked on the host: {{ips}}",
|
|
8847
10122
|
"save": "Save",
|
|
8848
10123
|
"yes": "Yes",
|
|
8849
10124
|
"no": "No",
|
|
8850
10125
|
"oneClickSuggested": "Apply suggested preset",
|
|
10126
|
+
"stackApply": "Apply protection stack (UFW, fail2ban, preset)",
|
|
10127
|
+
"stackApplyDone": "Protection stack apply requested",
|
|
10128
|
+
"stackApplyHint": "This enables UFW and applies fail2ban plus the suggested preset. Confirm you will not lock yourself out of a remote panel.",
|
|
8851
10129
|
"viewPresets": "View presets",
|
|
8852
10130
|
"suspectIpsCount": "Suspect IPs {{count}}",
|
|
8853
10131
|
"goBans": "Go to bans",
|
|
@@ -8903,7 +10181,12 @@
|
|
|
8903
10181
|
"f2bTool": "fail2ban tool",
|
|
8904
10182
|
"noSecondJail": "(no second jail editor here).",
|
|
8905
10183
|
"autoBanWhitelistTitle": "Auto-ban whitelist",
|
|
8906
|
-
"autoBanWhitelistDesc": "Protection auto-ban exemptions (syncs fail2ban ignoreip",
|
|
10184
|
+
"autoBanWhitelistDesc": "Protection auto-ban exemptions (syncs fail2ban ignoreip).",
|
|
10185
|
+
"ufwOff": "UFW (off)",
|
|
10186
|
+
"ufwOffHint": "UFW is not active — fail2ban is the usable target.",
|
|
10187
|
+
"whitelistSyncHint": "{{n}} panel entries · fail2ban ignoreip sync: {{sync}}",
|
|
10188
|
+
"whitelistSyncOn": "on",
|
|
10189
|
+
"whitelistSyncOff": "off (lists may differ)",
|
|
8907
10190
|
"ignoreipWhitelist": "ignoreip whitelist",
|
|
8908
10191
|
"notSetSuggestAdmin": "Not set (add your admin IP)",
|
|
8909
10192
|
"moreItems": "… {{n}} more · see fail2ban whitelist",
|
|
@@ -8917,6 +10200,11 @@
|
|
|
8917
10200
|
"fullLogsAt": "Full nginx/auth logs:",
|
|
8918
10201
|
"logCenter": "Log center",
|
|
8919
10202
|
"colScore": "Score",
|
|
10203
|
+
"colHits": "Hits",
|
|
10204
|
+
"col429": "429",
|
|
10205
|
+
"topIpsTitle": "Top IPs",
|
|
10206
|
+
"hitsCount": "{{n}} hits",
|
|
10207
|
+
"sampleWindowHint": "Counts are from the current access + auth sample window, not the full log file.",
|
|
8920
10208
|
"banShort": "Ban",
|
|
8921
10209
|
"vhostLimits": "Vhost rate limits",
|
|
8922
10210
|
"eventStream": "Event stream",
|
|
@@ -8955,7 +10243,34 @@
|
|
|
8955
10243
|
"plusRegion": "+ region {{v}}",
|
|
8956
10244
|
"plusCity": "+ city {{v}}",
|
|
8957
10245
|
"lastTickPrefix": "· last {{t}}",
|
|
8958
|
-
"nextTickPrefix": "· next {{t}}"
|
|
10246
|
+
"nextTickPrefix": "· next {{t}}",
|
|
10247
|
+
"cannotBanSelf": "Cannot ban {{ip}} — this is the host, your login, or ignoreip",
|
|
10248
|
+
"selfIp": "This host",
|
|
10249
|
+
"selfHostIp": "Host IP",
|
|
10250
|
+
"selfLoginIp": "Your login IP",
|
|
10251
|
+
"showZeroScore": "Show 0-score",
|
|
10252
|
+
"hideZeroScore": "Hide 0-score",
|
|
10253
|
+
"geoDraftOnly": "Policy is off — Save stores a draft only. Nginx will not enforce until you enable it.",
|
|
10254
|
+
"geoNeedDb": "GeoIP databases are missing — update the MMDB files first",
|
|
10255
|
+
"uaNeedZones": "Set a Cloudflare zone first",
|
|
10256
|
+
"selectAllCountriesWarn": "Select all countries in block-list mode? That can lock out this host and your login country.",
|
|
10257
|
+
"badgeRecommendPreset": "A stronger preset is recommended for the current threat",
|
|
10258
|
+
"badgeAutomationOn": "Automation is on",
|
|
10259
|
+
"badgeBanCount": "Active bans",
|
|
10260
|
+
"badgeGeoOn": "Geo access policy is on",
|
|
10261
|
+
"badgeGeoNotReady": "GeoIP database is not ready",
|
|
10262
|
+
"badgeIntelSignals": "Signals that currently add score",
|
|
10263
|
+
"signalActive": "Active",
|
|
10264
|
+
"signalInactive": "Inactive",
|
|
10265
|
+
"signalJails": "{{n}} jail(s)",
|
|
10266
|
+
"dbReadyHint": "MMDB files are present",
|
|
10267
|
+
"dbNotReadyHint": "Download a GeoIP database first",
|
|
10268
|
+
"staleHint": "Whether the last successful update is older than 7 days",
|
|
10269
|
+
"draftBadge": "Draft",
|
|
10270
|
+
"banIsSelf": "This IP matches the current panel source or this host.",
|
|
10271
|
+
"banNotSelf": "This IP is not the current panel source.",
|
|
10272
|
+
"geoSourceLocal": "Local GeoIP library (sapics + DB-IP)",
|
|
10273
|
+
"nginxPreviewHint": "Nginx snippet this preset would write (preview only):"
|
|
8959
10274
|
},
|
|
8960
10275
|
"publicFiles": {
|
|
8961
10276
|
"notSet": "Not set",
|
|
@@ -8971,6 +10286,10 @@
|
|
|
8971
10286
|
"siteSettings": "Site settings",
|
|
8972
10287
|
"siteSettingsDesc": "Writes managed conf; may reload Nginx on apply (reachable only after apply)",
|
|
8973
10288
|
"serverNameHint": "Nginx server_name, e.g. files.example.com",
|
|
10289
|
+
"notes": {
|
|
10290
|
+
"noManagedConf": "No managed Nginx conf yet — click Apply",
|
|
10291
|
+
"notSynced": "Managed conf exists but is not under /etc/nginx/conf.d — apply again as root with YSK_EXECUTE"
|
|
10292
|
+
},
|
|
8974
10293
|
"quotaMiB": "Quota (MiB)",
|
|
8975
10294
|
"quotaHint": "Optional; caps public directory size",
|
|
8976
10295
|
"unlimited": "Unlimited",
|
|
@@ -8978,6 +10297,7 @@
|
|
|
8978
10297
|
"appliedOk": "Public files site applied",
|
|
8979
10298
|
"applyReload": "Apply and reload Nginx",
|
|
8980
10299
|
"statusLive": "Live on nginx",
|
|
10300
|
+
"statusDraft": "Draft / not applied",
|
|
8981
10301
|
"statusManagedOnly": "Managed only",
|
|
8982
10302
|
"statusNotApplied": "Not applied",
|
|
8983
10303
|
"nginxLive": "in conf.d",
|
|
@@ -8985,9 +10305,21 @@
|
|
|
8985
10305
|
"openSite": "Open site",
|
|
8986
10306
|
"notLiveHint": "Domain 404 usually means conf is only under dataDir, not copied to /etc/nginx/conf.d, or nginx was not reloaded. Re-apply with root + YSK_EXECUTE. Use http:// until SSL is issued for this hostname.",
|
|
8987
10307
|
"diskRoot": "Disk root",
|
|
10308
|
+
"executeFlag": "Execute",
|
|
10309
|
+
"asRoot": "Root",
|
|
8988
10310
|
"filesInRoot": "Entries",
|
|
8989
10311
|
"managedConf": "Managed conf",
|
|
8990
|
-
"systemConf": "System conf.d"
|
|
10312
|
+
"systemConf": "System conf.d",
|
|
10313
|
+
"autoindex": "Directory listing (autoindex)",
|
|
10314
|
+
"liveSystemConf": "Live system conf: {{path}}",
|
|
10315
|
+
"publicRootNote": "Public root: {{path}}",
|
|
10316
|
+
"applyConfirmTitle": "Apply public-files site?",
|
|
10317
|
+
"applyConfirmDesc": "Write Nginx server_name {{name}} and reload Nginx.",
|
|
10318
|
+
"serverNameMismatch": "Live conf uses {{live}}; the form has {{draft}}. Apply to replace.",
|
|
10319
|
+
"liveName": "Live name",
|
|
10320
|
+
"draftName": "Draft name",
|
|
10321
|
+
"draftUnapplied": "This draft is not applied. Nginx still serves the live name.",
|
|
10322
|
+
"discardDraft": "Discard draft"
|
|
8991
10323
|
},
|
|
8992
10324
|
"rbac": {
|
|
8993
10325
|
"permissions": "Permissions",
|
|
@@ -9071,7 +10403,13 @@
|
|
|
9071
10403
|
"auditExport": "Audit export",
|
|
9072
10404
|
"securityApiKeysAdmin": "API keys admin",
|
|
9073
10405
|
"networkBrowse": "Host-mediated web browse",
|
|
9074
|
-
"networkVnc": "VNC remote desktop"
|
|
10406
|
+
"networkVnc": "VNC remote desktop",
|
|
10407
|
+
"validatorsRead": "Validators (read)",
|
|
10408
|
+
"validatorsManage": "Validators manage",
|
|
10409
|
+
"validatorsWipe": "Validators wipe data",
|
|
10410
|
+
"dockerRead": "Docker (read)",
|
|
10411
|
+
"dockerManage": "Docker manage",
|
|
10412
|
+
"dockerWipe": "Docker wipe / prune"
|
|
9075
10413
|
},
|
|
9076
10414
|
"aboutRoles": "Roles (factory defaults)",
|
|
9077
10415
|
"aboutRolesBody": "Roles set default capabilities; users can override individual ones.",
|
|
@@ -9087,7 +10425,14 @@
|
|
|
9087
10425
|
"capabilitiesHint": "Toggle what this role may do",
|
|
9088
10426
|
"enabledCount": "{{enabled}} of {{total}} enabled",
|
|
9089
10427
|
"bandAboveMax": "Above max level",
|
|
9090
|
-
"
|
|
10428
|
+
"roleUnavailable": "Not available for this role",
|
|
10429
|
+
"dirtyHint": "Customized (differs from factory)",
|
|
10430
|
+
"unsaved": "Unsaved",
|
|
10431
|
+
"unsavedHint": "Unsaved edits on this role",
|
|
10432
|
+
"nothingToSave": "Nothing to save",
|
|
10433
|
+
"saveRole": "Save {{role}} policy",
|
|
10434
|
+
"discardTitle": "Discard unsaved policy?",
|
|
10435
|
+
"discardDesc": "Switching roles drops unsaved capability edits."
|
|
9091
10436
|
},
|
|
9092
10437
|
"readiness": {
|
|
9093
10438
|
"cat": {
|
|
@@ -9116,12 +10461,24 @@
|
|
|
9116
10461
|
"checkFailed": "Readiness check failed",
|
|
9117
10462
|
"gatePass": "Gate passed · {{pct}}%",
|
|
9118
10463
|
"gateFail": "Not ready · {{pct}}%",
|
|
10464
|
+
"gateBlocked": "Not passed · {{n}} missing",
|
|
9119
10465
|
"executeOn": "On",
|
|
9120
10466
|
"executeOff": "Off",
|
|
9121
10467
|
"blockers": "Blockers",
|
|
10468
|
+
"blockersHint": "Blockers are the critical subset of Missing — not extra checks.",
|
|
10469
|
+
"requireAdminTotp": "require admin 2FA policy",
|
|
10470
|
+
"listenBind": "listen address",
|
|
10471
|
+
"item": {
|
|
10472
|
+
"admin2fa": "Admin two-factor"
|
|
10473
|
+
},
|
|
10474
|
+
"dataDirPerms": "panel data-directory permissions",
|
|
10475
|
+
"mode750": "mode 750",
|
|
10476
|
+
"totalChecks": "All checks",
|
|
10477
|
+
"totalChecksHint": "Ready + degraded + missing = this total. Blockers are the critical missing subset.",
|
|
9122
10478
|
"probing": "Probing…",
|
|
9123
10479
|
"reprobe": "Re-probe",
|
|
9124
10480
|
"exportReport": "Export report",
|
|
10481
|
+
"exportStarted": "Downloading {{name}}",
|
|
9125
10482
|
"firstBlocker": "Fix first blocker",
|
|
9126
10483
|
"viewRecommended": "View recommended",
|
|
9127
10484
|
"loadingProbe": "Probing host capabilities…",
|
|
@@ -9198,7 +10555,26 @@
|
|
|
9198
10555
|
"fixNow": "Fix now",
|
|
9199
10556
|
"fixFailed": "Fix failed",
|
|
9200
10557
|
"fixDone": "dataDir permissions hardened (chmod 750)",
|
|
9201
|
-
"fixDoneWebUi": "Web UI built / installed"
|
|
10558
|
+
"fixDoneWebUi": "Web UI built / installed",
|
|
10559
|
+
"rootLabel": "Superuser",
|
|
10560
|
+
"techDetails": "Technical details",
|
|
10561
|
+
"missingOwner": "No panel owner assigned (package quota attribution)",
|
|
10562
|
+
"notOsProvisioned": "OS user pending (home not provisioned)",
|
|
10563
|
+
"isolationPendingOs": "Same as project status: OS user pending. Open Isolation to provision the system user and home.",
|
|
10564
|
+
"ondrejNone": "No ondrej Launchpad PHP sources detected",
|
|
10565
|
+
"ondrejFound": "Found legacy ondrej/php sources that conflict with packages.sury.org: {{paths}}",
|
|
10566
|
+
"ondrejTitle": "PHP apt source (ondrej residual)",
|
|
10567
|
+
"systemctlActive": "Service is running",
|
|
10568
|
+
"systemctlStatus": "Service status: {{status}}",
|
|
10569
|
+
"binInPath": "{{bin}} in PATH",
|
|
10570
|
+
"leftoverApache": "Apache leftover default site",
|
|
10571
|
+
"leftoverVsftpd": "vsftpd unit failed",
|
|
10572
|
+
"leftoverCli": "Stale leftover CLI",
|
|
10573
|
+
"leftoverNginx": "Nginx catch-all missing",
|
|
10574
|
+
"leftoverDovecot": "Dovecot TLS points at missing cert",
|
|
10575
|
+
"leftoverOther": "Host leftover",
|
|
10576
|
+
"leftoverApply": "Leftover apply",
|
|
10577
|
+
"isolationOwnerDegrades": "Missing owner_user_id affects package quota attribution — status is degraded, not ready."
|
|
9202
10578
|
},
|
|
9203
10579
|
"redis": {
|
|
9204
10580
|
"neverExpire": "Never expires",
|
|
@@ -9230,6 +10606,8 @@
|
|
|
9230
10606
|
"keysCountSuffix": " · {{n}} key(s)",
|
|
9231
10607
|
"searchPlaceholder": "Search keys, e.g. user:* or *",
|
|
9232
10608
|
"searchKeys": "Search keys",
|
|
10609
|
+
"scanHint": "Uses SCAN, not KEYS. Returns at most {{n}} keys — avoid * on huge databases.",
|
|
10610
|
+
"scanCapped": "Showing the first {{n}} matches.",
|
|
9233
10611
|
"rows": "{{n}} row(s)",
|
|
9234
10612
|
"content": "Content",
|
|
9235
10613
|
"noMatchingKeys": "No matching keys",
|
|
@@ -9258,6 +10636,8 @@
|
|
|
9258
10636
|
"addKey": "Add key",
|
|
9259
10637
|
"dbLabel": "DB {{i}}",
|
|
9260
10638
|
"keysInDb": " · {{n}} key(s)",
|
|
10639
|
+
"dbOptionKeys": "DB {{i}} · {{n}} keys",
|
|
10640
|
+
"dbOptionEmpty": "DB {{i}} · empty",
|
|
9261
10641
|
"dbRange": "{{n}} databases (0–{{max}}).",
|
|
9262
10642
|
"serviceLink": "Change count in service settings",
|
|
9263
10643
|
"dbsWithData": "DBs with data (quick)",
|
|
@@ -9266,7 +10646,26 @@
|
|
|
9266
10646
|
"pickKey": "Select a key on the left to view content.",
|
|
9267
10647
|
"ttlPrefix": "TTL: {{ttl}}",
|
|
9268
10648
|
"writeLiveHint": "Writes live Redis; cannot undo from the panel in one click.",
|
|
9269
|
-
"refPath": "Ref: {{path}}"
|
|
10649
|
+
"refPath": "Ref: {{path}}",
|
|
10650
|
+
"dbEmptyMark": " · empty",
|
|
10651
|
+
"noRequirepass": "Protected mode is on, but requirepass is empty or unread — no password.",
|
|
10652
|
+
"insecureShort": "No password",
|
|
10653
|
+
"setRequirepass": "Set password",
|
|
10654
|
+
"generateRequirepass": "Generate and apply password",
|
|
10655
|
+
"generateRequirepassTitle": "Generate a Redis password?",
|
|
10656
|
+
"generateRequirepassDesc": "Writes requirepass and restarts Redis. The password is shown once. Host change needs EXECUTE.",
|
|
10657
|
+
"generateRequirepassDone": "Redis password applied",
|
|
10658
|
+
"generatedOnce": "Generated password (shown once): {{password}}",
|
|
10659
|
+
"rdbOnlyLossHint": "AOF is off and RDB is on. A restart or crash can lose recent writes.",
|
|
10660
|
+
"dirDataContainer": "/data (container)",
|
|
10661
|
+
"dirHostDefault": "/var/lib/redis",
|
|
10662
|
+
"dirDefaultInstance": "/var/lib/redis/default",
|
|
10663
|
+
"dirDataWarn": "/data is usually a container path; this panel cannot confirm it exists.",
|
|
10664
|
+
"saveOff": "Disable snapshots (not recommended)",
|
|
10665
|
+
"saveOffWarn": "Empty save string turns RDB snapshots off. A crash can lose all data if AOF is also off.",
|
|
10666
|
+
"dirMoveWarn": "Changing dir does not move dump.rdb / AOF. The next start uses the new path as-is.",
|
|
10667
|
+
"passwordUnset": "Not set on the service",
|
|
10668
|
+
"passwordSetHidden": "Set (not shown)"
|
|
9270
10669
|
},
|
|
9271
10670
|
"resources": {
|
|
9272
10671
|
"created": "Created",
|
|
@@ -9399,6 +10798,9 @@
|
|
|
9399
10798
|
"tuneLoadFailed": "Failed to load tuning",
|
|
9400
10799
|
"availableCount": "{{n}} available",
|
|
9401
10800
|
"notDetected": "Not detected",
|
|
10801
|
+
"binaryPath": "Binary path",
|
|
10802
|
+
"targetMissing": "Target not installed",
|
|
10803
|
+
"targetMissingHint": "Target {{version}} is not on this host. Bind an installed version or install this pin.",
|
|
9402
10804
|
"target": "Target",
|
|
9403
10805
|
"tune": "Tune",
|
|
9404
10806
|
"loadedShort": "Loaded",
|
|
@@ -9444,6 +10846,8 @@
|
|
|
9444
10846
|
"demoNotBind": "(hand-typed pool name) and does not auto-bind project isolation. Global php.ini is on the php.ini tab.",
|
|
9445
10847
|
"applyOkWritten": "Apply success = files written. Prefer project deploy so User=project Linux user.",
|
|
9446
10848
|
"applyPhpVhost": "Apply PHP vhost / pool",
|
|
10849
|
+
"applyPhpVhostTitle": "Needs confirm — writes pool/vhost files",
|
|
10850
|
+
"applyPhpVhostDesc": "Will write the {{pool}} pool and {{domain}} vhost. Reload services: {{reload}}.",
|
|
9447
10851
|
"reprobeTools": "Re-probe tools",
|
|
9448
10852
|
"pressReprobe": "Press Re-probe tools to load",
|
|
9449
10853
|
"installNodeLabel": "Install Node {{v}}",
|
|
@@ -9697,7 +11101,8 @@
|
|
|
9697
11101
|
"tabProcesses": "Processes",
|
|
9698
11102
|
"pm2": {
|
|
9699
11103
|
"title": "PM2 fleet",
|
|
9700
|
-
"desc": "
|
|
11104
|
+
"desc": "PM2 is a process manager. This tab lists the panel user’s processes (read-only). Live updates use SSE (server-sent events) about every 2 seconds.",
|
|
11105
|
+
"glossary": "PM2 = process manager; SSE = live stream.",
|
|
9701
11106
|
"live": "Live",
|
|
9702
11107
|
"installed": "PM2 installed",
|
|
9703
11108
|
"version": "pm2 version",
|
|
@@ -9734,15 +11139,44 @@
|
|
|
9734
11139
|
"projectsCount": "YSK projects",
|
|
9735
11140
|
"noProjects": "No projects",
|
|
9736
11141
|
"noProjectsDesc": "No node/bun projects in the panel, or OS user not provisioned.",
|
|
9737
|
-
"pm2OnlyDesc": "Only apps started with PM2 under the panel user. systemd deploys appear above."
|
|
11142
|
+
"pm2OnlyDesc": "Only apps started with PM2 under the panel user. systemd deploys appear above.",
|
|
11143
|
+
"startupTitle": "Start on boot",
|
|
11144
|
+
"startupDesc": "Register PM2 so processes come back after reboot.",
|
|
11145
|
+
"systemdActionsHint": "systemd actions need root and YSK_EXECUTE.",
|
|
11146
|
+
"startupOk": "Startup registered. {{notes}}",
|
|
11147
|
+
"startupFail": "Could not register startup. {{notes}}",
|
|
11148
|
+
"actionOk": "{{action}} {{name}} — {{notes}}",
|
|
11149
|
+
"actionFail": "Could not {{action}} {{name}}. {{notes}}",
|
|
11150
|
+
"startupReady": "Ready",
|
|
11151
|
+
"startupReadyYes": "Yes",
|
|
11152
|
+
"startupReadyNo": "No",
|
|
11153
|
+
"startupUnit": "Unit",
|
|
11154
|
+
"startupDump": "Dump",
|
|
11155
|
+
"startupInstall": "Install startup",
|
|
11156
|
+
"startupSave": "Save process list",
|
|
11157
|
+
"actRestart": "Restart",
|
|
11158
|
+
"actStop": "Stop",
|
|
11159
|
+
"actReload": "Reload",
|
|
11160
|
+
"pm2ActionsHint": "PM2 actions apply to the panel user’s process list only.",
|
|
11161
|
+
"noteUnparsed": "PM2 list could not be parsed (empty or unexpected output).",
|
|
11162
|
+
"notePanelUserOnly": "PM2 list is for the panel process user only.",
|
|
11163
|
+
"noteProjectUnits": "{{n}} YSK project unit(s) listed"
|
|
9738
11164
|
},
|
|
9739
11165
|
"recordedInstalled": "Recorded {{v}}",
|
|
9740
11166
|
"remoteSourceSuffix": " ({{source}})",
|
|
9741
11167
|
"nodePathYskMissingTitle": "Managed Node path not ready",
|
|
9742
11168
|
"nodePathYskMissing": "YSK-managed Node for version {{version}} is not ready. Re-probe or reinstall.",
|
|
11169
|
+
"managedPathMissingTitle": "Managed {{name}} path not ready",
|
|
11170
|
+
"managedPathMissing": "YSK-managed {{name}} for version {{version}} is not ready. Re-probe or reinstall.",
|
|
9743
11171
|
"nodePathUnsafeTitle": "Node path is unsafe",
|
|
9744
11172
|
"nodePathUnsafe": "Path {{path}} is outside the managed tree; project deploys may fail.",
|
|
9745
11173
|
"recordedButProbeEmpty": "Panel recorded install {{v}}, but the host probe found no binary. Not installed — re-probe or reinstall.",
|
|
11174
|
+
"installedLabel": "Installed",
|
|
11175
|
+
"installedHint": "Host probe result — not the control-plane record",
|
|
11176
|
+
"targetHint": "Version this page will install or pin",
|
|
11177
|
+
"panelDefaultHint": "New projects prefer panel default {{version}} (host CLI may differ).",
|
|
11178
|
+
"rebuildFromHost": "Rebuild record from host",
|
|
11179
|
+
"rebuiltFromHost": "Record refreshed from host probe",
|
|
9746
11180
|
"tabTuning": "Tuning",
|
|
9747
11181
|
"versionPlaceholder": "Latest,",
|
|
9748
11182
|
"pluginsBundleWithRuntime": "Tools「Install runtime」Install(Install)。",
|
|
@@ -9770,7 +11204,6 @@
|
|
|
9770
11204
|
"setPanelDefault": "Set as panel default",
|
|
9771
11205
|
"alreadyPanelDefault": "Panel default · {{version}}",
|
|
9772
11206
|
"panelDefaultSaved": "Panel default set to {{version}}",
|
|
9773
|
-
"panelDefaultHint": "New projects prefer panel default {{version}} (host CLI may differ).",
|
|
9774
11207
|
"panelDefaultExplain": "Panel default = preferred version for new sites/projects. Host default = system CLI (php/python/node…).",
|
|
9775
11208
|
"stackReadyTitle": "{{name}} stack ready",
|
|
9776
11209
|
"softwareIntro": "Manage installed versions, host CLI default, and the version preferred for new projects.",
|
|
@@ -9788,7 +11221,20 @@
|
|
|
9788
11221
|
"path": "Path",
|
|
9789
11222
|
"fullVersion": "Full version",
|
|
9790
11223
|
"useListForDefaults": "To change host or panel default, or remove this version, use the list above.",
|
|
9791
|
-
"alreadyHostDefaultShort": "Host default"
|
|
11224
|
+
"alreadyHostDefaultShort": "Host default",
|
|
11225
|
+
"installRecordedCta": "Install recorded {{v}}",
|
|
11226
|
+
"needsInstall": "needs install",
|
|
11227
|
+
"needsInstallHint": "Not on this host. Install it first, or pick an installed version.",
|
|
11228
|
+
"unitBytes": "bytes",
|
|
11229
|
+
"headerSizeKb": "{{n}} KB",
|
|
11230
|
+
"phpIniChipEmpty": "Not loaded — open the php.ini tab",
|
|
11231
|
+
"phpFpmService": "PHP-FPM",
|
|
11232
|
+
"phpFpmServiceDesc": "Start, stop, reload, or restart the PHP-FPM unit",
|
|
11233
|
+
"rustupDefaultMissingTitle": "No rustup default toolchain",
|
|
11234
|
+
"rustupDefaultMissing": "rustup has no default toolchain. Set one (stable) on the Software tab.",
|
|
11235
|
+
"rustupDefaultMissingShort": "No default toolchain",
|
|
11236
|
+
"rustupSetDefaultHint": "Set default toolchain",
|
|
11237
|
+
"uninstalledCountHint": "{{n}} version(s) not on this host"
|
|
9792
11238
|
},
|
|
9793
11239
|
"search": {
|
|
9794
11240
|
"placeholder": "Search pages & resources…",
|
|
@@ -9812,6 +11258,10 @@
|
|
|
9812
11258
|
"cron": "Cron",
|
|
9813
11259
|
"user": "Users",
|
|
9814
11260
|
"other": "Other"
|
|
11261
|
+
},
|
|
11262
|
+
"alias": {
|
|
11263
|
+
"ssl": "cert certificate certs",
|
|
11264
|
+
"projects": "project sites"
|
|
9815
11265
|
}
|
|
9816
11266
|
},
|
|
9817
11267
|
"security": {
|
|
@@ -9825,8 +11275,12 @@
|
|
|
9825
11275
|
"pillReady": "Ready",
|
|
9826
11276
|
"pill2faOff": "2FA off",
|
|
9827
11277
|
"stat2fa": "2FA",
|
|
9828
|
-
"statApi": "API",
|
|
11278
|
+
"statApi": "API keys",
|
|
11279
|
+
"statApiSessions": "API sessions",
|
|
11280
|
+
"revokeOtherTitle": "Sign out {{n}} other session(s)",
|
|
9829
11281
|
"statSsh": "SSH",
|
|
11282
|
+
"statSshValue": "{{keys}} keys · {{auth}} authorized",
|
|
11283
|
+
"statSshHint": "Outbound identities / authorized login keys",
|
|
9830
11284
|
"statPending": "Pending",
|
|
9831
11285
|
"on": "On",
|
|
9832
11286
|
"off": "Off",
|
|
@@ -9835,7 +11289,7 @@
|
|
|
9835
11289
|
"tabApiKeys": "API keys",
|
|
9836
11290
|
"tabSsh": "SSH",
|
|
9837
11291
|
"tabApprovals": "Approvals",
|
|
9838
|
-
"tabAllowlist": "
|
|
11292
|
+
"tabAllowlist": "Agent tools",
|
|
9839
11293
|
"apiTokenOnce": "API token (shown once):",
|
|
9840
11294
|
"copiedToken": "Token copied",
|
|
9841
11295
|
"totpTitle": "Two-factor (TOTP)",
|
|
@@ -9873,6 +11327,8 @@
|
|
|
9873
11327
|
"reauthPassword": "Re-enter password",
|
|
9874
11328
|
"reauthPasswordHint": "Start/reset 2FA requires password again (stolen session protection)",
|
|
9875
11329
|
"reauthPasswordRequired": "Enter your login password first",
|
|
11330
|
+
"needCurrentPassword": "Enter the current password first",
|
|
11331
|
+
"passwordMin8": "New password must be at least 8 characters",
|
|
9876
11332
|
"totpSecretGenerated": "Secret ready — scan the QR or copy the key, then enter the app’s 6-digit code",
|
|
9877
11333
|
"reset2fa": "Reset 2FA",
|
|
9878
11334
|
"start2fa": "Set up 2FA",
|
|
@@ -9919,8 +11375,9 @@
|
|
|
9919
11375
|
"revokeAllDevices": "Revoke all devices",
|
|
9920
11376
|
"revokedAllDevices": "All trusted devices revoked",
|
|
9921
11377
|
"export2faBackup": "Export 2FA encrypted backup",
|
|
9922
|
-
"fail2banSnippetMsg": "
|
|
9923
|
-
"
|
|
11378
|
+
"fail2banSnippetMsg": "fail2ban snippets: {{written}} — {{notes}}",
|
|
11379
|
+
"generatefail2ban": "Generate fail2ban snippets",
|
|
11380
|
+
"generateFail2ban": "Generate fail2ban snippets",
|
|
9924
11381
|
"adminPolicyTitle": "Admin 2FA policy",
|
|
9925
11382
|
"adminPolicyDesc": "",
|
|
9926
11383
|
"requireAdmin2fa": "Require admin 2FA",
|
|
@@ -9940,8 +11397,9 @@
|
|
|
9940
11397
|
"apiKeysEmpty": "No API keys yet",
|
|
9941
11398
|
"apiKeysEmptyHint": "Create from the toolbar; then call API with Bearer token",
|
|
9942
11399
|
"approve": "Approve",
|
|
9943
|
-
"allowlistTitle": "
|
|
9944
|
-
"allowlistEmpty": "No
|
|
11400
|
+
"allowlistTitle": "Agent tools ({{count}})",
|
|
11401
|
+
"allowlistEmpty": "No agent tools in the catalog",
|
|
11402
|
+
"totpStatusLoadFailed": "Could not load 2FA status",
|
|
9945
11403
|
"createApiKeyTitle": "Create API key",
|
|
9946
11404
|
"createApiKeyDesc": "Full token is shown only once after create",
|
|
9947
11405
|
"createKeyBtn": "Create key",
|
|
@@ -10015,7 +11473,9 @@
|
|
|
10015
11473
|
"commentOptional": "Comment (optional)",
|
|
10016
11474
|
"commentPlaceholder": "laptop / CI",
|
|
10017
11475
|
"loginNeedProject": "Create a project first. Binding works best when the system user is ready.",
|
|
10018
|
-
"loginNeedPub": "Select a project and paste a public key starting with ssh-",
|
|
11476
|
+
"loginNeedPub": "Select a project or Linux user, and paste a public key starting with ssh-",
|
|
11477
|
+
"loginNoProjects": "No projects. Authorize an existing Linux user (root / tester) below. Writing /root/.ssh needs YSK_EXECUTE=1.",
|
|
11478
|
+
"loginLinuxHint": "Used when no project. Example: root or tester.",
|
|
10019
11479
|
"loginAdded": "Added",
|
|
10020
11480
|
"sshdTitle": "Project user SFTP (sshd)",
|
|
10021
11481
|
"sshdDesc": "Let ysks_* / ysk_* project users SFTP with public keys",
|
|
@@ -10139,6 +11599,14 @@
|
|
|
10139
11599
|
"ssh2faStep3": "Write home file",
|
|
10140
11600
|
"ssh2faStep4": "Install PAM module and merge snippets (below)",
|
|
10141
11601
|
"pkgLabel": "Package {{name}}",
|
|
11602
|
+
"pkgStatus": "Package {{status}}",
|
|
11603
|
+
"pamStatus": "PAM {{status}}",
|
|
11604
|
+
"kbdStatus": "sshd keyboard-interactive {{status}}",
|
|
11605
|
+
"light": {
|
|
11606
|
+
"green": "ok",
|
|
11607
|
+
"yellow": "check",
|
|
11608
|
+
"red": "missing"
|
|
11609
|
+
},
|
|
10142
11610
|
"enrollForUser": "Enroll SSH 2FA for user",
|
|
10143
11611
|
"ssh2faEmpty": "No Linux user has SSH 2FA yet",
|
|
10144
11612
|
"ssh2faEmptyHint": "Prefer key login first;",
|
|
@@ -10183,7 +11651,13 @@
|
|
|
10183
11651
|
"sharePanelTitle": "Share panel TOTP secret?",
|
|
10184
11652
|
"sharePanelDesc": "High risk. Type SHARED to confirm.",
|
|
10185
11653
|
"confirmString": "Confirmation string",
|
|
10186
|
-
"enableShare": "Enable sharing"
|
|
11654
|
+
"enableShare": "Enable sharing",
|
|
11655
|
+
"invalidPub": "Paste a full OpenSSH public key line (ssh-ed25519 / ssh-rsa / ecdsa…).",
|
|
11656
|
+
"dryRunOk": "Dry-run finished. Review the preview below.",
|
|
11657
|
+
"strictDryRun": "Strict preview (dry-run)",
|
|
11658
|
+
"errorNoDetail": "Test failed (no details)",
|
|
11659
|
+
"strictBlocked": "Package or PAM is not ready; Strict apply is disabled.",
|
|
11660
|
+
"privCloseWithoutAck": "Closed. The private key will not be shown again; generate a new one if you did not save it."
|
|
10187
11661
|
},
|
|
10188
11662
|
"sessionsActive": "Active sessions",
|
|
10189
11663
|
"sessionsOther": "Other devices",
|
|
@@ -10206,7 +11680,44 @@
|
|
|
10206
11680
|
"revokeOthersDesc": "This will end {{count}} other session(s). Your current browser stays signed in.",
|
|
10207
11681
|
"sessionRevoked": "Session signed out",
|
|
10208
11682
|
"mySecurityHint": "",
|
|
10209
|
-
"policyTotpHint": "Site policy: each admin must enable their own 2FA (individual QR)"
|
|
11683
|
+
"policyTotpHint": "Site policy: each admin must enable their own 2FA (individual QR)",
|
|
11684
|
+
"requireUser2fa": "Require 2FA for all panel users",
|
|
11685
|
+
"changePasswordTitle": "Change sign-in password",
|
|
11686
|
+
"currentPassword": "Current password",
|
|
11687
|
+
"newPassword": "New password",
|
|
11688
|
+
"confirmNewPassword": "Confirm new password",
|
|
11689
|
+
"passwordMismatch": "New passwords do not match.",
|
|
11690
|
+
"changePassword": "Change password",
|
|
11691
|
+
"passwordChanged": "Password updated.",
|
|
11692
|
+
"strictNeedsEnrolled": "Enable 2FA on this admin account before turning on Strict.",
|
|
11693
|
+
"policyTotpNeedSelf": "Enable 2FA on this account first; the confirm code cannot be filled otherwise.",
|
|
11694
|
+
"policyNoTotpHint": "This account has no 2FA yet. Turn on 2FA above before requiring it for admins or all users — otherwise you can lock everyone out.",
|
|
11695
|
+
"policyNeedSelf2fa": "Enable 2FA on this account first, then confirm with a TOTP code",
|
|
11696
|
+
"revokeAllDevicesTitle": "Revoke every remembered device — you and other admins must verify 2FA again",
|
|
11697
|
+
"sessionCli": "CLI",
|
|
11698
|
+
"sessionApi": "API",
|
|
11699
|
+
"fail2banSnippetTitle": "fail2ban snippet",
|
|
11700
|
+
"fail2banSnippetEmpty": "No snippet was written.",
|
|
11701
|
+
"trustedDevicesTitle": "Trusted devices",
|
|
11702
|
+
"noTrustedDevices": "No trusted devices.",
|
|
11703
|
+
"strictConfirmTitle": "Turn on Strict 2FA?",
|
|
11704
|
+
"strictConfirmDesc": "Users without 2FA will be refused sign-in. Confirm you already have a working TOTP or passkey.",
|
|
11705
|
+
"revokeDevicesTitle": "Revoke trusted devices?",
|
|
11706
|
+
"revokeDevicesDesc": "Remembered browsers will need 2FA again.",
|
|
11707
|
+
"approvalsHint": "Approvals appear when a high-risk tool needs a second operator. Grant Review approvals and Handle approvals on Users → Permissions.",
|
|
11708
|
+
"allowlistReadonly": "Read-only catalog of agent tools. Capability grants are configured on Users → Permissions.",
|
|
11709
|
+
"colTool": "Tool",
|
|
11710
|
+
"colAllowed": "Allowed",
|
|
11711
|
+
"colRisk": "Risk",
|
|
11712
|
+
"colApproval": "Approval",
|
|
11713
|
+
"risk": {
|
|
11714
|
+
"low": "Low",
|
|
11715
|
+
"medium": "Medium",
|
|
11716
|
+
"high": "High",
|
|
11717
|
+
"critical": "Critical"
|
|
11718
|
+
},
|
|
11719
|
+
"confirmDeleteApiKey": "Delete this API key?",
|
|
11720
|
+
"confirmDeleteApiKeyDesc": "“{{name}}” will stop authenticating. This cannot be undone."
|
|
10210
11721
|
},
|
|
10211
11722
|
"serviceExposure": {
|
|
10212
11723
|
"title": "Network access",
|
|
@@ -10217,11 +11728,22 @@
|
|
|
10217
11728
|
"modePrivate": "Local only",
|
|
10218
11729
|
"modePublic": "Public",
|
|
10219
11730
|
"modeRestricted": "Restricted",
|
|
11731
|
+
"modeUndecided": "Not set",
|
|
11732
|
+
"modePublicLive": "Public (live bind)",
|
|
11733
|
+
"summaryPublicLive": "Listening on {{bind}} — reachable on all interfaces. Confirm access mode; this is not private.",
|
|
11734
|
+
"modeLoading": "Loading",
|
|
10220
11735
|
"summaryPrivate": "Not open on the public firewall.",
|
|
10221
11736
|
"summaryPublic": "Open · {{ports}}",
|
|
11737
|
+
"summaryUndecided": "Access mode not confirmed (catalog default: {{suggested}}).",
|
|
11738
|
+
"summaryNotEnforced": "Firewall is off — the panel is not opening or blocking these ports.",
|
|
11739
|
+
"roleSmtp": "SMTP submission",
|
|
11740
|
+
"roleImap": "IMAP / POP3 mailbox",
|
|
10222
11741
|
"summaryRestricted": "Restricted · {{count}} source(s)",
|
|
10223
11742
|
"summaryFirewallOff": "Host firewall: {{detail}} — rules not enforced until UFW is active.",
|
|
11743
|
+
"summaryFirewallOffOnly": "Host firewall is not enabled, so port rules are not enforced.",
|
|
10224
11744
|
"outOfSync": "Out of sync",
|
|
11745
|
+
"openButStopped": "Ports open — service not running",
|
|
11746
|
+
"openNoTenants": "Public ports with no tenants",
|
|
10225
11747
|
"firewallOff": "Firewall off",
|
|
10226
11748
|
"ufwMissing": "UFW not installed",
|
|
10227
11749
|
"ufwInactive": "inactive",
|
|
@@ -10237,18 +11759,84 @@
|
|
|
10237
11759
|
"restrictedNeedSource": "Add at least one IP/CIDR or country code for restricted mode.",
|
|
10238
11760
|
"privateStartTitle": "Expose {{service}} on the network?",
|
|
10239
11761
|
"confirmAndStart": "Confirm and start",
|
|
10240
|
-
"cloudSgNote": "Host firewall only — cloud security groups (AWS/GCP/Azure) are not changed."
|
|
11762
|
+
"cloudSgNote": "Host firewall only — cloud security groups (AWS/GCP/Azure) are not changed.",
|
|
11763
|
+
"serviceNotInstalled": "This service is not installed, so firewall rules do not apply."
|
|
10241
11764
|
},
|
|
10242
11765
|
"services": {
|
|
10243
11766
|
"enabledBoot": "On boot",
|
|
11767
|
+
"unitNotFound": "Not installed",
|
|
11768
|
+
"bootNa": "Not applicable",
|
|
11769
|
+
"unitNa": "Not applicable",
|
|
11770
|
+
"permLabel": "Permission",
|
|
11771
|
+
"permCanChange": "Can change the system (superuser)",
|
|
11772
|
+
"permBlocked": "Cannot change the system",
|
|
11773
|
+
"permHint": "System change {{exec}} · Superuser {{root}}",
|
|
11774
|
+
"clusterLegend": "Planned = saved in the panel, not applied on the host.",
|
|
11775
|
+
"active": {
|
|
11776
|
+
"active": "Running",
|
|
11777
|
+
"inactive": "Stopped",
|
|
11778
|
+
"not-found": "Not installed",
|
|
11779
|
+
"failed": "Failed",
|
|
11780
|
+
"tool": "Tool",
|
|
11781
|
+
"activating": "Starting"
|
|
11782
|
+
},
|
|
11783
|
+
"unitStatic": "static",
|
|
11784
|
+
"unitIndirect": "indirect",
|
|
10244
11785
|
"action": {
|
|
10245
11786
|
"start": "Start",
|
|
10246
11787
|
"stop": "Stop",
|
|
10247
11788
|
"restart": "Restart",
|
|
10248
|
-
"reload": "Reload"
|
|
10249
|
-
|
|
11789
|
+
"reload": "Reload",
|
|
11790
|
+
"enable": "Enable on boot",
|
|
11791
|
+
"disable": "Disable on boot"
|
|
11792
|
+
},
|
|
11793
|
+
"enabledOk": "{{label}} enabled on boot",
|
|
11794
|
+
"bootDisabledWarn": "{{label}} is running but will not start at boot. Enable it to persist across reboot.",
|
|
11795
|
+
"bootDisabledShort": "Not on boot",
|
|
11796
|
+
"sshdBootOffWarn": "sshd is not enabled on boot. After reboot this host will have no SSH rescue path.",
|
|
11797
|
+
"mariadbNotInstalled": "MariaDB is not installed",
|
|
11798
|
+
"mariadbNotInstalledMysqlOk": "Not installed: MariaDB (MySQL is installed)",
|
|
11799
|
+
"lifecycleTitle": "{{label}} service control",
|
|
11800
|
+
"startedOk": "{{label}} started",
|
|
11801
|
+
"stoppedOk": "{{label}} stopped",
|
|
11802
|
+
"needRunning": "{{label}} is not running",
|
|
11803
|
+
"restartedOk": "{{label}} restarted",
|
|
11804
|
+
"reloadedOk": "{{label}} reloaded",
|
|
11805
|
+
"reloadTitle": "Reload {{label}} configuration without a full restart",
|
|
11806
|
+
"stopNeedConfirm": "Needs confirmation",
|
|
11807
|
+
"stopNeedConfirmPhrase": "Needs confirmation phrase",
|
|
11808
|
+
"stopNeedConfirmImpact": "Stop {{label}}? Active connections to this service will drop.",
|
|
11809
|
+
"stopConfirmTitle": "Stop {{label}}?",
|
|
11810
|
+
"stopConfirmDesc": "{{label}} will stop listening. Start it again from this page when needed.",
|
|
11811
|
+
"stopConfirmEdgeDesc": "Stopping {{label}} takes sites and reverse-proxy traffic offline until it is started again.",
|
|
11812
|
+
"stopConfirmEdgeConsequence": "HTTP/HTTPS on this host will not be served while {{label}} is stopped.",
|
|
11813
|
+
"stopConfirmSshdTitle": "Stop sshd?",
|
|
11814
|
+
"stopConfirmSshdDesc": "Stopping sshd closes remote SSH. Confirm you still have a console or another login path.",
|
|
11815
|
+
"stopConfirmSshdToken": "stop sshd",
|
|
11816
|
+
"stopConfirmSshdConsequence": "New SSH sessions will fail until sshd is started from the host console.",
|
|
11817
|
+
"stopConfirmPanelTitle": "Stop YSK Server?",
|
|
11818
|
+
"stopConfirmPanelDesc": "The panel and API will go offline until the unit is started on the host.",
|
|
11819
|
+
"stopConfirmPanelSshdOffDesc": "The panel and API will go offline. sshd is not enabled on boot, so SSH may not be a rescue path after reboot.",
|
|
11820
|
+
"stopConfirmPanelSshdOffConsequence": "sshd is not enabled on boot. After reboot you may have no SSH rescue path.",
|
|
11821
|
+
"ufwNoLifecycle": "UFW is not started or stopped from this matrix.",
|
|
11822
|
+
"restartConfirmPanelTitle": "Restart YSK Server?",
|
|
11823
|
+
"restartConfirmPanelDesc": "The panel and API will drop briefly while the unit restarts.",
|
|
11824
|
+
"restartConfirmTitle": "Restart {{label}}?",
|
|
11825
|
+
"restartConfirmDesc": "Restart {{label}} now. Active connections may drop.",
|
|
11826
|
+
"startVerifyFailed": "{{label}} start did not stay healthy.",
|
|
11827
|
+
"stopConfirmPanelToken": "stop ysk-server",
|
|
11828
|
+
"stopConfirmPanelConsequence": "This browser session will disconnect. Start the unit from SSH or the host console.",
|
|
11829
|
+
"stopConfirmFail2banTitle": "Stop fail2ban?",
|
|
11830
|
+
"stopConfirmFail2banDesc": "Stopping fail2ban turns off automatic IP bans. Websites and SSH keep running.",
|
|
11831
|
+
"stopConfirmFail2banConsequence": "New attackers are not banned until fail2ban is started again.",
|
|
10250
11832
|
"actionDone": "{{action}} done",
|
|
10251
11833
|
"runningOf": "{{running}}/{{total}} running",
|
|
11834
|
+
"statusFilter": {
|
|
11835
|
+
"all": "All states",
|
|
11836
|
+
"running": "Running",
|
|
11837
|
+
"failed": "Failed",
|
|
11838
|
+
"missing": "Not installed"
|
|
11839
|
+
},
|
|
10252
11840
|
"canMutate": "Mutable",
|
|
10253
11841
|
"locked": "Locked",
|
|
10254
11842
|
"controlUnit": "Control-plane unit",
|
|
@@ -10262,7 +11850,7 @@
|
|
|
10262
11850
|
"matrixTab": "Service matrix ({{count}})",
|
|
10263
11851
|
"stackTab": "Software stack",
|
|
10264
11852
|
"stackTitle": "Host software stack",
|
|
10265
|
-
"stackHint": "
|
|
11853
|
+
"stackHint": "Software plans install OS packages. The service matrix tab lists systemd units — the two counts are not the same set.",
|
|
10266
11854
|
"protectionTab": "Protection probe",
|
|
10267
11855
|
"knownServices": "Known services",
|
|
10268
11856
|
"showing": "Showing {{shown}} / {{total}}",
|
|
@@ -10272,6 +11860,7 @@
|
|
|
10272
11860
|
"bootPrefix": "Boot {{state}}",
|
|
10273
11861
|
"controlPage": "Control page",
|
|
10274
11862
|
"manageRuntime": "Install / update",
|
|
11863
|
+
"installOrOpen": "Install / open",
|
|
10275
11864
|
"protectionTitle": "Protection probe",
|
|
10276
11865
|
"protectionSub": "Read-only; does not change firewall / fail2ban",
|
|
10277
11866
|
"protectionDoneNote": "Protection probe finished",
|
|
@@ -10368,7 +11957,8 @@
|
|
|
10368
11957
|
"pick": "Pick version",
|
|
10369
11958
|
"noTarget": "No update target",
|
|
10370
11959
|
"needRuntimePage": "Install this version on the runtime page",
|
|
10371
|
-
"noAptCandidate": "No apt candidate version"
|
|
11960
|
+
"noAptCandidate": "No apt candidate version",
|
|
11961
|
+
"sourceLabel": "Source"
|
|
10372
11962
|
},
|
|
10373
11963
|
"install": {
|
|
10374
11964
|
"progress": "Installing: {{list}}…",
|
|
@@ -10465,6 +12055,8 @@
|
|
|
10465
12055
|
"vnc": "VNC services will stop",
|
|
10466
12056
|
"controlPlane": "Control plane runtime (protected)",
|
|
10467
12057
|
"generic": "Related services may stop",
|
|
12058
|
+
"containers": "Running containers will stop",
|
|
12059
|
+
"validators": "Validator node stacks that use Docker Compose will stop",
|
|
10468
12060
|
"purgeData": "Data paths will be deleted",
|
|
10469
12061
|
"protectedSkipped": "Protected components are skipped",
|
|
10470
12062
|
"runtimeStack": "All panel-managed versions of this runtime will be removed"
|
|
@@ -10474,7 +12066,15 @@
|
|
|
10474
12066
|
"dockCancelling": "Cancelling · {{title}}",
|
|
10475
12067
|
"dockCancelled": "Cancelled · {{title}}",
|
|
10476
12068
|
"cancelHint": "Cancel requested. The client stopped listening; the host may finish the current apt/step. Re-probe status after a moment.",
|
|
10477
|
-
"cancelledToast": "Operation cancelled (client stopped streaming)"
|
|
12069
|
+
"cancelledToast": "Operation cancelled (client stopped streaming)",
|
|
12070
|
+
"kindApply": "Apply",
|
|
12071
|
+
"kindScan": "Scan",
|
|
12072
|
+
"kindDeploy": "Deploy",
|
|
12073
|
+
"kindRuntime": "Runtime",
|
|
12074
|
+
"jobDone": "Finished · {{title}}",
|
|
12075
|
+
"jobFailed": "Failed · {{title}}",
|
|
12076
|
+
"uninstallUfwWarn": "Removing UFW leaves this host without its panel-managed port firewall.",
|
|
12077
|
+
"uninstallFail2banWarn": "Removing fail2ban stops jails and releases current bans. Add your login IP to ignoreip first if you keep it."
|
|
10478
12078
|
},
|
|
10479
12079
|
"sqlEngineHealth": {
|
|
10480
12080
|
"finding": {
|
|
@@ -10607,6 +12207,8 @@
|
|
|
10607
12207
|
},
|
|
10608
12208
|
"pillCount": "{{count}} cert(s)",
|
|
10609
12209
|
"statCerts": "Certificates",
|
|
12210
|
+
"panelCertHint": "Panel HTTPS uses {{path}} (expires {{exp}}). It is not listed as a site certificate.",
|
|
12211
|
+
"openPanelTls": "Open panel HTTPS",
|
|
10610
12212
|
"statWithFiles": "With files",
|
|
10611
12213
|
"statBindings": "Bindings",
|
|
10612
12214
|
"statFailed": "Failed",
|
|
@@ -10662,6 +12264,9 @@
|
|
|
10662
12264
|
"filesYes": "Yes",
|
|
10663
12265
|
"filesNo": "No",
|
|
10664
12266
|
"colExpires": "Expires",
|
|
12267
|
+
"renew": "Renew",
|
|
12268
|
+
"renewFor": "Renew {{domain}}",
|
|
12269
|
+
"deleteDomain": "Delete {{domain}}",
|
|
10665
12270
|
"colStatus": "Status",
|
|
10666
12271
|
"emptyTitle": "No certificates yet",
|
|
10667
12272
|
"emptyDesc": "Use “Upload certificate” or “Request Let’s Encrypt” above",
|
|
@@ -10684,17 +12289,27 @@
|
|
|
10684
12289
|
"leHttp01Hint": "Normal domains use http-01 (nginx plugin)",
|
|
10685
12290
|
"deleteTitle": "Delete certificate?",
|
|
10686
12291
|
"deleteDesc": "Removes cert files and registration for {{domain}}.",
|
|
12292
|
+
"deleteNeedDomain": "Delete this certificate — type the domain name to confirm",
|
|
10687
12293
|
"savedCert": "Saved certificate for {{domain}}",
|
|
10688
12294
|
"uploadFailed": "Upload failed",
|
|
10689
12295
|
"requestBlocked": "Cannot complete certificate request in the admin panel",
|
|
10690
12296
|
"requestDone": "Certificate request completed",
|
|
10691
12297
|
"requestFailed": "Certificate request did not succeed",
|
|
10692
12298
|
"applyFailed": "Request failed",
|
|
10693
|
-
"deletedCert": "Deleted {{domain}}"
|
|
12299
|
+
"deletedCert": "Deleted {{domain}}",
|
|
12300
|
+
"uninstallCertbotWarn": "Removing certbot stops automatic renewal of existing Let's Encrypt certificates.",
|
|
12301
|
+
"uninstallCertbot": "Uninstall certbot (loses auto-renew)",
|
|
12302
|
+
"domainRequired": "Please enter a domain.",
|
|
12303
|
+
"domainInvalid": "Domain format is not valid.",
|
|
12304
|
+
"domainKnownHint": "Pick a known project, DNS, or mail domain, or type a custom name."
|
|
10694
12305
|
},
|
|
10695
12306
|
"stackWizard": {
|
|
10696
12307
|
"purgeConfirm": "Confirm purge? Registered data paths (databases/mail) will be deleted permanently.",
|
|
10697
|
-
"installedCount": "
|
|
12308
|
+
"installedCount": "Packages installed {{installed}} · missing {{missing}}",
|
|
12309
|
+
"countHint": "These counts are OS packages in the software plan — not the service-matrix units on the other tab.",
|
|
12310
|
+
"executeRoot": "System changes {{execute}} · administrator {{root}}",
|
|
12311
|
+
"manifestPlan": "Plan {{plan}} ({{bundles}})",
|
|
12312
|
+
"manifestHint": "Last chosen software plan and bundles",
|
|
10698
12313
|
"needRootExecute": "Live install/remove needs administrator rights and system-change permission. You can still dry-run.",
|
|
10699
12314
|
"modeInstall": "Install plan",
|
|
10700
12315
|
"modeUninstall": "Uninstall",
|
|
@@ -10709,7 +12324,10 @@
|
|
|
10709
12324
|
"dataPolicy": "Data policy",
|
|
10710
12325
|
"keepData": "Keep data",
|
|
10711
12326
|
"purgeData": "Purge data",
|
|
10712
|
-
"uninstallNow": "Uninstall now"
|
|
12327
|
+
"uninstallNow": "Uninstall now",
|
|
12328
|
+
"uninstallNeedSelect": "Select at least one bundle. Empty selection no longer means remove all.",
|
|
12329
|
+
"uninstallConfirmTitle": "Remove selected bundles?",
|
|
12330
|
+
"uninstallConfirmDesc": "{{count}} bundle(s) will be removed. Type REMOVE to confirm."
|
|
10713
12331
|
},
|
|
10714
12332
|
"support": {
|
|
10715
12333
|
"title": "Support",
|
|
@@ -10737,7 +12355,23 @@
|
|
|
10737
12355
|
"cryptoNetwork": "Network",
|
|
10738
12356
|
"cryptoAddress": "Address",
|
|
10739
12357
|
"copy": "Copy",
|
|
10740
|
-
"copied": "Copied"
|
|
12358
|
+
"copied": "Copied",
|
|
12359
|
+
"copyTitle": "Copy {{address}}",
|
|
12360
|
+
"docsLink": "Documentation",
|
|
12361
|
+
"diagTitle": "Diagnostic summary",
|
|
12362
|
+
"diagBody": "Copy version, system-change, superuser, and host facts to paste into an email. This is not a full log bundle.",
|
|
12363
|
+
"diagCopy": "Copy diagnostic summary",
|
|
12364
|
+
"diagCopied": "Diagnostic summary copied",
|
|
12365
|
+
"diagCopyTitle": "Copy version, system-change, and host facts",
|
|
12366
|
+
"diagPreview": "Preview what will be copied",
|
|
12367
|
+
"diagLoading": "Loading diagnostic…",
|
|
12368
|
+
"diagLoadFailed": "Could not load diagnostic",
|
|
12369
|
+
"copiedAddr": "Copied {{addr}}",
|
|
12370
|
+
"diagStatus": "Status",
|
|
12371
|
+
"diagMode": "Mode",
|
|
12372
|
+
"diagProtection": "Protection",
|
|
12373
|
+
"diagHostname": "Hostname",
|
|
12374
|
+
"diagOs": "OS"
|
|
10741
12375
|
},
|
|
10742
12376
|
"system": {
|
|
10743
12377
|
"exportLoadFailed": "Failed to load export data",
|
|
@@ -10768,8 +12402,11 @@
|
|
|
10768
12402
|
"optional": "Optional",
|
|
10769
12403
|
"prettyPh": "Friendly display name",
|
|
10770
12404
|
"timezone": "Timezone",
|
|
10771
|
-
"timezoneHint": "
|
|
12405
|
+
"timezoneHint": "IANA zone from timedatectl (e.g. Asia/Hong_Kong). This is the host clock — cron and vsftpd local time follow it. Stored timestamps stay UTC.",
|
|
12406
|
+
"timezoneNow": "Host time now: {{time}} ({{tz}})",
|
|
12407
|
+
"timezoneBrowserDiff": "This host uses {{host}}; your browser uses {{browser}}. Changing timezone here changes the host clock, not the browser.",
|
|
10772
12408
|
"timezoneSelect": "Select timezone",
|
|
12409
|
+
"notExported": "Not exported yet",
|
|
10773
12410
|
"dns": "DNS",
|
|
10774
12411
|
"updated": "Updated",
|
|
10775
12412
|
"applyIdentity": "Apply identity",
|
|
@@ -10780,9 +12417,9 @@
|
|
|
10780
12417
|
"panelSsl": "Panel SSL",
|
|
10781
12418
|
"panelTls": {
|
|
10782
12419
|
"title": "Panel HTTPS",
|
|
10783
|
-
"sub": "Control plane (ysk-server) serves TLS on
|
|
12420
|
+
"sub": "Control plane (ysk-server) serves TLS on the configured port; WebAuthn/Passkeys need HTTPS",
|
|
10784
12421
|
"domain": "Panel domain",
|
|
10785
|
-
"domainHint": "Used for certificate issue/bind, e.g.
|
|
12422
|
+
"domainHint": "Used for certificate issue/bind, e.g. {{host}}",
|
|
10786
12423
|
"email": "Let’s Encrypt email",
|
|
10787
12424
|
"status": "Status",
|
|
10788
12425
|
"enabled": "TLS enabled in config",
|
|
@@ -10794,7 +12431,9 @@
|
|
|
10794
12431
|
"issueEnable": "Issue cert & enable HTTPS",
|
|
10795
12432
|
"enableExisting": "Enable with existing cert",
|
|
10796
12433
|
"disable": "Disable panel HTTPS",
|
|
12434
|
+
"disableNeedConfirm": "Needs confirmation — type DISABLE-HTTPS",
|
|
10797
12435
|
"needDomain": "Enter hostname / domain first",
|
|
12436
|
+
"needFqdn": "Need a FQDN (example.com), not a bare hostname",
|
|
10798
12437
|
"urlHint": "After restart open {{url}}",
|
|
10799
12438
|
"certMissing": "TLS enabled but cert/key files missing",
|
|
10800
12439
|
"restartToApply": "Restart ysk-server to apply HTTPS",
|
|
@@ -10818,7 +12457,16 @@
|
|
|
10818
12457
|
"leOk": "Let’s Encrypt certificate obtained for {{domain}}",
|
|
10819
12458
|
"leFailed": "Certificate request failed: {{detail}}",
|
|
10820
12459
|
"leHint": "Ensure DNS A points here and port 80 is reachable (or nginx serves the domain)",
|
|
10821
|
-
"openFirewall": "If public: allow panel port {{port}}/tcp (Firewall → open port → 9287 Panel)"
|
|
12460
|
+
"openFirewall": "If public: allow panel port {{port}}/tcp (Firewall → open port → 9287 Panel)",
|
|
12461
|
+
"disableConfirmTitle": "Disable panel HTTPS?",
|
|
12462
|
+
"disableConfirmDesc": "The panel will serve HTTP. WebAuthn / Passkey will stop working until HTTPS is on again.",
|
|
12463
|
+
"disablePasskeyWarn": "Registered passkeys need HTTPS — they will fail on HTTP.",
|
|
12464
|
+
"listenPublic": "Panel is listening on a public address (0.0.0.0/::). Restrict with a firewall or bind to 127.0.0.1.",
|
|
12465
|
+
"bootstrapCert": "This is the self-signed bootstrap certificate — browsers will warn. Issue a trusted certificate for the panel domain.",
|
|
12466
|
+
"cliNoSocket": "CLI has no live HTTP socket; servingHttps is inferred from config and listen sockets (ss).",
|
|
12467
|
+
"listenHost": "Listen address",
|
|
12468
|
+
"currentHost": "This session",
|
|
12469
|
+
"replaceCert": "Replace with a trusted certificate"
|
|
10822
12470
|
},
|
|
10823
12471
|
"timeNtp": "Time & NTP",
|
|
10824
12472
|
"clockStatus": "System clock status",
|
|
@@ -10860,6 +12508,9 @@
|
|
|
10860
12508
|
"powerTitle": "Power (danger zone)",
|
|
10861
12509
|
"powerWarn": "Reboot/poweroff interrupts all services and the panel. The panel cannot power the host on — needs physical access or hypervisor.",
|
|
10862
12510
|
"unlocked": "Unlocked",
|
|
12511
|
+
"powerUnlock": "Unlock danger zone",
|
|
12512
|
+
"powerLock": "Lock danger zone",
|
|
12513
|
+
"noScheduledPower": "No reboot or poweroff is scheduled",
|
|
10863
12514
|
"powerCaps": "Needs YSK_EXECUTE=1 and root. Now EXECUTE={{exec}}, root={{root}}.",
|
|
10864
12515
|
"scheduledPower": "Scheduled poweroff/reboot detected",
|
|
10865
12516
|
"cancelScheduleHint": ". Use “Cancel schedule” to withdraw.",
|
|
@@ -10901,6 +12552,7 @@
|
|
|
10901
12552
|
"syncToSystem": "Sync to system",
|
|
10902
12553
|
"syncSub": "Copy to /etc/nginx/conf.d and reload — needs root + EXECUTE",
|
|
10903
12554
|
"syncReload": "Sync + reload",
|
|
12555
|
+
"syncReloadNeedConfirm": "Needs confirmation — writes /etc/nginx/conf.d and reloads Nginx",
|
|
10904
12556
|
"exportOnly": "Export only + list conf",
|
|
10905
12557
|
"dryRun": "Dry-run",
|
|
10906
12558
|
"dryRunNote": "Dry-run does not change the system.",
|
|
@@ -10914,8 +12566,8 @@
|
|
|
10914
12566
|
"syncConfirmDesc": "Sync managed Nginx conf to /etc/nginx/conf",
|
|
10915
12567
|
"uptime": "Uptime",
|
|
10916
12568
|
"load1m": "Load 1m",
|
|
10917
|
-
"executeLabel": "
|
|
10918
|
-
"rootLabel": "
|
|
12569
|
+
"executeLabel": "System change",
|
|
12570
|
+
"rootLabel": "Superuser",
|
|
10919
12571
|
"managedLabel": "Managed",
|
|
10920
12572
|
"managedCount": "Managed",
|
|
10921
12573
|
"exportsCount": "Exports",
|
|
@@ -10923,7 +12575,18 @@
|
|
|
10923
12575
|
"exportPath": "Export path",
|
|
10924
12576
|
"mode": "Mode",
|
|
10925
12577
|
"managedConf": "Managed conf",
|
|
10926
|
-
"dryRunFlag": "Dry-run"
|
|
12578
|
+
"dryRunFlag": "Dry-run",
|
|
12579
|
+
"timezoneSearch": "Filter timezones…",
|
|
12580
|
+
"resyncNtp": "Re-sync NTP",
|
|
12581
|
+
"storageSub": "Disk usage",
|
|
12582
|
+
"nginxLeftover": "Leftover",
|
|
12583
|
+
"nginxUnused": "Unused",
|
|
12584
|
+
"nginxLeftoverHint": "Stale public-files or leftover conf. Still included in sync until you remove or replace it.",
|
|
12585
|
+
"nginxUnusedHint": "Stock / catch-all conf (000-default). Still included in sync until you act.",
|
|
12586
|
+
"nginxRemoveLeftover": "Remove leftover",
|
|
12587
|
+
"nginxRemoveLeftoverTitle": "Remove leftover nginx conf?",
|
|
12588
|
+
"nginxRemoveLeftoverDesc": "Deletes {{name}} from the panel inventory. The live /etc/nginx copy is removed only with YSK_EXECUTE + root. 000-default is not leftover and cannot be deleted here.",
|
|
12589
|
+
"needExecuteRoot": "Needs YSK_EXECUTE + root"
|
|
10927
12590
|
},
|
|
10928
12591
|
"systemd": {
|
|
10929
12592
|
"enabled": "Enabled",
|
|
@@ -10997,6 +12660,8 @@
|
|
|
10997
12660
|
"policyNotEqualFull": "Write template ≠ service enabled ≠ listening",
|
|
10998
12661
|
"controlPlaneUnit": "Control-plane unit",
|
|
10999
12662
|
"kpiRuntime": "Runtime",
|
|
12663
|
+
"rawStateHint": "Raw unit state in tooltip",
|
|
12664
|
+
"bootHint": "Whether the unit starts at boot",
|
|
11000
12665
|
"kpiBoot": "Boot enable",
|
|
11001
12666
|
"kpiCaps": "Apply capability",
|
|
11002
12667
|
"capsReady": "Can install to system",
|
|
@@ -11042,8 +12707,12 @@
|
|
|
11042
12707
|
"error": "Terminal error",
|
|
11043
12708
|
"wsError": "WebSocket failed",
|
|
11044
12709
|
"exitCode": "Exit code {{code}}",
|
|
11045
|
-
"needRootExecute": "
|
|
12710
|
+
"needRootExecute": "System shells need superuser and system-change permission.",
|
|
12711
|
+
"groupSystem": "System",
|
|
12712
|
+
"groupProject": "Project",
|
|
11046
12713
|
"unavailable": "unavailable",
|
|
12714
|
+
"copyAll": "Copy all",
|
|
12715
|
+
"copyAllNeedConn": "Connect first — the buffer is empty while disconnected",
|
|
11047
12716
|
"placeholder": "Pick an identity, then Connect",
|
|
11048
12717
|
"aboutTitle": "About terminal",
|
|
11049
12718
|
"aboutSub": "Interactive OS shell in the browser (local users). Not an arbitrary remote SSH client.",
|
|
@@ -11057,7 +12726,11 @@
|
|
|
11057
12726
|
"stepUpHint": "Root login requires 2FA step-up when your account has TOTP enabled.",
|
|
11058
12727
|
"stepUpTitle": "Confirm root shell",
|
|
11059
12728
|
"stepUpDesc": "Enter your authenticator code or a recovery code.",
|
|
11060
|
-
"totpLabel": "TOTP / recovery code"
|
|
12729
|
+
"totpLabel": "TOTP / recovery code",
|
|
12730
|
+
"sessionStillOpen": "A live shell is still connected while you read this page.",
|
|
12731
|
+
"rootConfirmTitle": "Open a root shell?",
|
|
12732
|
+
"rootConfirmDesc": "This session is an unrestricted root PTY on the host. Commands are audited.",
|
|
12733
|
+
"rootConfirmBody": "Only continue if you intend to run privileged host commands."
|
|
11061
12734
|
},
|
|
11062
12735
|
"uiInline": {
|
|
11063
12736
|
"s27d9daa5": "runtime {{v0}} {{v1}},",
|
|
@@ -11286,7 +12959,9 @@
|
|
|
11286
12959
|
"hourAgo": "{{n}}h ago",
|
|
11287
12960
|
"highRiskN": "{{count}} high-risk",
|
|
11288
12961
|
"panelUpdate": "Panel update available",
|
|
12962
|
+
"footerNewVersion": "New version {{version}}",
|
|
11289
12963
|
"riskOk": "Risk manageable",
|
|
12964
|
+
"riskUnevaluated": "Not evaluated — run Scan + OSV",
|
|
11290
12965
|
"pendingScan": "Awaiting scan",
|
|
11291
12966
|
"packages": "Packages",
|
|
11292
12967
|
"highRisk": "High risk",
|
|
@@ -11297,6 +12972,7 @@
|
|
|
11297
12972
|
"reload": "Reload",
|
|
11298
12973
|
"osvTitle": "Query OSV for top 12 suggested packages (needs network)",
|
|
11299
12974
|
"scanOsv": "Scan + OSV",
|
|
12975
|
+
"cveNotChecked": "Not checked",
|
|
11300
12976
|
"scanPkgs": "Scan packages",
|
|
11301
12977
|
"tabInventory": "Package inventory",
|
|
11302
12978
|
"tabSelf": "Panel self",
|
|
@@ -11345,6 +13021,8 @@
|
|
|
11345
13021
|
"policyTitle": "Update policy",
|
|
11346
13022
|
"policyBody": "High-risk and CVE packages require approval before apply",
|
|
11347
13023
|
"applyPkg": "Apply package upgrade",
|
|
13024
|
+
"rebootNeeded": "reboot",
|
|
13025
|
+
"kernelRebootHint": "Kernel packages need a reboot after apply",
|
|
11348
13026
|
"applyPkgConfirm": "Upgrade {{name}}?",
|
|
11349
13027
|
"applyPkgDesc": "Runs apt upgrade for this package on the host. Needs root + YSK_EXECUTE.",
|
|
11350
13028
|
"lastScan": "Last scan",
|
|
@@ -11355,11 +13033,12 @@
|
|
|
11355
13033
|
"selfCurrentShort": "Current",
|
|
11356
13034
|
"selfLatestShort": "Latest",
|
|
11357
13035
|
"applyPanelUpdate": "Apply panel update",
|
|
13036
|
+
"applyPanelAlreadyLatest": "Already the latest panel version",
|
|
11358
13037
|
"recheck": "Recheck",
|
|
11359
13038
|
"aboutScope": "Scope",
|
|
11360
|
-
"aboutScopeV": "ysk-server
|
|
13039
|
+
"aboutScopeV": "ysk-server panel + catalog services + runtimes + remaining apt packages",
|
|
11361
13040
|
"aboutChannel": "Channel",
|
|
11362
|
-
"aboutChannelV": "npm → GitHub release → package.json; apply
|
|
13041
|
+
"aboutChannelV": "npm package ysk-server → GitHub release → apps/server/package.json; apply: npm i -g ysk-server@version or git (YSK_SOURCE_ROOT)",
|
|
11363
13042
|
"aboutFail": "Failures",
|
|
11364
13043
|
"aboutFailV": "Unavailable channels are not reported as up-to-date; apply needs EXECUTE; git apply needs service restart",
|
|
11365
13044
|
"jobsTitle": "Scheduled jobs",
|
|
@@ -11370,7 +13049,52 @@
|
|
|
11370
13049
|
"scanPolicy": "Scan",
|
|
11371
13050
|
"scanPolicyV": "Scan ≠ upgraded; apply changes the system",
|
|
11372
13051
|
"highRiskPolicy": "High risk",
|
|
11373
|
-
"highRiskPolicyV": "Needs approval:
|
|
13052
|
+
"highRiskPolicyV": "Needs approval: the Apply button opens a confirm dialog before anything is sent",
|
|
13053
|
+
"needApprovalHint": "Open Available and filter to packages that need approval",
|
|
13054
|
+
"applyNeedConfirm": "Opens a confirm dialog before applying",
|
|
13055
|
+
"probeFailed": "Probe failed",
|
|
13056
|
+
"notViaApt": "Not managed by apt — no candidate",
|
|
13057
|
+
"noCandidate": "No candidate from package manager",
|
|
13058
|
+
"cveLabel": "CVE",
|
|
13059
|
+
"jobOpenGeo": "GeoIP page",
|
|
13060
|
+
"job": {
|
|
13061
|
+
"protection_probe": {
|
|
13062
|
+
"name": "Protection probe",
|
|
13063
|
+
"hint": "Periodic defense signals"
|
|
13064
|
+
},
|
|
13065
|
+
"updates_scan": {
|
|
13066
|
+
"name": "Updates scan",
|
|
13067
|
+
"hint": "Refresh package inventory"
|
|
13068
|
+
},
|
|
13069
|
+
"daily_backup": {
|
|
13070
|
+
"name": "Daily backup",
|
|
13071
|
+
"hint": "Scheduled backup all"
|
|
13072
|
+
},
|
|
13073
|
+
"db_temp_expire": {
|
|
13074
|
+
"name": "Expire temp DB users",
|
|
13075
|
+
"hint": "Drop expired temporary database users"
|
|
13076
|
+
},
|
|
13077
|
+
"defense_auto_ban": {
|
|
13078
|
+
"name": "Defense auto-ban",
|
|
13079
|
+
"hint": "Apply auto-ban tick"
|
|
13080
|
+
},
|
|
13081
|
+
"defense_geoip_update": {
|
|
13082
|
+
"name": "GeoIP update",
|
|
13083
|
+
"hint": "Download GeoIP databases"
|
|
13084
|
+
},
|
|
13085
|
+
"log_auto_vacuum": {
|
|
13086
|
+
"name": "Log vacuum",
|
|
13087
|
+
"hint": "journald retention"
|
|
13088
|
+
},
|
|
13089
|
+
"email_dnsbl": {
|
|
13090
|
+
"name": "Email DNSBL",
|
|
13091
|
+
"hint": "Mail DNSBL check"
|
|
13092
|
+
},
|
|
13093
|
+
"validators_upgrade_scan": {
|
|
13094
|
+
"name": "Validators upgrade scan",
|
|
13095
|
+
"hint": "Check validator image / binary updates"
|
|
13096
|
+
}
|
|
13097
|
+
},
|
|
11374
13098
|
"permPolicy": "Permissions",
|
|
11375
13099
|
"permPolicyV": "Without EXECUTE/root → blocked (no fake success)",
|
|
11376
13100
|
"osvPolicyV": "Needs network; enriches top 12 suggestions only",
|
|
@@ -11395,6 +13119,9 @@
|
|
|
11395
13119
|
"updateFailed": "Update failed",
|
|
11396
13120
|
"updateIncomplete": "Update incomplete",
|
|
11397
13121
|
"appliedUpdate": "Update applied",
|
|
13122
|
+
"panelRestarting": "Panel is restarting to load the new version…",
|
|
13123
|
+
"panelRestarted": "Panel is back · {{version}}",
|
|
13124
|
+
"panelRestartWait": "Panel apply finished. If this page does not refresh, reload after a few seconds.",
|
|
11398
13125
|
"aptCandidate": "apt Candidate",
|
|
11399
13126
|
"advice": {
|
|
11400
13127
|
"update": "Update recommended",
|
|
@@ -11436,7 +13163,26 @@
|
|
|
11436
13163
|
"scanNow": "Scan now",
|
|
11437
13164
|
"viewUpgradable": "View upgradable",
|
|
11438
13165
|
"installElsewhere": "To install packages (Nginx, PHP, databases…), open the matching feature page — not this hub.",
|
|
11439
|
-
"status": "Status"
|
|
13166
|
+
"status": "Status",
|
|
13167
|
+
"groupService": "Services",
|
|
13168
|
+
"groupRuntime": "Runtimes",
|
|
13169
|
+
"groupOs": "System packages",
|
|
13170
|
+
"notInstalled": "Not installed",
|
|
13171
|
+
"goToPage": "Open page",
|
|
13172
|
+
"hubHint": "Catalog software and runtimes on this host. Scan to refresh.",
|
|
13173
|
+
"intervalDay": "every day",
|
|
13174
|
+
"intervalDays": "every {{n}} days",
|
|
13175
|
+
"intervalHour": "every hour",
|
|
13176
|
+
"intervalHours": "every {{n}} hours",
|
|
13177
|
+
"intervalMinutes": "every {{n}} minutes",
|
|
13178
|
+
"intervalSeconds": "every {{n}} seconds",
|
|
13179
|
+
"availableHint": "Packages with a newer candidate from the package manager.",
|
|
13180
|
+
"servicesHint": "Catalog services on this host. Open the service page to install.",
|
|
13181
|
+
"runtimeHint": "Runtimes on this host. Version upgrades are done on each runtime page.",
|
|
13182
|
+
"needsReboot": "Reboot needed",
|
|
13183
|
+
"kernelRebootWarn": "Installing a new kernel usually needs a reboot before it is used.",
|
|
13184
|
+
"neverRun": "not run yet",
|
|
13185
|
+
"scanOsvN": "Scan + OSV (first {{n}})"
|
|
11440
13186
|
},
|
|
11441
13187
|
"users": {
|
|
11442
13188
|
"userCount": "{{count}} users",
|
|
@@ -11444,12 +13190,17 @@
|
|
|
11444
13190
|
"packages": "Packages",
|
|
11445
13191
|
"suspended": "Suspended",
|
|
11446
13192
|
"securityCenter": "Security center",
|
|
13193
|
+
"singleAdminNo2fa": "This host has a single admin and 2FA is off. Enable admin 2FA under Security, then add a backup admin on this page.",
|
|
13194
|
+
"enableAdmin2fa": "Enable admin 2FA",
|
|
13195
|
+
"addBackupAdmin": "Add a backup admin",
|
|
11447
13196
|
"loading": "Loading users & packages…",
|
|
11448
13197
|
"userList": "Users ({{count}})",
|
|
11449
13198
|
"userListDesc": "Open detail to edit role, password, package, overrides",
|
|
11450
13199
|
"createUser": "Create user",
|
|
13200
|
+
"operatorHighRiskHint": "The factory operator role includes high-risk writes (services, firewall, package apply, MySQL, Nginx publish). Narrow it only if you intend to change every existing operator.",
|
|
11451
13201
|
"createUserPlus": "+ Create user",
|
|
11452
13202
|
"searchPh": "Username / role / package",
|
|
13203
|
+
"searchPkgPh": "Package name",
|
|
11453
13204
|
"searchUsersAria": "Search users",
|
|
11454
13205
|
"user": "User",
|
|
11455
13206
|
"roles": "Roles",
|
|
@@ -11459,6 +13210,9 @@
|
|
|
11459
13210
|
"resume": "Resume",
|
|
11460
13211
|
"suspend": "Suspend",
|
|
11461
13212
|
"impersonate": "Impersonate",
|
|
13213
|
+
"impersonateHint": "Opens a session as this user. Use the account menu to leave impersonation.",
|
|
13214
|
+
"cannotDeleteSelf": "You cannot delete the signed-in account",
|
|
13215
|
+
"cannotImpersonateSelf": "You are already signed in as this account",
|
|
11462
13216
|
"openDetail": "Details",
|
|
11463
13217
|
"edit": "Edit",
|
|
11464
13218
|
"resetPassword": "Reset password",
|
|
@@ -11558,7 +13312,342 @@
|
|
|
11558
13312
|
"securityClearTotpHint": "Requires step-up",
|
|
11559
13313
|
"securityClearConfirm": "Type the username to confirm clearing 2FA",
|
|
11560
13314
|
"securityClearOk": "Cleared 2FA for {{name}}",
|
|
11561
|
-
"securitySelfNote": "To set up your own 2FA, open Security → My security."
|
|
13315
|
+
"securitySelfNote": "To set up your own 2FA, open Security → My security.",
|
|
13316
|
+
"cannotModifySelf": "You cannot suspend or demote the signed-in account",
|
|
13317
|
+
"cannotDeleteLastAdmin": "Cannot delete the last admin",
|
|
13318
|
+
"cannotDemoteLastAdmin": "Cannot suspend or demote the last admin",
|
|
13319
|
+
"lockSelfHint": "This is the signed-in account. Delete, suspend, and role change are blocked to prevent lock-out.",
|
|
13320
|
+
"lockLastAdminHint": "This is the last admin. Delete, suspend, and demotion are blocked.",
|
|
13321
|
+
"demoteAdminTitle": "Demote this admin?",
|
|
13322
|
+
"demoteAdminDesc": "This user will lose full admin access. Confirm only if another admin remains.",
|
|
13323
|
+
"quotaNonNeg": "Counts and quotas cannot be negative.",
|
|
13324
|
+
"diskQuotaHint": "Presets are GiB; custom box is MiB.",
|
|
13325
|
+
"bandwidthHint": "0 means unlimited."
|
|
13326
|
+
},
|
|
13327
|
+
"validators": {
|
|
13328
|
+
"title": "Validators (Beta)",
|
|
13329
|
+
"subtitle": "Install and manage L1 nodes on this host. Non-custodial — you keep the keys.",
|
|
13330
|
+
"beta": "Beta",
|
|
13331
|
+
"tab": {
|
|
13332
|
+
"nodes": "Nodes",
|
|
13333
|
+
"disk": "Disk",
|
|
13334
|
+
"stack": "Software",
|
|
13335
|
+
"about": "About"
|
|
13336
|
+
},
|
|
13337
|
+
"empty": {
|
|
13338
|
+
"title": "No validator nodes yet",
|
|
13339
|
+
"desc": "Create a testnet node in a few clicks."
|
|
13340
|
+
},
|
|
13341
|
+
"refresh": "Refresh",
|
|
13342
|
+
"software": {
|
|
13343
|
+
"engine": "Docker Engine",
|
|
13344
|
+
"engineDesc": "Validator nodes run as Compose projects. Install Docker here if it is missing. Image prune stays on the Docker page.",
|
|
13345
|
+
"client": "Client",
|
|
13346
|
+
"image": "Image",
|
|
13347
|
+
"present": "Local",
|
|
13348
|
+
"local": "Pulled",
|
|
13349
|
+
"missing": "Not pulled",
|
|
13350
|
+
"size": "Size",
|
|
13351
|
+
"usedBy": "Used by",
|
|
13352
|
+
"unused": "No instance",
|
|
13353
|
+
"pull": "Pull",
|
|
13354
|
+
"pulling": "Pull {{ref}}",
|
|
13355
|
+
"empty": "No pinned client images",
|
|
13356
|
+
"emptyDesc": "The catalog is empty. This should not happen.",
|
|
13357
|
+
"daemonDown": "Docker Engine is not running"
|
|
13358
|
+
},
|
|
13359
|
+
"disk": {
|
|
13360
|
+
"title": "Validator disk",
|
|
13361
|
+
"root": "Data directory",
|
|
13362
|
+
"free": "Free",
|
|
13363
|
+
"used": "Validator data",
|
|
13364
|
+
"fsUsed": "Filesystem used",
|
|
13365
|
+
"leftoverTitle": "Leftover data ({{count}})",
|
|
13366
|
+
"leftoverEmpty": "No leftover instance directories",
|
|
13367
|
+
"leftoverDesc": "Directories under the validators root that are not a store instance. Remove only after you confirm they are unused.",
|
|
13368
|
+
"leftoverRemove": "Remove",
|
|
13369
|
+
"leftoverRemoveTitle": "Delete leftover validator data?",
|
|
13370
|
+
"leftoverRemoveDesc": "Permanently delete {{path}} from disk. This is not a listed node.",
|
|
13371
|
+
"browseRoot": "Open in file browser",
|
|
13372
|
+
"none": "No instance data yet",
|
|
13373
|
+
"warn": "Disk usage is high (70%+)",
|
|
13374
|
+
"danger": "Disk usage is critical (85%+)",
|
|
13375
|
+
"autoClear": "Auto-clear the largest stopped instance when disk is critical (off by default)",
|
|
13376
|
+
"autoClearRisk": "Destructive: the largest stopped instance is deleted without a further prompt. Default is off. Check audit / logs after it fires.",
|
|
13377
|
+
"autoClearConfirmTitle": "Enable auto-clear?",
|
|
13378
|
+
"autoClearC1": "When disk is critical, the largest stopped instance is deleted without asking again.",
|
|
13379
|
+
"autoClearThreshold": "Trigger: filesystem use at or above 85%.",
|
|
13380
|
+
"autoClearCandidate": "Current candidate: {{id}}",
|
|
13381
|
+
"autoClearNone": "No stopped instance is a candidate right now."
|
|
13382
|
+
},
|
|
13383
|
+
"chain": {
|
|
13384
|
+
"eth": "Ethereum",
|
|
13385
|
+
"avax": "Avalanche",
|
|
13386
|
+
"near": "NEAR",
|
|
13387
|
+
"ada": "Cardano",
|
|
13388
|
+
"btc": "Bitcoin",
|
|
13389
|
+
"cosmos": "Cosmos Hub",
|
|
13390
|
+
"sui": "Sui",
|
|
13391
|
+
"aptos": "Aptos",
|
|
13392
|
+
"dot": "Polkadot",
|
|
13393
|
+
"sol": "Solana"
|
|
13394
|
+
},
|
|
13395
|
+
"network": {
|
|
13396
|
+
"hoodi": "Hoodi",
|
|
13397
|
+
"sepolia": "Sepolia",
|
|
13398
|
+
"mainnet": "Mainnet",
|
|
13399
|
+
"fuji": "Fuji",
|
|
13400
|
+
"testnet": "Testnet",
|
|
13401
|
+
"preview": "Preview",
|
|
13402
|
+
"preprod": "Preprod",
|
|
13403
|
+
"westend": "Westend"
|
|
13404
|
+
},
|
|
13405
|
+
"networkKind": {
|
|
13406
|
+
"testnet": "Testnet",
|
|
13407
|
+
"mainnet": "Mainnet",
|
|
13408
|
+
"mixed": "Mainnet + testnet"
|
|
13409
|
+
},
|
|
13410
|
+
"profile": {
|
|
13411
|
+
"minimal": "Minimal",
|
|
13412
|
+
"pruned": "Pruned",
|
|
13413
|
+
"validator-ready": "Validator-ready",
|
|
13414
|
+
"rpc": "RPC"
|
|
13415
|
+
},
|
|
13416
|
+
"profileHelp": {
|
|
13417
|
+
"title": "Profiles",
|
|
13418
|
+
"desc": "The four choices on wizard step 3 are mainly disk budget and role. Each chain shows its recommended size in the wizard. The panel never holds staking keys.",
|
|
13419
|
+
"minimal": "Smallest disk. Use for testnets or a first install. Not a full history, and not for a live staking validator.",
|
|
13420
|
+
"pruned": "Keeps recent chain state and drops older blocks (Pruned). More disk than Minimal, less than a full node. Use to follow the tip long-term.",
|
|
13421
|
+
"validatorReady": "Reserves more disk so you can later attest or propose as a validator. Generate keys offline yourself. Being offline or misconfigured can lose stake.",
|
|
13422
|
+
"rpc": "For this host or other services to query the chain. RPC listens on 127.0.0.1 by default and is not published to the internet."
|
|
13423
|
+
},
|
|
13424
|
+
"col": {
|
|
13425
|
+
"id": "ID",
|
|
13426
|
+
"chain": "Chain",
|
|
13427
|
+
"network": "Network",
|
|
13428
|
+
"profile": "Profile",
|
|
13429
|
+
"status": "Status",
|
|
13430
|
+
"disk": "Disk"
|
|
13431
|
+
},
|
|
13432
|
+
"cli": {
|
|
13433
|
+
"usage": "Usage: ysk-server validators list|chains|disk|get|status|logs|create|start|stop|restart|clear|upgrade|policy|mithril|prune|switch-network|snapshot|compose|settings [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--data-path P] [--rpc-port N] [--id ID] [--upgrade POLICY] [--confirm TOKEN] [--accept-low-disk] [--execute] [--json]"
|
|
13434
|
+
},
|
|
13435
|
+
"clients": {
|
|
13436
|
+
"el": "Execution client",
|
|
13437
|
+
"cl": "Consensus client"
|
|
13438
|
+
},
|
|
13439
|
+
"mithril": {
|
|
13440
|
+
"label": "Restore from Mithril snapshot first (recommended on testnet)",
|
|
13441
|
+
"action": "Restore with Mithril"
|
|
13442
|
+
},
|
|
13443
|
+
"errors": {
|
|
13444
|
+
"notFound": "Validator instance not found",
|
|
13445
|
+
"invalidId": "Invalid instance id",
|
|
13446
|
+
"diskLow": "Not enough free disk for this chain, network, and profile",
|
|
13447
|
+
"diskUnknownMainnet": "Cannot measure free disk; refusing mainnet create",
|
|
13448
|
+
"needDocker": "Docker Compose is required and was not found",
|
|
13449
|
+
"composeFailed": "docker compose failed",
|
|
13450
|
+
"needConfirm": "Clear requires confirm=instance id or CLEAR",
|
|
13451
|
+
"mithrilAdaOnly": "Mithril restore is only available for Cardano",
|
|
13452
|
+
"needMithrilConfirm": "Mithril requires confirm=instance id or MITHRIL",
|
|
13453
|
+
"mithrilBlocked": "Mithril docker run was blocked by the allowlist",
|
|
13454
|
+
"mithrilKey": "Could not load the Mithril genesis verification key",
|
|
13455
|
+
"mithrilFailed": "Mithril snapshot download failed",
|
|
13456
|
+
"pruneFailed": "Prune failed",
|
|
13457
|
+
"switchNeedStop": "Stop the node before switching network",
|
|
13458
|
+
"switchNeedClear": "Switching network clears chain data. Confirm with instance id or CLEAR",
|
|
13459
|
+
"composeMissing": "Compose file not found",
|
|
13460
|
+
"composeNotManaged": "Refusing to write a compose file that is not YSK-managed",
|
|
13461
|
+
"badDataPath": "Data path must be an absolute directory outside system paths",
|
|
13462
|
+
"portInUse": "That RPC port is already used by another validator instance",
|
|
13463
|
+
"snapshotUnsupported": "No allowlisted snapshot source for this chain",
|
|
13464
|
+
"snapshotLookup": "Could not resolve the official snapshot pointer",
|
|
13465
|
+
"needSnapshotConfirm": "Snapshot restore requires confirm=instance id or SNAPSHOT",
|
|
13466
|
+
"snapshotBlocked": "Snapshot docker run was blocked by the allowlist",
|
|
13467
|
+
"snapshotFailed": "Snapshot download or extract failed"
|
|
13468
|
+
},
|
|
13469
|
+
"notes": {
|
|
13470
|
+
"beta": "This feature is Beta. Host changes need root and YSK_EXECUTE=1.",
|
|
13471
|
+
"noKeys": "YSK Server never generates or stores staking keys.",
|
|
13472
|
+
"dockerSoon": "Install and start from this page wizard. Host changes need root and YSK_EXECUTE=1.",
|
|
13473
|
+
"dryCreate": "Wrote instance spec and compose (dry-run). Pass --execute and YSK_EXECUTE=1 to start containers.",
|
|
13474
|
+
"dryStart": "Start is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13475
|
+
"dryStop": "Stop is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13476
|
+
"dryClear": "Clear is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13477
|
+
"created": "Node created and compose started",
|
|
13478
|
+
"started": "Node started",
|
|
13479
|
+
"stopped": "Node stopped",
|
|
13480
|
+
"cleared": "Chain data cleared",
|
|
13481
|
+
"dryMithril": "Mithril restore is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13482
|
+
"mithril": "Mithril snapshot restored; node restarted",
|
|
13483
|
+
"dryPrune": "Prune is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13484
|
+
"pruned": "Unused project images pruned",
|
|
13485
|
+
"pruneProfile": "Client-native prune is the pruned/minimal profile. Recreate to change it.",
|
|
13486
|
+
"sameNetwork": "Already on that network",
|
|
13487
|
+
"drySwitch": "Network switch is dry-run.",
|
|
13488
|
+
"switched": "Network switched and chain data cleared",
|
|
13489
|
+
"dryCompose": "Would write compose.yml",
|
|
13490
|
+
"composeWrote": "Wrote compose.yml",
|
|
13491
|
+
"statsEmpty": "No running containers to measure",
|
|
13492
|
+
"autoClearNone": "No stopped instance to auto-clear",
|
|
13493
|
+
"drySnapshot": "Snapshot restore is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13494
|
+
"snapshotEthEl": "Restored ethPandaOps EL archive and reset CL for checkpoint sync",
|
|
13495
|
+
"snapshotEthCl": "Reset CL data for official checkpoint sync",
|
|
13496
|
+
"snapshotNear": "Wiped NEAR data; compose will re-init official genesis and epoch sync",
|
|
13497
|
+
"nativePrune": "Ran the client-native prune command",
|
|
13498
|
+
"dryDelete": "Delete is dry-run. Pass --execute and YSK_EXECUTE=1.",
|
|
13499
|
+
"deleted": "Node deleted",
|
|
13500
|
+
"leftoverRemoved": "Removed leftover {{path}}"
|
|
13501
|
+
},
|
|
13502
|
+
"create": "Create node",
|
|
13503
|
+
"wizard": {
|
|
13504
|
+
"title": "Create node",
|
|
13505
|
+
"stepOf": "Step {{n}} / {{total}}",
|
|
13506
|
+
"stepChain": "Chain",
|
|
13507
|
+
"stepNetwork": "Network",
|
|
13508
|
+
"stepProfile": "Profile",
|
|
13509
|
+
"stepSummary": "Summary",
|
|
13510
|
+
"needDocker": "Docker Engine is not installed. Install it first — this button stays disabled.",
|
|
13511
|
+
"diskNeed": "This profile needs about {{need}} · free {{free}}",
|
|
13512
|
+
"diskNeedNetwork": "Default (Minimal) for this network needs about {{need}} · free {{free}}",
|
|
13513
|
+
"profileHint": {
|
|
13514
|
+
"minimal": "Smallest sync — light disk, not for staking.",
|
|
13515
|
+
"pruned": "Keeps recent history only (Pruned). Smaller than archive, still usable for RPC.",
|
|
13516
|
+
"validator-ready": "Sized for a staking validator. Needs more disk than Minimal.",
|
|
13517
|
+
"rpc": "Public RPC node — not a staking validator."
|
|
13518
|
+
},
|
|
13519
|
+
"diskShort": "Not enough free disk for this chain / network / profile",
|
|
13520
|
+
"diskShortDetail": "Need {{need}} · free {{free}} · short {{short}}",
|
|
13521
|
+
"needCustomPath": "Enter an absolute data path",
|
|
13522
|
+
"previewId": "Node id",
|
|
13523
|
+
"previewCompose": "Compose project",
|
|
13524
|
+
"profileSeeAbout": "What each profile means is on the About tab.",
|
|
13525
|
+
"back": "Back",
|
|
13526
|
+
"next": "Next",
|
|
13527
|
+
"install": "Install",
|
|
13528
|
+
"mainnetWarn": "Mainnet needs a lot of free disk (ETH often 800 GiB+). Testnet is recommended.",
|
|
13529
|
+
"mainnetAck": "Create the mainnet node. I understand it needs a lot of disk, and a staking validator can lose stake if it is offline or misconfigured.",
|
|
13530
|
+
"lowDiskAcked": "Free disk is below the recommended size. You confirmed create anyway; sync may stop if the disk fills.",
|
|
13531
|
+
"heavyWarn": "This chain is heavy (large disk and high IOPS). Mainnet Solana typically needs 2 TiB+.",
|
|
13532
|
+
"memory": "Memory limit",
|
|
13533
|
+
"cpus": "CPU limit",
|
|
13534
|
+
"dataPath": "Data path",
|
|
13535
|
+
"rpcPort": "RPC port",
|
|
13536
|
+
"limitNone": "No limit",
|
|
13537
|
+
"rpcDefault": "Default",
|
|
13538
|
+
"customPath": "Use a custom data path",
|
|
13539
|
+
"installConfirmTitle": "Install this node?",
|
|
13540
|
+
"installConfirmDesc": "{{chain}} · {{network}} · {{profile}}. About {{disk}} of disk. The image pull can take a long time.",
|
|
13541
|
+
"installC1": "Several gigabytes of images may be downloaded.",
|
|
13542
|
+
"installC2": "You can cancel the panel task; already-pulled images are not deleted automatically.",
|
|
13543
|
+
"dockerAbout": "Docker Engine is required to install and start nodes.",
|
|
13544
|
+
"dockerAboutOk": "Docker Engine is installed.",
|
|
13545
|
+
"dockerAboutMissing": "Docker Engine is not installed. Open Docker to install it.",
|
|
13546
|
+
"rewriteCompose": "Rewrite compose",
|
|
13547
|
+
"rewriteComposeTitle": "Rewrite compose.yml from the current adapter?",
|
|
13548
|
+
"rewriteComposeDesc": "Overwrites the generated compose for {{id}} using the shipped flags for this chain.",
|
|
13549
|
+
"chainMeta": "{{disk}} min · {{clients}} clients"
|
|
13550
|
+
},
|
|
13551
|
+
"actions": {
|
|
13552
|
+
"detail": "Details",
|
|
13553
|
+
"start": "Start",
|
|
13554
|
+
"stop": "Stop",
|
|
13555
|
+
"restart": "Restart",
|
|
13556
|
+
"clear": "Clear",
|
|
13557
|
+
"upgrade": "Upgrade",
|
|
13558
|
+
"clearConfirm": "Type instance id or CLEAR",
|
|
13559
|
+
"prune": "Prune",
|
|
13560
|
+
"switchNetwork": "Switch network",
|
|
13561
|
+
"removeUnit": "Also remove compose / instance record",
|
|
13562
|
+
"restoreAfter": "Restore snapshot after clear",
|
|
13563
|
+
"delete": "Delete",
|
|
13564
|
+
"deleteTitle": "Delete {{id}}",
|
|
13565
|
+
"deleteDesc": "This removes the node from the panel.",
|
|
13566
|
+
"deleteC1": "Docker Compose is stopped and removed",
|
|
13567
|
+
"deleteC2": "Chain data on disk is deleted",
|
|
13568
|
+
"deleteC3": "The instance record is removed",
|
|
13569
|
+
"pruneTitle": "Prune unused images",
|
|
13570
|
+
"pruneDesc": "Type the instance id to prune unused Compose images for this node.",
|
|
13571
|
+
"pruneC1": "Unused images labelled for this Compose project are deleted.",
|
|
13572
|
+
"clearTitle": "Clear {{id}}",
|
|
13573
|
+
"clearC1": "Chain data on disk is deleted.",
|
|
13574
|
+
"clearC2": "The instance stays in the panel, stopped and empty.",
|
|
13575
|
+
"switchTitle": "Switch network",
|
|
13576
|
+
"switchC1": "The node is stopped and chain data is wiped before the new network is written."
|
|
13577
|
+
},
|
|
13578
|
+
"policy": {
|
|
13579
|
+
"label": "Upgrade policy",
|
|
13580
|
+
"manual": "Manual",
|
|
13581
|
+
"notify": "Notify",
|
|
13582
|
+
"auto-safe": "Auto (safe)",
|
|
13583
|
+
"auto-all": "Auto (all)"
|
|
13584
|
+
},
|
|
13585
|
+
"logs": {
|
|
13586
|
+
"empty": "No logs yet",
|
|
13587
|
+
"follow": "Follow logs"
|
|
13588
|
+
},
|
|
13589
|
+
"compose": {
|
|
13590
|
+
"label": "Compose file",
|
|
13591
|
+
"save": "Save compose"
|
|
13592
|
+
},
|
|
13593
|
+
"snapshot": {
|
|
13594
|
+
"action": "Restore snapshot",
|
|
13595
|
+
"mithril": "Cardano uses Mithril for certified snapshot restore.",
|
|
13596
|
+
"eth": "Ethereum mainnet uses official checkpoint sync on the consensus client. EL continues snap sync.",
|
|
13597
|
+
"ethEl": "Hoodi/Sepolia can restore an ethPandaOps EL archive, then checkpoint-sync the CL.",
|
|
13598
|
+
"avax": "Avalanche uses state-sync in the compose profile.",
|
|
13599
|
+
"near": "Official free NEAR tarball snapshots were retired. Restore wipes data and uses official genesis plus epoch sync.",
|
|
13600
|
+
"none": "No snapshot source is configured for this chain."
|
|
13601
|
+
},
|
|
13602
|
+
"stake": {
|
|
13603
|
+
"title": "Prepare for staking (you keep the keys)",
|
|
13604
|
+
"offlineKeys": "Generate keys offline. The panel never stores them.",
|
|
13605
|
+
"deposit": "Complete deposit / registration on the official launchpad.",
|
|
13606
|
+
"withdrawal": "Set withdrawal credentials yourself.",
|
|
13607
|
+
"monitor": "Watch disk, peers, and upgrade badges on this page."
|
|
13608
|
+
},
|
|
13609
|
+
"alerts": {
|
|
13610
|
+
"diskTitle": "Validator disk critical",
|
|
13611
|
+
"diskBody": "Free space on the validator data volume is critically low.",
|
|
13612
|
+
"upgradeTitle": "Validator upgrade available",
|
|
13613
|
+
"upgradeBody": "One or more node clients have a newer pinned version.",
|
|
13614
|
+
"syncTitle": "Validator node needs attention",
|
|
13615
|
+
"syncBody": "A node has been syncing for more than 6 hours or reported an error.",
|
|
13616
|
+
"rollbackTitle": "Validator upgrade rolled back",
|
|
13617
|
+
"rollbackBody": "Upgrade of {{id}} failed the health check and was rolled back."
|
|
13618
|
+
},
|
|
13619
|
+
"upgrade": {
|
|
13620
|
+
"changelog": "Changelog"
|
|
13621
|
+
},
|
|
13622
|
+
"readiness": {
|
|
13623
|
+
"dockerTitle": "Docker for validator nodes",
|
|
13624
|
+
"dockerOk": "{{count}} validator instance(s); Docker is installed",
|
|
13625
|
+
"dockerMissing": "Validator instances exist but the docker binary was not found"
|
|
13626
|
+
},
|
|
13627
|
+
"detail": {
|
|
13628
|
+
"status": "Status",
|
|
13629
|
+
"sync": "Sync",
|
|
13630
|
+
"peers": "Peers",
|
|
13631
|
+
"version": "Version",
|
|
13632
|
+
"access": "Access",
|
|
13633
|
+
"upgrade": "Updates",
|
|
13634
|
+
"upgradeHint": "How this node tracks client versions.",
|
|
13635
|
+
"network": "Network",
|
|
13636
|
+
"networkHint": "Switching network stops the node and clears chain data. Confirm under Clear data first.",
|
|
13637
|
+
"maintain": "Maintenance",
|
|
13638
|
+
"danger": "Clear data",
|
|
13639
|
+
"dangerHint": "Type the instance id or CLEAR. This deletes chain data on disk.",
|
|
13640
|
+
"compose": "Compose",
|
|
13641
|
+
"logs": "Logs"
|
|
13642
|
+
},
|
|
13643
|
+
"state": {
|
|
13644
|
+
"unknown": "Unknown",
|
|
13645
|
+
"stopped": "Stopped",
|
|
13646
|
+
"starting": "Starting",
|
|
13647
|
+
"running": "Running",
|
|
13648
|
+
"syncing": "Syncing",
|
|
13649
|
+
"error": "Error"
|
|
13650
|
+
}
|
|
11562
13651
|
},
|
|
11563
13652
|
"vnc": {
|
|
11564
13653
|
"pageDesc": "VNC server & client",
|
|
@@ -11681,15 +13770,19 @@
|
|
|
11681
13770
|
},
|
|
11682
13771
|
"installHint": "TigerVNC → noVNC; XFCE optional",
|
|
11683
13772
|
"needTigerVnc": "TigerVNC required",
|
|
13773
|
+
"needXfceFirst": "Install XFCE first",
|
|
13774
|
+
"needSessionRunning": "Session is not running — start it first",
|
|
11684
13775
|
"needNovnc": "noVNC required",
|
|
11685
13776
|
"needXfce": "XFCE (optional)",
|
|
11686
13777
|
"needViewer": "Viewer (optional)",
|
|
11687
13778
|
"needViewerOrNovnc": "Viewer or noVNC",
|
|
11688
13779
|
"settingsHint": "Defaults for new accounts",
|
|
13780
|
+
"settingsNeedStack": "These defaults apply when TigerVNC (and XFCE if selected) are installed. Install them on the Install tab first.",
|
|
13781
|
+
"clientNeedNovnc": "Open in browser needs noVNC. Install it on the Install tab before adding remotes you expect to open here.",
|
|
11689
13782
|
"defaultDesktop": "Default desktop",
|
|
11690
13783
|
"defaultGeometry": "Default resolution",
|
|
11691
13784
|
"defaultDepth": "Colour depth",
|
|
11692
|
-
"defaultRfbBind": "RFB listen",
|
|
13785
|
+
"defaultRfbBind": "VNC (RFB) listen range",
|
|
11693
13786
|
"defaultAutostart": "Autostart sessions",
|
|
11694
13787
|
"autostartLabel": "Start on boot",
|
|
11695
13788
|
"settingsSaved": "VNC defaults saved",
|
|
@@ -11731,6 +13824,13 @@
|
|
|
11731
13824
|
"start": "Start",
|
|
11732
13825
|
"stop": "Stop",
|
|
11733
13826
|
"startAfterCreate": "Start after create",
|
|
13827
|
+
"hostnameBroken": "This host cannot resolve its own hostname ({{hostname}}). Session start will fail.",
|
|
13828
|
+
"hostnameBrokenIdle": "No VNC sessions yet. Hostname {{hostname}} does not resolve — you can write /etc/hosts later if you create a session.",
|
|
13829
|
+
"hostnameFix": "Write hostname to /etc/hosts",
|
|
13830
|
+
"hostnameFixTitle": "Append this line to /etc/hosts?",
|
|
13831
|
+
"hostnameFixDesc": "{{line}}",
|
|
13832
|
+
"hostnameFixDone": "Hostname /etc/hosts updated",
|
|
13833
|
+
"startAfterCreateBlocked": "Disabled until the hostname resolves",
|
|
11734
13834
|
"colName": "Name",
|
|
11735
13835
|
"colLinuxUser": "Linux user",
|
|
11736
13836
|
"colDisplay": "Display / port",
|
|
@@ -11756,12 +13856,16 @@
|
|
|
11756
13856
|
"nextPage": "Next",
|
|
11757
13857
|
"pageOf": "Page {{page}} / {{total}} · {{count}}",
|
|
11758
13858
|
"deleteAccountTitle": "Delete VNC account?",
|
|
11759
|
-
"deleteAccountDesc": "Remove control-plane account {{name}} ({{user}}).
|
|
11760
|
-
"deleteAccountC1": "VNC session for this
|
|
11761
|
-
"deleteAccountC2": "
|
|
11762
|
-
"deleteAccountC3User": "Linux user home will be removed
|
|
11763
|
-
"deleteAccountC3Keep": "Linux user
|
|
13859
|
+
"deleteAccountDesc": "Remove control-plane account “{{name}}” (Linux user {{user}}). The VNC session for this display stops first.",
|
|
13860
|
+
"deleteAccountC1": "The VNC session for this account will be stopped first.",
|
|
13861
|
+
"deleteAccountC2": "The panel VNC account record will be removed.",
|
|
13862
|
+
"deleteAccountC3User": "The Linux user and home directory will also be removed. If the host refuses, the panel reports failure and the user stays.",
|
|
13863
|
+
"deleteAccountC3Keep": "The Linux user stays on the host; only the panel account is removed.",
|
|
11764
13864
|
"removeLinuxUser": "Also remove Linux user and home directory",
|
|
13865
|
+
"deleteKeepUserWarn": "The Linux user will stay on the host as an orphan. You must clean it up later.",
|
|
13866
|
+
"bindRfbLine": "RFB {{bind}} :{{port}}",
|
|
13867
|
+
"bindNovncLine": "noVNC 127.0.0.1:{{port}}",
|
|
13868
|
+
"bindNovncHint": "noVNC listens on localhost. The desktop is reached through this panel, not the public internet, unless RFB bind is all interfaces.",
|
|
11765
13869
|
"connection": "Connect",
|
|
11766
13870
|
"connectionTitle": "Connection materials",
|
|
11767
13871
|
"connectionDesc": "How clients reach {{name}}",
|
|
@@ -11804,7 +13908,8 @@
|
|
|
11804
13908
|
"stackMissingShort": "Not installed",
|
|
11805
13909
|
"editClientTitle": "Edit remote client",
|
|
11806
13910
|
"editClientDesc": "Update path, hosts, and optional stored password.",
|
|
11807
|
-
"clientUpdated": "Client profile updated"
|
|
13911
|
+
"clientUpdated": "Client profile updated",
|
|
13912
|
+
"rememberNeedPassword": "Enter a password first."
|
|
11808
13913
|
},
|
|
11809
13914
|
"vpn": {
|
|
11810
13915
|
"pageDesc": "VPN server & client",
|
|
@@ -11869,6 +13974,11 @@
|
|
|
11869
13974
|
"ensureServer": "Apply server",
|
|
11870
13975
|
"openFirewall": "Open {{port}}/{{proto}}",
|
|
11871
13976
|
"presets": "Port presets",
|
|
13977
|
+
"portHint": {
|
|
13978
|
+
"51820": "Default WireGuard listen port",
|
|
13979
|
+
"51821": "Alternate WireGuard listen port",
|
|
13980
|
+
"51822": "Second alternate WireGuard listen port"
|
|
13981
|
+
},
|
|
11872
13982
|
"proto": "Protocol",
|
|
11873
13983
|
"protoUdp": "UDP",
|
|
11874
13984
|
"protoTcp": "TCP",
|
|
@@ -11878,8 +13988,16 @@
|
|
|
11878
13988
|
"peersTitleOvpn": "Client configs",
|
|
11879
13989
|
"peersTitleSs": "Access keys",
|
|
11880
13990
|
"peerName": "Name",
|
|
11881
|
-
"peerNamePlaceholder": "
|
|
13991
|
+
"peerNamePlaceholder": "office-laptop",
|
|
11882
13992
|
"addPeer": "+ Add",
|
|
13993
|
+
"installEngineFirst": "Install the VPN engine first",
|
|
13994
|
+
"needServerRunning": "{{engine}} is not running — apply the server first",
|
|
13995
|
+
"engineSummarySoftware": "{{installed}} installed · {{running}} running",
|
|
13996
|
+
"privateKeyOnce": "The client private key is shown only here. Download or copy it now — it cannot be recovered later.",
|
|
13997
|
+
"showPrivateKey": "Show private key",
|
|
13998
|
+
"hidePrivateKey": "Hide private key",
|
|
13999
|
+
"deletePeerTitle": "Delete peer {{name}}?",
|
|
14000
|
+
"deletePeerDesc": "Remove {{name}} ({{address}}). The client disconnects immediately and the config cannot be restored. The WireGuard server stays up.",
|
|
11883
14001
|
"addPeerWg": "+ Add peer",
|
|
11884
14002
|
"addPeerOvpn": "+ Add client",
|
|
11885
14003
|
"addPeerSs": "+ Add key",
|
|
@@ -11935,6 +14053,8 @@
|
|
|
11935
14053
|
"lanCidrs": "LAN networks",
|
|
11936
14054
|
"customCidr": "CIDR",
|
|
11937
14055
|
"addCidr": "Add"
|
|
11938
|
-
}
|
|
14056
|
+
},
|
|
14057
|
+
"engineNotInstalled": "This VPN engine is not installed on the host.",
|
|
14058
|
+
"serverNotListening": "Server unit is not active. UDP/TCP {{port}} may be closed."
|
|
11939
14059
|
}
|
|
11940
14060
|
}
|