clusev/lang/en/modals.php

172 lines
8.8 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<?php
// Modal dialogs (wire-elements/modal). English translation of lang/de/modals.php.
// Same keys in both files (R16). Shared strings come from common.*.
return [
// ── Add SSH key ───────────────────────────────────────────────────────
'add_ssh_key' => [
'title' => 'Add SSH key',
'subtitle_before' => 'Paste a public key — it is appended to',
'subtitle_after' => '.',
'public_key_label' => 'Public key',
'generate' => 'Generate new pair',
'generating' => 'generating…',
'public_key_placeholder' => 'ssh-ed25519 AAAA… comment — or generate above',
'private_key_warning' => 'Private key — shown only now, store it securely.',
'notify_added' => 'SSH key added.',
],
// ── Create server ─────────────────────────────────────────────────────
'create_server' => [
'title' => 'Add server',
'subtitle' => 'Add a new host to the fleet and store its SSH access in the encrypted vault.',
'name_label' => 'Name',
'name_placeholder' => 'e.g. Prod-Web-01',
'ip_host_label' => 'IP/Host',
'ip_host_placeholder' => '10.10.90.10 or host.example.com',
'ssh_port_label' => 'SSH port',
'user_label' => 'User',
'auth_label' => 'Authentication',
'auth_password' => 'Password',
'auth_key' => 'Private key',
'secret_key_label' => 'Private key (PEM)',
'secret_password_label' => 'Password',
'key_placeholder' => '-----BEGIN OPENSSH PRIVATE KEY-----',
'passphrase_label' => 'Passphrase (optional)',
'passphrase_placeholder' => 'empty = none',
'credential_name_label' => 'Access name (optional)',
'credential_name_placeholder' => 'e.g. Root login · Deploy user',
'validation_ip_or_host' => 'Please enter a valid IP address or hostname.',
'validation_ssh_failed' => 'SSH connection failed: :error. Please check the credentials.',
'attr_name' => 'Name',
'attr_ip' => 'IP/Host',
'attr_ssh_port' => 'SSH port',
'attr_user' => 'User',
'attr_auth' => 'Authentication',
'attr_secret_key' => 'Private key',
'attr_secret_password' => 'Password',
'attr_credential_name' => 'Access name',
'notify_added' => 'Server added.',
],
// ── Edit credential ───────────────────────────────────────────────────
'edit_credential' => [
'title' => 'SSH access',
'subtitle_before' => 'Store the access here — e.g.',
'subtitle_after' => 'for full control (systemctl, journal).',
'name_label' => 'Name (optional)',
'name_placeholder' => 'e.g. Prod-Server X · Backup user',
'user_label' => 'User',
'auth_label' => 'Authentication',
'auth_password' => 'Password',
'auth_key' => 'Private key',
'secret_key_label' => 'Private key (PEM)',
'secret_password_label' => 'Password',
'key_placeholder' => '-----BEGIN OPENSSH PRIVATE KEY-----',
'passphrase_label' => 'Passphrase (optional)',
'passphrase_placeholder' => 'empty = none',
'error_required' => 'User and password/key are required.',
'error_name_too_long' => 'Name may be at most 120 characters long.',
'notify_saved' => 'Credentials saved.',
],
// ── fail2ban: ban IP ──────────────────────────────────────────────────
'fail2ban_ban' => [
'title' => 'Ban IP manually',
'subtitle' => 'Bans an IP address immediately in the selected jail. Loopback and the Clusev access cannot be banned.',
'jail_label' => 'Jail',
'ip_label' => 'IP address',
'ip_placeholder' => 'e.g. 203.0.113.10',
'submit' => 'Ban IP',
'error_ban_failed' => 'Ban failed.',
'notify_banned' => 'IP :ip banned.',
],
// ── fail2ban: config ──────────────────────────────────────────────────
'fail2ban_config' => [
'title' => 'Configure fail2ban',
'subtitle' => 'Defines when fail2ban bans an IP on :server and for how long. Repeated failed logins within the time window lead to a ban.',
'this_server' => 'this server',
'bantime_label' => 'Ban duration',
'bantime_placeholder' => 'e.g. 600, 10m, 1h, -1 = permanent',
'maxretry_label' => 'Max. retries',
'findtime_label' => 'Time window',
'findtime_placeholder' => 'e.g. 600, 10m, 1h',
'error_read_locked' => 'Current configuration could not be read — saving is blocked.',
'error_bantime_invalid' => 'Invalid duration (e.g. 600, 10m, 1h, -1 for permanent).',
'error_findtime_invalid' => 'Invalid duration (e.g. 600, 10m, 1h).',
'error_save_failed' => 'Save failed. :output',
'attr_bantime' => 'Ban duration',
'attr_maxretry' => 'Max. retries',
'attr_findtime' => 'Time window',
'notify_saved' => 'fail2ban configured.',
],
// ── File editor ───────────────────────────────────────────────────────
'file_editor' => [
'too_big' => 'File too large to edit (over 256 KB) — please download it.',
'binary' => 'Binary file — cannot be shown in the editor.',
'notify_saved' => '“:name” saved.',
],
// ── Firewall rule ─────────────────────────────────────────────────────
'firewall_rule' => [
'title' => 'Add firewall rule',
'subtitle_firewalld' => 'Opens a port in firewallds default zone.',
'subtitle_ufw' => 'New UFW rule. Leave source empty = from anywhere.',
'action_label' => 'Action',
'action_allow' => 'Allow (allow)',
'action_deny' => 'Drop (deny)',
'action_reject' => 'Reject (reject)',
'action_limit' => 'Limit (limit)',
'port_label' => 'Port',
'port_optional' => '(optional)',
'port_placeholder' => 'e.g. 8080',
'proto_label' => 'Protocol',
'proto_both' => 'Both',
'source_label' => 'Source (optional)',
'source_placeholder' => 'IP or CIDR, e.g. 10.0.0.0/8',
'error_add_failed' => 'Rule could not be added.',
'summary_port_opened' => 'Port :port/:proto opened',
'summary_from' => 'from :source',
'notify_added' => 'Firewall rule added.',
],
// ── Hardening action ──────────────────────────────────────────────────
'hardening_action' => [
'title_fallback' => 'Apply hardening',
'result_ok' => 'Applied successfully.',
'result_failed' => 'Failed.',
'error_unknown' => 'Unknown error.',
'audit_failed_suffix' => '(failed)',
'notify_applied' => ':action applied.',
'notify_failed' => ':action failed.',
],
// ── System update ─────────────────────────────────────────────────────
'system_update' => [
'title' => 'System updates',
'subtitle' => 'Updates the installed packages on :server via the package manager. No new version jumps are forced — only available updates are applied.',
'this_server' => 'this server',
'unsupported_fallback' => 'Not available on this system.',
'count_unknown' => 'Update count unknown',
'count_one' => '1 package update available',
'count_many' => ':count package updates available',
'hint_unknown' => 'Could not be determined — updating is still possible.',
'hint_recommended' => 'Updating recommended.',
'hint_up_to_date' => 'The system is up to date.',
'result_ok' => 'System updated.',
'result_failed' => 'Update failed.',
'submit' => 'Update now',
'audit_failed_suffix' => '(failed)',
'notify_updated' => 'System updated.',
'notify_failed' => 'Update failed.',
],
// ── Generic confirm dialog defaults (ConfirmAction) ───────────────────
'confirm_action' => [
'default_heading' => 'Confirm action',
'default_notify' => 'Action completed.',
],
];