From 1641b9920b88e3e2c5f30e9f9d7d03b7d5e0ffd5 Mon Sep 17 00:00:00 2001 From: hongming Date: Fri, 8 Oct 2021 16:05:31 +0800 Subject: [PATCH] Fix incorrect source IP --- pkg/apiserver/apiserver.go | 5 +++-- pkg/apiserver/request/requestinfo.go | 5 +++-- pkg/utils/net/net.go | 25 ------------------------- 3 files changed, 6 insertions(+), 29 deletions(-) diff --git a/pkg/apiserver/apiserver.go b/pkg/apiserver/apiserver.go index 50599e2d8..6ee16480e 100644 --- a/pkg/apiserver/apiserver.go +++ b/pkg/apiserver/apiserver.go @@ -24,6 +24,8 @@ import ( rt "runtime" "time" + "kubesphere.io/kubesphere/pkg/utils/iputil" + "kubesphere.io/kubesphere/pkg/apiserver/authentication/token" "kubesphere.io/kubesphere/pkg/apiserver/authorization" @@ -107,7 +109,6 @@ import ( "kubesphere.io/kubesphere/pkg/simple/client/s3" "kubesphere.io/kubesphere/pkg/simple/client/sonarqube" "kubesphere.io/kubesphere/pkg/utils/metrics" - utilnet "kubesphere.io/kubesphere/pkg/utils/net" ) type APIServer struct { @@ -596,7 +597,7 @@ func logRequestAndResponse(req *restful.Request, resp *restful.Response, chain * } logWithVerbose.Infof("%s - \"%s %s %s\" %d %d %dms", - utilnet.GetRequestIP(req.Request), + iputil.RemoteIp(req.Request), req.Request.Method, req.Request.URL, req.Request.Proto, diff --git a/pkg/apiserver/request/requestinfo.go b/pkg/apiserver/request/requestinfo.go index 80ab5aaa6..a6227f081 100644 --- a/pkg/apiserver/request/requestinfo.go +++ b/pkg/apiserver/request/requestinfo.go @@ -25,6 +25,8 @@ import ( "net/http" "strings" + "kubesphere.io/kubesphere/pkg/utils/iputil" + "k8s.io/apimachinery/pkg/api/validation/path" metainternalversion "k8s.io/apimachinery/pkg/apis/meta/internalversion" metainternalversionscheme "k8s.io/apimachinery/pkg/apis/meta/internalversion/scheme" @@ -36,7 +38,6 @@ import ( "kubesphere.io/kubesphere/pkg/api" "kubesphere.io/kubesphere/pkg/constants" - netutils "kubesphere.io/kubesphere/pkg/utils/net" ) type RequestInfoResolver interface { @@ -127,7 +128,7 @@ func (r *RequestInfoFactory) NewRequestInfo(req *http.Request) (*RequestInfo, er }, Workspace: api.WorkspaceNone, Cluster: api.ClusterNone, - SourceIP: netutils.GetRequestIP(req), + SourceIP: iputil.RemoteIp(req), UserAgent: req.UserAgent(), } diff --git a/pkg/utils/net/net.go b/pkg/utils/net/net.go index fb9681a61..abe7e5ffd 100644 --- a/pkg/utils/net/net.go +++ b/pkg/utils/net/net.go @@ -16,32 +16,7 @@ limitations under the License. package net -import ( - "net" - "net/http" - "strings" -) - // 0 is considered as a non valid port func IsValidPort(port int) bool { return port > 0 && port < 65535 } - -func GetRequestIP(req *http.Request) string { - address := strings.Trim(req.Header.Get("X-Real-Ip"), " ") - if address != "" { - return address - } - - address = strings.Trim(req.Header.Get("X-Forwarded-For"), " ") - if address != "" { - return address - } - - address, _, err := net.SplitHostPort(req.RemoteAddr) - if err != nil { - return req.RemoteAddr - } - - return address -}