parent
64c2e7b448
commit
95042f5eb3
@ -0,0 +1,34 @@
|
||||
package util
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"net"
|
||||
"net/http"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// GetIP returns request real ip.
|
||||
func GetIP(r *http.Request) (string, error) {
|
||||
ip := r.Header.Get("X-Real-IP")
|
||||
if net.ParseIP(ip) != nil {
|
||||
return ip, nil
|
||||
}
|
||||
|
||||
ip = r.Header.Get("X-Forward-For")
|
||||
for _, i := range strings.Split(ip, ",") {
|
||||
if net.ParseIP(i) != nil {
|
||||
return i, nil
|
||||
}
|
||||
}
|
||||
|
||||
ip, _, err := net.SplitHostPort(r.RemoteAddr)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
if net.ParseIP(ip) != nil {
|
||||
return ip, nil
|
||||
}
|
||||
|
||||
return "", errors.New("no valid ip found")
|
||||
}
|
||||
Loading…
Reference in new issue