From 284c1e212557ffd78926b6e4c3ff8423c7f51c35 Mon Sep 17 00:00:00 2001
From: Thomas Rientjes <synzvato@protonmail.com>
Date: Mon, 7 Dec 2015 02:43:54 +0100
Subject: [PATCH] Improve preferences system

---
 lib/interceptor.js      |  8 ++++----
 lib/request-analyzer.js | 21 +++++++++++++++------
 2 files changed, 19 insertions(+), 10 deletions(-)

diff --git a/lib/interceptor.js b/lib/interceptor.js
index 4c01995..89f669d 100644
--- a/lib/interceptor.js
+++ b/lib/interceptor.js
@@ -25,6 +25,8 @@ var { Cc, Ci, Cr } = require('chrome');
 var observerService = Cc['@mozilla.org/observer-service;1']
     .getService(Ci.nsIObserverService);
 
+var preferences = require('sdk/simple-prefs').prefs;
+
 var requestAnalyzer = require('./request-analyzer');
 var dataHandler = require('./data-handler');
 
@@ -84,15 +86,13 @@ var Interceptor = new Class({
         httpChannel.redirectTo(redirectionURI);
 
         //noinspection JSUnresolvedVariable
-        require('sdk/simple-prefs').prefs.amountInjected++;
+        preferences.amountInjected++;
     },
 
     handleMissingCandidate: function (httpChannel) {
 
         //noinspection JSUnresolvedVariable
-        var blockMissing = require('sdk/simple-prefs').prefs.blockMissing;
-
-        if (blockMissing) {
+        if (preferences.blockMissing) {
             httpChannel.cancel(Cr.NS_ERROR_NOT_AVAILABLE);
         }
     }
diff --git a/lib/request-analyzer.js b/lib/request-analyzer.js
index 15616e7..2120b21 100644
--- a/lib/request-analyzer.js
+++ b/lib/request-analyzer.js
@@ -17,6 +17,8 @@
  * Imports
  */
 
+var preferences = require('sdk/simple-prefs').prefs;
+
 /**
  * Resource version mappings.
  * @var {object} mappings
@@ -34,18 +36,25 @@ function isValidCandidate(httpChannel) {
     }
 
     //noinspection JSUnresolvedVariable
-    var whitelistedDomains = require('sdk/simple-prefs').prefs.domainWhitelist.split(";");
+    var domainWhitelist = preferences.domainWhitelist;
+
+    if (domainWhitelist.length > 0 && httpChannel.referrer) {
 
-    if (httpChannel.referrer) {
+        var whitelistedDomains = domainWhitelist.split(';');
 
         for (var domain in whitelistedDomains) {
 
-            if (whitelistedDomains[domain] === httpChannel.referrer.host) {
+            if (whitelistedDomains.hasOwnProperty(domain)) {
+
+                if (whitelistedDomains[domain] === httpChannel.referrer.host ||
+                    'www.' + whitelistedDomains[domain] === httpChannel.referrer.host) {
+
+                    // Remove referer header from request.
+                    httpChannel.setRequestHeader('Referer', null, false);
 
-                // Remove referer header from request.
-                httpChannel.setRequestHeader('Referer', null, false);
+                    return false;
+                }
 
-                return false;
             }
         }
     }
-- 
GitLab