backend/main.go
2024-05-25 00:55:46 +03:00

66 lines
1.5 KiB
Go

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()
router.Use(cors.New(cors.Config{
AllowOrigins: []string{"*"},
AllowCredentials: true,
AllowMethods: []string{"*"},
AllowAllOrigins: true,
AllowHeaders: []string{"*"},
}))
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(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")
}