Skip to content

Commit

Permalink
Added feature to block inline scripts (coinhive), Added crypto-loot f…
Browse files Browse the repository at this point in the history
…ilter
  • Loading branch information
xd4rker committed Oct 8, 2017
1 parent 6d742be commit 41fcc10
Show file tree
Hide file tree
Showing 9 changed files with 248 additions and 151 deletions.
3 changes: 2 additions & 1 deletion assets/filters.txt
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@
*://*.coinhive.com/proxy*
*://*.coinhive.com/captcha*
*://*.minemytraffic.com/lib*
*://*.2giga.link/js*
*://*.2giga.link/js*
*://*.crypto-loot.com/lib*
34 changes: 29 additions & 5 deletions js/background.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
'use strict';

//utils.clearSettings();
//return;

var pauseIcon = 'icons/icon_off.png',
startIcon = 'icons/icon.png',
mbTabs = {},
Expand Down Expand Up @@ -116,6 +113,17 @@ function updateBadge(mcount, tabId) {
});
}

function addmbTab(tabId, rootDomain) {
if(tabId in mbTabs) {
if(mbTabs[tabId].indexOf(rootDomain) === -1) {
mbTabs[tabId].push(rootDomain);
}

} else {
mbTabs[tabId] = [rootDomain];
}
}

function handleOnUpdatedListener(tabId, changeInfo, tab) {

let tabwIndex = mbwTabs.indexOf(tabId);
Expand Down Expand Up @@ -153,7 +161,7 @@ function handleOnBeforeRequest(details) {
}

let rootDomain = utils.getRootDomain(details.url);
if(details.tabId in mbTabs) {
if(details.tabId in mbTabs) {
if(mbTabs[details.tabId].indexOf(rootDomain) === -1) {
mbTabs[details.tabId].push(rootDomain);
}
Expand Down Expand Up @@ -219,11 +227,27 @@ chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
mbwTabs.splice(tabwIndex, 1);
}


} else if(message.action == 'optionUpdated') {
urls = [];
mbwTabs = [];
initBackground();

} else if(message.action == 'minerBlockedFromContent') {

addmbTab(sender.tab.id, message.minerUrl);

if(mbSettings['mbShowCount']) {
updateBadge(mbTabs[sender.tab.id].length, sender.tab.id);
}

} else if(message.action == 'getmKillStatus') {
if(mbSettings['mbRunStatus'] === false) {
sendResponse({mKillStatus: false});

} else {
let isUrlwListed = utils.checkWhiteList(utils.getRootDomain(message.url), mbSettings['mbWhiteList']);
sendResponse({mKillStatus: !isUrlwListed});
}
}

});
Expand Down
31 changes: 31 additions & 0 deletions js/content.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
(function () {

'use strict';

function injectmKiller(status) {
if(status) {
var node = document.getElementsByTagName('body')[0];
var script = document.createElement('script');
script.setAttribute('type', 'text/javascript');
script.setAttribute('src', chrome.extension.getURL('js/minerkill.js'));
node.appendChild(script);
}
}

function initmKiller() {
chrome.runtime.sendMessage({action: 'getmKillStatus', url: location.host}, function(res) {
injectmKiller(res.mKillStatus);
});
}

document.onreadystatechange = function () {
if (document.readyState === "complete") {
initmKiller();
}
}

document.addEventListener('minerBlocked', function(e) {
chrome.runtime.sendMessage({action: 'minerBlockedFromContent', minerUrl: e.detail.minerUrl}, function() {});
}, false);

}());
31 changes: 31 additions & 0 deletions js/minerkill.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
'use strict';

function triggerEvent(miner) {
let event = new CustomEvent('minerBlocked', {
detail: {
minerUrl: miner
}
});
document.dispatchEvent(event);
}

let event = new Event('minerBlocked');

for(let name in this) {

if(name === 'webkitStorageInfo') {
continue;
}

// Check coinhive miner

if( this[name]
&& typeof this[name] !== 'undefined'
&& typeof this[name].isRunning === 'function'
&& typeof this[name].stop === 'function') {
console.log('[+] Coinhive miner found, stopping...');
this[name].stop();
this[name] = null;
triggerEvent('coinhive.com');
}
}
74 changes: 37 additions & 37 deletions js/options.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,23 +11,23 @@

function initOptionPage() {

utils = chrome.extension.getBackgroundPage().utils;
utils = chrome.extension.getBackgroundPage().utils;
selectElement = document.getElementById('mbWhiteList');

toggleTab(document.getElementsByClassName('tablinks')[0], 0);
loopEls('tablinks', addTabClickListener);
toggleTab(document.getElementsByClassName('tablinks')[0], 0);
loopEls('tablinks', addTabClickListener);

loopEls('opt', function(e) {
loopEls('opt', function(e) {

utils.getOption(e.id, function(value) {
updateOption(e, value);
});
utils.getOption(e.id, function(value) {
updateOption(e, value);
});

if(e.tagName === 'INPUT' && e.getAttribute('type') === 'checkbox') {
e.addEventListener('click', toggleCheckBox);
}

});
});

loopEls('btn', function(e) {
if(e.id === 'mbUserFiltersSave') {
Expand Down Expand Up @@ -121,7 +121,7 @@

function populateSelect(e, value) {
e.innerHTML = '';
let prop;
let prop;
for(prop in value) {
let optTag = document.createElement("option");
optTag.value = prop;
Expand All @@ -131,49 +131,49 @@
}

function updateOption(e, value) {
if(e.tagName === 'INPUT' && e.getAttribute('type') === 'checkbox') {
e.checked = value;
if(e.tagName === 'INPUT' && e.getAttribute('type') === 'checkbox') {
e.checked = value;

} else if(e.tagName === 'TEXTAREA') {
} else if(e.tagName === 'TEXTAREA') {
if(value !== null) {
e.value = value.join('\n');
}

} else if (e.tagName === 'SELECT') {
populateSelect(e, value);
} else if (e.tagName === 'SELECT') {
populateSelect(e, value);

}
}
}

function addTabClickListener(el ,index) {
el.addEventListener('click', function () {
toggleTab(el, index);
});
el.addEventListener('click', function () {
toggleTab(el, index);
});
}

function toggleContainers(activeIndex) {
loopEls('tab-cnt', function(e, i) {
if(i === activeIndex) {
e.style.display = 'block';
} else {
e.style.display = 'none';
}
});
loopEls('tab-cnt', function(e, i) {
if(i === activeIndex) {
e.style.display = 'block';
} else {
e.style.display = 'none';
}
});
}

function toggleTab(elm, elIndex) {
elm.style.backgroundColor = '#fff';
elm.style.borderBottom = '1px solid #fff';

loopEls('tablinks', function(el, index) {
if(index === elIndex) {
return;
}
el.style.backgroundColor = '#eee';
el.style.borderBottom = '1px solid #ccc';
toggleContainers(elIndex);

});
elm.style.backgroundColor = '#fff';
elm.style.borderBottom = '1px solid #fff';

loopEls('tablinks', function(el, index) {
if(index === elIndex) {
return;
}
el.style.backgroundColor = '#eee';
el.style.borderBottom = '1px solid #ccc';
toggleContainers(elIndex);

});
}

function notifyBackground() {
Expand Down
Loading

0 comments on commit 41fcc10

Please sign in to comment.