delete unused files
parent
d0e5f8bb6a
commit
4cdd0c60f7
@ -1,70 +0,0 @@
|
|||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"io"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/fangdingjun/go-log"
|
|
||||||
)
|
|
||||||
|
|
||||||
type proxy struct {
|
|
||||||
transport http.RoundTripper
|
|
||||||
addr string
|
|
||||||
prefix string
|
|
||||||
dialer *net.Dialer
|
|
||||||
network string
|
|
||||||
}
|
|
||||||
|
|
||||||
func newProxy(addr string, prefix string) *proxy {
|
|
||||||
p := &proxy{
|
|
||||||
addr: addr,
|
|
||||||
prefix: prefix,
|
|
||||||
dialer: &net.Dialer{Timeout: 2 * time.Second},
|
|
||||||
}
|
|
||||||
if addr[0] == '/' {
|
|
||||||
p.network = "unix"
|
|
||||||
} else {
|
|
||||||
p.network = "tcp"
|
|
||||||
}
|
|
||||||
p.transport = &http.Transport{
|
|
||||||
DialContext: p.dialContext,
|
|
||||||
MaxIdleConns: 5,
|
|
||||||
IdleConnTimeout: 30 * time.Second,
|
|
||||||
}
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *proxy) dialContext(ctx context.Context,
|
|
||||||
network, addr string) (net.Conn, error) {
|
|
||||||
return p.dialer.DialContext(ctx, p.network, p.addr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *proxy) dial(network, addr string) (conn net.Conn, err error) {
|
|
||||||
return p.dialer.Dial(p.network, p.addr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *proxy) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
||||||
host, _, _ := net.SplitHostPort(r.RemoteAddr)
|
|
||||||
r.Header.Add("X-Forwarded-For", host)
|
|
||||||
r.URL.Scheme = "http"
|
|
||||||
r.URL.Host = r.Host
|
|
||||||
resp, err := p.transport.RoundTrip(r)
|
|
||||||
if err != nil {
|
|
||||||
log.Print(err)
|
|
||||||
w.WriteHeader(http.StatusBadGateway)
|
|
||||||
w.Write([]byte("<h1>502 Bad Gateway</h1>"))
|
|
||||||
return
|
|
||||||
}
|
|
||||||
header := w.Header()
|
|
||||||
for k, v := range resp.Header {
|
|
||||||
for _, v1 := range v {
|
|
||||||
header.Add(k, v1)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
w.WriteHeader(resp.StatusCode)
|
|
||||||
io.Copy(w, resp.Body)
|
|
||||||
resp.Body.Close()
|
|
||||||
}
|
|
Loading…
Reference in New Issue