package main import ( "context" "encoding/json" "os" "acooldomain.co/backend/auth" "acooldomain.co/backend/dbhandler" "acooldomain.co/backend/mail" "acooldomain.co/backend/models" "acooldomain.co/backend/servers" "acooldomain.co/backend/users" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) const CONFIG_PATH_ENV_VAR = "CONFIG_PATH" const MONGO_URL_ENV_VAR = "MONGO_URL" func main() { router := gin.Default() corsGroup := router.Group("/") cors_config := cors.DefaultConfig() cors_config.AllowOrigins = []string{"https://games.acooldomain.co"} cors_config.AllowCredentials = true cors_config.ExposeHeaders = []string{"set-cookie"} corsGroup.Use(cors.New(cors_config)) file, err := os.Open(os.Getenv(CONFIG_PATH_ENV_VAR)) if err != nil { panic(err) } var config models.GlobalConfig err = json.NewDecoder(file).Decode(&config) if err != nil { panic(err) } mongo_url := os.Getenv(MONGO_URL_ENV_VAR) if mongo_url == "" { mongo_url = "mongodb://localhost:27017" } client, err := dbhandler.Connect(mongo_url) defer func() { if err = client.Disconnect(context.TODO()); err != nil { panic(err) } }() if err != nil { panic(err) } mail.InitializeClient(config.Email) users.LoadGroup(corsGroup.Group("/users"), client, config) auth.LoadGroup(router.Group("/auth"), corsGroup.Group("/auth"), client, config) servers.LoadGroup(corsGroup.Group("/servers"), client, config) servers.LoadBrowsersGroup(corsGroup.Group("/browsers"), client, config) servers.LoadeImagesGroup(corsGroup.Group("/images"), client, config) router.Run("0.0.0.0:8080") }