gitea源码

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package setting
  4. import (
  5. "net/http"
  6. "strings"
  7. user_model "code.gitea.io/gitea/models/user"
  8. chef_module "code.gitea.io/gitea/modules/packages/chef"
  9. "code.gitea.io/gitea/modules/setting"
  10. "code.gitea.io/gitea/modules/templates"
  11. "code.gitea.io/gitea/modules/util"
  12. shared "code.gitea.io/gitea/routers/web/shared/packages"
  13. "code.gitea.io/gitea/services/context"
  14. )
  15. const (
  16. tplSettingsPackages templates.TplName = "user/settings/packages"
  17. tplSettingsPackagesRuleEdit templates.TplName = "user/settings/packages_cleanup_rules_edit"
  18. tplSettingsPackagesRulePreview templates.TplName = "user/settings/packages_cleanup_rules_preview"
  19. )
  20. func Packages(ctx *context.Context) {
  21. ctx.Data["Title"] = ctx.Tr("packages.title")
  22. ctx.Data["PageIsSettingsPackages"] = true
  23. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  24. shared.SetPackagesContext(ctx, ctx.Doer)
  25. ctx.HTML(http.StatusOK, tplSettingsPackages)
  26. }
  27. func PackagesRuleAdd(ctx *context.Context) {
  28. ctx.Data["Title"] = ctx.Tr("packages.title")
  29. ctx.Data["PageIsSettingsPackages"] = true
  30. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  31. shared.SetRuleAddContext(ctx)
  32. ctx.HTML(http.StatusOK, tplSettingsPackagesRuleEdit)
  33. }
  34. func PackagesRuleEdit(ctx *context.Context) {
  35. ctx.Data["Title"] = ctx.Tr("packages.title")
  36. ctx.Data["PageIsSettingsPackages"] = true
  37. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  38. shared.SetRuleEditContext(ctx, ctx.Doer)
  39. ctx.HTML(http.StatusOK, tplSettingsPackagesRuleEdit)
  40. }
  41. func PackagesRuleAddPost(ctx *context.Context) {
  42. ctx.Data["Title"] = ctx.Tr("settings")
  43. ctx.Data["PageIsSettingsPackages"] = true
  44. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  45. shared.PerformRuleAddPost(
  46. ctx,
  47. ctx.Doer,
  48. setting.AppSubURL+"/user/settings/packages",
  49. tplSettingsPackagesRuleEdit,
  50. )
  51. }
  52. func PackagesRuleEditPost(ctx *context.Context) {
  53. ctx.Data["Title"] = ctx.Tr("packages.title")
  54. ctx.Data["PageIsSettingsPackages"] = true
  55. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  56. shared.PerformRuleEditPost(
  57. ctx,
  58. ctx.Doer,
  59. setting.AppSubURL+"/user/settings/packages",
  60. tplSettingsPackagesRuleEdit,
  61. )
  62. }
  63. func PackagesRulePreview(ctx *context.Context) {
  64. ctx.Data["Title"] = ctx.Tr("packages.title")
  65. ctx.Data["PageIsSettingsPackages"] = true
  66. ctx.Data["UserDisabledFeatures"] = user_model.DisabledFeaturesWithLoginType(ctx.Doer)
  67. shared.SetRulePreviewContext(ctx, ctx.Doer)
  68. ctx.HTML(http.StatusOK, tplSettingsPackagesRulePreview)
  69. }
  70. func InitializeCargoIndex(ctx *context.Context) {
  71. ctx.Data["Title"] = ctx.Tr("packages.title")
  72. ctx.Data["PageIsSettingsPackages"] = true
  73. shared.InitializeCargoIndex(ctx, ctx.Doer)
  74. ctx.Redirect(setting.AppSubURL + "/user/settings/packages")
  75. }
  76. func RebuildCargoIndex(ctx *context.Context) {
  77. ctx.Data["Title"] = ctx.Tr("packages.title")
  78. ctx.Data["PageIsSettingsPackages"] = true
  79. shared.RebuildCargoIndex(ctx, ctx.Doer)
  80. ctx.Redirect(setting.AppSubURL + "/user/settings/packages")
  81. }
  82. func RegenerateChefKeyPair(ctx *context.Context) {
  83. priv, pub, err := util.GenerateKeyPair(chef_module.KeyBits)
  84. if err != nil {
  85. ctx.ServerError("GenerateKeyPair", err)
  86. return
  87. }
  88. if err := user_model.SetUserSetting(ctx, ctx.Doer.ID, chef_module.SettingPublicPem, pub); err != nil {
  89. ctx.ServerError("SetUserSetting", err)
  90. return
  91. }
  92. ctx.ServeContent(strings.NewReader(priv), &context.ServeHeaderOptions{
  93. ContentType: "application/x-pem-file",
  94. Filename: ctx.Doer.Name + ".priv",
  95. })
  96. }