X-Forward-For can return a list

This commit is contained in:
Vincent Batts 2015-09-28 17:03:07 -04:00
parent a7023cee3a
commit becd5526f5

View file

@ -63,19 +63,27 @@ func LogRequest(r *http.Request, statusCode int) {
r.ContentLength)
}
func RealIP(r *http.Request) (ip string) {
ip = r.RemoteAddr
func RealIP(r *http.Request) string {
rip := RealIPs(r)
return rip[len(rip)]
}
func RealIPs(r *http.Request) (ips []string) {
ip := r.RemoteAddr
port_pos := strings.LastIndex(ip, ":")
if port_pos != -1 {
ip = ip[0:port_pos]
}
for k, v := range r.Header {
if k == "X-Forwarded-For" {
ip = strings.Join(v, " ")
}
if ip != "" {
ips = append(ips, ip)
}
return ip
val := r.Header.Get("X-Forwarded-For")
if val != "" {
for _, ip := range strings.Split(val, ", ") {
ips = append(ips, ip)
}
}
return ips
}