mirror of
https://github.com/Synzvato/decentraleyes.git
synced 2025-12-31 11:18:27 -05:00
Compare commits
30 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a8550f5d06 | ||
|
|
7a76451e4e | ||
|
|
433ee697ec | ||
|
|
73134b075e | ||
|
|
6b5c34efc1 | ||
|
|
b23a87a516 | ||
|
|
fa6c453fc5 | ||
|
|
57479367ee | ||
|
|
33bccd25ec | ||
|
|
3b13b60bd8 | ||
|
|
71d4a39bf3 | ||
|
|
1b77f346e4 | ||
|
|
ba330010e7 | ||
|
|
060177935e | ||
|
|
498662d538 | ||
|
|
23c343ffe6 | ||
|
|
08f9a489b8 | ||
|
|
bc6dc59a76 | ||
|
|
fe60660cd8 | ||
|
|
98908a747d | ||
|
|
815a16e48b | ||
|
|
c836e8fbbe | ||
|
|
778e2e53a9 | ||
|
|
c614851a93 | ||
|
|
d513668b77 | ||
|
|
535d04e924 | ||
|
|
3440005439 | ||
|
|
e81ed053b9 | ||
|
|
c219fae3fb | ||
|
|
a8e340abe0 |
17
.eslintrc
17
.eslintrc
@@ -4,19 +4,28 @@
|
||||
"es6": true,
|
||||
"webextensions": true
|
||||
},
|
||||
"extends": "eslint:recommended",
|
||||
"extends": [
|
||||
"eslint:recommended",
|
||||
"plugin:no-unsanitized/DOM"
|
||||
],
|
||||
"globals": {
|
||||
"Address": true,
|
||||
"fileGuard": true,
|
||||
"files": true,
|
||||
"Header": true,
|
||||
"helpers": true,
|
||||
"interceptor": true,
|
||||
"mappings": true,
|
||||
"MessageResponse": true,
|
||||
"requestAnalyzer": true,
|
||||
"requestSanitizer": true,
|
||||
"Resource": true,
|
||||
"resources": true,
|
||||
"Setting": true,
|
||||
"shorthands": true,
|
||||
"stateManager": true,
|
||||
"WebRequest": true,
|
||||
"WebRequestType": true,
|
||||
"Whitelist": true,
|
||||
"wrappers": true
|
||||
},
|
||||
@@ -25,12 +34,16 @@
|
||||
"core/constants.js",
|
||||
"core/files.js",
|
||||
"core/mappings.js",
|
||||
"core/resources.js"
|
||||
"core/resources.js",
|
||||
"core/shorthands.js"
|
||||
],
|
||||
"rules": {
|
||||
"no-unused-vars": "off"
|
||||
}
|
||||
},
|
||||
"plugins": [
|
||||
"no-unsanitized"
|
||||
],
|
||||
"rules": {
|
||||
"array-bracket-newline": "error",
|
||||
"array-bracket-spacing": "error",
|
||||
|
||||
70
_locales/cs/messages.json
Normal file
70
_locales/cs/messages.json
Normal 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."
|
||||
}
|
||||
}
|
||||
@@ -1,70 +1,70 @@
|
||||
{
|
||||
"extensionDescription":{
|
||||
"message":"Decentraleyes protektas vin kontraŭ sekvado per senkosta, centra enhavoprovizado.",
|
||||
"description":"Extension description."
|
||||
"extensionDescription": {
|
||||
"message": "Decentraleyes protektas vin kontraŭ sekvado per senkosta, centra enhavoprovizado.",
|
||||
"description": "Extension description."
|
||||
},
|
||||
"disableProtectionTitle":{
|
||||
"message":"Malaktivigi protekton por tiu ĉi retejo",
|
||||
"description":"Disable protection title."
|
||||
"disableProtectionTitle": {
|
||||
"message": "Malaktivigi protekton por tiu ĉi retejo",
|
||||
"description": "Disable protection title."
|
||||
},
|
||||
"enableProtectionTitle":{
|
||||
"message":"Aktivigi protekton",
|
||||
"description":"Enable protection title."
|
||||
"enableProtectionTitle": {
|
||||
"message": "Aktivigi protekton",
|
||||
"description": "Enable protection title."
|
||||
},
|
||||
"amountInjectedTitle":{
|
||||
"message":"Nombrilo de loke enmetiaj risurcoj",
|
||||
"description":"Amount injected title."
|
||||
"amountInjectedTitle": {
|
||||
"message": "Nombrilo de loke enmetiaj risurcoj",
|
||||
"description": "Amount injected title."
|
||||
},
|
||||
"amountInjectedDescription":{
|
||||
"message":"Kvanto de lokaj CDN-risurcoj enmetitaj ekde instaliĝo.",
|
||||
"description":"Amount injected description."
|
||||
"amountInjectedDescription": {
|
||||
"message": "Kvanto de lokaj CDN-risurcoj enmetitaj ekde instaliĝo.",
|
||||
"description": "Amount injected description."
|
||||
},
|
||||
"optionsTitle":{
|
||||
"message":"Elektebloj",
|
||||
"description":"Options title."
|
||||
"optionsTitle": {
|
||||
"message": "Elektebloj",
|
||||
"description": "Options title."
|
||||
},
|
||||
"showIconBadgeTitle":{
|
||||
"message":"Display injection counts on icon",
|
||||
"description":"Show icon badge title."
|
||||
"showIconBadgeTitle": {
|
||||
"message": "Montri nombrilon sur piktogramo",
|
||||
"description": "Show icon badge title."
|
||||
},
|
||||
"showIconBadgeDescription":{
|
||||
"message":"Show the number of injected resources on the extension icon.",
|
||||
"description":"Show icon badge description."
|
||||
"showIconBadgeDescription": {
|
||||
"message": "Montri nombron da enmetataj risurcoj sur la aldonaĵa piktogramo.",
|
||||
"description": "Show icon badge description."
|
||||
},
|
||||
"blockMissingTitle":{
|
||||
"message":"Bloki petojn por mankaj risurcoj",
|
||||
"description":"Block requests for missing resources title."
|
||||
"blockMissingTitle": {
|
||||
"message": "Bloki petojn por mankaj risurcoj",
|
||||
"description": "Block requests for missing resources title."
|
||||
},
|
||||
"blockMissingDescription":{
|
||||
"message":"Bloki petojn interkaptitajn se la petitan risurcon ne loke haveblas.",
|
||||
"description":"Block requests for missing resources description."
|
||||
"blockMissingDescription": {
|
||||
"message": "Bloki petojn interkaptitajn se la petitan risurcon ne loke haveblas.",
|
||||
"description": "Block requests for missing resources description."
|
||||
},
|
||||
"disablePrefetchTitle":{
|
||||
"message":"Disable link prefetching",
|
||||
"description":"Disable prefetch title."
|
||||
"disablePrefetchTitle": {
|
||||
"message": "Ne antaŭlegi ligilojn",
|
||||
"description": "Disable prefetch title."
|
||||
},
|
||||
"disablePrefetchDescription":{
|
||||
"message":"Prevent disallowed requests from leaking out to delivery networks.",
|
||||
"description":"Disable prefetch description."
|
||||
"disablePrefetchDescription": {
|
||||
"message": "Bloki malpermesatajn petojn por preventi tralasojn al enhav-proviz-retoj.",
|
||||
"description": "Disable prefetch description."
|
||||
},
|
||||
"stripMetadataTitle":{
|
||||
"message":"Strip metadata from allowed requests",
|
||||
"description":"Strip metadata title."
|
||||
"stripMetadataTitle": {
|
||||
"message": "Forigi metadatumojn el permesataj petoj",
|
||||
"description": "Strip metadata title."
|
||||
},
|
||||
"stripMetadataDescription":{
|
||||
"message":"Erase sensitive data from allowed CDN requests for improved privacy.",
|
||||
"description":"Strip metadata description."
|
||||
"stripMetadataDescription": {
|
||||
"message": "Forviŝi delikatajn datumojn el permesataj CDN-petoj por plibonigi privatecon.",
|
||||
"description": "Strip metadata description."
|
||||
},
|
||||
"whitelistedDomainsTitle":{
|
||||
"message":"Neinspektendaj domajnoj",
|
||||
"description":"Whitelisted domains title."
|
||||
"whitelistedDomainsTitle": {
|
||||
"message": "Neinspektendaj domajnoj",
|
||||
"description": "Whitelisted domains title."
|
||||
},
|
||||
"whitelistedDomainsDescription":{
|
||||
"message":"Entajpu demajnojn, kiujn Decentraleyes ne devas inspekti. Disigu domajnojn per punktokomoj (;).",
|
||||
"description":"Whitelisted domains description."
|
||||
"whitelistedDomainsDescription": {
|
||||
"message": "Entajpu demajnojn, kiujn Decentraleyes ne devas inspekti. Disigu domajnojn per punktokomoj (;).",
|
||||
"description": "Whitelisted domains description."
|
||||
},
|
||||
"advancedLabel":{
|
||||
"message":"Spertula",
|
||||
"description":"Advanced label."
|
||||
"advancedLabel": {
|
||||
"message": "Spertula",
|
||||
"description": "Advanced label."
|
||||
}
|
||||
}
|
||||
@@ -1,70 +1,70 @@
|
||||
{
|
||||
"extensionDescription":{
|
||||
"message":"Protège du pistage lié aux diffuseurs de contenus \"gratuits\", centralisés.",
|
||||
"description":"Extension description."
|
||||
"extensionDescription": {
|
||||
"message": "Protège du pistage lié aux diffuseurs de contenus \"gratuits\", centralisés.",
|
||||
"description": "Extension description."
|
||||
},
|
||||
"disableProtectionTitle":{
|
||||
"message":"Désactiver la protection pour ce site",
|
||||
"description":"Disable protection title."
|
||||
"disableProtectionTitle": {
|
||||
"message": "Désactiver la protection pour ce site",
|
||||
"description": "Disable protection title."
|
||||
},
|
||||
"enableProtectionTitle":{
|
||||
"message":"Activer la protection",
|
||||
"description":"Enable protection title."
|
||||
"enableProtectionTitle": {
|
||||
"message": "Activer la protection",
|
||||
"description": "Enable protection title."
|
||||
},
|
||||
"amountInjectedTitle":{
|
||||
"message":"Compteur de ressources injectées localement",
|
||||
"description":"Amount injected title."
|
||||
"amountInjectedTitle": {
|
||||
"message": "Compteur de ressources injectées localement",
|
||||
"description": "Amount injected title."
|
||||
},
|
||||
"amountInjectedDescription":{
|
||||
"message":"Quantité de ressource CDN injectées localement depuis l'installation.",
|
||||
"description":"Amount injected description."
|
||||
"amountInjectedDescription": {
|
||||
"message": "Quantité de ressources CDN injectées localement depuis l'installation.",
|
||||
"description": "Amount injected description."
|
||||
},
|
||||
"optionsTitle":{
|
||||
"message":"Options",
|
||||
"description":"Options title."
|
||||
"optionsTitle": {
|
||||
"message": "Options",
|
||||
"description": "Options title."
|
||||
},
|
||||
"showIconBadgeTitle":{
|
||||
"message":"Affichage du nombre d'injections sur l'icône",
|
||||
"description":"Show icon badge title."
|
||||
"showIconBadgeTitle": {
|
||||
"message": "Afficher le nombre d’injections sur l’icône",
|
||||
"description": "Show icon badge title."
|
||||
},
|
||||
"showIconBadgeDescription":{
|
||||
"message":"Affiche le nombre de ressources injectées sur l'icône d'extension.",
|
||||
"description":"Show icon badge description."
|
||||
"showIconBadgeDescription": {
|
||||
"message": "Affiche le nombre de ressources injectées sur l'icône d'extension.",
|
||||
"description": "Show icon badge description."
|
||||
},
|
||||
"blockMissingTitle":{
|
||||
"message":"Bloquer les requêtes de ressources manquantes",
|
||||
"description":"Block requests for missing resources title."
|
||||
"blockMissingTitle": {
|
||||
"message": "Bloquer les requêtes de ressources manquantes",
|
||||
"description": "Block requests for missing resources title."
|
||||
},
|
||||
"blockMissingDescription":{
|
||||
"message":"Annule la requête interceptée si la ressource requise n'est pas disponible localement.",
|
||||
"description":"Block requests for missing resources description."
|
||||
"blockMissingDescription": {
|
||||
"message": "Annule la requête interceptée si la ressource requise n'est pas disponible localement.",
|
||||
"description": "Block requests for missing resources description."
|
||||
},
|
||||
"disablePrefetchTitle":{
|
||||
"message":"Désactiver le préchargement de lien",
|
||||
"description":"Disable prefetch title."
|
||||
"disablePrefetchTitle": {
|
||||
"message": "Désactiver le préchargement de lien",
|
||||
"description": "Disable prefetch title."
|
||||
},
|
||||
"disablePrefetchDescription":{
|
||||
"message":"Empêcher que des requêtes non autorisées fuit du réseaux de distribution.",
|
||||
"description":"Disable prefetch description."
|
||||
"disablePrefetchDescription": {
|
||||
"message": "Empêche que des requêtes non autorisées fuient vers les réseaux de distribution.",
|
||||
"description": "Disable prefetch description."
|
||||
},
|
||||
"stripMetadataTitle":{
|
||||
"message":"Découper les métadonnées des requêtes autorisées",
|
||||
"description":"Strip metadata title."
|
||||
"stripMetadataTitle": {
|
||||
"message": "Découper les métadonnées des requêtes autorisées",
|
||||
"description": "Strip metadata title."
|
||||
},
|
||||
"stripMetadataDescription":{
|
||||
"message":"Efface les données sensibles des demandes de CDN autorisées pour améliorer la confidentialité.",
|
||||
"description":"Strip metadata description."
|
||||
"stripMetadataDescription": {
|
||||
"message": "Efface les données sensibles des demandes de CDN autorisées pour améliorer la confidentialité.",
|
||||
"description": "Strip metadata description."
|
||||
},
|
||||
"whitelistedDomainsTitle":{
|
||||
"message":"Exclure les domaines des inspections",
|
||||
"description":"Whitelisted domains title."
|
||||
"whitelistedDomainsTitle": {
|
||||
"message": "Exclure les domaines des inspections",
|
||||
"description": "Whitelisted domains title."
|
||||
},
|
||||
"whitelistedDomainsDescription":{
|
||||
"message":"Entrez des domaines pour la liste blanche. Séparez les entrées multiples par des points-virgules (;).",
|
||||
"description":"Whitelisted domains description."
|
||||
"whitelistedDomainsDescription": {
|
||||
"message": "Entrez des domaines pour la liste blanche. Séparez les entrées multiples par des points-virgules (;).",
|
||||
"description": "Whitelisted domains description."
|
||||
},
|
||||
"advancedLabel":{
|
||||
"message":"Avancé",
|
||||
"description":"Advanced label."
|
||||
"advancedLabel": {
|
||||
"message": "Avancé",
|
||||
"description": "Advanced label."
|
||||
}
|
||||
}
|
||||
@@ -1,70 +1,70 @@
|
||||
{
|
||||
"extensionDescription":{
|
||||
"message":"Verndar þig gegn eftirliti frá \"ókeypis\" miðlægum efnisveitum.",
|
||||
"description":"Extension description."
|
||||
"extensionDescription": {
|
||||
"message": "Verndar þig gegn eftirliti frá \"ókeypis\" miðlægum efnisveitum.",
|
||||
"description": "Extension description."
|
||||
},
|
||||
"disableProtectionTitle":{
|
||||
"message":"Slökkva á vörn fyrir þetta vefsvæði",
|
||||
"description":"Disable protection title."
|
||||
"disableProtectionTitle": {
|
||||
"message": "Slökkva á vörn fyrir þetta vefsvæði",
|
||||
"description": "Disable protection title."
|
||||
},
|
||||
"enableProtectionTitle":{
|
||||
"message":"Virkja vernd",
|
||||
"description":"Enable protection title."
|
||||
"enableProtectionTitle": {
|
||||
"message": "Virkja vernd",
|
||||
"description": "Enable protection title."
|
||||
},
|
||||
"amountInjectedTitle":{
|
||||
"message":"Fjöldi staðvært inspýttra tilfanga",
|
||||
"description":"Amount injected title."
|
||||
"amountInjectedTitle": {
|
||||
"message": "Fjöldi staðvært inspýttra tilfanga",
|
||||
"description": "Amount injected title."
|
||||
},
|
||||
"amountInjectedDescription":{
|
||||
"message":"Fjöldi tilfanga frá miðlægum efnisveitum sem skipt hefur verið út síðan viðbótin var sett upp.",
|
||||
"description":"Amount injected description."
|
||||
"amountInjectedDescription": {
|
||||
"message": "Fjöldi tilfanga frá miðlægum efnisveitum sem skipt hefur verið út síðan viðbótin var sett upp.",
|
||||
"description": "Amount injected description."
|
||||
},
|
||||
"optionsTitle":{
|
||||
"message":"Valkostir",
|
||||
"description":"Options title."
|
||||
"optionsTitle": {
|
||||
"message": "Valkostir",
|
||||
"description": "Options title."
|
||||
},
|
||||
"showIconBadgeTitle":{
|
||||
"message":"Birta fjölda innspýtinga á táknmynd",
|
||||
"description":"Show icon badge title."
|
||||
"showIconBadgeTitle": {
|
||||
"message": "Birta fjölda innspýtinga á táknmynd",
|
||||
"description": "Show icon badge title."
|
||||
},
|
||||
"showIconBadgeDescription":{
|
||||
"message":"Sýnir merki fyrir fjölda innspýttra tilfanga á táknmynd viðbótarinnar.",
|
||||
"description":"Show icon badge description."
|
||||
"showIconBadgeDescription": {
|
||||
"message": "Sýnir merki fyrir fjölda innspýttra tilfanga á táknmynd viðbótarinnar.",
|
||||
"description": "Show icon badge description."
|
||||
},
|
||||
"blockMissingTitle":{
|
||||
"message":"Loka á beiðnir vegna tilfanga sem vantar",
|
||||
"description":"Block requests for missing resources title."
|
||||
"blockMissingTitle": {
|
||||
"message": "Loka á beiðnir vegna tilfanga sem vantar",
|
||||
"description": "Block requests for missing resources title."
|
||||
},
|
||||
"blockMissingDescription":{
|
||||
"message":"Hætta við veiddar beiðnir ef umbeðið tilfang er ekki til staðar á tölvunni.",
|
||||
"description":"Block requests for missing resources description."
|
||||
"blockMissingDescription": {
|
||||
"message": "Hætta við veiddar beiðnir ef umbeðið tilfang er ekki til staðar á tölvunni.",
|
||||
"description": "Block requests for missing resources description."
|
||||
},
|
||||
"disablePrefetchTitle":{
|
||||
"message":"Gera forsöfnun tengla óvirka",
|
||||
"description":"Disable prefetch title."
|
||||
"disablePrefetchTitle": {
|
||||
"message": "Gera forsöfnun tengla óvirka",
|
||||
"description": "Disable prefetch title."
|
||||
},
|
||||
"disablePrefetchDescription":{
|
||||
"message":"Kemur í veg fyrir að bannaðar beiðnir leki út til afhendingarveitna.",
|
||||
"description":"Disable prefetch description."
|
||||
"disablePrefetchDescription": {
|
||||
"message": "Kemur í veg fyrir að bannaðar beiðnir leki út til afhendingarveitna.",
|
||||
"description": "Disable prefetch description."
|
||||
},
|
||||
"stripMetadataTitle":{
|
||||
"message":"Hreinsa lýsigögn úr leyfðum beiðnum",
|
||||
"description":"Strip metadata title."
|
||||
"stripMetadataTitle": {
|
||||
"message": "Hreinsa lýsigögn úr leyfðum beiðnum",
|
||||
"description": "Strip metadata title."
|
||||
},
|
||||
"stripMetadataDescription":{
|
||||
"message":"Þurrka viðkvæm gögn út úr leyfðum beiðnum til efnisveitna til að auka gagnaleynd.",
|
||||
"description":"Strip metadata description."
|
||||
"stripMetadataDescription": {
|
||||
"message": "Þurrka viðkvæm gögn út úr leyfðum beiðnum til efnisveitna til að auka gagnaleynd.",
|
||||
"description": "Strip metadata description."
|
||||
},
|
||||
"whitelistedDomainsTitle":{
|
||||
"message":"Undanskilja lén frá athugun",
|
||||
"description":"Whitelisted domains title."
|
||||
"whitelistedDomainsTitle": {
|
||||
"message": "Undanskilja lén frá athugun",
|
||||
"description": "Whitelisted domains title."
|
||||
},
|
||||
"whitelistedDomainsDescription":{
|
||||
"message":"Settu inn lén til að skrá þau á lista yfir leyfð lén. Aðgreindu færslur með semíkommum (;).",
|
||||
"description":"Whitelisted domains description."
|
||||
"whitelistedDomainsDescription": {
|
||||
"message": "Settu inn lén til að skrá þau á lista yfir leyfð lén. Aðgreindu færslur með semíkommum (;).",
|
||||
"description": "Whitelisted domains description."
|
||||
},
|
||||
"advancedLabel":{
|
||||
"message":"Ítarlegt",
|
||||
"description":"Advanced label."
|
||||
"advancedLabel": {
|
||||
"message": "Ítarlegt",
|
||||
"description": "Advanced label."
|
||||
}
|
||||
}
|
||||
70
_locales/lb/messages.json
Normal file
70
_locales/lb/messages.json
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"extensionDescription": {
|
||||
"message": "Schützt virun Tracking duerch \"gratis\" Content Delivery Networks.",
|
||||
"description": "Extension description."
|
||||
},
|
||||
"disableProtectionTitle": {
|
||||
"message": "Schutz fir dëse Site ausschalten",
|
||||
"description": "Disable protection title."
|
||||
},
|
||||
"enableProtectionTitle": {
|
||||
"message": "Schutz aktivéieren",
|
||||
"description": "Enable protection title."
|
||||
},
|
||||
"amountInjectedTitle": {
|
||||
"message": "Zieler fir lokal injizéierte Ressourcen",
|
||||
"description": "Amount injected title."
|
||||
},
|
||||
"amountInjectedDescription": {
|
||||
"message": "Unzuel vu lokalen Injektiounen vun CDN-Ressourcen säit der Installatioun.",
|
||||
"description": "Amount injected description."
|
||||
},
|
||||
"optionsTitle": {
|
||||
"message": "Astellungen",
|
||||
"description": "Options title."
|
||||
},
|
||||
"showIconBadgeTitle": {
|
||||
"message": "Unzuel vun Injektiounen op der Ikon uweisen",
|
||||
"description": "Show icon badge title."
|
||||
},
|
||||
"showIconBadgeDescription": {
|
||||
"message": "D'Unzuel vun injizéierte Ressourcen op der Decentraleyes-Ikon uweisen.",
|
||||
"description": "Show icon badge description."
|
||||
},
|
||||
"blockMissingTitle": {
|
||||
"message": "Eroflueden vu fehlenden Ressourcen blockéieren",
|
||||
"description": "Block requests for missing resources title."
|
||||
},
|
||||
"blockMissingDescription": {
|
||||
"message": "Ofgefaangen Ressourcen-Downloads blockéieren, wann déi ugefuerdert Datei net lokal um System verfügbar ass.",
|
||||
"description": "Block requests for missing resources description."
|
||||
},
|
||||
"disablePrefetchTitle": {
|
||||
"message": "\"Link Prefetching\" ausschalten",
|
||||
"description": "Disable prefetch title."
|
||||
},
|
||||
"disablePrefetchDescription": {
|
||||
"message": "Verhënnert, dass onerlaabten Ressourcen entgéint den aneren Astellungen trotzdeem ugefuerdert\/erofgeluede ginn.",
|
||||
"description": "Disable prefetch description."
|
||||
},
|
||||
"stripMetadataTitle": {
|
||||
"message": "Metadaten aus den erlaabten Downloads erausläschen",
|
||||
"description": "Strip metadata title."
|
||||
},
|
||||
"stripMetadataDescription": {
|
||||
"message": "Läscht sensibel Daten aus den erlaabten CDN-Downloads fir den Dateschutz ze verbesseren.",
|
||||
"description": "Strip metadata description."
|
||||
},
|
||||
"whitelistedDomainsTitle": {
|
||||
"message": "Downloads fir dës Siten ëmmer erlaaben (Whitelist)",
|
||||
"description": "Whitelisted domains title."
|
||||
},
|
||||
"whitelistedDomainsDescription": {
|
||||
"message": "Gitt hei d'Domains un, deenen hir Downloads ëmmer sollen erlaabt ginn. Trennt déi eenzel Domains duerch e Semikolon (;).",
|
||||
"description": "Whitelisted domains description."
|
||||
},
|
||||
"advancedLabel": {
|
||||
"message": "Erweidert",
|
||||
"description": "Advanced label."
|
||||
}
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
}
|
||||
@@ -60,7 +60,7 @@
|
||||
"description": "Whitelisted domains title."
|
||||
},
|
||||
"whitelistedDomainsDescription": {
|
||||
"message": "Унесите домене да их ставите на бели списак. Више одвојених ставки са тачка-запетама (;).",
|
||||
"message": "Унесите домене да их ставите на бели списак. Одвојите више ставки са тачка-запетама (;).",
|
||||
"description": "Whitelisted domains description."
|
||||
},
|
||||
"advancedLabel": {
|
||||
|
||||
70
_locales/tl/messages.json
Normal file
70
_locales/tl/messages.json
Normal file
@@ -0,0 +1,70 @@
|
||||
{
|
||||
"extensionDescription": {
|
||||
"message": "Para protektahan ka laban sa pagsubaybay sa pamamagitan ng \"libre\", sentralisadong, paghahatid ng nilalaman.",
|
||||
"description": "Extension description."
|
||||
},
|
||||
"disableProtectionTitle": {
|
||||
"message": "Huwag paganahin ang proteksyon para sa sayt na ito",
|
||||
"description": "Disable protection title."
|
||||
},
|
||||
"enableProtectionTitle": {
|
||||
"message": "Paganahin ang proteksyon",
|
||||
"description": "Enable protection title."
|
||||
},
|
||||
"amountInjectedTitle": {
|
||||
"message": "Laban para sa mga lokal na iniksiyong mga mapagkukunan",
|
||||
"description": "Amount injected title."
|
||||
},
|
||||
"amountInjectedDescription": {
|
||||
"message": "Ang halaga ng mga lokal na Nilalaman sa Network ng Paghahatid ng pinagmulan sa pag-install mula noong pag-install.",
|
||||
"description": "Amount injected description."
|
||||
},
|
||||
"optionsTitle": {
|
||||
"message": "Ang mga pagpipilian",
|
||||
"description": "Options title."
|
||||
},
|
||||
"showIconBadgeTitle": {
|
||||
"message": "Ang naka-displey na ineksyon ay mabibilang sa imahe",
|
||||
"description": "Show icon badge title."
|
||||
},
|
||||
"showIconBadgeDescription": {
|
||||
"message": "Ipakita ang bilang ng mga injected na pinagmulan sa ekstensyon nang imahe.",
|
||||
"description": "Show icon badge description."
|
||||
},
|
||||
"blockMissingTitle": {
|
||||
"message": "Harangan ang mga kahilingan para sa mga nawawalang mapagkukunan",
|
||||
"description": "Block requests for missing resources title."
|
||||
},
|
||||
"blockMissingDescription": {
|
||||
"message": "Kanselahin ang kahilingan na intercepted kung ang mga kinakailangang mapagkukunan ay hindi available sa lokal.",
|
||||
"description": "Block requests for missing resources description."
|
||||
},
|
||||
"disablePrefetchTitle": {
|
||||
"message": "Huwag paganahin ang prefetching link",
|
||||
"description": "Disable prefetch title."
|
||||
},
|
||||
"disablePrefetchDescription": {
|
||||
"message": "Pigilan ang mga kahilingan na hindi pinayagan mula sa pagkalat sa paghahatid ng mga network.",
|
||||
"description": "Disable prefetch description."
|
||||
},
|
||||
"stripMetadataTitle": {
|
||||
"message": "Iliston ang metadata mula sa mga pinayagan na kahilingan",
|
||||
"description": "Strip metadata title."
|
||||
},
|
||||
"stripMetadataDescription": {
|
||||
"message": "Burahin ang sensitibong datus mula sa mga pinahihintulutang kahilingan ng CDN para sa pinahusay na pagiging pribado nito.",
|
||||
"description": "Strip metadata description."
|
||||
},
|
||||
"whitelistedDomainsTitle": {
|
||||
"message": "Ibukod ang mga domain mula sa mga iinspeksyon",
|
||||
"description": "Whitelisted domains title."
|
||||
},
|
||||
"whitelistedDomainsDescription": {
|
||||
"message": "Ipasok ang mga domain upang i-whitelist sila. Paghiwalayin ang maramihang mga entry na may tuldok kuwit (;).",
|
||||
"description": "Whitelisted domains description."
|
||||
},
|
||||
"advancedLabel": {
|
||||
"message": "Naka-usad",
|
||||
"description": "Advanced label."
|
||||
}
|
||||
}
|
||||
@@ -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."
|
||||
}
|
||||
}
|
||||
@@ -21,12 +21,24 @@ const Address = {
|
||||
'ANY': '*://*/*',
|
||||
'ANY_PATH': '/*',
|
||||
'ANY_PROTOCOL': '*://',
|
||||
'CHROME_EXTENSION': 'chrome-extension:',
|
||||
'EXAMPLE': 'example.org',
|
||||
'HTTP': 'http:',
|
||||
'HTTPS': 'https:',
|
||||
'WWW_PREFIX': 'www.'
|
||||
};
|
||||
|
||||
const Header = {
|
||||
'COOKIE': 'Cookie',
|
||||
'ORIGIN': 'Origin',
|
||||
'REFERER': 'Referer'
|
||||
};
|
||||
|
||||
const MessageResponse = {
|
||||
'ASYNCHRONOUS': true,
|
||||
'SYNCHRONOUS': false
|
||||
};
|
||||
|
||||
const Resource = {
|
||||
'MAPPING_EXPRESSION': /\.map$/i,
|
||||
'VERSION_EXPRESSION': /(?:\d{1,2}\.){1,3}\d{1,2}/,
|
||||
@@ -38,16 +50,20 @@ const Setting = {
|
||||
'BLOCK_MISSING': 'blockMissing',
|
||||
'DISABLE_PREFETCH': 'disablePrefetch',
|
||||
'SHOW_ICON_BADGE': 'showIconBadge',
|
||||
'SHOW_RELEASE_NOTES': 'showReleaseNotes',
|
||||
'STRIP_METADATA': 'stripMetadata',
|
||||
'WHITELISTED_DOMAINS': 'whitelistedDomains'
|
||||
'WHITELISTED_DOMAINS': 'whitelistedDomains',
|
||||
'XHR_TEST_DOMAIN': 'xhrTestDomain'
|
||||
};
|
||||
|
||||
const WebRequest = {
|
||||
'GET': 'GET',
|
||||
'BLOCKING': 'blocking',
|
||||
'HEADERS': 'requestHeaders',
|
||||
'ORIGIN_HEADER': 'Origin',
|
||||
'REFERER_HEADER': 'Referer'
|
||||
'HEADERS': 'requestHeaders'
|
||||
};
|
||||
|
||||
const WebRequestType = {
|
||||
'XHR': 'xmlhttprequest'
|
||||
};
|
||||
|
||||
const Whitelist = {
|
||||
|
||||
58
core/file-guard.js
Normal file
58
core/file-guard.js
Normal file
@@ -0,0 +1,58 @@
|
||||
/**
|
||||
* File Guard
|
||||
* Belongs to Decentraleyes.
|
||||
*
|
||||
* @see https://github.com/Synzvato/decentraleyes/pull/258
|
||||
*
|
||||
* @author Thomas Rientjes
|
||||
* @since 2018-05-17
|
||||
* @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';
|
||||
|
||||
/**
|
||||
* File Guard
|
||||
*/
|
||||
|
||||
var fileGuard = {};
|
||||
|
||||
/**
|
||||
* Private Methods
|
||||
*/
|
||||
|
||||
fileGuard._startListening = function () {
|
||||
|
||||
let randomHexString = helpers.generateRandomHexString(24);
|
||||
fileGuard.secret = `?_=${randomHexString}`;
|
||||
|
||||
chrome.webRequest.onBeforeRequest.addListener(
|
||||
fileGuard._verifyRequest,
|
||||
{'urls': [`${fileGuard.path}/*`]},
|
||||
[WebRequest.BLOCKING]
|
||||
);
|
||||
};
|
||||
|
||||
fileGuard._verifyRequest = function (requestDetails) {
|
||||
|
||||
let redirectUrl = chrome.runtime.getURL('/');
|
||||
|
||||
if (!requestDetails.url.endsWith(fileGuard.secret)) {
|
||||
return {redirectUrl};
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Initializations
|
||||
*/
|
||||
|
||||
fileGuard.path = chrome.runtime.getURL('/resources');
|
||||
fileGuard.secret = '';
|
||||
|
||||
if (fileGuard.path.startsWith(Address.CHROME_EXTENSION)) {
|
||||
fileGuard._startListening();
|
||||
}
|
||||
@@ -42,19 +42,41 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
|
||||
tabDomain = Address.EXAMPLE;
|
||||
}
|
||||
|
||||
if (requestDetails.type === WebRequestType.XHR) {
|
||||
|
||||
if (tabDomain !== interceptor.xhrTestDomain) {
|
||||
return interceptor._handleMissingCandidate(requestDetails.url);
|
||||
}
|
||||
}
|
||||
|
||||
// Temporary list of undetectable tainted domains.
|
||||
let undetectableTaintedDomains = {
|
||||
'10fastfingers.com': true,
|
||||
'blog.datawrapper.de': true,
|
||||
'bundleofholding.com': true,
|
||||
'cdnjs.com': true,
|
||||
'dropbox.com': true,
|
||||
'evoice.com': true,
|
||||
'freebusy.io': true,
|
||||
'gazetadopovo.com.br': true,
|
||||
'glowing-bear.org': true,
|
||||
'manualslib.com': true,
|
||||
'meslieux.paris.fr': true,
|
||||
'mgm.gov.tr': true,
|
||||
'minigames.mail.ru': true,
|
||||
'miniquadtestbench.com': true,
|
||||
'nhm.ac.uk': true,
|
||||
'openweathermap.org': true,
|
||||
'poedb.tw': true,
|
||||
'qwertee.com': true,
|
||||
'regentgreymouth.co.nz': true,
|
||||
'report-uri.io': true,
|
||||
'scan.nextcloud.com': true,
|
||||
'scotthelme.co.uk': true,
|
||||
'securityheaders.com': true,
|
||||
'securityheaders.io': true,
|
||||
'stefansundin.github.io': true,
|
||||
'transcend-info.com': true,
|
||||
'udacity.com': true,
|
||||
'yadi.sk': true,
|
||||
'yourvotematters.co.uk': true
|
||||
@@ -83,7 +105,7 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
|
||||
};
|
||||
|
||||
return {
|
||||
'redirectUrl': chrome.extension.getURL(targetPath)
|
||||
'redirectUrl': chrome.extension.getURL(targetPath + fileGuard.secret)
|
||||
};
|
||||
};
|
||||
|
||||
@@ -121,6 +143,10 @@ interceptor._handleMissingCandidate = function (requestUrl) {
|
||||
|
||||
interceptor._handleStorageChanged = function (changes) {
|
||||
|
||||
if (Setting.XHR_TEST_DOMAIN in changes) {
|
||||
interceptor.xhrTestDomain = changes.xhrTestDomain.newValue;
|
||||
}
|
||||
|
||||
if (Setting.BLOCK_MISSING in changes) {
|
||||
interceptor.blockMissing = changes.blockMissing.newValue;
|
||||
}
|
||||
@@ -131,11 +157,19 @@ interceptor._handleStorageChanged = function (changes) {
|
||||
*/
|
||||
|
||||
interceptor.amountInjected = 0;
|
||||
interceptor.xhrTestDomain = 'decentraleyes.org';
|
||||
interceptor.blockMissing = false;
|
||||
|
||||
chrome.storage.local.get([Setting.AMOUNT_INJECTED, Setting.BLOCK_MISSING], function (items) {
|
||||
interceptor.relatedSettings = [];
|
||||
|
||||
interceptor.relatedSettings.push(Setting.AMOUNT_INJECTED);
|
||||
interceptor.relatedSettings.push(Setting.XHR_TEST_DOMAIN);
|
||||
interceptor.relatedSettings.push(Setting.BLOCK_MISSING);
|
||||
|
||||
chrome.storage.local.get(interceptor.relatedSettings, function (items) {
|
||||
|
||||
interceptor.amountInjected = items.amountInjected || 0;
|
||||
interceptor.xhrTestDomain = items.xhrTestDomain || 'decentraleyes.org';
|
||||
interceptor.blockMissing = items.blockMissing || false;
|
||||
});
|
||||
|
||||
|
||||
13
core/main.js
13
core/main.js
@@ -26,11 +26,12 @@ var main = {};
|
||||
main._initializeOptions = function () {
|
||||
|
||||
let optionDefaults = {
|
||||
'showIconBadge': true,
|
||||
'blockMissing': false,
|
||||
'disablePrefetch': true,
|
||||
'stripMetadata': true,
|
||||
'whitelistedDomains': {}
|
||||
[Setting.XHR_TEST_DOMAIN]: 'decentraleyes.org',
|
||||
[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 +69,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) {
|
||||
|
||||
@@ -35,7 +35,7 @@ var mappings = {
|
||||
'swfobject/{version}/swfobject.': resources.swfobject,
|
||||
'webfont/{version}/webfont.': resources.webfont,
|
||||
|
||||
// Common Shorthand Notations [Deprecated]
|
||||
// Basic Shorthand Notations [Deprecated]
|
||||
'dojo/1/dojo/dojo.': {
|
||||
'path': 'resources/dojo/1.6.1/dojo/dojo.js.dec',
|
||||
'type': 'application/javascript'
|
||||
@@ -116,7 +116,7 @@ var mappings = {
|
||||
'ui/{version}/jquery-ui.js': resources.jQueryUI,
|
||||
'ui/{version}/jquery-ui.min.js': resources.jQueryUI,
|
||||
|
||||
// Common Shorthand Notations [Deprecated]
|
||||
// Basic Shorthand Notations [Deprecated]
|
||||
'jquery-latest.': {
|
||||
'path': 'resources/jquery/1.11.1/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
@@ -124,46 +124,6 @@ var mappings = {
|
||||
'jquery.': {
|
||||
'path': 'resources/jquery/1.11.1/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.3.min.js': {
|
||||
'path': 'resources/jquery/1.3.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.3.js': {
|
||||
'path': 'resources/jquery/1.3.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.4.min.js': {
|
||||
'path': 'resources/jquery/1.4.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.4.js': {
|
||||
'path': 'resources/jquery/1.4.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.5.min.js': {
|
||||
'path': 'resources/jquery/1.5.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.5.js': {
|
||||
'path': 'resources/jquery/1.5.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.6.min.js': {
|
||||
'path': 'resources/jquery/1.6.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.6.js': {
|
||||
'path': 'resources/jquery/1.6.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.7.min.js': {
|
||||
'path': 'resources/jquery/1.7.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
},
|
||||
'jquery-1.7.js': {
|
||||
'path': 'resources/jquery/1.7.0/jquery.min.js.dec',
|
||||
'type': 'application/javascript'
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -277,3 +237,11 @@ var mappings = {
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Geekzu Public Service [Mirror]
|
||||
mappings['sdn.geekzu.org'] = {
|
||||
'/ajax/ajax/libs/': mappings['ajax.googleapis.com']['/ajax/libs/']
|
||||
};
|
||||
|
||||
// USTC Linux User Group [Mirror]
|
||||
mappings['ajax.proxy.ustclug.org'] = mappings['ajax.googleapis.com'];
|
||||
|
||||
70
core/messenger.js
Normal file
70
core/messenger.js
Normal file
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
* Messenger
|
||||
* Belongs to Decentraleyes.
|
||||
*
|
||||
* @author Thomas Rientjes
|
||||
* @since 2018-05-28
|
||||
* @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';
|
||||
|
||||
/**
|
||||
* Messenger
|
||||
*/
|
||||
|
||||
var messenger = {};
|
||||
|
||||
/**
|
||||
* Private Methods
|
||||
*/
|
||||
|
||||
messenger._handleMessageReceived = function (message, sender, sendResponse) {
|
||||
|
||||
let topic, value;
|
||||
|
||||
topic = message.topic;
|
||||
value = message.value;
|
||||
|
||||
if (topic === 'tab:fetch-injections') {
|
||||
|
||||
sendResponse({'value': stateManager.tabs[value].injections});
|
||||
return MessageResponse.SYNCHRONOUS;
|
||||
}
|
||||
|
||||
if (topic === 'domain:fetch-is-whitelisted') {
|
||||
|
||||
let whitelistRecord = requestAnalyzer.whitelistedDomains[value];
|
||||
sendResponse({'value': Boolean(whitelistRecord)});
|
||||
|
||||
return MessageResponse.SYNCHRONOUS;
|
||||
}
|
||||
|
||||
if (topic === 'whitelist:add-domain') {
|
||||
|
||||
stateManager.addDomainToWhitelist(value).then(function () {
|
||||
sendResponse({'value': true});
|
||||
});
|
||||
|
||||
return MessageResponse.ASYNCHRONOUS;
|
||||
}
|
||||
|
||||
if (topic === 'whitelist:remove-domain') {
|
||||
|
||||
stateManager.removeDomainFromWhitelist(value).then(function () {
|
||||
sendResponse({'value': true});
|
||||
});
|
||||
|
||||
return MessageResponse.ASYNCHRONOUS;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Event Handlers
|
||||
*/
|
||||
|
||||
chrome.runtime.onMessage.addListener(messenger._handleMessageReceived);
|
||||
@@ -100,12 +100,23 @@ requestAnalyzer._findLocalTarget = function (resourceMappings, basePath, channel
|
||||
|
||||
if (resourcePattern.startsWith(resourceMold)) {
|
||||
|
||||
let targetPath, version;
|
||||
let targetPath, hostShorthands, version;
|
||||
|
||||
targetPath = resourceMappings[resourceMold].path;
|
||||
targetPath = targetPath.replace(Resource.VERSION_PLACEHOLDER, versionNumber);
|
||||
|
||||
version = versionNumber && versionNumber[0] || targetPath.match(Resource.VERSION_EXPRESSION);
|
||||
hostShorthands = shorthands[channelHost];
|
||||
|
||||
if (hostShorthands && hostShorthands[targetPath]) {
|
||||
|
||||
let shorthand = hostShorthands[targetPath];
|
||||
|
||||
targetPath = shorthand.path;
|
||||
version = shorthand.version;
|
||||
|
||||
} else {
|
||||
version = versionNumber && versionNumber[0] || targetPath.match(Resource.VERSION_EXPRESSION);
|
||||
}
|
||||
|
||||
// Prepare and return a local target.
|
||||
return {
|
||||
|
||||
73
core/request-sanitizer.js
Normal file
73
core/request-sanitizer.js
Normal 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();
|
||||
}
|
||||
});
|
||||
82
core/shorthands.js
Normal file
82
core/shorthands.js
Normal file
@@ -0,0 +1,82 @@
|
||||
/**
|
||||
* Shorthands
|
||||
* Belongs to Decentraleyes.
|
||||
*
|
||||
* @author Thomas Rientjes
|
||||
* @since 2018-02-24
|
||||
* @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';
|
||||
|
||||
/**
|
||||
* Shorthands
|
||||
*/
|
||||
|
||||
var shorthands = {
|
||||
|
||||
// Google Hosted Libraries [Deprecated]
|
||||
'ajax.googleapis.com': {
|
||||
'resources/jquery/1.8/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.8.3/jquery.min.js.dec',
|
||||
'version': '1.8.3'
|
||||
},
|
||||
'resources/jquery/1.7/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.7.2/jquery.min.js.dec',
|
||||
'version': '1.7.2'
|
||||
},
|
||||
'resources/jquery/1.6/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.6.4/jquery.min.js.dec',
|
||||
'version': '1.6.4'
|
||||
},
|
||||
'resources/jquery/1.5/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.5.2/jquery.min.js.dec',
|
||||
'version': '1.5.2'
|
||||
},
|
||||
'resources/jquery/1.4/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.4.4/jquery.min.js.dec',
|
||||
'version': '1.4.4'
|
||||
},
|
||||
'resources/jquery/1.3/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.3.2/jquery.min.js.dec',
|
||||
'version': '1.3.2'
|
||||
},
|
||||
'resources/jquery/1.2/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.2.6/jquery.min.js.dec',
|
||||
'version': '1.2.6'
|
||||
}
|
||||
},
|
||||
// jQuery CDN [Deprecated]
|
||||
'code.jquery.com': {
|
||||
'resources/jquery/1.7/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.7.0/jquery.min.js.dec',
|
||||
'version': '1.7.0'
|
||||
},
|
||||
'resources/jquery/1.6/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.6.0/jquery.min.js.dec',
|
||||
'version': '1.6.0'
|
||||
},
|
||||
'resources/jquery/1.5/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.5.0/jquery.min.js.dec',
|
||||
'version': '1.5.0'
|
||||
},
|
||||
'resources/jquery/1.4/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.4.0/jquery.min.js.dec',
|
||||
'version': '1.4.0'
|
||||
},
|
||||
'resources/jquery/1.3/jquery.min.js.dec': {
|
||||
'path': 'resources/jquery/1.3.0/jquery.min.js.dec',
|
||||
'version': '1.3.0'
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// Geekzu Public Service [Mirror]
|
||||
shorthands['sdn.geekzu.org'] = shorthands['ajax.googleapis.com'];
|
||||
|
||||
// USTC Linux User Group [Mirror]
|
||||
shorthands['ajax.proxy.ustclug.org'] = shorthands['ajax.googleapis.com'];
|
||||
@@ -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
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -81,7 +74,7 @@ stateManager.addDomainToWhitelist = function (domain) {
|
||||
});
|
||||
};
|
||||
|
||||
stateManager.deleteDomainFromWhitelist = function (domain) {
|
||||
stateManager.removeDomainFromWhitelist = function (domain) {
|
||||
|
||||
return new Promise((resolve) => {
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -8,12 +8,13 @@
|
||||
"locale_with_underscore":
|
||||
"ar": "ar"
|
||||
"bg": "bg"
|
||||
"cs": "cs"
|
||||
"da": "da"
|
||||
"de": "de"
|
||||
"el": "el"
|
||||
"et": "et"
|
||||
"eo": "eo"
|
||||
"es-ES": "es"
|
||||
"et": "et"
|
||||
"fi": "fi"
|
||||
"fr": "fr"
|
||||
"he": "he"
|
||||
@@ -23,10 +24,12 @@
|
||||
"it": "it"
|
||||
"ja": "ja"
|
||||
"ko": "ko"
|
||||
"lb": "lb"
|
||||
"nl": "nl"
|
||||
"pl": "pl"
|
||||
"ro": "ro"
|
||||
"ru": "ru"
|
||||
"sr": "sr"
|
||||
"sv-SE": "sv"
|
||||
"tl": "tl"
|
||||
"tr": "tr"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"manifest_version": 2,
|
||||
"name": "Decentraleyes",
|
||||
"version": "2.0.2",
|
||||
"version": "2.0.4",
|
||||
|
||||
"author": "Thomas Rientjes",
|
||||
|
||||
|
||||
@@ -62,8 +62,9 @@ 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', 'lb',
|
||||
'pl', 'pt', 'ro', 'ru', 'es', 'sv', 'tr'
|
||||
];
|
||||
|
||||
for (let supportedLanguage of supportedLanguages) {
|
||||
@@ -118,6 +119,23 @@ helpers.extractFilenameFromPath = function (path) {
|
||||
return filename;
|
||||
};
|
||||
|
||||
helpers.generateRandomHexString = function (length) {
|
||||
|
||||
let randomValues, randomHexString;
|
||||
|
||||
randomValues = crypto.getRandomValues(new Uint8Array(length));
|
||||
randomHexString = '';
|
||||
|
||||
for (let value of randomValues) {
|
||||
|
||||
// eslint-disable-next-line no-bitwise
|
||||
let hexValue = (0 ^ value & 15 >> 0 / 4).toString(16);
|
||||
randomHexString += hexValue;
|
||||
}
|
||||
|
||||
return randomHexString;
|
||||
};
|
||||
|
||||
helpers.determineCdnName = function (domainName) {
|
||||
|
||||
switch (domainName) {
|
||||
@@ -144,6 +162,10 @@ helpers.determineCdnName = function (domainName) {
|
||||
return 'Sina Public Resources';
|
||||
case 'upcdn.b0.upaiyun.com':
|
||||
return 'UpYun Library';
|
||||
case 'sdn.geekzu.org':
|
||||
return 'Geekzu Public Service [Mirror]';
|
||||
case 'ajax.proxy.ustclug.org':
|
||||
return 'USTC Linux User Group [Mirror]';
|
||||
default:
|
||||
return 'Unknown';
|
||||
}
|
||||
@@ -201,6 +223,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) {
|
||||
|
||||
@@ -17,8 +17,12 @@
|
||||
<script src="../../core/files.js"></script>
|
||||
<script src="../../core/resources.js"></script>
|
||||
<script src="../../core/mappings.js"></script>
|
||||
<script src="../../core/shorthands.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/file-guard.js"></script>
|
||||
<script src="../../core/messenger.js"></script>
|
||||
<script src="../../core/interceptor.js"></script>
|
||||
<script src="../../core/main.js"></script>
|
||||
|
||||
|
||||
@@ -7,15 +7,29 @@ body {
|
||||
cursor: default;
|
||||
font-family: 'Noto Sans', Arial, sans-serif !important;
|
||||
font-size: 12px;
|
||||
margin-top: -15px;
|
||||
padding: 10px !important;
|
||||
}
|
||||
|
||||
.option {
|
||||
margin-bottom: 22px;
|
||||
margin-top: 25px;
|
||||
}
|
||||
|
||||
.notice {
|
||||
margin-top: 12px;
|
||||
border-radius: 3px;
|
||||
box-sizing: border-box;
|
||||
margin-top: 25px;
|
||||
max-width: 470px;
|
||||
padding: 14px 16px;
|
||||
}
|
||||
|
||||
.notice-default {
|
||||
background-color: #f1f1f1;
|
||||
}
|
||||
|
||||
.notice-warning {
|
||||
background-color: #ffa500;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -74,10 +88,58 @@ body {
|
||||
*/
|
||||
|
||||
.icon {
|
||||
color: #777;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buttons
|
||||
*/
|
||||
|
||||
.button {
|
||||
-moz-user-select: none;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 2px;
|
||||
border: 1px solid #cfcfcf;
|
||||
color: #5f5f5f;
|
||||
cursor: pointer;
|
||||
float: right;
|
||||
font-size: 12px;
|
||||
outline: 0;
|
||||
padding: 5px 22px;
|
||||
text-decoration: none;
|
||||
user-select: none;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.button:hover {
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.button:active {
|
||||
background-color: #dedede;
|
||||
}
|
||||
|
||||
.button-warning {
|
||||
background-color: #ea9700;
|
||||
border: 1px solid #d88c00;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.button-warning:hover {
|
||||
background-color: #d88c00;
|
||||
border-color: #c98200;
|
||||
}
|
||||
|
||||
.button-warning:active {
|
||||
background-color: #c07c00;
|
||||
border-color: #b47400;
|
||||
}
|
||||
|
||||
.button-notice {
|
||||
margin-left: auto;
|
||||
padding: 5px 9px;
|
||||
}
|
||||
|
||||
/**
|
||||
* Links
|
||||
*/
|
||||
@@ -118,14 +180,19 @@ body {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.notice-head {
|
||||
font-weight: 600;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.notice-body {
|
||||
background-color: #fbfbfb;
|
||||
border-radius: 3px;
|
||||
border: 1px solid #e7e7e7;
|
||||
color: #595959;
|
||||
display: inline-block;
|
||||
font-size: 11px;
|
||||
padding: 8px 10px;
|
||||
align-items: center;
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.notice-message {
|
||||
line-height: 1.3;
|
||||
margin-right: 14px;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -23,6 +23,29 @@
|
||||
|
||||
<script src="options.js"></script>
|
||||
|
||||
<section class="notice notice-warning hidden" id="notice-block-missing">
|
||||
|
||||
<div class="notice-head">
|
||||
|
||||
<i class="fai fa-exclamation-triangle icon"></i>
|
||||
<span data-i18n-content="blockMissingTitle"></span>
|
||||
|
||||
</div>
|
||||
|
||||
<div class="notice-body" dir="ltr">
|
||||
|
||||
<div class="notice-message">
|
||||
This feature breaks websites. Do not leave it enabled, unless you are prepared to manually whitelist any affected domains.
|
||||
</div>
|
||||
|
||||
<div class="button button-notice button-warning" id="button-block-missing">
|
||||
Disable
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</section>
|
||||
|
||||
<section class="option">
|
||||
|
||||
<div class="title-option">
|
||||
@@ -105,13 +128,18 @@
|
||||
|
||||
</section>
|
||||
|
||||
<section class="notice hidden" id="notice-locale">
|
||||
<section class="notice notice-default hidden" id="notice-locale">
|
||||
|
||||
<div class="notice-body" dir="ltr">
|
||||
|
||||
<i class="fai fa-exclamation-triangle icon"></i>
|
||||
Your preferred language is not yet fully supported.
|
||||
<a class="link-text" href="https://crowdin.com/project/decentraleyes" target="_blank">
|
||||
<div class="notice-message">
|
||||
|
||||
<i class="fai fa-exclamation-triangle icon"></i>
|
||||
Your preferred language is not yet fully supported.
|
||||
|
||||
</div>
|
||||
|
||||
<a class="button button-notice" href="https://crowdin.com/project/decentraleyes" target="_blank">
|
||||
Help Translate
|
||||
</a>
|
||||
|
||||
|
||||
@@ -48,16 +48,33 @@ options._renderOptionsPanel = function () {
|
||||
elements.whitelistedDomains.value = domainWhitelist;
|
||||
|
||||
options._registerOptionChangedEventListeners(elements);
|
||||
options._registerMiscellaneousEventListeners();
|
||||
|
||||
if (options._optionValues.blockMissing === true) {
|
||||
options._renderBlockMissingNotice();
|
||||
}
|
||||
|
||||
if (options._languageSupported === false) {
|
||||
options._renderLocaleNotice();
|
||||
}
|
||||
};
|
||||
|
||||
options._renderBlockMissingNotice = function () {
|
||||
|
||||
let blockMissingNoticeElement = document.getElementById('notice-block-missing');
|
||||
blockMissingNoticeElement.setAttribute('class', 'notice notice-warning');
|
||||
};
|
||||
|
||||
options._hideBlockMissingNotice = function () {
|
||||
|
||||
let blockMissingNoticeElement = document.getElementById('notice-block-missing');
|
||||
blockMissingNoticeElement.setAttribute('class', 'notice notice-warning hidden');
|
||||
};
|
||||
|
||||
options._renderLocaleNotice = function () {
|
||||
|
||||
let localeNoticeElement = document.getElementById('notice-locale');
|
||||
localeNoticeElement.setAttribute('class', 'notice');
|
||||
localeNoticeElement.setAttribute('class', 'notice notice-default');
|
||||
};
|
||||
|
||||
options._registerOptionChangedEventListeners = function (elements) {
|
||||
@@ -69,6 +86,19 @@ options._registerOptionChangedEventListeners = function (elements) {
|
||||
elements.whitelistedDomains.addEventListener('keyup', options._onOptionChanged);
|
||||
};
|
||||
|
||||
options._registerMiscellaneousEventListeners = function () {
|
||||
|
||||
let blockMissingButtonElement = document.getElementById('button-block-missing');
|
||||
|
||||
blockMissingButtonElement.addEventListener('click', function () {
|
||||
|
||||
let changeEvent = new Event('change');
|
||||
|
||||
options._optionElements.blockMissing.checked = false;
|
||||
options._optionElements.blockMissing.dispatchEvent(changeEvent);
|
||||
});
|
||||
};
|
||||
|
||||
options._determineOptionValues = function () {
|
||||
|
||||
return new Promise((resolve) => {
|
||||
@@ -90,11 +120,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;
|
||||
@@ -173,6 +203,15 @@ options._onOptionChanged = function ({target}) {
|
||||
optionValue = target.value;
|
||||
}
|
||||
|
||||
if (optionKey === Setting.BLOCK_MISSING) {
|
||||
|
||||
if (optionValue === true) {
|
||||
options._renderBlockMissingNotice();
|
||||
} else {
|
||||
options._hideBlockMissingNotice();
|
||||
}
|
||||
}
|
||||
|
||||
if (optionKey === Setting.DISABLE_PREFETCH) {
|
||||
options._configureLinkPrefetching(optionValue);
|
||||
}
|
||||
|
||||
@@ -30,11 +30,10 @@ popup._renderContents = function () {
|
||||
|
||||
popup._renderNonContextualContents();
|
||||
|
||||
if (popup._backgroundPage !== null) {
|
||||
|
||||
popup._determineTargetTab()
|
||||
.then(popup._renderContextualContents);
|
||||
}
|
||||
popup._determineTargetTab()
|
||||
.then(popup._determineDomainWhitelistStatus)
|
||||
.then(popup._determineResourceInjections)
|
||||
.then(popup._renderContextualContents);
|
||||
};
|
||||
|
||||
popup._renderNonContextualContents = function () {
|
||||
@@ -47,7 +46,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);
|
||||
@@ -55,24 +54,12 @@ popup._renderNonContextualContents = function () {
|
||||
|
||||
popup._renderContextualContents = function () {
|
||||
|
||||
let injections, groupedInjections;
|
||||
|
||||
popup._domain = helpers.extractDomainFromUrl(popup._targetTab.url);
|
||||
|
||||
popup._requestAnalyzer = popup._backgroundPage.requestAnalyzer;
|
||||
popup._stateManager = popup._backgroundPage.stateManager;
|
||||
|
||||
if (popup._domain !== null) {
|
||||
|
||||
popup._domain = helpers.normalizeDomain(popup._domain);
|
||||
popup._renderDomainWhitelistPanel();
|
||||
}
|
||||
|
||||
injections = popup._stateManager.tabs[popup._targetTab.id].injections;
|
||||
groupedInjections = popup._groupResourceInjections(injections);
|
||||
|
||||
if (Object.keys(groupedInjections).length > 0) {
|
||||
popup._renderInjectionPanel(groupedInjections);
|
||||
if (Object.keys(popup._resourceInjections).length > 0) {
|
||||
popup._renderInjectionPanel(popup._resourceInjections);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -87,7 +74,7 @@ popup._renderDomainWhitelistPanel = function () {
|
||||
protectionToggleElement.setAttribute('dir', popup._scriptDirection);
|
||||
domainIndicatorElement.innerText = popup._domain;
|
||||
|
||||
if (popup._requestAnalyzer.whitelistedDomains[popup._domain]) {
|
||||
if (popup._domainIsWhitelisted === true) {
|
||||
|
||||
let enableProtectionTitle = chrome.i18n.getMessage('enableProtectionTitle');
|
||||
|
||||
@@ -119,23 +106,59 @@ popup._renderInjectionPanel = function (groupedInjections) {
|
||||
|
||||
popup._enableProtection = function () {
|
||||
|
||||
popup._stateManager.deleteDomainFromWhitelist(popup._domain)
|
||||
.then(popup._onProtectionToggled);
|
||||
let message = {
|
||||
'topic': 'whitelist:remove-domain',
|
||||
'value': popup._domain
|
||||
};
|
||||
|
||||
chrome.runtime.sendMessage(message, function () {
|
||||
popup._onProtectionToggled();
|
||||
});
|
||||
};
|
||||
|
||||
popup._disableProtection = function () {
|
||||
|
||||
popup._stateManager.addDomainToWhitelist(popup._domain)
|
||||
.then(popup._onProtectionToggled);
|
||||
let message = {
|
||||
'topic': 'whitelist:add-domain',
|
||||
'value': popup._domain
|
||||
};
|
||||
|
||||
chrome.runtime.sendMessage(message, function () {
|
||||
popup._onProtectionToggled();
|
||||
});
|
||||
};
|
||||
|
||||
popup._determineBackgroundPage = function () {
|
||||
popup._determineDomainWhitelistStatus = function () {
|
||||
|
||||
return new Promise((resolve) => {
|
||||
|
||||
chrome.runtime.getBackgroundPage(function (backgroundPage) {
|
||||
let message = {
|
||||
'topic': 'domain:fetch-is-whitelisted',
|
||||
'value': popup._domain
|
||||
};
|
||||
|
||||
chrome.runtime.sendMessage(message, function (response) {
|
||||
|
||||
popup._domainIsWhitelisted = response.value;
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
popup._determineResourceInjections = function () {
|
||||
|
||||
return new Promise((resolve) => {
|
||||
|
||||
let message = {
|
||||
'topic': 'tab:fetch-injections',
|
||||
'value': popup._targetTab.id
|
||||
};
|
||||
|
||||
chrome.runtime.sendMessage(message, function (response) {
|
||||
|
||||
let groupedInjections = popup._groupResourceInjections(response.value);
|
||||
popup._resourceInjections = groupedInjections;
|
||||
|
||||
popup._backgroundPage = backgroundPage;
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
@@ -148,6 +171,12 @@ popup._determineTargetTab = function () {
|
||||
chrome.tabs.query({'active': true, 'currentWindow': true}, function (tabs) {
|
||||
|
||||
popup._targetTab = tabs[0];
|
||||
popup._domain = helpers.extractDomainFromUrl(tabs[0].url);
|
||||
|
||||
if (popup._domain !== null) {
|
||||
popup._domain = helpers.normalizeDomain(popup._domain);
|
||||
}
|
||||
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
@@ -157,7 +186,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();
|
||||
@@ -292,8 +321,7 @@ popup._onDocumentLoaded = function () {
|
||||
popup._version = helpers.formatVersion(manifest.version);
|
||||
popup._scriptDirection = helpers.determineScriptDirection(language);
|
||||
|
||||
popup._determineBackgroundPage()
|
||||
.then(popup._determineAmountInjected)
|
||||
popup._determineAmountInjected()
|
||||
.then(popup._renderContents);
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user