package app import ( "os" "code.lila.network/adoralaura/go-urlsh/internal/misc" "code.lila.network/adoralaura/go-urlsh/internal/web" "github.com/gofiber/fiber/v2" "github.com/gofiber/fiber/v2/middleware/compress" "github.com/gofiber/fiber/v2/middleware/cors" "github.com/gofiber/fiber/v2/middleware/etag" "github.com/gofiber/fiber/v2/middleware/logger" "github.com/gofiber/fiber/v2/middleware/recover" "github.com/gofiber/template/html/v2" ) func SetupFiber() error { var prod = false var port = "3000" var ip = "" var proxyheader = "X-Forwarded-For" var template_engine = html.New("./views", ".tmpl") if os.Getenv("PROD") == "true" { prod = true } if os.Getenv("PORT") != "" { port = os.Getenv("PORT") } if os.Getenv("LISTEN") != "" { ip = os.Getenv("LISTEN") } if os.Getenv("PROXYHEADER") != "" { proxyheader = os.Getenv("PROXYHEADER") } fiberapp := fiber.New(fiber.Config{ AppName: "go-urlsh", ProxyHeader: proxyheader, Prefork: prod, ErrorHandler: misc.HandleError, Views: template_engine, CompressedFileSuffix: ".gz", }) fiberapp.Use(logger.New(logger.Config{Format: "[${ip}]:${port} ${status} ${method} ${path}\n"})) fiberapp.Use(etag.New(etag.Config{Weak: false})) fiberapp.Use(compress.New()) fiberapp.Use(recover.New()) addWebRoutes(fiberapp) fiberapp.Static("/admin/", "./web") fiberapp.Get("/", web.HandleIndexGet) fiberapp.Get("/:id", web.HandleIndexGet) v1 := fiberapp.Group("/api/v1") v1.Use(cors.New(cors.Config{AllowOrigins: "*"})) addApiRoutes(v1) listenerr := fiberapp.Listen(ip + ":" + port) if listenerr != nil { return listenerr } return nil }