Updating Config to a more protected access paradigm

This commit is contained in:
🐙PiperYxzzy
2022-08-14 13:37:15 +02:00
parent 9cc37b0d0d
commit 2922793427
5 changed files with 26 additions and 22 deletions

View File

@@ -19,7 +19,11 @@ type StackConfiguration struct {
var Environment = os.Getenv("STACK_ENVIRONMENT")
var Config = StackConfiguration{}
var configInternal = StackConfiguration{}
func Config() StackConfiguration {
return configInternal
}
func GetConfigPath(filename string) string {
if Environment == "" {
@@ -35,11 +39,11 @@ func LoadConfig() {
}
defer file.Close()
dec := json.NewDecoder(file)
if err := dec.Decode(&Config); err != nil {
if err := dec.Decode(&configInternal); err != nil {
panic(err)
}
Config.ConfigLoaded = true
configInternal.ConfigLoaded = true
log.Printf("Loaded Config for stack " + Environment)
}

View File

@@ -16,52 +16,52 @@ func TestAllConfigs(t *testing.T) {
}
func SingleStackTest(t *testing.T, stack string, expected StackConfiguration) {
Config = StackConfiguration{}
configInternal = StackConfiguration{}
if Config.ConfigLoaded {
if Config().ConfigLoaded {
t.Errorf("Config.ConfigLoaded should be false before any processing")
}
if len(Config.AdminEmails) > 0 ||
Config.AdminHmacEnv != "" ||
Config.UserHmacEnv != "" ||
Config.AllowFreshAdminGeneration ||
Config.AuthedRateLimitConfig != "" ||
Config.UnauthedRateLimitConfig != "" { // Extend this IF for any other config values
if len(Config().AdminEmails) > 0 ||
Config().AdminHmacEnv != "" ||
Config().UserHmacEnv != "" ||
Config().AllowFreshAdminGeneration ||
Config().AuthedRateLimitConfig != "" ||
Config().UnauthedRateLimitConfig != "" { // Extend this IF for any other config values
t.Errorf("Config already has values before loading")
}
Environment = stack
LoadConfig()
if !Config.ConfigLoaded {
if !Config().ConfigLoaded {
t.Errorf("Config was not set to loaded")
}
// Finally test values
if Config.AllowFreshAdminGeneration != expected.AllowFreshAdminGeneration {
if Config().AllowFreshAdminGeneration != expected.AllowFreshAdminGeneration {
t.Errorf("AllowFreshAdminGeneration value not set properly")
}
for i, email := range Config.AdminEmails {
for i, email := range Config().AdminEmails {
if expected.AdminEmails[i] != email {
t.Errorf("AdminEmails value not set properly, expected %v at %v, was %v", expected.AdminEmails[i], i, email)
}
}
if Config.AdminHmacEnv != expected.AdminHmacEnv {
if Config().AdminHmacEnv != expected.AdminHmacEnv {
t.Errorf("AdminHmacEnv value not set properly")
}
if Config.UserHmacEnv != expected.UserHmacEnv {
if Config().UserHmacEnv != expected.UserHmacEnv {
t.Errorf("UserHmacEnv value not set properly")
}
if Config.AuthedRateLimitConfig != expected.AuthedRateLimitConfig {
if Config().AuthedRateLimitConfig != expected.AuthedRateLimitConfig {
t.Errorf("AuthedRateLimitConfig value not set properly")
}
if Config.UnauthedRateLimitConfig != expected.UnauthedRateLimitConfig {
if Config().UnauthedRateLimitConfig != expected.UnauthedRateLimitConfig {
t.Errorf("UnauthedRateLimitConfig value not set properly")
}

View File

@@ -493,7 +493,7 @@ func StarterAdmin() gin.HandlerFunc {
return
}
go util.SendEmail("Admin Created", "A new admin, "+a.Email+", has been created", config.Config.AdminEmails)
go util.SendEmail("Admin Created", "A new admin, "+a.Email+", has been created", config.Config().AdminEmails)
c.JSON(http.StatusOK, util.NextMsg{Next: "db verify"})
}

View File

@@ -119,7 +119,7 @@ var unauthLoaded = false
func UnauthRateLimit() gin.HandlerFunc {
return func(c *gin.Context) {
if !unauthLoaded {
unauthed.loadFromConfig(config.GetConfigPath(config.Config.UnauthedRateLimitConfig))
unauthed.loadFromConfig(config.GetConfigPath(config.Config().UnauthedRateLimitConfig))
unauthLoaded = true
}
@@ -145,7 +145,7 @@ var authLoaded = false
func AuthedRateLimit() gin.HandlerFunc {
return func(c *gin.Context) {
if !authLoaded {
authed.loadFromConfig(config.GetConfigPath(config.Config.AuthedRateLimitConfig))
authed.loadFromConfig(config.GetConfigPath(config.Config().AuthedRateLimitConfig))
authLoaded = true
}

View File

@@ -44,7 +44,7 @@ func main() {
r := gin.Default()
// Fresh admin functionality
if config.Config.AllowFreshAdminGeneration {
if config.Config().AllowFreshAdminGeneration {
var adminCount int64
database.Db.Model(models.Admin{}).Count(&adminCount)