package main import ( "context" "encoding/json" "fmt" "os" "git.acooldomain.co/server-manager/backend-kubernetes-go/auth" "git.acooldomain.co/server-manager/backend-kubernetes-go/dbhandler" "git.acooldomain.co/server-manager/backend-kubernetes-go/mail" "git.acooldomain.co/server-manager/backend-kubernetes-go/models" "git.acooldomain.co/server-manager/backend-kubernetes-go/servers" "git.acooldomain.co/server-manager/backend-kubernetes-go/users" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" ) const CONFIG_SECRET_NAME = "CONFIG_PATH" func get_servers_db_handler(config models.ServersDatabaseConfig) { } func get_users_db_handler(config models.UsersDatabaseConfig) { } 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("/run/secrets/%s", os.Getenv(CONFIG_SECRET_NAME))) if err != nil { panic(err) } var config models.GlobalConfig err = json.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) } switch config.UserDatabase.Mongo { case nil: default: } client, err := dbhandler.Connect(config.UsersDatabase.Mongo) defer func() { if err = client.Disconnect(context.TODO()); err != nil { panic(err) } }() if err != nil { panic(err) } mail.InitializeClient(config.Email) users.LoadGroup(router.Group("/users"), client, config) auth.LoadGroup(router.Group("/auth"), client, config) servers.LoadGroup(router.Group("/servers"), client, config) servers.LoadBrowsersGroup(router.Group("/browsers"), client, config) servers.LoadeImagesGroup(router.Group("/images"), client, config) router.Run("0.0.0.0:8080") }