From 31600a0159806e64637af13f020ad32e9c7cf432 Mon Sep 17 00:00:00 2001 From: truecode112 Date: Tue, 16 May 2023 05:35:16 +0300 Subject: [PATCH] Config parameter REPO_SIZE_LIMIT = XXXX (should accept bytes human readable) part1, sensible defaults, app.ini saving --- modules/setting/repository.go | 23 ++++++++++++++++++----- options/locale/locale_en-US.ini | 1 + routers/web/admin/repos.go | 15 +++++++++++++-- routers/web/explore/repo.go | 9 ++++++++- 4 files changed, 40 insertions(+), 8 deletions(-) diff --git a/modules/setting/repository.go b/modules/setting/repository.go index 57eeaf99ce6..08c7293d37c 100644 --- a/modules/setting/repository.go +++ b/modules/setting/repository.go @@ -7,10 +7,10 @@ import ( "os/exec" "path" "path/filepath" - "strconv" "strings" "code.gitea.io/gitea/modules/log" + "github.com/dustin/go-humanize" ) // enumerates all the policy repository creating @@ -271,7 +271,7 @@ var ( RepoSizeLimit int64 = 0 ) -func SaveGlobalRepositorySetting(enable_size_limit bool, repo_size_limit int64) { +func SaveGlobalRepositorySetting(enable_size_limit bool, repo_size_limit int64) error { EnableSizeLimit = enable_size_limit RepoSizeLimit = repo_size_limit sec := CfgProvider.Section("repository") @@ -281,7 +281,12 @@ func SaveGlobalRepositorySetting(enable_size_limit bool, repo_size_limit int64) sec.Key("ENABLE_SIZE_LIMIT").SetValue("false") } - sec.Key("REPO_SIZE_LIMIT").SetValue(strconv.FormatInt(RepoSizeLimit, 10)) + sec.Key("REPO_SIZE_LIMIT").SetValue(humanize.Bytes(uint64(RepoSizeLimit))) + if err := CfgProvider.Save(); err != nil { + log.Fatal("Failed to save config file: %v", err) + return err + } + return nil } func loadRepositoryFrom(rootCfg ConfigProvider) { @@ -289,8 +294,16 @@ func loadRepositoryFrom(rootCfg ConfigProvider) { // Determine and create root git repository path. sec := rootCfg.Section("repository") - EnableSizeLimit = sec.Key("ENABLE_SIZE_LIMIT").MustBool(true) - RepoSizeLimit = sec.Key("REPO_SIZE_LIMIT").MustInt64(1024 * 1024 * 10) + EnableSizeLimit = sec.Key("ENABLE_SIZE_LIMIT").MustBool(false) + + v, err := humanize.ParseBytes(sec.Key("REPO_SIZE_LIMIT").MustString("0")) + + if err == nil { + RepoSizeLimit = int64(v) + } else { + RepoSizeLimit = 0 + } + Repository.DisableHTTPGit = sec.Key("DISABLE_HTTP_GIT").MustBool() Repository.UseCompatSSHURI = sec.Key("USE_COMPAT_SSH_URI").MustBool() Repository.MaxCreationLimit = sec.Key("MAX_CREATION_LIMIT").MustInt(-1) diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index d6a28a9c0fd..e5878f8b696 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -3013,6 +3013,7 @@ config.repository_config = Repository Configuration config.enable_size_limit = Enable Size Limit config.repo_size_limit = Default Repository Size Limit config.invalid_repo_size = Invalid repository size. +config.save_repo_size_setting_failed = Failed to save global repository settings config.repository_setting_success = Global repository setting has been updated. config.git_config = Git Configuration diff --git a/routers/web/admin/repos.go b/routers/web/admin/repos.go index 13c4962c349..a3d7c3d9894 100644 --- a/routers/web/admin/repos.go +++ b/routers/web/admin/repos.go @@ -55,7 +55,7 @@ func UpdateRepoPost(ctx *context.Context) { ctx.Data["RepoSizeLimit"] = form.RepoSizeLimit if err != nil { - ctx.Data["Err_Repo_Size_Limit"] = true + ctx.Data["Err_Repo_Size_Limit"] = err.Error() explore.RenderRepoSearch(ctx, &explore.RepoSearchOptions{ Private: true, PageSize: setting.UI.Admin.RepoPagingNum, @@ -65,7 +65,18 @@ func UpdateRepoPost(ctx *context.Context) { return } - setting.SaveGlobalRepositorySetting(form.EnableSizeLimit, repo_size_limit) + err = setting.SaveGlobalRepositorySetting(form.EnableSizeLimit, repo_size_limit) + + if err != nil { + ctx.Data["Err_Repo_Size_Save"] = err.Error() + explore.RenderRepoSearch(ctx, &explore.RepoSearchOptions{ + Private: true, + PageSize: setting.UI.Admin.RepoPagingNum, + TplName: tplRepos, + OnlyShowRelevant: false, + }) + return + } ctx.Flash.Success(ctx.Tr("admin.config.repository_setting_success")) ctx.Redirect(setting.AppSubURL + "/admin/repos") diff --git a/routers/web/explore/repo.go b/routers/web/explore/repo.go index a3450a142c1..365c9196a10 100644 --- a/routers/web/explore/repo.go +++ b/routers/web/explore/repo.go @@ -142,7 +142,14 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) { ctx.Data["Page"] = pager if ctx.Data["Err_Repo_Size_Limit"] != nil { - ctx.RenderWithErr(ctx.Tr("admin.config.invalid_repo_size"), opts.TplName, nil) + ctx.RenderWithErr(ctx.Tr("admin.config.invalid_repo_size")+" "+ctx.Data["Err_Repo_Size_Limit"].(string), + opts.TplName, nil) + return + } + + if ctx.Data["Err_Repo_Size_Save"] != nil { + ctx.RenderWithErr(ctx.Tr("admin.config.save_repo_size_setting_failed")+" "+ctx.Data["Err_Repo_Size_Save"].(string), + opts.TplName, nil) return }