Merge pull request #5 from swissmakers/dev

Dev
This commit is contained in:
Swissmakers GmbH
2025-02-19 13:34:58 +01:00
committed by GitHub
9 changed files with 1427 additions and 963 deletions

View File

@@ -12,36 +12,43 @@ import (
)
func main() {
// Get application settings from the config package.
settings := config.GetSettings()
// Set Gin mode based on settings
// Set Gin mode based on the debug flag in settings.
if settings.Debug {
gin.SetMode(gin.DebugMode)
} else {
gin.SetMode(gin.ReleaseMode)
}
// Create a new Gin router.
router := gin.Default()
// To detect if running inside a container or not
// Load HTML templates depending on whether the application is running inside a container.
_, container := os.LookupEnv("CONTAINER")
if container {
router.LoadHTMLGlob("/app/templates/*") // Load HTML templates
// In container, templates are assumed to be in /app/templates
router.LoadHTMLGlob("/app/templates/*")
} else {
router.LoadHTMLGlob("pkg/web/templates/*") // Load HTML templates
// When running locally, load templates from pkg/web/templates
router.LoadHTMLGlob("pkg/web/templates/*")
}
// Register all application routes, including the static file serving route for locales.
web.RegisterRoutes(router)
printWelcomeBanner()
log.Println("--- Fail2Ban-UI started in", gin.Mode(), "mode ---")
log.Println("Server listening on port :8080.")
// Start the server on port 8080.
if err := router.Run(":8080"); err != nil {
log.Fatalf("Server crashed: %v", err)
}
}
// printWelcomeBanner prints a cool Tux banner with startup info
// printWelcomeBanner prints a cool Tux banner with startup info.
func printWelcomeBanner() {
greeting := getGreeting()
const tuxBanner = `
@@ -64,7 +71,7 @@ Listening on: http://0.0.0.0:8080
fmt.Printf(tuxBanner, greeting, gin.Mode())
}
// getGreeting returns a friendly greeting based on the time of day
// getGreeting returns a friendly greeting based on the time of day.
func getGreeting() string {
hour := time.Now().Hour()
switch {

69
internal/locales/de.json Normal file
View File

@@ -0,0 +1,69 @@
{
"page.title": "Fail2ban UI Dashboard",
"nav.dashboard": "Dashboard",
"nav.filter_debug": "Filter-Debug",
"nav.settings": "Einstellungen",
"reload_banner.message": "Konfiguration geändert!",
"reload_banner.button": "Fail2ban neu laden",
"dashboard.title": "Dashboard",
"dashboard.overview": "Aktive Jails und Blocks Übersicht",
"dashboard.search_label": "Suche gesperrte IPs",
"dashboard.search_placeholder": "Geben Sie eine IP-Adresse zum Suchen ein",
"dashboard.table.jail_name": "Jail-Name",
"dashboard.table.total_banned": "Insgesamt gesperrt",
"dashboard.table.new_last_hour": "Neu in letzter Stunde",
"dashboard.table.banned_ips": "Gesperrte IPs (Entsperren)",
"dashboard.no_jails": "Keine Jails gefunden.",
"dashboard.last_bans": "Letzte 5 Sperrvorgänge",
"dashboard.table.time": "Zeit",
"dashboard.table.jail": "Jail",
"dashboard.table.ip": "IP",
"dashboard.table.log_line": "Logzeile",
"dashboard.no_recent_bans": "Keine aktuellen Sperrvorgänge gefunden.",
"dashboard.no_banned_ips": "Keine gesperrten IPs",
"dashboard.unban": "Entsperren",
"filter_debug.title": "Filter-Debug",
"filter_debug.select_filter": "Wählen Sie einen Filter",
"filter_debug.log_lines": "Logzeilen",
"filter_debug.log_lines_placeholder": "Geben Sie die Logzeilen hier ein...",
"filter_debug.test_filter": "Filter testen",
"filter_debug.test_results_title": "Testergebnisse",
"filter_debug.no_matches": "Keine Übereinstimmungen gefunden.",
"settings.title": "Einstellungen",
"settings.general": "Allgemeine Einstellungen",
"settings.language": "Sprache",
"settings.enable_debug": "Debug-Protokoll aktivieren",
"settings.alert": "Alarm-Einstellungen",
"settings.destination_email": "Ziel-E-Mail (Alarmempfänger)",
"settings.destination_email_placeholder": "alerts@swissmakers.ch",
"settings.alert_countries": "Alarm-Länder",
"settings.alert_countries_description": "Wählen Sie die Länder aus, für die E-Mail-Alarme ausgelöst werden sollen, wenn eine Sperrung erfolgt.",
"settings.smtp": "SMTP-Konfiguration",
"settings.smtp_host": "SMTP-Host",
"settings.smtp_host_placeholder": "z.B. smtp.gmail.com",
"settings.smtp_port": "SMTP-Port",
"settings.smtp_username": "SMTP-Benutzername",
"settings.smtp_username_placeholder": "z.B. user@example.com",
"settings.smtp_password": "SMTP-Passwort",
"settings.smtp_password_placeholder": "Geben Sie das SMTP-Passwort ein",
"settings.smtp_sender": "Absender-E-Mail",
"settings.smtp_sender_placeholder": "noreply@swissmakers.ch",
"settings.smtp_tls": "TLS verwenden (empfohlen)",
"settings.send_test_email": "Test-E-Mail senden",
"settings.fail2ban": "Fail2Ban-Konfiguration",
"settings.enable_bantime_increment": "Bantime-Inkrement aktivieren",
"settings.default_bantime": "Standard-Bantime",
"settings.default_bantime_placeholder": "z.B. 48h",
"settings.default_findtime": "Standard-Findtime",
"settings.default_findtime_placeholder": "z.B. 30m",
"settings.default_max_retry": "Standard-Maximalversuche",
"settings.default_max_retry_placeholder": "Geben Sie die maximale Anzahl der Versuche ein",
"settings.ignore_ips": "IP-Adressen ignorieren",
"settings.ignore_ips_placeholder": "IP-Adressen, getrennt durch Leerzeichen",
"settings.save": "Speichern",
"modal.filter_config": "Filter-Konfiguration:",
"modal.cancel": "Abbrechen",
"modal.save": "Speichern",
"loading": "Lade..."
}

View File

@@ -0,0 +1,69 @@
{
"page.title": "Fail2ban UI Dashboard",
"nav.dashboard": "Dashboard",
"nav.filter_debug": "Filter Debug",
"nav.settings": "Istellige",
"reload_banner.message": "D'Konfiguration isch gänderet worde!",
"reload_banner.button": "Fail2ban neu lade",
"dashboard.title": "Dashboard",
"dashboard.overview": "Übersicht vo de aktive Jails und Blocks",
"dashboard.search_label": "Suech nach g'sperrte IPs",
"dashboard.search_placeholder": "Gib d'IP adrässe i, wo du suechsch",
"dashboard.table.jail_name": "Jail-Name",
"dashboard.table.total_banned": "Insgsamt g'sperrt",
"dashboard.table.new_last_hour": "Neu in dr letschte Stund",
"dashboard.table.banned_ips": "G'sperrti IPs (Entsperre)",
"dashboard.no_jails": "Kei Jails gfunde.",
"dashboard.last_bans": "Letschti 5 Sperrvorgäng",
"dashboard.table.time": "Zyt",
"dashboard.table.jail": "Jail",
"dashboard.table.ip": "IP",
"dashboard.table.log_line": "Log-Zile",
"dashboard.no_recent_bans": "Kei aktuelli Sperrvorgäng gfunde.",
"dashboard.no_banned_ips": "Kei g'sperrti IPs",
"dashboard.unban": "Entsperre",
"filter_debug.title": "Filter Debug",
"filter_debug.select_filter": "Wähl en Filter us",
"filter_debug.log_lines": "Log-Zile",
"filter_debug.log_lines_placeholder": "Gib ä Log-Zile da ii...",
"filter_debug.test_filter": "Filter teste",
"filter_debug.test_results_title": "Testergebnis",
"filter_debug.no_matches": "Kei Übereinstimmige gfunde.",
"settings.title": "Istellige",
"settings.general": "Allgemeini Istellige",
"settings.language": "Sprach",
"settings.enable_debug": "Debug-Modus aktivierä",
"settings.alert": "Alarm-Istellige",
"settings.destination_email": "Ziil-Email (Alarmempfänger)",
"settings.destination_email_placeholder": "alerts@swissmakers.ch",
"settings.alert_countries": "Alarm-Länder",
"settings.alert_countries_description": "Wähl d'Länder us, für weli du per Email ä Alarm becho wetsch, wenn e Sperrig passiert.",
"settings.smtp": "SMTP-Konfiguration",
"settings.smtp_host": "SMTP-Host",
"settings.smtp_host_placeholder": "z.B. smtp.gmail.com",
"settings.smtp_port": "SMTP-Port",
"settings.smtp_username": "SMTP-Benutzername",
"settings.smtp_username_placeholder": "z.B. user@example.com",
"settings.smtp_password": "SMTP-Passwort",
"settings.smtp_password_placeholder": "Gib s'SMTP-Passwort ii",
"settings.smtp_sender": "Absänder-Email",
"settings.smtp_sender_placeholder": "noreply@swissmakers.ch",
"settings.smtp_tls": "TLS bruuche (empfohlen)",
"settings.send_test_email": "Test-Email schicke",
"settings.fail2ban": "Fail2Ban-Konfiguration",
"settings.enable_bantime_increment": "Bantime-Inkrement aktivierä",
"settings.default_bantime": "Standard-Bantime",
"settings.default_bantime_placeholder": "z.B. 48h",
"settings.default_findtime": "Standard-Findtime",
"settings.default_findtime_placeholder": "z.B. 30m",
"settings.default_max_retry": "Standard-Maximalversüech",
"settings.default_max_retry_placeholder": "Gib d'maximal Versüech ii",
"settings.ignore_ips": "IPs ignorierä",
"settings.ignore_ips_placeholder": "IPs, getrennt dur e Leerzeichä",
"settings.save": "Speicherä",
"modal.filter_config": "Filter-Konfiguration:",
"modal.cancel": "Abbräche",
"modal.save": "Speicherä",
"loading": "Lade..."
}

69
internal/locales/en.json Normal file
View File

@@ -0,0 +1,69 @@
{
"page.title": "Fail2ban UI Dashboard",
"nav.dashboard": "Dashboard",
"nav.filter_debug": "Filter Debug",
"nav.settings": "Settings",
"reload_banner.message": "Configuration changed!",
"reload_banner.button": "Reload Fail2ban",
"dashboard.title": "Dashboard",
"dashboard.overview": "Overview active Jails and Blocks",
"dashboard.search_label": "Search Banned IPs",
"dashboard.search_placeholder": "Enter IP address to search",
"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.last_bans": "Last 5 Ban Events",
"dashboard.table.time": "Time",
"dashboard.table.jail": "Jail",
"dashboard.table.ip": "IP",
"dashboard.table.log_line": "Log Line",
"dashboard.no_recent_bans": "No recent bans found.",
"dashboard.no_banned_ips": "No banned IPs",
"dashboard.unban": "Unban",
"filter_debug.title": "Filter Debug",
"filter_debug.select_filter": "Select a Filter",
"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.enable_debug": "Enable Debug Log",
"settings.alert": "Alert Settings",
"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.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": "Fail2Ban Configuration",
"settings.enable_bantime_increment": "Enable Bantime Increment",
"settings.default_bantime": "Default Bantime",
"settings.default_bantime_placeholder": "e.g., 48h",
"settings.default_findtime": "Default Findtime",
"settings.default_findtime_placeholder": "e.g., 30m",
"settings.default_max_retry": "Default Max Retry",
"settings.default_max_retry_placeholder": "Enter maximum retries",
"settings.ignore_ips": "Ignore IPs",
"settings.ignore_ips_placeholder": "IPs to ignore, separated by spaces",
"settings.save": "Save",
"modal.filter_config": "Filter Config:",
"modal.cancel": "Cancel",
"modal.save": "Save",
"loading": "Loading..."
}

68
internal/locales/es.json Normal file
View File

@@ -0,0 +1,68 @@
{
"page.title": "Panel de control Fail2ban UI",
"nav.dashboard": "Panel de control",
"nav.filter_debug": "Depuración de filtros",
"nav.settings": "Configuración",
"reload_banner.message": "¡La configuración ha sido modificada!",
"reload_banner.button": "Recargar Fail2ban",
"dashboard.title": "Panel de control",
"dashboard.overview": "Resumen de Jails y Bloqueos activos",
"dashboard.search_label": "Buscar IP bloqueadas",
"dashboard.search_placeholder": "Introduce la dirección IP a buscar",
"dashboard.table.jail_name": "Nombre del Jail",
"dashboard.table.total_banned": "Total bloqueadas",
"dashboard.table.new_last_hour": "Nuevas en la última hora",
"dashboard.table.banned_ips": "IPs bloqueadas (Desbloquear)",
"dashboard.no_jails": "No se encontraron jails.",
"dashboard.last_bans": "Últimos 5 eventos de bloqueo",
"dashboard.table.time": "Hora",
"dashboard.table.jail": "Jail",
"dashboard.table.ip": "IP",
"dashboard.table.log_line": "Línea de log",
"dashboard.no_recent_bans": "No se encontraron bloqueos recientes.",
"dashboard.no_banned_ips": "No hay IP bloqueadas",
"dashboard.unban": "Desbloquear",
"filter_debug.title": "Depuración de filtros",
"filter_debug.select_filter": "Selecciona un filtro",
"filter_debug.log_lines": "Líneas de log",
"filter_debug.log_lines_placeholder": "Introduce las líneas de log aquí...",
"filter_debug.test_filter": "Probar filtro",
"filter_debug.test_results_title": "Resultados de la prueba",
"filter_debug.no_matches": "No se encontraron coincidencias.",
"settings.title": "Configuración",
"settings.general": "Configuración general",
"settings.language": "Idioma",
"settings.enable_debug": "Habilitar el modo de depuración",
"settings.alert": "Configuración de alertas",
"settings.destination_email": "Correo electrónico de destino (receptor de alertas)",
"settings.destination_email_placeholder": "alerts@swissmakers.ch",
"settings.alert_countries": "Países para alerta",
"settings.alert_countries_description": "Elige los países para los que deseas recibir alertas por correo electrónico cuando se produzca un bloqueo.",
"settings.smtp": "Configuración SMTP",
"settings.smtp_host": "Host SMTP",
"settings.smtp_host_placeholder": "p.ej., smtp.gmail.com",
"settings.smtp_port": "Puerto SMTP",
"settings.smtp_username": "Nombre de usuario SMTP",
"settings.smtp_username_placeholder": "p.ej., usuario@example.com",
"settings.smtp_password": "Contraseña SMTP",
"settings.smtp_password_placeholder": "Introduce la contraseña SMTP",
"settings.smtp_sender": "Correo electrónico del remitente",
"settings.smtp_sender_placeholder": "noreply@swissmakers.ch",
"settings.smtp_tls": "Usar TLS (recomendado)",
"settings.send_test_email": "Enviar correo de prueba",
"settings.fail2ban": "Configuración de Fail2Ban",
"settings.enable_bantime_increment": "Habilitar incremento de Bantime",
"settings.default_bantime": "Bantime por defecto",
"settings.default_bantime_placeholder": "p.ej., 48h",
"settings.default_findtime": "Findtime por defecto",
"settings.default_findtime_placeholder": "p.ej., 30m",
"settings.default_max_retry": "Número máximo de reintentos por defecto",
"settings.default_max_retry_placeholder": "Introduce el número máximo de reintentos",
"settings.ignore_ips": "Ignorar IPs",
"settings.ignore_ips_placeholder": "IPs a ignorar, separadas por espacios",
"settings.save": "Guardar",
"modal.filter_config": "Configuración del filtro:",
"modal.cancel": "Cancelar",
"modal.save": "Guardar",
"loading": "Cargando..."
}

68
internal/locales/fr.json Normal file
View File

@@ -0,0 +1,68 @@
{
"page.title": "Tableau de bord Fail2ban UI",
"nav.dashboard": "Tableau de bord",
"nav.filter_debug": "Débogage des filtres",
"nav.settings": "Paramètres",
"reload_banner.message": "Configuration modifiée!",
"reload_banner.button": "Recharger Fail2ban",
"dashboard.title": "Tableau de bord",
"dashboard.overview": "Vue d'ensemble des jails et blocages actifs",
"dashboard.search_label": "Rechercher des IP bloquées",
"dashboard.search_placeholder": "Entrez l'adresse IP à rechercher",
"dashboard.table.jail_name": "Nom du Jail",
"dashboard.table.total_banned": "Total bloqués",
"dashboard.table.new_last_hour": "Nouveaux dans la dernière heure",
"dashboard.table.banned_ips": "IPs bloquées (Débloquer)",
"dashboard.no_jails": "Aucun jail trouvé.",
"dashboard.last_bans": "5 derniers événements de blocage",
"dashboard.table.time": "Heure",
"dashboard.table.jail": "Jail",
"dashboard.table.ip": "IP",
"dashboard.table.log_line": "Ligne de log",
"dashboard.no_recent_bans": "Aucun blocage récent trouvé.",
"dashboard.no_banned_ips": "Aucune IP bloquée",
"dashboard.unban": "Débloquer",
"filter_debug.title": "Débogage des filtres",
"filter_debug.select_filter": "Sélectionnez un filtre",
"filter_debug.log_lines": "Lignes de log",
"filter_debug.log_lines_placeholder": "Entrez les lignes de log ici...",
"filter_debug.test_filter": "Tester le filtre",
"filter_debug.test_results_title": "Résultats du test",
"filter_debug.no_matches": "Aucune correspondance trouvée.",
"settings.title": "Paramètres",
"settings.general": "Paramètres généraux",
"settings.language": "Langue",
"settings.enable_debug": "Activer le mode débogage",
"settings.alert": "Paramètres d'alerte",
"settings.destination_email": "Email de destination (récepteur des alertes)",
"settings.destination_email_placeholder": "alerts@swissmakers.ch",
"settings.alert_countries": "Pays d'alerte",
"settings.alert_countries_description": "Choisissez les pays pour lesquels vous souhaitez recevoir des alertes par email lors d'un blocage.",
"settings.smtp": "Configuration SMTP",
"settings.smtp_host": "Hôte SMTP",
"settings.smtp_host_placeholder": "par exemple, smtp.gmail.com",
"settings.smtp_port": "Port SMTP",
"settings.smtp_username": "Nom d'utilisateur SMTP",
"settings.smtp_username_placeholder": "par exemple, utilisateur@example.com",
"settings.smtp_password": "Mot de passe SMTP",
"settings.smtp_password_placeholder": "Entrez le mot de passe SMTP",
"settings.smtp_sender": "Email de l'expéditeur",
"settings.smtp_sender_placeholder": "noreply@swissmakers.ch",
"settings.smtp_tls": "Utiliser TLS (recommandé)",
"settings.send_test_email": "Envoyer un email de test",
"settings.fail2ban": "Configuration Fail2Ban",
"settings.enable_bantime_increment": "Activer l'incrémentation du Bantime",
"settings.default_bantime": "Bantime par défaut",
"settings.default_bantime_placeholder": "par exemple, 48h",
"settings.default_findtime": "Findtime par défaut",
"settings.default_findtime_placeholder": "par exemple, 30m",
"settings.default_max_retry": "Nombre maximal de réessais par défaut",
"settings.default_max_retry_placeholder": "Entrez le nombre maximal de réessais",
"settings.ignore_ips": "Ignorer les IPs",
"settings.ignore_ips_placeholder": "IPs à ignorer, séparées par des espaces",
"settings.save": "Enregistrer",
"modal.filter_config": "Configuration du filtre:",
"modal.cancel": "Annuler",
"modal.save": "Enregistrer",
"loading": "Chargement..."
}

68
internal/locales/it.json Normal file
View File

@@ -0,0 +1,68 @@
{
"page.title": "Cruscotto Fail2ban UI",
"nav.dashboard": "Cruscotto",
"nav.filter_debug": "Debug Filtro",
"nav.settings": "Impostazioni",
"reload_banner.message": "Configurazione modificata!",
"reload_banner.button": "Ricarica Fail2ban",
"dashboard.title": "Cruscotto",
"dashboard.overview": "Panoramica dei jail e dei blocchi attivi",
"dashboard.search_label": "Cerca IP bloccate",
"dashboard.search_placeholder": "Inserisci l'indirizzo IP da cercare",
"dashboard.table.jail_name": "Nome del Jail",
"dashboard.table.total_banned": "Totale bloccate",
"dashboard.table.new_last_hour": "Nuove nell'ultima ora",
"dashboard.table.banned_ips": "IP bloccate (Sblocca)",
"dashboard.no_jails": "Nessun jail trovato.",
"dashboard.last_bans": "Ultimi 5 eventi di blocco",
"dashboard.table.time": "Ora",
"dashboard.table.jail": "Jail",
"dashboard.table.ip": "IP",
"dashboard.table.log_line": "Riga di log",
"dashboard.no_recent_bans": "Nessun blocco recente trovato.",
"dashboard.no_banned_ips": "Nessuna IP bloccata",
"dashboard.unban": "Sblocca",
"filter_debug.title": "Debug Filtro",
"filter_debug.select_filter": "Seleziona un filtro",
"filter_debug.log_lines": "Righe di log",
"filter_debug.log_lines_placeholder": "Inserisci qui le righe di log...",
"filter_debug.test_filter": "Testa filtro",
"filter_debug.test_results_title": "Risultati del test",
"filter_debug.no_matches": "Nessuna corrispondenza trovata.",
"settings.title": "Impostazioni",
"settings.general": "Impostazioni generali",
"settings.language": "Lingua",
"settings.enable_debug": "Abilita debug",
"settings.alert": "Impostazioni di allarme",
"settings.destination_email": "Email di destinazione (ricevente allarmi)",
"settings.destination_email_placeholder": "alerts@swissmakers.ch",
"settings.alert_countries": "Paesi per allarme",
"settings.alert_countries_description": "Seleziona i paesi per i quali desideri ricevere allarmi via email quando si verifica un blocco.",
"settings.smtp": "Configurazione SMTP",
"settings.smtp_host": "Host SMTP",
"settings.smtp_host_placeholder": "es. smtp.gmail.com",
"settings.smtp_port": "Porta SMTP",
"settings.smtp_username": "Nome utente SMTP",
"settings.smtp_username_placeholder": "es. utente@example.com",
"settings.smtp_password": "Password SMTP",
"settings.smtp_password_placeholder": "Inserisci la password SMTP",
"settings.smtp_sender": "Email del mittente",
"settings.smtp_sender_placeholder": "noreply@swissmakers.ch",
"settings.smtp_tls": "Usa TLS (raccomandato)",
"settings.send_test_email": "Invia email di test",
"settings.fail2ban": "Configurazione Fail2Ban",
"settings.enable_bantime_increment": "Abilita incremento del Bantime",
"settings.default_bantime": "Bantime predefinito",
"settings.default_bantime_placeholder": "es. 48h",
"settings.default_findtime": "Findtime predefinito",
"settings.default_findtime_placeholder": "es. 30m",
"settings.default_max_retry": "Numero massimo di tentativi predefinito",
"settings.default_max_retry_placeholder": "Inserisci il numero massimo di tentativi",
"settings.ignore_ips": "Ignora IP",
"settings.ignore_ips_placeholder": "IP da ignorare, separate da spazi",
"settings.save": "Salva",
"modal.filter_config": "Configurazione del filtro:",
"modal.cancel": "Annulla",
"modal.save": "Salva",
"loading": "Caricamento..."
}

View File

@@ -22,6 +22,10 @@ import (
// RegisterRoutes sets up the routes for the Fail2ban UI.
func RegisterRoutes(r *gin.Engine) {
// Serve static files for locales from the "internal/locales" directory.
// (This makes the translation files available under the /locales/ URL.)
r.Static("/locales", "./internal/locales")
// Render the dashboard
r.GET("/", IndexHandler)
@@ -30,19 +34,19 @@ func RegisterRoutes(r *gin.Engine) {
api.GET("/summary", SummaryHandler)
api.POST("/jails/:jail/unban/:ip", UnbanIPHandler)
// config endpoints
// Config endpoints
api.GET("/jails/:jail/config", GetJailFilterConfigHandler)
api.POST("/jails/:jail/config", SetJailFilterConfigHandler)
// settings
// Settings endpoints
api.GET("/settings", GetSettingsHandler)
api.POST("/settings", UpdateSettingsHandler)
api.POST("/settings/test-email", TestEmailHandler)
// filter debugger
// Filter debugger endpoints
api.GET("/filters", ListFiltersHandler)
api.POST("/filters/test", TestFilterHandler)
// TODO create or generate new filters
// TODO: create or generate new filters
// api.POST("/filters/generate", GenerateFilterHandler)
// Reload endpoint

File diff suppressed because it is too large Load Diff