From 3c77eb14b133b66e059c8d680e2ccd6801614636 Mon Sep 17 00:00:00 2001 From: Danny van Kooten Date: Fri, 25 Nov 2016 16:39:51 +0100 Subject: [PATCH] add suport for x-forwarded-for header --- api/collect.go | 7 ++++++- assets/js/components/Realtime.js | 5 +++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/api/collect.go b/api/collect.go index 08b59d9..b56d916 100644 --- a/api/collect.go +++ b/api/collect.go @@ -34,11 +34,16 @@ func CollectHandler(w http.ResponseWriter, r *http.Request) { // TODO: Mask IP Address // TODO: Query DB to determine whether visitor is returning + ipAddress := r.RemoteAddr + headerForwardedFor := r.Header.Get("X-Forwarded-For") + if( headerForwardedFor != "" ) { + ipAddress = headerForwardedFor + } q := r.URL.Query() visit := models.Visit{ Path: q.Get("p"), - IpAddress: r.RemoteAddr, + IpAddress: ipAddress, ReferrerUrl: q.Get("r"), BrowserLanguage: q.Get("l"), ScreenResolution: q.Get("sr"), diff --git a/assets/js/components/Realtime.js b/assets/js/components/Realtime.js index 00a763a..1b13843 100644 --- a/assets/js/components/Realtime.js +++ b/assets/js/components/Realtime.js @@ -12,17 +12,18 @@ class Realtime extends Component { } this.fetchData = this.fetchData.bind(this); this.fetchData(); + window.setInterval(this.fetchData, 6000); } fetchData() { return fetch('/api/visits/count/realtime', { credentials: 'include' }).then((r) => { - if( r.ok ) { r.json(); } + if( r.ok ) { return r.json(); } throw new Error(); }).then((data) => { this.setState({ count: data }) - }).catch((e) => {}); + }); } render() {