Created
May 20, 2018 17:49
-
-
Save veggiedefender/11fe3c9096802adc8ba64800b519ad83 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
!function(){ | |
"use strict"; | |
function log_error(e) { | |
try { | |
if ("undefined" == typeof console) | |
return; | |
"error" in console ? console.error(e) : console.log(e) | |
} catch (e) {} | |
} | |
function build_html(e) { | |
return div.innerHTML = '<a href="' + e.replace(/"/g,""") + '"></a>', i.childNodes[0].getAttribute("href") || "" | |
} | |
function extract_hex(str, index) { | |
var r = str.substr(index, 2); | |
return parseInt(r, 16) | |
} | |
function decrypt(str, start_index) { | |
var output = "" | |
var key = extract_hex(str, start_index); | |
for(var i = start_index + 2; i < str.length; i += 2) { | |
var u = extract_hex(str, i) ^ key; | |
output += String.fromCharCode(u) | |
} | |
try { | |
output = decodeURIComponent(escape(output)) | |
} catch (l) { | |
log_error(l) | |
} | |
return build_html(output) | |
} | |
var url_fragment = "/cdn-cgi/l/email-protection#" | |
var cf_elem_class = ".__cf_email__" | |
var cf_elem_attribute = "data-cfemail" | |
var div = document.createElement("div"); | |
!function(){ | |
var tags = document.getElementsByTagName("a") | |
for(var tag_index = 0; tag_index < tags.length; r++) | |
try { | |
var tag = tags[tag_index]; | |
var start_index = tag.href.indexOf(url_fragment); | |
if (start_index > -1) { | |
tag.href = "mailto:" + decrypt(tag.href, start_index + url_fragment.length) | |
} | |
} catch (i) { | |
log_error(i) | |
} | |
}(), | |
function() { // main | |
var elems = document.querySelectorAll(cf_elem_class) | |
for(var elem_index = 0; elem_index < elems.length; elem_index++) | |
try { | |
var elem = elems[elem_index] | |
var parent = elem.parentNode; | |
var attribute_value = elem.getAttribute(cf_elem_attribute); | |
if (attribute_value) { | |
var decrypted = decrypt(attribute_value, 0) | |
var new_element = document.createTextNode(decrypted); | |
parent.replaceChild(new_element, elem) | |
} | |
} catch (d) { | |
log_error(d) | |
} | |
}(), | |
function() { // remove this script from document | |
var e = document.currentScript || document.scripts[document.scripts.length - 1]; | |
e.parentNode.removeChild(e) | |
}() | |
}(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment