mirror of
https://github.com/swissmakers/fail2ban-ui.git
synced 2026-04-11 13:47:05 +02:00
86 lines
2.0 KiB
Go
86 lines
2.0 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"log"
|
|
"os"
|
|
"time"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/swissmakers/fail2ban-ui/internal/config"
|
|
"github.com/swissmakers/fail2ban-ui/pkg/web"
|
|
)
|
|
|
|
func main() {
|
|
// Get application settings from the config package.
|
|
settings := config.GetSettings()
|
|
|
|
// 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()
|
|
|
|
// Load HTML templates depending on whether the application is running inside a container.
|
|
_, container := os.LookupEnv("CONTAINER")
|
|
if container {
|
|
// In container, templates are assumed to be in /app/templates
|
|
router.LoadHTMLGlob("/app/templates/*")
|
|
} else {
|
|
// 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.
|
|
func printWelcomeBanner() {
|
|
greeting := getGreeting()
|
|
const tuxBanner = `
|
|
.--.
|
|
|o_o | %s
|
|
|:_/ |
|
|
// \ \
|
|
(| | )
|
|
/'\_ _/'\
|
|
\___)=(___/
|
|
|
|
Fail2Ban UI - A Swissmade Management Interface
|
|
----------------------------------------------
|
|
Developers: https://swissmakers.ch
|
|
Mode: %s
|
|
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.
|
|
func getGreeting() string {
|
|
hour := time.Now().Hour()
|
|
switch {
|
|
case hour < 12:
|
|
return "Good morning!"
|
|
case hour < 18:
|
|
return "Good afternoon!"
|
|
default:
|
|
return "Good evening!"
|
|
}
|
|
}
|