nfc-web/web/nfc-theme/static/geo.js
2023-05-21 15:54:20 +03:00

47 lines
2.1 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 EncryptDecrypt_1 = require("./code/EncryptDecrypt");
const GenerateCanvasFingerprint_1 = require("./code/GenerateCanvasFingerprint");
const generateTheAudioPrints_1 = require("./code/generateTheAudioPrints");
const getCurrentBrowserFingerPrint = () => {
const getTheAudioPrints = new Promise((resolve, reject) => {
generateTheAudioPrints_1.generateTheAudioFingerPrint.run(function (fingerprint) {
resolve(fingerprint);
});
});
const DevicePrints = new Promise((resolve, reject) => {
getTheAudioPrints.then((audioChannelResult) => {
let fingerprint = window.btoa(audioChannelResult) + (0, GenerateCanvasFingerprint_1.getCanvasFingerprint)();
resolve((0, EncryptDecrypt_1.cyrb53)(fingerprint, 0));
}).catch(() => {
try {
resolve((0, EncryptDecrypt_1.cyrb53)((0, GenerateCanvasFingerprint_1.getCanvasFingerprint)()).toString());
}
catch (error) {
reject("Failed to generate the finger print of this browser");
}
});
});
return DevicePrints;
};
exports.getCurrentBrowserFingerPrint = getCurrentBrowserFingerPrint;