11 Commits

Author SHA1 Message Date
Thomas Rientjes
98908a747d Bump version to 2.0.3 2018-02-21 15:22:27 -03:00
Thomas Rientjes
815a16e48b Update temporary list of tainted domains 2018-02-21 12:08:13 -03:00
Thomas Rientjes
c836e8fbbe Fix #253 by correcting initialization logic 2018-02-21 12:03:36 -03:00
Thomas Rientjes
778e2e53a9 Update temporary list of tainted domains 2018-02-19 20:12:32 -03:00
Thomas Rientjes
c614851a93 Add support for Czech 2018-02-19 18:15:46 -03:00
Thomas Rientjes
d513668b77 Update existing localizations 2018-02-19 18:12:13 -03:00
Thomas Rientjes
535d04e924 Implement cookie sanitation 2018-01-11 18:29:53 -03:00
Thomas Rientjes
3440005439 Remove unused code segment 2018-01-11 17:57:45 -03:00
Thomas Rientjes
e81ed053b9 Refactor existing codebase 2018-01-11 13:33:00 -03:00
Thomas Rientjes
c219fae3fb Improve injection count formatting 2018-01-11 12:07:50 -03:00
Thomas Rientjes
a8e340abe0 Modularize request sanitation logic 2018-01-10 19:39:26 -03:00
16 changed files with 347 additions and 223 deletions

View File

@@ -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,

View File

@@ -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."
}
}

View File

@@ -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."
}
}

View File

@@ -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."
}
}

View File

@@ -60,7 +60,7 @@
"description": "Whitelisted domains title."
},
"whitelistedDomainsDescription": {
"message": "Унесите домене да их ставите на бели списак. Више одвојених ставки са тачка-запетама (;).",
"message": "Унесите домене да их ставите на бели списак. Одвојите више ставки са тачка-запетама (;).",
"description": "Whitelisted domains description."
},
"advancedLabel": {

View File

@@ -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."
}
}

View File

@@ -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 = {

View File

@@ -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,

View File

@@ -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) {

73
core/request-sanitizer.js Normal file
View File

@@ -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();
}
});

View File

@@ -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) {
if (Setting.STRIP_METADATA in changes) {
let onBeforeSendHeaders;
onBeforeSendHeaders = chrome.webRequest.onBeforeSendHeaders;
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);

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Decentraleyes",
"version": "2.0.2",
"version": "2.0.3",
"author": "Thomas Rientjes",

View File

@@ -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) {

View File

@@ -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>

View File

@@ -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;

View File

@@ -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();