vcs-test/vcweb: fix various extraction issues for serving modules with authentication

• The /auth subdirectory wasn't downloading content from GCS.

• The zip extraction logic was failing for zip files that do not
  contain explicit directory entries.

• The invocation of http.FileServer wasn't trimming the /auth prefix,
  so rejections would work correctly but successful authentication
  would return 404s instead of serving the file.

Updates golang/go#26232

Change-Id: I3a72d7dfca62435c53f4bc7efaebae3900f2c175
Reviewed-on: https://go-review.googlesource.com/c/build/+/170880
Run-TryBot: Bryan C. Mills <bcmills@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Jay Conrod <jayconrod@google.com>
This commit is contained in:
Bryan C. Mills 2019-04-05 13:24:20 -04:00
Родитель d6a8c27467
Коммит 00823ba386
3 изменённых файлов: 4 добавлений и 3 удалений

Просмотреть файл

@ -113,5 +113,5 @@ func (h *authHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
return
}
http.FileServer(h.dir).ServeHTTP(w, r)
http.StripPrefix("/auth/", http.FileServer(h.dir)).ServeHTTP(w, r)
}

Просмотреть файл

@ -16,7 +16,6 @@ import (
"log"
"os"
"path/filepath"
"strings"
"sync"
"time"
@ -119,10 +118,11 @@ func loadFS(dir1, dir2 string, force bool) {
check(os.MkdirAll(tmp, 0777))
for _, f := range zr.File {
if strings.HasSuffix(f.Name, "/") {
if f.FileInfo().IsDir() {
check(os.MkdirAll(filepath.Join(tmp, f.Name), 0777))
continue
}
check(os.MkdirAll(filepath.Join(tmp, filepath.Dir(f.Name)), 0777))
w, err := os.Create(filepath.Join(tmp, f.Name))
check(err)
r, err := f.Open()

Просмотреть файл

@ -42,6 +42,7 @@ func usage() {
}
var isLoadDir = map[string]bool{
"auth": true,
"go": true,
"git": true,
"hg": true,