Respect dnt in JS tracker (#257)
This commit is contained in:
parent
d78fd9f6c5
commit
4ffc3bdef7
@ -5,7 +5,13 @@
|
|||||||
//
|
//
|
||||||
// This script only sends the current URL, the referrer URL, and the page load time. That's it!
|
// This script only sends the current URL, the referrer URL, and the page load time. That's it!
|
||||||
|
|
||||||
|
{% if dnt %}
|
||||||
var Shynet = {
|
var Shynet = {
|
||||||
|
dnt: true
|
||||||
|
};
|
||||||
|
{% else %}
|
||||||
|
var Shynet = {
|
||||||
|
dnt: false,
|
||||||
idempotency: null,
|
idempotency: null,
|
||||||
heartbeatTaskId: null,
|
heartbeatTaskId: null,
|
||||||
skipHeartbeat: false,
|
skipHeartbeat: false,
|
||||||
@ -53,6 +59,8 @@ var Shynet = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
window.addEventListener("load", Shynet.newPageLoad);
|
window.addEventListener("load", Shynet.newPageLoad);
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
|
||||||
{% if script_inject %}
|
{% if script_inject %}
|
||||||
// The following is script is not part of Shynet, and was instead
|
// The following is script is not part of Shynet, and was instead
|
||||||
|
@ -15,7 +15,7 @@ from django.shortcuts import render, reverse
|
|||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.views.decorators.csrf import csrf_exempt
|
from django.views.decorators.csrf import csrf_exempt
|
||||||
from django.views.generic import TemplateView, View
|
from django.views.generic import View
|
||||||
from ipware import get_client_ip
|
from ipware import get_client_ip
|
||||||
|
|
||||||
from core.models import Service
|
from core.models import Service
|
||||||
@ -119,7 +119,7 @@ class ScriptView(ValidateServiceOriginsMixin, View):
|
|||||||
"service_uuid": self.kwargs.get("service_uuid"),
|
"service_uuid": self.kwargs.get("service_uuid"),
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
if self.kwargs.get("identifier") == None
|
if self.kwargs.get("identifier") is None
|
||||||
else reverse(
|
else reverse(
|
||||||
"ingress:endpoint_script_id",
|
"ingress:endpoint_script_id",
|
||||||
kwargs={
|
kwargs={
|
||||||
@ -129,6 +129,9 @@ class ScriptView(ValidateServiceOriginsMixin, View):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
heartbeat_frequency = settings.SCRIPT_HEARTBEAT_FREQUENCY
|
heartbeat_frequency = settings.SCRIPT_HEARTBEAT_FREQUENCY
|
||||||
|
dnt = self.request.META.get("HTTP_DNT", "0").strip() == "1"
|
||||||
|
service_uuid = self.kwargs.get("service_uuid")
|
||||||
|
service = Service.objects.get(pk=service_uuid, status=Service.ACTIVE)
|
||||||
return render(
|
return render(
|
||||||
self.request,
|
self.request,
|
||||||
"analytics/scripts/page.js",
|
"analytics/scripts/page.js",
|
||||||
@ -138,6 +141,7 @@ class ScriptView(ValidateServiceOriginsMixin, View):
|
|||||||
"protocol": protocol,
|
"protocol": protocol,
|
||||||
"heartbeat_frequency": heartbeat_frequency,
|
"heartbeat_frequency": heartbeat_frequency,
|
||||||
"script_inject": self.get_script_inject(),
|
"script_inject": self.get_script_inject(),
|
||||||
|
"dnt": dnt and service.respect_dnt,
|
||||||
}
|
}
|
||||||
),
|
),
|
||||||
content_type="application/javascript",
|
content_type="application/javascript",
|
||||||
@ -159,7 +163,7 @@ class ScriptView(ValidateServiceOriginsMixin, View):
|
|||||||
def get_script_inject(self):
|
def get_script_inject(self):
|
||||||
service_uuid = self.kwargs.get("service_uuid")
|
service_uuid = self.kwargs.get("service_uuid")
|
||||||
script_inject = cache.get(f"script_inject_{service_uuid}")
|
script_inject = cache.get(f"script_inject_{service_uuid}")
|
||||||
if script_inject == None:
|
if script_inject is None:
|
||||||
service = Service.objects.get(uuid=service_uuid)
|
service = Service.objects.get(uuid=service_uuid)
|
||||||
script_inject = service.script_inject
|
script_inject = service.script_inject
|
||||||
cache.set(f"script_inject_{service_uuid}", script_inject, timeout=3600)
|
cache.set(f"script_inject_{service_uuid}", script_inject, timeout=3600)
|
||||||
|
Loading…
Reference in New Issue
Block a user