From cd6708f25006a00b20073a918d8dc2253dbd376f Mon Sep 17 00:00:00 2001 From: Thomas Steur Date: Wed, 18 Nov 2020 09:48:06 +1300 Subject: SameSite cookie attribute can be configured for JS tracker (#16733) --- piwik.js | 79 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 40 insertions(+), 39 deletions(-) (limited to 'piwik.js') diff --git a/piwik.js b/piwik.js index f31e6d9d74..89a8fe7f90 100644 --- a/piwik.js +++ b/piwik.js @@ -29,44 +29,45 @@ ao=ae.findFirstNodeHavingAttribute(ap,this.CONTENT_PIECE_ATTR);if(!ao){ao=ae.fin }if(ar){ar+="&ca=1"}return ar},buildContentBlock:function(aq){if(!aq){return}var ao=this.findContentName(aq);var ap=this.findContentPiece(aq);var ar=this.findContentTarget(aq);ao=this.trim(ao);ap=this.trim(ap);ar=this.trim(ar);return{name:ao||"Unknown",piece:ap||"Unknown",target:ar||""}},collectContent:function(ar){if(!ar||!ar.length){return[]}var aq=[];var ao,ap;for(ao=0;ao=0){dj=dj.slice(0,di)}di=dj.lastIndexOf("/");if(di!==dj.length-1){dj=dj.slice(0,di+1)}return dj+dh}function cG(dj,dh){var di;dj=String(dj).toLowerCase();dh=String(dh).toLowerCase();if(dj===dh){return true}if(dh.slice(0,1)==="."){if(dj===dh.slice(1)){return true}di=dj.length-dh.length;if((di>0)&&(dj.slice(di)===dh)){return true}}return false}function ck(dh){var di=document.createElement("a"); -if(dh.indexOf("//")!==0&&dh.indexOf("http")!==0){if(dh.indexOf("*")===0){dh=dh.substr(1)}if(dh.indexOf(".")===0){dh=dh.substr(1)}dh="http://"+dh}di.href=v.toAbsoluteUrl(dh);if(di.pathname){return di.pathname}return""}function a3(di,dh){if(!aj(dh,"/")){dh="/"+dh}if(!aj(di,"/")){di="/"+di}var dj=(dh==="/"||dh==="/*");if(dj){return true}if(di===dh){return true}dh=String(dh).toLowerCase();di=String(di).toLowerCase();if(Q(dh,"*")){dh=dh.slice(0,-1);dj=(!dh||dh==="/");if(dj){return true}if(di===dh){return true}return di.indexOf(dh)===0}if(!Q(di,"/")){di+="/"}if(!Q(dh,"/")){dh+="/"}return di.indexOf(dh)===0}function ar(dl,dn){var di,dh,dj,dk,dm;for(di=0;di0)&&(dk.slice(dj)===dh)){return true}}}return false}function cn(dh,dj){dh=dh.replace("send_image=0","send_image=1"); -var di=new Image(1,1);di.onload=function(){E=0;if(typeof dj==="function"){dj({request:dh,trackerUrl:aE,success:true})}};di.onerror=function(){if(typeof dj==="function"){dj({request:dh,trackerUrl:aE,success:false})}};di.src=aE+(aE.indexOf("?")<0?"?":"&")+dh}function cD(dh){if(c8==="POST"){return true}return dh&&(dh.length>2000||dh.indexOf('{"requests"')===0)}function aK(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function a6(dl,dp,dn){var dj=aK();if(!dj){return false}var dk={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dq=false;var di=aE;try{var dh=new Blob([dl],dk);if(dn&&!cD(dl)){dh=new Blob([],dk);di=di+(di.indexOf("?")<0?"?":"&")+dl}dq=g.sendBeacon(di,dh)}catch(dm){return false}if(dq&&typeof dp==="function"){dp({request:dl,trackerUrl:aE,success:true,isSendBeacon:true})}return dq}function c3(di,dj,dh){if(!J(dh)||null===dh){dh=true}if(l&&a6(di,dj,dh)){return}setTimeout(function(){if(l&&a6(di,dj,dh)){return}var dm;try{var dl=S.XMLHttpRequest?new S.XMLHttpRequest():S.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null; -dl.open("POST",aE,true);dl.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dn=l&&a6(di,dj,dh);if(!dn&&dh){cn(di,dj)}else{if(typeof dj==="function"){dj({request:di,trackerUrl:aE,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dj==="function")){dj({request:di,trackerUrl:aE,success:true,xhr:this})}}};dl.setRequestHeader("Content-Type",cv);dl.withCredentials=true;dl.send(di)}catch(dk){dm=l&&a6(di,dj,dh);if(!dm&&dh){cn(di,dj)}else{if(typeof dj==="function"){dj({request:di,trackerUrl:aE,success:false})}}}},50)}function cf(di){var dh=new Date();var dj=dh.getTime()+di;if(!q||dj>q){q=dj}}function ba(){bc=true;cw=new Date().getTime()}function db(){var dh=new Date().getTime();return !cw||(dh-cw)>a5}function az(){if(db()){bR()}}function de(){if(aN||!a5){return}aN=true;an(S,"focus",ba);an(S,"blur",az);ab++;t.addPlugin("HeartBeat"+ab,{unload:function(){if(aN&&db()){bR()}}})}function cB(dl){var di=new Date();var dh=di.getTime();cX=dh;if(cA&&dh=dh.length){return[dh]}var di=0;var dj=dh.length;var dk=[];for(di;di=di&&dh<=(di+aZ)){return true}}return false}function df(dh){if(!cM){return""}var dl=e(dh,av);if(!dl){return""}dl=String(dl);var dj=new RegExp("^[a-zA-Z0-9]+$");if(dl.length===32&&dj.test(dl)){var di=dl.substr(16,32);if(c1(di)){var dk=dl.substr(0,16);return dk}}return""}function cN(){if(!bO){bO=df(bN)}var dj=new Date(),dh=Math.round(dj.getTime()/1000),di=aT("id"),dm=aD(di),dl,dk; -if(dm){dl=dm.split(".");dl.unshift("0");if(bO.length){dl[1]=bO}return dl}if(bO.length){dk=bO}else{if("0"===b5()){dk=""}else{dk=cQ()}}dl=["1",dk,dh];return dl}function aY(){var dk=cN(),di=dk[0],dj=dk[1],dh=dk[2];return{newVisitor:di,uuid:dj,createTs:dh}}function aH(){var dk=new Date(),di=dk.getTime(),dl=aY().createTs;var dh=parseInt(dl,10);var dj=(dh*1000)+cJ-di;return dj}function aM(dh){if(!b6){return}var dj=new Date(),di=Math.round(dj.getTime()/1000);if(!J(dh)){dh=aY()}var dk=dh.uuid+"."+dh.createTs+".";dc(aT("id"),dk,aH(),bq,cW,bS)}function bM(){var dh=aD(aT("ref"));if(dh.length){try{dh=S.JSON.parse(dh);if(V(dh)){return dh}}catch(di){}}return["","",0,""]}function bx(di){var dh="testvalue";dc("test",dh,10000,null,di);if(aD("test")===dh){bY("test",null,di);return true}return false}function aF(){var di=bm;bm=false;var dh,dj;for(dh=0;dh0){dl=parseInt(dl,10);dp(dl)}})}var bD={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dh=this.requests;this.requests=[];if(dh.length===1){bG(dh[0],bK)}else{dd(dh,bK)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(di){if(!this.canQueue()){dd(di,bK);return}var dh;for(dh=0;dh0){if(!J(di)){di=""}if(!w(di)){di=String(di)}bn[dh]=di}};this.getCustomDimension=function(dh){dh=parseInt(dh,10);if(dh>0&&Object.prototype.hasOwnProperty.call(bn,dh)){return bn[dh]}};this.deleteCustomDimension=function(dh){dh=parseInt(dh,10); -if(dh>0){delete bn[dh]}};this.setCustomVariable=function(di,dh,dl,dj){var dk;if(!J(dj)){dj="visit"}if(!J(dh)){return}if(!J(dl)){dl=""}if(di>0){dh=!w(dh)?String(dh):dh;dl=!w(dl)?String(dl):dl;dk=[dh.slice(0,bu),dl.slice(0,bu)];if(dj==="visit"||dj===2){cE();aQ[di]=dk}else{if(dj==="page"||dj===3){bW[di]=dk}else{if(dj==="event"){cl[di]=dk}}}}};this.getCustomVariable=function(di,dj){var dh;if(!J(dj)){dj="visit"}if(dj==="page"||dj===3){dh=bW[di]}else{if(dj==="event"){dh=cl[di]}else{if(dj==="visit"||dj===2){cE();dh=aQ[di]}}}if(!J(dh)||(dh&&dh[0]==="")){return false}return dh};this.deleteCustomVariable=function(dh,di){if(this.getCustomVariable(dh,di)){this.setCustomVariable(dh,"","",di)}};this.deleteCustomVariables=function(dh){if(dh==="page"||dh===3){bW={}}else{if(dh==="event"){cl={}}else{if(dh==="visit"||dh===2){aQ={}}}}};this.storeCustomVariablesInCookie=function(){bQ=true};this.setLinkTrackingTimer=function(dh){bK=dh};this.getLinkTrackingTimer=function(){return bK};this.setDownloadExtensions=function(dh){if(w(dh)){dh=dh.split("|") -}c5=dh};this.addDownloadExtensions=function(di){var dh;if(w(di)){di=di.split("|")}for(dh=0;dh1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven"]; -function ad(aq,ap){var ao=new P(aq,ap);I.push(ao);_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();t.trigger("TrackerAdded",[ao]);return ao}an(S,"beforeunload",ai,false);an(S,"online",function(){if(J(g.serviceWorker)&&J(g.serviceWorker.ready)){g.serviceWorker.ready.then(function(ao){return ao.sync.register("matomoSync")})}},false);an(S,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=t.getAsyncTrackers();for(ar=0;ar=0){dk=dk.slice(0,dj)}dj=dk.lastIndexOf("/");if(dj!==dk.length-1){dk=dk.slice(0,dj+1)}return dk+di}function cH(dk,di){var dj;dk=String(dk).toLowerCase();di=String(di).toLowerCase();if(dk===di){return true}if(di.slice(0,1)==="."){if(dk===di.slice(1)){return true}dj=dk.length-di.length;if((dj>0)&&(dk.slice(dj)===di)){return true}}return false +}function cl(di){var dj=document.createElement("a");if(di.indexOf("//")!==0&&di.indexOf("http")!==0){if(di.indexOf("*")===0){di=di.substr(1)}if(di.indexOf(".")===0){di=di.substr(1)}di="http://"+di}dj.href=v.toAbsoluteUrl(di);if(dj.pathname){return dj.pathname}return""}function a4(dj,di){if(!aj(di,"/")){di="/"+di}if(!aj(dj,"/")){dj="/"+dj}var dk=(di==="/"||di==="/*");if(dk){return true}if(dj===di){return true}di=String(di).toLowerCase();dj=String(dj).toLowerCase();if(Q(di,"*")){di=di.slice(0,-1);dk=(!di||di==="/");if(dk){return true}if(dj===di){return true}return dj.indexOf(di)===0}if(!Q(dj,"/")){dj+="/"}if(!Q(di,"/")){di+="/"}return dj.indexOf(di)===0}function ar(dm,dp){var dj,di,dk,dl,dn;for(dj=0;dj0)&&(dl.slice(dk)===di)){return true +}}}return false}function co(di,dk){di=di.replace("send_image=0","send_image=1");var dj=new Image(1,1);dj.onload=function(){E=0;if(typeof dk==="function"){dk({request:di,trackerUrl:aE,success:true})}};dj.onerror=function(){if(typeof dk==="function"){dk({request:di,trackerUrl:aE,success:false})}};dj.src=aE+(aE.indexOf("?")<0?"?":"&")+di}function cE(di){if(c9==="POST"){return true}return di&&(di.length>2000||di.indexOf('{"requests"')===0)}function aL(){return"object"===typeof g&&"function"===typeof g.sendBeacon&&"function"===typeof Blob}function a7(dm,dq,dp){var dk=aL();if(!dk){return false}var dl={type:"application/x-www-form-urlencoded; charset=UTF-8"};var dr=false;var dj=aE;try{var di=new Blob([dm],dl);if(dp&&!cE(dm)){di=new Blob([],dl);dj=dj+(dj.indexOf("?")<0?"?":"&")+dm}dr=g.sendBeacon(dj,di)}catch(dn){return false}if(dr&&typeof dq==="function"){dq({request:dm,trackerUrl:aE,success:true,isSendBeacon:true})}return dr}function c4(dj,dk,di){if(!J(di)||null===di){di=true}if(l&&a7(dj,dk,di)){return +}setTimeout(function(){if(l&&a7(dj,dk,di)){return}var dn;try{var dm=S.XMLHttpRequest?new S.XMLHttpRequest():S.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null;dm.open("POST",aE,true);dm.onreadystatechange=function(){if(this.readyState===4&&!(this.status>=200&&this.status<300)){var dp=l&&a7(dj,dk,di);if(!dp&&di){co(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aE,success:false,xhr:this})}}}else{if(this.readyState===4&&(typeof dk==="function")){dk({request:dj,trackerUrl:aE,success:true,xhr:this})}}};dm.setRequestHeader("Content-Type",cw);dm.withCredentials=true;dm.send(dj)}catch(dl){dn=l&&a7(dj,dk,di);if(!dn&&di){co(dj,dk)}else{if(typeof dk==="function"){dk({request:dj,trackerUrl:aE,success:false})}}}},50)}function cg(dj){var di=new Date();var dk=di.getTime()+dj;if(!q||dk>q){q=dk}}function bb(){bd=true;cx=new Date().getTime()}function dc(){var di=new Date().getTime();return !cx||(di-cx)>a6}function az(){if(dc()){bS()}}function df(){if(aO||!a6){return}aO=true;an(S,"focus",bb); +an(S,"blur",az);ab++;t.addPlugin("HeartBeat"+ab,{unload:function(){if(aO&&dc()){bS()}}})}function cC(dm){var dj=new Date();var di=dj.getTime();cY=di;if(cB&&di=di.length){return[di]}var dj=0;var dk=di.length;var dl=[];for(dj;dj=dj&&di<=(dj+a0)){return true}}return false}function dg(di){if(!cN){return""}var dm=e(di,av);if(!dm){return""}dm=String(dm);var dk=new RegExp("^[a-zA-Z0-9]+$"); +if(dm.length===32&&dk.test(dm)){var dj=dm.substr(16,32);if(c2(dj)){var dl=dm.substr(0,16);return dl}}return""}function cO(){if(!bP){bP=dg(bO)}var dk=new Date(),di=Math.round(dk.getTime()/1000),dj=aU("id"),dn=aD(dj),dm,dl;if(dn){dm=dn.split(".");dm.unshift("0");if(bP.length){dm[1]=bP}return dm}if(bP.length){dl=bP}else{if("0"===b6()){dl=""}else{dl=cR()}}dm=["1",dl,di];return dm}function aZ(){var dl=cO(),dj=dl[0],dk=dl[1],di=dl[2];return{newVisitor:dj,uuid:dk,createTs:di}}function aH(){var dl=new Date(),dj=dl.getTime(),dm=aZ().createTs;var di=parseInt(dm,10);var dk=(di*1000)+cK-dj;return dk}function aN(di){if(!b7){return}var dk=new Date(),dj=Math.round(dk.getTime()/1000);if(!J(di)){di=aZ()}var dl=di.uuid+"."+di.createTs+".";dd(aU("id"),dl,aH(),br,cX,bT,aJ)}function bN(){var di=aD(aU("ref"));if(di.length){try{di=S.JSON.parse(di);if(V(di)){return di}}catch(dj){}}return["","",0,""]}function by(dj){var di="testvalue";dd("test",di,10000,null,dj,bT,aJ);if(aD("test")===di){bZ("test",null,dj);return true +}return false}function aF(){var dj=bn;bn=false;var di,dk;for(di=0;di0){dm=parseInt(dm,10);dq(dm)}})}var bE={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var di=this.requests; +this.requests=[];if(di.length===1){bH(di[0],bL)}else{de(di,bL)}},canQueue:function(){return !l&&this.enabled},pushMultiple:function(dj){if(!this.canQueue()){de(dj,bL);return}var di;for(di=0;di0){if(!J(dj)){dj=""}if(!w(dj)){dj=String(dj)}bo[di]=dj}};this.getCustomDimension=function(di){di=parseInt(di,10);if(di>0&&Object.prototype.hasOwnProperty.call(bo,di)){return bo[di]}};this.deleteCustomDimension=function(di){di=parseInt(di,10);if(di>0){delete bo[di]}};this.setCustomVariable=function(dj,di,dm,dk){var dl;if(!J(dk)){dk="visit"}if(!J(di)){return}if(!J(dm)){dm=""}if(dj>0){di=!w(di)?String(di):di;dm=!w(dm)?String(dm):dm;dl=[di.slice(0,bv),dm.slice(0,bv)];if(dk==="visit"||dk===2){cF();aR[dj]=dl}else{if(dk==="page"||dk===3){bX[dj]=dl}else{if(dk==="event"){cm[dj]=dl}}}}};this.getCustomVariable=function(dj,dk){var di;if(!J(dk)){dk="visit"}if(dk==="page"||dk===3){di=bX[dj]}else{if(dk==="event"){di=cm[dj]}else{if(dk==="visit"||dk===2){cF();di=aR[dj]}}}if(!J(di)||(di&&di[0]==="")){return false}return di};this.deleteCustomVariable=function(di,dj){if(this.getCustomVariable(di,dj)){this.setCustomVariable(di,"","",dj)}};this.deleteCustomVariables=function(di){if(di==="page"||di===3){bX={} +}else{if(di==="event"){cm={}}else{if(di==="visit"||di===2){aR={}}}}};this.storeCustomVariablesInCookie=function(){bR=true};this.setLinkTrackingTimer=function(di){bL=di};this.getLinkTrackingTimer=function(){return bL};this.setDownloadExtensions=function(di){if(w(di)){di=di.split("|")}c6=di};this.addDownloadExtensions=function(dj){var di;if(w(dj)){dj=dj.split("|")}for(di=0;di1&&ap!=="addTracker"){ak("The method "+ap+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}av[ap]++}}}}return au}var C=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven"];function ad(aq,ap){var ao=new P(aq,ap);I.push(ao); +_paq=c(_paq,C);for(E=0;E<_paq.length;E++){if(_paq[E]){af(_paq[E])}}_paq=new H();t.trigger("TrackerAdded",[ao]);return ao}an(S,"beforeunload",ai,false);an(S,"online",function(){if(J(g.serviceWorker)&&J(g.serviceWorker.ready)){g.serviceWorker.ready.then(function(ao){return ao.sync.register("matomoSync")})}},false);an(S,"message",function(au){if(!au||!au.origin){return}var aw,ar,ap;var ax=d(au.origin);var at=t.getAsyncTrackers();for(ar=0;ar