gddo-server: redirect path prefixes Logic is added to redirect requests based on a provided URL prefix. Change-Id: I199ec917b6c21c781299cfb9b9a41b4455a7f345 Reviewed-on: https://go-review.googlesource.com/c/gddo/+/285880 Trust: Julie Qiu <julie@golang.org> Run-TryBot: Julie Qiu <julie@golang.org> Reviewed-by: Jonathan Amsterdam <jba@google.com>
diff --git a/gddo-server/pkgsite.go b/gddo-server/pkgsite.go index e75d9dc..2bf2646 100644 --- a/gddo-server/pkgsite.go +++ b/gddo-server/pkgsite.go
@@ -256,6 +256,8 @@ for _, p := range cfg.RedirectPaths { if r.URL.Path == p { return true + } else if !strings.HasPrefix(r.URL.Path, "/-/") && strings.HasPrefix(r.URL.Path, p+"/") { + return true } } q := strings.TrimSpace(r.Form.Get("q"))
diff --git a/gddo-server/pkgsite_test.go b/gddo-server/pkgsite_test.go index 79d86d9..1acfee8 100644 --- a/gddo-server/pkgsite_test.go +++ b/gddo-server/pkgsite_test.go
@@ -504,6 +504,8 @@ "https://api.godoc.org/-/net/http", "https://godoc.org", "https://godoc.org/-/about", + "https://godoc.org/-/aboutfoo", + "https://godoc.org/-/about/foobar", "https://godoc.org/-/bot", "https://godoc.org/-/go", "https://godoc.org/-/subrepo", @@ -511,6 +513,9 @@ "https://godoc.org/cmd", "https://godoc.org/net/http", "https://godoc.org/cloud.google.com/go", + "https://godoc.org/cloud.google.com/go/pubsub", + "https://godoc.org/cloud.google.com/go/storage", + "https://godoc.org/cloud.google.com/go/storage/internal", "https://godoc.org/github.com/my/module", "https://godoc.org/github.com/my/module/package", } { @@ -564,6 +569,18 @@ "https://godoc.org/cmd": true, }, }, + { + name: "redirect cloud.google.com/go", + snapshot: &dynconfig.DynamicConfig{ + RedirectPaths: []string{"/cloud.google.com/go"}, + }, + redirect: map[string]bool{ + "https://godoc.org/cloud.google.com/go": true, + "https://godoc.org/cloud.google.com/go/pubsub": true, + "https://godoc.org/cloud.google.com/go/storage": true, + "https://godoc.org/cloud.google.com/go/storage/internal": true, + }, + }, } { t.Run(test.name, func(t *testing.T) { for _, req := range testRequests {