From 9c7c992f30945a50bb3510daec1b64f6f1d969a4 Mon Sep 17 00:00:00 2001 From: clsr Date: Tue, 15 Nov 2016 20:42:05 +0100 Subject: Add --proxy-count --- log.go | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'log.go') diff --git a/log.go b/log.go index f2305ce..54489f3 100644 --- a/log.go +++ b/log.go @@ -9,6 +9,7 @@ import ( "net/http" "os" "path" + "strings" "sync" "time" ) @@ -22,6 +23,7 @@ type Logger struct { HashUserAgent bool HashReferer bool HashSalt string + ProxyCount int logFile *os.File encoder *json.Encoder lastDate string @@ -52,6 +54,19 @@ func (l *Logger) Log(entry LogEntry) { func (l *Logger) LogUpload(req *http.Request, res result) { host, _, _ := net.SplitHostPort(req.RemoteAddr) + if l.ProxyCount > 0 { + ffs := strings.Split(req.Header.Get("X-Forwarded-For"), ",") + if len(ffs) < l.ProxyCount { + ri := req.Header.Get("X-Real-IP") + if ri != "" { + host = ri + } else if len(ffs) > 0 { + host = ffs[len(ffs)-1] + } + } else { + host = ffs[len(ffs)-l.ProxyCount] + } + } l.logUpload( host, // ip req.UserAgent(), // userAgent -- cgit