65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package config
|
|
|
|
import (
|
|
"io"
|
|
"log"
|
|
"os"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
type StackConfiguration struct {
|
|
ConfigLoaded bool
|
|
|
|
AllowFreshAdminGeneration bool
|
|
AdminEmails []string
|
|
AdminHmacEnv string
|
|
UserHmacEnv string
|
|
AuthedRateLimitConfig string
|
|
UnauthedRateLimitConfig string
|
|
|
|
DbDialect string
|
|
DbUsername string
|
|
DbPasswordSecret string
|
|
DbUrl string
|
|
DbPort string
|
|
DbName string
|
|
}
|
|
|
|
var Environment = os.Getenv("STACK_ENVIRONMENT")
|
|
|
|
var configInternal = StackConfiguration{}
|
|
|
|
func Config() StackConfiguration {
|
|
return configInternal
|
|
}
|
|
|
|
func GetConfigPath(filename string) string {
|
|
if Environment == "" {
|
|
Environment = "dev"
|
|
}
|
|
return "config/" + Environment + "/" + filename
|
|
}
|
|
|
|
func LoadConfig() {
|
|
file, err := os.Open(GetConfigPath("conf.toml"))
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer file.Close()
|
|
|
|
b, err := io.ReadAll(file)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = toml.Unmarshal(b, &configInternal)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
configInternal.ConfigLoaded = true
|
|
|
|
log.Printf("Loaded Config for stack '%s': %+v", Environment, configInternal)
|
|
}
|