64 lines
1.7 KiB
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")
|
|
}
|