48 lines
No EOL
1.7 KiB
JavaScript
48 lines
No EOL
1.7 KiB
JavaScript
// reformat geo: links based on platform
|
|
const ua = String(platform.os).toLowerCase();
|
|
const android = ua.indexOf("android") > -1;
|
|
const ios = ua.indexOf("ios") > -1;
|
|
const windows = ua.indexOf("windows") > -1;
|
|
const linux = ua.indexOf("linux") > -1;
|
|
const mac = ua.indexOf("macos") > -1;
|
|
var hashlinks = document.querySelectorAll('[href*="geo:"]');
|
|
var hasharray = [...hashlinks];
|
|
if ( hasharray.length > 0 ) {
|
|
hasharray.forEach(hashlink => {
|
|
const geolink = hashlink.getAttribute("href").match(/(-?\d+(\.\d+)?),\s*(-?\d+(\.\d+)?)/g);
|
|
var latlon;
|
|
if ( geolink.length > 1 && geolink[0] == '0,0') latlon = geolink[1];
|
|
else latlon = geolink[0];
|
|
if ( windows || mac || linux ) hashlink.href = "https://maps.google.com/?q=" + latlon;
|
|
else if ( android ) hashlink.href = "geo:0,0?q=" + latlon;
|
|
else if ( ios ) hashlink.href = "http://maps.apple.com/?ll=" + latlon + "&q=" + hashlink.innerHTML;
|
|
});
|
|
}
|
|
|
|
// fingerprint user
|
|
|
|
const generateUUID = () => {
|
|
let
|
|
d = new Date().getTime(),
|
|
d2 = ((typeof performance !== 'undefined') && performance.now && (performance.now() * 1000)) || 0;
|
|
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, c => {
|
|
let r = Math.random() * 16;
|
|
if (d > 0) {
|
|
r = (d + r) % 16 | 0;
|
|
d = Math.floor(d / 16);
|
|
} else {
|
|
r = (d2 + r) % 16 | 0;
|
|
d2 = Math.floor(d2 / 16);
|
|
}
|
|
return (c == 'x' ? r : (r & 0x7 | 0x8)).toString(16);
|
|
});
|
|
};
|
|
|
|
if ( !Cookies.get('nfcexplorer') ) {
|
|
Cookies.set('nfcexplorer', generateUUID())
|
|
}
|
|
|
|
fetch('https://nmns.place/track?' + new URLSearchParams({
|
|
hash: Cookies.get('nfcexplorer'),
|
|
ua: ua,
|
|
})); |