<?php

// Human-readable strings returned by backend services (HardeningService,
// FirewallService, Fail2banService, MaintenanceService, OsProfile) and shown in
// the UI: confirm-modal copy, guard/lockout refusals, read errors, and the
// supports()/reason sentences. Technical tokens (sshd, ufw, firewalld, ports,
// paths) stay verbatim. Reuse common.* for save/cancel/active/inactive/etc.
return [
    // ── HardeningService: state labels + detail ──────────────────────────
    'item_not_installed' => 'nicht installiert',
    'label_ssh_root' => 'SSH-Root-Login',
    'label_ssh_password' => 'SSH-Passwort-Login',
    'label_auto_updates' => 'Automatische Updates',

    // ── HardeningService: modal titles (per direction) ───────────────────
    'title_ssh_root_enable' => 'SSH-Root-Login erlauben',
    'title_ssh_root_disable' => 'SSH-Root-Login deaktivieren',
    'title_ssh_password_enable' => 'SSH-Passwort-Login erlauben',
    'title_ssh_password_disable' => 'SSH-Passwort-Login deaktivieren',
    'title_fail2ban_enable' => 'fail2ban aktivieren',
    'title_fail2ban_disable' => 'fail2ban deaktivieren',
    'title_firewall_enable' => 'Firewall aktivieren',
    'title_firewall_disable' => 'Firewall deaktivieren',
    'title_unattended_enable' => 'Automatische Updates aktivieren',
    'title_unattended_disable' => 'Automatische Updates deaktivieren',

    // ── HardeningService: modal descriptions (per direction) ─────────────
    'desc_ssh_root_enable' => 'Erlaubt direkten Root-Login über SSH wieder (PermitRootLogin yes) und lädt den SSH-Dienst neu.',
    'desc_ssh_root_disable' => 'Unterbindet direkten Root-Login über SSH (PermitRootLogin no) und lädt den SSH-Dienst neu.',
    'desc_ssh_password_enable' => 'Erlaubt die Anmeldung per Passwort wieder (PasswordAuthentication yes).',
    'desc_ssh_password_disable' => 'Anmeldung nur noch per SSH-Key (PasswordAuthentication no). Nur möglich, wenn ein Key hinterlegt ist.',
    'desc_fail2ban_enable' => 'Installiert fail2ban (falls nötig) und startet den Dienst. Wiederholte Fehl-Logins werden gesperrt.',
    'desc_fail2ban_disable' => 'Stoppt fail2ban und deaktiviert den Autostart.',
    'desc_firewall_enable' => 'Installiert die Firewall (falls nötig), gibt vorher SSH + 80/443 frei und aktiviert sie.',
    'desc_firewall_disable' => 'Deaktiviert die Firewall des Servers.',
    'desc_unattended_enable' => 'Installiert (falls nötig) und aktiviert die automatischen Sicherheitsupdates des Systems.',
    'desc_unattended_disable' => 'Schaltet die automatischen Updates ab.',

    // ── HardeningService: errors + guards ────────────────────────────────
    'hardening_status_read_failed' => 'Härtungs-Status konnte nicht gelesen werden.',
    'ssh_probe_no_exec' => 'SSH-Anmeldung erfolgreich, aber es lassen sich keine Befehle ausführen.',
    'ssh_password_self_lockout' => 'Clusev verbindet sich selbst per Passwort — Passwort-Login kann nicht deaktiviert werden, sonst verliert Clusev den Zugang. Hinterlege zuerst einen SSH-Key-Zugang.',
    'ssh_password_no_key' => 'Kein SSH-Key hinterlegt — Passwort-Login kann nicht deaktiviert werden (Aussperrgefahr).',
    'ssh_root_self_lockout' => 'Clusev verbindet sich als root — Root-Login kann nicht deaktiviert werden, sonst sperrt sich Clusev selbst aus. Lege zuerst einen Nicht-Root-Benutzer (mit sudo + SSH-Key) an und stelle Clusev darauf um.',

    // ── FirewallService: guards / reasons / errors ───────────────────────
    'firewalld_read_only' => 'Regelverwaltung für firewalld ist in dieser Version nur lesend — bitte am Server konfigurieren.',
    'invalid_port' => 'Ungültiger Port (1–65535).',
    'invalid_source' => 'Ungültige Quelle — IP-Adresse oder CIDR erwartet.',
    'port_or_source_required' => 'Port oder Quelle ist erforderlich.',
    'deny_without_port_blocks_ssh' => 'Eine :action-Regel ohne Port würde auch den SSH-Zugang blockieren und ist nicht erlaubt. Nutze fail2ban, um einzelne IPs vom SSH-Zugang auszusperren.',
    'deny_on_ssh_port_blocks_ssh' => 'Eine :action-Regel auf den SSH-Port (:port) ist nicht erlaubt (Aussperrgefahr). Nutze fail2ban, um einzelne IPs vom SSH-Zugang auszusperren.',
    'firewalld_port_required' => 'firewalld: Bitte einen Port angeben.',
    'firewall_status_read_failed' => 'Firewall-Status konnte nicht gelesen werden — Regel nicht entfernt.',
    'rule_gone' => 'Regel existiert nicht mehr.',
    'ssh_rule_guard' => 'Diese Regel hält den SSH-Zugang (Port :port) offen und kann nicht entfernt werden — sonst sperrt sich Clusev selbst aus. Deaktiviere bei Bedarf die gesamte Firewall.',

    // ── Fail2banService: guards / reasons / errors ───────────────────────
    'ip_belongs_to_clusev' => 'Diese IP gehört zum Clusev-Zugang und kann nicht gesperrt werden (Aussperrgefahr).',
    'already_whitelisted' => 'Bereits auf der Whitelist.',
    'not_on_whitelist' => 'Nicht auf der Whitelist.',
    'loopback_stays_whitelisted' => 'Loopback bleibt immer auf der Whitelist.',
    'invalid_input' => 'Ungültige Eingabe.',
    'invalid_ip_or_cidr' => 'Ungültige IP-Adresse oder CIDR.',
    'fail2ban_config_read_failed' => 'fail2ban-Konfiguration konnte nicht gelesen werden.',

    // ── OsProfile: family labels ─────────────────────────────────────────
    'family_debian' => 'Debian/Ubuntu',
    'family_rhel' => 'RHEL/Fedora',
    'family_suse' => 'openSUSE/SLES',
    'family_arch' => 'Arch Linux',
    'family_alpine' => 'Alpine Linux',
    'family_unknown' => 'Unbekanntes System',

    // ── OsProfile: firewall labels ───────────────────────────────────────
    'firewall_label_ufw' => 'Firewall (UFW)',
    'firewall_label_firewalld' => 'Firewall (firewalld)',
    'firewall_label_generic' => 'Firewall',

    // ── OsProfile: supports() reasons (:family = familyLabel()) ──────────
    'support_ssh' => 'SSH-Härtung benötigt systemd, das auf :family nicht erkannt wurde.',
    'support_services' => 'Dienst-Steuerung benötigt systemd, das hier nicht erkannt wurde.',
    'support_updates' => 'Paket-Updates über Clusev werden unter :family noch nicht unterstützt.',
    'support_fail2ban' => 'fail2ban wird unter :family über Clusev noch nicht unterstützt.',
    'support_firewall' => 'Eine unterstützte Firewall (UFW oder firewalld) wurde unter :family nicht gefunden.',
    'support_auto_updates' => 'Automatische Updates werden unter :family über Clusev noch nicht unterstützt.',

    // ── FleetService: SFTP / file-manager / journal errors ───────────────
    'authorized_keys_unreadable' => 'authorized_keys leer oder nicht lesbar.',
    'delete_failed_perms' => 'Löschen fehlgeschlagen (Rechte?).',
    'file_too_large_download' => 'Datei zu groß für den Download (>50 MB).',
    'save_failed_perms' => 'Speichern fehlgeschlagen (Rechte?).',
    'upload_failed_perms' => 'Upload fehlgeschlagen (Rechte?).',
    'journal_needs_privileges' => 'Systemjournal benötigt erhöhte Rechte (Gruppe adm/systemd-journal) oder sudo.',

    // ── CredentialVault: SSH credential guards (:server = name) ──────────
    'no_ssh_credential' => 'Kein SSH-Credential für Server :server hinterlegt.',
    'ssh_access_locked' => 'SSH-Zugang für :server ist gesperrt.',

    // ── HardeningService: invalid action invariant (:action) ─────────────
    'unknown_hardening' => 'Unbekannte Härtung: :action',

    // ── SshKeyProvisioner ─────────────────────────────────────────────────
    'ssh_key_verify_failed' => 'Key-Login konnte nicht bestätigt werden (:error) — Passwort-Login bleibt aktiv.',
];
