mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-26 13:29:12 -05:00
0905ce83ea
- Resolves #259 - Replaces #716 (thanks @silentcode !) - The main toggle _for now_ (due to the still weird settings migration to the database) is `GetDefaultDisableGravatar`, because it's used `loadPictureFrom` which in turn sets the default value for the install page which in turn is the explicit value that Forgejo will use to decide to enable or disable Gravatar after the install page. - Tests still rely on the fact that gravatar is enabled by default for some tests, so there's a small hack in `MainTest` for that. This is not enabled per-tests as this would otherwise just cause random test failures for when rebasing happens. - Unit tests ensures this value by default stays false. Co-authored-by: Gusted <postmaster@gusted.xyz> Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/837 (cherry picked from commitc6c7c1aa1e
) (cherry picked from commitf0bc5f63d4
)
109 lines
3.1 KiB
Go
109 lines
3.1 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
|
|
DisableGravatar 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
|
|
}
|
|
|
|
DisableGravatar = sec.Key("DISABLE_GRAVATAR").MustBool(GetDefaultDisableGravatar())
|
|
deprecatedSettingDB(rootCfg, "", "DISABLE_GRAVATAR")
|
|
EnableFederatedAvatar = sec.Key("ENABLE_FEDERATED_AVATAR").MustBool(GetDefaultEnableFederatedAvatar(DisableGravatar))
|
|
deprecatedSettingDB(rootCfg, "", "ENABLE_FEDERATED_AVATAR")
|
|
|
|
return nil
|
|
}
|
|
|
|
func GetDefaultDisableGravatar() bool {
|
|
return true
|
|
}
|
|
|
|
func GetDefaultEnableFederatedAvatar(disableGravatar bool) bool {
|
|
v := !InstallLock
|
|
if OfflineMode {
|
|
v = false
|
|
}
|
|
if disableGravatar {
|
|
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
|
|
}
|