{ "page.title": "Fail2ban UI Dashboard", "nav.dashboard": "Dashboard", "nav.filter_debug": "Filter Debug", "nav.settings": "Settings", "restart_banner.message": "Fail2ban configuration changed. To apply the changes, please ", "restart_banner.button": "Restart Service", "restart_banner.restart_success": "Fail2ban service restarted and passed health check", "restart_banner.reload_success": "Fail2ban configuration reloaded successfully (no systemd service restart)", "dashboard.title": "Dashboard", "dashboard.overview": "Overview active Jails and Blocks", "dashboard.overview_hint": "Use the search to filter banned IPs and click a jail to edit its configuration.", "dashboard.search_label": "Search Banned IPs", "dashboard.search_placeholder": "Enter IP address to search", "dashboard.external_ip": "Your ext. IP:", "dashboard.manage_servers": "Manage Servers", "dashboard.no_servers_title": "No Fail2ban servers configured", "dashboard.no_servers_body": "Add a server to start monitoring and controlling Fail2ban instances.", "dashboard.loading_summary": "Loading summary data…", "dashboard.errors.summary_failed": "Failed to load summary from server.", "dashboard.no_enabled_servers_title": "No active connectors", "dashboard.no_enabled_servers_body": "Enable the local connector or register a remote Fail2ban server to see live data.", "dashboard.cards.active_jails": "Active Jails", "dashboard.cards.total_banned": "Total Banned IPs", "dashboard.cards.new_last_hour": "New Last Hour", "dashboard.cards.total_logged": "Stored Ban Events", "dashboard.cards.recurring_week": "Recurring IPs (7 days)", "dashboard.cards.recurring_hint": "Watch repeated offenders detected in the last seven days.", "dashboard.table.jail_name": "Jail Name", "dashboard.table.total_banned": "Total Banned", "dashboard.table.new_last_hour": "New Last Hour", "dashboard.table.banned_ips": "Banned IPs (Unban)", "dashboard.no_jails": "No jails found.", "dashboard.overview_detail": "The lists must not expanded to search for an IP.", "dashboard.table.time": "Time", "dashboard.table.jail": "Jail", "dashboard.table.ip": "IP", "dashboard.table.log_line": "Log Line", "dashboard.no_banned_ips": "No banned IPs", "dashboard.unban": "Unban", "dashboard.manual_block.title": "Manual Block IP", "dashboard.manual_block.subtitle": "Manually block an IP address in a specific jail.", "dashboard.manual_block.expand_hint": "Click to expand and block an IP address", "dashboard.manual_block.jail_label": "Select Jail", "dashboard.manual_block.jail_placeholder": "Choose a jail...", "dashboard.manual_block.ip_label": "IP Address", "dashboard.manual_block.ip_placeholder": "e.g., 88.76.21.123", "dashboard.manual_block.button": "Block IP", "dashboard.manual_block.confirm": "Block IP {ip} in jail {jail}?", "dashboard.manual_block.success": "IP blocked successfully", "dashboard.manual_block.error": "Error blocking IP", "dashboard.manual_block.jail_required": "Please select a jail", "dashboard.manual_block.ip_required": "Please enter an IP address", "dashboard.manual_block.invalid_ip": "Please enter a valid IP address", "dashboard.banned.show_more": "Show more", "dashboard.banned.show_less": "Hide extra", "logs.overview.title": "Internal Log Overview", "logs.overview.subtitle": "Events stored by Fail2ban-UI across all connectors.", "logs.overview.refresh": "Refresh data", "logs.overview.total_events": "Total stored events", "logs.overview.per_server": "Events per server", "logs.overview.recent_events_title": "Recent stored events", "logs.overview.recent_empty": "No stored events found.", "logs.overview.empty": "No ban events recorded yet.", "logs.overview.open_insights": "Open insights", "logs.overview.total_today": "Today", "logs.overview.total_week": "Last 7 days", "logs.overview.per_server_empty": "No per-server data available yet.", "logs.overview.recent_filtered_empty": "No stored events match the current filters.", "logs.overview.recent_count_label": "Events shown", "logs.overview.country_unknown": "Unknown", "logs.overview.last_seen": "Last seen", "logs.table.server": "Server", "logs.table.count": "Count", "logs.table.jail": "Jail", "logs.table.ip": "IP", "logs.table.time": "Time", "logs.table.country": "Country", "logs.table.actions": "Actions", "logs.actions.whois": "Whois", "logs.actions.logs": "Logs", "logs.search.label": "Search events", "logs.search.placeholder": "Search IP, jail or server", "logs.search.country_label": "Country", "logs.search.country_all": "All countries", "logs.search.country_unknown": "Unknown", "logs.badge.recurring": "Recurring", "logs.modal.whois_title": "Whois Information", "logs.modal.logs_title": "Logs", "logs.modal.jail": "Jail", "logs.modal.insights_title": "Ban Insights", "logs.modal.insights_description": "Country distribution and recurring offenders.", "logs.modal.insights_countries": "Bans by country", "logs.modal.insights_countries_empty": "No bans recorded for this period.", "logs.modal.insights_countries_hint": "Top origins for the selected time range.", "logs.modal.insights_recurring_hint": "IP addresses repeatedly triggering Fail2ban.", "logs.modal.total_overall_note": "Lifetime bans recorded", "logs.modal.total_today_note": "Last 24 hours", "logs.modal.total_week_note": "Weekly activity", "logs.modal.insights_recurring": "Recurring IPs", "logs.modal.insights_recurring_empty": "No recurring IPs detected.", "filter_debug.title": "Filter Debug", "filter_debug.select_filter": "Select a Filter", "filter_debug.filter_content": "Filter Content", "filter_debug.filter_content_hint": "Edit the filter regex below for testing. Changes are temporary and not saved.", "filter_debug.filter_content_hint_readonly": "Filter content is shown read-only. Click 'Edit' to modify for testing. Changes are temporary and not saved.", "filter_debug.edit_filter": "Edit", "filter_debug.cancel_edit": "Cancel", "filter_debug.log_lines": "Log Lines", "filter_debug.log_lines_placeholder": "Enter log lines here...", "filter_debug.test_filter": "Test Filter", "filter_debug.test_results_title": "Test Results", "filter_debug.no_matches": "No matches found.", "settings.title": "Settings", "settings.general": "General Settings", "settings.language": "Language", "settings.server_port": "Server Port", "settings.server_port_placeholder": "e.g., 8080", "settings.port_env_set": "Port is set via PORT environment variable:", "settings.port_env_hint": "To change the port via Web UI, remove the PORT environment variable and restart the container.", "settings.port_restart_hint": "⚠️ Port changes require a container restart to take effect.", "settings.enable_debug": "Enable Debug Log", "settings.enable_console": "Enable Console Output", "settings.console.title": "Console Output", "settings.console.clear": "Clear", "settings.console.save_hint": "Please save your settings first before logs will be displayed here.", "settings.alert": "Alert Settings", "settings.callback_url": "Fail2ban Callback URL", "settings.callback_url_placeholder": "http://127.0.0.1:8080", "settings.callback_url_hint": "This URL is used by all Fail2Ban instances to send ban alerts back to Fail2Ban UI. For local deployments, use the same port as Fail2Ban UI (e.g., http://127.0.0.1:8080). For reverse proxy setups, use your TLS-encrypted endpoint (e.g., https://fail2ban.example.com).", "settings.callback_secret": "Fail2ban Callback URL Secret", "settings.callback_secret_placeholder": "Auto-generated 42-character secret", "settings.callback_secret.description": "This secret is used to authenticate ban API requests. It is automatically included to the fail2ban action configuration.", "settings.destination_email": "Destination Email (Alerts Receiver)", "settings.destination_email_placeholder": "alerts@swissmakers.ch", "settings.alert_countries": "Alert Countries", "settings.alert_countries_description": "Choose the countries for which you want to receive email alerts when a block is triggered.", "settings.email_alerts": "Email Alert Preferences", "settings.email_alerts_for_bans": "Enable email alerts for bans", "settings.email_alerts_for_unbans": "Enable email alerts for unbans", "settings.smtp": "SMTP Configuration", "settings.smtp_host": "SMTP Host", "settings.smtp_host_placeholder": "e.g., smtp.gmail.com", "settings.smtp_port": "SMTP Port", "settings.smtp_username": "SMTP Username", "settings.smtp_username_placeholder": "e.g., user@example.com", "settings.smtp_password": "SMTP Password", "settings.smtp_password_placeholder": "Enter SMTP Password", "settings.smtp_sender": "Sender Email", "settings.smtp_sender_placeholder": "noreply@swissmakers.ch", "settings.smtp_tls": "Use TLS (Recommended)", "settings.send_test_email": "Send Test Email", "settings.fail2ban": "Global Default Fail2Ban Configurations", "settings.fail2ban.description": "These settings will be applied to all enabled Fail2Ban servers and stored in their jail.local [DEFAULT] section.", "settings.enable_bantime_increment": "Enable Bantime Increment", "settings.enable_bantime_increment.description": "If set to true, the bantime will be calculated using the formula: bantime = findtime * (number of failures / maxretry) * (1 + bantime.rndtime).", "settings.default_jail_enable": "Enable Jails by Default", "settings.default_jail_enable.description": "If enabled, all jails will be enabled by default. When disabled, jails must be explicitly enabled.", "settings.default_bantime": "Default Bantime", "settings.default_bantime.description": "The number of seconds that a host is banned. Time format: 1m = 1 minutes, 1h = 1 hour, 1d = 1 day, 1w = 1 week, 1mo = 1 month, 1y = 1 year.", "settings.default_bantime_placeholder": "e.g., 48h", "settings.banaction": "Banaction", "settings.banaction.description": "Default banning action (e.g. iptables-multiport, iptables-allports, firewallcmd-multiport, etc). It is used to define action_* variables.", "settings.banaction_allports": "Banaction Allports", "settings.banaction_allports.description": "Banning action for all ports (e.g. iptables-allports, firewallcmd-allports, etc). Used when a jail needs to ban all ports instead of specific ones.", "settings.default_findtime": "Default Findtime", "settings.default_findtime.description": "A host is banned if it has generated 'maxretry' failures during the last 'findtime' seconds. Time format: 1m = 1 minutes, 1h = 1 hours, 1d = 1 days, 1w = 1 week, 1mo = 1 month, 1y = 1 year.", "settings.default_findtime_placeholder": "e.g., 30m", "settings.default_max_retry": "Default Max Retry", "settings.default_max_retry.description": "Number of failures before a host gets banned.", "settings.default_max_retry_placeholder": "Enter maximum retries", "settings.geoip_provider": "GeoIP Provider", "settings.geoip_provider.description": "Choose the GeoIP lookup provider. MaxMind requires a local database file, while Built-in uses a free online API.", "settings.geoip_provider.maxmind": "MaxMind (Local Database)", "settings.geoip_provider.builtin": "Built-in (ip-api.com)", "settings.geoip_database_path": "GeoIP Database Path", "settings.geoip_database_path.description": "Path to the MaxMind GeoLite2-Country database file.", "settings.max_log_lines": "Maximum Log Lines", "settings.max_log_lines.description": "Maximum number of log lines to include in ban notifications. Most relevant lines are selected automatically.", "settings.ignore_ips": "Ignore IPs", "settings.ignore_ips.description": "Space separated list of IP addresses, CIDR masks or DNS hosts. Fail2ban will not ban a host which matches an address in this list.", "settings.ignore_ips_placeholder": "IPs to ignore, separated by spaces", "settings.advanced.title": "Advanced Actions for Recurring Offenders", "settings.advanced.description": "Automatically synchronize recurring offenders to an external firewall or blocklist.", "settings.advanced.refresh_log": "Refresh Log", "settings.advanced.test_button": "Manually Block / Test", "settings.advanced.enable": "Enable automatic permanent blocking", "settings.advanced.threshold": "Threshold before permanent block", "settings.advanced.threshold_hint": "Once an IP reaches this number of bans it will be forwarded to the integration.", "settings.advanced.integration": "Integration", "settings.advanced.integration_none": "Select integration", "settings.advanced.integration_hint": "Choose the firewall or appliance where permanent bans should be created.", "settings.advanced.mikrotik.note": "Provide SSH access to your Mikrotik router and the address list that should contain blocked IPs.", "settings.advanced.mikrotik.host": "Host", "settings.advanced.mikrotik.port": "Port", "settings.advanced.mikrotik.username": "SSH Username", "settings.advanced.mikrotik.password": "SSH Password", "settings.advanced.mikrotik.key": "SSH Key Path (optional)", "settings.advanced.mikrotik.list": "Address List Name", "settings.advanced.pfsense.note": "Requires the pfSense REST API package. Enter the API key and alias to manage.", "settings.advanced.pfsense.install_link": "Install REST API Package", "settings.advanced.pfsense.api_key_setup": "Setup API Key", "settings.advanced.pfsense.base_url": "Base URL", "settings.advanced.pfsense.token": "API Key", "settings.advanced.pfsense.token_hint": "Generate in System > REST API > Keys in pfSense webConfigurator", "settings.advanced.pfsense.alias": "Alias Name", "settings.advanced.pfsense.skip_tls": "Skip TLS verification (self-signed)", "settings.advanced.opnsense.note": "Enter the OPNsense API credentials and alias to manage.", "settings.advanced.opnsense.api_docs": "API Documentation", "settings.advanced.opnsense.api_key_setup": "Setup API Key", "settings.advanced.opnsense.base_url": "Base URL", "settings.advanced.opnsense.key": "API Key", "settings.advanced.opnsense.key_hint": "Generate in System > Access > Users > API Keys", "settings.advanced.opnsense.secret": "API Secret", "settings.advanced.opnsense.secret_hint": "Generate together with API key", "settings.advanced.opnsense.alias": "Alias Name", "settings.advanced.opnsense.skip_tls": "Skip TLS verification (self-signed)", "settings.advanced.log_title": "Permanent Block Log", "settings.advanced.log_empty": "No permanent blocks recorded yet.", "settings.advanced.log_ip": "IP", "settings.advanced.log_integration": "Integration", "settings.advanced.log_status": "Status", "settings.advanced.log_message": "Message", "settings.advanced.log_server": "Server", "settings.advanced.log_updated": "Updated", "settings.advanced.log_actions": "Actions", "settings.advanced.unblock_btn": "Remove", "settings.advanced.test_title": "Manually Block / Test", "settings.advanced.test_ip": "IP address", "settings.advanced.test_server": "Optional server", "settings.advanced.test_server_none": "Use global integration settings", "settings.advanced.test_block": "Block IP", "settings.advanced.test_unblock": "Remove IP", "settings.save": "Save", "modal.filter_config": "Filter / Jail Configuration:", "modal.filter_config_edit": "Edit Filter / Jail", "modal.filter_config_label": "Filter Configuration", "modal.filter_config_hint": "If left empty, an empty filter file will be created.", "modal.filter_name": "Filter Name", "modal.filter_name_hint": "Only alphanumeric characters, dashes, and underscores are allowed.", "modal.jail_config": "Jail Configuration", "modal.jail_config_hint": "Jail configuration will be auto-populated when you select a filter.", "modal.jail_config_label": "Jail Configuration", "modal.jail_filter": "Filter (optional)", "modal.jail_filter_hint": "Selecting a filter will auto-populate the jail configuration.", "modal.jail_name": "Jail Name", "modal.jail_name_hint": "Only alphanumeric characters, dashes, and underscores are allowed.", "modal.test_logpath": "Test Logpath", "modal.create": "Create", "modal.create_filter": "Create New Filter", "modal.create_filter_title": "Create New Filter", "modal.create_jail": "Create New Jail", "modal.create_jail_title": "Create New Jail", "modal.cancel": "Cancel", "modal.save": "Save", "modal.close": "Close", "loading": "Loading...", "dashboard.manage_jails": "Manage Jails", "modal.manage_jails_title": "Manage Jails", "servers.selector.label": "Active Server", "servers.selector.empty": "No servers configured", "servers.selector.none": "No server configured. Please add a Fail2ban server.", "servers.modal.title": "Manage Fail2ban Servers", "servers.modal.description": "Register remote Fail2ban instances and choose how the UI connects to them.", "servers.modal.list_title": "Registered Servers", "servers.modal.list_empty": "No servers configured yet. Add your first Fail2ban server using the form on the right.", "servers.modal.form_title": "Add or Update Server", "servers.form.name": "Display Name", "servers.form.name_placeholder": "My Fail2ban server", "servers.form.type": "Connection Type", "servers.type.local": "Local (same host)", "servers.type.ssh": "SSH", "servers.type.agent": "API Agent", "servers.form.host": "Hostname / IP", "servers.form.host_placeholder": "fail2ban.example.com", "servers.form.port": "Port", "servers.form.port_placeholder": "22", "servers.form.socket_path": "Fail2ban Socket Path", "servers.form.socket_path_placeholder": "/var/run/fail2ban/fail2ban.sock", "servers.form.log_path": "Fail2ban Log Path", "servers.form.log_path_placeholder": "/var/log/fail2ban.log", "servers.form.hostname": "Server Hostname", "servers.form.hostname_placeholder": "optional", "servers.form.ssh_user": "SSH User", "servers.form.ssh_user_placeholder": "sa_fail2ban", "servers.form.ssh_key": "SSH Private Key Path", "servers.form.ssh_key_placeholder": "/config/.ssh/id_rsa", "servers.form.ssh_key_help": "Place your SSH private key in the /config/.ssh/ directory (mounted config volume). The key file must have permissions 600 (chmod 600). Example: /config/.ssh/id_rsa", "servers.form.agent_url": "Agent URL", "servers.form.agent_url_placeholder": "https://host:9443", "servers.form.agent_secret": "Agent Secret", "servers.form.agent_secret_placeholder": "shared secret token", "servers.form.tags": "Tags", "servers.form.tags_placeholder": "comma,separated,tags", "servers.form.set_default": "Set as default server", "servers.form.enabled": "Enable connector", "servers.form.submit": "Save Server", "servers.form.reset": "Reset", "servers.form.new_server": "New Server", "servers.form.success": "Server saved successfully.", "servers.badge.default": "Default", "servers.badge.enabled": "Enabled", "servers.badge.disabled": "Disabled", "servers.badge.restart_needed": "Restart required", "servers.actions.edit": "Edit", "servers.actions.set_default": "Set default", "servers.actions.enable": "Enable", "servers.actions.disable": "Disable", "servers.actions.test": "Test connection", "servers.actions.test_success": "Connection successful", "servers.actions.test_failure": "Connection failed", "servers.actions.restart": "Restart Fail2ban", "servers.actions.reload": "Reload Fail2ban", "servers.actions.reload_tooltip": "For local connectors, only a configuration reload is possible via the socket connection. The container cannot restart the Fail2ban service using systemctl. To perform a full restart, run 'systemctl restart fail2ban' directly on the host system.", "servers.actions.delete": "Delete", "servers.actions.delete_confirm": "Delete this server entry?", "servers.form.select_key": "Select Private Key", "servers.form.select_key_placeholder": "Manual entry", "servers.form.no_keys": "No SSH keys found; enter path manually", "filter_debug.not_available": "Filter debug is only available for local connectors.", "filter_debug.local_missing": "The local Fail2ban filter directory was not found on this host.", "email.ban.title": "Security alert: Fail2Ban blocked a new IP-address", "email.ban.intro": "Fail2Ban-UI detected a bad request or repeated authentication failures and automatically blocked the source-IP. Review the metadata and log excerpts below.", "email.ban.subject.banned": "Banned", "email.ban.subject.from": "from", "email.ban.details.banned_ip": "Banned IP", "email.ban.details.jail": "Jail", "email.ban.details.hostname": "Hostname", "email.ban.details.failed_attempts": "Failed attempts", "email.ban.details.country": "Country", "email.ban.details.timestamp": "Timestamp", "email.ban.whois_title": "WHOIS footprint", "email.ban.logs_title": "Relevant log excerpts", "email.test.title": "Email delivery test", "email.test.intro": "This message confirms that your SMTP configuration is working correctly and can deliver HTML formatted emails.", "email.test.subject": "Test Email from Fail2Ban UI", "email.test.details.recipient": "Recipient", "email.test.details.smtp_host": "SMTP host", "email.test.details.triggered_at": "Triggered at", "email.test.whois_no_data": "No WHOIS lookup is executed for test emails.", "email.test.sample_logs": "2025-01-01T12:00:00Z Sample log entry of Fail2ban-UI.", "email.whois.no_data": "WHOIS data was not captured for this event.", "email.logs.no_data": "No log entries were captured for this block.", "email.footer.text": "This message was generated automatically by Fail2Ban-UI", "email.unban.title": "IP Address Unbanned", "email.unban.intro": "An IP address has been unbanned from a Fail2Ban jail.", "email.unban.subject.unbanned": "Unbanned", "email.unban.subject.from": "from", "email.unban.details.unbanned_ip": "Unbanned IP", "email.unban.details.jail": "Jail", "email.unban.details.hostname": "Hostname", "email.unban.details.country": "Country", "email.unban.details.timestamp": "Timestamp", "lotr.email.title": "A Dark Servant Has Been Banished", "lotr.email.intro": "The guardians of Middle-earth have detected a threat and banished it from the realm.", "lotr.email.you_shall_not_pass": "YOU SHALL NOT PASS", "lotr.email.footer": "May the servers be protected. One ban to rule them all.", "lotr.email.details.dark_servant_location": "The Dark Servant's Location", "lotr.email.details.realm_protection": "The Realm of Protection", "lotr.email.details.origins": "Origins from the", "lotr.email.details.banished_at": "Banished at the", "lotr.email.unban.title": "The held prisoner has been released", "lotr.email.unban.intro": "The guardians of Middle-earth have restored access to the realm.", "lotr.email.unban.details.restored_ip": "Restored IP", "lotr.banished": "Banished from the realm", "lotr.realms_protected": "Realms Protected", "lotr.threats_banished": "Threats Banished", "toast.ban.title": "New block occurred", "toast.ban.action": "banned in", "toast.unban.title": "IP unblocked", "toast.unban.action": "unblocked from", "auth.login_title": "Sign in to Fail2ban UI", "auth.login_description": "Please authenticate to access the management interface", "auth.login_button": "Sign in with OIDC", "auth.logging_in": "Redirecting to login...", "auth.logout": "Logout", "auth.user_info": "User Information", "auth.session_expired": "Your session has expired. Please log in again.", "auth.login_required": "Authentication required" }