From 3e5f3dbec6294623fe705ca216d2674170b99f74 Mon Sep 17 00:00:00 2001 From: Michael Reber Date: Wed, 14 Jan 2026 22:38:20 +0100 Subject: [PATCH] Fix time format-desc to match Fail2ban's format --- internal/locales/de.json | 4 ++-- internal/locales/de_ch.json | 4 ++-- internal/locales/en.json | 4 ++-- internal/locales/es.json | 4 ++-- internal/locales/fr.json | 4 ++-- internal/locales/it.json | 4 ++-- pkg/web/static/js/validation.js | 5 +++-- 7 files changed, 15 insertions(+), 14 deletions(-) diff --git a/internal/locales/de.json b/internal/locales/de.json index 5073bda..4572e27 100644 --- a/internal/locales/de.json +++ b/internal/locales/de.json @@ -152,14 +152,14 @@ "settings.default_jail_enable": "Jails standardmässig aktivieren", "settings.default_jail_enable.description": "Wenn aktiviert, werden alle Jails standardmässig aktiviert. Wenn deaktiviert, müssen Jails explizit aktiviert werden.", "settings.default_bantime": "Standard-Bantime", - "settings.default_bantime.description": "Die Anzahl der Sekunden, für die ein Host gesperrt wird. Zeitformat: 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1m = 1 Monat, 1y = 1 Jahr.", + "settings.default_bantime.description": "Die Anzahl der Sekunden, für die ein Host gesperrt wird. Zeitformat: 1m = 1 Minute, 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monat, 1y = 1 Jahr.", "settings.default_bantime_placeholder": "z.B. 48h", "settings.banaction": "Banaction", "settings.banaction.description": "Standard-Sperraktion (z.B. iptables-multiport, iptables-allports, firewallcmd-multiport, etc). Wird verwendet, um action_* Variablen zu definieren.", "settings.banaction_allports": "Banaction Allports", "settings.banaction_allports.description": "Sperraktion für alle Ports (z.B. iptables-allports, firewallcmd-allports, etc). Wird verwendet, wenn ein Jail alle Ports statt spezifischer Ports sperren muss.", "settings.default_findtime": "Standard-Findtime", - "settings.default_findtime.description": "Ein Host wird gesperrt, wenn er in den letzten 'findtime' Sekunden 'maxretry' Fehler generiert hat. Zeitformat: 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1m = 1 Monat, 1y = 1 Jahr.", + "settings.default_findtime.description": "Ein Host wird gesperrt, wenn er in den letzten 'findtime' Sekunden 'maxretry' Fehler generiert hat. Zeitformat: 1m = 1 Minute, 1h = 1 Stunde, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monat, 1y = 1 Jahr.", "settings.default_findtime_placeholder": "z.B. 30m", "settings.default_max_retry": "Standard-Maximalversuche", "settings.default_max_retry.description": "Anzahl der Fehler, bevor ein Host gesperrt wird.", diff --git a/internal/locales/de_ch.json b/internal/locales/de_ch.json index 63c0356..99045cf 100644 --- a/internal/locales/de_ch.json +++ b/internal/locales/de_ch.json @@ -152,14 +152,14 @@ "settings.default_jail_enable": "Jails standardmässig aktivieren", "settings.default_jail_enable.description": "Wenn aktiviert, werde alli Jails standardmässig aktiviert. Wenn deaktiviert, mues jedes Jails explizit aktiviert werde.", "settings.default_bantime": "Standard-Bantime", - "settings.default_bantime.description": "D Aazahl vo de Sekunde, wo ä Host gsperrt wird. Zytformat: 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Wuche, 1m = 1 Monet, 1y = 1 Jahr.", + "settings.default_bantime.description": "D Aazahl vo de Sekunde, wo ä Host gsperrt wird. Zytformat: 1m = 1 Minute, 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monet, 1y = 1 Jahr.", "settings.default_bantime_placeholder": "z.B. 48h", "settings.banaction": "Banaction", "settings.banaction.description": "Standard-Sperraktione (z.B. iptables-multiport, iptables-allports, firewallcmd-multiport, etc). Wird brucht, zum action_* Variablen z definiere.", "settings.banaction_allports": "Banaction Allports", "settings.banaction_allports.description": "Sperraktione für alli Ports (z.B. iptables-allports, firewallcmd-allports, etc). Wird brucht, wänn ä Jail alli Ports statt spezifischi Ports sperre muess.", "settings.default_findtime": "Standard-Findtime", - "settings.default_findtime.description": "Ä Host wird gsperrt, wenn er i de letschte 'findtime' Sekunde 'maxretry' Fähler generiert het. Zytformat: 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Wuche, 1m = 1 Monet, 1y = 1 Jahr.", + "settings.default_findtime.description": "Ä Host wird gsperrt, wenn er i de letschte 'findtime' Sekunde 'maxretry' Fähler generiert het. Zytformat: 1m = 1 Minute, 1h = 1 Stund, 1d = 1 Tag, 1w = 1 Woche, 1mo = 1 Monet, 1y = 1 Jahr.", "settings.default_findtime_placeholder": "z.B. 30m", "settings.default_max_retry": "Standard-Maximalversüech", "settings.default_max_retry.description": "Aazahl vo de Fähler, bevor ä Host gsperrt wird.", diff --git a/internal/locales/en.json b/internal/locales/en.json index e21f5a4..8d9f16b 100644 --- a/internal/locales/en.json +++ b/internal/locales/en.json @@ -152,14 +152,14 @@ "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: 1h = 1 hour, 1d = 1 day, 1w = 1 week, 1m = 1 month, 1y = 1 year.", + "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: 1h = 1 hour, 1d = 1 day, 1w = 1 week, 1m = 1 month, 1y = 1 year.", + "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.", diff --git a/internal/locales/es.json b/internal/locales/es.json index 5de9b1e..f936782 100644 --- a/internal/locales/es.json +++ b/internal/locales/es.json @@ -152,14 +152,14 @@ "settings.default_jail_enable": "Jails por defecto activados", "settings.default_jail_enable.description": "Si está habilitado, todos los jails estarán habilitados por defecto. Cuando está deshabilitado, los jails deben habilitarse explícitamente.", "settings.default_bantime": "Bantime por defecto", - "settings.default_bantime.description": "El número de segundos que un host está bloqueado. Formato de tiempo: 1h = 1 hora, 1d = 1 día, 1w = 1 semana, 1m = 1 mes, 1y = 1 año.", + "settings.default_bantime.description": "El número de segundos que un host está bloqueado. Formato de tiempo: 1m = 1 minutos, 1h = 1 horas, 1d = 1 días, 1w = 1 semana, 1mo = 1 mes, 1y = 1 año.", "settings.default_bantime_placeholder": "p.ej., 48h", "settings.banaction": "Banaction", "settings.banaction.description": "Acción de bloqueo por defecto (p.ej. iptables-multiport, iptables-allports, firewallcmd-multiport, etc). Se utiliza para definir las variables action_*.", "settings.banaction_allports": "Banaction Allports", "settings.banaction_allports.description": "Acción de bloqueo para todos los puertos (p.ej. iptables-allports, firewallcmd-allports, etc). Se utiliza cuando un jail necesita bloquear todos los puertos en lugar de puertos específicos.", "settings.default_findtime": "Findtime por defecto", - "settings.default_findtime.description": "Un host es bloqueado si ha generado 'maxretry' fallos durante los últimos 'findtime' segundos. Formato de tiempo: 1h = 1 hora, 1d = 1 día, 1w = 1 semana, 1m = 1 mes, 1y = 1 año.", + "settings.default_findtime.description": "Un host es bloqueado si ha generado 'maxretry' fallos durante los últimos 'findtime' segundos. Formato de tiempo: 1m = 1 minutos, 1h = 1 horas, 1d = 1 días, 1w = 1 semana, 1mo = 1 mes, 1y = 1 año.", "settings.default_findtime_placeholder": "p.ej., 30m", "settings.default_max_retry": "Número máximo de reintentos por defecto", "settings.default_max_retry.description": "Número de fallos antes de que un host sea bloqueado.", diff --git a/internal/locales/fr.json b/internal/locales/fr.json index 0f7224b..6598fee 100644 --- a/internal/locales/fr.json +++ b/internal/locales/fr.json @@ -152,14 +152,14 @@ "settings.default_jail_enable": "Jails par défaut activés", "settings.default_jail_enable.description": "Si activé, tous les jails seront activés par défaut. Lorsqu'il est désactivé, les jails doivent être explicitement activés.", "settings.default_bantime": "Bantime par défaut", - "settings.default_bantime.description": "Le nombre de secondes pendant lesquelles un hôte est banni. Format de temps : 1h = 1 heure, 1d = 1 jour, 1w = 1 semaine, 1m = 1 mois, 1y = 1 an.", + "settings.default_bantime.description": "Le nombre de secondes pendant lesquelles un hôte est banni. Format de temps : 1m = 1 minutes, 1h = 1 heures, 1d = 1 jours, 1w = 1 semaines, 1mo = 1 mois, 1y = 1 années.", "settings.default_bantime_placeholder": "par exemple, 48h", "settings.banaction": "Banaction", "settings.banaction.description": "Action de bannissement par défaut (par ex. iptables-multiport, iptables-allports, firewallcmd-multiport, etc). Elle est utilisée pour définir les variables action_*.", "settings.banaction_allports": "Banaction Allports", "settings.banaction_allports.description": "Action de bannissement pour tous les ports (par ex. iptables-allports, firewallcmd-allports, etc). Utilisée lorsqu'un jail doit bannir tous les ports au lieu de ports spécifiques.", "settings.default_findtime": "Findtime par défaut", - "settings.default_findtime.description": "Un hôte est banni s'il a généré 'maxretry' échecs pendant les dernières 'findtime' secondes. Format de temps : 1h = 1 heure, 1d = 1 jour, 1w = 1 semaine, 1m = 1 mois, 1y = 1 an.", + "settings.default_findtime.description": "Un hôte est banni s'il a généré 'maxretry' échecs pendant les dernières 'findtime' secondes. Format de temps : 1m = 1 minutes, 1h = 1 heures, 1d = 1 jours, 1w = 1 semaines, 1mo = 1 mois, 1y = 1 années.", "settings.default_findtime_placeholder": "par exemple, 30m", "settings.default_max_retry": "Nombre maximal de réessais par défaut", "settings.default_max_retry.description": "Nombre d'échecs avant qu'un hôte ne soit banni.", diff --git a/internal/locales/it.json b/internal/locales/it.json index 3c38c60..4e25417 100644 --- a/internal/locales/it.json +++ b/internal/locales/it.json @@ -152,14 +152,14 @@ "settings.default_jail_enable": "Jails predefiniti attivati", "settings.default_jail_enable.description": "Se abilitato, tutti i jails saranno abilitati per impostazione predefinita. Quando disabilitato, i jails devono essere esplicitamente abilitati.", "settings.default_bantime": "Bantime predefinito", - "settings.default_bantime.description": "Il numero di secondi per cui un host viene bannato. Formato tempo: 1h = 1 ora, 1d = 1 giorno, 1w = 1 settimana, 1m = 1 mese, 1y = 1 anno.", + "settings.default_bantime.description": "Il numero di secondi per cui un host viene bannato. Formato tempo: 1m = 1 minuti, 1h = 1 ore, 1d = 1 giorni, 1w = 1 settimane, 1mo = 1 mesi, 1y = 1 anni.", "settings.default_bantime_placeholder": "es. 48h", "settings.banaction": "Banaction", "settings.banaction.description": "Azione di ban predefinita (es. iptables-multiport, iptables-allports, firewallcmd-multiport, ecc). Viene utilizzata per definire le variabili action_*.", "settings.banaction_allports": "Banaction Allports", "settings.banaction_allports.description": "Azione di ban per tutte le porte (es. iptables-allports, firewallcmd-allports, ecc). Utilizzata quando un jail deve bannare tutte le porte invece di porte specifiche.", "settings.default_findtime": "Findtime predefinito", - "settings.default_findtime.description": "Un host viene bannato se ha generato 'maxretry' errori durante gli ultimi 'findtime' secondi. Formato tempo: 1h = 1 ora, 1d = 1 giorno, 1w = 1 settimana, 1m = 1 mese, 1y = 1 anno.", + "settings.default_findtime.description": "Un host viene bannato se ha generato 'maxretry' errori durante gli ultimi 'findtime' secondi. Formato tempo: 1m = 1 minuti, 1h = 1 ore, 1d = 1 giorni, 1w = 1 settimane, 1mo = 1 mesi, 1y = 1 anni.", "settings.default_findtime_placeholder": "es. 30m", "settings.default_max_retry": "Numero massimo di tentativi predefinito", "settings.default_max_retry.description": "Numero di errori prima che un host venga bannato.", diff --git a/pkg/web/static/js/validation.js b/pkg/web/static/js/validation.js index b2a01b0..e70846d 100644 --- a/pkg/web/static/js/validation.js +++ b/pkg/web/static/js/validation.js @@ -2,11 +2,12 @@ function validateTimeFormat(value, fieldName) { if (!value || !value.trim()) return { valid: true }; // Empty is OK - const timePattern = /^\d+[smhdwmy]$/i; + // Support: s (seconds), m (minutes), h (hours), d (days), w (weeks), mo (months), y (years) + const timePattern = /^\d+([smhdwy]|mo)$/i; if (!timePattern.test(value.trim())) { return { valid: false, - message: 'Invalid time format. Use format like: 1h, 30m, 2d, 1w, 1m, 1y' + message: 'Invalid time format. Use format: 1m = 1 minute, 1h = 1 hour, 1d = 1 day, 1w = 1 week, 1mo = 1 month, 1y = 1 year' }; } return { valid: true };