mvp
parent
2cfe3ba909
commit
b257da09d4
|
|
@ -0,0 +1,46 @@
|
|||
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, `
|
||||
<html>
|
||||
<header></header>
|
||||
<body>
|
||||
<h2>The internet is not connected</h2>
|
||||
<br>
|
||||
<p>%s</p>
|
||||
</body>
|
||||
<footer></footer>
|
||||
</html>
|
||||
`, err.Error())
|
||||
}
|
||||
p.ServeHTTP(w, r)
|
||||
})); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue