diff --git a/.eslintrc b/.eslintrc index 5765e85fb1a46c5dc042a2994845e04e4a2be582..602bd6469668500f166537e84693d3b9ae044656 100644 --- a/.eslintrc +++ b/.eslintrc @@ -8,10 +8,12 @@ "globals": { "Address": true, "files": true, + "Header": true, "helpers": true, "interceptor": true, "mappings": true, "requestAnalyzer": true, + "requestSanitizer": true, "Resource": true, "resources": true, "Setting": true, diff --git a/_locales/cs_CZ/messages.json b/_locales/cs_CZ/messages.json new file mode 100644 index 0000000000000000000000000000000000000000..4c246ea135ec2e66170d600192764cf40e409391 --- /dev/null +++ b/_locales/cs_CZ/messages.json @@ -0,0 +1,70 @@ +{ + "extensionDescription": { + "message": "Ochránà vás pÅ™es sledovánÃm skrze centralizované doruÄovánà obsahu.", + "description": "Extension description." + }, + "disableProtectionTitle": { + "message": "Zakázat ochranu na této stránce", + "description": "Disable protection title." + }, + "enableProtectionTitle": { + "message": "Zapnout ochranu", + "description": "Enable protection title." + }, + "amountInjectedTitle": { + "message": "PoÄÃtadlo vložených lokálnÃch zdrojů", + "description": "Amount injected title." + }, + "amountInjectedDescription": { + "message": "PoÄet lokálnà uložených zdrojů vložených od instalace.", + "description": "Amount injected description." + }, + "optionsTitle": { + "message": "Možnosti", + "description": "Options title." + }, + "showIconBadgeTitle": { + "message": "Zobrazovat poÄet vloženà u ikony", + "description": "Show icon badge title." + }, + "showIconBadgeDescription": { + "message": "Zobrazit poÄet vložených zdrojů u ikony rozÅ¡ÃÅ™enÃ.", + "description": "Show icon badge description." + }, + "blockMissingTitle": { + "message": "Blokovat požadavky na chybÄ›jÃcà zdroje", + "description": "Block requests for missing resources title." + }, + "blockMissingDescription": { + "message": "ZruÅ¡it požadavky na sledované zdroje, pokud nejsou lokálnÄ› dostupné.", + "description": "Block requests for missing resources description." + }, + "disablePrefetchTitle": { + "message": "Zakázat pÅ™ednaÄÃtánà odkazů", + "description": "Disable prefetch title." + }, + "disablePrefetchDescription": { + "message": "PÅ™edejte nepovoleným požadavkům do sÃtà pro doruÄovánà obsahu.", + "description": "Disable prefetch description." + }, + "stripMetadataTitle": { + "message": "Odstranit metadata z povolených požadavků", + "description": "Strip metadata title." + }, + "stripMetadataDescription": { + "message": "Pro zlepÅ¡enà soukromà odstranà citlivá data z povolených požadavků na CDN.", + "description": "Strip metadata description." + }, + "whitelistedDomainsTitle": { + "message": "Nekontrolovat pro domény", + "description": "Whitelisted domains title." + }, + "whitelistedDomainsDescription": { + "message": "Zadejte domény pro jejich vynechánà z kontroly. Jednotlivé domény oddÄ›lujte pomocà stÅ™ednÃků (;).", + "description": "Whitelisted domains description." + }, + "advancedLabel": { + "message": "RozÅ¡ÃÅ™ené", + "description": "Advanced label." + } +} \ No newline at end of file diff --git a/_locales/pt_PT/messages.json b/_locales/pt_PT/messages.json index 9046c8dc5a66887c51b51ec8ca9bb94eb6a02cf7..3cac744cbae69998db78c400ce62ff1775cd1c1c 100644 --- a/_locales/pt_PT/messages.json +++ b/_locales/pt_PT/messages.json @@ -1,70 +1,70 @@ { - "extensionDescription":{ - "message":"Protege contra monitorização através de entrega de conteúdo centralizado.", - "description":"Extension description." + "extensionDescription": { + "message": "Protege contra monitorização através de entrega de conteúdo centralizado.", + "description": "Extension description." }, - "disableProtectionTitle":{ - "message":"Desativar proteção para este site", - "description":"Disable protection title." + "disableProtectionTitle": { + "message": "Desativar proteção para este site", + "description": "Disable protection title." }, - "enableProtectionTitle":{ - "message":"Ativar proteção", - "description":"Enable protection title." + "enableProtectionTitle": { + "message": "Ativar proteção", + "description": "Enable protection title." }, - "amountInjectedTitle":{ - "message":"Contador para recursos injetados localmente", - "description":"Amount injected title." + "amountInjectedTitle": { + "message": "Contador para recursos injetados localmente", + "description": "Amount injected title." }, - "amountInjectedDescription":{ - "message":"Quantidade de injeções de recurso Content Delivery Network locais desde a instalação.", - "description":"Amount injected description." + "amountInjectedDescription": { + "message": "Quantidade de injeções de recurso Content Delivery Network locais desde a instalação.", + "description": "Amount injected description." }, - "optionsTitle":{ - "message":"Opções", - "description":"Options title." + "optionsTitle": { + "message": "Opções", + "description": "Options title." }, - "showIconBadgeTitle":{ - "message":"Mostrar contagem de injeções no Ãcone", - "description":"Show icon badge title." + "showIconBadgeTitle": { + "message": "Mostrar contagem de injeções no Ãcone", + "description": "Show icon badge title." }, - "showIconBadgeDescription":{ - "message":"Mostrar o número de recursos injetados no Ãcone da extensão.", - "description":"Show icon badge description." + "showIconBadgeDescription": { + "message": "Mostrar o número de recursos injetados no Ãcone da extensão.", + "description": "Show icon badge description." }, - "blockMissingTitle":{ - "message":"Bloquear pedidos por falta de recursos", - "description":"Block requests for missing resources title." + "blockMissingTitle": { + "message": "Bloquear pedidos por falta de recursos", + "description": "Block requests for missing resources title." }, - "blockMissingDescription":{ - "message":"Cancelar pedido intercetado se o recurso necessário não estiver disponÃvel localmente.", - "description":"Block requests for missing resources description." + "blockMissingDescription": { + "message": "Cancelar pedido intercetado se o recurso necessário não estiver disponÃvel localmente.", + "description": "Block requests for missing resources description." }, - "disablePrefetchTitle":{ - "message":"Desativar pré-obtenção de ligações", - "description":"Disable prefetch title." + "disablePrefetchTitle": { + "message": "Desativar pré-obtenção de ligações", + "description": "Disable prefetch title." }, - "disablePrefetchDescription":{ - "message":"Impedir recursos não permitidos de vazar para as redes de entrega.", - "description":"Disable prefetch description." + "disablePrefetchDescription": { + "message": "Impedir recursos não permitidos de vazar para as redes de entrega.", + "description": "Disable prefetch description." }, - "stripMetadataTitle":{ - "message":"Retirar metadados dos pedidos permitidos", - "description":"Strip metadata title." + "stripMetadataTitle": { + "message": "Retirar metadados dos pedidos permitidos", + "description": "Strip metadata title." }, - "stripMetadataDescription":{ - "message":"Limpar dados sensÃveis de recursos CDN permitidos para melhoria de privacidade.", - "description":"Strip metadata description." + "stripMetadataDescription": { + "message": "Limpar dados sensÃveis de recursos CDN permitidos para melhoria de privacidade.", + "description": "Strip metadata description." }, - "whitelistedDomainsTitle":{ - "message":"Excluir domÃnios de inspeções", - "description":"Whitelisted domains title." + "whitelistedDomainsTitle": { + "message": "Excluir domÃnios de inspeções", + "description": "Whitelisted domains title." }, - "whitelistedDomainsDescription":{ - "message":"Insira domÃnios para os colocar na lista branca. Separe múltiplas entradas com pontos e vÃrgulas (;).", - "description":"Whitelisted domains description." + "whitelistedDomainsDescription": { + "message": "Insira domÃnios para os colocar na lista branca. Separe múltiplas entradas com pontos e vÃrgulas (;).", + "description": "Whitelisted domains description." }, - "advancedLabel":{ - "message":"Avançado", - "description":"Advanced label." + "advancedLabel": { + "message": "Avançado", + "description": "Advanced label." } } \ No newline at end of file diff --git a/_locales/ro/messages.json b/_locales/ro/messages.json index 4022e9685a0619d256f5c5a2e8f7befef0d2064a..8fc6af96880940b1e3c85fd62809147d6489df70 100644 --- a/_locales/ro/messages.json +++ b/_locales/ro/messages.json @@ -1,70 +1,70 @@ { - "extensionDescription":{ - "message":"Te protejează împotriva urmăririi prin livrare \"gratuită\" de conÈ›inut centralizat.", - "description":"Extension description." + "extensionDescription": { + "message": "Te protejează împotriva urmăririi prin livrare \"gratuită\" de conÈ›inut centralizat.", + "description": "Extension description." }, - "disableProtectionTitle":{ - "message":"Dezactivează protecÈ›ia pentru acest site", - "description":"Disable protection title." + "disableProtectionTitle": { + "message": "Dezactivează protecÈ›ia pentru acest site", + "description": "Disable protection title." }, - "enableProtectionTitle":{ - "message":"Activează protecÈ›ia", - "description":"Enable protection title." + "enableProtectionTitle": { + "message": "Activează protecÈ›ia", + "description": "Enable protection title." }, - "amountInjectedTitle":{ - "message":"Contor pentru resursele injectate local", - "description":"Amount injected title." + "amountInjectedTitle": { + "message": "Contor pentru resursele injectate local", + "description": "Amount injected title." }, - "amountInjectedDescription":{ - "message":"Cantitatea de resurse locale injectate de ReÈ›elele care Livrează ConÈ›inut din momentul instalării.", - "description":"Amount injected description." + "amountInjectedDescription": { + "message": "Cantitatea de resurse locale injectate de ReÈ›elele care Livrează ConÈ›inut din momentul instalării.", + "description": "Amount injected description." }, - "optionsTitle":{ - "message":"OpÈ›iuni", - "description":"Options title." + "optionsTitle": { + "message": "OpÈ›iuni", + "description": "Options title." }, - "showIconBadgeTitle":{ - "message":"AfiÈ™ează numărul de dependenÈ›e înlocuite pe iconiță", - "description":"Show icon badge title." + "showIconBadgeTitle": { + "message": "AfiÈ™ează numărul de dependenÈ›e înlocuite pe iconiță", + "description": "Show icon badge title." }, - "showIconBadgeDescription":{ - "message":"AfiÈ™ează numărul de resurse înlocuite pe iconiÈ›a extensiei.", - "description":"Show icon badge description." + "showIconBadgeDescription": { + "message": "AfiÈ™ează numărul de resurse înlocuite pe iconiÈ›a extensiei.", + "description": "Show icon badge description." }, - "blockMissingTitle":{ - "message":"Blochează cererile pentru resursele care lipsesc", - "description":"Block requests for missing resources title." + "blockMissingTitle": { + "message": "Blochează cererile pentru resursele care lipsesc", + "description": "Block requests for missing resources title." }, - "blockMissingDescription":{ - "message":"Anulează cererile interceptate dacă resursa solicitată nu este disponibilă local.", - "description":"Block requests for missing resources description." + "blockMissingDescription": { + "message": "Anulează cererile interceptate dacă resursa solicitată nu este disponibilă local.", + "description": "Block requests for missing resources description." }, - "disablePrefetchTitle":{ - "message":"Dezactivează pre-încărcarea de linkuri", - "description":"Disable prefetch title." + "disablePrefetchTitle": { + "message": "Dezactivează pre-încărcarea de linkuri", + "description": "Disable prefetch title." }, - "disablePrefetchDescription":{ - "message":"Previne scurgerea request-uri nepermise către reÈ›ele de livrare.", - "description":"Disable prefetch description." + "disablePrefetchDescription": { + "message": "Previne scurgerea request-uri nepermise către reÈ›ele de livrare.", + "description": "Disable prefetch description." }, - "stripMetadataTitle":{ - "message":"Scoate metadatele din requesturi permise", - "description":"Strip metadata title." + "stripMetadataTitle": { + "message": "Scoate metadatele din requesturi permise", + "description": "Strip metadata title." }, - "stripMetadataDescription":{ - "message":"Șterge date sensibile din requesturi permise pentru îmbunătățirea confidenÈ›ialității.", - "description":"Strip metadata description." + "stripMetadataDescription": { + "message": "Șterge date sensibile din requesturi permise pentru îmbunătățirea confidenÈ›ialității.", + "description": "Strip metadata description." }, - "whitelistedDomainsTitle":{ - "message":"Exclude domeniile următoare de la inspecÈ›ii", - "description":"Whitelisted domains title." + "whitelistedDomainsTitle": { + "message": "Exclude domeniile următoare de la inspecÈ›ii", + "description": "Whitelisted domains title." }, - "whitelistedDomainsDescription":{ - "message":"IntroduceÈ›i domeniile dorite în lista albă. SeparaÈ›i intrările multiple între ele prin punct È™i virgulă (;).", - "description":"Whitelisted domains description." + "whitelistedDomainsDescription": { + "message": "IntroduceÈ›i domeniile dorite în lista albă. SeparaÈ›i intrările multiple între ele prin punct È™i virgulă (;).", + "description": "Whitelisted domains description." }, - "advancedLabel":{ - "message":"Avansat", - "description":"Advanced label." + "advancedLabel": { + "message": "Avansat", + "description": "Advanced label." } } \ No newline at end of file diff --git a/_locales/sr/messages.json b/_locales/sr/messages.json index 1248a4e803af4e081d6c286dbeeefc4e0bff4b32..ac5211e49b629e6dab7357b788da99e81287c9e7 100644 --- a/_locales/sr/messages.json +++ b/_locales/sr/messages.json @@ -60,7 +60,7 @@ "description": "Whitelisted domains title." }, "whitelistedDomainsDescription": { - "message": "УнеÑите домене да их Ñтавите на бели ÑпиÑак. Више одвојених Ñтавки Ñа тачка-запетама (;).", + "message": "УнеÑите домене да их Ñтавите на бели ÑпиÑак. Одвојите више Ñтавки Ñа тачка-запетама (;).", "description": "Whitelisted domains description." }, "advancedLabel": { diff --git a/_locales/tr/messages.json b/_locales/tr/messages.json index 886478342d96487cb50431f6c30c5bc693f692c9..eca8fe218a21e24dcec7fca1d3ee6d34168211b8 100644 --- a/_locales/tr/messages.json +++ b/_locales/tr/messages.json @@ -1,70 +1,70 @@ { - "extensionDescription":{ - "message":"Sizi, \"ücretsiz\", merkezi, içerik dağıtımı aracılığıyla yapılan takipten korur.", - "description":"Extension description." + "extensionDescription": { + "message": "Sizi, \"ücretsiz\", merkezi, içerik dağıtımı aracılığıyla yapılan takipten korur.", + "description": "Extension description." }, - "disableProtectionTitle":{ - "message":"Bu sitede korumayı devre dışı bırak", - "description":"Disable protection title." + "disableProtectionTitle": { + "message": "Bu sitede korumayı devre dışı bırak", + "description": "Disable protection title." }, - "enableProtectionTitle":{ - "message":"Korumayı etkinleÅŸtir", - "description":"Enable protection title." + "enableProtectionTitle": { + "message": "Korumayı etkinleÅŸtir", + "description": "Enable protection title." }, - "amountInjectedTitle":{ - "message":"Yerel olarak eklenen kaynaklar için sayaç", - "description":"Amount injected title." + "amountInjectedTitle": { + "message": "Yerel olarak eklenen kaynaklar için sayaç", + "description": "Amount injected title." }, - "amountInjectedDescription":{ - "message":"Kurulumdan bu yana yerel İçerik Dağıtım Ağı kaynak eklemelerinin miktarı.", - "description":"Amount injected description." + "amountInjectedDescription": { + "message": "Kurulumdan bu yana yerel İçerik Dağıtım Ağı kaynak eklemelerinin miktarı.", + "description": "Amount injected description." }, - "optionsTitle":{ - "message":"Seçenekler", - "description":"Options title." + "optionsTitle": { + "message": "Seçenekler", + "description": "Options title." }, - "showIconBadgeTitle":{ - "message":"Simgede enjeksiyon sayaçlarını göster", - "description":"Show icon badge title." + "showIconBadgeTitle": { + "message": "Simgede enjeksiyon sayaçlarını göster", + "description": "Show icon badge title." }, - "showIconBadgeDescription":{ - "message":"Enjekte edilen kaynakların sayısını uzantı simgesinde gösterin.", - "description":"Show icon badge description." + "showIconBadgeDescription": { + "message": "Enjekte edilen kaynakların sayısını uzantı simgesinde gösterin.", + "description": "Show icon badge description." }, - "blockMissingTitle":{ - "message":"Eksik kaynaklar için gelen istekleri engelle", - "description":"Block requests for missing resources title." + "blockMissingTitle": { + "message": "Eksik kaynaklar için gelen istekleri engelle", + "description": "Block requests for missing resources title." }, - "blockMissingDescription":{ - "message":"Ä°stenilen kaynak yerel olarak mevcut deÄŸilse, yakalanan isteÄŸi iptal et.", - "description":"Block requests for missing resources description." + "blockMissingDescription": { + "message": "Ä°stenilen kaynak yerel olarak mevcut deÄŸilse, yakalanan isteÄŸi iptal et.", + "description": "Block requests for missing resources description." }, - "disablePrefetchTitle":{ - "message":"BaÄŸlantı önalımını devre dışı bırak", - "description":"Disable prefetch title." + "disablePrefetchTitle": { + "message": "BaÄŸlantı önalımını devre dışı bırak", + "description": "Disable prefetch title." }, - "disablePrefetchDescription":{ - "message":"Ä°zin verilmeyen isteklerin dağıtım aÄŸlarına sızmasını engelleyin.", - "description":"Disable prefetch description." + "disablePrefetchDescription": { + "message": "Ä°zin verilmeyen isteklerin dağıtım aÄŸlarına sızmasını engelleyin.", + "description": "Disable prefetch description." }, - "stripMetadataTitle":{ - "message":"Meta verilerini izin verilen isteklerden ayır", - "description":"Strip metadata title." + "stripMetadataTitle": { + "message": "Meta verilerini izin verilen isteklerden ayır", + "description": "Strip metadata title." }, - "stripMetadataDescription":{ - "message":"Ä°zin verilen CDN isteklerine duyarlı verileri geliÅŸmiÅŸ gizlilik için silin.", - "description":"Strip metadata description." + "stripMetadataDescription": { + "message": "Ä°leri düzey gizlilik için, izin verilen CDN isteklerinden hassas verileri sil.", + "description": "Strip metadata description." }, - "whitelistedDomainsTitle":{ - "message":"Alanları denetimlerden hariç tut", - "description":"Whitelisted domains title." + "whitelistedDomainsTitle": { + "message": "Alanları denetimlerden hariç tut", + "description": "Whitelisted domains title." }, - "whitelistedDomainsDescription":{ - "message":"Beyaz listeye eklemek için alan adlarını girin. Birden çok girdiyi noktalı virgül (;) ile ayırın.", - "description":"Whitelisted domains description." + "whitelistedDomainsDescription": { + "message": "Beyaz listeye eklemek için alan adlarını girin. Birden çok girdiyi noktalı virgül (;) ile ayırın.", + "description": "Whitelisted domains description." }, - "advancedLabel":{ - "message":"GeliÅŸmiÅŸ", - "description":"Advanced label." + "advancedLabel": { + "message": "GeliÅŸmiÅŸ", + "description": "Advanced label." } } \ No newline at end of file diff --git a/core/constants.js b/core/constants.js index c3320fd99cd6efde8ea72aabd403ef8ccbe61c5d..86e5754e75c1fd406badd69bd1ae5c384346dc87 100644 --- a/core/constants.js +++ b/core/constants.js @@ -27,6 +27,12 @@ const Address = { 'WWW_PREFIX': 'www.' }; +const Header = { + 'COOKIE': 'Cookie', + 'ORIGIN': 'Origin', + 'REFERER': 'Referer' +}; + const Resource = { 'MAPPING_EXPRESSION': /\.map$/i, 'VERSION_EXPRESSION': /(?:\d{1,2}\.){1,3}\d{1,2}/, @@ -38,6 +44,7 @@ const Setting = { 'BLOCK_MISSING': 'blockMissing', 'DISABLE_PREFETCH': 'disablePrefetch', 'SHOW_ICON_BADGE': 'showIconBadge', + 'SHOW_RELEASE_NOTES': 'showReleaseNotes', 'STRIP_METADATA': 'stripMetadata', 'WHITELISTED_DOMAINS': 'whitelistedDomains' }; @@ -45,9 +52,7 @@ const Setting = { const WebRequest = { 'GET': 'GET', 'BLOCKING': 'blocking', - 'HEADERS': 'requestHeaders', - 'ORIGIN_HEADER': 'Origin', - 'REFERER_HEADER': 'Referer' + 'HEADERS': 'requestHeaders' }; const Whitelist = { diff --git a/core/interceptor.js b/core/interceptor.js index 288d431d118c33f17d228c1024d43b716cf3d498..b8a06cb71c451e0e880c5cc57a1ce12951b9fce8 100644 --- a/core/interceptor.js +++ b/core/interceptor.js @@ -45,11 +45,14 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) { // Temporary list of undetectable tainted domains. let undetectableTaintedDomains = { '10fastfingers.com': true, + 'blog.datawrapper.de': true, + 'bundleofholding.com': true, 'cdnjs.com': true, 'dropbox.com': true, 'glowing-bear.org': true, 'minigames.mail.ru': true, 'miniquadtestbench.com': true, + 'openweathermap.org': true, 'qwertee.com': true, 'report-uri.io': true, 'scotthelme.co.uk': true, diff --git a/core/main.js b/core/main.js index 5174c27329686f8f5028967353ca640abb639038..6c5557c24713bba67d8f0475d454edd4d88c212e 100644 --- a/core/main.js +++ b/core/main.js @@ -26,11 +26,11 @@ var main = {}; main._initializeOptions = function () { let optionDefaults = { - 'showIconBadge': true, - 'blockMissing': false, - 'disablePrefetch': true, - 'stripMetadata': true, - 'whitelistedDomains': {} + [Setting.SHOW_ICON_BADGE]: true, + [Setting.BLOCK_MISSING]: false, + [Setting.DISABLE_PREFETCH]: true, + [Setting.STRIP_METADATA]: true, + [Setting.WHITELISTED_DOMAINS]: {} }; chrome.storage.local.get(optionDefaults, function (options) { @@ -68,7 +68,7 @@ main._showReleaseNotes = function (details) { if (details.temporary !== true) { chrome.storage.local.get({ - 'showReleaseNotes': true + [Setting.SHOW_RELEASE_NOTES]: true }, function (options) { if (options.showReleaseNotes === true) { diff --git a/core/request-sanitizer.js b/core/request-sanitizer.js new file mode 100644 index 0000000000000000000000000000000000000000..8a76e6759e69b916707d0d0ee8260d38a241f5ff --- /dev/null +++ b/core/request-sanitizer.js @@ -0,0 +1,73 @@ +/** + * Request Sanitizer + * Belongs to Decentraleyes. + * + * @author Thomas Rientjes + * @since 2018-01-10 + * @license MPL 2.0 + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +'use strict'; + +/** + * Request Sanitizer + */ + +var requestSanitizer = {}; + +/** + * Public Methods + */ + +requestSanitizer.enable = function () { + + let onBeforeSendHeaders = chrome.webRequest.onBeforeSendHeaders; + + onBeforeSendHeaders.addListener(requestSanitizer._stripMetadata, { + 'urls': stateManager.validHosts + }, [WebRequest.BLOCKING, WebRequest.HEADERS]); +}; + +requestSanitizer.disable = function () { + + let onBeforeSendHeaders = chrome.webRequest.onBeforeSendHeaders; + + onBeforeSendHeaders.removeListener(requestSanitizer._stripMetadata, { + 'urls': stateManager.validHosts + }, [WebRequest.BLOCKING, WebRequest.HEADERS]); +}; + +/** + * Private Methods + */ + +requestSanitizer._stripMetadata = function (requestDetails) { + + let sensitiveHeaders = [Header.COOKIE, Header.ORIGIN, Header.REFERER]; + + for (let i = 0; i < requestDetails.requestHeaders.length; ++i) { + + if (sensitiveHeaders.indexOf(requestDetails.requestHeaders[i].name) > -1) { + requestDetails.requestHeaders.splice(i--, 1); + } + } + + return { + [WebRequest.HEADERS]: requestDetails.requestHeaders + }; +}; + +/** + * Initializations + */ + +chrome.storage.local.get({[Setting.STRIP_METADATA]: true}, function (options) { + + if (options === null || options.stripMetadata !== false) { + requestSanitizer.enable(); + } +}); diff --git a/core/state-manager.js b/core/state-manager.js index 43bf38b84022368e716de8a1d2d432594f6ca758..8d4db7125cfac3cf71684409d07474d90f09b43a 100644 --- a/core/state-manager.js +++ b/core/state-manager.js @@ -41,13 +41,6 @@ stateManager.registerInjection = function (tabIdentifier, injection) { 'tabId': tabIdentifier, 'text': injectionCount.toString() }); - - } else { - - wrappers.setBadgeText({ - 'tabId': tabIdentifier, - 'text': '' - }); } } @@ -58,14 +51,14 @@ stateManager.registerInjection = function (tabIdentifier, injection) { interceptor.amountInjected = items.amountInjected; chrome.storage.local.set({ - 'amountInjected': ++interceptor.amountInjected + [Setting.AMOUNT_INJECTED]: ++interceptor.amountInjected }); }); } else { chrome.storage.local.set({ - 'amountInjected': ++interceptor.amountInjected + [Setting.AMOUNT_INJECTED]: ++interceptor.amountInjected }); } }; @@ -148,25 +141,9 @@ stateManager._updateTab = function (details) { } }; -stateManager._stripMetadata = function (requestDetails) { - - for (let i = 0; i < requestDetails.requestHeaders.length; ++i) { - - if (requestDetails.requestHeaders[i].name === WebRequest.ORIGIN_HEADER) { - requestDetails.requestHeaders.splice(i--, 1); - } else if (requestDetails.requestHeaders[i].name === WebRequest.REFERER_HEADER) { - requestDetails.requestHeaders.splice(i--, 1); - } - } - - return { - 'requestHeaders': requestDetails.requestHeaders - }; -}; - stateManager._handleStorageChanged = function (changes) { - if ('showIconBadge' in changes) { + if (Setting.SHOW_ICON_BADGE in changes) { stateManager.showIconBadge = changes.showIconBadge.newValue; @@ -178,21 +155,12 @@ stateManager._handleStorageChanged = function (changes) { } } - if ('stripMetadata' in changes) { - - let onBeforeSendHeaders; - - onBeforeSendHeaders = chrome.webRequest.onBeforeSendHeaders; + if (Setting.STRIP_METADATA in changes) { - onBeforeSendHeaders.removeListener(stateManager._stripMetadata, { - 'urls': stateManager.validHosts - }, [WebRequest.BLOCKING, WebRequest.HEADERS]); + requestSanitizer.disable(); if (changes.stripMetadata.newValue !== false) { - - onBeforeSendHeaders.addListener(stateManager._stripMetadata, { - 'urls': stateManager.validHosts - }, [WebRequest.BLOCKING, WebRequest.HEADERS]); + requestSanitizer.enable(); } } }; @@ -223,8 +191,13 @@ chrome.tabs.query({}, function (tabs) { tabs.forEach(stateManager._createTab); }); -chrome.storage.local.get('showIconBadge', function (items) { - stateManager.showIconBadge = items.showIconBadge || true; +chrome.storage.local.get(Setting.SHOW_ICON_BADGE, function (items) { + + if (items.showIconBadge === undefined) { + items.showIconBadge = true; + } + + stateManager.showIconBadge = items.showIconBadge; }); /** @@ -269,14 +242,4 @@ chrome.webRequest.onBeforeRedirect.addListener(function (requestDetails) { }, {'urls': [Address.ANY]}); -chrome.storage.local.get({'stripMetadata': true}, function (options) { - - if (options === null || options.stripMetadata !== false) { - - chrome.webRequest.onBeforeSendHeaders.addListener(stateManager._stripMetadata, { - 'urls': stateManager.validHosts - }, [WebRequest.BLOCKING, WebRequest.HEADERS]); - } -}); - chrome.storage.onChanged.addListener(stateManager._handleStorageChanged); diff --git a/modules/internal/helpers.js b/modules/internal/helpers.js index 54a1ed1cd8c63069ece255112761e66d706914f9..003d8e1ff63958dd5273d6bcc7be0eebff35e134 100644 --- a/modules/internal/helpers.js +++ b/modules/internal/helpers.js @@ -62,8 +62,8 @@ helpers.languageIsFullySupported = function (language) { languageSupported = false; supportedLanguages = [ - 'ar', 'bg', 'zh', 'da', 'nl', 'en', 'et', 'fi', 'fr', 'de', 'el', 'is', - 'id', 'it', 'ja', 'ko', 'pl', 'pt', 'ro', 'ru', 'es', 'sv', 'tr' + 'ar', 'bg', 'zh', 'cs', 'da', 'nl', 'en', 'et', 'fi', 'fr', 'de', 'el', + 'is', 'id', 'it', 'ja', 'ko', 'pl', 'pt', 'ro', 'ru', 'es', 'sv', 'tr' ]; for (let supportedLanguage of supportedLanguages) { @@ -201,6 +201,13 @@ helpers.determineScriptDirection = function (language) { return scriptDirection; }; +helpers.formatNumber = function (number) { + + if (typeof number === 'number') { + return number.toLocaleString(); + } +}; + helpers.formatVersion = function (version) { if (version.indexOf('beta') === -1) { diff --git a/pages/background/background.html b/pages/background/background.html index 55584b62d75ef220707cad668e6a4ce21cc82ce9..ebf75a1170100afd1a276def86ed51773654888d 100644 --- a/pages/background/background.html +++ b/pages/background/background.html @@ -17,6 +17,7 @@ <script src="../../core/files.js"></script> <script src="../../core/resources.js"></script> <script src="../../core/mappings.js"></script> + <script src="../../core/request-sanitizer.js"></script> <script src="../../core/state-manager.js"></script> <script src="../../core/request-analyzer.js"></script> <script src="../../core/interceptor.js"></script> diff --git a/pages/options/options.js b/pages/options/options.js index 1512b8a40a1a08a87cbbcc73ddae99264593cdaf..17c403ed238073e9a56a75d9eefdc67628ce4589 100644 --- a/pages/options/options.js +++ b/pages/options/options.js @@ -90,11 +90,11 @@ options._getOptionElement = function (optionKey) { options._getOptionElements = function () { let optionElements = { - 'showIconBadge': options._getOptionElement(Setting.SHOW_ICON_BADGE), - 'blockMissing': options._getOptionElement(Setting.BLOCK_MISSING), - 'disablePrefetch': options._getOptionElement(Setting.DISABLE_PREFETCH), - 'stripMetadata': options._getOptionElement(Setting.STRIP_METADATA), - 'whitelistedDomains': options._getOptionElement(Setting.WHITELISTED_DOMAINS) + [Setting.SHOW_ICON_BADGE]: options._getOptionElement(Setting.SHOW_ICON_BADGE), + [Setting.BLOCK_MISSING]: options._getOptionElement(Setting.BLOCK_MISSING), + [Setting.DISABLE_PREFETCH]: options._getOptionElement(Setting.DISABLE_PREFETCH), + [Setting.STRIP_METADATA]: options._getOptionElement(Setting.STRIP_METADATA), + [Setting.WHITELISTED_DOMAINS]: options._getOptionElement(Setting.WHITELISTED_DOMAINS) }; return optionElements; diff --git a/pages/popup/popup.js b/pages/popup/popup.js index befa4acc7d0f6b595a095c5c00ebfbf5c5e7c249..ac7751bd7aeb01f7287f301da840f0fe4f268e6f 100644 --- a/pages/popup/popup.js +++ b/pages/popup/popup.js @@ -47,7 +47,7 @@ popup._renderNonContextualContents = function () { optionsButtonElement = document.getElementById('options-button'); versionLabelElement.innerText = popup._version; - counterElement.innerText = popup._amountInjected; + counterElement.innerText = helpers.formatNumber(popup._amountInjected); testingUtilityLinkElement.addEventListener('mouseup', popup._onTestingUtilityLinkClicked); optionsButtonElement.addEventListener('mouseup', popup._onOptionsButtonClicked); @@ -157,7 +157,7 @@ popup._determineAmountInjected = function () { return new Promise((resolve) => { - chrome.storage.local.get('amountInjected', function (items) { + chrome.storage.local.get(Setting.AMOUNT_INJECTED, function (items) { popup._amountInjected = items.amountInjected || 0; resolve();