You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

picture.go 3.1KB

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