aboutsummaryrefslogtreecommitdiffstats
path: root/log.go
diff options
context:
space:
mode:
authorclsr <clsr@clsr.net>2016-11-15 20:42:05 +0100
committerclsr <clsr@clsr.net>2016-11-15 20:42:05 +0100
commit9c7c992f30945a50bb3510daec1b64f6f1d969a4 (patch)
tree1cafbe3ea7226762615607dba135d26cf500c869 /log.go
parentd3536e6741351fb13a9f6a327637bc2a4619fea4 (diff)
downloadgomf-9c7c992f30945a50bb3510daec1b64f6f1d969a4.tar.gz
gomf-9c7c992f30945a50bb3510daec1b64f6f1d969a4.zip
Add --proxy-countv0.5.1
Diffstat (limited to 'log.go')
-rw-r--r--log.go15
1 files changed, 15 insertions, 0 deletions
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