backend/main.go

64 lines
1.7 KiB
Go

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 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)
}
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")
}