159 lines
4.6 KiB
JavaScript
159 lines
4.6 KiB
JavaScript
function app_get_url(url)
|
|
{
|
|
var l = document.createElement('a');
|
|
l.href = url;
|
|
return l;
|
|
}
|
|
|
|
function app_get_host_name(url)
|
|
{
|
|
var domain;
|
|
if (typeof url === 'undefined' || url === null || url === '' ||
|
|
url.match(/^\#/)) {
|
|
return '';
|
|
}
|
|
url = app_get_url(url);
|
|
if (url.href.search(/^http[s]?:\/\//) !== -1) {
|
|
domain = url.href.split('/')[2];
|
|
} else {
|
|
return '';
|
|
}
|
|
domain = domain.split(':')[0];
|
|
return domain.toLowerCase();
|
|
}
|
|
|
|
function app_base64_encode(str)
|
|
{
|
|
return btoa(encodeURIComponent(str).replace(
|
|
/%([0-9A-F]{2})/g,
|
|
function toSolidBytes(match, p1) {
|
|
return String.fromCharCode('0x' + p1);
|
|
}
|
|
));
|
|
}
|
|
|
|
function app_get_wildcard_domains(domains)
|
|
{
|
|
var wildcard_domains = [];
|
|
|
|
for (i = 0; i < domains.length; i++) {
|
|
if (domains[i].match(/^\*\./)) {
|
|
wildcard_domains.push(domains[i].replace(/^\*\./, ''));
|
|
}
|
|
}
|
|
|
|
return wildcard_domains;
|
|
}
|
|
|
|
function app_match_wildcard_domain(domains, domain)
|
|
{
|
|
var wildcard_domains = app_get_wildcard_domains(domains);
|
|
|
|
for (i = 0; i < wildcard_domains.length; i++) {
|
|
if (domain.substr(wildcard_domains[i].length * -1) ===
|
|
wildcard_domains[i]) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function app_domain_exist(domains, hostname)
|
|
{
|
|
if (domains.indexOf(hostname) > -1) {
|
|
return true;
|
|
}
|
|
|
|
return app_match_wildcard_domain(domains, hostname);
|
|
}
|
|
|
|
document.addEventListener('DOMContentLoaded', function(event) {
|
|
if (typeof app_url === 'undefined') {
|
|
if (typeof adlinkfly_url !== 'undefined') {
|
|
app_url = adlinkfly_url;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
if (typeof app_api_token === 'undefined') {
|
|
if (typeof adlinkfly_api_token !== 'undefined') {
|
|
app_api_token = adlinkfly_api_token;
|
|
} else {
|
|
return;
|
|
}
|
|
}
|
|
if (typeof app_advert === 'undefined') {
|
|
if (typeof adlinkfly_advert !== 'undefined') {
|
|
app_advert = adlinkfly_advert;
|
|
} else {
|
|
app_advert = 1;
|
|
}
|
|
}
|
|
var advert_type = 1;
|
|
if (app_advert === 2) {
|
|
advert_type = 2;
|
|
}
|
|
if (app_advert === 0) {
|
|
advert_type = 0;
|
|
}
|
|
if (typeof app_domains === 'undefined') {
|
|
if (typeof adlinkfly_domains !== 'undefined') {
|
|
app_domains = adlinkfly_domains;
|
|
}
|
|
}
|
|
|
|
var anchors = document.getElementsByTagName('a');
|
|
if (typeof app_domains !== 'undefined') {
|
|
for (var i = 0; i < anchors.length; i++) {
|
|
var hostname = app_get_host_name(anchors[i].getAttribute('href'));
|
|
if (hostname.length > 0 &&
|
|
app_domain_exist(app_domains, hostname)) {
|
|
anchors[i].href = app_url + 'full?api=' + encodeURIComponent(
|
|
app_api_token
|
|
) + '&url=' + app_base64_encode(anchors[i].href) + '&type=' +
|
|
encodeURIComponent(advert_type);
|
|
} else {
|
|
if (anchors[i].protocol === 'magnet:') {
|
|
anchors[i].href = app_url + 'full?api=' +
|
|
encodeURIComponent(
|
|
app_api_token
|
|
) + '&url=' + app_base64_encode(anchors[i].href) +
|
|
'&type=' +
|
|
encodeURIComponent(advert_type);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (typeof app_exclude_domains === 'undefined') {
|
|
if (typeof adlinkfly_exclude_domains !== 'undefined') {
|
|
app_exclude_domains = adlinkfly_exclude_domains;
|
|
}
|
|
}
|
|
if (typeof app_exclude_domains !== 'undefined') {
|
|
for (var i = 0; i < anchors.length; i++) {
|
|
var hostname = app_get_host_name(anchors[i].getAttribute('href'));
|
|
if (hostname.length > 0 &&
|
|
app_domain_exist(app_exclude_domains, hostname) ===
|
|
false) {
|
|
anchors[i].href = app_url + 'full?api=' + encodeURIComponent(
|
|
app_api_token
|
|
) + '&url=' + app_base64_encode(anchors[i].href) + '&type=' +
|
|
encodeURIComponent(advert_type);
|
|
} else {
|
|
if (anchors[i].protocol === 'magnet:') {
|
|
anchors[i].href = app_url + 'full?api=' +
|
|
encodeURIComponent(
|
|
app_api_token
|
|
) + '&url=' + app_base64_encode(anchors[i].href) +
|
|
'&type=' +
|
|
encodeURIComponent(advert_type);
|
|
}
|
|
}
|
|
}
|
|
return;
|
|
}
|
|
});
|