From c17c6035db891bf80d7780e0716c2c6bfa800189 Mon Sep 17 00:00:00 2001 From: merlleu Date: Fri, 25 Aug 2023 16:11:29 +0200 Subject: [PATCH 1/8] added auth-required to config.json for cargo http registries --- routers/api/packages/cargo/cargo.go | 3 ++- services/packages/cargo/index.go | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index a2e835df578b4..31a7c655d43d7 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -21,6 +21,7 @@ import ( "code.gitea.io/gitea/services/convert" packages_service "code.gitea.io/gitea/services/packages" cargo_service "code.gitea.io/gitea/services/packages/cargo" + "code.gitea.io/gitea/models/perm" ) // https://doc.rust-lang.org/cargo/reference/registries.html#web-api @@ -48,7 +49,7 @@ func apiError(ctx *context.Context, status int, obj any) { // https://rust-lang.github.io/rfcs/2789-sparse-index.html func RepositoryConfig(ctx *context.Context) { - ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner)) + ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, ctx.Package.AccessMode != perm.AccessModeNone)) } func EnumeratePackageVersions(ctx *context.Context) { diff --git a/services/packages/cargo/index.go b/services/packages/cargo/index.go index 1c2d17b504fc3..e186ba816af35 100644 --- a/services/packages/cargo/index.go +++ b/services/packages/cargo/index.go @@ -222,12 +222,14 @@ func getOrCreateIndexRepository(ctx context.Context, doer, owner *user_model.Use type Config struct { DownloadURL string `json:"dl"` APIURL string `json:"api"` + AuthRequired bool `json:"auth-required"` } -func BuildConfig(owner *user_model.User) *Config { +func BuildConfig(owner *user_model.User, isPrivate bool) *Config { return &Config{ DownloadURL: setting.AppURL + "api/packages/" + owner.Name + "/cargo/api/v1/crates", APIURL: setting.AppURL + "api/packages/" + owner.Name + "/cargo", + AuthRequired: isPrivate, } } @@ -239,7 +241,7 @@ func createOrUpdateConfigFile(ctx context.Context, repo *repo_model.Repository, "Initialize Cargo Config", func(t *files_service.TemporaryUploadRepository) error { var b bytes.Buffer - err := json.NewEncoder(&b).Encode(BuildConfig(owner)) + err := json.NewEncoder(&b).Encode(BuildConfig(owner, repo.IsPrivate)) if err != nil { return err } From d9a42eb30001a012cc4c0a49e80a64fa285a1752 Mon Sep 17 00:00:00 2001 From: merlleu Date: Fri, 25 Aug 2023 16:26:13 +0200 Subject: [PATCH 2/8] only check if an API token is present --- routers/api/packages/cargo/cargo.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 31a7c655d43d7..9b53ae68a9bf6 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -49,7 +49,7 @@ func apiError(ctx *context.Context, status int, obj any) { // https://rust-lang.github.io/rfcs/2789-sparse-index.html func RepositoryConfig(ctx *context.Context) { - ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, ctx.Package.AccessMode != perm.AccessModeNone)) + ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, ctx.Data["IsApiToken"] == true)) } func EnumeratePackageVersions(ctx *context.Context) { From 7697fa0509367ed62070a01407694b879d90d613 Mon Sep 17 00:00:00 2001 From: merlleu Date: Fri, 25 Aug 2023 16:26:58 +0200 Subject: [PATCH 3/8] remove no longer used import --- routers/api/packages/cargo/cargo.go | 1 - 1 file changed, 1 deletion(-) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 9b53ae68a9bf6..105760949ff91 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -21,7 +21,6 @@ import ( "code.gitea.io/gitea/services/convert" packages_service "code.gitea.io/gitea/services/packages" cargo_service "code.gitea.io/gitea/services/packages/cargo" - "code.gitea.io/gitea/models/perm" ) // https://doc.rust-lang.org/cargo/reference/registries.html#web-api From 85c3de366d78e0162e5c07d09cb472f0e4cec3cb Mon Sep 17 00:00:00 2001 From: merlleu Date: Sat, 26 Aug 2023 12:26:01 +0200 Subject: [PATCH 4/8] fix fmt --- services/packages/cargo/index.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/services/packages/cargo/index.go b/services/packages/cargo/index.go index e186ba816af35..ac28a1cd9dbe4 100644 --- a/services/packages/cargo/index.go +++ b/services/packages/cargo/index.go @@ -220,15 +220,15 @@ func getOrCreateIndexRepository(ctx context.Context, doer, owner *user_model.Use } type Config struct { - DownloadURL string `json:"dl"` - APIURL string `json:"api"` - AuthRequired bool `json:"auth-required"` + DownloadURL string `json:"dl"` + APIURL string `json:"api"` + AuthRequired bool `json:"auth-required"` } func BuildConfig(owner *user_model.User, isPrivate bool) *Config { return &Config{ - DownloadURL: setting.AppURL + "api/packages/" + owner.Name + "/cargo/api/v1/crates", - APIURL: setting.AppURL + "api/packages/" + owner.Name + "/cargo", + DownloadURL: setting.AppURL + "api/packages/" + owner.Name + "/cargo/api/v1/crates", + APIURL: setting.AppURL + "api/packages/" + owner.Name + "/cargo", AuthRequired: isPrivate, } } From a3900dd2c14c01e841d5519fae6436702ed2bb3d Mon Sep 17 00:00:00 2001 From: merlleu Date: Sat, 26 Aug 2023 16:04:22 +0200 Subject: [PATCH 5/8] use ctx.Package.Descriptor.Repository.IsPrivate --- routers/api/packages/cargo/cargo.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 105760949ff91..6b830bcaf94e1 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -48,7 +48,7 @@ func apiError(ctx *context.Context, status int, obj any) { // https://rust-lang.github.io/rfcs/2789-sparse-index.html func RepositoryConfig(ctx *context.Context) { - ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, ctx.Data["IsApiToken"] == true)) + ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, ctx.Package.Descriptor.Repository.IsPrivate)) } func EnumeratePackageVersions(ctx *context.Context) { From 726cd0a7b476ed7de2acf3a103ac69fdbfe6d489 Mon Sep 17 00:00:00 2001 From: merlleu Date: Sun, 27 Aug 2023 15:13:05 +0200 Subject: [PATCH 6/8] change condition for private cargo index --- routers/api/packages/cargo/cargo.go | 2 +- services/packages/cargo/index.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 6b830bcaf94e1..9585a14ed488b 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -48,7 +48,7 @@ func apiError(ctx *context.Context, status int, obj any) { // https://rust-lang.github.io/rfcs/2789-sparse-index.html func RepositoryConfig(ctx *context.Context) { - ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, ctx.Package.Descriptor.Repository.IsPrivate)) + ctx.JSON(http.StatusOK, cargo_service.BuildConfig(ctx.Package.Owner, setting.Service.RequireSignInView || ctx.Package.Owner.Visibility != structs.VisibleTypePublic)) } func EnumeratePackageVersions(ctx *context.Context) { diff --git a/services/packages/cargo/index.go b/services/packages/cargo/index.go index ac28a1cd9dbe4..9a2d226d5cca9 100644 --- a/services/packages/cargo/index.go +++ b/services/packages/cargo/index.go @@ -241,7 +241,7 @@ func createOrUpdateConfigFile(ctx context.Context, repo *repo_model.Repository, "Initialize Cargo Config", func(t *files_service.TemporaryUploadRepository) error { var b bytes.Buffer - err := json.NewEncoder(&b).Encode(BuildConfig(owner, repo.IsPrivate)) + err := json.NewEncoder(&b).Encode(BuildConfig(owner, setting.Service.RequireSignInView || owner.Visibility != structs.VisibleTypePublic || repo.IsPrivate)) if err != nil { return err } From b88ed75cf011aea16b3b3f632bb4d0b7137749d2 Mon Sep 17 00:00:00 2001 From: merlleu Date: Sun, 27 Aug 2023 15:29:13 +0200 Subject: [PATCH 7/8] added missing imports (setting/structs) --- routers/api/packages/cargo/cargo.go | 2 ++ services/packages/cargo/index.go | 1 + 2 files changed, 3 insertions(+) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 9585a14ed488b..9401fd746cd53 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -21,6 +21,8 @@ import ( "code.gitea.io/gitea/services/convert" packages_service "code.gitea.io/gitea/services/packages" cargo_service "code.gitea.io/gitea/services/packages/cargo" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/structs" ) // https://doc.rust-lang.org/cargo/reference/registries.html#web-api diff --git a/services/packages/cargo/index.go b/services/packages/cargo/index.go index 9a2d226d5cca9..9c8c6ab5f1d51 100644 --- a/services/packages/cargo/index.go +++ b/services/packages/cargo/index.go @@ -23,6 +23,7 @@ import ( "code.gitea.io/gitea/modules/setting" "code.gitea.io/gitea/modules/util" files_service "code.gitea.io/gitea/services/repository/files" + "code.gitea.io/gitea/modules/structs" ) const ( From 64949fd76c5a401b553b5a60488a8a28fa3a817b Mon Sep 17 00:00:00 2001 From: merlleu Date: Sun, 27 Aug 2023 15:54:36 +0200 Subject: [PATCH 8/8] fix formatting of imports --- routers/api/packages/cargo/cargo.go | 4 ++-- services/packages/cargo/index.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/routers/api/packages/cargo/cargo.go b/routers/api/packages/cargo/cargo.go index 9401fd746cd53..8c370339cd573 100644 --- a/routers/api/packages/cargo/cargo.go +++ b/routers/api/packages/cargo/cargo.go @@ -16,13 +16,13 @@ import ( "code.gitea.io/gitea/modules/log" packages_module "code.gitea.io/gitea/modules/packages" cargo_module "code.gitea.io/gitea/modules/packages/cargo" + "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/routers/api/packages/helper" "code.gitea.io/gitea/services/convert" packages_service "code.gitea.io/gitea/services/packages" cargo_service "code.gitea.io/gitea/services/packages/cargo" - "code.gitea.io/gitea/modules/setting" - "code.gitea.io/gitea/modules/structs" ) // https://doc.rust-lang.org/cargo/reference/registries.html#web-api diff --git a/services/packages/cargo/index.go b/services/packages/cargo/index.go index 9c8c6ab5f1d51..867cd796d3816 100644 --- a/services/packages/cargo/index.go +++ b/services/packages/cargo/index.go @@ -21,9 +21,9 @@ import ( cargo_module "code.gitea.io/gitea/modules/packages/cargo" repo_module "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/structs" "code.gitea.io/gitea/modules/util" files_service "code.gitea.io/gitea/services/repository/files" - "code.gitea.io/gitea/modules/structs" ) const (