Add site blocked alert page
Inform the user about the full url blocking
This commit is contained in:
parent
b23089ac9a
commit
e528ade2f0
75
clearurls.js
75
clearurls.js
|
@ -12,6 +12,7 @@ var badgedStatus;
|
||||||
var tabid = 0;
|
var tabid = 0;
|
||||||
var globalCounter;
|
var globalCounter;
|
||||||
var globalURLCounter;
|
var globalURLCounter;
|
||||||
|
var siteBlockedAlert = browser.extension.getURL ('./siteBlockedAlert.html');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the JSON provider object keys.
|
* Initialize the JSON provider object keys.
|
||||||
|
@ -26,7 +27,7 @@ function getKeys(obj){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize the providers form the JSON object.
|
* Initialize the providers form the JSON object.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function createProviders()
|
function createProviders()
|
||||||
{
|
{
|
||||||
|
@ -53,12 +54,12 @@ function createProviders()
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert the external data to JSON Objects and
|
* Convert the external data to JSON Objects and
|
||||||
* call the create provider function.
|
* call the create provider function.
|
||||||
*
|
*
|
||||||
* @param {String} retrievedText - pure data form github
|
* @param {String} retrievedText - pure data form github
|
||||||
*/
|
*/
|
||||||
function toJSON(retrievedText) {
|
function toJSON(retrievedText) {
|
||||||
data = JSON.parse(retrievedText);
|
data = JSON.parse(retrievedText);
|
||||||
getKeys(data.providers);
|
getKeys(data.providers);
|
||||||
createProviders();
|
createProviders();
|
||||||
|
@ -67,11 +68,11 @@ function toJSON(retrievedText) {
|
||||||
/**
|
/**
|
||||||
* Load local saved data, if the browser is offline or
|
* Load local saved data, if the browser is offline or
|
||||||
* some other network trouble.
|
* some other network trouble.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function loadOldDataFromStore()
|
function loadOldDataFromStore()
|
||||||
{
|
{
|
||||||
browser.storage.local.get('ClearURLsData', function(data){
|
browser.storage.local.get('ClearURLsData', function(data){
|
||||||
if(data.ClearURLsData){
|
if(data.ClearURLsData){
|
||||||
data = data.ClearURLsData;
|
data = data.ClearURLsData;
|
||||||
}
|
}
|
||||||
|
@ -85,7 +86,7 @@ function loadOldDataFromStore()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch the Rules & Exception github.
|
* Fetch the Rules & Exception github.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
function fetchFromURL()
|
function fetchFromURL()
|
||||||
{
|
{
|
||||||
|
@ -99,12 +100,12 @@ function fetchFromURL()
|
||||||
{
|
{
|
||||||
var responseText = response.clone().text().then(function(responseText){
|
var responseText = response.clone().text().then(function(responseText){
|
||||||
if(response.ok)
|
if(response.ok)
|
||||||
{
|
{
|
||||||
browser.storage.local.set({"ClearURLsData": responseText});
|
browser.storage.local.set({"ClearURLsData": responseText});
|
||||||
toJSON(responseText);
|
toJSON(responseText);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
loadOldDataFromStore();
|
loadOldDataFromStore();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
@ -136,7 +137,7 @@ function Provider(_name,_completeProvider = false){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add URL pattern.
|
* Add URL pattern.
|
||||||
*
|
*
|
||||||
* @require urlPatterns as RegExp
|
* @require urlPatterns as RegExp
|
||||||
*/
|
*/
|
||||||
this.setURLPattern = function(urlPatterns) {
|
this.setURLPattern = function(urlPatterns) {
|
||||||
|
@ -153,16 +154,16 @@ function Provider(_name,_completeProvider = false){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the url is matching the ProviderURL.
|
* Check the url is matching the ProviderURL.
|
||||||
*
|
*
|
||||||
* @return {String} ProviderURL as RegExp
|
* @return {String} ProviderURL as RegExp
|
||||||
*/
|
*/
|
||||||
this.matchURL = function(url) {
|
this.matchURL = function(url) {
|
||||||
return !(this.matchException(url)) && (url.match(urlPattern) != null) && (url.match(urlPattern).length > 0);
|
return !(this.matchException(url)) && (url.match(urlPattern) != null) && (url.match(urlPattern).length > 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a rule to the rule array.
|
* Add a rule to the rule array.
|
||||||
*
|
*
|
||||||
* @param String rule RegExp as string
|
* @param String rule RegExp as string
|
||||||
*/
|
*/
|
||||||
this.addRule = function(rule) {
|
this.addRule = function(rule) {
|
||||||
|
@ -179,7 +180,7 @@ function Provider(_name,_completeProvider = false){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return all rules as an array.
|
* Return all rules as an array.
|
||||||
*
|
*
|
||||||
* @return Array RegExp strings
|
* @return Array RegExp strings
|
||||||
*/
|
*/
|
||||||
this.getRules = function() {
|
this.getRules = function() {
|
||||||
|
@ -188,7 +189,7 @@ function Provider(_name,_completeProvider = false){
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a exception to the exceptions array.
|
* Add a exception to the exceptions array.
|
||||||
*
|
*
|
||||||
* @param String exception RegExp as string
|
* @param String exception RegExp as string
|
||||||
*/
|
*/
|
||||||
this.addException = function(exception) {
|
this.addException = function(exception) {
|
||||||
|
@ -198,19 +199,22 @@ function Provider(_name,_completeProvider = false){
|
||||||
/**
|
/**
|
||||||
* Private helper method to check if the url
|
* Private helper method to check if the url
|
||||||
* an exception.
|
* an exception.
|
||||||
*
|
*
|
||||||
* @param {String} url RegExp as string
|
* @param {String} url RegExp as string
|
||||||
* @return {boolean} if matching? true: false
|
* @return {boolean} if matching? true: false
|
||||||
*/
|
*/
|
||||||
this.matchException = function(url) {
|
this.matchException = function(url) {
|
||||||
var result = false;
|
var result = false;
|
||||||
|
|
||||||
|
//Add the site blocked alert to every exception
|
||||||
|
if(url == siteBlockedAlert) return true;
|
||||||
|
|
||||||
for (var i = 0; i < exceptions.length; i++) {
|
for (var i = 0; i < exceptions.length; i++) {
|
||||||
if(result) { break; }
|
if(result) { break; }
|
||||||
|
|
||||||
result = (url.match(new RegExp(exceptions[i], "gi"))) && (url.match(new RegExp(exceptions[i], "gi")).length > 0);
|
result = (url.match(new RegExp(exceptions[i], "gi"))) && (url.match(new RegExp(exceptions[i], "gi")).length > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -219,7 +223,7 @@ function Provider(_name,_completeProvider = false){
|
||||||
/**
|
/**
|
||||||
* Helper function which remove the tracking fields
|
* Helper function which remove the tracking fields
|
||||||
* for each provider given as parameter.
|
* for each provider given as parameter.
|
||||||
*
|
*
|
||||||
* @param {Provider} provider Provider-Object
|
* @param {Provider} provider Provider-Object
|
||||||
* @param {webRequest} request webRequest-Object
|
* @param {webRequest} request webRequest-Object
|
||||||
* @return {Array} Array with changes and url fields
|
* @return {Array} Array with changes and url fields
|
||||||
|
@ -235,7 +239,7 @@ function removeFieldsFormURL(provider, request)
|
||||||
{
|
{
|
||||||
for (var i = 0; i < rules.length; i++) {
|
for (var i = 0; i < rules.length; i++) {
|
||||||
var bevorReplace = url;
|
var bevorReplace = url;
|
||||||
|
|
||||||
url = url.replace(new RegExp(rules[i], "gi"), "");
|
url = url.replace(new RegExp(rules[i], "gi"), "");
|
||||||
|
|
||||||
if(bevorReplace != url)
|
if(bevorReplace != url)
|
||||||
|
@ -249,7 +253,7 @@ function removeFieldsFormURL(provider, request)
|
||||||
if(badgedStatus) {
|
if(badgedStatus) {
|
||||||
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
|
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
browser.browserAction.setBadgeText({text: "", tabId: tabid});
|
browser.browserAction.setBadgeText({text: "", tabId: tabid});
|
||||||
}
|
}
|
||||||
|
@ -268,10 +272,10 @@ function removeFieldsFormURL(provider, request)
|
||||||
if(badgedStatus) {
|
if(badgedStatus) {
|
||||||
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
|
browser.browserAction.setBadgeText({text: (++badges[tabid]).toString(), tabId: tabid});
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
browser.browserAction.setBadgeText({text: "", tabId: tabid});
|
browser.browserAction.setBadgeText({text: "", tabId: tabid});
|
||||||
}
|
}
|
||||||
|
|
||||||
cancel = true;
|
cancel = true;
|
||||||
}
|
}
|
||||||
|
@ -300,7 +304,7 @@ function countFields(url)
|
||||||
/**
|
/**
|
||||||
* Function which called from the webRequest to
|
* Function which called from the webRequest to
|
||||||
* remove the tracking fields from the url.
|
* remove the tracking fields from the url.
|
||||||
*
|
*
|
||||||
* @param {webRequest} request webRequest-Object
|
* @param {webRequest} request webRequest-Object
|
||||||
* @return {Array} redirectUrl or none
|
* @return {Array} redirectUrl or none
|
||||||
*/
|
*/
|
||||||
|
@ -327,7 +331,7 @@ function clearUrl(request)
|
||||||
"changes": false,
|
"changes": false,
|
||||||
"url": ""
|
"url": ""
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Call for every provider the removeFieldsFormURL method.
|
* Call for every provider the removeFieldsFormURL method.
|
||||||
*/
|
*/
|
||||||
|
@ -335,12 +339,13 @@ function clearUrl(request)
|
||||||
result = removeFieldsFormURL(providers[i], request);
|
result = removeFieldsFormURL(providers[i], request);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Cancel the Request
|
* Cancel the Request and redirect to the site blocked alert page,
|
||||||
|
* to inform the user about the full url blocking.
|
||||||
*/
|
*/
|
||||||
if(result["cancel"]){
|
if(result["cancel"]){
|
||||||
return {
|
return {
|
||||||
cancel: true
|
redirectUrl: siteBlockedAlert
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -351,9 +356,9 @@ function clearUrl(request)
|
||||||
return {
|
return {
|
||||||
redirectUrl: result["url"]
|
redirectUrl: result["url"]
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -383,7 +388,7 @@ function setGlobalCounter() {
|
||||||
else {
|
else {
|
||||||
globalURLCounter = 0;
|
globalURLCounter = 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -440,11 +445,11 @@ browser.tabs.onActivated.addListener(handleActivated);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Call by each Request and checking the url.
|
* Call by each Request and checking the url.
|
||||||
*
|
*
|
||||||
* @type {Array}
|
* @type {Array}
|
||||||
*/
|
*/
|
||||||
browser.webRequest.onBeforeRequest.addListener(
|
browser.webRequest.onBeforeRequest.addListener(
|
||||||
clearUrl,
|
clearUrl,
|
||||||
{urls: ["<all_urls>"]},
|
{urls: ["<all_urls>"]},
|
||||||
["blocking"]
|
["blocking"]
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "ClearURLs",
|
"name": "ClearURLs",
|
||||||
"version": "1.1.2.1",
|
"version": "1.1.2.2",
|
||||||
"author": "Kevin R.",
|
"author": "Kevin R.",
|
||||||
"description": "Remove tracking elements form URLs. ",
|
"description": "Remove tracking elements form URLs. ",
|
||||||
"homepage_url": "https://github.com/KevinRoebert/ClearUrls",
|
"homepage_url": "https://github.com/KevinRoebert/ClearUrls",
|
||||||
|
@ -36,5 +36,8 @@
|
||||||
{
|
{
|
||||||
"matches": ["<all_urls>"]
|
"matches": ["<all_urls>"]
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"web_accessible_resources": [
|
||||||
|
"siteBlockedAlert.html"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,14 +37,14 @@
|
||||||
<input type="checkbox" id="tabcounter">
|
<input type="checkbox" id="tabcounter">
|
||||||
<span class="slider round"></span>
|
<span class="slider round"></span>
|
||||||
<label>Toolbar counter</label>
|
<label>Toolbar counter</label>
|
||||||
</label>
|
</label>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<br>
|
<br>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-1">
|
<div class="col-sm-1">
|
||||||
<h5>Statistics</h5>
|
<h5>Statistics</h5>
|
||||||
|
|
||||||
<div class="progress">
|
<div class="progress">
|
||||||
<div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar" style="width: 0%" id="progress_blocked"></div>
|
<div class="progress-bar progress-bar-danger progress-bar-striped" role="progressbar" style="width: 0%" id="progress_blocked"></div>
|
||||||
<div class="progress-bar progress-bar-info progress-bar-striped" role="progressbar" style="width: 100%" id="progress_non_blocked"></div>
|
<div class="progress-bar progress-bar-info progress-bar-striped" role="progressbar" style="width: 100%" id="progress_non_blocked"></div>
|
||||||
|
@ -55,24 +55,24 @@
|
||||||
|
|
||||||
<h6>Total blocked elements</h6>
|
<h6>Total blocked elements</h6>
|
||||||
<p class="text-danger text-right" id="statistics_value"></p>
|
<p class="text-danger text-right" id="statistics_value"></p>
|
||||||
|
|
||||||
<h6>Percentage of total traffic</h6>
|
<h6>Percentage of total traffic</h6>
|
||||||
<p class="text-right" id="statistics_value_global_percentage"></p>
|
<p class="text-right" id="statistics_value_global_percentage"></p>
|
||||||
|
|
||||||
<p class="text-center">
|
<p class="text-center">
|
||||||
<button type="button" id="reset_counter_btn" class="btn btn-danger" title="Reset the global statistics">Reset counter</button>
|
<button type="button" id="reset_counter_btn" class="btn btn-danger" title="Reset the global statistics">Reset counter</button>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<footer>
|
<footer>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-1 navbar-inverse text-center">
|
<div class="col-sm-1 navbar-inverse text-center">
|
||||||
<small class="text-muted">Version 1.1.2.1</small>
|
<small class="text-muted">Version 1.1.2.2</small>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<!-- Optional JavaScript -->
|
<!-- Optional JavaScript -->
|
||||||
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||||
|
@ -80,4 +80,4 @@
|
||||||
<script src="bootstrap.min.js"></script>
|
<script src="bootstrap.min.js"></script>
|
||||||
<script src="popup_new.js"></script>
|
<script src="popup_new.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
56
siteBlockedAlert.html
Normal file
56
siteBlockedAlert.html
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<!-- Required meta tags -->
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||||
|
|
||||||
|
<!-- Bootstrap CSS -->
|
||||||
|
<link rel="stylesheet" href="bootstrap.min.css">
|
||||||
|
|
||||||
|
<style>
|
||||||
|
body {
|
||||||
|
background-color: #333;
|
||||||
|
color: white;
|
||||||
|
text-shadow: 0 1px 3px rgba(0,0,0,.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
color: #f72d04;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
position: absolute;
|
||||||
|
top: 40%;
|
||||||
|
left: 50%;
|
||||||
|
transform: translate(-50%,-50%);
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="container content">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-sm-10 col-sm-offset-1">
|
||||||
|
<h1 class="text-center">This site or element was blocked by <b>ClearURLs</b> Add-on</h1>
|
||||||
|
<p class="text-center">
|
||||||
|
This site or element was blocked by <b>ClearURLs</b> Add-on, because we identify this site as an
|
||||||
|
advertising and/or tracking service.
|
||||||
|
<br>
|
||||||
|
To visit this site, you must temporarily deactivate the Add-on.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="navbar-fixed-bottom">
|
||||||
|
<div class="navbar-inverse text-center">
|
||||||
|
<small class="text-muted">Version 1.1.2.2</small>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<!-- Optional JavaScript -->
|
||||||
|
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
|
||||||
|
<script src="jquery-3.2.1.min.js"></script>
|
||||||
|
<script src="bootstrap.min.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
Loading…
Reference in New Issue
Block a user