code.gitea.io/gitea@v1.22.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  // Avatar settings
     7  
     8  var (
     9  	Avatar = struct {
    10  		Storage *Storage
    11  
    12  		MaxWidth           int
    13  		MaxHeight          int
    14  		MaxFileSize        int64
    15  		MaxOriginSize      int64
    16  		RenderedSizeFactor int
    17  	}{
    18  		MaxWidth:           4096,
    19  		MaxHeight:          4096,
    20  		MaxFileSize:        1048576,
    21  		MaxOriginSize:      262144,
    22  		RenderedSizeFactor: 2,
    23  	}
    24  
    25  	GravatarSource        string
    26  	DisableGravatar       bool // Depreciated: migrated to database
    27  	EnableFederatedAvatar bool // Depreciated: migrated to database
    28  
    29  	RepoAvatar = struct {
    30  		Storage *Storage
    31  
    32  		Fallback      string
    33  		FallbackImage string
    34  	}{}
    35  )
    36  
    37  func loadAvatarsFrom(rootCfg ConfigProvider) error {
    38  	sec := rootCfg.Section("picture")
    39  
    40  	avatarSec := rootCfg.Section("avatar")
    41  	storageType := sec.Key("AVATAR_STORAGE_TYPE").MustString("")
    42  	// Specifically default PATH to AVATAR_UPLOAD_PATH
    43  	avatarSec.Key("PATH").MustString(sec.Key("AVATAR_UPLOAD_PATH").String())
    44  
    45  	var err error
    46  	Avatar.Storage, err = getStorage(rootCfg, "avatars", storageType, avatarSec)
    47  	if err != nil {
    48  		return err
    49  	}
    50  
    51  	Avatar.MaxWidth = sec.Key("AVATAR_MAX_WIDTH").MustInt(4096)
    52  	Avatar.MaxHeight = sec.Key("AVATAR_MAX_HEIGHT").MustInt(4096)
    53  	Avatar.MaxFileSize = sec.Key("AVATAR_MAX_FILE_SIZE").MustInt64(1048576)
    54  	Avatar.MaxOriginSize = sec.Key("AVATAR_MAX_ORIGIN_SIZE").MustInt64(262144)
    55  	Avatar.RenderedSizeFactor = sec.Key("AVATAR_RENDERED_SIZE_FACTOR").MustInt(2)
    56  
    57  	switch source := sec.Key("GRAVATAR_SOURCE").MustString("gravatar"); source {
    58  	case "duoshuo":
    59  		GravatarSource = "http://gravatar.duoshuo.com/avatar/"
    60  	case "gravatar":
    61  		GravatarSource = "https://secure.gravatar.com/avatar/"
    62  	case "libravatar":
    63  		GravatarSource = "https://seccdn.libravatar.org/avatar/"
    64  	default:
    65  		GravatarSource = source
    66  	}
    67  
    68  	DisableGravatar = sec.Key("DISABLE_GRAVATAR").MustBool(GetDefaultDisableGravatar())
    69  	deprecatedSettingDB(rootCfg, "", "DISABLE_GRAVATAR")
    70  	EnableFederatedAvatar = sec.Key("ENABLE_FEDERATED_AVATAR").MustBool(GetDefaultEnableFederatedAvatar(DisableGravatar))
    71  	deprecatedSettingDB(rootCfg, "", "ENABLE_FEDERATED_AVATAR")
    72  
    73  	return nil
    74  }
    75  
    76  func GetDefaultDisableGravatar() bool {
    77  	return OfflineMode
    78  }
    79  
    80  func GetDefaultEnableFederatedAvatar(disableGravatar bool) bool {
    81  	v := !InstallLock
    82  	if OfflineMode {
    83  		v = false
    84  	}
    85  	if disableGravatar {
    86  		v = false
    87  	}
    88  	return v
    89  }
    90  
    91  func loadRepoAvatarFrom(rootCfg ConfigProvider) error {
    92  	sec := rootCfg.Section("picture")
    93  
    94  	repoAvatarSec := rootCfg.Section("repo-avatar")
    95  	storageType := sec.Key("REPOSITORY_AVATAR_STORAGE_TYPE").MustString("")
    96  	// Specifically default PATH to AVATAR_UPLOAD_PATH
    97  	repoAvatarSec.Key("PATH").MustString(sec.Key("REPOSITORY_AVATAR_UPLOAD_PATH").String())
    98  
    99  	var err error
   100  	RepoAvatar.Storage, err = getStorage(rootCfg, "repo-avatars", storageType, repoAvatarSec)
   101  	if err != nil {
   102  		return err
   103  	}
   104  
   105  	RepoAvatar.Fallback = sec.Key("REPOSITORY_AVATAR_FALLBACK").MustString("none")
   106  	RepoAvatar.FallbackImage = sec.Key("REPOSITORY_AVATAR_FALLBACK_IMAGE").MustString(AppSubURL + "/assets/img/repo_default.png")
   107  
   108  	return nil
   109  }