Difference between revisions of "MediaWiki:Common.js"

(Created page with "Any JavaScript here will be loaded for all users on every page load.: $('div#content').append( "<div class='content-footer'></div>" );")
 
(DSVGO)
Line 2: Line 2:
  
 
$('div#content').append( "<div class='content-footer'></div>" );
 
$('div#content').append( "<div class='content-footer'></div>" );
 +
 +
(function () {
 +
 +
    var rem;
 +
 +
function setPixel(meta, container_id) {
 +
try {
 +
 +
    injectEvaluationId(meta);
 +
 +
rem = (container_id && document.getElementById(container_id))
 +
? document.getElementById(container_id)
 +
: document.createElement("div");
 +
document.body.appendChild(rem);
 +
 +
var iframe = document.createElement("iframe");
 +
 +
iframe.style.width = '0';
 +
iframe.style.height = '0';
 +
iframe.style.display = 'block';
 +
iframe.style.border = 'none';
 +
iframe.setAttribute("frameborder", "0");
 +
rem.appendChild(iframe);
 +
 +
var firstFormContent = "<head></head><body>" + buildForm(meta) + "</body>";
 +
 +
iframe.contentWindow.document.open();
 +
iframe.contentWindow.document.write(firstFormContent);
 +
iframe.contentWindow.document.close();
 +
 +
} catch (e) { }
 +
}
 +
 +
function setSecondPixel(meta, baseFingerprint) {
 +
  // inject baseFP into meta
 +
  meta.fingerprint = baseFingerprint;
 +
 
 +
  // overwrite original location
 +
  meta.location = "fp_eval";
 +
 
 +
  // store config id
 +
  meta.fp2_config_id = 1;
 +
 +
  var secondFrame = document.createElement("iframe");
 +
           
 +
      secondFrame.style.width = '0';
 +
      secondFrame.style.height = '0';
 +
      secondFrame.style.display = 'block';
 +
      secondFrame.style.border = 'none';
 +
      secondFrame.setAttribute("frameborder", "0");
 +
      rem.appendChild(secondFrame);
 +
     
 +
      var secondFormContent = "<head></head><body>" + buildSecondForm(meta) + "</body>";
 +
     
 +
      secondFrame.contentWindow.document.open();
 +
      secondFrame.contentWindow.document.write(secondFormContent);
 +
      secondFrame.contentWindow.document.close();
 +
}
 +
 +
function injectEvaluationId(meta) {
 +
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
 +
    var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
 +
    return v.toString(16);
 +
});
 +
meta.fp_eval_id = uuid;
 +
}
 +
 +
function buildForm(meta) {
 +
var url = (meta.pz_debug_url !== undefined)
 +
? meta.pz_debug_url
 +
: 'https://pixelzirkus.gameforge.com';
 +
 +
var form = '';
 +
form += '<script>inDapIF = true;</script>';
 +
form += '<script src="' + url + '/static/js/E6gg7P33.js"></script>';
 +
 +
var meta_json = ''; try { meta_json = JSON.stringify(meta); } catch (e) {}
 +
form += '<script>var meta_json = \'' + meta_json + '\';</script>';
 +
form += '<script>var meta = {}; try { meta = JSON.parse(meta_json); } catch (e) {}</script>';
 +
 +
form += '<form id="gf_pz_form" action="' + url + '/do/simple" method="POST" accept-charset="UTF-8">';
 +
 +
var key, value;
 +
for (key in meta) {
 +
if (key.indexOf('pz_debug') !== -1) {
 +
continue;
 +
}
 +
 +
value = meta[key];
 +
value = value + "";
 +
value = value.replace(/"/g, "");
 +
form += '<input type="hidden" name="' + key + '" value="' + value + '" />';
 +
}
 +
 +
if (!meta.page) {
 +
form += '<input type="hidden" name="page" value="' + window.location + '" />';
 +
}
 +
if (!meta.referrer) {
 +
form += '<input type="hidden" name="referrer" value="' + document.referrer + '" />';
 +
}
 +
 +
form += '</form>';
 +
form += '<script>';
 +
form += 'var input_fp = document.createElement("input"); input_fp.type = "hidden"; input_fp.name = "fingerprint"; input_fp.value = "unknown"; document.getElementById("gf_pz_form").appendChild(input_fp);';
 +
form += 'var input_fp_exec = document.createElement("input"); input_fp_exec.type = "hidden"; input_fp_exec.name = "fp_exec_time"; input_fp_exec.value = -1; document.getElementById("gf_pz_form").appendChild(input_fp_exec);';
 +
form += 'try {';
 +
form += '    var startTime = window.performance.now();';
 +
form += '    var fp = new Fingerprint().get();';
 +
form += '    var exec_time = window.performance.now() - startTime;';
 +
form += '    input_fp.value = fp;';
 +
        form += '    input_fp_exec.value = exec_time.toFixed(2);';
 +
        form += '    parent.window.setSecondPixel(meta, fp);';
 +
form += '} catch (e) {}';
 +
form += 'document.getElementById("gf_pz_form").submit();';
 +
form += '</script>';
 +
 +
return form;
 +
}
 +
 +
    function buildSecondForm(meta) {
 +
        var url = (meta.pz_debug_url !== undefined)
 +
            ? meta.pz_debug_url
 +
            : 'https://pixelzirkus.gameforge.com';
 +
       
 +
        var form = '';
 +
        form += '<script>inDapIF = true;</script>';
 +
        form += '<script src="' + url + '/static/js/GT7h68ox.js"></script>';
 +
        form += '<form id="gf_pz_form" action="' + url + '/do/simple" method="POST" accept-charset="UTF-8">';
 +
   
 +
        var key, value;
 +
        for (key in meta) {
 +
            if (key.indexOf('pz_debug') !== -1) {
 +
                continue;
 +
            }
 +
           
 +
            value = meta[key];
 +
            value = value + "";
 +
            value = value.replace(/"/g, "");
 +
            form += '<input type="hidden" name="' + key + '" value="' + value + '" />';
 +
        }
 +
   
 +
        if (!meta.page) {
 +
            form += '<input type="hidden" name="page" value="' + window.location + '" />';
 +
        }
 +
        if (!meta.referrer) {
 +
            form += '<input type="hidden" name="referrer" value="' + document.referrer + '" />';
 +
        }
 +
       
 +
        form += '</form>';
 +
        form += '<script>';
 +
        form += 'var input_fp = document.createElement("input"); input_fp.type = "hidden"; input_fp.name = "fp2_value"; document.getElementById("gf_pz_form").appendChild(input_fp);';
 +
        form += 'var input_fp_exec = document.createElement("input"); input_fp_exec.type = "hidden"; input_fp_exec.name = "fp2_exec_time"; document.getElementById("gf_pz_form").appendChild(input_fp_exec);';
 +
        form += 'try {';
 +
        form += '    var startTime = window.performance.now();';
 +
        form += '    new Fingerprint2().get(function(fingerprint) {';
 +
        form += '        input_fp.value = fingerprint;';
 +
        form += '        var exec_time = window.performance.now() - startTime;';
 +
        form += '        input_fp_exec.value = exec_time.toFixed(2);';
 +
        form += '        document.getElementById("gf_pz_form").submit();';
 +
        form += '    })';
 +
        form += '} catch (e) {}';
 +
        form += '</script>';
 +
   
 +
        return form;
 +
    }
 +
   
 +
    function capturePixel(meta) {
 +
        if (!meta.page) {
 +
            meta.page = window.location.href;
 +
        }
 +
       
 +
        if (!meta.referrer) {
 +
            meta.referrer = document.referrer;
 +
        }
 +
     
 +
        return meta;
 +
    }
 +
   
 +
    function firePixels(meta, container_id) {
 +
        try {
 +
            var container = (container_id !== undefined && document.getElementById(container_id))
 +
                ? document.getElementById(container_id)
 +
                : document.createElement("div");
 +
   
 +
            var iframe = document.createElement("iframe");
 +
           
 +
            iframe.style.width = '0';
 +
            iframe.style.height = '0';
 +
            iframe.style.display = 'block';
 +
            iframe.style.border = 'none';
 +
            iframe.setAttribute("frameborder", "0");
 +
            document.body.appendChild(container);
 +
            container.appendChild(iframe);
 +
     
 +
            iframe.contentWindow.document.open();
 +
            iframe.contentWindow.document.write("<head></head><body>" + buildMultiForm(meta) + "</body>");
 +
            iframe.contentWindow.document.close();
 +
     
 +
            if (window.location.search.indexOf("pz_debug") !== -1) {
 +
                window.pz_debug = meta;
 +
            }
 +
        } catch (e) {}
 +
    }
 +
   
 +
    function buildMultiForm(meta) {
 +
        var url = 'https://pixelzirkus.gameforge.com';
 +
       
 +
        var form;
 +
        form  = '<script src="' + url + '/static/js/E6gg7P33.js"></script>';
 +
        form += '<form id="gf_pz_form" action="' + url + '/do/multi" method="POST" accept-charset="UTF-8">';
 +
   
 +
        form += '<input type="hidden" name="pixels" value="' + escapeHtml(JSON.stringify(meta)) + '" />';
 +
       
 +
        form += '</form>';
 +
        form += '<script>';
 +
        form += 'var input_fp = document.createElement("input"); input_fp.type = "hidden"; input_fp.name = "fingerprint"; input_fp.value = "unknown"; document.getElementById("gf_pz_form").appendChild(input_fp); ';
 +
        form += 'try {';
 +
        form += '    input_fp.value = new Fingerprint().get();';
 +
        form += '} catch (e) {} ';
 +
        form += 'document.getElementById("gf_pz_form").submit();';
 +
        form += '</script>';
 +
   
 +
        return form;
 +
    }
 +
 +
    function escapeHtml(unsafe) {
 +
        return unsafe
 +
            .replace(/&/g, "&amp;")
 +
            .replace(/</g, "&lt;")
 +
            .replace(/>/g, "&gt;")
 +
            .replace(/"/g, "&quot;")
 +
            .replace(/'/g, "&#039;");
 +
    }
 +
 +
window.setPixel = setPixel;
 +
window.setSecondPixel = setSecondPixel;
 +
 +
window.capturePixel = capturePixel;
 +
    window.firePixels = firePixels;
 +
})();
 +
 +
var script = document.createElement("script"); // Make a script DOM node
 +
script.src = 'https://gf1.geo.gfsrv.net/static/cookie-banner/2018052311/cookiebanner.js'; // must be the url where the cookiebanner.js is located
 +
document.head.appendChild(script); // Add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead

Revision as of 12:37, 23 May 2018

/* Any JavaScript here will be loaded for all users on every page load. */

$('div#content').append( "<div class='content-footer'></div>" );

(function () {

    var rem;

	function setPixel(meta, container_id) {
		try {
		
		    injectEvaluationId(meta);
			
			rem = (container_id && document.getElementById(container_id))
				? document.getElementById(container_id)
				: document.createElement("div");
			document.body.appendChild(rem);
			
			var iframe = document.createElement("iframe");
			
			iframe.style.width = '0';
			iframe.style.height = '0';
			iframe.style.display = 'block';
			iframe.style.border = 'none';
			iframe.setAttribute("frameborder", "0");
			rem.appendChild(iframe);
			
			var firstFormContent = "<head></head><body>" + buildForm(meta) + "</body>";
			
			iframe.contentWindow.document.open();
			iframe.contentWindow.document.write(firstFormContent);
			iframe.contentWindow.document.close();
			
		} catch (e) { }
	}
	
	function setSecondPixel(meta, baseFingerprint) {
	   // inject baseFP into meta
	   meta.fingerprint = baseFingerprint;
	   
	   // overwrite original location
	   meta.location = "fp_eval";
	   
	   // store config id
	   meta.fp2_config_id = 1;
	
	   var secondFrame = document.createElement("iframe");
            
       secondFrame.style.width = '0';
       secondFrame.style.height = '0';
       secondFrame.style.display = 'block';
       secondFrame.style.border = 'none';
       secondFrame.setAttribute("frameborder", "0");
       rem.appendChild(secondFrame);
       
       var secondFormContent = "<head></head><body>" + buildSecondForm(meta) + "</body>";
       
       secondFrame.contentWindow.document.open();
       secondFrame.contentWindow.document.write(secondFormContent);
       secondFrame.contentWindow.document.close();
	}
	
	function injectEvaluationId(meta) {
	    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
		    var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
		    return v.toString(16);
		});
		meta.fp_eval_id = uuid;
	}
	
	function buildForm(meta) {
		var url = (meta.pz_debug_url !== undefined)
			? meta.pz_debug_url
			: 'https://pixelzirkus.gameforge.com';
		
		var form = '';
		form += '<script>inDapIF = true;</script>';
		form += '<script src="' + url + '/static/js/E6gg7P33.js"></script>';
		
		var meta_json = ''; try { meta_json = JSON.stringify(meta); } catch (e) {}
		form += '<script>var meta_json = \'' + meta_json + '\';</script>';
		form += '<script>var meta = {}; try { meta = JSON.parse(meta_json); } catch (e) {}</script>';
		
		form += '<form id="gf_pz_form" action="' + url + '/do/simple" method="POST" accept-charset="UTF-8">';
	
		var key, value;
		for (key in meta) {
			if (key.indexOf('pz_debug') !== -1) {
				continue;
			}
			
			value = meta[key];
			value = value + "";
			value = value.replace(/"/g, "");
			form += '<input type="hidden" name="' + key + '" value="' + value + '" />';
		}
	
		if (!meta.page) {
			form += '<input type="hidden" name="page" value="' + window.location + '" />';
		}
		if (!meta.referrer) {
			form += '<input type="hidden" name="referrer" value="' + document.referrer + '" />';
		}
		
		form += '</form>';
		form += '<script>';
		form += 'var input_fp = document.createElement("input"); input_fp.type = "hidden"; input_fp.name = "fingerprint"; input_fp.value = "unknown"; document.getElementById("gf_pz_form").appendChild(input_fp);';
		form += 'var input_fp_exec = document.createElement("input"); input_fp_exec.type = "hidden"; input_fp_exec.name = "fp_exec_time"; input_fp_exec.value = -1; document.getElementById("gf_pz_form").appendChild(input_fp_exec);';
		form += 'try {';
		form += '    var startTime = window.performance.now();';
		form += '    var fp = new Fingerprint().get();';
		form += '    var exec_time = window.performance.now() - startTime;';
		form += '    input_fp.value = fp;';
        form += '    input_fp_exec.value = exec_time.toFixed(2);';
        form += '    parent.window.setSecondPixel(meta, fp);';
		form += '} catch (e) {}';
		form += 'document.getElementById("gf_pz_form").submit();';
		form += '</script>';
	
		return form;
	}
	
    function buildSecondForm(meta) {
        var url = (meta.pz_debug_url !== undefined)
            ? meta.pz_debug_url
            : 'https://pixelzirkus.gameforge.com';
        
        var form = '';
        form += '<script>inDapIF = true;</script>';
        form += '<script src="' + url + '/static/js/GT7h68ox.js"></script>';
        form += '<form id="gf_pz_form" action="' + url + '/do/simple" method="POST" accept-charset="UTF-8">';
    
        var key, value;
        for (key in meta) {
            if (key.indexOf('pz_debug') !== -1) {
                continue;
            }
            
            value = meta[key];
            value = value + "";
            value = value.replace(/"/g, "");
            form += '<input type="hidden" name="' + key + '" value="' + value + '" />';
        }
    
        if (!meta.page) {
            form += '<input type="hidden" name="page" value="' + window.location + '" />';
        }
        if (!meta.referrer) {
            form += '<input type="hidden" name="referrer" value="' + document.referrer + '" />';
        }
        
        form += '</form>';
        form += '<script>';
        form += 'var input_fp = document.createElement("input"); input_fp.type = "hidden"; input_fp.name = "fp2_value"; document.getElementById("gf_pz_form").appendChild(input_fp);';
        form += 'var input_fp_exec = document.createElement("input"); input_fp_exec.type = "hidden"; input_fp_exec.name = "fp2_exec_time"; document.getElementById("gf_pz_form").appendChild(input_fp_exec);';
        form += 'try {';
        form += '    var startTime = window.performance.now();';
        form += '    new Fingerprint2().get(function(fingerprint) {';
        form += '        input_fp.value = fingerprint;';
        form += '        var exec_time = window.performance.now() - startTime;';
        form += '        input_fp_exec.value = exec_time.toFixed(2);';
        form += '        document.getElementById("gf_pz_form").submit();';
        form += '    })';
        form += '} catch (e) {}';
        form += '</script>';
    
        return form;
    }
    
    function capturePixel(meta) {
        if (!meta.page) {
            meta.page = window.location.href;
        }
        
        if (!meta.referrer) {
            meta.referrer = document.referrer;
        }
       
        return meta;
    }
    
    function firePixels(meta, container_id) {
        try {
            var container = (container_id !== undefined && document.getElementById(container_id))
                ? document.getElementById(container_id)
                : document.createElement("div");
    
            var iframe = document.createElement("iframe");
            
            iframe.style.width = '0';
            iframe.style.height = '0';
            iframe.style.display = 'block';
            iframe.style.border = 'none';
            iframe.setAttribute("frameborder", "0");
            document.body.appendChild(container);
            container.appendChild(iframe);
       
            iframe.contentWindow.document.open();
            iframe.contentWindow.document.write("<head></head><body>" + buildMultiForm(meta) + "</body>");
            iframe.contentWindow.document.close();
       
            if (window.location.search.indexOf("pz_debug") !== -1) {
                window.pz_debug = meta;
            }
        } catch (e) {}
    }
    
    function buildMultiForm(meta) {
        var url = 'https://pixelzirkus.gameforge.com';
        
        var form;
        form  = '<script src="' + url + '/static/js/E6gg7P33.js"></script>';
        form += '<form id="gf_pz_form" action="' + url + '/do/multi" method="POST" accept-charset="UTF-8">';
    
        form += '<input type="hidden" name="pixels" value="' + escapeHtml(JSON.stringify(meta)) + '" />';
        
        form += '</form>';
        form += '<script>';
        form += 'var input_fp = document.createElement("input"); input_fp.type = "hidden"; input_fp.name = "fingerprint"; input_fp.value = "unknown"; document.getElementById("gf_pz_form").appendChild(input_fp); ';
        form += 'try {';
        form += '    input_fp.value = new Fingerprint().get();';
        form += '} catch (e) {} ';
        form += 'document.getElementById("gf_pz_form").submit();';
        form += '</script>';
    
        return form;
    }
	
    function escapeHtml(unsafe) {
        return unsafe
            .replace(/&/g, "&amp;")
            .replace(/</g, "&lt;")
            .replace(/>/g, "&gt;")
            .replace(/"/g, "&quot;")
            .replace(/'/g, "&#039;");
     }
	
	window.setPixel = setPixel;
	window.setSecondPixel = setSecondPixel;
	
	window.capturePixel = capturePixel;
    window.firePixels = firePixels;
})();

var script = document.createElement("script"); // Make a script DOM node
script.src = 'https://gf1.geo.gfsrv.net/static/cookie-banner/2018052311/cookiebanner.js'; // must be the url where the cookiebanner.js is located
document.head.appendChild(script); // Add it to the end of the head section of the page (could change 'head' to 'body' to add it to the end of the body section instead