diff --git a/conf.go b/conf.go new file mode 100644 index 0000000000000000000000000000000000000000..c3833f8e2b28ba9a78a97cd44a83835cec966a8b --- /dev/null +++ b/conf.go @@ -0,0 +1,31 @@ +package main + +import "os" + +const ( + dbPath uint8 = iota + listenAddr + allowedOrigins + + confLen +) + +// env variable, default pairing +var confEnv = [confLen][2]string{ + {"DB", "db"}, + {"LISTEN_ADDR", "127.0.0.1:3000"}, + {"ALLOWED_ORIGINS", "https://hizla.io"}, +} + +// resolved config values +var conf [confLen]string + +func init() { + for i := 0; i < int(confLen); i++ { + if v, ok := os.LookupEnv(confEnv[i][0]); !ok { + conf[i] = confEnv[i][1] + } else { + conf[i] = v + } + } +} diff --git a/main.go b/main.go index e65f449f1c6a0f2d30edfeb080d0c756b14227f8..e2faff58730e4ee8c994bf0cf4692a9f7692b497 100644 --- a/main.go +++ b/main.go @@ -1,27 +1,26 @@ package main import ( - "github.com/gofiber/fiber/v2" - "github.com/gofiber/fiber/v2/middleware/cors" - "github.com/gofiber/fiber/v2/middleware/limiter" "log" - "os" "regexp" "time" + + "github.com/gofiber/fiber/v2" + "github.com/gofiber/fiber/v2/middleware/cors" + "github.com/gofiber/fiber/v2/middleware/limiter" ) var emailRegex = regexp.MustCompile(`^[a-z0-9._%+\-]+@[a-z0-9.\-]+\.[a-z]{2,4}$`) func main() { - app := fiber.New() app.Use(cors.New(cors.Config{ - AllowOrigins: os.Getenv("ALLOWED_ORIGINS"), + AllowOrigins: conf[allowedOrigins], AllowHeaders: "Origin, Content-Type, Accept", })) - if err := InitDB("waitlistdb"); err != nil { + if err := InitDB(conf[dbPath]); err != nil { log.Fatalf("Failed to initialize LevelDB: %v", err) } @@ -89,16 +88,10 @@ func main() { }) }) - // Graceful shutdown app.Use(func(c *fiber.Ctx) error { return c.Next() }) - port := os.Getenv("PORT") - if port == "" { - port = "3000" - } - - log.Fatal(app.Listen(":" + port)) + log.Fatal(app.Listen(conf[listenAddr])) }