mirror of
https://git.teknik.io/Teknikode/Teknik.git
synced 2023-08-02 14:16:22 +02:00
Modified tracking to not pass in any volatile objects.
This commit is contained in:
parent
3b17dd9e76
commit
782aba9d22
@ -26,16 +26,30 @@ namespace Teknik.Filters
|
|||||||
if (config.PiwikConfig.Enabled)
|
if (config.PiwikConfig.Enabled)
|
||||||
{
|
{
|
||||||
HttpRequestBase request = filterContext.HttpContext.Request;
|
HttpRequestBase request = filterContext.HttpContext.Request;
|
||||||
|
|
||||||
|
string doNotTrack = request.Headers["DNT"];
|
||||||
|
bool dnt = (string.IsNullOrEmpty(doNotTrack) || doNotTrack != "1");
|
||||||
|
|
||||||
|
string userAgent = request.UserAgent;
|
||||||
|
|
||||||
|
string ipAddress = request.ClientIPFromRequest(true);
|
||||||
|
|
||||||
|
string urlReferrer = request.UrlReferrer?.ToString();
|
||||||
|
|
||||||
|
string url = string.Empty;
|
||||||
|
if (request.Url != null)
|
||||||
|
url = request.Url.ToString();
|
||||||
|
|
||||||
// Fire and forget. Don't need to wait for it.
|
// Fire and forget. Don't need to wait for it.
|
||||||
Task.Run(() => AsyncTrackDownload(request, config, request.Url?.ToString()));
|
Task.Run(() => AsyncTrackDownload(dnt, config.PiwikConfig.SiteId, config.PiwikConfig.Url, userAgent, ipAddress, config.PiwikConfig.TokenAuth, url, urlReferrer));
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnActionExecuted(filterContext);
|
base.OnActionExecuted(filterContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AsyncTrackDownload(HttpRequestBase request, Config config, string url)
|
private void AsyncTrackDownload(bool dnt, int siteId, string siteUrl, string userAgent, string clientIp, string token, string url, string urlReferrer)
|
||||||
{
|
{
|
||||||
Tracking.TrackDownload(request, config, url);
|
Tracking.TrackDownload(dnt, siteId, siteUrl, userAgent, clientIp, token, url, urlReferrer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using System.Web;
|
|||||||
using System.Web.Mvc;
|
using System.Web.Mvc;
|
||||||
using Teknik.Configuration;
|
using Teknik.Configuration;
|
||||||
using Teknik.Piwik;
|
using Teknik.Piwik;
|
||||||
|
using Teknik.Utilities;
|
||||||
|
|
||||||
namespace Teknik.Filters
|
namespace Teknik.Filters
|
||||||
{
|
{
|
||||||
@ -25,16 +26,29 @@ namespace Teknik.Filters
|
|||||||
{
|
{
|
||||||
HttpRequestBase request = filterContext.HttpContext.Request;
|
HttpRequestBase request = filterContext.HttpContext.Request;
|
||||||
|
|
||||||
|
string doNotTrack = request.Headers["DNT"];
|
||||||
|
bool dnt = (string.IsNullOrEmpty(doNotTrack) || doNotTrack != "1");
|
||||||
|
|
||||||
|
string userAgent = request.UserAgent;
|
||||||
|
|
||||||
|
string ipAddress = request.ClientIPFromRequest(true);
|
||||||
|
|
||||||
|
string urlReferrer = request.UrlReferrer?.ToString();
|
||||||
|
|
||||||
|
string url = string.Empty;
|
||||||
|
if (request.Url != null)
|
||||||
|
url = request.Url.ToString();
|
||||||
|
|
||||||
// Fire and forget. Don't need to wait for it.
|
// Fire and forget. Don't need to wait for it.
|
||||||
Task.Run(() => AsyncTrackLink(request, config, request.Url?.ToString()));
|
Task.Run(() => AsyncTrackLink(dnt, config.PiwikConfig.SiteId, config.PiwikConfig.Url, userAgent, ipAddress, config.PiwikConfig.TokenAuth, url, urlReferrer));
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnActionExecuted(filterContext);
|
base.OnActionExecuted(filterContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AsyncTrackLink(HttpRequestBase request, Config config, string url)
|
private void AsyncTrackLink(bool dnt, int siteId, string siteUrl, string userAgent, string clientIp, string token, string url, string urlReferrer)
|
||||||
{
|
{
|
||||||
Tracking.TrackLink(request, config, url);
|
Tracking.TrackLink(dnt, siteId, siteUrl, userAgent, clientIp, token, url, urlReferrer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,9 @@ namespace Teknik.Piwik
|
|||||||
if (request.UrlReferrer != null)
|
if (request.UrlReferrer != null)
|
||||||
tracker.SetUrlReferrer(request.UrlReferrer.ToString());
|
tracker.SetUrlReferrer(request.UrlReferrer.ToString());
|
||||||
|
|
||||||
|
if (request.Url != null)
|
||||||
|
tracker.SetUrl(request.Url.ToString());
|
||||||
|
|
||||||
// Send the tracking request
|
// Send the tracking request
|
||||||
tracker.DoTrackPageView(string.Format("{0}/{1}", sub, title));
|
tracker.DoTrackPageView(string.Format("{0}/{1}", sub, title));
|
||||||
}
|
}
|
||||||
@ -61,36 +64,36 @@ namespace Teknik.Piwik
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void TrackDownload(HttpRequestBase request, Config config, string url)
|
public static void TrackDownload(bool dnt, int siteId, string siteUrl, string userAgent, string clientIp, string token, string url, string urlReferrer)
|
||||||
{
|
{
|
||||||
TrackAction(request, config, url, ActionType.Download);
|
TrackAction(ActionType.Download, dnt, siteId, siteUrl, userAgent, clientIp, token, url, urlReferrer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void TrackLink(HttpRequestBase request, Config config, string url)
|
public static void TrackLink(bool dnt, int siteId, string siteUrl, string userAgent, string clientIp, string token, string url, string urlReferrer)
|
||||||
{
|
{
|
||||||
TrackAction(request, config, url, ActionType.Link);
|
TrackAction(ActionType.Link, dnt, siteId, siteUrl, userAgent, clientIp, token, url, urlReferrer);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void TrackAction(HttpRequestBase request, Config config, string url, ActionType type)
|
private static void TrackAction(ActionType type, bool dnt, int siteId, string siteUrl, string userAgent, string clientIp, string token, string url, string urlReferrer)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Follow Do Not Track
|
// Follow Do Not Track
|
||||||
string doNotTrack = request.Headers["DNT"];
|
if (dnt)
|
||||||
if (string.IsNullOrEmpty(doNotTrack) || doNotTrack != "1")
|
|
||||||
{
|
{
|
||||||
PiwikTracker tracker = new PiwikTracker(config.PiwikConfig.SiteId, config.PiwikConfig.Url);
|
PiwikTracker tracker = new PiwikTracker(siteId, siteUrl);
|
||||||
|
|
||||||
tracker.SetUserAgent(request.UserAgent);
|
tracker.SetUserAgent(userAgent);
|
||||||
|
|
||||||
string ipAddress = request.ClientIPFromRequest(true);
|
tracker.SetIp(clientIp);
|
||||||
|
tracker.SetTokenAuth(token);
|
||||||
tracker.SetIp(ipAddress);
|
|
||||||
tracker.SetTokenAuth(config.PiwikConfig.TokenAuth);
|
|
||||||
|
|
||||||
// Get Referral
|
// Get Referral
|
||||||
if (request.UrlReferrer != null)
|
if (!string.IsNullOrEmpty(urlReferrer))
|
||||||
tracker.SetUrlReferrer(request.UrlReferrer.ToString());
|
tracker.SetUrlReferrer(urlReferrer);
|
||||||
|
|
||||||
|
if (!string.IsNullOrEmpty(url))
|
||||||
|
tracker.SetUrl(url);
|
||||||
|
|
||||||
tracker.DoTrackAction(url, type);
|
tracker.DoTrackAction(url, type);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user