http: add param xsi for "X-Server-IP" header

This commit is contained in:
nadoo 2018-01-16 10:39:40 +08:00
parent 7e9e737922
commit 12f15be1dc
3 changed files with 13 additions and 12 deletions

18
http.go
View File

@ -24,7 +24,8 @@ type HTTP struct {
user string
password string
xff bool
xff bool // X-Forwarded-For
xsi bool // X-Server-IP
selfip string
}
@ -47,6 +48,12 @@ func NewHTTP(addr, user, pass, rawQuery string, cDialer Dialer, sDialer Dialer)
}
}
if v, ok := p["xsi"]; ok {
if v[0] == "true" {
s.xsi = true
}
}
return s, nil
}
@ -166,13 +173,8 @@ func (s *HTTP) Serve(c net.Conn) {
respHeader.Set("Proxy-Connection", "close")
respHeader.Set("Connection", "close")
if s.xff {
if respHeader.Get("X-Forwarded-For") != "" {
respHeader.Add("X-Forwarded-For", ",")
}
respHeader.Add("X-Forwarded-For", rc.RemoteAddr().(*net.TCPAddr).IP.String())
respHeader.Add("X-Forwarded-For", ",")
respHeader.Add("X-Forwarded-For", s.selfip)
if s.xsi {
respHeader.Set("X-Server-IP", rc.RemoteAddr().(*net.TCPAddr).IP.String())
}
var respBuf bytes.Buffer

View File

@ -1,6 +1,7 @@
[Unit]
Description=Glider Service (%i)
After=network.target
Before=iptables.service ip6tables.service
[Service]
Type=simple

View File

@ -48,24 +48,22 @@ func (s *UoTTun) ListenAndServe() {
rc, err := s.sDialer.Dial("uot", s.raddr)
if err != nil {
logf("proxy-uottun failed to connect to server %v: %v", s.raddr, err)
return
continue
}
rc.Write(buf[:n])
// no remote forwarder, just a local udp forwarder
if urc, ok := rc.(*net.UDPConn); ok {
go func() {
timedCopy(c, clientAddr, urc, 5*time.Minute, false)
urc.Close()
}()
} else { // remote forwarder, udp over tcp
resp, err := ioutil.ReadAll(rc)
if err != nil {
logf("error in ioutil.ReadAll: %s\n", err)
return
continue
}
rc.Close()
c.WriteTo(resp, clientAddr)