80 Commits

Author SHA1 Message Date
Thomas Rientjes
6d6a7b68ad Bump version to 2.0.2 2018-01-09 01:38:08 -03:00
Thomas Rientjes
74e6c6fa98 Refactor options page logic 2018-01-08 02:31:18 -03:00
Thomas Rientjes
440def810d Remove unused code segment 2018-01-08 00:00:01 -03:00
Thomas Rientjes
cd0c06c5bc Update temporary list of tainted domains 2018-01-07 22:41:28 -03:00
Thomas Rientjes
be533e8953 Update internal helper module 2018-01-07 22:22:23 -03:00
Thomas Rientjes
7ec143efbf Refactor options page logic 2018-01-07 22:17:37 -03:00
Thomas Rientjes
bce5e9f58e Refactor popup panel logic 2018-01-07 21:06:49 -03:00
Thomas Rientjes
3b941ed077 Update manifest.json 2018-01-07 19:27:20 -03:00
Thomas Rientjes
449bf8c064 Remove unused code segments 2017-12-10 23:15:59 -03:00
Thomas Rientjes
861ba95dee Improve cross-browser compatibility 2017-12-10 18:27:21 -03:00
Thomas Rientjes
b3931febc2 Improve domain parsing logic 2017-12-10 18:17:11 -03:00
Thomas Rientjes
391eb4e6d2 Add internal API wrapper module 2017-12-10 17:58:09 -03:00
Thomas Rientjes
91f32afa59 Upgrade existing modules 2017-12-10 17:54:03 -03:00
Thomas Rientjes
7883d5f2c7 Add support for Korean 2017-11-30 17:35:22 -03:00
Thomas Rientjes
62bd811bbf Update existing localizations 2017-11-30 17:27:07 -03:00
Thomas Rientjes
c9c2d4ddc1 Bump version to 2.0.1 2017-11-15 17:25:58 -03:00
Thomas Rientjes
208a17e30d Merge pull request #219 from da2x/master
Further optimize application icon compression
2017-11-13 18:43:03 -03:00
Thomas Rientjes
5ed5765f29 Update temporary list of tainted domains 2017-11-13 15:34:01 -03:00
Thomas Rientjes
cd67505cbb Update existing localizations 2017-11-13 15:28:31 -03:00
Thomas Rientjes
040fd8f9bd Add support for Serbian (Cyrillic) 2017-11-13 15:27:35 -03:00
Thomas Rientjes
e33f5c85f4 Add support for Brazilian Portuguese 2017-11-13 15:25:25 -03:00
Thomas Rientjes
edff269b25 Update release notes system 2017-11-09 15:28:00 -03:00
Thomas Rientjes
87bf73f97b Fix #227 by revising request sanitation logic 2017-11-07 22:16:55 -03:00
Thomas Rientjes
51183abe58 Fix #214 by revising popup panel logic 2017-11-07 20:20:00 -03:00
Thomas Rientjes
4e9dcea6ab Update audit script ESLint configuration file 2017-11-06 00:49:45 -03:00
Thomas Rientjes
2b67d92140 Refactor existing codebase 2017-11-06 00:04:30 -03:00
Thomas Rientjes
009902d692 Update temporary list of tainted domains 2017-11-04 15:04:26 -03:00
Thomas Rientjes
cc928e3148 Add ESLint configuration files 2017-11-02 22:29:14 -03:00
Thomas Rientjes
7186599ff7 Apply minor changes to audit script 2017-11-02 19:27:22 -03:00
Thomas Rientjes
bda683e584 Refactor existing codebase 2017-11-02 18:36:39 -03:00
Daniel Aleksandersen
27ad608d91 Optimize PNG compression
Apply Zopfli lossless compression (`zopflipng -m`).
2017-10-23 16:06:13 +02:00
Thomas Rientjes
770e6fb54d Bump version to 2.0.0 2017-10-12 16:14:47 -03:00
Thomas Rientjes
2bf0bfe669 Improve request sanitation mechanism 2017-10-12 14:57:09 -03:00
Thomas Rientjes
4b8167686d Implement release notes system 2017-10-12 14:50:56 -03:00
Thomas Rientjes
280cd3f105 Implement extension version label 2017-10-08 00:11:16 -03:00
Thomas Rientjes
906ba1ffd9 Update existing localizations 2017-10-08 00:00:06 -03:00
Thomas Rientjes
45824cb25b Merge pull request #205 from borsothy/HungarianSupport
Add support for Hungarian
2017-10-07 23:54:15 -03:00
Thomas Rientjes
e3d9163ff9 Implement a temporary list of tainted domains 2017-10-07 22:55:50 -03:00
Gergely Borsothy-Gaal
5e4dbe4a74 Added support for Hungarian. 2017-10-07 23:15:24 +02:00
Thomas Rientjes
deed173dd1 Add support for Estonian 2017-09-30 01:56:22 -04:00
Thomas Rientjes
295a545a65 Update the Indonesian localization 2017-09-30 01:49:26 -04:00
Thomas Rientjes
5399d86af7 Merge pull request #203 from jomo/fix-popup-width
Fix #202 by allowing variable popup widths
2017-09-28 16:25:51 -04:00
jomo
87b2f51e00 fix #202
Popup width is fixed to 320px when the extension
is pinned to overflow menu. The fixed width might
change in the future, but the popup is responsive
so we're only setting a max-width rather than a
fixed width.
2017-09-28 06:29:50 +02:00
Thomas Rientjes
a45c55b4d4 Bump version to 2.0.0beta3 2017-09-24 17:20:06 -04:00
Thomas Rientjes
f92a9852ae Add partially finished localizations 2017-09-24 17:15:45 -04:00
Thomas Rientjes
27608f49e7 Update the Polish localization 2017-09-24 17:12:03 -04:00
Thomas Rientjes
e8bf2cf7a0 Add support for Hebrew 2017-09-24 17:07:42 -04:00
Thomas Rientjes
b20a41750e Implement unsupported locale notice 2017-09-23 16:21:35 -04:00
Thomas Rientjes
d5e6304b70 Update manifest.json 2017-09-23 14:09:00 -04:00
Thomas Rientjes
69514bc25f Add support for Romanian 2017-09-22 18:06:48 -04:00
Thomas Rientjes
0444f702f7 Add support for Turkish 2017-09-22 18:04:21 -04:00
Thomas Rientjes
5a83bbd163 Update the Finnish localization 2017-09-22 16:44:36 -04:00
Thomas Rientjes
d1613ace37 Add support for Arabic 2017-09-22 16:38:16 -04:00
Thomas Rientjes
c48e96a75e Add support for right-to-left, top-to-bottom scripts 2017-09-22 16:35:36 -04:00
Thomas Rientjes
08934108d8 Resolve #178 by correcting the Swedish locale 2017-09-21 23:45:53 -04:00
Thomas Rientjes
89d0191e1d Resolve #163 by making metadata sanitation optional 2017-09-21 23:12:55 -04:00
Thomas Rientjes
ab6c387b2c Resolve #185 by allowing users to hide icon badges 2017-09-21 22:28:24 -04:00
Thomas Rientjes
0f786092c0 Resolve #157 by allowing users to re-enable prefetching 2017-09-21 20:57:17 -04:00
Thomas Rientjes
569bbcbd70 Update existing localizations 2017-09-21 19:37:44 -04:00
Thomas Rientjes
05be55ff10 Add crowdin.yaml 2017-09-21 19:24:41 -04:00
Thomas Rientjes
01f6dc6416 Clean up unused constants and variables 2017-09-11 14:39:00 -04:00
Thomas Rientjes
576ca7f627 Extend strict blocking policies to unknown file types 2017-09-11 13:40:55 -04:00
Thomas Rientjes
8bc807f7bb Bump version to 2.0.0beta2 2017-09-07 12:11:58 -04:00
Thomas Rientjes
7899afe01f Internationalize recently introduced content 2017-09-07 00:11:16 -04:00
Thomas Rientjes
7246cc39c4 Update and refactor options page 2017-09-06 20:20:27 -04:00
Thomas Rientjes
1a82d81fbb Add support for Icelandic 2017-09-06 17:29:54 -04:00
Thomas Rientjes
dfbe433f65 Add domain whitelist toggle to browser action popup 2017-09-06 17:17:00 -04:00
Thomas Rientjes
ff4bbeaf30 Refactor extension options page 2017-09-02 23:30:34 -04:00
Thomas Rientjes
d6173249f4 Update and refactor browser action popup 2017-09-02 22:15:56 -04:00
Thomas Rientjes
b45df1f032 Fix issue related to shorthand URL notations 2017-08-30 21:46:13 -04:00
Thomas Rientjes
78e9a7c7ea Bump version to 2.0.0beta1 2017-08-27 08:40:11 -04:00
Thomas Rientjes
7d21a1ed92 Fix issue related to network prediction 2017-08-23 11:29:35 -04:00
Thomas Rientjes
51d975f720 Modify extension modules 2017-08-15 16:09:45 -04:00
Thomas Rientjes
98a9516d3d Implement support for Firefox 57 and higher 2017-08-15 15:47:06 -04:00
Thomas Rientjes
682570cdea Bump version to 1.3.8 2017-04-09 16:15:16 +02:00
Thomas Rientjes
19cb2beacf Bump version to 1.3.7-1 2017-04-09 15:44:35 +02:00
Thomas Rientjes
f5f3cc9be4 Update release notes 2017-04-09 15:41:41 +02:00
Thomas Rientjes
e73ad04845 Add support for Greek 2017-04-09 00:27:19 +02:00
Thomas Rientjes
2f8733bd0a Update terminology inside README.md 2017-03-24 01:55:40 +01:00
Thomas Rientjes
0d868e072f Update README.md 2017-03-24 01:51:31 +01:00
31 changed files with 504 additions and 1191 deletions

View File

@@ -4,28 +4,19 @@
"es6": true,
"webextensions": true
},
"extends": [
"eslint:recommended",
"plugin:no-unsanitized/DOM"
],
"extends": "eslint:recommended",
"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
},
@@ -34,16 +25,12 @@
"core/constants.js",
"core/files.js",
"core/mappings.js",
"core/resources.js",
"core/shorthands.js"
"core/resources.js"
],
"rules": {
"no-unused-vars": "off"
}
},
"plugins": [
"no-unsanitized"
],
"rules": {
"array-bracket-newline": "error",
"array-bracket-spacing": "error",

View File

@@ -1,35 +1,30 @@
Decentraleyes (Experimental)
Decentraleyes
=============
A reimplementation of current features of Decentraleyes. This project will help bring Decentraleyes to WebExtensions (Firefox 57 and higher), as well as Chromium-based browsers, Opera, and possibly even Edge.
A [web browser extension](https://decentraleyes.org) that emulates Content Delivery Networks to improve your online privacy. It intercepts traffic, finds supported resources locally, and injects them into the environment. All of this happens automatically, so no prior configuration is required. Feel free to use the following [testing utility](https://decentraleyes.org/test) to find out if you are properly protected.
## Changelog
> **Note:** Decentraleyes is no silver bullet, but it does prevent a lot of websites from making you send these kinds of requests. Ultimately, you can make Decentraleyes block requests for any missing CDN resources, too.
Below is a list of all notable changes made to the reimplementation project to date. This includes, but is most certainly not limited to, records of changes such as bug fixes, and new, removed, and updated features.
## Contributing Code
### v1.3.7.5
Suggestions in the form of **Issues**, and contributions in the form of **Pull Requests**, are highly welcome. You can also use the public contact details and PGP key on the extension's [contact page](https://decentraleyes.org/contact) to get in touch.
* Fix Subresource Integrity (SRI) validation issues.
* Implement context stripping for allowed CDN requests.
* Implement request filters to improve performance.
#### Prerequisites
### v1.3.7.4
* Mozilla Firefox 56 *(or higher)*.
* Fix rare injection counter issue.
> **Note:** If you want to contribute to the Firefox legacy extension, please check out the ```legacy``` branch. If you are looking for the Chromium-compatible codebase, please see the ```experimental``` branch.
### v1.3.7.3
#### Running the Code
* Improve injection state management _(requires a new permission)_.
* Implement injection overview and icon badge.
Please read this [short guide](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Your_first_WebExtension#Trying_it_out) for information on how to run this extension from source.
### v1.3.7.2
> **Important:** All commits since 26 October 2016 are signed with GPG. It's likely best to ignore unsigned commits, unless you really know what you're doing. Please send an email if you have any questions or security concerns.
* Fix popup icon display issue.
## Submitting Translations
### v1.3.7.1
Do you master a non-supported language? Please help out by translating this add-on on [Crowdin](https://crowdin.com/project/decentraleyes).
* Improve compatibility with HTTPS Everywhere.
## License
### v1.3.7
* Initial release.
[MPL-2.0](https://www.mozilla.org/MPL/2.0).

View File

@@ -1,70 +0,0 @@
{
"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": "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": "Montri nombrilon sur piktogramo",
"description": "Show icon badge title."
"showIconBadgeTitle":{
"message":"Display injection counts on icon",
"description":"Show icon badge title."
},
"showIconBadgeDescription": {
"message": "Montri nombron da enmetataj risurcoj sur la aldonaĵa piktogramo.",
"description": "Show icon badge description."
"showIconBadgeDescription":{
"message":"Show the number of injected resources on the extension icon.",
"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": "Ne antaŭlegi ligilojn",
"description": "Disable prefetch title."
"disablePrefetchTitle":{
"message":"Disable link prefetching",
"description":"Disable prefetch title."
},
"disablePrefetchDescription": {
"message": "Bloki malpermesatajn petojn por preventi tralasojn al enhav-proviz-retoj.",
"description": "Disable prefetch description."
"disablePrefetchDescription":{
"message":"Prevent disallowed requests from leaking out to delivery networks.",
"description":"Disable prefetch description."
},
"stripMetadataTitle": {
"message": "Forigi metadatumojn el permesataj petoj",
"description": "Strip metadata title."
"stripMetadataTitle":{
"message":"Strip metadata from allowed requests",
"description":"Strip metadata title."
},
"stripMetadataDescription": {
"message": "Forviŝi delikatajn datumojn el permesataj CDN-petoj por plibonigi privatecon.",
"description": "Strip metadata description."
"stripMetadataDescription":{
"message":"Erase sensitive data from allowed CDN requests for improved privacy.",
"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."
}
}

View File

@@ -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 ressources CDN injectées localement depuis l'installation.",
"description": "Amount injected description."
"amountInjectedDescription":{
"message":"Quantité de ressource 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": "Afficher le nombre dinjections sur licône",
"description": "Show icon badge title."
"showIconBadgeTitle":{
"message":"Affichage du 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êche que des requêtes non autorisées fuient vers les réseaux de distribution.",
"description": "Disable prefetch description."
"disablePrefetchDescription":{
"message":"Empêcher que des requêtes non autorisées fuit du 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."
}
}

View File

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

View File

@@ -1,70 +0,0 @@
{
"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."
}
}

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 +0,0 @@
{
"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."
}
}

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": leri düzey gizlilik için, izin verilen CDN isteklerinden hassas verileri sil.",
"description": "Strip metadata description."
"stripMetadataDescription":{
"message":zin verilen CDN isteklerine duyarlı verileri gelişmiş gizlilik için silin.",
"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

@@ -21,24 +21,12 @@ 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}/,
@@ -50,20 +38,16 @@ const Setting = {
'BLOCK_MISSING': 'blockMissing',
'DISABLE_PREFETCH': 'disablePrefetch',
'SHOW_ICON_BADGE': 'showIconBadge',
'SHOW_RELEASE_NOTES': 'showReleaseNotes',
'STRIP_METADATA': 'stripMetadata',
'WHITELISTED_DOMAINS': 'whitelistedDomains',
'XHR_TEST_DOMAIN': 'xhrTestDomain'
'WHITELISTED_DOMAINS': 'whitelistedDomains'
};
const WebRequest = {
'GET': 'GET',
'BLOCKING': 'blocking',
'HEADERS': 'requestHeaders'
};
const WebRequestType = {
'XHR': 'xmlhttprequest'
'HEADERS': 'requestHeaders',
'ORIGIN_HEADER': 'Origin',
'REFERER_HEADER': 'Referer'
};
const Whitelist = {

View File

@@ -1,58 +0,0 @@
/**
* 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();
}

View File

@@ -42,41 +42,19 @@ 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
@@ -105,7 +83,7 @@ interceptor.handleRequest = function (requestDetails, tabIdentifier, tab) {
};
return {
'redirectUrl': chrome.extension.getURL(targetPath + fileGuard.secret)
'redirectUrl': chrome.extension.getURL(targetPath)
};
};
@@ -143,10 +121,6 @@ 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;
}
@@ -157,19 +131,11 @@ interceptor._handleStorageChanged = function (changes) {
*/
interceptor.amountInjected = 0;
interceptor.xhrTestDomain = 'decentraleyes.org';
interceptor.blockMissing = false;
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) {
chrome.storage.local.get([Setting.AMOUNT_INJECTED, Setting.BLOCK_MISSING], function (items) {
interceptor.amountInjected = items.amountInjected || 0;
interceptor.xhrTestDomain = items.xhrTestDomain || 'decentraleyes.org';
interceptor.blockMissing = items.blockMissing || false;
});

View File

@@ -26,12 +26,11 @@ var main = {};
main._initializeOptions = function () {
let optionDefaults = {
[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]: {}
'showIconBadge': true,
'blockMissing': false,
'disablePrefetch': true,
'stripMetadata': true,
'whitelistedDomains': {}
};
chrome.storage.local.get(optionDefaults, function (options) {
@@ -69,7 +68,7 @@ main._showReleaseNotes = function (details) {
if (details.temporary !== true) {
chrome.storage.local.get({
[Setting.SHOW_RELEASE_NOTES]: true
'showReleaseNotes': true
}, function (options) {
if (options.showReleaseNotes === true) {

View File

@@ -35,7 +35,7 @@ var mappings = {
'swfobject/{version}/swfobject.': resources.swfobject,
'webfont/{version}/webfont.': resources.webfont,
// Basic Shorthand Notations [Deprecated]
// Common 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,
// Basic Shorthand Notations [Deprecated]
// Common Shorthand Notations [Deprecated]
'jquery-latest.': {
'path': 'resources/jquery/1.11.1/jquery.min.js.dec',
'type': 'application/javascript'
@@ -124,6 +124,46 @@ 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'
}
}
},
@@ -237,11 +277,3 @@ 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'];

View File

@@ -1,70 +0,0 @@
/**
* 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);

View File

@@ -100,23 +100,12 @@ requestAnalyzer._findLocalTarget = function (resourceMappings, basePath, channel
if (resourcePattern.startsWith(resourceMold)) {
let targetPath, hostShorthands, version;
let targetPath, version;
targetPath = resourceMappings[resourceMold].path;
targetPath = targetPath.replace(Resource.VERSION_PLACEHOLDER, versionNumber);
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);
}
version = versionNumber && versionNumber[0] || targetPath.match(Resource.VERSION_EXPRESSION);
// Prepare and return a local target.
return {

View File

@@ -1,73 +0,0 @@
/**
* 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

@@ -1,82 +0,0 @@
/**
* 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'];

View File

@@ -41,6 +41,13 @@ stateManager.registerInjection = function (tabIdentifier, injection) {
'tabId': tabIdentifier,
'text': injectionCount.toString()
});
} else {
wrappers.setBadgeText({
'tabId': tabIdentifier,
'text': ''
});
}
}
@@ -51,14 +58,14 @@ stateManager.registerInjection = function (tabIdentifier, injection) {
interceptor.amountInjected = items.amountInjected;
chrome.storage.local.set({
[Setting.AMOUNT_INJECTED]: ++interceptor.amountInjected
'amountInjected': ++interceptor.amountInjected
});
});
} else {
chrome.storage.local.set({
[Setting.AMOUNT_INJECTED]: ++interceptor.amountInjected
'amountInjected': ++interceptor.amountInjected
});
}
};
@@ -74,7 +81,7 @@ stateManager.addDomainToWhitelist = function (domain) {
});
};
stateManager.removeDomainFromWhitelist = function (domain) {
stateManager.deleteDomainFromWhitelist = function (domain) {
return new Promise((resolve) => {
@@ -141,9 +148,25 @@ 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 (Setting.SHOW_ICON_BADGE in changes) {
if ('showIconBadge' in changes) {
stateManager.showIconBadge = changes.showIconBadge.newValue;
@@ -155,12 +178,21 @@ stateManager._handleStorageChanged = function (changes) {
}
}
if (Setting.STRIP_METADATA in changes) {
if ('stripMetadata' in changes) {
requestSanitizer.disable();
let onBeforeSendHeaders;
onBeforeSendHeaders = chrome.webRequest.onBeforeSendHeaders;
onBeforeSendHeaders.removeListener(stateManager._stripMetadata, {
'urls': stateManager.validHosts
}, [WebRequest.BLOCKING, WebRequest.HEADERS]);
if (changes.stripMetadata.newValue !== false) {
requestSanitizer.enable();
onBeforeSendHeaders.addListener(stateManager._stripMetadata, {
'urls': stateManager.validHosts
}, [WebRequest.BLOCKING, WebRequest.HEADERS]);
}
}
};
@@ -191,13 +223,8 @@ chrome.tabs.query({}, function (tabs) {
tabs.forEach(stateManager._createTab);
});
chrome.storage.local.get(Setting.SHOW_ICON_BADGE, function (items) {
if (items.showIconBadge === undefined) {
items.showIconBadge = true;
}
stateManager.showIconBadge = items.showIconBadge;
chrome.storage.local.get('showIconBadge', function (items) {
stateManager.showIconBadge = items.showIconBadge || true;
});
/**
@@ -242,4 +269,14 @@ 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

@@ -8,13 +8,12 @@
"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"
@@ -24,12 +23,10 @@
"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"

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Decentraleyes",
"version": "2.0.4",
"version": "2.0.2",
"author": "Thomas Rientjes",
@@ -47,6 +47,13 @@
"page": "pages/options/options.html"
},
"applications": {
"gecko": {
"id": "jid1-BoFifL9Vbdl2zQ@jetpack",
"strict_min_version": "56.0a1"
}
},
"web_accessible_resources": [
"resources/*"
]

View File

@@ -62,9 +62,8 @@ helpers.languageIsFullySupported = function (language) {
languageSupported = false;
supportedLanguages = [
'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'
'ar', 'bg', 'zh', '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) {
@@ -119,23 +118,6 @@ 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) {
@@ -162,10 +144,6 @@ 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';
}
@@ -223,13 +201,6 @@ 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,12 +17,8 @@
<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>

View File

@@ -7,29 +7,15 @@ body {
cursor: default;
font-family: 'Noto Sans', Arial, sans-serif !important;
font-size: 12px;
margin-top: -15px;
padding: 10px !important;
}
.option {
margin-top: 25px;
margin-bottom: 22px;
}
.notice {
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;
margin-top: 12px;
}
/**
@@ -88,58 +74,10 @@ 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
*/
@@ -180,19 +118,14 @@ body {
display: flex;
}
.notice-head {
font-weight: 600;
margin-bottom: 6px;
}
.notice-body {
align-items: center;
display: flex;
}
.notice-message {
line-height: 1.3;
margin-right: 14px;
background-color: #fbfbfb;
border-radius: 3px;
border: 1px solid #e7e7e7;
color: #595959;
display: inline-block;
font-size: 11px;
padding: 8px 10px;
}
/**

View File

@@ -23,29 +23,6 @@
<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">
@@ -128,18 +105,13 @@
</section>
<section class="notice notice-default hidden" id="notice-locale">
<section class="notice hidden" id="notice-locale">
<div class="notice-body" dir="ltr">
<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">
<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">
Help Translate
</a>

View File

@@ -48,33 +48,16 @@ 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 notice-default');
localeNoticeElement.setAttribute('class', 'notice');
};
options._registerOptionChangedEventListeners = function (elements) {
@@ -86,19 +69,6 @@ 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) => {
@@ -120,11 +90,11 @@ options._getOptionElement = function (optionKey) {
options._getOptionElements = function () {
let optionElements = {
[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)
'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)
};
return optionElements;
@@ -203,15 +173,6 @@ 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);
}

View File

@@ -30,10 +30,11 @@ popup._renderContents = function () {
popup._renderNonContextualContents();
popup._determineTargetTab()
.then(popup._determineDomainWhitelistStatus)
.then(popup._determineResourceInjections)
.then(popup._renderContextualContents);
if (popup._backgroundPage !== null) {
popup._determineTargetTab()
.then(popup._renderContextualContents);
}
};
popup._renderNonContextualContents = function () {
@@ -46,7 +47,7 @@ popup._renderNonContextualContents = function () {
optionsButtonElement = document.getElementById('options-button');
versionLabelElement.innerText = popup._version;
counterElement.innerText = helpers.formatNumber(popup._amountInjected);
counterElement.innerText = popup._amountInjected;
testingUtilityLinkElement.addEventListener('mouseup', popup._onTestingUtilityLinkClicked);
optionsButtonElement.addEventListener('mouseup', popup._onOptionsButtonClicked);
@@ -54,12 +55,24 @@ 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();
}
if (Object.keys(popup._resourceInjections).length > 0) {
popup._renderInjectionPanel(popup._resourceInjections);
injections = popup._stateManager.tabs[popup._targetTab.id].injections;
groupedInjections = popup._groupResourceInjections(injections);
if (Object.keys(groupedInjections).length > 0) {
popup._renderInjectionPanel(groupedInjections);
}
};
@@ -74,7 +87,7 @@ popup._renderDomainWhitelistPanel = function () {
protectionToggleElement.setAttribute('dir', popup._scriptDirection);
domainIndicatorElement.innerText = popup._domain;
if (popup._domainIsWhitelisted === true) {
if (popup._requestAnalyzer.whitelistedDomains[popup._domain]) {
let enableProtectionTitle = chrome.i18n.getMessage('enableProtectionTitle');
@@ -106,59 +119,23 @@ popup._renderInjectionPanel = function (groupedInjections) {
popup._enableProtection = function () {
let message = {
'topic': 'whitelist:remove-domain',
'value': popup._domain
};
chrome.runtime.sendMessage(message, function () {
popup._onProtectionToggled();
});
popup._stateManager.deleteDomainFromWhitelist(popup._domain)
.then(popup._onProtectionToggled);
};
popup._disableProtection = function () {
let message = {
'topic': 'whitelist:add-domain',
'value': popup._domain
};
chrome.runtime.sendMessage(message, function () {
popup._onProtectionToggled();
});
popup._stateManager.addDomainToWhitelist(popup._domain)
.then(popup._onProtectionToggled);
};
popup._determineDomainWhitelistStatus = function () {
popup._determineBackgroundPage = function () {
return new Promise((resolve) => {
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;
chrome.runtime.getBackgroundPage(function (backgroundPage) {
popup._backgroundPage = backgroundPage;
resolve();
});
});
@@ -171,12 +148,6 @@ 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();
});
});
@@ -186,7 +157,7 @@ popup._determineAmountInjected = function () {
return new Promise((resolve) => {
chrome.storage.local.get(Setting.AMOUNT_INJECTED, function (items) {
chrome.storage.local.get('amountInjected', function (items) {
popup._amountInjected = items.amountInjected || 0;
resolve();
@@ -321,7 +292,8 @@ popup._onDocumentLoaded = function () {
popup._version = helpers.formatVersion(manifest.version);
popup._scriptDirection = helpers.determineScriptDirection(language);
popup._determineAmountInjected()
popup._determineBackgroundPage()
.then(popup._determineAmountInjected)
.then(popup._renderContents);
};

View File

@@ -25,15 +25,23 @@
<div class="container">
<h1>For a smoother experience</h1>
<h1>What's new in version 2.0?</h1>
<div class="notice">
<span class="subtle-hint"><span class="topic-label">Configure HTTPS Everywhere</span><br>There's no need to read any further, unless you actually use Decentraleyes in combination with the HTTPS Everywhere extension. If you do, please follow this <a href="https://decentraleyes.org/configure-https-everywhere/" target="_blank">short guide</a> to prevent, or resolve, any conflicts.</span>
<span class="subtle-hint"><span class="topic-label">A Completely New Foundation</span><br>Decentraleyes has been fully rebuilt, on top of cutting-edge web technologies. As a result, it's even faster, more capable, and ready for upcoming versions of Firefox.</span>
<div class="topic-badge"><i class="fai fa-cube"></i></div>
</div>
<h1>What's new in version 2.0?</h1>
<div class="notice">
<div class="topic-badge color-purple"><i class="fai fa-window-restore fa-flip-horizontal"></i></div>
<span class="subtle-hint"><span class="topic-label color-purple">A Clear User Interface</span><br>The extension is finally less shy about what it does to protect you. It shows you what exactly it injects into given pages, and puts all available features right at your fingertips.</span>
</div>
<div class="notice">