backend/models/config.go
2025-03-18 23:27:27 +02:00

91 lines
2.7 KiB
Go

package models
type EmailConfig struct {
FromEmail string `yaml:"from_email"`
Username string `yaml:"username"`
Password string `yaml:"password"`
Server string `yaml:"server"`
}
type SigningConfig struct {
Key string `yaml:"key"`
Algorithm string `yaml:"algorithm"`
}
type MongoDBConfig struct {
Url string `yaml:"url"`
Username string `yaml:"username"`
Password string `yaml:"password"`
Database string `yaml:"database"`
Collection string `yaml:"collection"`
}
type OidcAuthConfig struct {
IssuerUrl string `yaml:"issuer_url"`
ClientId string `yaml:"client_id"`
ClientSecret string `yaml:"client_secret"`
}
type InviteTokenDatabaseConfig struct {
Type DatabaseType `yaml:"type"`
Mongo *MongoDBConfig `yaml:"mongo"`
}
type UserPassAuthConfig struct {
Type DatabaseType `yaml:"type"`
Mongo *MongoDBConfig `yaml:"mongo"`
InviteTokenDatabase InviteTokenDatabaseConfig `yaml:"invite_token_database"`
}
type AuthenticationConfig struct {
Type AuthMode `yaml:"type"`
Oidc OidcAuthConfig `yaml:"oidc"`
UserPass UserPassAuthConfig `yaml:"user_pass"`
}
type FileBrowserConfig struct {
Image Image `yaml:"image"`
Command string `yaml:"command"`
Network string `yaml:"network"`
}
type DockerInstanceManagerConfig struct {
GamesDomain string `yaml:"games_domain"`
BrowsersDomain string `yaml:"browsers_domain"`
CertificateResolver string `yaml:"certificate_resolver"`
FileBrowser FileBrowserConfig `yaml:"file_browser"`
}
type InstanceManagerConfig struct {
Type InstanceManagerType `yaml:"type"`
Docker *DockerInstanceManagerConfig `yaml:"docker"`
}
type ServersDatabaseConfig struct {
Type DatabaseType `yaml:"type"`
Mongo *MongoDBConfig `yaml:"mongo"`
}
type ServersAuthorizationDatabaseConfig struct {
Type DatabaseType `yaml:"type"`
Mongo *MongoDBConfig `yaml:"mongo"`
}
type UsersConfig struct {
DefaultMaxOwnedServers uint `yaml:"default_max_owned_servers"`
}
type GlobalConfig struct {
// Features Configs
Email EmailConfig `yaml:"email"`
Domain string `yaml:"domain"`
Signing SigningConfig `yaml:"signing"`
Authentication AuthenticationConfig `yaml:"authentication"`
InstanceManager InstanceManagerConfig `yaml:"instancemanager"`
Users UsersConfig `yaml:"users"`
// Database Configs
ServersDatabase ServersDatabaseConfig `yaml:"servers_database"`
ServersAuthorizationDatabase ServersAuthorizationDatabaseConfig `yaml:"servers_authorization_database"`
}