1st commit
This commit is contained in:
		
							
								
								
									
										140
									
								
								wco/tracker/tracker.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								wco/tracker/tracker.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,140 @@ | ||||
| var apx = apx || {}; | ||||
| apx.tracker = {}; | ||||
| apx.tracker.getinfodevice = async () => { | ||||
|   const device = {}; | ||||
|   //console.log(navigator); | ||||
|   device.useragent = navigator.userAgent || navigator.vendor || window.opera; | ||||
|   device.typedevice = /iPad/i.test(device.useragent) ? "ipad" : ""; | ||||
|   device.typedevice = /iPhone/i.test(device.useragent) ? "iphone" : ""; | ||||
|   device.typedevice = /iPod/i.test(device.useragent) ? "ipod" : ""; | ||||
|   device.typedevice = /Android/i.test(device.useragent) ? "android" : ""; | ||||
|   device.typedevice = | ||||
|     device.typedevice == "" && | ||||
|     /Windows NT|Macintosh|Linux/i.test(device.useragent) | ||||
|       ? "PC" | ||||
|       : ""; | ||||
|   console.log( | ||||
|     "test linux", | ||||
|     /Windows NT|Macintosh|Linux/i.test(device.useragent) | ||||
|   ); | ||||
|   device.type = | ||||
|     device.type === "" && /Mobi/i.test(device.userAgent) ? "mobile" : ""; | ||||
|   device.os = /Windows NT/i.test(device.useragent) ? "windows" : ""; | ||||
|   device.os = /Macintosh/i.test(device.useragent) ? "mac" : ""; | ||||
|   device.os = /Linux/i.test(device.useragent) ? "linux" : ""; | ||||
|   const ipinfo = await axios.get("https://ipinfo.io/json"); | ||||
|   console.log(ipinfo); | ||||
|   if ( | ||||
|     ipinfo && | ||||
|     ipinfo.data && | ||||
|     ipinfo.data !== null && | ||||
|     typeof ipinfo.data === "object" && | ||||
|     Object.keys(ipinfo.data).length > 0 | ||||
|   ) { | ||||
|     if (ipinfo.data.ip) device.ip = ipinfo.data.ip; | ||||
|     if (ipinfo.data.city) device.city = ipinfo.data.city; | ||||
|     if (ipinfo.data.country) device.country = ipinfo.data.country; | ||||
|   } | ||||
|   device.screenWidth = window.screen.width; | ||||
|   device.screenHeight = window.screen.height; | ||||
|   const connection = | ||||
|     navigator.connection || | ||||
|     navigator.mozConnection || | ||||
|     navigator.webkitConnection; | ||||
|   if (connection) { | ||||
|     device.connection = `${connection.effectiveType}_${connection.downlink} Mbps`; | ||||
|   } | ||||
|   device.lang = navigator.language; | ||||
|   device.plugins = Array.from(navigator.plugins).map((plugin) => plugin.name); | ||||
|   //console.log(device) | ||||
|   return device; | ||||
| }; | ||||
| apx.tracker.hit = (data) => { | ||||
|   if (!data.consentcookie && localStorage.getItem("consentcookie")) | ||||
|     data.consentcookie = localStorage.getItem("consentcookie"); | ||||
|   if (!data.lasttm && localStorage.getItem("lasttm")) | ||||
|     data.lasttm = localStorage.getItem("lasttm"); | ||||
|   if (!data.xuuid && localStorage.getItem("xuuid")) | ||||
|     data.xuuid = localStorage.getItem("xuuid"); | ||||
|   if (!data.xapp && localStorage.getItem("xapp")) | ||||
|     data.xapp = localStorage.getItem("xapp"); | ||||
|   if (apx.data.headers.xalias != "anonymous") | ||||
|     data.alias = apx.data.headers.xalias; | ||||
|   let missing = ""; | ||||
|   [("xapp", "srckey", "xuuid", "lasttm", "consentcookie")].forEach((k) => { | ||||
|     missing += !data[k] ? `${k},` : ""; | ||||
|   }); | ||||
|   if (missing !== "") { | ||||
|     console.log(`Check your trktag ${missing} are missing`); | ||||
|     return; | ||||
|   } | ||||
|   let urltrack = "/trk/cdn/trkret/empty.json?"; | ||||
|   Object.keys(data).forEach((d) => { | ||||
|     urltrack += `d=${data[d]}&`; | ||||
|   }); | ||||
|   urltrack = urltrack.slice(0, -1); | ||||
|   //console.log(urltrack); | ||||
|   axios.get(urltrack); | ||||
| }; | ||||
| apx.tracker.load = () => { | ||||
|   if (!localStorage.getItem("consentcookie")) { | ||||
|     document | ||||
|       .querySelectorAll('div:not([wco-name="tracker"])') | ||||
|       .forEach((el) => { | ||||
|         el.classList.add("opacity-40"); | ||||
|         el.style.pointerEvents = "auto"; | ||||
|   }); | ||||
|     document.querySelectorAll("[wco-name='tracker']").forEach((el) => { | ||||
|       const tpldata = `${apx.data.pagename}_${el.id}_trackerconsentform`; | ||||
|       if (!apx.data.tpldata[tpldata] || !apx.data.tpldata[tpldata].introtext) { | ||||
|         console.log(` ${tpldata} does not exist check your file`); | ||||
|       } else { | ||||
|         el.innerHTML = Mustache.render( | ||||
|           apx.data.tpl.trackerconsentform, | ||||
|           apx.data.tpldata[tpldata] | ||||
|         ); | ||||
|       } | ||||
|     }); | ||||
|   } else { | ||||
|     // test if last loading was <10minutes then send a new tag | ||||
|     const tm = dayjs().valueOf(); | ||||
|     const lasttmtxt = localStorage.getItem("lasttm"); | ||||
|     const lasttm = lasttmtxt ? Number(lasttmtxt) : null; | ||||
|     //console.log(lasttm, tm, tm - lasttm > 10 * 60 * 1000); | ||||
|     if (lasttm && tm - lasttm > 10 * 60 * 1000) { | ||||
|       localStorage.setItem("lasttm", tm); | ||||
|       apx.tracker.hit({ srckey: "visitwwws" }); | ||||
|     } | ||||
|   } | ||||
| }; | ||||
| apx.tracker.setconsent = async (tagid, choice) => { | ||||
|   //localStorage.setItem("consentcookie", choice); | ||||
|   if (!localStorage.getItem("xuuid")) { | ||||
|     const uuid = ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) => | ||||
|       ( | ||||
|         c ^ | ||||
|         (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4))) | ||||
|       ).toString(16) | ||||
|     ); | ||||
|     localStorage.setItem("xuuid", uuid); | ||||
|     apx.data.headers.xuuid = uuid; | ||||
|     const tm = dayjs().valueOf(); | ||||
|     localStorage.setItem("lasttm", tm); | ||||
|     apx.save(); | ||||
|   } | ||||
|   if (["acceptstatisticcookies", "acceptfullcookies"].includes(choice)) { | ||||
|     const infodevice = await apx.tracker.getinfodevice(); | ||||
|     //console.log(infodevice); | ||||
|     axios.post(`/api/apxtri/trackings/newdevice`, infodevice, { | ||||
|       headers: apx.data.headers, | ||||
|     }); | ||||
|   } | ||||
|   apx.tracker.hit({ srckey: "firstvisitwwws" }); | ||||
|   document.querySelectorAll('div:not([wco-name="tracker"])').forEach((el) => { | ||||
|     el.classList.remove("opacity-40"); | ||||
|     el.style.pointerEvents = "auto"; | ||||
|   }); | ||||
|   document.getElementById(tagid).classList.add("hidden"); | ||||
| }; | ||||
|  | ||||
| apx.readyafterupdate(apx.tracker.load); | ||||
		Reference in New Issue
	
	Block a user