fancl 1 anno fa
parent
commit
8d716e837d
1 ha cambiato i file con 16 aggiunte e 0 eliminazioni
  1. 16 0
      entry/http/context.go

+ 16 - 0
entry/http/context.go

@@ -3,6 +3,7 @@ package http
 import (
 	"context"
 	"encoding/json"
+	"net"
 	"net/http"
 	"os"
 	"path"
@@ -26,6 +27,21 @@ func (ctx *Context) reset(req *http.Request, res http.ResponseWriter, ps map[str
 	ctx.req, ctx.res, ctx.params = req, res, ps
 }
 
+func (c *Context) RealIp() string {
+	if ip := c.Request().Header.Get("X-Forwarded-For"); ip != "" {
+		i := strings.IndexAny(ip, ",")
+		if i > 0 {
+			return strings.TrimSpace(ip[:i])
+		}
+		return ip
+	}
+	if ip := c.Request().Header.Get("X-Real-IP"); ip != "" {
+		return ip
+	}
+	ra, _, _ := net.SplitHostPort(c.Request().RemoteAddr)
+	return ra
+}
+
 func (ctx *Context) Request() *http.Request {
 	return ctx.req
 }