code.gitea.io/gitea@v1.19.3/modules/setting/picture.go (about)

     1  // Copyright 2020 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package setting
     5  
     6  // settings
     7  var (
     8  	// Picture settings
     9  	Avatar = struct {
    10  		Storage
    11  
    12  		MaxWidth           int
    13  		MaxHeight          int
    14  		MaxFileSize        int64
    15  		RenderedSizeFactor int
    16  	}{
    17  		MaxWidth:           4096,
    18  		MaxHeight:          3072,
    19  		MaxFileSize:        1048576,
    20  		RenderedSizeFactor: 3,
    21  	}
    22  
    23  	GravatarSource        string
    24  	DisableGravatar       bool // Depreciated: migrated to database
    25  	EnableFederatedAvatar bool // Depreciated: migrated to database
    26  
    27  	RepoAvatar = struct {
    28  		Storage
    29  
    30  		Fallback      string
    31  		FallbackImage string
    32  	}{}
    33  )
    34  
    35  func loadPictureFrom(rootCfg ConfigProvider) {
    36  	sec := rootCfg.Section("picture")
    37  
    38  	avatarSec := rootCfg.Section("avatar")
    39  	storageType := sec.Key("AVATAR_STORAGE_TYPE").MustString("")
    40  	// Specifically default PATH to AVATAR_UPLOAD_PATH
    41  	avatarSec.Key("PATH").MustString(
    42  		sec.Key("AVATAR_UPLOAD_PATH").String())
    43  
    44  	Avatar.Storage = getStorage(rootCfg, "avatars", storageType, avatarSec)
    45  
    46  	Avatar.MaxWidth = sec.Key("AVATAR_MAX_WIDTH").MustInt(4096)
    47  	Avatar.MaxHeight = sec.Key("AVATAR_MAX_HEIGHT").MustInt(3072)
    48  	Avatar.MaxFileSize = sec.Key("AVATAR_MAX_FILE_SIZE").MustInt64(1048576)
    49  	Avatar.RenderedSizeFactor = sec.Key("AVATAR_RENDERED_SIZE_FACTOR").MustInt(3)
    50  
    51  	switch source := sec.Key("GRAVATAR_SOURCE").MustString("gravatar"); source {
    52  	case "duoshuo":
    53  		GravatarSource = "http://gravatar.duoshuo.com/avatar/"
    54  	case "gravatar":
    55  		GravatarSource = "https://secure.gravatar.com/avatar/"
    56  	case "libravatar":
    57  		GravatarSource = "https://seccdn.libravatar.org/avatar/"
    58  	default:
    59  		GravatarSource = source
    60  	}
    61  
    62  	DisableGravatar = sec.Key("DISABLE_GRAVATAR").MustBool(GetDefaultDisableGravatar())
    63  	deprecatedSettingDB(rootCfg, "", "DISABLE_GRAVATAR")
    64  	EnableFederatedAvatar = sec.Key("ENABLE_FEDERATED_AVATAR").MustBool(GetDefaultEnableFederatedAvatar(DisableGravatar))
    65  	deprecatedSettingDB(rootCfg, "", "ENABLE_FEDERATED_AVATAR")
    66  
    67  	loadRepoAvatarFrom(rootCfg)
    68  }
    69  
    70  func GetDefaultDisableGravatar() bool {
    71  	return OfflineMode
    72  }
    73  
    74  func GetDefaultEnableFederatedAvatar(disableGravatar bool) bool {
    75  	v := !InstallLock
    76  	if OfflineMode {
    77  		v = false
    78  	}
    79  	if disableGravatar {
    80  		v = false
    81  	}
    82  	return v
    83  }
    84  
    85  func loadRepoAvatarFrom(rootCfg ConfigProvider) {
    86  	sec := rootCfg.Section("picture")
    87  
    88  	repoAvatarSec := rootCfg.Section("repo-avatar")
    89  	storageType := sec.Key("REPOSITORY_AVATAR_STORAGE_TYPE").MustString("")
    90  	// Specifically default PATH to AVATAR_UPLOAD_PATH
    91  	repoAvatarSec.Key("PATH").MustString(
    92  		sec.Key("REPOSITORY_AVATAR_UPLOAD_PATH").String())
    93  
    94  	RepoAvatar.Storage = getStorage(rootCfg, "repo-avatars", storageType, repoAvatarSec)
    95  
    96  	RepoAvatar.Fallback = sec.Key("REPOSITORY_AVATAR_FALLBACK").MustString("none")
    97  	RepoAvatar.FallbackImage = sec.Key("REPOSITORY_AVATAR_FALLBACK_IMAGE").MustString("/assets/img/repo_default.png")
    98  }