102 lines
2.4 KiB
Go
102 lines
2.4 KiB
Go
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")
|
|
}
|
|
|
|
err = db.AutoMigrate()
|
|
if err != nil {
|
|
logger.Log.Fatal().Err(err).Msg("Error migrating the database")
|
|
} else {
|
|
logger.Log.Info().Msg("Database migrated")
|
|
}
|
|
|
|
// 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")))
|
|
}
|