forked from gitea/gitea
56 lines
1.3 KiB
Go
56 lines
1.3 KiB
Go
|
// Copyright 2023 The Gitea Authors. All rights reserved.
|
||
|
// SPDX-License-Identifier: MIT
|
||
|
|
||
|
package setting
|
||
|
|
||
|
import (
|
||
|
"sync"
|
||
|
|
||
|
"code.gitea.io/gitea/modules/log"
|
||
|
"code.gitea.io/gitea/modules/setting/config"
|
||
|
)
|
||
|
|
||
|
type PictureStruct struct {
|
||
|
DisableGravatar *config.Value[bool]
|
||
|
EnableFederatedAvatar *config.Value[bool]
|
||
|
}
|
||
|
|
||
|
type ConfigStruct struct {
|
||
|
Picture *PictureStruct
|
||
|
}
|
||
|
|
||
|
var (
|
||
|
defaultConfig *ConfigStruct
|
||
|
defaultConfigOnce sync.Once
|
||
|
)
|
||
|
|
||
|
func initDefaultConfig() {
|
||
|
config.SetCfgSecKeyGetter(&cfgSecKeyGetter{})
|
||
|
defaultConfig = &ConfigStruct{
|
||
|
Picture: &PictureStruct{
|
||
|
DisableGravatar: config.Bool(false, config.CfgSecKey{Sec: "picture", Key: "DISABLE_GRAVATAR"}, "picture.disable_gravatar"),
|
||
|
EnableFederatedAvatar: config.Bool(false, config.CfgSecKey{Sec: "picture", Key: "ENABLE_FEDERATED_AVATAR"}, "picture.enable_federated_avatar"),
|
||
|
},
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func Config() *ConfigStruct {
|
||
|
defaultConfigOnce.Do(initDefaultConfig)
|
||
|
return defaultConfig
|
||
|
}
|
||
|
|
||
|
type cfgSecKeyGetter struct{}
|
||
|
|
||
|
func (c cfgSecKeyGetter) GetValue(sec, key string) (v string, has bool) {
|
||
|
cfgSec, err := CfgProvider.GetSection(sec)
|
||
|
if err != nil {
|
||
|
log.Error("Unable to get config section: %q", sec)
|
||
|
return "", false
|
||
|
}
|
||
|
cfgKey := ConfigSectionKey(cfgSec, key)
|
||
|
if cfgKey == nil {
|
||
|
return "", false
|
||
|
}
|
||
|
return cfgKey.Value(), true
|
||
|
}
|