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 {