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.

service.go 5.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. // Copyright 2019 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package setting
  5. import (
  6. "regexp"
  7. "code.gitea.io/gitea/modules/structs"
  8. )
  9. // Service settings
  10. var Service struct {
  11. DefaultOrgVisibility string
  12. DefaultOrgVisibilityMode structs.VisibleType
  13. ActiveCodeLives int
  14. ResetPwdCodeLives int
  15. RegisterEmailConfirm bool
  16. EmailDomainWhitelist []string
  17. DisableRegistration bool
  18. AllowOnlyExternalRegistration bool
  19. ShowRegistrationButton bool
  20. RequireSignInView bool
  21. EnableNotifyMail bool
  22. EnableBasicAuth bool
  23. EnableReverseProxyAuth bool
  24. EnableReverseProxyAutoRegister bool
  25. EnableReverseProxyEmail bool
  26. EnableCaptcha bool
  27. RequireExternalRegistrationCaptcha bool
  28. RequireExternalRegistrationPassword bool
  29. CaptchaType string
  30. RecaptchaSecret string
  31. RecaptchaSitekey string
  32. RecaptchaURL string
  33. DefaultKeepEmailPrivate bool
  34. DefaultAllowCreateOrganization bool
  35. EnableTimetracking bool
  36. DefaultEnableTimetracking bool
  37. DefaultEnableDependencies bool
  38. AllowCrossRepositoryDependencies bool
  39. DefaultAllowOnlyContributorsToTrackTime bool
  40. NoReplyAddress string
  41. EnableUserHeatmap bool
  42. AutoWatchNewRepos bool
  43. AutoWatchOnChanges bool
  44. DefaultOrgMemberVisible bool
  45. // OpenID settings
  46. EnableOpenIDSignIn bool
  47. EnableOpenIDSignUp bool
  48. OpenIDWhitelist []*regexp.Regexp
  49. OpenIDBlacklist []*regexp.Regexp
  50. }
  51. func newService() {
  52. sec := Cfg.Section("service")
  53. Service.ActiveCodeLives = sec.Key("ACTIVE_CODE_LIVE_MINUTES").MustInt(180)
  54. Service.ResetPwdCodeLives = sec.Key("RESET_PASSWD_CODE_LIVE_MINUTES").MustInt(180)
  55. Service.DisableRegistration = sec.Key("DISABLE_REGISTRATION").MustBool()
  56. Service.AllowOnlyExternalRegistration = sec.Key("ALLOW_ONLY_EXTERNAL_REGISTRATION").MustBool()
  57. Service.EmailDomainWhitelist = sec.Key("EMAIL_DOMAIN_WHITELIST").Strings(",")
  58. Service.ShowRegistrationButton = sec.Key("SHOW_REGISTRATION_BUTTON").MustBool(!(Service.DisableRegistration || Service.AllowOnlyExternalRegistration))
  59. Service.RequireSignInView = sec.Key("REQUIRE_SIGNIN_VIEW").MustBool()
  60. Service.EnableBasicAuth = sec.Key("ENABLE_BASIC_AUTHENTICATION").MustBool(true)
  61. Service.EnableReverseProxyAuth = sec.Key("ENABLE_REVERSE_PROXY_AUTHENTICATION").MustBool()
  62. Service.EnableReverseProxyAutoRegister = sec.Key("ENABLE_REVERSE_PROXY_AUTO_REGISTRATION").MustBool()
  63. Service.EnableReverseProxyEmail = sec.Key("ENABLE_REVERSE_PROXY_EMAIL").MustBool()
  64. Service.EnableCaptcha = sec.Key("ENABLE_CAPTCHA").MustBool(false)
  65. Service.RequireExternalRegistrationCaptcha = sec.Key("REQUIRE_EXTERNAL_REGISTRATION_CAPTCHA").MustBool(Service.EnableCaptcha)
  66. Service.RequireExternalRegistrationPassword = sec.Key("REQUIRE_EXTERNAL_REGISTRATION_PASSWORD").MustBool()
  67. Service.CaptchaType = sec.Key("CAPTCHA_TYPE").MustString(ImageCaptcha)
  68. Service.RecaptchaSecret = sec.Key("RECAPTCHA_SECRET").MustString("")
  69. Service.RecaptchaSitekey = sec.Key("RECAPTCHA_SITEKEY").MustString("")
  70. Service.RecaptchaURL = sec.Key("RECAPTCHA_URL").MustString("https://www.google.com/recaptcha/")
  71. Service.DefaultKeepEmailPrivate = sec.Key("DEFAULT_KEEP_EMAIL_PRIVATE").MustBool()
  72. Service.DefaultAllowCreateOrganization = sec.Key("DEFAULT_ALLOW_CREATE_ORGANIZATION").MustBool(true)
  73. Service.EnableTimetracking = sec.Key("ENABLE_TIMETRACKING").MustBool(true)
  74. if Service.EnableTimetracking {
  75. Service.DefaultEnableTimetracking = sec.Key("DEFAULT_ENABLE_TIMETRACKING").MustBool(true)
  76. }
  77. Service.DefaultEnableDependencies = sec.Key("DEFAULT_ENABLE_DEPENDENCIES").MustBool(true)
  78. Service.AllowCrossRepositoryDependencies = sec.Key("ALLOW_CROSS_REPOSITORY_DEPENDENCIES").MustBool(true)
  79. Service.DefaultAllowOnlyContributorsToTrackTime = sec.Key("DEFAULT_ALLOW_ONLY_CONTRIBUTORS_TO_TRACK_TIME").MustBool(true)
  80. Service.NoReplyAddress = sec.Key("NO_REPLY_ADDRESS").MustString("noreply.example.org")
  81. Service.EnableUserHeatmap = sec.Key("ENABLE_USER_HEATMAP").MustBool(true)
  82. Service.AutoWatchNewRepos = sec.Key("AUTO_WATCH_NEW_REPOS").MustBool(true)
  83. Service.AutoWatchOnChanges = sec.Key("AUTO_WATCH_ON_CHANGES").MustBool(false)
  84. Service.DefaultOrgVisibility = sec.Key("DEFAULT_ORG_VISIBILITY").In("public", structs.ExtractKeysFromMapString(structs.VisibilityModes))
  85. Service.DefaultOrgVisibilityMode = structs.VisibilityModes[Service.DefaultOrgVisibility]
  86. Service.DefaultOrgMemberVisible = sec.Key("DEFAULT_ORG_MEMBER_VISIBLE").MustBool()
  87. sec = Cfg.Section("openid")
  88. Service.EnableOpenIDSignIn = sec.Key("ENABLE_OPENID_SIGNIN").MustBool(!InstallLock)
  89. Service.EnableOpenIDSignUp = sec.Key("ENABLE_OPENID_SIGNUP").MustBool(!Service.DisableRegistration && Service.EnableOpenIDSignIn)
  90. pats := sec.Key("WHITELISTED_URIS").Strings(" ")
  91. if len(pats) != 0 {
  92. Service.OpenIDWhitelist = make([]*regexp.Regexp, len(pats))
  93. for i, p := range pats {
  94. Service.OpenIDWhitelist[i] = regexp.MustCompilePOSIX(p)
  95. }
  96. }
  97. pats = sec.Key("BLACKLISTED_URIS").Strings(" ")
  98. if len(pats) != 0 {
  99. Service.OpenIDBlacklist = make([]*regexp.Regexp, len(pats))
  100. for i, p := range pats {
  101. Service.OpenIDBlacklist[i] = regexp.MustCompilePOSIX(p)
  102. }
  103. }
  104. }