This commit is contained in:
wwt 2023-12-22 08:07:39 +08:00
parent 8368f61c97
commit b3a7f1d557

View File

@ -104,27 +104,6 @@ func formatLog(format string, log RequestLog) string {
return format return format
} }
func getRealIp(r *http.Request) string {
remoteAddr := r.RemoteAddr
forwardedFor := parseFirstItem(r.Header.Get("X-Forwarded-For"))
realIp := parseFirstItem(r.Header.Get("X-Real-IP"))
if forwardedFor != "" {
return forwardedFor
}
if realIp != "" {
return realIp
}
return remoteAddr
}
func parseFirstItem(s string) string {
items := strings.Split(s, ",")
if len(items) == 0 {
return ""
}
return items[0]
}
func str2uint64(d string) uint64 { func str2uint64(d string) uint64 {
val, err := strconv.ParseInt(d, 10, 64) val, err := strconv.ParseInt(d, 10, 64)
if err != nil { if err != nil {
@ -163,38 +142,43 @@ func handler2handlerfunc(h http.Handler) http.HandlerFunc {
} }
func RequestLogHandlerFunc(handler http.HandlerFunc, server *settings.Server) http.HandlerFunc { func RequestLogHandlerFunc(handler http.HandlerFunc, server *settings.Server) http.HandlerFunc {
if !server.EnableRequestLog {
return handler
}
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
begin := time.Now() begin := time.Now()
writer := MakeResponseWriterWrapper(w) writer := MakeResponseWriterWrapper(w)
handler(writer, r) handler(writer, r)
if server.EnableRequestLog { logRequest(w, r, server.RequestLogFormat, RequestLog{
logRequest(w, r, server.RequestLogFormat, RequestLog{ user: nil,
user: nil, status: writer.GetStatus(),
status: writer.GetStatus(), elapsed: time.Now().Sub(begin).Seconds(),
elapsed: time.Now().Sub(begin).Seconds(), response_size: writer.GetSize(),
response_size: writer.GetSize(), })
})
}
}) })
} }
func RequestLogHandler(handler http.Handler, server *settings.Server) http.Handler { func RequestLogHandler(handler http.Handler, server *settings.Server) http.Handler {
if !server.EnableRequestLog {
return handler
}
return handlerfunc2handler(RequestLogHandlerFunc(handler2handlerfunc(handler), server)) return handlerfunc2handler(RequestLogHandlerFunc(handler2handlerfunc(handler), server))
} }
func RequestLogHandleFunc(handle handleFunc, server *settings.Server) handleFunc { func RequestLogHandleFunc(handle handleFunc, server *settings.Server) handleFunc {
if !server.EnableRequestLog {
return handle
}
return func(w http.ResponseWriter, r *http.Request, d *data) (int, error) { return func(w http.ResponseWriter, r *http.Request, d *data) (int, error) {
begin := time.Now() begin := time.Now()
writer := MakeResponseWriterWrapper(w) writer := MakeResponseWriterWrapper(w)
status, err := handle(writer, r, d) status, err := handle(writer, r, d)
if server.EnableRequestLog { logRequest(w, r, server.RequestLogFormat, RequestLog{
logRequest(w, r, server.RequestLogFormat, RequestLog{ user: d.user,
user: d.user, status: writer.GetStatus(),
status: writer.GetStatus(), elapsed: time.Now().Sub(begin).Seconds(),
elapsed: time.Now().Sub(begin).Seconds(), response_size: writer.GetSize(),
response_size: writer.GetSize(), })
})
}
return status, err return status, err
} }
} }