172 lines
9.4 KiB
PHP
172 lines
9.4 KiB
PHP
<?php
|
|
|
|
// Modal dialogs (wire-elements/modal). German = source of truth (R16).
|
|
// Keys grouped by modal via sub-key prefixes. Shared strings (Speichern, Abbrechen,
|
|
// Schließen, Hinzufügen, Anwenden, „Server nicht gefunden.", …) come from common.*.
|
|
return [
|
|
// ── Add SSH key ───────────────────────────────────────────────────────
|
|
'add_ssh_key' => [
|
|
'title' => 'SSH-Schlüssel hinzufügen',
|
|
'subtitle_before' => 'Öffentlichen Schlüssel einfügen — er wird in',
|
|
'subtitle_after' => 'ergänzt.',
|
|
'public_key_label' => 'Öffentlicher Schlüssel',
|
|
'generate' => 'Neues Paar generieren',
|
|
'generating' => 'generiere…',
|
|
'public_key_placeholder' => 'ssh-ed25519 AAAA… kommentar — oder oben generieren',
|
|
'private_key_warning' => 'Privater Schlüssel — erscheint nur jetzt, sicher speichern.',
|
|
'notify_added' => 'SSH-Schlüssel hinzugefügt.',
|
|
],
|
|
|
|
// ── Create server ─────────────────────────────────────────────────────
|
|
'create_server' => [
|
|
'title' => 'Server hinzufügen',
|
|
'subtitle' => 'Neuen Host in die Flotte aufnehmen und den SSH-Zugang im verschlüsselten Tresor hinterlegen.',
|
|
'name_label' => 'Name',
|
|
'name_placeholder' => 'z. B. Prod-Web-01',
|
|
'ip_host_label' => 'IP/Host',
|
|
'ip_host_placeholder' => '10.10.90.10 oder host.example.com',
|
|
'ssh_port_label' => 'SSH-Port',
|
|
'user_label' => 'Benutzer',
|
|
'auth_label' => 'Authentifizierung',
|
|
'auth_password' => 'Passwort',
|
|
'auth_key' => 'Privater Schlüssel',
|
|
'secret_key_label' => 'Privater Schlüssel (PEM)',
|
|
'secret_password_label' => 'Passwort',
|
|
'key_placeholder' => '-----BEGIN OPENSSH PRIVATE KEY-----',
|
|
'passphrase_label' => 'Passphrase (optional)',
|
|
'passphrase_placeholder' => 'leer = keine',
|
|
'credential_name_label' => 'Zugangs-Name (optional)',
|
|
'credential_name_placeholder' => 'z. B. Root-Login · Deploy-User',
|
|
'validation_ip_or_host' => 'Bitte eine gültige IP-Adresse oder einen Hostnamen angeben.',
|
|
'attr_name' => 'Name',
|
|
'attr_ip' => 'IP/Host',
|
|
'attr_ssh_port' => 'SSH-Port',
|
|
'attr_user' => 'Benutzer',
|
|
'attr_auth' => 'Authentifizierung',
|
|
'attr_secret_key' => 'Privater Schlüssel',
|
|
'attr_secret_password' => 'Passwort',
|
|
'attr_credential_name' => 'Zugangs-Name',
|
|
'notify_added' => 'Server hinzugefügt.',
|
|
],
|
|
|
|
// ── Edit credential ───────────────────────────────────────────────────
|
|
'edit_credential' => [
|
|
'title' => 'SSH-Zugang',
|
|
'subtitle_before' => 'Hier den Zugang hinterlegen — z. B.',
|
|
'subtitle_after' => 'für volle Steuerung (systemctl, Journal).',
|
|
'name_label' => 'Name (optional)',
|
|
'name_placeholder' => 'z. B. Prod-Server X · Backup-User',
|
|
'user_label' => 'Benutzer',
|
|
'auth_label' => 'Authentifizierung',
|
|
'auth_password' => 'Passwort',
|
|
'auth_key' => 'Privater Schlüssel',
|
|
'secret_key_label' => 'Privater Schlüssel (PEM)',
|
|
'secret_password_label' => 'Passwort',
|
|
'key_placeholder' => '-----BEGIN OPENSSH PRIVATE KEY-----',
|
|
'passphrase_label' => 'Passphrase (optional)',
|
|
'passphrase_placeholder' => 'leer = keine',
|
|
'error_required' => 'Benutzer und Passwort/Schlüssel sind erforderlich.',
|
|
'error_name_too_long' => 'Name darf höchstens 120 Zeichen lang sein.',
|
|
'notify_saved' => 'Zugangsdaten gespeichert.',
|
|
],
|
|
|
|
// ── fail2ban: ban IP ──────────────────────────────────────────────────
|
|
'fail2ban_ban' => [
|
|
'title' => 'IP manuell sperren',
|
|
'subtitle' => 'Sperrt eine IP-Adresse sofort im gewählten Jail. Loopback und der Clusev-Zugang können nicht gesperrt werden.',
|
|
'jail_label' => 'Jail',
|
|
'ip_label' => 'IP-Adresse',
|
|
'ip_placeholder' => 'z. B. 203.0.113.10',
|
|
'submit' => 'IP sperren',
|
|
'error_ban_failed' => 'Sperren fehlgeschlagen.',
|
|
'notify_banned' => 'IP :ip gesperrt.',
|
|
],
|
|
|
|
// ── fail2ban: config ──────────────────────────────────────────────────
|
|
'fail2ban_config' => [
|
|
'title' => 'fail2ban konfigurieren',
|
|
'subtitle' => 'Legt fest, wann fail2ban auf :server eine IP sperrt und wie lange. Wiederholte fehlgeschlagene Anmeldungen innerhalb des Zeitfensters führen zur Sperre.',
|
|
'this_server' => 'diesem Server',
|
|
'bantime_label' => 'Sperrdauer',
|
|
'bantime_placeholder' => 'z. B. 600, 10m, 1h, -1 = dauerhaft',
|
|
'maxretry_label' => 'Max. Fehlversuche',
|
|
'findtime_label' => 'Zeitfenster',
|
|
'findtime_placeholder' => 'z. B. 600, 10m, 1h',
|
|
'error_read_locked' => 'Aktuelle Konfiguration konnte nicht gelesen werden — Speichern ist gesperrt.',
|
|
'error_bantime_invalid' => 'Ungültige Dauer (z. B. 600, 10m, 1h, -1 für dauerhaft).',
|
|
'error_findtime_invalid' => 'Ungültige Dauer (z. B. 600, 10m, 1h).',
|
|
'error_save_failed' => 'Speichern fehlgeschlagen. :output',
|
|
'attr_bantime' => 'Sperrdauer',
|
|
'attr_maxretry' => 'Max. Fehlversuche',
|
|
'attr_findtime' => 'Zeitfenster',
|
|
'notify_saved' => 'fail2ban konfiguriert.',
|
|
],
|
|
|
|
// ── File editor ───────────────────────────────────────────────────────
|
|
'file_editor' => [
|
|
'too_big' => 'Datei zu groß zum Bearbeiten (über 256 KB) — bitte herunterladen.',
|
|
'binary' => 'Binärdatei — kann nicht im Editor angezeigt werden.',
|
|
'notify_saved' => '„:name“ gespeichert.',
|
|
],
|
|
|
|
// ── Firewall rule ─────────────────────────────────────────────────────
|
|
'firewall_rule' => [
|
|
'title' => 'Firewall-Regel hinzufügen',
|
|
'subtitle_firewalld' => 'Öffnet einen Port in der Standard-Zone von firewalld.',
|
|
'subtitle_ufw' => 'Neue UFW-Regel. Quelle leer lassen = von überall.',
|
|
'action_label' => 'Aktion',
|
|
'action_allow' => 'Erlauben (allow)',
|
|
'action_deny' => 'Verwerfen (deny)',
|
|
'action_reject' => 'Ablehnen (reject)',
|
|
'action_limit' => 'Begrenzen (limit)',
|
|
'port_label' => 'Port',
|
|
'port_optional' => '(optional)',
|
|
'port_placeholder' => 'z. B. 8080',
|
|
'proto_label' => 'Protokoll',
|
|
'proto_both' => 'Beide',
|
|
'source_label' => 'Quelle (optional)',
|
|
'source_placeholder' => 'IP oder CIDR, z. B. 10.0.0.0/8',
|
|
'error_add_failed' => 'Regel konnte nicht hinzugefügt werden.',
|
|
'summary_port_opened' => 'Port :port/:proto geöffnet',
|
|
'summary_from' => 'von :source',
|
|
'notify_added' => 'Firewall-Regel hinzugefügt.',
|
|
],
|
|
|
|
// ── Hardening action ──────────────────────────────────────────────────
|
|
'hardening_action' => [
|
|
'title_fallback' => 'Härtung anwenden',
|
|
'result_ok' => 'Erfolgreich angewendet.',
|
|
'result_failed' => 'Fehlgeschlagen.',
|
|
'error_unknown' => 'Unbekannter Fehler.',
|
|
'audit_failed_suffix' => '(fehlgeschlagen)',
|
|
'notify_applied' => ':action angewendet.',
|
|
'notify_failed' => ':action fehlgeschlagen.',
|
|
],
|
|
|
|
// ── System update ─────────────────────────────────────────────────────
|
|
'system_update' => [
|
|
'title' => 'System-Updates',
|
|
'subtitle' => 'Aktualisiert die installierten Pakete auf :server über die Paketverwaltung. Es werden keine neuen Versionssprünge erzwungen — nur verfügbare Updates eingespielt.',
|
|
'this_server' => 'diesem Server',
|
|
'unsupported_fallback' => 'Auf diesem System nicht verfügbar.',
|
|
'count_unknown' => 'Update-Anzahl unbekannt',
|
|
'count_one' => '1 Paket-Update verfügbar',
|
|
'count_many' => ':count Paket-Updates verfügbar',
|
|
'hint_unknown' => 'Konnte nicht ermittelt werden — Aktualisierung trotzdem möglich.',
|
|
'hint_recommended' => 'Aktualisierung empfohlen.',
|
|
'hint_up_to_date' => 'Das System ist auf dem aktuellen Stand.',
|
|
'result_ok' => 'System aktualisiert.',
|
|
'result_failed' => 'Aktualisierung fehlgeschlagen.',
|
|
'submit' => 'Jetzt aktualisieren',
|
|
'audit_failed_suffix' => '(fehlgeschlagen)',
|
|
'notify_updated' => 'System aktualisiert.',
|
|
'notify_failed' => 'Aktualisierung fehlgeschlagen.',
|
|
],
|
|
|
|
// ── Generic confirm dialog defaults (ConfirmAction) ───────────────────
|
|
'confirm_action' => [
|
|
'default_heading' => 'Aktion bestätigen',
|
|
'default_notify' => 'Aktion ausgeführt.',
|
|
],
|
|
];
|