package main import ( "net/http" "time" "gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/17th-UnitTracker-API/logger" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware" "github.com/rs/zerolog" "gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/17th-UnitTracker-API/db" "gitea.iceberg-gaming.com/17th-Ranger-Battalion-ORG/17th-UnitTracker-API/routes" ) func main() { var err error // err = godotenv.Load(".env") // if err != nil { // logger.Log.Warn().Err(err).Msg("Error loading .env file") // } e := echo.New() // Set up logging zerolog.TimeFieldFormat = time.RFC3339 logger.Log = logger.Log.Level(zerolog.TraceLevel) // logger.Log = logger.Log.Level(zerolog.DebugLevel) // logger.Log = logger.Log.Level(zerolog.InfoLevel) logger.Log.Info().Msg("Logger initialized") e.GET("/", func(c echo.Context) error { return c.String(http.StatusOK, "Hello, World!") }) err = LoadConfig() if err != nil { logger.Log.Fatal().Err(err).Msg("Error loading configuration") } else { logger.Log.Info().Msg("Configuration loaded") } // Connect to the database _, err = db.GetDB() if err != nil { logger.Log.Fatal().Err(err).Msg("Error connecting to the database") } else { logger.Log.Info().Msg("Connected to the database") } // Middleware e.Use(middleware.RequestLoggerWithConfig(middleware.RequestLoggerConfig{ LogLatency: true, LogURIPath: true, LogMethod: true, LogReferer: true, LogUserAgent: true, LogContentLength: true, LogError: true, LogRemoteIP: true, LogURI: true, LogStatus: true, LogHost: true, LogRoutePath: true, LogRequestID: true, LogValuesFunc: func(c echo.Context, v middleware.RequestLoggerValues) error { logger.Log.Trace(). Caller(). Interface("RequestLoggerValues", v). Send() return nil }, })) e.Use(middleware.SecureWithConfig(middleware.SecureConfig{ XSSProtection: "", ContentTypeNosniff: "", XFrameOptions: "", HSTSMaxAge: 3600, // ContentSecurityPolicy: "default-src 'self'", })) e.IPExtractor = echo.ExtractIPDirect() e.Use(middleware.Recover()) // Routes routes.SetupRoutes(e) e.Use(middleware.Static("static")) e.Logger.Fatal(e.Start(":" + Config.GetString("API_PORT"))) }