2020-10-14 16:07:51 +03:00
// Copyright 2020 The Gitea Authors. All rights reserved.
2022-11-27 21:20:29 +03:00
// SPDX-License-Identifier: MIT
2020-10-14 16:07:51 +03:00
package setting
2023-05-13 21:59:11 +03:00
// Avatar settings
2020-10-14 16:07:51 +03:00
var (
Avatar = struct {
2023-06-14 06:42:38 +03:00
Storage * Storage
2020-10-14 16:07:51 +03:00
2021-12-16 05:18:38 +03:00
MaxWidth int
MaxHeight int
MaxFileSize int64
2023-05-13 21:59:11 +03:00
MaxOriginSize int64
2021-12-16 05:18:38 +03:00
RenderedSizeFactor int
2020-10-14 16:07:51 +03:00
} {
2021-12-16 05:18:38 +03:00
MaxWidth : 4096 ,
2023-05-13 21:59:11 +03:00
MaxHeight : 4096 ,
2021-12-16 05:18:38 +03:00
MaxFileSize : 1048576 ,
2023-05-13 21:59:11 +03:00
MaxOriginSize : 262144 ,
RenderedSizeFactor : 2 ,
2020-10-14 16:07:51 +03:00
}
GravatarSource string
2022-10-17 02:29:26 +03:00
DisableGravatar bool // Depreciated: migrated to database
EnableFederatedAvatar bool // Depreciated: migrated to database
2020-10-14 16:07:51 +03:00
RepoAvatar = struct {
2023-06-14 06:42:38 +03:00
Storage * Storage
2020-10-14 16:07:51 +03:00
Fallback string
FallbackImage string
} { }
)
2023-06-14 06:42:38 +03:00
func loadAvatarsFrom ( rootCfg ConfigProvider ) error {
2023-02-19 19:12:01 +03:00
sec := rootCfg . Section ( "picture" )
2020-10-14 16:07:51 +03:00
2023-02-19 19:12:01 +03:00
avatarSec := rootCfg . Section ( "avatar" )
2020-10-14 16:07:51 +03:00
storageType := sec . Key ( "AVATAR_STORAGE_TYPE" ) . MustString ( "" )
// Specifically default PATH to AVATAR_UPLOAD_PATH
2023-06-14 06:42:38 +03:00
avatarSec . Key ( "PATH" ) . MustString ( sec . Key ( "AVATAR_UPLOAD_PATH" ) . String ( ) )
2020-10-14 16:07:51 +03:00
2023-06-14 06:42:38 +03:00
var err error
Avatar . Storage , err = getStorage ( rootCfg , "avatars" , storageType , avatarSec )
if err != nil {
return err
}
2020-10-14 16:07:51 +03:00
Avatar . MaxWidth = sec . Key ( "AVATAR_MAX_WIDTH" ) . MustInt ( 4096 )
2023-05-13 21:59:11 +03:00
Avatar . MaxHeight = sec . Key ( "AVATAR_MAX_HEIGHT" ) . MustInt ( 4096 )
2020-10-14 16:07:51 +03:00
Avatar . MaxFileSize = sec . Key ( "AVATAR_MAX_FILE_SIZE" ) . MustInt64 ( 1048576 )
2023-05-13 21:59:11 +03:00
Avatar . MaxOriginSize = sec . Key ( "AVATAR_MAX_ORIGIN_SIZE" ) . MustInt64 ( 262144 )
Avatar . RenderedSizeFactor = sec . Key ( "AVATAR_RENDERED_SIZE_FACTOR" ) . MustInt ( 2 )
2020-10-14 16:07:51 +03:00
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
}
2022-10-17 02:29:26 +03:00
DisableGravatar = sec . Key ( "DISABLE_GRAVATAR" ) . MustBool ( GetDefaultDisableGravatar ( ) )
2023-02-19 19:12:01 +03:00
deprecatedSettingDB ( rootCfg , "" , "DISABLE_GRAVATAR" )
2022-10-17 02:29:26 +03:00
EnableFederatedAvatar = sec . Key ( "ENABLE_FEDERATED_AVATAR" ) . MustBool ( GetDefaultEnableFederatedAvatar ( DisableGravatar ) )
2023-02-19 19:12:01 +03:00
deprecatedSettingDB ( rootCfg , "" , "ENABLE_FEDERATED_AVATAR" )
2020-10-14 16:07:51 +03:00
2023-06-14 06:42:38 +03:00
return nil
2020-10-14 16:07:51 +03:00
}
2022-10-17 02:29:26 +03:00
func GetDefaultDisableGravatar ( ) bool {
2023-01-01 15:19:23 +03:00
return OfflineMode
2022-10-17 02:29:26 +03:00
}
func GetDefaultEnableFederatedAvatar ( disableGravatar bool ) bool {
v := ! InstallLock
if OfflineMode {
v = false
}
if disableGravatar {
v = false
}
return v
}
2023-06-14 06:42:38 +03:00
func loadRepoAvatarFrom ( rootCfg ConfigProvider ) error {
2023-02-19 19:12:01 +03:00
sec := rootCfg . Section ( "picture" )
2020-10-14 16:07:51 +03:00
2023-02-19 19:12:01 +03:00
repoAvatarSec := rootCfg . Section ( "repo-avatar" )
2020-10-14 16:07:51 +03:00
storageType := sec . Key ( "REPOSITORY_AVATAR_STORAGE_TYPE" ) . MustString ( "" )
// Specifically default PATH to AVATAR_UPLOAD_PATH
2023-06-14 06:42:38 +03:00
repoAvatarSec . Key ( "PATH" ) . MustString ( sec . Key ( "REPOSITORY_AVATAR_UPLOAD_PATH" ) . String ( ) )
2020-10-14 16:07:51 +03:00
2023-06-14 06:42:38 +03:00
var err error
RepoAvatar . Storage , err = getStorage ( rootCfg , "repo-avatars" , storageType , repoAvatarSec )
if err != nil {
return err
}
2020-10-14 16:07:51 +03:00
RepoAvatar . Fallback = sec . Key ( "REPOSITORY_AVATAR_FALLBACK" ) . MustString ( "none" )
2023-05-13 21:59:11 +03:00
RepoAvatar . FallbackImage = sec . Key ( "REPOSITORY_AVATAR_FALLBACK_IMAGE" ) . MustString ( AppSubURL + "/assets/img/repo_default.png" )
2023-06-14 06:42:38 +03:00
return nil
2020-10-14 16:07:51 +03:00
}