adjust external ip

pull/291/head
刘河 2019-12-02 02:15:13 +08:00
parent 927038fd4c
commit 91c1ffc6ce
2 changed files with 19 additions and 4 deletions

View File

@ -109,8 +109,8 @@ func ChangeHostAndHeader(r *http.Request, host string, header string, addr strin
}
addr = strings.Split(addr, ":")[0]
if prior, ok := r.Header["X-Forwarded-For"]; ok {
addr = strings.Join(prior, ", ") + ", " + addr
}
addr = strings.Join(prior, ", ") + ", " + addr
}
r.Header.Set("X-Forwarded-For", addr)
r.Header.Set("X-Real-IP", addr)
}
@ -396,3 +396,14 @@ func GetExtFromPath(path string) string {
}
return string(re.Find([]byte(s[0])))
}
func GetExternalIp() string {
resp, err := http.Get("http://myexternalip.com/raw")
if err != nil {
return ""
}
defer resp.Body.Close()
content, _ := ioutil.ReadAll(resp.Body)
return string(content)
}

View File

@ -174,7 +174,12 @@ func (s *Sock5ModeServer) sendUdpReply(writeConn net.Conn, c net.Conn, rep uint8
}
var serveExternalIp string
func (s *Sock5ModeServer) handleUDP(c net.Conn) {
if serveExternalIp == "" {
serveExternalIp = common.GetExternalIp()
}
defer c.Close()
addrType := make([]byte, 1)
c.Read(addrType)
@ -213,9 +218,8 @@ func (s *Sock5ModeServer) handleUDP(c net.Conn) {
logs.Error("listen local reply udp port error")
return
}
// reply the local addr
s.sendUdpReply(c, reply, succeeded, "106.12.146.199")
s.sendUdpReply(c, reply, succeeded, serveExternalIp)
defer reply.Close()
// new a tunnel to client