package main import ( "flag" "log" "net/http" "os" "path" "github.com/goproxy/goproxy" ) type Logged struct{ goproxy http.Handler } func (l *Logged) ServeHTTP(w http.ResponseWriter, r *http.Request) { log.Print(r.URL) l.goproxy.ServeHTTP(w, r) } func main() { pth := flag.String("root", "/tmp/goproxy", "Path to storage") bind := flag.String("bind", "[::1]:1234", "Address to listen on") proxy := flag.String("proxy", "direct", "GOPROXY value") sumdb := flag.String("sumdb", "off", "GOSUMDB value") flag.Parse() log.SetFlags(0) log.Fatal(http.ListenAndServe(*bind, &Logged{&goproxy.Goproxy{ GoBinEnv: append( os.Environ(), "GOPATH="+path.Join(*pth, "gopath"), "GOPROXY="+*proxy, "GOSUMDB="+*sumdb, ), Cacher: goproxy.DirCacher(*pth), }})) }