code.gitea.io/gitea@v1.21.7/routers/web/user/setting/packages.go (about)

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