gitea源码

packages.go 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "fmt"
  6. "math"
  7. "github.com/dustin/go-humanize"
  8. )
  9. // Package registry settings
  10. var (
  11. Packages = struct {
  12. Storage *Storage
  13. Enabled bool
  14. LimitTotalOwnerCount int64
  15. LimitTotalOwnerSize int64
  16. LimitSizeAlpine int64
  17. LimitSizeArch int64
  18. LimitSizeCargo int64
  19. LimitSizeChef int64
  20. LimitSizeComposer int64
  21. LimitSizeConan int64
  22. LimitSizeConda int64
  23. LimitSizeContainer int64
  24. LimitSizeCran int64
  25. LimitSizeDebian int64
  26. LimitSizeGeneric int64
  27. LimitSizeGo int64
  28. LimitSizeHelm int64
  29. LimitSizeMaven int64
  30. LimitSizeNpm int64
  31. LimitSizeNuGet int64
  32. LimitSizePub int64
  33. LimitSizePyPI int64
  34. LimitSizeRpm int64
  35. LimitSizeRubyGems int64
  36. LimitSizeSwift int64
  37. LimitSizeVagrant int64
  38. DefaultRPMSignEnabled bool
  39. }{
  40. Enabled: true,
  41. LimitTotalOwnerCount: -1,
  42. }
  43. )
  44. func loadPackagesFrom(rootCfg ConfigProvider) (err error) {
  45. sec, _ := rootCfg.GetSection("packages")
  46. if sec == nil {
  47. Packages.Storage, err = getStorage(rootCfg, "packages", "", nil)
  48. return err
  49. }
  50. if err = sec.MapTo(&Packages); err != nil {
  51. return fmt.Errorf("failed to map Packages settings: %v", err)
  52. }
  53. Packages.Storage, err = getStorage(rootCfg, "packages", "", sec)
  54. if err != nil {
  55. return err
  56. }
  57. Packages.LimitTotalOwnerSize = mustBytes(sec, "LIMIT_TOTAL_OWNER_SIZE")
  58. Packages.LimitSizeAlpine = mustBytes(sec, "LIMIT_SIZE_ALPINE")
  59. Packages.LimitSizeArch = mustBytes(sec, "LIMIT_SIZE_ARCH")
  60. Packages.LimitSizeCargo = mustBytes(sec, "LIMIT_SIZE_CARGO")
  61. Packages.LimitSizeChef = mustBytes(sec, "LIMIT_SIZE_CHEF")
  62. Packages.LimitSizeComposer = mustBytes(sec, "LIMIT_SIZE_COMPOSER")
  63. Packages.LimitSizeConan = mustBytes(sec, "LIMIT_SIZE_CONAN")
  64. Packages.LimitSizeConda = mustBytes(sec, "LIMIT_SIZE_CONDA")
  65. Packages.LimitSizeContainer = mustBytes(sec, "LIMIT_SIZE_CONTAINER")
  66. Packages.LimitSizeCran = mustBytes(sec, "LIMIT_SIZE_CRAN")
  67. Packages.LimitSizeDebian = mustBytes(sec, "LIMIT_SIZE_DEBIAN")
  68. Packages.LimitSizeGeneric = mustBytes(sec, "LIMIT_SIZE_GENERIC")
  69. Packages.LimitSizeGo = mustBytes(sec, "LIMIT_SIZE_GO")
  70. Packages.LimitSizeHelm = mustBytes(sec, "LIMIT_SIZE_HELM")
  71. Packages.LimitSizeMaven = mustBytes(sec, "LIMIT_SIZE_MAVEN")
  72. Packages.LimitSizeNpm = mustBytes(sec, "LIMIT_SIZE_NPM")
  73. Packages.LimitSizeNuGet = mustBytes(sec, "LIMIT_SIZE_NUGET")
  74. Packages.LimitSizePub = mustBytes(sec, "LIMIT_SIZE_PUB")
  75. Packages.LimitSizePyPI = mustBytes(sec, "LIMIT_SIZE_PYPI")
  76. Packages.LimitSizeRpm = mustBytes(sec, "LIMIT_SIZE_RPM")
  77. Packages.LimitSizeRubyGems = mustBytes(sec, "LIMIT_SIZE_RUBYGEMS")
  78. Packages.LimitSizeSwift = mustBytes(sec, "LIMIT_SIZE_SWIFT")
  79. Packages.LimitSizeVagrant = mustBytes(sec, "LIMIT_SIZE_VAGRANT")
  80. Packages.DefaultRPMSignEnabled = sec.Key("DEFAULT_RPM_SIGN_ENABLED").MustBool(false)
  81. return nil
  82. }
  83. func mustBytes(section ConfigSection, key string) int64 {
  84. const noLimit = "-1"
  85. value := section.Key(key).MustString(noLimit)
  86. if value == noLimit {
  87. return -1
  88. }
  89. bytes, err := humanize.ParseBytes(value)
  90. if err != nil || bytes > math.MaxInt64 {
  91. return -1
  92. }
  93. return int64(bytes)
  94. }