141 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 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);
 |