mirror of
https://github.com/go-gitea/gitea.git
synced 2025-11-03 06:35:19 +01:00
Frontend still interacts directly with the database entry name `picture.disable_gravatar` so logic needs flipped when writing, but logic to read automatically flips based on config.Invert() being called during init or INI read.
108 lines
3.0 KiB
Go
108 lines
3.0 KiB
Go
// Copyright 2020 The Gitea Authors. All rights reserved.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package setting
|
|
|
|
// Avatar settings
|
|
|
|
var (
|
|
Avatar = struct {
|
|
Storage *Storage
|
|
|
|
MaxWidth int
|
|
MaxHeight int
|
|
MaxFileSize int64
|
|
MaxOriginSize int64
|
|
RenderedSizeFactor int
|
|
}{
|
|
MaxWidth: 4096,
|
|
MaxHeight: 4096,
|
|
MaxFileSize: 1048576,
|
|
MaxOriginSize: 262144,
|
|
RenderedSizeFactor: 2,
|
|
}
|
|
|
|
GravatarSource string
|
|
EnableGravatar bool // Depreciated: migrated to database
|
|
EnableFederatedAvatar bool // Depreciated: migrated to database
|
|
|
|
RepoAvatar = struct {
|
|
Storage *Storage
|
|
|
|
Fallback string
|
|
FallbackImage string
|
|
}{}
|
|
)
|
|
|
|
func loadAvatarsFrom(rootCfg ConfigProvider) error {
|
|
sec := rootCfg.Section("picture")
|
|
|
|
avatarSec := rootCfg.Section("avatar")
|
|
storageType := sec.Key("AVATAR_STORAGE_TYPE").MustString("")
|
|
// Specifically default PATH to AVATAR_UPLOAD_PATH
|
|
avatarSec.Key("PATH").MustString(sec.Key("AVATAR_UPLOAD_PATH").String())
|
|
|
|
var err error
|
|
Avatar.Storage, err = getStorage(rootCfg, "avatars", storageType, avatarSec)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
Avatar.MaxWidth = sec.Key("AVATAR_MAX_WIDTH").MustInt(4096)
|
|
Avatar.MaxHeight = sec.Key("AVATAR_MAX_HEIGHT").MustInt(4096)
|
|
Avatar.MaxFileSize = sec.Key("AVATAR_MAX_FILE_SIZE").MustInt64(1048576)
|
|
Avatar.MaxOriginSize = sec.Key("AVATAR_MAX_ORIGIN_SIZE").MustInt64(262144)
|
|
Avatar.RenderedSizeFactor = sec.Key("AVATAR_RENDERED_SIZE_FACTOR").MustInt(2)
|
|
|
|
switch source := sec.Key("GRAVATAR_SOURCE").MustString("gravatar"); source {
|
|
case "duoshuo":
|
|
GravatarSource = "http://gravatar.duoshuo.com/avatar/"
|
|
case "gravatar":
|
|
GravatarSource = "https://secure.gravatar.com/avatar/"
|
|
case "libravatar":
|
|
GravatarSource = "https://seccdn.libravatar.org/avatar/"
|
|
default:
|
|
GravatarSource = source
|
|
}
|
|
|
|
EnableGravatar = !sec.Key("DISABLE_GRAVATAR").MustBool(GetDefaultDisableGravatar())
|
|
deprecatedSettingDB(rootCfg, "", "DISABLE_GRAVATAR")
|
|
EnableFederatedAvatar = sec.Key("ENABLE_FEDERATED_AVATAR").MustBool(GetDefaultEnableFederatedAvatar(EnableGravatar))
|
|
deprecatedSettingDB(rootCfg, "", "ENABLE_FEDERATED_AVATAR")
|
|
|
|
return nil
|
|
}
|
|
|
|
func GetDefaultDisableGravatar() bool {
|
|
return OfflineMode
|
|
}
|
|
|
|
func GetDefaultEnableFederatedAvatar(enableGravatar bool) bool {
|
|
v := !InstallLock
|
|
if OfflineMode || !enableGravatar {
|
|
v = false
|
|
}
|
|
|
|
return v
|
|
}
|
|
|
|
func loadRepoAvatarFrom(rootCfg ConfigProvider) error {
|
|
sec := rootCfg.Section("picture")
|
|
|
|
repoAvatarSec := rootCfg.Section("repo-avatar")
|
|
storageType := sec.Key("REPOSITORY_AVATAR_STORAGE_TYPE").MustString("")
|
|
// Specifically default PATH to AVATAR_UPLOAD_PATH
|
|
repoAvatarSec.Key("PATH").MustString(sec.Key("REPOSITORY_AVATAR_UPLOAD_PATH").String())
|
|
|
|
var err error
|
|
RepoAvatar.Storage, err = getStorage(rootCfg, "repo-avatars", storageType, repoAvatarSec)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
RepoAvatar.Fallback = sec.Key("REPOSITORY_AVATAR_FALLBACK").MustString("none")
|
|
RepoAvatar.FallbackImage = sec.Key("REPOSITORY_AVATAR_FALLBACK_IMAGE").MustString(AppSubURL + "/assets/img/repo_default.png")
|
|
|
|
return nil
|
|
}
|