diff --git a/lib/interceptor.js b/lib/interceptor.js index f3e8c1c1ab180a96564ecd7ae248a14cf3224a0e..0a3c260ab3ba05487a9d1639d8e41dd775e8a3a5 100644 --- a/lib/interceptor.js +++ b/lib/interceptor.js @@ -82,6 +82,9 @@ var Interceptor = new Class({ } httpChannel.redirectTo(redirectionURI); + + //noinspection JSUnresolvedVariable + require('sdk/simple-prefs').prefs.amountBlocked++; }, handleMissingCandidate: function (httpChannel) { @@ -91,6 +94,9 @@ var Interceptor = new Class({ if (blockMissing) { httpChannel.cancel(Cr.NS_ERROR_NOT_AVAILABLE); + + //noinspection JSUnresolvedVariable + require('sdk/simple-prefs').prefs.amountBlocked++; } } }); diff --git a/lib/request-analyzer.js b/lib/request-analyzer.js index 74dc19c41c7aba804c3535adf39b0c86d778aaad..b01e0acc8393fa6d59858c864d34d9e360b53cce 100644 --- a/lib/request-analyzer.js +++ b/lib/request-analyzer.js @@ -33,6 +33,20 @@ function isValidCandidate(httpChannel) { return false; } + //noinspection JSUnresolvedVariable + var whitelistedDomains = require('sdk/simple-prefs').prefs.domainWhitelist.split(";"); + + for (var domain in whitelistedDomains) { + + if (whitelistedDomains[domain] === httpChannel.referrer.host) { + + // Remove referer header from request. + httpChannel.setRequestHeader('Referer', null, false); + + return false; + } + } + return httpChannel.requestMethod === 'GET'; } diff --git a/package.json b/package.json index ce3ad3f623e214b800d3c315e629ba165a30cde9..604688c0cb966fd12a4052f1b08790e83627dcc1 100644 --- a/package.json +++ b/package.json @@ -21,11 +21,25 @@ "title": "Add comments to locally fetched files" }, { - "description": "Cancel the intercepted request if the required resource is not locally available.", + "description": "Cancel intercepted request if the required resource is not locally available.", "type": "bool", "name": "blockMissing", "value": false, "title": "Block requests for missing resources" + }, + { + "description": "Enter domains to whitelist them. Separate multipe entries with semi-colons (;).", + "type": "string", + "name": "domainWhitelist", + "value": "", + "title": "Exclude domains from inspections" + }, + { + "description": "Amount of requests to Content Delivery Networks blocked since installation.", + "type": "integer", + "name": "amountBlocked", + "value": 0, + "title": "Counter for intercepted requests" } ] }