diff --git a/internal/config/settings.go b/internal/config/settings.go index 27fba0e..45f0ff9 100644 --- a/internal/config/settings.go +++ b/internal/config/settings.go @@ -43,7 +43,7 @@ type AppSettings struct { Language string `json:"language"` Port int `json:"port"` Debug bool `json:"debug"` - ReloadNeeded bool `json:"reloadNeeded"` + RestartNeeded bool `json:"restartNeeded"` AlertCountries []string `json:"alertCountries"` SMTP SMTPSettings `json:"smtp"` @@ -406,25 +406,25 @@ func GetSettings() AppSettings { return currentSettings } -// MarkReloadNeeded sets reloadNeeded = true and saves JSON -func MarkReloadNeeded() error { +// MarkRestartNeeded sets restartNeeded = true and saves JSON +func MarkRestartNeeded() error { settingsLock.Lock() defer settingsLock.Unlock() - currentSettings.ReloadNeeded = true + currentSettings.RestartNeeded = true return saveSettings() } -// MarkReloadDone sets reloadNeeded = false and saves JSON -func MarkReloadDone() error { +// MarkRestartDone sets restartNeeded = false and saves JSON +func MarkRestartDone() error { settingsLock.Lock() defer settingsLock.Unlock() - currentSettings.ReloadNeeded = false + currentSettings.RestartNeeded = false return saveSettings() } -// UpdateSettings merges new settings with old and sets reloadNeeded if needed +// UpdateSettings merges new settings with old and sets restartNeeded if needed func UpdateSettings(new AppSettings) (AppSettings, error) { settingsLock.Lock() defer settingsLock.Unlock() @@ -442,15 +442,15 @@ func UpdateSettings(new AppSettings) (AppSettings, error) { old.Destemail != new.Destemail || //old.Sender != new.Sender { old.Maxretry != new.Maxretry { - new.ReloadNeeded = true + new.RestartNeeded = true } else { - // preserve previous ReloadNeeded if it was already true - new.ReloadNeeded = new.ReloadNeeded || old.ReloadNeeded + // preserve previous RestartNeeded if it was already true + new.RestartNeeded = new.RestartNeeded || old.RestartNeeded } // Countries change? Currently also requires a reload if !equalStringSlices(old.AlertCountries, new.AlertCountries) { - new.ReloadNeeded = true + new.RestartNeeded = true } currentSettings = new diff --git a/internal/locales/de.json b/internal/locales/de.json index 781ff0a..50951fb 100644 --- a/internal/locales/de.json +++ b/internal/locales/de.json @@ -3,8 +3,8 @@ "nav.dashboard": "Dashboard", "nav.filter_debug": "Filter-Debug", "nav.settings": "Einstellungen", - "reload_banner.message": "Konfiguration geändert!", - "reload_banner.button": "Fail2ban neu laden", + "restart_banner.message": "Fail2ban Konfiguration geändert! Um Änderungen zu übernehmen bitte: ", + "restart_banner.button": "Service neu starten", "dashboard.title": "Dashboard", "dashboard.overview": "Aktive Jails und Blocks Übersicht", "dashboard.search_label": "Suche gesperrte IPs", diff --git a/internal/locales/de_ch.json b/internal/locales/de_ch.json index 4443197..090c4fd 100644 --- a/internal/locales/de_ch.json +++ b/internal/locales/de_ch.json @@ -3,8 +3,8 @@ "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", + "restart_banner.message": "Fail2ban Konfiguration gänderet! Für d'Änderige z'überneh, bitte: ", + "restart_banner.button": "Service neu starte", "dashboard.title": "Dashboard", "dashboard.overview": "Übersicht vo de aktive Jails und Blocks", "dashboard.search_label": "Suech nach g'sperrte IPs", diff --git a/internal/locales/en.json b/internal/locales/en.json index abb3941..906ae2d 100644 --- a/internal/locales/en.json +++ b/internal/locales/en.json @@ -3,8 +3,8 @@ "nav.dashboard": "Dashboard", "nav.filter_debug": "Filter Debug", "nav.settings": "Settings", - "reload_banner.message": "Configuration changed!", - "reload_banner.button": "Reload Fail2ban", + "restart_banner.message": "Fail2ban configuration changed! To apply the changes, please: ", + "restart_banner.button": "Restart Service", "dashboard.title": "Dashboard", "dashboard.overview": "Overview active Jails and Blocks", "dashboard.search_label": "Search Banned IPs", diff --git a/internal/locales/es.json b/internal/locales/es.json index 8e3ba08..5cc45fd 100644 --- a/internal/locales/es.json +++ b/internal/locales/es.json @@ -3,8 +3,8 @@ "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", + "restart_banner.message": "¡Configuración de Fail2ban modificada! Para aplicar los cambios, por favor: ", + "restart_banner.button": "Reiniciar servicio", "dashboard.title": "Panel de control", "dashboard.overview": "Resumen de Jails y Bloqueos activos", "dashboard.search_label": "Buscar IP bloqueadas", diff --git a/internal/locales/fr.json b/internal/locales/fr.json index e4045c7..32ff476 100644 --- a/internal/locales/fr.json +++ b/internal/locales/fr.json @@ -3,8 +3,8 @@ "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", + "restart_banner.message": "Configuration Fail2ban modifiée ! Pour appliquer les changements, veuillez: ", + "restart_banner.button": "Redémarrer le service", "dashboard.title": "Tableau de bord", "dashboard.overview": "Vue d'ensemble des jails et blocages actifs", "dashboard.search_label": "Rechercher des IP bloquées", diff --git a/internal/locales/it.json b/internal/locales/it.json index a55cabb..9336462 100644 --- a/internal/locales/it.json +++ b/internal/locales/it.json @@ -3,8 +3,8 @@ "nav.dashboard": "Cruscotto", "nav.filter_debug": "Debug Filtro", "nav.settings": "Impostazioni", - "reload_banner.message": "Configurazione modificata!", - "reload_banner.button": "Ricarica Fail2ban", + "restart_banner.message": "Configurazione di Fail2ban modificata! Per applicare le modifiche, per favore: ", + "restart_banner.button": "Riavvia il servizio", "dashboard.title": "Cruscotto", "dashboard.overview": "Panoramica dei jail e dei blocchi attivi", "dashboard.search_label": "Cerca IP bloccate", diff --git a/pkg/web/handlers.go b/pkg/web/handlers.go index b941feb..4044002 100644 --- a/pkg/web/handlers.go +++ b/pkg/web/handlers.go @@ -266,7 +266,7 @@ func SetJailFilterConfigHandler(c *gin.Context) { } // Mark reload needed in our UI settings - // if err := config.MarkReloadNeeded(); err != nil { + // if err := config.MarkRestartNeeded(); err != nil { // c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) // return // } @@ -276,7 +276,7 @@ func SetJailFilterConfigHandler(c *gin.Context) { // Return a simple JSON response without forcing a blocking alert // c.JSON(http.StatusOK, gin.H{ // "message": "Filter updated, reload needed", - // "reloadNeeded": true, + // "restartNeeded": true, // }) } @@ -316,7 +316,7 @@ func UpdateJailManagementHandler(c *gin.Context) { // c.JSON(http.StatusInternalServerError, gin.H{"error": "Failed to reload fail2ban: " + err.Error()}) // return //} - if err := config.MarkReloadNeeded(); err != nil { + if err := config.MarkRestartNeeded(); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } @@ -355,8 +355,8 @@ func UpdateSettingsHandler(c *gin.Context) { config.DebugLog("Settings updated successfully (handlers.go)") c.JSON(http.StatusOK, gin.H{ - "message": "Settings updated", - "reloadNeeded": newSettings.ReloadNeeded, + "message": "Settings updated", + "restartNeeded": newSettings.RestartNeeded, }) } @@ -428,8 +428,8 @@ func ApplyFail2banSettings(jailLocalPath string) error { return os.WriteFile(jailLocalPath, []byte(content), 0644) } -// ReloadFail2banHandler reloads the Fail2ban service -func ReloadFail2banHandler(c *gin.Context) { +// RestartFail2banHandler reloads the Fail2ban service +func RestartFail2banHandler(c *gin.Context) { config.DebugLog("----------------------------") config.DebugLog("ApplyFail2banSettings called (handlers.go)") // entry point @@ -439,18 +439,18 @@ func ReloadFail2banHandler(c *gin.Context) { // return // } - // Then reload - if err := fail2ban.ReloadFail2ban(); err != nil { + // Then restart + if err := fail2ban.RestartFail2ban(); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } - // We set reload done in config - if err := config.MarkReloadDone(); err != nil { + // We set restart done in config + if err := config.MarkRestartDone(); err != nil { c.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()}) return } - c.JSON(http.StatusOK, gin.H{"message": "Fail2ban reloaded successfully"}) + c.JSON(http.StatusOK, gin.H{"message": "Fail2ban restarted successfully"}) } // ******************************************************************* diff --git a/pkg/web/routes.go b/pkg/web/routes.go index 0765c29..074e42b 100644 --- a/pkg/web/routes.go +++ b/pkg/web/routes.go @@ -54,8 +54,8 @@ func RegisterRoutes(r *gin.Engine) { // TODO: create or generate new filters // api.POST("/filters/generate", GenerateFilterHandler) - // Reload endpoint - api.POST("/fail2ban/reload", ReloadFail2banHandler) + // Restart endpoint + api.POST("/fail2ban/restart", RestartFail2banHandler) // Handle Fail2Ban notifications api.POST("/ban", BanNotificationHandler) diff --git a/pkg/web/templates/index.html b/pkg/web/templates/index.html index 31f018f..f5daa0e 100644 --- a/pkg/web/templates/index.html +++ b/pkg/web/templates/index.html @@ -45,8 +45,8 @@ height: 4rem; } - /* Reload banner */ - #reloadBanner { + /* Restart banner */ + #restartBanner { display: none; } @@ -95,10 +95,10 @@ - -