This commit is contained in:
Mateusz Gruszczyński committed 2026-10-08 11:27:18 +02:00
1 parent d940f9995f
commit 65e082b9d1
61 files changed
+1225 -581

No files matched your search

+16 -3
View File
@@ -1690,14 +1690,14 @@
"cacheTabCold": "Cold cache",
"cacheTabDiagnostics": "Static & diagnostics",
"certificateApiTitle": "Certificate API",
"certificateApiHelp": "Create separate Key ID + Bearer Token credentials for certificate deploy/reload automation. Tokens cannot read configuration or use other administration APIs.",
"certificateApiHelp": "Create separate Key ID + Bearer Token credentials for certificate automation. New tokens are reload-only by default and are restricted to the listed certificate IDs. Enable deploy only for automation that must upload certificate material.",
"certificateApiKeyId": "Key ID",
"certificateApiToken": "Bearer token (optional custom value)",
"certificateApiTokenHelp": "Leave the field empty to generate a strong token. Each cleartext token is shown only once; RustProxy stores only its hash.",
"certificateApiRotate": "Generate / rotate token",
"certificateApiRevoke": "Revoke token",
"certificateApiOneTimeToken": "Copy this token now",
"certificateApiCurlHelp": "External automation sends the Key ID header and Bearer token to the certificate deploy/reload endpoints over HTTPS (or loopback HTTP).",
"certificateApiCurlHelp": "External automation sends the Key ID header and Bearer token over HTTPS (or loopback HTTP). Reload tokens must use the targeted /api/certificates/{id}/reload endpoint; a token cannot call the global reload endpoint.",
"certificateApiUnknown": "Loading certificate API status…",
"certificateApiConfigured": "Certificate API enabled",
"certificateApiDisabled": "Certificate API disabled",
@@ -1721,6 +1721,14 @@
"connectionActivity": "CONNECTION ACTIVITY",
"reloadCertificate": "Reload certificate",
"certificateApiComment": "Comment",
"certificateApiCertificateIds": "Allowed certificate IDs",
"certificateApiCertificateIdsHelp": "One or more certificate IDs separated by commas or new lines. The token is rejected for every other certificate ID.",
"certificateApiCertificateIdsRequired": "Enter at least one certificate ID for this token.",
"certificateApiAllowDeploy": "Also allow deploy",
"certificateApiAllowDeployHelp": "Leave disabled for Certbot/acme.sh renewal hooks. Reload-only is the recommended least-privilege mode.",
"certificateApiScopeReloadOnly": "reload only",
"certificateApiScopeDeployReload": "deploy + reload",
"certificateApiAllowedIds": "allowed IDs",
"certificateApiConfiguredCount": "Certificate API tokens: {count} / {max}",
"certificateApiNeverUsed": "never used",
"certificateApiRevokeAll": "Revoke all tokens",
@@ -1729,6 +1737,10 @@
"certificate_api.invalid_comment": "Certificate API comments must be at most 256 characters and contain no control characters.",
"certificate_api.limit_reached": "The Certificate API token limit has been reached.",
"certificate_api.not_found": "Certificate API token not found.",
"certificate_api.invalid_certificate_ids": "Certificate API tokens require 1-32 valid certificate IDs.",
"certificate_api.target_required": "Certificate API tokens cannot reload every certificate at once; use the targeted certificate reload endpoint.",
"certificate_api.certificate_forbidden": "This Certificate API token is not allowed to operate on that certificate ID.",
"certificate_api.deploy_forbidden": "This Certificate API token is reload-only. Rotate it with deploy permission only if upload/deploy automation is required.",
"networkInterfacesVisibleCount": "{visible} / {total} interfaces",
"hideMetric": "Hide",
"showMetric": "Show",
@@ -2187,7 +2199,8 @@
"certificateSourceManaged": "RustProxy certificate directory (<data-dir>/certs)",
"certificateSourceExternal": "External files (absolute paths)",
"certificateSourceManagedHelp": "Enter filenames only, for example app.pem and app.key. RustProxy loads them from <data-dir>/certs (normally /var/lib/rustproxy/certs for a packaged service).",
"certificateSourceExternalHelp": "Enter absolute server paths. Certbot example: /etc/letsencrypt/live/example.com/fullchain.pem and /etc/letsencrypt/live/example.com/privkey.pem. Certbot live/ symlinks are resolved again on every reload. The rustproxy service user needs directory traversal and file read access; external private keys may use 0600 when owned by the service or 0640 with a restricted group, never world access.",
"certificateSourceExternalHelp": "Enter absolute server paths. Certbot example: /etc/letsencrypt/live/example.com/fullchain.pem and /etc/letsencrypt/live/example.com/privkey.pem. live/ symlinks are resolved on every reload. POSIX ACL read access is supported; RustProxy does not require an exact chmod. The private key must not be world-readable or group/world-writable, and the path must stay under root- or rustproxy-owned non-writable directories.",
"certificateExternalAclExample": "ACL example (grant traversal, not directory read):\nsetfacl -m u:rustproxy:--x /etc/ssl/\nsetfacl -m u:rustproxy:--x /etc/letsencrypt/ /etc/letsencrypt/live/ /etc/letsencrypt/archive/\nsetfacl -m u:rustproxy:--x /etc/letsencrypt/live/example.com/ /etc/letsencrypt/archive/example.com/\nsetfacl -m u:rustproxy:r-- /etc/letsencrypt/archive/example.com/fullchain*.pem /etc/letsencrypt/archive/example.com/privkey*.pem\nAfter renewal, reapply read ACL to the current resolved files before API reload:\nsetfacl -m u:rustproxy:r-- \"$(readlink -f /etc/letsencrypt/live/example.com/fullchain.pem)\" \"$(readlink -f /etc/letsencrypt/live/example.com/privkey.pem)\"",
"certificateExternalFiles": "External file paths"
}
}
+16 -3
View File
@@ -1690,14 +1690,14 @@
"cacheTabCold": "Cold cache",
"cacheTabDiagnostics": "Statyczne i diagnostyka",
"certificateApiTitle": "API certyfikatów",
"certificateApiHelp": "Twórz osobne poświadczenia Key ID + Bearer Token dla automatyzacji wdrażania i przeładowywania certyfikatów. Tokeny nie dają dostępu do konfiguracji ani pozostałych API administracyjnych.",
"certificateApiHelp": "Twórz osobne poświadczenia Key ID + Bearer Token dla automatyzacji certyfikatów. Nowe tokeny są domyślnie tylko do reload i są ograniczone do wskazanych ID certyfikatów. Włącz deploy tylko dla automatyzacji, która musi wysyłać materiał certyfikatu.",
"certificateApiKeyId": "Key ID",
"certificateApiToken": "Bearer token (opcjonalna własna wartość)",
"certificateApiTokenHelp": "Pozostaw pole puste, aby wygenerować silny token. Jawna wartość każdego tokenu jest pokazywana tylko raz; RustProxy zapisuje wyłącznie jego hash.",
"certificateApiRotate": "Generuj / obróć token",
"certificateApiRevoke": "Unieważnij token",
"certificateApiOneTimeToken": "Skopiuj ten token teraz",
"certificateApiCurlHelp": "Automatyzacja zewnętrzna wysyła nagłówek Key ID i Bearer Token do endpointów deploy/reload przez HTTPS (lub HTTP po loopback).",
"certificateApiCurlHelp": "Automatyzacja zewnętrzna wysyła Key ID i Bearer Token przez HTTPS (lub HTTP po loopback). Token reload musi używać /api/certificates/{id}/reload; token API nie może wywołać globalnego reload wszystkich certyfikatów.",
"certificateApiUnknown": "Ładowanie statusu API certyfikatów…",
"certificateApiConfigured": "API certyfikatów włączone",
"certificateApiDisabled": "API certyfikatów wyłączone",
@@ -1721,6 +1721,14 @@
"connectionActivity": "AKTYWNOŚĆ POŁĄCZEŃ",
"reloadCertificate": "Przeładuj certyfikat",
"certificateApiComment": "Komentarz",
"certificateApiCertificateIds": "Dozwolone ID certyfikatów",
"certificateApiCertificateIdsHelp": "Podaj jedno lub więcej ID certyfikatów oddzielonych przecinkiem lub nową linią. Dla każdego innego ID token zostanie odrzucony.",
"certificateApiCertificateIdsRequired": "Podaj co najmniej jedno ID certyfikatu dla tego tokenu.",
"certificateApiAllowDeploy": "Zezwól także na deploy",
"certificateApiAllowDeployHelp": "Dla hooka odnowienia Certbot/acme.sh pozostaw wyłączone. Tryb tylko reload jest zalecanym wariantem least-privilege.",
"certificateApiScopeReloadOnly": "tylko reload",
"certificateApiScopeDeployReload": "deploy + reload",
"certificateApiAllowedIds": "dozwolone ID",
"certificateApiConfiguredCount": "Tokeny API certyfikatów: {count} / {max}",
"certificateApiNeverUsed": "nigdy nie użyty",
"certificateApiRevokeAll": "Unieważnij wszystkie tokeny",
@@ -1729,6 +1737,10 @@
"certificate_api.invalid_comment": "Komentarz tokenu API certyfikatów może mieć maksymalnie 256 znaków i nie może zawierać znaków sterujących.",
"certificate_api.limit_reached": "Osiągnięto limit tokenów API certyfikatów.",
"certificate_api.not_found": "Nie znaleziono tokenu API certyfikatów.",
"certificate_api.invalid_certificate_ids": "Token API certyfikatów wymaga 1-32 poprawnych ID certyfikatów.",
"certificate_api.target_required": "Token API certyfikatów nie może przeładować wszystkich certyfikatów naraz; użyj endpointu reload dla konkretnego ID.",
"certificate_api.certificate_forbidden": "Ten token API certyfikatów nie ma dostępu do wskazanego ID certyfikatu.",
"certificate_api.deploy_forbidden": "Ten token API certyfikatów ma tylko uprawnienie reload. Włącz deploy przy rotacji wyłącznie, jeśli automatyzacja musi wysyłać certyfikat.",
"networkInterfacesVisibleCount": "{visible} / {total} interfejsów",
"hideMetric": "Ukryj",
"showMetric": "Pokaż",
@@ -2187,7 +2199,8 @@
"certificateSourceManaged": "Katalog certyfikatów RustProxy (<data-dir>/certs)",
"certificateSourceExternal": "Pliki zewnętrzne (pełne ścieżki)",
"certificateSourceManagedHelp": "Podaj tylko nazwy plików, np. app.pem i app.key. RustProxy ładuje je z <data-dir>/certs (przy instalacji pakietowej zwykle /var/lib/rustproxy/certs).",
"certificateSourceExternalHelp": "Podaj pełne ścieżki na serwerze. Przykład Certbota: /etc/letsencrypt/live/example.com/fullchain.pem oraz /etc/letsencrypt/live/example.com/privkey.pem. Symlinki Certbota w live/ są rozwiązywane ponownie przy każdym przeładowaniu. Użytkownik usługi rustproxy musi mieć prawo przejścia przez katalogi i odczytu plików; zewnętrzny klucz może mieć 0600, gdy należy do usługi, albo 0640 z ograniczoną grupą, nigdy dostęp dla innych.",
"certificateSourceExternalHelp": "Podaj pełne ścieżki na serwerze. Przykład Certbota: /etc/letsencrypt/live/example.com/fullchain.pem oraz /etc/letsencrypt/live/example.com/privkey.pem. Symlinki live/ są rozwiązywane przy każdym reloadzie. Odczyt przez POSIX ACL jest obsługiwany i RustProxy nie wymaga konkretnego chmod. Klucz prywatny nie może być czytelny dla innych ani zapisywalny przez grupę/innych, a katalogi ścieżki muszą być własnością root lub rustproxy i nie mogą być zapisywalne przez grupę/innych.",
"certificateExternalAclExample": "Przykład ACL (prawo przejścia bez listowania katalogu):\nsetfacl -m u:rustproxy:--x /etc/ssl/\nsetfacl -m u:rustproxy:--x /etc/letsencrypt/ /etc/letsencrypt/live/ /etc/letsencrypt/archive/\nsetfacl -m u:rustproxy:--x /etc/letsencrypt/live/example.com/ /etc/letsencrypt/archive/example.com/\nsetfacl -m u:rustproxy:r-- /etc/letsencrypt/archive/example.com/fullchain*.pem /etc/letsencrypt/archive/example.com/privkey*.pem\nPo odnowieniu nadaj odczyt bieżącym plikom docelowym przed reloadem API:\nsetfacl -m u:rustproxy:r-- \"$(readlink -f /etc/letsencrypt/live/example.com/fullchain.pem)\" \"$(readlink -f /etc/letsencrypt/live/example.com/privkey.pem)\"",
"certificateExternalFiles": "Zewnętrzne ścieżki plików"
}
}