package main import ( "flag" "fmt" "log" "net/http" "net/http/httputil" "net/url" "os" ) func main() { fs := flag.NewFlagSet(os.Args[0], flag.ContinueOnError) proxy := fs.String("proxy", "http://10.9.3.1:64932", "addr to proxy to") listen := fs.String("listen", "127.0.0.1:63443", "addr to listen on") if err := fs.Parse(os.Args[1:]); err != nil { log.Fatal(err) } u, err := url.Parse(*proxy) if err != nil { log.Fatal(err) } log.Println("listening on", *listen) if err := http.ListenAndServe(*listen, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { p := httputil.NewSingleHostReverseProxy(u) p.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) { fmt.Fprintf(w, `

The internet is not connected


%s

`, err.Error()) } p.ServeHTTP(w, r) })); err != nil { log.Fatal(err) } }