From 38c274b106f7b9e0d1960de6cf7b5ef92a841600 Mon Sep 17 00:00:00 2001 From: xmdhs Date: Tue, 5 Sep 2023 01:38:25 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=20ip=20=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BD=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/config.go | 3 +-- server/server.go | 2 +- utils/ip.go | 28 +++++++++++++++------------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/config/config.go b/config/config.go index b0e4c18..d031b65 100644 --- a/config/config.go +++ b/config/config.go @@ -10,12 +10,11 @@ type Config struct { Sql struct { MysqlDsn string } - Node int64 - Epoch int64 Debug bool JwtKey string Cache struct { Type string Ram int } + RaelIP bool } diff --git a/server/server.go b/server/server.go index a4fe724..80ed667 100644 --- a/server/server.go +++ b/server/server.go @@ -21,7 +21,7 @@ func NewServer(c config.Config, sl *slog.Logger, route *httprouter.Router) (*htt Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ctx := r.Context() if sl.Enabled(ctx, slog.LevelInfo) { - ip, _ := utils.GetIP(r) + ip, _ := utils.GetIP(r, c.RaelIP) trackid.Add(1) ctx = setCtx(ctx, &reqInfo{ URL: r.URL.String(), diff --git a/utils/ip.go b/utils/ip.go index 6801a64..a4e3ad1 100644 --- a/utils/ip.go +++ b/utils/ip.go @@ -7,22 +7,24 @@ import ( "strings" ) -func GetIP(r *http.Request) (string, error) { - //Get IP from the X-REAL-IP header - ip := r.Header.Get("X-REAL-IP") - netIP := net.ParseIP(ip) - if netIP != nil { - return ip, nil - } - - //Get IP from X-FORWARDED-FOR header - ips := r.Header.Get("X-FORWARDED-FOR") - splitIps := strings.Split(ips, ",") - for _, ip := range splitIps { +func GetIP(r *http.Request, fromHeader bool) (string, error) { + if fromHeader { + //Get IP from the X-REAL-IP header + ip := r.Header.Get("X-REAL-IP") netIP := net.ParseIP(ip) if netIP != nil { return ip, nil } + + //Get IP from X-FORWARDED-FOR header + ips := r.Header.Get("X-FORWARDED-FOR") + splitIps := strings.Split(ips, ",") + for _, ip := range splitIps { + netIP := net.ParseIP(ip) + if netIP != nil { + return ip, nil + } + } } //Get IP from RemoteAddr @@ -30,7 +32,7 @@ func GetIP(r *http.Request) (string, error) { if err != nil { return "", err } - netIP = net.ParseIP(ip) + netIP := net.ParseIP(ip) if netIP != nil { return ip, nil }