package main import ( "fmt" "os" "git.acooldomain.co/server-manager/backend/auth" "git.acooldomain.co/server-manager/backend/models" "git.acooldomain.co/server-manager/backend/servers" "git.acooldomain.co/server-manager/backend/users" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "gopkg.in/yaml.v3" ) const CONFIG_PATH = "CONFIG_PATH" func main() { router := gin.Default() cors_config := cors.DefaultConfig() cors_config.AllowCredentials = true cors_config.ExposeHeaders = []string{"set-cookie"} file, err := os.Open(fmt.Sprintf("%s", os.Getenv(CONFIG_PATH))) if err != nil { panic(err) } var config models.GlobalConfig err = yaml.NewDecoder(file).Decode(&config) cors_config.AllowOriginFunc = func(origin string) bool { return origin[len(origin)-len(config.Domain):] == config.Domain } router.Use(cors.New(cors_config)) if err != nil { panic(err) } loggedIn := auth.LoadGroup(router.Group("/auth"), config) usersGroup := router.Group("/users") usersGroup.Use(loggedIn) users.LoadGroup(usersGroup, config) serversGroup := router.Group("/servers") serversGroup.Use(loggedIn) servers.LoadGroup(serversGroup, config) browsersGroup := router.Group("/browsers") browsersGroup.Use(loggedIn) servers.LoadBrowsersGroup(browsersGroup, config) imagesGroup := router.Group("/images") imagesGroup.Use(loggedIn) servers.LoadeImagesGroup(imagesGroup, config) router.Run("0.0.0.0:8080") }