9 Commits

Author SHA1 Message Date
Kevin Röbert
d58756f716 Merge branch 'master' into next-gen 2020-05-19 17:40:24 +02:00
Kevin Röbert
368e96edf1 Merge branch 'master' into next-gen 2020-04-28 02:16:05 +02:00
Kevin Röbert
ec4baefaa1 Merge branch 'master' into next-gen 2020-04-15 01:28:46 +02:00
Kevin Röbert
f46af5615c Merge branch 'master' into next-gen 2020-03-23 23:23:18 +01:00
Kevin Röbert
b602b0431a Merge branch 'master' into next-gen 2020-03-20 20:18:37 +01:00
Kevin Röbert
fa1c3b35ac Merge branch 'master' into next-gen 2020-02-27 17:58:21 +01:00
Kevin R
49717332a9 Refactoring 2020-02-27 17:12:47 +01:00
Kevin R
2d9e7c63bb Merge branch 'master' into next-gen 2020-02-27 16:55:46 +01:00
Kevin R
5096150723 Merge branch 'master' into next-gen 2020-02-27 16:06:41 +01:00
57 changed files with 12640 additions and 1583 deletions

3
.github/FUNDING.yml vendored
View File

@@ -1,3 +0,0 @@
# These are supported funding model platforms
custom: ['https://www.paypal.me/KevinRoebert', 'https://liberapay.com/kroeb', 'https://www.buymeacoffee.com/KevinRoebert']# Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

View File

@@ -25,9 +25,9 @@
# Optionally, specify configuration settings just for `issues` or `pulls` # Optionally, specify configuration settings just for `issues` or `pulls`
issues: issues:
comment: > comment: >
This repository is only a mirror of https://gitlab.com/KevinRoebert/ClearUrls. Issues are read here, but it can take longer until they are addressed. If possible, please use the GitLab repo or this support mail address: support (at) clearurls.xyz. This repository is only a mirror of https://gitlab.com/KevinRoebert/ClearUrls. Issues are readed here, but not directly addressed. If possible, please use the GitLab repo or this support mail address: clearurls_1 (at) kevinroebert.de.
lock: false lock: false
close: false close: true
pulls: pulls:
comment: > comment: >

View File

@@ -1,12 +1,9 @@
image: debian:latest image: debian:latest
variables:
GIT_SUBMODULE_STRATEGY: recursive
before_script: before_script:
- export DEBIAN_FRONTEND= noninteractive - export DEBIAN_FRONTEND= noninteractive
- apt-get update -y - apt-get update -y
- apt-get install -y zip unzip nodejs jsonlint - apt-get install -y zip unzip nodejs
stages: stages:
- build - build
@@ -23,13 +20,17 @@ hash rules:
- rules.min.hash - rules.min.hash
- data.minify.json - data.minify.json
- rules.minify.hash - rules.minify.hash
only:
- master
bundle addon: bundle addon:
stage: build stage: build
script: script:
- zip ClearUrls -r -FS clearurls.js browser-polyfill.js manifest.json img/* external_js/* html/* core_js/* css/* fonts/* _locales/* - zip ClearUrls -r -FS clearurls.js browser-polyfill.js manifest.json img/* external_js/* html/* core_js/* css/* fonts/* _locales/*
only: only:
- master - master
artifacts: artifacts:
paths: paths:
- ClearUrls.zip - ClearUrls.zip
@@ -48,3 +49,5 @@ pages:
artifacts: artifacts:
paths: paths:
- public - public
only:
- master

4
.gitmodules vendored
View File

@@ -1,4 +0,0 @@
[submodule "rules"]
path = data
url = https://gitlab.com/anti-tracking/ClearURLs/rules.git
branch = master

View File

@@ -4,74 +4,6 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Ongoing
- Rewrite ClearURLs completely form scratch in typescript
- Add features from the milestone [%1](https://gitlab.com/KevinRoebert/ClearUrls/-/milestones/1)
- Dedicated documentation page like [docs.drasyl.org](https://docs.drasyl.org)
## [1.20.0] - 2020-11-21
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Added
- Added Dutch translation by Harm M.
### Changed
- Changed url decoding to prevent endless loop
- Performance optimizations for rules by [@thexeos](https://gitlab.com/thexeos)
- Changed default rules and hash host to Github Pages
- Changed rules changelog button `href` to the new rules submodule repo
- Updated various translations - thanks to all contributors
### Fixed
- Fixed [#664](https://gitlab.com/KevinRoebert/ClearUrls/issues/664) (also [#739](https://gitlab.com/KevinRoebert/ClearUrls/issues/739), [#740](https://gitlab.com/KevinRoebert/ClearUrls/issues/740))
## [1.19.0] - 2020-07-22
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Changed
- Changed url decoding to prevent endless loop
## [1.18.1] - 2020-06-07
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Changed
- Hotfix for the endless loop on new log limit ([#545](https://gitlab.com/KevinRoebert/ClearUrls/issues/545), [#541](https://gitlab.com/KevinRoebert/ClearUrls/issues/541), [#539](https://gitlab.com/KevinRoebert/ClearUrls/issues/539))
## [1.18.0] - 2020-06-06
### Compatibility note
- Require Firefox >= 55
- Require Chrome >= 37
### Removed
- sha256.jquery.plugin
- Popper.js v1.16.0
- Bootstrap Colorpicker v3.2.0
- Removed `xbl` type from request types, because it throws since 78.0b3 exceptions (no longer supported)
### Added
- Pickr v1.7.0
### Changed
- Replaced sha256.jquery.plugin with native hashing
- Replaced jQuery dependencies with native JavaScript in all core files (jQuery is only required for the log page)
- Hopefully this fixes the performance problems that some users experience when using this addon in conjunction with other addons
- [#256](https://gitlab.com/KevinRoebert/ClearUrls/issues/256)
- [#535](https://gitlab.com/KevinRoebert/ClearUrls/issues/535)
- Restricted the log limit to max. 5000 entries
- Default value is now 100
- Too many log entries have resulted in performance losses for users who have forgotten that they have turned on the log. This step should prevent this.
## [1.17.0] - 2020-04-14 ## [1.17.0] - 2020-04-14
### Compatibility note ### Compatibility note

View File

@@ -1,10 +1,8 @@
<a href="https://www.paypal.me/KevinRoebert" target="_blank"><img src="https://raw.githubusercontent.com/KevinRoebert/DonateButtons/master/Paypal.png" alt="Buy Me A Coffee" height="55"></a> <a href="https://www.buymeacoffee.com/KevinRoebert" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" height="60"></a>
<a href="https://liberapay.com/kroeb" target="_blank"><img src="https://raw.githubusercontent.com/KevinRoebert/DonateButtons/master/LiberaPay.png" alt="Buy Me A Coffee" height="55"></a>
<a href="https://www.buymeacoffee.com/KevinRoebert" target="_blank"><img src="https://raw.githubusercontent.com/KevinRoebert/DonateButtons/master/BuyMeACoffee.png" alt="Buy Me A Coffee" height="55"></a>
[<img src="https://blog.mozilla.org/addons/files/2020/04/get-the-addon-fx-apr-2020.svg" alt="for Firefox" height="60px">](https://addons.mozilla.org/firefox/addon/clearurls/) [<img src="https://gitlab.com/KevinRoebert/ClearUrls/-/raw/master/promotion/MEA-button.png" alt="for Edge" height="60px">](https://microsoftedge.microsoft.com/addons/detail/mdkdmaickkfdekbjdoojfalpbkgaddei) [<img src="https://developer.chrome.com/webstore/images/ChromeWebStore_BadgeWBorder_v2_206x58.png" alt="for Chrome" height="60px">](https://chrome.google.com/webstore/detail/clearurls/lckanjgmijmafbedllaakclkaicjfmnk) [<img src="https://blog.mozilla.org/addons/files/2020/04/get-the-addon-fx-apr-2020.svg" alt="for Firefox" height="60px">](https://addons.mozilla.org/en-US/firefox/addon/clearurls/) [<img src="https://gitlab.com/KevinRoebert/ClearUrls/-/raw/master/promotion/MEA-button.png" alt="for Edge" height="60px">](https://microsoftedge.microsoft.com/addons/detail/mdkdmaickkfdekbjdoojfalpbkgaddei) [<img src="https://developer.chrome.com/webstore/images/ChromeWebStore_BadgeWBorder_v2_206x58.png" alt="for Chrome" height="60px">](https://chrome.google.com/webstore/detail/clearurls/lckanjgmijmafbedllaakclkaicjfmnk)
# <sub><img src="https://gitlab.com/KevinRoebert/ClearUrls/raw/master/img/clearurls.svg" width="64px" height="64px"></sub> ClearURLs [![Gitter](https://badges.gitter.im/ClearURLs/ClearURLs.svg)](https://gitter.im/ClearURLs/ClearURLs) # <sub><img src="https://gitlab.com/KevinRoebert/ClearUrls/raw/master/img/clearurls.svg" width="64px" height="64px"></sub> ClearURLs
**ClearURLs** is an add-on based on the new WebExtensions technology and is optimized for *Firefox* and *Chrome* based browsers. **ClearURLs** is an add-on based on the new WebExtensions technology and is optimized for *Firefox* and *Chrome* based browsers.
@@ -48,13 +46,11 @@ Here you can download the packed files for the Firefox- and Chrome-Dev:
[<img src="promotion/download-128.png"/>](https://gitlab.com/KevinRoebert/ClearUrls/-/jobs/artifacts/master/raw/ClearUrls.zip?job=bundle%20addon) [<img src="promotion/download-128.png"/>](https://gitlab.com/KevinRoebert/ClearUrls/-/jobs/artifacts/master/raw/ClearUrls.zip?job=bundle%20addon)
## Test ## Test
If you want to test whether ClearURLs works correctly on your system, you can go to this test page: [https://test.clearurls.xyz/](https://test.clearurls.xyz/) If you want to test whether ClearURLs works correctly on your system, you can go to this test page: [https://kevinroebert.gitlab.io/ClearUrls/](https://kevinroebert.gitlab.io/ClearUrls/)
## Contribute ## Contribute
If you have any suggestions or complaints, please [create an issue.](https://gitlab.com/KevinRoebert/ClearUrls/issues/new) If you have any suggestions or complaints, please [create an issue.](https://gitlab.com/KevinRoebert/ClearUrls/issues/new)
**Note: If you have any suggestions or complaints regarding the rules, please [create an issue in this repo](https://gitlab.com/anti-tracking/ClearURLs/rules/-/issues/new) or email us rules.support (at) clearurls.xyz (this mail will automatically create a new issue in this repo).**
### Translate ClearURLs ### Translate ClearURLs
You want to help translating ClearURLs into many languages? Nice You want to help translating ClearURLs into many languages? Nice
@@ -75,8 +71,6 @@ Please push your translation into the folder `_locales/{country code}/messages.j
* [Uroute](https://github.com/walterl/uroute) used ClearURLs to filter/clean URL before launching browser * [Uroute](https://github.com/walterl/uroute) used ClearURLs to filter/clean URL before launching browser
* [Scrub](https://gitlab.com/CrunchBangDev/cbd-cogs/-/tree/master/Scrub) used ClearURLs to filter/clean URLs as cog for the Red Discord bot * [Scrub](https://gitlab.com/CrunchBangDev/cbd-cogs/-/tree/master/Scrub) used ClearURLs to filter/clean URLs as cog for the Red Discord bot
* [Unalix](https://github.com/AmanoTeam/Unalix) a simple Python module that removes tracking fields from URLs and unshort shortened URLs
* [Unalix-nim](https://github.com/AmanoTeam/Unalix-nim) a simple Nim library that removes tracking fields from URLs and unshort shortened URLs
## Recommended by... ## Recommended by...
* [ghacks-user.js](https://github.com/ghacksuserjs/ghacks-user.js/wiki/4.1-Extensions) * [ghacks-user.js](https://github.com/ghacksuserjs/ghacks-user.js/wiki/4.1-Extensions)
@@ -98,8 +92,14 @@ We use some third-party scripts in our add-on. The authors and licenses are list
- [jQuery v3.4.1](https://github.com/jquery/jquery/tree/3.4.1) | - [jQuery v3.4.1](https://github.com/jquery/jquery/tree/3.4.1) |
Copyright JS Foundation and other contributors | Copyright JS Foundation and other contributors |
[MIT](https://jquery.org/license/) [MIT](https://jquery.org/license/)
- [sha256.jquery.plugin](https://github.com/orsozed/sha256.jquery.plugin) |
Copyright 2003, Christoph Bichlmeier |
[MIT](https://raw.github.com/orsozed/JQuery-Plugins/master/license/MIT-LICENSE.txt) |
[GPLv2](https://raw.github.com/orsozed/JQuery-Plugins/master/license/GPL-LICENSE.txt)
- [DataTables v1.10.20](https://github.com/DataTables/DataTables/tree/master) | Copyright (c) 2008-2015 SpryMedia Limited | [MIT](https://datatables.net/license/) - [DataTables v1.10.20](https://github.com/DataTables/DataTables/tree/master) | Copyright (c) 2008-2015 SpryMedia Limited | [MIT](https://datatables.net/license/)
- [Pickr v1.7.0](https://github.com/Simonwep/pickr/tree/1.7.0) | Copyright (c) 2018 - 2020 Simon Reinisch | - [Popper.js v1.16.0](https://github.com/popperjs/popper.js/tree/v1.16.0) | Copyright (c) 2016 Federico Zivolo and contributors |
[MIT](https://github.com/Simonwep/pickr/blob/master/LICENSE) [MIT](https://github.com/popperjs/popper.js/blob/master/LICENSE.md)
- [Bootstrap Colorpicker v3.2.0](https://github.com/itsjavi/bootstrap-colorpicker/tree/3.2.0) | Copyright (c) 2017 Javi Aguilar |
[MIT](https://github.com/itsjavi/bootstrap-colorpicker/blob/master/LICENSE)
- [Font Awesome v5.12.0](https://github.com/FortAwesome/Font-Awesome/tree/5.12.0) | Copyright (c) @fontawesome | - [Font Awesome v5.12.0](https://github.com/FortAwesome/Font-Awesome/tree/5.12.0) | Copyright (c) @fontawesome |
[Font Awesome Free License](https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt) [Font Awesome Free License](https://github.com/FortAwesome/Font-Awesome/blob/master/LICENSE.txt)

View File

@@ -20,7 +20,7 @@
"description": "Dieser Statuscode besagt, dass beim Aktualisieren der ClearURLs-Regeln ein Fehler aufgetreten ist." "description": "Dieser Statuscode besagt, dass beim Aktualisieren der ClearURLs-Regeln ein Fehler aufgetreten ist."
}, },
"log_redirect": { "log_redirect": {
"message": "Diese URL wurde weiter geleitet", "message": "Diese Url wurde weiter geleitet",
"description": "Diese Zeichenfolge wird für Umleitungen im ClearURL-Protokoll verwendet." "description": "Diese Zeichenfolge wird für Umleitungen im ClearURL-Protokoll verwendet."
}, },
"log_domain_blocked": { "log_domain_blocked": {
@@ -68,7 +68,7 @@
"description": "Diese Zeichenfolge wird als Name für die Filterschaltfläche auf der Popup-Seite verwendet." "description": "Diese Zeichenfolge wird als Name für die Filterschaltfläche auf der Popup-Seite verwendet."
}, },
"popup_html_configs_switch_filter_title": { "popup_html_configs_switch_filter_title": {
"message": "Der Filter-Schalter aktiviert die Reinigungsfunktion von ClearURLs, wenn Sie die Funktion ausschalten, dann deaktivieren Sie das gesamte Add-on", "message": "Der Filter-Schalter aktiviert die Reinigungsfunktion von ClearURLs, wenn sie die Funktion ausschalten, dann deaktivieren sie das gesamte Addon",
"description": "Diese Zeichenfolge wird als Titel für die Filterschaltfläche auf der Popup-Seite verwendet." "description": "Diese Zeichenfolge wird als Titel für die Filterschaltfläche auf der Popup-Seite verwendet."
}, },
"popup_html_configs_switch_log": { "popup_html_configs_switch_log": {
@@ -112,7 +112,7 @@
"description": "Diese Zeichenfolge wird als Titel für die Schaltfläche zum Zurücksetzen der Statistik auf der Popup-Seite verwendet." "description": "Diese Zeichenfolge wird als Titel für die Schaltfläche zum Zurücksetzen der Statistik auf der Popup-Seite verwendet."
}, },
"popup_html_rules_status_head": { "popup_html_rules_status_head": {
"message": "Regel-Status", "message": "Regel Status",
"description": "Diese Zeichenfolge wird als Titel für den Abschnitt \"Regelstatus\" auf der Popup-Seite verwendet." "description": "Diese Zeichenfolge wird als Titel für den Abschnitt \"Regelstatus\" auf der Popup-Seite verwendet."
}, },
"popup_html_log_head": { "popup_html_log_head": {
@@ -136,7 +136,7 @@
"description": "Diese Zeichenfolge teilt dem Benutzer mit, dass ClearURLs die Einstellungen auf der Festplatte gespeichert hat." "description": "Diese Zeichenfolge teilt dem Benutzer mit, dass ClearURLs die Einstellungen auf der Festplatte gespeichert hat."
}, },
"core_error": { "core_error": {
"message": "[ClearURLs]: Das Add-on konnte nicht gestartet werden.", "message": "[ClearURLs]: Das Addon konnte nicht gestartet werden.",
"description": "Diese Zeichenfolge teilt dem Benutzer mit, dass ClearURLs nicht gestartet werden konnten." "description": "Diese Zeichenfolge teilt dem Benutzer mit, dass ClearURLs nicht gestartet werden konnten."
}, },
"configs_switch_statistics": { "configs_switch_statistics": {
@@ -164,11 +164,11 @@
"description": "Diese Zeichenfolge wird als Titel für die Schaltfläche zum Zurücksetzen auf der Einstellungsseite verwendet." "description": "Diese Zeichenfolge wird als Titel für die Schaltfläche zum Zurücksetzen auf der Einstellungsseite verwendet."
}, },
"setting_rule_url_label": { "setting_rule_url_label": {
"message": "Die URL zu der data.json Datei (Regeln)", "message": "Die Url zu der data.json Datei (Regeln)",
"description": "Diese Zeichenfolge wird als Name für die Regel-URL-Bezeichnung verwendet." "description": "Diese Zeichenfolge wird als Name für die Regel-URL-Bezeichnung verwendet."
}, },
"settings_html_save_button": { "settings_html_save_button": {
"message": "Speichern & Add-on neustarten", "message": "Speichern & Addon neustarten",
"description": "Diese Zeichenfolge wird als Name für die Schaltfläche zum Speichern und erneuten Laden auf der Einstellungsseite verwendet." "description": "Diese Zeichenfolge wird als Name für die Schaltfläche zum Speichern und erneuten Laden auf der Einstellungsseite verwendet."
}, },
"settings_html_save_button_title": { "settings_html_save_button_title": {
@@ -192,11 +192,11 @@
"description": "Hinweis: Wird derzeit nicht verwendet." "description": "Hinweis: Wird derzeit nicht verwendet."
}, },
"error_report_url": { "error_report_url": {
"message": "Es sieht so aus, als sei diese URL schon gemeldet worden.", "message": "Es schaut so aus, als ob diese URL schon gemeldet wurde.",
"description": "Hinweis: Wird derzeit nicht verwendet." "description": "Hinweis: Wird derzeit nicht verwendet."
}, },
"donate_button": { "donate_button": {
"message": "Eine Schenkung (Spende) für den ClearURLs-Urheber", "message": "Eine Spende (Schenkung) für den ClearURLs Urheber.",
"description": "Diese Zeichenfolge wird verwendet, um auf eine Spendenseite zu verweisen." "description": "Diese Zeichenfolge wird verwendet, um auf eine Spendenseite zu verweisen."
}, },
"clipboard_copy_link": { "clipboard_copy_link": {
@@ -272,7 +272,7 @@
"description": "Diese Zeichenfolge wird als Titel für die Schaltfläche zum Importieren auf der Einstellungsseite verwendet." "description": "Diese Zeichenfolge wird als Titel für die Schaltfläche zum Importieren auf der Einstellungsseite verwendet."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Limitiert das Protokoll auf $LIMIT$ Einträge.", "message": "Limitiert das Protokoll auf $LIMIT$ Einträge. (-1 := ∞)",
"description": "Diese Zeichenfolge wird als Name für das Protokolllimit verwendet.", "description": "Diese Zeichenfolge wird als Name für das Protokolllimit verwendet.",
"placeholders": { "placeholders": {
"limit": { "limit": {
@@ -286,7 +286,7 @@
"description": "Diese Zeichenfolge wird als Titel auf der Hinweisseite für blockierte Seiten verwendet." "description": "Diese Zeichenfolge wird als Titel auf der Hinweisseite für blockierte Seiten verwendet."
}, },
"blocked_html_body": { "blocked_html_body": {
"message": "Diese Seite wurde vom <b>ClearURLs</b>-Add-on blockiert, weil wir sie als Werbe- bzw. Trackingservice identifiziert haben. Um diese Seite zu besuchen, müssen Sie das Add-on temporär deaktivieren oder in den Einstellungen von ClearURLs das Domain-Blocking deaktivieren. Dann können Sie auf den untenstehenden Button klicken, um die Seite aufzurufen.", "message": "Diese Seite wurde vom <b>ClearURLs</b> Add-On blockiert, weil wir sie als Werbe- bzw. Trackingservice identifiziert haben. Um diese Seite zu besuchen, müssen Sie das Add-On temporär deaktivieren oder in den Einstellungen von ClearURLs das Domain-Blocking deaktivieren. Dann können Sie auf den untenstehenden Button klicken, um die Seite aufzurufen.",
"description": "Diese Zeichenfolge wird als Mengentext auf der Hinweisseite für blockierte Seiten verwendet." "description": "Diese Zeichenfolge wird als Mengentext auf der Hinweisseite für blockierte Seiten verwendet."
}, },
"blocked_html_button": { "blocked_html_button": {
@@ -320,16 +320,16 @@
"description": "Diese Zeichenkette wird als Titel für das Domain-Blocking verwendet." "description": "Diese Zeichenkette wird als Titel für das Domain-Blocking verwendet."
}, },
"log_ping_blocked": { "log_ping_blocked": {
"message": "Diese Hyperlink-Auditing-Anfrage wurde blockiert", "message": "Diese Hyperlink Auditing Anfrage wurde blockiert",
"description": "Diese Zeichenfolge wird für blockierte Hyperlink-Auditing-Anfragen im ClearURL-Protokoll verwendet." "description": "Diese Zeichenfolge wird für blockierte Hyperlink Auditing Anfragen im ClearURL-Protokoll verwendet."
}, },
"ping_blocking_enabled": { "ping_blocking_enabled": {
"message": "Blockiere Hyperlink-Auditing-Anfragen (siehe auch <a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>diese Spezifikation</a>)", "message": "Blockiere Hyperlink Auditing Anfragen (Siehe auch <a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>diese Spezifikation</a>)",
"description": "Diese Zeichenkette wird als Beschreibung für das Hyperlink Auditing-Blocking verwendet." "description": "Diese Zeichenkette wird als Beschreibung für das Hyperlink Auditing-Blocking verwendet."
}, },
"ping_blocking_enabled_title": { "ping_blocking_enabled_title": {
"message": "Blockiere Hyperlink-Auditing-Anfragen", "message": "Blockiere Hyperlink Auditing Anfragen",
"description": "Diese Zeichenkette wird als Titel für das Hyperlink-Auditing-Blocking verwendet." "description": "Diese Zeichenkette wird als Titel für das Hyperlink Auditing-Blocking verwendet."
}, },
"extension_description": { "extension_description": {
"message": "Entfernt Tracking-Elemente von URLs.", "message": "Entfernt Tracking-Elemente von URLs.",
@@ -346,33 +346,5 @@
"eTag_filtering_enabled_title": { "eTag_filtering_enabled_title": {
"message": "Filtert ETag-Header. Info: Cache muss vor der ersten Benutzung geleert werden.", "message": "Filtert ETag-Header. Info: Cache muss vor der ersten Benutzung geleert werden.",
"description": "Diese Zeichenkette wird als Titel für das Filtern von ETag-Headern verwendet." "description": "Diese Zeichenkette wird als Titel für das Filtern von ETag-Headern verwendet."
},
"popup_html_rules_status_head_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
},
"popup_html_statistics_percentage_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
},
"popup_html_statistics_blocked_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
},
"popup_html_statistics_elements_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
},
"popup_html_statistics_head_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
},
"popup_html_configs_head_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
},
"context_menu_enabled_title": {
"message": "Nachricht",
"description": "nur zur Fehlerbehebung benötigt"
} }
} }

View File

@@ -272,7 +272,7 @@
"description": "This string is used as title for the import button on the settings page." "description": "This string is used as title for the import button on the settings page."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Limit the log to $LIMIT$ entries.", "message": "Limit the log to $LIMIT$ entries. (-1 := ∞)",
"description": "This string is used as name for the log limit label.", "description": "This string is used as name for the log limit label.",
"placeholders": { "placeholders": {
"limit": { "limit": {
@@ -346,33 +346,5 @@
"eTag_filtering_enabled_title": { "eTag_filtering_enabled_title": {
"message": "Filters ETag headers. Hint: Cache must be cleared before first use.", "message": "Filters ETag headers. Hint: Cache must be cleared before first use.",
"description": "This string is used as title for the ETag header filtering switch" "description": "This string is used as title for the ETag header filtering switch"
},
"popup_html_rules_status_head_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_percentage_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_blocked_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_elements_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_head_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_configs_head_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"context_menu_enabled_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
} }
} }

View File

@@ -272,7 +272,7 @@
"description": "This string is used as title for the import button on the settings page." "description": "This string is used as title for the import button on the settings page."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Limitar el tamaño del registro a $LIMIT$ eventos.", "message": "Limitar el tamaño del registro a $LIMIT$ eventos. (-1 := ∞)",
"description": "This string is used as name for the log limit label.", "description": "This string is used as name for the log limit label.",
"placeholders": { "placeholders": {
"limit": { "limit": {

View File

@@ -272,7 +272,7 @@
"description": "Sert à afficher la signification de la fonction sur la page qui affiche les options." "description": "Sert à afficher la signification de la fonction sur la page qui affiche les options."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Nombre déléments à enregistrer dans le journal, $LIMIT$ de -1 à linfini", "message": "Nombre déléments à enregistrer dans le journal, $LIMIT$ de -1 à linfini (-1 := ∞)",
"description": "Sert à afficher la signification de la fonction sur la page qui affiche les options.", "description": "Sert à afficher la signification de la fonction sur la page qui affiche les options.",
"placeholders": { "placeholders": {
"limit": { "limit": {

View File

@@ -272,7 +272,7 @@
"description": "This string is used as title for the import button on the settings page." "description": "This string is used as title for the import button on the settings page."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Limita le voci di log a $LIMIT$.", "message": "Limita le voci di log a $LIMIT$. (-1 := ∞)",
"description": "This string is used as name for the log limit label.", "description": "This string is used as name for the log limit label.",
"placeholders": { "placeholders": {
"limit": { "limit": {

View File

@@ -1,19 +1,19 @@
{ {
"hash_status_code_1": { "hash_status_code_1": {
"message": "最新", "message": "最新",
"description": "このステータスコードは、ClearURLs ルールの更新が無く、すべてが最新であることを示しています。" "description": "このステータスコードは、ClearURLs ルールの更新が利用できず、すべてが最新であることを示しています。"
}, },
"hash_status_code_2": { "hash_status_code_2": {
"message": "更新しました", "message": "更新する",
"description": "このステータスコードは、ClearURLs ルールが正常に更新されたことを示しています。" "description": "このステータスコードは、ClearURLs ルールが正常に更新されたことを示しています。"
}, },
"hash_status_code_3": { "hash_status_code_3": {
"message": "更新が利用可能", "message": "利用可能な更新",
"description": "このステータスコードは、ClearURLs ルールの更新が利用可能であることを示しています。" "description": "このステータスコードは、ClearURLs ルールの更新が利用可能であることを示しています。"
}, },
"hash_status_code_4": { "hash_status_code_4": {
"message": "エラー", "message": "エラー",
"description": "このステータスコードは、ClearURLs 正しく開始できなかったことを示しています。" "description": "このステータスコードは、ClearURLs 正しく開始できなかったことを示しています。"
}, },
"hash_status_code_5": { "hash_status_code_5": {
"message": "おっと!何かが間違っていた!", "message": "おっと!何かが間違っていた!",
@@ -25,18 +25,18 @@
}, },
"log_domain_blocked": { "log_domain_blocked": {
"message": "このドメインはブロックされています", "message": "このドメインはブロックされています",
"description": "この文字列は、ClearURLs ログブロックされたドメインで使用されます。" "description": "この文字列は、ClearURLs ログブロックされたドメインで使用されます。"
}, },
"check_os_log": { "check_os_log": {
"message": "[ClearURLs]:ログリスナー追加ました。", "message": "[ClearURLs]:ログリスナー追加されました。",
"description": "この文字列は、ClearURLs ログの起動時に使用されます。" "description": "この文字列は、ClearURLs ログの起動時に使用されます。"
}, },
"log_html_page_title": { "log_html_page_title": {
"message": "ClearURLs のログ", "message": "ClearURLs からのログ",
"description": "この文字列は、ログページのヘッダーとして使用されます。" "description": "この文字列は、ログページのヘッダーとして使用されます。"
}, },
"log_html_table_head_1": { "log_html_table_head_1": {
"message": "処理", "message": "処理する前に",
"description": "この文字列は、ログページのテーブルタイトルとして使用されます。" "description": "この文字列は、ログページのテーブルタイトルとして使用されます。"
}, },
"log_html_table_head_2": { "log_html_table_head_2": {
@@ -44,7 +44,7 @@
"description": "この文字列は、ログページのテーブルタイトルとして使用されます。" "description": "この文字列は、ログページのテーブルタイトルとして使用されます。"
}, },
"log_html_table_head_3": { "log_html_table_head_3": {
"message": "ルール", "message": "規則",
"description": "この文字列は、ログページのテーブルタイトルとして使用されます。" "description": "この文字列は、ログページのテーブルタイトルとして使用されます。"
}, },
"log_html_table_head_4": { "log_html_table_head_4": {
@@ -120,7 +120,7 @@
"description": "この文字列は、ポップアップページのログボタンの名前として使用されます。" "description": "この文字列は、ポップアップページのログボタンの名前として使用されます。"
}, },
"popup_html_log_head_title": { "popup_html_log_head_title": {
"message": "ログを開く", "message": "記録を開く",
"description": "この文字列は、ポップアップページのログボタンのタイトルとして使用されます。" "description": "この文字列は、ポップアップページのログボタンのタイトルとして使用されます。"
}, },
"popup_html_report_button": { "popup_html_report_button": {
@@ -148,7 +148,7 @@
"description": "この文字列は、ポップアップページの統計情報切り替えボタンのタイトルとして使用されます。" "description": "この文字列は、ポップアップページの統計情報切り替えボタンのタイトルとして使用されます。"
}, },
"settings_html_page_title": { "settings_html_page_title": {
"message": "ClearURLs の設定", "message": "ClearURLs からの設定",
"description": "この文字列は、設定ページのタイトルとして使用されます。" "description": "この文字列は、設定ページのタイトルとして使用されます。"
}, },
"badged_color_label": { "badged_color_label": {
@@ -200,7 +200,7 @@
"description": "この文字列は、寄付ページを参照するために使用されます。" "description": "この文字列は、寄付ページを参照するために使用されます。"
}, },
"clipboard_copy_link": { "clipboard_copy_link": {
"message": "クリーンリンクコピー", "message": "クリーンリンクの Location位置情報コピー",
"description": "この文字列は、コンテキストメニューでクリーンリンクをコピーするために使用されます。" "description": "この文字列は、コンテキストメニューでクリーンリンクをコピーするために使用されます。"
}, },
"context_menu_enabled": { "context_menu_enabled": {
@@ -230,149 +230,5 @@
"cleaning_tool_clean_urls_label": { "cleaning_tool_clean_urls_label": {
"message": "ここで、クリーンアップされた URL を見つけることができます。", "message": "ここで、クリーンアップされた URL を見つけることができます。",
"description": "この文字列は、クリーン URL のクリーニングツールページのタイトルとして使用されます。" "description": "この文字列は、クリーン URL のクリーニングツールページのタイトルとして使用されます。"
},
"local_hosts_skipping": {
"message": "ローカルホストの URL をスキップする (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, 169.254.0.0/16, 127.0.0.1, localhost)",
"description": "この文字列は、ローカルホストのスキップスイッチのラベルとして使用されます。"
},
"local_hosts_skipping_title": {
"message": "ローカルホストの URL をスキップ",
"description": "この文字列は、ローカルホストのスキップスイッチのタイトルとして使用されます。"
},
"log_html_export_button": {
"message": "エクスポート",
"description": "この文字列は、ログページのエクスポートボタンに使用されます。"
},
"log_html_export_button_title": {
"message": "グローバルログをエクスポートする",
"description": "この文字列は、ログページのエクスポートボタンのタイトルとして使用されます。"
},
"log_html_import_button": {
"message": "インポート",
"description": "この文字列は、ログページのインポートボタンに使用されます。\n"
},
"log_html_import_button_title": {
"message": "グローバルログのインポート",
"description": "この文字列は、ログページのインポートボタンのタイトルとして使用されます。"
},
"setting_html_export_button": {
"message": "エクスポート",
"description": "この文字列は、設定ページのエクスポートボタンの名前として使用されます。\n"
},
"setting_html_export_button_title": {
"message": "すべてをエクスポートする",
"description": "この文字列は、設定ページのエクスポートボタンのタイトルとして使用されます。"
},
"setting_html_import_button": {
"message": "インポート",
"description": "この文字列は、設定画面のリセットボタンの名前として使用されます。"
},
"setting_html_import_button_title": {
"message": "すべてをインポートする",
"description": "この文字列は、設定ページのインポートボタンのタイトルとして使用されます。"
},
"setting_log_limit_label": {
"message": "ログのエントリを $LIMIT$ に制限します。",
"description": "この文字列は、ログリミットラベルの名前として使用されます。",
"placeholders": {
"limit": {
"content": "$1",
"example": "100"
}
}
},
"blocked_html_title": {
"message": "このサイトは <b>ClearURLs</b> よってブロックされました。",
"description": "この文字列は、ブロックされたサイトのページのタイトルとして使用されます。"
},
"blocked_html_body": {
"message": "このサイトは <b>ClearURLs</b> アドオンによってブロックされました。このサイトを訪問するには、アドオンを一時的に無効にするか、ClearURLs の設定でドメインブロックを無効にする必要があります。その対処後、下のボタンをクリックしてページを読み込むことができます。",
"description": "この文字列は、ブロックされたサイトページの本文として使用されます。"
},
"blocked_html_button": {
"message": "ページを見る",
"description": "この文字列は、ブロックされたサイトのページのボタンとして使用されます。"
},
"referral_marketing_enabled": {
"message": "Referral marketing口コミなどの紹介商法を許可する",
"description": "この文字列は、Referral marketing口コミなどの紹介商法スイッチのラベルとして使用されます。"
},
"referral_marketing_enabled_title": {
"message": "Referral marketing口コミなどの紹介商法を許可する",
"description": "この文字列は、Referral marketing口コミなどの紹介商法スイッチのタイトルとして使用されます。"
},
"watchdog": {
"message": "[ClearURLs]: システム監視ツールのウォッチドッグが問題を検出し、すでに $TIMES$ 回失敗しています。",
"description": "この文字列は、システム監視ツール・ウォッチドッグのテキストとして使用されます。",
"placeholders": {
"times": {
"content": "$1",
"example": "3"
}
}
},
"domain_blocking_enabled": {
"message": "ドメインブロックを許可するAdBlocker を許可していないページで問題が発生する可能性があります。)",
"description": "この文字列はドメインブロッキングスイッチのラベルとして使用されます。"
},
"domain_blocking_enabled_title": {
"message": "ドメインブロックを許可するAdBlocker を許可していないページで問題が発生する可能性があります。)",
"description": "この文字列は、ドメインブロッキングスイッチのタイトルとして使用されます。"
},
"log_ping_blocked": {
"message": "このハイパーリンク監査はブロックされました",
"description": "この文字列は、ClearURLs ログのハイパーリンク監査で使用されます。"
},
"ping_blocking_enabled": {
"message": "ハイパーリンク監査をブロックする (<a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>この記事</a>も参照してください)",
"description": "この文字列は、ハイパーリンク監査ブロッキングスイッチのラベルとして使用されます。"
},
"ping_blocking_enabled_title": {
"message": "ハイパーリンク監査をブロックする",
"description": "この文字列は、ハイパーリンク監査ブロッキングスイッチのタイトルとして使用されます。"
},
"extension_description": {
"message": "URL からトラッキング要素を削除します。",
"description": "拡張機能の説明(最大 132 文字)"
},
"eTag_filtering_log": {
"message": "このリクエストから ETag ヘッダが削除されました。",
"description": "この文字列は、ClearURLs ログの ETag ヘッダフィルタリングで使用されます。"
},
"eTag_filtering_enabled": {
"message": "リクエストから ETag ヘッダをフィルタリングします (<a href='https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags' target='_blank'> この記事 </a> も参照してください)",
"description": "この文字列は、ETag ヘッダフィルタリングスイッチのラベルとして使用されます。"
},
"eTag_filtering_enabled_title": {
"message": "ETag ヘッダをフィルタリングします。ヒント: 最初に使用する前にキャッシュをクリアしなければなりません。",
"description": "この文字列は、ETag ヘッダフィルタリングスイッチのタイトルとして使用されます。"
},
"popup_html_rules_status_head_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
},
"popup_html_statistics_percentage_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
},
"popup_html_statistics_blocked_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
},
"popup_html_statistics_elements_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
},
"popup_html_statistics_head_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
},
"popup_html_configs_head_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
},
"context_menu_enabled_title": {
"message": "メッセージ",
"description": "例外を防ぐためにのみ必要"
} }
} }

View File

@@ -1,273 +0,0 @@
{
"hash_status_code_1": {
"message": "up-to-date",
"description": "Deze statuscode betekent dat er geen update voor de ClearURLs-regels beschikbaar is. Alles is up-to-date."
},
"hash_status_code_2": {
"message": "geüpdatet",
"description": "Deze statuscode betekent dat de ClearURLs-regels succesvol geüpdatet zijn."
},
"hash_status_code_3": {
"message": "update beschikbaar",
"description": "Deze statuscode betekent dat er een update beschikbaar is voor de ClearURLs-regels."
},
"hash_status_code_4": {
"message": "error",
"description": "Deze statuscode betekent dat ClearURLs niet correct gestart kon worden."
},
"hash_status_code_5": {
"message": "Oeps, er ging iets mis!",
"description": "Deze statuscode betekent dat er iets mis ging tijdens het updaten van de ClearURLs-regels."
},
"log_redirect": {
"message": "Deze URL werd doorgestuurd",
"description": "Deze string wordt in de ClearURLs-log gebruikt voor redirects."
},
"log_domain_blocked": {
"message": "Dit domein wordt geblokkeerd",
"description": "Deze string wordt in de ClearURLs-log gebruikt voor geblokkeerde domeinen."
},
"check_os_log": {
"message": "[ClearURLs]: Log listener is toegevoegd",
"description": "Deze string wordt gebruikt wanneer de ClearURLs-log start."
},
"log_html_page_title": {
"message": "ClearURLs-log",
"description": "Deze string wordt als titel op de logpagina gebruikt"
},
"log_html_table_head_1": {
"message": "Voor opschoning",
"description": "Deze string wordt gebruikt als tabeltitel op de logpagina."
},
"log_html_table_head_2": {
"message": "Na verwerking"
},
"log_html_table_head_3": {
"message": "Regel"
},
"log_html_table_head_4": {
"message": "Tijd"
},
"log_html_reset_button": {
"message": "Reset"
},
"log_html_reset_button_title": {
"message": "Reset de globale log"
},
"popup_html_configs_head": {
"message": "Opties"
},
"popup_html_configs_switch_filter": {
"message": "Filter"
},
"popup_html_configs_switch_filter_title": {
"message": "De “Filter”-knop activeert de opschoonfunctionaliteit van ClearURLs. Als je deze uit zet, dan zet je de hele add-on uit"
},
"popup_html_configs_switch_log": {
"message": "Loggen"
},
"popup_html_configs_switch_log_title": {
"message": "Je log wordt alleen lokaal bewaard. We raden aan dit uit te laten staan als je het niet nodig hebt"
},
"popup_html_configs_switch_badges": {
"message": "Badges"
},
"popup_html_configs_switch_badges_title": {
"message": "Laat het aantal opgeschoonde URLs zien"
},
"popup_html_statistics_head": {
"message": "Statistieken"
},
"popup_html_statistics_elements": {
"message": "Elementen"
},
"popup_html_statistics_blocked": {
"message": "Geblokkeerd"
},
"popup_html_statistics_percentage": {
"message": "Percentage"
},
"popup_html_statistics_reset_button": {
"message": "Reset"
},
"popup_html_statistics_reset_button_title": {
"message": "Reset de globale statistieken"
},
"popup_html_rules_status_head": {
"message": "Status van de regels"
},
"popup_html_log_head_title": {
"message": "Open de log"
},
"popup_html_report_button": {
"message": "Rapporteer huidige URL"
},
"popup_html_report_button_title": {
"message": "Rapporteer URL van dit tabblad"
},
"core_save_on_disk": {
"message": "[ClearURLs]: Sla op naar je hardeschijf"
},
"core_error": {
"message": "[ClearURLs]: De add-on kon niet starten."
},
"configs_switch_statistics": {
"message": "Statistieken"
},
"configs_switch_statistics_title": {
"message": "Houd statistieken bij"
},
"settings_html_page_title": {
"message": "ClearURLs-instellingen"
},
"badged_color_label": {
"message": "Badge-kleur"
},
"setting_html_reset_button": {
"message": "Reset"
},
"setting_html_reset_button_title": {
"message": "Reset alles"
},
"setting_rule_url_label": {
"message": "De URL naar het “data.json”-bestand (regels)"
},
"settings_html_save_button": {
"message": "Sla op en herlaad de add-on"
},
"settings_html_save_button_title": {
"message": "Slaat de instellingen op"
},
"setting_hash_url_label": {
"message": "De URL naar het “rules.hash”-bestand (hash)"
},
"setting_types_label": {
"message": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'>Request-types</a> (voor geavanceerde gebruikers)"
},
"setting_report_server_label": {
"message": "Rapportage-server voor URLs"
},
"success_report_url": {
"message": "De URL werd succesvol gerapporteerd. We checken hem snel."
},
"error_report_url": {
"message": "Het lijkt er op dat deze URL al eerder gerapporteerd werd."
},
"donate_button": {
"message": "Een donatie voor de ontwikkelaar van ClearURLs."
},
"clipboard_copy_link": {
"message": "Kopiëer schone link-URL"
},
"context_menu_enabled": {
"message": "Laat optie in het contextmenu zien"
},
"history_listener_enabled": {
"message": "Voorkom tracking injection over de history API (Zie: <a href='https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState()_method' target='_blank'>replaceState() method</a>)"
},
"cleaning_tool_page_title": {
"message": "ClearURLs opschoon-tool"
},
"cleaning_tool_description": {
"message": "Met deze tool kun je URLs plakken die ClearURLs vervolgens met één klik op de groene knop voor je opschoont. Je kunt meerdere URLs plakken, één per regel."
},
"cleaning_tool_btn": {
"message": "Schoon URLs op"
},
"cleaning_tool_dirty_urls_label": {
"message": "Plak hier de URLs met tracking-parameters:"
},
"cleaning_tool_clean_urls_label": {
"message": "Hier vind je de opgeschoonde URLs:"
},
"local_hosts_skipping": {
"message": "Sla URLs op lokale hosts (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, 169.254.0.0/16, 127.0.0.1, localhost) over"
},
"local_hosts_skipping_title": {
"message": "Sla URLs op lokale hosts over"
},
"log_html_export_button": {
"message": "Exporteer"
},
"log_html_export_button_title": {
"message": "Exporteer de globale log"
},
"log_html_import_button": {
"message": "Importeer"
},
"log_html_import_button_title": {
"message": "Importeer de globale log"
},
"setting_html_export_button": {
"message": "Exporteer"
},
"setting_html_export_button_title": {
"message": "Exporteer alles"
},
"setting_html_import_button": {
"message": "Importeer"
},
"setting_html_import_button_title": {
"message": "Importeer alles"
},
"setting_log_limit_label": {
"message": "Beperk de log tot $LIMIT$ regels.",
"placeholders": {
"limit": {
"content": "$1",
"example": "100"
}
}
},
"blocked_html_title": {
"message": "Deze site werd geblokkeerd door <b>ClearURLs</b>"
},
"blocked_html_body": {
"message": "Deze site werd geblokkeerd door de <b>ClearURLs</b>-add-on omdat we hem herkenden als een advertentie- en/of tracking-service. Om deze site toch te bezoeken moet je de add-on tijdelijk deactiveren, of het blokkeren van domeinen in de instellingen uitzetten. Klik daarna op onderstaande knop om de pagina te herladen."
},
"blocked_html_button": {
"message": "Bezoek pagina"
},
"watchdog": {
"message": "[ClearURLs]: De “watchdog” liep tegen een probleem aan en is al $TIMES$ keer gefaald.",
"placeholders": {
"times": {
"content": "$1",
"example": "3"
}
}
},
"domain_blocking_enabled": {
"message": "Sta het blokkeren van domeinen toe. (Dit kan problemen veroorzaken op pagina's die ad blockers niet toestaan.)"
},
"domain_blocking_enabled_title": {
"message": "Sta het blokkeren van domeinen toe. (Dit kan problemen veroorzaken op pagina's die ad blockers niet toestaan.)"
},
"log_ping_blocked": {
"message": "Deze “hyperlink auditing” werd geblokkeerd"
},
"ping_blocking_enabled": {
"message": "Blokkeer “hyperlink auditing”. (Zie <a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>dit artikel</a>)"
},
"ping_blocking_enabled_title": {
"message": "Blokkeer “hyperlink auditing”"
},
"extension_description": {
"message": "Verwijder tracking-elementen uit URLs."
},
"eTag_filtering_log": {
"message": "De “ETag header” werd van deze request verwijderd"
},
"eTag_filtering_enabled": {
"message": "Filter “Etag headers” van requests. (Zie <a href='https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags' target='_blank'>dit artikel</a>)"
},
"eTag_filtering_enabled_title": {
"message": "Filter “Etag headers”. Hint: De cache moet geleegd worden vóór het eerste gebruik."
},
"popup_html_rules_status_head_title": {
"message": "bericht"
},
"popup_html_statistics_percentage_title": {
"message": "bericht"
}
}

View File

@@ -1,254 +0,0 @@
{
"hash_status_code_1": {
"message": "em dia"
},
"hash_status_code_2": {
"message": "atualizadas"
},
"hash_status_code_3": {
"message": "atualização disponível"
},
"hash_status_code_4": {
"message": "erro"
},
"hash_status_code_5": {
"message": "Ups! Qualquer coisa correu mal."
},
"log_redirect": {
"message": "Este URL é um reencaminhamento"
},
"log_domain_blocked": {
"message": "Este domínio está bloqueado"
},
"check_os_log": {
"message": "[ClearURLs]: O observador de registos foi adicionado."
},
"log_html_page_title": {
"message": "Registo de funcionamento do ClearURLs"
},
"log_html_table_head_1": {
"message": "Antes do processamento"
},
"log_html_table_head_2": {
"message": "Depois do processamento"
},
"log_html_table_head_3": {
"message": "Regra"
},
"log_html_table_head_4": {
"message": "Data"
},
"log_html_reset_button": {
"message": "Limpar"
},
"log_html_reset_button_title": {
"message": "Limpa o registo."
},
"popup_html_configs_head": {
"message": "Configurações"
},
"popup_html_configs_switch_filter": {
"message": "Filtro"
},
"popup_html_configs_switch_filter_title": {
"message": "O interruptor do filtro controla a função de limpeza do ClearURLs. Se desativar esta opção, a extensão será desativada."
},
"popup_html_configs_switch_log": {
"message": "Registo de Operação"
},
"popup_html_configs_switch_log_title": {
"message": "O registo é apenas guardado localmente. Aconselhamos que não use esta função se ela não for necessária."
},
"popup_html_configs_switch_badges": {
"message": "Crachás"
},
"popup_html_configs_switch_badges_title": {
"message": "Mostrar o número de URLs limpos."
},
"popup_html_statistics_head": {
"message": "Estatísticas"
},
"popup_html_statistics_elements": {
"message": "Elementos"
},
"popup_html_statistics_blocked": {
"message": "Bloqueados"
},
"popup_html_statistics_percentage": {
"message": "Percentagem"
},
"popup_html_statistics_reset_button": {
"message": "Repor"
},
"popup_html_statistics_reset_button_title": {
"message": "Repõe as estatísticas globais"
},
"popup_html_rules_status_head": {
"message": "Estado das regras"
},
"popup_html_log_head": {
"message": "Registo"
},
"popup_html_log_head_title": {
"message": "Abre o registo de operação"
},
"popup_html_report_button": {
"message": "Denunciar URL atual"
},
"popup_html_report_button_title": {
"message": "Denuncia o URL atual deste separador."
},
"core_save_on_disk": {
"message": "[ClearURLs]: Guardar definições no disco."
},
"core_error": {
"message": "[ClearURLs]: Não foi possível iniciar a extensão"
},
"configs_switch_statistics": {
"message": "Estatísticas"
},
"configs_switch_statistics_title": {
"message": "Ativar ou desativar a função de estatística"
},
"settings_html_page_title": {
"message": "Definições do ClearURLs"
},
"badged_color_label": {
"message": "Cor dos crachás"
},
"setting_html_reset_button": {
"message": "Repor"
},
"setting_html_reset_button_title": {
"message": "Repõe as definições de fábrica"
},
"setting_rule_url_label": {
"message": "URL do ficheiro data.json (regras)"
},
"settings_html_save_button": {
"message": "Guardar e reiniciar extensão"
},
"settings_html_save_button_title": {
"message": "Guarda as novas definições"
},
"setting_hash_url_label": {
"message": "URL do ficheiro rules.hash (soma de verificação das regras)"
},
"setting_types_label": {
"message": "<a href='https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType' target='_blank'>Tipos de pedidos</a> (expert level)"
},
"setting_report_server_label": {
"message": "Denunciar URLs do servidor"
},
"success_report_url": {
"message": "O URL foi denunciado com sucesso. Iremos verificá-lo brevemente."
},
"error_report_url": {
"message": "Parece que este URL já foi denunciado."
},
"donate_button": {
"message": "Uma doação para o criador do ClearURLs."
},
"clipboard_copy_link": {
"message": "Copiar ligação limpa."
},
"context_menu_enabled": {
"message": "Mostrar entrada no menu de contexto"
},
"history_listener_enabled": {
"message": "Prevenir injeção de rastreadores com a API do histórico (Ver mais: <a href='https://developer.mozilla.org/pt-BR/docs/Web/API/History_API#O_m%C3%A9todo_replaceState()' target='_blank'>O método replaceState()</a>)"
},
"cleaning_tool_page_title": {
"message": "Ferramenta de limpeza ClearURLs"
},
"cleaning_tool_description": {
"message": "Com esta ferramenta pode colar URLs e nós limpamo-los quando clicar no butão verde. Pode colar vários URLs de uma vez, mas devem estar em linhas separadas."
},
"cleaning_tool_btn": {
"message": "Limpar URLs"
},
"cleaning_tool_dirty_urls_label": {
"message": "Cole aqui os URLs sujos:"
},
"cleaning_tool_clean_urls_label": {
"message": "Aqui estão os URLs limpos:"
},
"local_hosts_skipping": {
"message": "Ignorar URLs de anfitriões locais (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, 169.254.0.0/16, 127.0.0.1, localhost)"
},
"local_hosts_skipping_title": {
"message": "Ignora os URLs em páginas de anfitriões locais"
},
"log_html_export_button": {
"message": "Exportar"
},
"log_html_export_button_title": {
"message": "Exporta o registo de atividade"
},
"log_html_import_button": {
"message": "Importar"
},
"log_html_import_button_title": {
"message": "Importa o registo de atividade"
},
"setting_html_export_button": {
"message": "Exportar"
},
"setting_html_export_button_title": {
"message": "Exporta tudo"
},
"setting_html_import_button": {
"message": "Importar"
},
"setting_html_import_button_title": {
"message": "Importa tudo"
},
"setting_log_limit_label": {
"message": "Limitar o registo a $LIMIT$ entradas. (-1 significa ∞)"
},
"blocked_html_title": {
"message": "Este site foi bloqueado pelo <b>ClearURLs</b>"
},
"blocked_html_body": {
"message": "Este site foi bloqueado pela extensão <b>ClearURLs</b>, porque identificámos este site como um serviço de publicidade e/ou rastreamento. Para visitar este site, deve desativar a extensão temporáriamente ou desativar o bloqueio de domínio nas definições da extensão. Depois, clique no botão abaixo para carregar a página."
},
"blocked_html_button": {
"message": "Visitar página"
},
"referral_marketing_enabled": {
"message": "Permitir <i>referral marketing</i>"
},
"referral_marketing_enabled_title": {
"message": "Permite <i>referral marketing</i>"
},
"watchdog": {
"message": "[ClearURLs]: O watchdog detetou um problema e já falhou $TIMES$ vezes.\n"
},
"domain_blocking_enabled": {
"message": "Permitir o bloqueio de domínios (pode causar problemas em páginas que não permitem bloqueadores de anúncios)"
},
"domain_blocking_enabled_title": {
"message": "Permitir o bloqueio de domínios (pode causar problemas em páginas que não permitem bloqueadores de anúncios)"
},
"log_ping_blocked": {
"message": "Esta inspeção de ligação foi bloqueada"
},
"ping_blocking_enabled": {
"message": "Bloquear inspeção de ligações (Ver também <a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>este artigo</a>)"
},
"ping_blocking_enabled_title": {
"message": "Bloquear inspeção de ligações"
},
"extension_description": {
"message": "Remover elementos de rastreamento de URLs."
},
"eTag_filtering_log": {
"message": "O cabeçalho ETag foi removido deste pedido"
},
"eTag_filtering_enabled": {
"message": "Filtra cabeçalhos ETag dos pedidos (Ver também <a href='https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags' target='_blank'>este artigo</a>)"
},
"eTag_filtering_enabled_title": {
"message": "Filtrar cabeçalhos ETag. Dica: deve limpar a cache antes de começar a utlizar esta função."
}
}

View File

@@ -272,7 +272,7 @@
"description": "This string is used as title for the import button on the settings page." "description": "This string is used as title for the import button on the settings page."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Ограничивать журнал до $LIMIT$ записей", "message": "Ограничивать журнал до $LIMIT$ записей (-1 := ∞)",
"description": "This string is used as name for the log limit label.", "description": "This string is used as name for the log limit label.",
"placeholders": { "placeholders": {
"limit": { "limit": {

View File

@@ -1,71 +1,71 @@
{ {
"hash_status_code_1": { "hash_status_code_1": {
"message": "senaste version", "message": "senaste version",
"description": "Den här statuskoden säger att ingen uppdatering är tillgänglig för ClearURLs-reglerna och allt är uppdaterat." "description": "This status code says, that no update is available for the ClearURLs rules and everything is up to date."
}, },
"hash_status_code_2": { "hash_status_code_2": {
"message": "uppdaterad", "message": "uppdaterad",
"description": "Den här statuskoden säger att ClearURLs-reglerna har uppdaterats." "description": "This status code says, that the ClearURLs rules are successfully updated."
}, },
"hash_status_code_3": { "hash_status_code_3": {
"message": "uppdatering tillgänglig", "message": "uppdatering tillgänglig",
"description": "Den här statuskoden säger att en uppdatering är tillgänglig för ClearURLs-reglerna." "description": "This status code says, that an update is available for the ClearURLs rules."
}, },
"hash_status_code_4": { "hash_status_code_4": {
"message": "fel", "message": "fel",
"description": "Den här statuskoden säger att ClearURLs inte kunde startas korrekt." "description": "This status code says, that the ClearURLs could not be started correctly."
}, },
"hash_status_code_5": { "hash_status_code_5": {
"message": "Ojdå, något gick fel!", "message": "Ojdå, något gick fel!",
"description": "Den här statuskoden säger att ett fel inträffade vid uppdatering av ClearURLs-reglerna." "description": "This status code says, that an error occurred while updating the ClearURLs rules."
}, },
"log_redirect": { "log_redirect": {
"message": "Den här webbadressen omdirigeras", "message": "Den här webbadressen omdirigeras",
"description": "Den här strängen används vid omdirigeringar i ClearURLs-loggen." "description": "This string is used on redirections in the ClearURLs log."
}, },
"log_domain_blocked": { "log_domain_blocked": {
"message": "Den här domänen är blockerad", "message": "Den här domänen är blockerad",
"description": "Den här strängen används på blockerade domäner i ClearURLs-loggen." "description": "This string is used on blocked domains in the ClearURLs log."
}, },
"check_os_log": { "check_os_log": {
"message": "[ClearURLs]: Logglistare är tilllagd.", "message": "[ClearURLs]: Logglistare är tilllagd.",
"description": "Den här strängen används vid ClearURLs loggstart." "description": "This string is used on ClearURLs log startup."
}, },
"log_html_page_title": { "log_html_page_title": {
"message": "Logg från ClearURLs", "message": "Logg från ClearURLs",
"description": "Den här strängen används som rubrik på loggsidan." "description": "This string is used as header on the log page."
}, },
"log_html_table_head_1": { "log_html_table_head_1": {
"message": "Före bearbetning", "message": "Före bearbetning",
"description": "Den här strängen används som tabellnamn på loggsidan." "description": "This string is used as table title on the log page."
}, },
"log_html_table_head_2": { "log_html_table_head_2": {
"message": "Efter bearbetning", "message": "Efter bearbetning",
"description": "Den här strängen används som tabellnamn på loggsidan." "description": "This string is used as table title on the log page."
}, },
"log_html_table_head_3": { "log_html_table_head_3": {
"message": "Regel", "message": "Regel",
"description": "Den här strängen används som tabellnamn på loggsidan." "description": "This string is used as table title on the log page."
}, },
"log_html_table_head_4": { "log_html_table_head_4": {
"message": "Tid", "message": "Tid",
"description": "Den här strängen används som tabellnamn på loggsidan." "description": "This string is used as table title on the log page."
}, },
"log_html_reset_button": { "log_html_reset_button": {
"message": "Återställ", "message": "Återställ",
"description": "Den här strängen används för återställningsknappen på loggsidan." "description": "This string is used for the reset button on the log page."
}, },
"log_html_reset_button_title": { "log_html_reset_button_title": {
"message": "Återställ den globala loggen", "message": "Återställ den globala loggen",
"description": "Den här strängen används som titel för återställningsknappen på loggsidan." "description": "This string is used as title for the reset button on the log page."
}, },
"popup_html_configs_head": { "popup_html_configs_head": {
"message": "Konfiguration", "message": "Konfiguration",
"description": "Den här strängen används som titel för konfigurationerna på popup-sidan." "description": "This string is used as title for the configs on the popup page."
}, },
"popup_html_configs_switch_filter": { "popup_html_configs_switch_filter": {
"message": "Filter", "message": "Filter",
"description": "Den här strängen används som namn för filteromkopplarna på popup-sidan." "description": "This string is used as name for the filter switch button on the popup page."
}, },
"popup_html_configs_switch_filter_title": { "popup_html_configs_switch_filter_title": {
"message": "Filteromkopplaren aktiverar rensningsfunktionen i ClearURLs. Om du inaktiverar detta alternativ, är hela tillägget inaktiverat", "message": "Filteromkopplaren aktiverar rensningsfunktionen i ClearURLs. Om du inaktiverar detta alternativ, är hela tillägget inaktiverat",
@@ -272,7 +272,7 @@
"description": "This string is used as title for the import button on the settings page." "description": "This string is used as title for the import button on the settings page."
}, },
"setting_log_limit_label": { "setting_log_limit_label": {
"message": "Begränsa loggfilen till $LIMIT$ poster.", "message": "Begränsa loggfilen till $LIMIT$ poster. (-1 := ∞)",
"description": "This string is used as name for the log limit label.", "description": "This string is used as name for the log limit label.",
"placeholders": { "placeholders": {
"limit": { "limit": {
@@ -303,13 +303,7 @@
}, },
"watchdog": { "watchdog": {
"message": "[ClearURLs]: Ett problem har upptäckts. ClearURLs startar om.", "message": "[ClearURLs]: Ett problem har upptäckts. ClearURLs startar om.",
"description": "This string is used as text for the watchdog", "description": "This string is used as text for the watchdog"
"placeholders": {
"times": {
"content": "$1",
"example": "3"
}
}
}, },
"domain_blocking_enabled": { "domain_blocking_enabled": {
"message": "Tillåt domänblockering (Kan leda till problem på sidor som inte tillåter AdBlockers)", "message": "Tillåt domänblockering (Kan leda till problem på sidor som inte tillåter AdBlockers)",
@@ -318,61 +312,5 @@
"domain_blocking_enabled_title": { "domain_blocking_enabled_title": {
"message": "Tillåt domänblockering (Kan leda till problem på sidor som inte tillåter AdBlockers)", "message": "Tillåt domänblockering (Kan leda till problem på sidor som inte tillåter AdBlockers)",
"description": "This string is used as title for the domain blocking switch" "description": "This string is used as title for the domain blocking switch"
},
"log_ping_blocked": {
"message": "Den här hyperlänksrevisionen blockerades",
"description": "This string is used on hyperlink auditing in the ClearURLs log."
},
"ping_blocking_enabled": {
"message": "Blockera hyperlänkrevision (Se även <a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>den här artikeln</a>)",
"description": "This string is used as label for the hyperlink auditing blocking switch"
},
"ping_blocking_enabled_title": {
"message": "Blockera hyperlänkrevision",
"description": "This string is used as title for the hyperlink auditing blocking switch"
},
"extension_description": {
"message": "Ta bort spårningselement från webbadresser.",
"description": "Extension description (max. 132 characters)"
},
"eTag_filtering_log": {
"message": "ETag-rubriken togs bort från denna begäran",
"description": "This string is used on ETag header filtering in the ClearURLs log."
},
"eTag_filtering_enabled": {
"message": "Filtrera ETAG-rubriker från förfrågningar (Se även <a href='https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags' target='_blank'>den här artikeln</a>)",
"description": "This string is used as label for the ETag header filtering switch"
},
"eTag_filtering_enabled_title": {
"message": "Filtrera ETag-rubriker. Tips: Cachen måste rensas innan den används första gången.",
"description": "This string is used as title for the ETag header filtering switch"
},
"popup_html_rules_status_head_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_percentage_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_blocked_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_elements_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_head_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
},
"popup_html_configs_head_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
},
"context_menu_enabled_title": {
"message": "meddelande",
"description": "not needed, only to prevent exceptions"
} }
} }

View File

@@ -346,33 +346,5 @@
"eTag_filtering_enabled_title": { "eTag_filtering_enabled_title": {
"message": "ETag başlıklarını filtreler. İpucu: İlk kullanımdan önce önbellek temizlenmelidir.", "message": "ETag başlıklarını filtreler. İpucu: İlk kullanımdan önce önbellek temizlenmelidir.",
"description": "Bu dize, ETag başlık filtreleme anahtarının başlığı olarak kullanılır" "description": "Bu dize, ETag başlık filtreleme anahtarının başlığı olarak kullanılır"
},
"popup_html_rules_status_head_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
},
"popup_html_statistics_percentage_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
},
"popup_html_statistics_blocked_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
},
"popup_html_statistics_elements_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
},
"popup_html_statistics_head_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
},
"popup_html_configs_head_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
},
"context_menu_enabled_title": {
"message": "ileti",
"description": "gerekli değil, sadece istisnaları önlemek için"
} }
} }

View File

@@ -1,35 +1,35 @@
{ {
"hash_status_code_1": { "hash_status_code_1": {
"message": "已是最新的", "message": "已是最新的",
"description": "这个状态码表示ClearURLs规则已经是最新的无需继续更新" "description": "This status code says, that no update is available for the ClearURLs rules and everything is up to date."
}, },
"hash_status_code_2": { "hash_status_code_2": {
"message": "已更新", "message": "已更新",
"description": "这个状态码表示ClearURLs规则更新成功" "description": "This status code says, that the ClearURLs rules are successfully updated."
}, },
"hash_status_code_3": { "hash_status_code_3": {
"message": "有可用的更新", "message": "有可用的更新",
"description": "这个状态码表示,ClearURLs规则可以进行更新" "description": "This status code says, that an update is available for the ClearURLs rules."
}, },
"hash_status_code_4": { "hash_status_code_4": {
"message": "错误", "message": "错误",
"description": "这个状态码表示ClearURLs无法正确启动" "description": "This status code says, that the ClearURLs could not be started correctly."
}, },
"hash_status_code_5": { "hash_status_code_5": {
"message": "发生错误", "message": "发生错误",
"description": "这个状态码表示ClearURLs在更新中遇到了错误" "description": "This status code says, that an error occurred while updating the ClearURLs rules."
}, },
"log_redirect": { "log_redirect": {
"message": "此网址已被重定向", "message": "此网址已被转址",
"description": "在ClearURLs的日志中这个字符串表示重定向的网址" "description": "This string is used on redirections in the ClearURLs log."
}, },
"log_domain_blocked": { "log_domain_blocked": {
"message": "此网已被封锁", "message": "此网已被封锁",
"description": "在ClearURLs的日志中这个字符串表示已被封锁的网址" "description": "This string is used on blocked domains in the ClearURLs log."
}, },
"check_os_log": { "check_os_log": {
"message": "[ClearURLs]: 已新增日志监听器", "message": "[ClearURLs]: 已新增日志聆听者",
"description": "在ClearURLs 的日志中,这个字符串表示日志开始" "description": "This string is used on ClearURLs log startup."
}, },
"log_html_page_title": { "log_html_page_title": {
"message": "ClearURLs日志", "message": "ClearURLs日志",
@@ -112,7 +112,7 @@
"description": "This string is used as title for the statistics reset button on the popup page." "description": "This string is used as title for the statistics reset button on the popup page."
}, },
"popup_html_rules_status_head": { "popup_html_rules_status_head": {
"message": "规则状态", "message": "规则-状态",
"description": "This string is used as title for the rules-status section on the popup page." "description": "This string is used as title for the rules-status section on the popup page."
}, },
"popup_html_log_head": { "popup_html_log_head": {
@@ -164,7 +164,7 @@
"description": "This string is used as title for the reset button on the settings page." "description": "This string is used as title for the reset button on the settings page."
}, },
"setting_rule_url_label": { "setting_rule_url_label": {
"message": "data.json 档的网址 (规则)", "message": "data.json档的网址 (规则)",
"description": "This string is used as name for the rule url label." "description": "This string is used as name for the rule url label."
}, },
"settings_html_save_button": { "settings_html_save_button": {
@@ -176,7 +176,7 @@
"description": "This string is used as title for the save&reload button on the settings page." "description": "This string is used as title for the save&reload button on the settings page."
}, },
"setting_hash_url_label": { "setting_hash_url_label": {
"message": "rules.hash 档的网址 (校验)", "message": "rules.hash档的网址 (校验)",
"description": "This string is used as name for the rule.hash url label." "description": "This string is used as name for the rule.hash url label."
}, },
"setting_types_label": { "setting_types_label": {
@@ -207,16 +207,12 @@
"message": "显示右键选单条目", "message": "显示右键选单条目",
"description": "This string is used toggle the context menu entry to copy clean links." "description": "This string is used toggle the context menu entry to copy clean links."
}, },
"history_listener_enabled": {
"message": "阻止历史 API 跟踪注入(参见:<a href='https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState()_method' target='_blank'>The replaceState() method</a>",
"description": "This string is used as name for the history API listener label."
},
"cleaning_tool_page_title": { "cleaning_tool_page_title": {
"message": "ClearURLs的网址清理工具", "message": "ClearURLs的网址清理工具",
"description": "This string is used as title on the cleaning tool page." "description": "This string is used as title on the cleaning tool page."
}, },
"cleaning_tool_description": { "cleaning_tool_description": {
"message": "手动清理网址工具\n在下方粘贴原网址并按下绿色按钮ClearURLs将进行清理后输出。若要同时清理多个网址,请分行。", "message": "此工具提供手动清理网址的功能. 在下方贴上网址并按下绿色按钮, ClearURLs将会输出清理后的网址. 若要同时清理多个网址, 请将每个置于不同行.",
"description": "This string is used as description of the cleaning tool." "description": "This string is used as description of the cleaning tool."
}, },
"cleaning_tool_btn": { "cleaning_tool_btn": {
@@ -234,145 +230,5 @@
"local_hosts_skipping": { "local_hosts_skipping": {
"message": "跳过本地主机链接10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, 169.254.0.0/16, 127.0.0.1, localhost", "message": "跳过本地主机链接10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 100.64.0.0/10, 169.254.0.0/16, 127.0.0.1, localhost",
"description": "This string is used as label for the local host skipping switch" "description": "This string is used as label for the local host skipping switch"
},
"local_hosts_skipping_title": {
"message": "跳过本地主机 URL",
"description": "This string is used as title for the local host skipping switch"
},
"log_html_export_button": {
"message": "导出",
"description": "This string is used for the export button on the log page."
},
"log_html_export_button_title": {
"message": "导出全局日志",
"description": "This string is used as title for the export button on the log page."
},
"log_html_import_button": {
"message": "导入",
"description": "This string is used for the import button on the log page."
},
"log_html_import_button_title": {
"message": "导入全局日志",
"description": "This string is used as title for the import button on the log page."
},
"setting_html_export_button": {
"message": "导出",
"description": "This string is used as name for the export button on the settings page."
},
"setting_html_export_button_title": {
"message": "导出全部设置",
"description": "This string is used as title for the export button on the settings page."
},
"setting_html_import_button": {
"message": "导入",
"description": "This string is used as name for the reset button on the settings page."
},
"setting_html_import_button_title": {
"message": "导入全部设置",
"description": "This string is used as title for the import button on the settings page."
},
"setting_log_limit_label": {
"message": "限制为 $LIMIT$ 条日志。",
"description": "This string is used as name for the log limit label.",
"placeholders": {
"limit": {
"content": "$1",
"example": "100"
}
}
},
"blocked_html_title": {
"message": "此站点被 <b>ClearURLs</b> 屏蔽",
"description": "This string is used as title on the blocked site page."
},
"blocked_html_body": {
"message": "此站点被 <b>ClearURLs</b> 插件屏蔽,因为我们识别出此站点为广告和/或跟踪服务。为访问此站点,您必须暂时禁用此插件或在 ClearURLs 设置中禁用域名屏蔽禁用。之后您可以点击下方按钮载入此页面。",
"description": "This string is used as body on the blocked site page."
},
"blocked_html_button": {
"message": "访问页面",
"description": "This string is used as button on the blocked site page."
},
"referral_marketing_enabled": {
"message": "允许跳转营销",
"description": "This string is used as label for the referral marketing switch"
},
"referral_marketing_enabled_title": {
"message": "允许跳转营销",
"description": "This string is used as title for the referral marketing switch"
},
"watchdog": {
"message": "[ClearURLs]: 看门狗检测到一个问题并已失败 $TIMES$ 次。",
"description": "This string is used as text for the watchdog",
"placeholders": {
"times": {
"content": "$1",
"example": "3"
}
}
},
"domain_blocking_enabled": {
"message": "允许域名屏蔽(在不允许广告拦截器的页面上会导致问题)",
"description": "This string is used as label for the domain blocking switch"
},
"domain_blocking_enabled_title": {
"message": "允许域名屏蔽(在不允许广告拦截器的页面上会导致问题)",
"description": "This string is used as title for the domain blocking switch"
},
"log_ping_blocked": {
"message": "此超链接审计已屏蔽",
"description": "This string is used on hyperlink auditing in the ClearURLs log."
},
"ping_blocking_enabled": {
"message": "屏蔽超链接审计(参见<a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>此文章</a>",
"description": "This string is used as label for the hyperlink auditing blocking switch"
},
"ping_blocking_enabled_title": {
"message": "屏蔽超链接审计",
"description": "This string is used as title for the hyperlink auditing blocking switch"
},
"extension_description": {
"message": "从 URL 中移除跟踪元素。",
"description": "Extension description (max. 132 characters)"
},
"eTag_filtering_log": {
"message": "ETag 头已从此请求移除",
"description": "This string is used on ETag header filtering in the ClearURLs log."
},
"eTag_filtering_enabled": {
"message": "从请求中过滤 ETag 头(参见<a href='https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags' target='_blank'>此文章</a>",
"description": "This string is used as label for the ETag header filtering switch"
},
"eTag_filtering_enabled_title": {
"message": "过滤 ETag 头。提示:第一次使用前必须清除缓存。",
"description": "This string is used as title for the ETag header filtering switch"
},
"popup_html_rules_status_head_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_percentage_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_blocked_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_elements_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_statistics_head_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"popup_html_configs_head_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
},
"context_menu_enabled_title": {
"message": " ",
"description": "not needed, only to prevent exceptions"
} }
} }

View File

@@ -1,6 +1,6 @@
{ {
"hash_status_code_1": { "hash_status_code_1": {
"message": "已是最新版本", "message": "已是最新",
"description": "This status code says, that no update is available for the ClearURLs rules and everything is up to date." "description": "This status code says, that no update is available for the ClearURLs rules and everything is up to date."
}, },
"hash_status_code_2": { "hash_status_code_2": {
@@ -24,7 +24,7 @@
"description": "This string is used on redirections in the ClearURLs log." "description": "This string is used on redirections in the ClearURLs log."
}, },
"log_domain_blocked": { "log_domain_blocked": {
"message": "已封鎖此網域", "message": "此網域已被封鎖",
"description": "This string is used on blocked domains in the ClearURLs log." "description": "This string is used on blocked domains in the ClearURLs log."
}, },
"check_os_log": { "check_os_log": {
@@ -32,7 +32,7 @@
"description": "This string is used on ClearURLs log startup." "description": "This string is used on ClearURLs log startup."
}, },
"log_html_page_title": { "log_html_page_title": {
"message": "ClearURLs 記錄", "message": "ClearURLs歷史記錄",
"description": "This string is used as header on the log page." "description": "This string is used as header on the log page."
}, },
"log_html_table_head_1": { "log_html_table_head_1": {
@@ -52,11 +52,11 @@
"description": "This string is used as table title on the log page." "description": "This string is used as table title on the log page."
}, },
"log_html_reset_button": { "log_html_reset_button": {
"message": "清除", "message": "重置",
"description": "This string is used for the reset button on the log page." "description": "This string is used for the reset button on the log page."
}, },
"log_html_reset_button_title": { "log_html_reset_button_title": {
"message": "清除全域記錄檔", "message": "重置全域記錄檔",
"description": "This string is used as title for the reset button on the log page." "description": "This string is used as title for the reset button on the log page."
}, },
"popup_html_configs_head": { "popup_html_configs_head": {
@@ -68,31 +68,31 @@
"description": "This string is used as name for the filter switch button on the popup page." "description": "This string is used as name for the filter switch button on the popup page."
}, },
"popup_html_configs_switch_filter_title": { "popup_html_configs_switch_filter_title": {
"message": "「過濾器」即 ClearURLs 的網址清理功能。若你關閉此選項,則本套件的主要功能將無法作用。", "message": "此為ClearURLs的主開關. 若關閉則此附件元件失效.",
"description": "This string is used as title for the filter switch button on the popup page." "description": "This string is used as title for the filter switch button on the popup page."
}, },
"popup_html_configs_switch_log": { "popup_html_configs_switch_log": {
"message": "錄製記錄", "message": "歷史記錄",
"description": "This string is used as name for the logging switch button on the popup page." "description": "This string is used as name for the logging switch button on the popup page."
}, },
"popup_html_configs_switch_log_title": { "popup_html_configs_switch_log_title": {
"message": "記錄檔儲存於本機若不需要此功能建議關閉", "message": "記錄檔會被儲存於本機. 若不需要此功能建議關閉.",
"description": "This string is used as title for the logging switch button on the popup page." "description": "This string is used as title for the logging switch button on the popup page."
}, },
"popup_html_configs_switch_badges": { "popup_html_configs_switch_badges": {
"message": "計數徽章", "message": "徽章",
"description": "This string is used as name for the badges switch button on the popup page." "description": "This string is used as name for the badges switch button on the popup page."
}, },
"popup_html_configs_switch_badges_title": { "popup_html_configs_switch_badges_title": {
"message": "顯示已清理數量", "message": "顯示已清理數量",
"description": "This string is used as title for the badges switch button on the popup page." "description": "This string is used as title for the badges switch button on the popup page."
}, },
"popup_html_statistics_head": { "popup_html_statistics_head": {
"message": "統計資料", "message": "統計",
"description": "This string is used as title for the statistics on the popup page." "description": "This string is used as title for the statistics on the popup page."
}, },
"popup_html_statistics_elements": { "popup_html_statistics_elements": {
"message": "元", "message": "元",
"description": "This string is used as name for the elements on the popup page." "description": "This string is used as name for the elements on the popup page."
}, },
"popup_html_statistics_blocked": { "popup_html_statistics_blocked": {
@@ -100,19 +100,19 @@
"description": "This string is used as name for the blocked elements on the popup page." "description": "This string is used as name for the blocked elements on the popup page."
}, },
"popup_html_statistics_percentage": { "popup_html_statistics_percentage": {
"message": "阻擋比率", "message": "比例",
"description": "This string is used as name for the percentage of blocked elements on the popup page." "description": "This string is used as name for the percentage of blocked elements on the popup page."
}, },
"popup_html_statistics_reset_button": { "popup_html_statistics_reset_button": {
"message": "歸零", "message": "重置",
"description": "This string is used as name for the statistics reset button on the popup page." "description": "This string is used as name for the statistics reset button on the popup page."
}, },
"popup_html_statistics_reset_button_title": { "popup_html_statistics_reset_button_title": {
"message": "重置全域統計資料", "message": "重置全域統計",
"description": "This string is used as title for the statistics reset button on the popup page." "description": "This string is used as title for the statistics reset button on the popup page."
}, },
"popup_html_rules_status_head": { "popup_html_rules_status_head": {
"message": "規則狀態", "message": "規則-狀態",
"description": "This string is used as title for the rules-status section on the popup page." "description": "This string is used as title for the rules-status section on the popup page."
}, },
"popup_html_log_head": { "popup_html_log_head": {
@@ -120,7 +120,7 @@
"description": "This string is used as name for the log button on the popup page." "description": "This string is used as name for the log button on the popup page."
}, },
"popup_html_log_head_title": { "popup_html_log_head_title": {
"message": "檢視記錄", "message": "開啟記錄",
"description": "This string is used as title for the log button on the popup page." "description": "This string is used as title for the log button on the popup page."
}, },
"popup_html_report_button": { "popup_html_report_button": {
@@ -128,7 +128,7 @@
"description": "Note: Currently not used." "description": "Note: Currently not used."
}, },
"popup_html_report_button_title": { "popup_html_report_button_title": {
"message": "回報目前分頁的網址", "message": "回報該分頁目前網址",
"description": "Currently not used." "description": "Currently not used."
}, },
"core_save_on_disk": { "core_save_on_disk": {
@@ -136,11 +136,11 @@
"description": "This string is used to tell the user, that ClearURLs saved the settings on disk." "description": "This string is used to tell the user, that ClearURLs saved the settings on disk."
}, },
"core_error": { "core_error": {
"message": "[ClearURLs]: 無法啟動擴充功能", "message": "[ClearURLs]: 附加元件無法啟動",
"description": "This string is used to tell the user, that ClearURLs could not be started." "description": "This string is used to tell the user, that ClearURLs could not be started."
}, },
"configs_switch_statistics": { "configs_switch_statistics": {
"message": "統計資料", "message": "統計",
"description": "This string is used as name for the statistics switch button on the popup page." "description": "This string is used as name for the statistics switch button on the popup page."
}, },
"configs_switch_statistics_title": { "configs_switch_statistics_title": {
@@ -148,27 +148,27 @@
"description": "This string is used as title for the statistics switch button on the popup page." "description": "This string is used as title for the statistics switch button on the popup page."
}, },
"settings_html_page_title": { "settings_html_page_title": {
"message": "ClearURLs 偏好設定", "message": "ClearURLs設定",
"description": "This string is used as title on the settings page." "description": "This string is used as title on the settings page."
}, },
"badged_color_label": { "badged_color_label": {
"message": "計數徽章背景顏色", "message": "徽章顏色",
"description": "This string is used as name for the badged color label." "description": "This string is used as name for the badged color label."
}, },
"setting_html_reset_button": { "setting_html_reset_button": {
"message": "重", "message": "重",
"description": "This string is used as name for the reset button on the settings page." "description": "This string is used as name for the reset button on the settings page."
}, },
"setting_html_reset_button_title": { "setting_html_reset_button_title": {
"message": "所有設定還原為預設值", "message": "重置所有設定",
"description": "This string is used as title for the reset button on the settings page." "description": "This string is used as title for the reset button on the settings page."
}, },
"setting_rule_url_label": { "setting_rule_url_label": {
"message": "data.json 檔的網址 (規則)", "message": "data.json檔的網址 (規則)",
"description": "This string is used as name for the rule url label." "description": "This string is used as name for the rule url label."
}, },
"settings_html_save_button": { "settings_html_save_button": {
"message": "儲存並重新啟動擴充功能", "message": "儲存並重啟附件元件",
"description": "This string is used as name for the save&reload button on the settings page." "description": "This string is used as name for the save&reload button on the settings page."
}, },
"settings_html_save_button_title": { "settings_html_save_button_title": {
@@ -176,7 +176,7 @@
"description": "This string is used as title for the save&reload button on the settings page." "description": "This string is used as title for the save&reload button on the settings page."
}, },
"setting_hash_url_label": { "setting_hash_url_label": {
"message": "rules.hash 檔的網址 (校驗)", "message": "rules.hash檔的網址 (校驗)",
"description": "This string is used as name for the rule.hash url label." "description": "This string is used as name for the rule.hash url label."
}, },
"setting_types_label": { "setting_types_label": {
@@ -188,7 +188,7 @@
"description": "Note: Currently not used." "description": "Note: Currently not used."
}, },
"success_report_url": { "success_report_url": {
"message": "已成功回報網址,我們將儘速對其檢查。", "message": "該網址已成功回報",
"description": "Note: Currently not used." "description": "Note: Currently not used."
}, },
"error_report_url": { "error_report_url": {
@@ -196,113 +196,35 @@
"description": "Note: Currently not used." "description": "Note: Currently not used."
}, },
"donate_button": { "donate_button": {
"message": "給 ClearURLs 的作者一點贊助", "message": "給ClearURLs的作者一點贊助",
"description": "This string is used to refer to a donation page." "description": "This string is used to refer to a donation page."
}, },
"clipboard_copy_link": { "clipboard_copy_link": {
"message": "複製經過清理的網址", "message": "複製清理的網址",
"description": "This string is used in the context menu to copy clean links." "description": "This string is used in the context menu to copy clean links."
}, },
"context_menu_enabled": { "context_menu_enabled": {
"message": "在快顯功能表中顯示", "message": "顯示右鍵選單項目",
"description": "This string is used toggle the context menu entry to copy clean links." "description": "This string is used toggle the context menu entry to copy clean links."
}, },
"history_listener_enabled": {
"message": "防止藉由 History API 注入追蹤 (參見:<a href='https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState()_method' target='_blank'>The replaceState() method</a>)"
},
"cleaning_tool_page_title": { "cleaning_tool_page_title": {
"message": "ClearURLs 網址清理工具", "message": "ClearURLs網址清理工具",
"description": "This string is used as title on the cleaning tool page." "description": "This string is used as title on the cleaning tool page."
}, },
"cleaning_tool_description": { "cleaning_tool_description": {
"message": "這個工具可讓你手動清理冗長的網址。請貼上欲清理的網址並點擊「清理網址」按鈕ClearURLs 便會還你乾淨的網址。你可以批次處理多個網址,每條網址須以換行分隔。", "message": "此工具提供手動清理網址的功能. 在下方貼上網址並按下綠色按鈕, ClearURLs將會輸出清理後的網址. 若要同時清理多個網址, 請將每個置於不同行.",
"description": "This string is used as description of the cleaning tool." "description": "This string is used as description of the cleaning tool."
}, },
"cleaning_tool_btn": { "cleaning_tool_btn": {
"message": "清理網址", "message": "網址清理工具",
"description": "This string is used as name for the clean url button." "description": "This string is used as name for the clean url button."
}, },
"cleaning_tool_dirty_urls_label": { "cleaning_tool_dirty_urls_label": {
"message": "原始網址", "message": "清理前的網址:",
"description": "This string is used as title on the cleaning tool page for the dirty URLs." "description": "This string is used as title on the cleaning tool page for the dirty URLs."
}, },
"cleaning_tool_clean_urls_label": { "cleaning_tool_clean_urls_label": {
"message": "清理結果:", "message": "清理後的網址:",
"description": "This string is used as title on the cleaning tool page for the clean URLs." "description": "This string is used as title on the cleaning tool page for the clean URLs."
},
"local_hosts_skipping": {
"message": "略過本機網址 (10.0.0.0/8、172.16.0.0/12、192.168.0.0/16、100.64.0.0/10、169.254.0.0/16、127.0.0.1、localhost)"
},
"local_hosts_skipping_title": {
"message": "略過本機網址"
},
"log_html_export_button": {
"message": "匯出"
},
"log_html_export_button_title": {
"message": "匯出全域記錄檔"
},
"log_html_import_button": {
"message": "匯入"
},
"log_html_import_button_title": {
"message": "匯入全域記錄檔"
},
"setting_html_export_button": {
"message": "匯出"
},
"setting_html_export_button_title": {
"message": "將各項設定匯出"
},
"setting_html_import_button": {
"message": "匯入"
},
"setting_html_import_button_title": {
"message": "匯入各項設定"
},
"setting_log_limit_label": {
"message": "最多保存 $LIMIT$ 筆記錄檔"
},
"blocked_html_title": {
"message": "這個網站已由 <b>ClearURLs</b> 封鎖"
},
"blocked_html_body": {
"message": "由於我們判定這個網站是廣告商或追蹤器的伺服器,因此 <b>ClearURLs</b> 已封鎖此網站。若你仍需造訪此網站,請先暫時停用本擴充功能;或者,至 ClearURLs 的偏好設定中關閉「允許封鎖網域」。完成上述操作後,點擊下方的「繼續前往」即可瀏覽該網站。"
},
"blocked_html_button": {
"message": "繼續前往"
},
"referral_marketing_enabled": {
"message": "允許聯盟行銷"
},
"referral_marketing_enabled_title": {
"message": "允許聯盟行銷"
},
"domain_blocking_enabled": {
"message": "允許封鎖網域 (部分阻撓「廣告阻擋器」的網頁可能無法正常顯示)"
},
"domain_blocking_enabled_title": {
"message": "允許封鎖網域 (部分阻撓「廣告阻擋器」的網頁可能無法正常顯示)"
},
"log_ping_blocked": {
"message": "已阻擋超連結稽核"
},
"ping_blocking_enabled": {
"message": "阻擋超連結稽核 (<a href='https://html.spec.whatwg.org/multipage/links.html#hyperlink-auditing' target='_blank'>瞭解詳情</a>)"
},
"ping_blocking_enabled_title": {
"message": "阻擋超連結稽核"
},
"extension_description": {
"message": "將網址中的追蹤元素一掃而空"
},
"eTag_filtering_log": {
"message": "已在這次請求裡移除 ETag 標頭"
},
"eTag_filtering_enabled": {
"message": "濾除請求裡的 ETag 標頭 (<a href='https://en.wikipedia.org/wiki/HTTP_ETag#Tracking_using_ETags' target='_blank'>瞭解詳情</a>)"
},
"eTag_filtering_enabled_title": {
"message": "濾除 ETag 標頭 (注意:初次啟用前須先清除快取)"
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -32,10 +32,10 @@ var os;
* for each provider given as parameter. * for each provider given as parameter.
* *
* @param {Provider} provider Provider-Object * @param {Provider} provider Provider-Object
* @param pureUrl URL as String * @param {string} pureUrl URL as String
* @param {boolean} quiet if the action should be displayed in log and statistics * @param {boolean} quiet If the action should be displayed in log and statistics
* @param {requestDetails} request the request details * @param {requestDetails} request The request details
* @return {Array} Array with changes and url fields * @return {object} Object with changes and url fields
*/ */
function removeFieldsFormURL(provider, pureUrl, quiet = false, request = null) { function removeFieldsFormURL(provider, pureUrl, quiet = false, request = null) {
let url = pureUrl; let url = pureUrl;
@@ -82,7 +82,7 @@ function removeFieldsFormURL(provider, pureUrl, quiet = false, request = null) {
/* /*
* Expand the url by provider redirections. So no tracking on * Expand the url by provider redirections. So no tracking on
* url redirections form sites to sites. * url redirections form site to site.
*/ */
let re = provider.getRedirection(url); let re = provider.getRedirection(url);
if (re !== null) { if (re !== null) {
@@ -92,8 +92,8 @@ function removeFieldsFormURL(provider, pureUrl, quiet = false, request = null) {
if (!quiet) { if (!quiet) {
pushToLog(pureUrl, url, translate('log_redirect')); pushToLog(pureUrl, url, translate('log_redirect'));
increaseGlobalURLCounter(1); increaseGlobalURLCounter(1);
increaseBadged(false, request) increaseBadged(false, request);
}; }
return { return {
"redirect": true, "redirect": true,
@@ -251,32 +251,25 @@ function start() {
*/ */
function getHash() { function getHash() {
//Get the target hash from GitLab //Get the target hash from GitLab
const response = fetch(storage.hashURL).then(async response => { fetch(storage.hashURL)
return { .then(function (response) {
hash: (await response.text()).trim(), const responseTextHash = response.clone().text().then(function (responseTextHash) {
status: response.status if (response.ok && $.trim(responseTextHash)) {
}; dataHash = responseTextHash;
});
response.then(result => { if ($.trim(dataHash) !== $.trim(localDataHash)) {
if (result.status === 200 && result.hash) { fetchFromURL();
dataHash = result.hash; } else {
toObject(storage.ClearURLsData);
if (dataHash !== localDataHash.trim()) { storeHashStatus(1);
fetchFromURL(); saveOnDisk(['hashStatus']);
} else { }
toObject(storage.ClearURLsData); } else {
storeHashStatus(1); dataHash = false;
saveOnDisk(['hashStatus']); deactivateOnFailure();
} }
} else { });
throw "The status code was not okay or the given hash were empty."; });
}
}).catch(error => {
console.error("[ClearURLs]: Could not download the rules hash from the given URL due to the following error: ", error);
dataHash = false;
deactivateOnFailure();
});
} }
/* /*
@@ -285,33 +278,29 @@ function start() {
* ################################################################## * ##################################################################
*/ */
function fetchFromURL() { function fetchFromURL() {
const response = fetch(storage.ruleURL).then(async response => { fetch(storage.ruleURL)
return { .then(checkResponse);
data: (await response.clone().text()).trim(),
hash: await sha256((await response.text()).trim()),
status: response.status
};
})
response.then(result => { function checkResponse(response) {
if (result.status === 200 && result.data) { const responseText = response.clone().text().then(function (responseText) {
if (result.hash === dataHash.trim()) { if (response.ok && $.trim(responseText)) {
storage.ClearURLsData = result.data; const downloadedFileHash = $.sha256(responseText);
storage.dataHash = result.hash;
storeHashStatus(2); if ($.trim(downloadedFileHash) === $.trim(dataHash)) {
storage.ClearURLsData = responseText;
storage.dataHash = downloadedFileHash;
storeHashStatus(2);
} else {
storeHashStatus(3);
}
storage.ClearURLsData = JSON.parse(storage.ClearURLsData);
toObject(storage.ClearURLsData);
saveOnDisk(['ClearURLsData', 'dataHash', 'hashStatus']);
} else { } else {
storeHashStatus(3); deactivateOnFailure();
} }
storage.ClearURLsData = JSON.parse(storage.ClearURLsData); });
toObject(storage.ClearURLsData); }
saveOnDisk(['ClearURLsData', 'dataHash', 'hashStatus']);
} else {
throw "The status code was not okay or the given rules were empty."
}
}).catch(error => {
console.error("[ClearURLs]: Could not download the rules from the given URL due to the following error: ", error);
deactivateOnFailure();
});
} }
// ################################################################## // ##################################################################

View File

@@ -24,18 +24,18 @@ var length = 0;
/** /**
* Load only when document is ready * Load only when document is ready
*/ */
(function() { $(document).ready(function(){
setText(); setText();
document.getElementById('cleaning_tool_btn').onclick = cleanURLs; $('#cleaning_tool_btn').on("click", cleanURLs);
})(); });
/** /**
* This function cleans all URLs line by line in the textarea. * This function cleans all URLs line by line in the textarea.
*/ */
function cleanURLs() { function cleanURLs() {
const cleanTArea = document.getElementById('cleanURLs'); const cleanTArea = $('#cleanURLs');
const dirtyTArea = document.getElementById('dirtyURLs'); const dirtyTArea = $('#dirtyURLs');
const urls = dirtyTArea.value.split('\n'); const urls = dirtyTArea.val().split('\n');
cleanedURLs = []; cleanedURLs = [];
length = urls.length; length = urls.length;
@@ -46,7 +46,7 @@ function cleanURLs() {
}).then((data) => { }).then((data) => {
cleanedURLs.push(data.response); cleanedURLs.push(data.response);
if(i >= length-1) { if(i >= length-1) {
cleanTArea.value= cleanedURLs.join('\n'); cleanTArea.val(cleanedURLs.join('\n'));
} }
}, handleError); }, handleError);
} }
@@ -68,11 +68,11 @@ function translate(string)
function setText() function setText()
{ {
document.title = translate('cleaning_tool_page_title'); document.title = translate('cleaning_tool_page_title');
document.getElementById('page_title').textContent = translate('cleaning_tool_page_title'); $('#page_title').text(translate('cleaning_tool_page_title'));
document.getElementById('cleaning_tool_description').textContent = translate('cleaning_tool_description'); $('#cleaning_tool_description').text(translate('cleaning_tool_description'));
document.getElementById('cleaning_tool_btn').textContent = translate('cleaning_tool_btn'); $('#cleaning_tool_btn').text(translate('cleaning_tool_btn'));
document.getElementById('cleaning_tool_dirty_urls_label').textContent = translate('cleaning_tool_dirty_urls_label'); $('#cleaning_tool_dirty_urls_label').text(translate('cleaning_tool_dirty_urls_label'));
document.getElementById('cleaning_tool_clean_urls_label').textContent = translate('cleaning_tool_clean_urls_label'); $('#cleaning_tool_clean_urls_label').text(translate('cleaning_tool_clean_urls_label'));
} }
function handleError(error) { function handleError(error) {

View File

@@ -52,32 +52,21 @@ function getLog()
return b.timestamp - a.timestamp; return b.timestamp - a.timestamp;
}); });
const length = Object.keys(log.log).length;
let row;
if(length !== 0)
{
for(let i=0; i<length;i++)
{
row = "<tr>" +
"<td>"+log.log[i].before+"</td>" +
"<td>"+log.log[i].after+"</td>" +
"<td>"+log.log[i].rule+"</td>" +
"<td>"+toDate(log.log[i].timestamp)+"</td>";
$('#tbody').append(row);
}
}
$('#logTable').DataTable({ $('#logTable').DataTable({
"data": log.log,
"columns": [
{
"data": "before",
"type": "string"
},
{
"data": "after",
"type": "string"
},
{
"data": "rule",
"type": "string"
},
{
"data": "timestamp",
"type": "date"
}
],
"columnDefs": [
{
targets: 3,
render: toDate
}
],
"pageLength": 10, "pageLength": 10,
"language": { "language": {
"url": getDataTableTranslation() "url": getDataTableTranslation()
@@ -143,13 +132,13 @@ function importGlobalLog(evt) {
/** /**
* Load only when document is ready * Load only when document is ready
*/ */
(function () { $(document).ready(function(){
setText(); setText();
getLog(); getLog();
document.getElementById('reset_log_btn').onclick = resetGlobalLog; $('#reset_log_btn').on("click", resetGlobalLog);
document.getElementById('export_log_btn').onclick = exportGlobalLog; $('#export_log_btn').on("click", exportGlobalLog);
document.getElementById('importLog').onchange = importGlobalLog; $('#importLog').on("change", importGlobalLog);
})(); });
/** /**
* Translate a string with the i18n API. * Translate a string with the i18n API.
@@ -167,17 +156,17 @@ function translate(string)
function setText() function setText()
{ {
document.title = translate('log_html_page_title'); document.title = translate('log_html_page_title');
document.getElementById('page_title').textContent = translate('log_html_page_title'); $('#page_title').text(translate('log_html_page_title'));
document.getElementById('reset_log_btn').textContent = translate('log_html_reset_button'); $('#reset_log_btn').text(translate('log_html_reset_button'))
document.getElementById('reset_log_btn').setAttribute('title', translate('log_html_reset_button_title')); .prop('title', translate('log_html_reset_button_title'));
document.getElementById('head_1').textContent = translate('log_html_table_head_1'); $('#head_1').text(translate('log_html_table_head_1'));
document.getElementById('head_2').textContent = translate('log_html_table_head_2'); $('#head_2').text(translate('log_html_table_head_2'));
document.getElementById('head_3').textContent = translate('log_html_table_head_3'); $('#head_3').text(translate('log_html_table_head_3'));
document.getElementById('head_4').textContent = translate('log_html_table_head_4'); $('#head_4').text(translate('log_html_table_head_4'));
document.getElementById('export_log_btn_text').textContent = translate('log_html_export_button'); $('#export_log_btn_text').text(translate('log_html_export_button'));
document.getElementById('export_log_btn').setAttribute('title', translate('log_html_export_button_title')); $('#export_log_btn').prop('title', translate('log_html_export_button_title'));
document.getElementById('import_log_btn_text').textContent = translate('log_html_import_button'); $('#import_log_btn_text').text(translate('log_html_import_button'));
document.getElementById('importLog').setAttribute('title', translate('log_html_import_button_title')); $('#importLog').prop('title', translate('log_html_import_button_title'));
} }
function handleError(error) { function handleError(error) {

View File

@@ -17,11 +17,11 @@
*/ */
/*jshint esversion: 6 */ /*jshint esversion: 6 */
var element = document.getElementById('statistics_value'); var element = $("#statistics_value");
var elGlobalPercentage = document.getElementById('statistics_value_global_percentage'); var elGlobalPercentage = $("#statistics_value_global_percentage");
var elProgressbar_blocked = document.getElementById('progress_blocked'); var elProgressbar_blocked = $('#progress_blocked');
var elProgressbar_non_blocked = document.getElementById('progress_non_blocked'); var elProgressbar_non_blocked = $('#progress_non_blocked');
var elTotal = document.getElementById('statistics_total_elements'); var elTotal = $('#statistics_total_elements');
var globalPercentage = 0; var globalPercentage = 0;
var globalCounter; var globalCounter;
var globalurlcounter; var globalurlcounter;
@@ -55,11 +55,11 @@ function changeStatistics()
if(isNaN(Number(globalPercentage))) globalPercentage = 0; if(isNaN(Number(globalPercentage))) globalPercentage = 0;
element.textContent = globalCounter.toLocaleString(); element.text(globalCounter.toLocaleString());
elGlobalPercentage.textContent = globalPercentage+"%"; elGlobalPercentage.text(globalPercentage+"%");
elProgressbar_blocked.style.width = globalPercentage+'%'; elProgressbar_blocked.css('width', globalPercentage+'%');
elProgressbar_non_blocked.style.width = (100-globalPercentage)+'%'; elProgressbar_non_blocked.css('width', (100-globalPercentage)+'%');
elTotal.textContent = globalurlcounter.toLocaleString(); elTotal.text(globalurlcounter.toLocaleString());
} }
/** /**
@@ -67,14 +67,14 @@ function changeStatistics()
*/ */
function setHashStatus() function setHashStatus()
{ {
let element = document.getElementById('hashStatus'); let element = $('#hashStatus');
if(hashStatus) if(hashStatus)
{ {
element.textContent = translate(hashStatus); element.text(translate(hashStatus));
} }
else { else {
element.textContent = translate('hash_status_code_5'); element.text(translate('hash_status_code_5'));
} }
} }
@@ -86,14 +86,14 @@ function setHashStatus()
*/ */
function changeSwitchButton(id, storageID) function changeSwitchButton(id, storageID)
{ {
let element = document.getElementById(id); let element = $('#'+id);
changeVisibility(id, storageID); changeVisibility(id, storageID);
element.onchange = function(){ element.on('change', function(){
browser.runtime.sendMessage({ browser.runtime.sendMessage({
function: "setData", function: "setData",
params: [storageID, element.checked] params: [storageID, element.is(':checked')]
}).then((data) => { }).then((data) => {
if(storageID === "globalStatus"){ if(storageID === "globalStatus"){
browser.runtime.sendMessage({ browser.runtime.sendMessage({
@@ -108,7 +108,7 @@ function changeSwitchButton(id, storageID)
params: [] params: []
}).catch(handleError); }).catch(handleError);
}).catch(handleError); }).catch(handleError);
}; });
} }
/** /**
@@ -121,10 +121,10 @@ function changeVisibility(id, storageID)
switch(storageID) switch(storageID)
{ {
case "loggingStatus": case "loggingStatus":
element = document.getElementById('log_section'); element = $('#log_section');
break; break;
case "statisticsStatus": case "statisticsStatus":
element = document.getElementById('statistic_section'); element = $('#statistic_section');
break; break;
default: default:
element = "undefine"; element = "undefine";
@@ -132,14 +132,14 @@ function changeVisibility(id, storageID)
if(element !== "undefine") if(element !== "undefine")
{ {
if(document.getElementById(id).checked) if($('#'+id).is(':checked'))
{ {
element.style.display = ''; element.css('display', '');
element.style.display = ''; element.css('display', '');
} }
else { else {
element.style.display = 'none'; element.css('display', 'none');
element.style.display = 'none'; element.css('display', 'none');
} }
} }
} }
@@ -151,8 +151,8 @@ function changeVisibility(id, storageID)
*/ */
function setSwitchButton(id, varname) function setSwitchButton(id, varname)
{ {
const element = document.getElementById(id); let element = $('#'+id);
element.checked = this[varname]; element.prop('checked', this[varname]);
} }
/** /**
@@ -180,7 +180,7 @@ function resetGlobalCounter(){
changeStatistics(); changeStatistics();
} }
(function() { $(document).ready(function(){
loadData("globalCounter") loadData("globalCounter")
.then(() => loadData("globalurlcounter")) .then(() => loadData("globalurlcounter"))
.then(() => loadData("globalStatus")) .then(() => loadData("globalStatus"))
@@ -191,17 +191,17 @@ function resetGlobalCounter(){
.then(() => loadData("getCurrentURL", "currentURL")) .then(() => loadData("getCurrentURL", "currentURL"))
.then(() => { .then(() => {
init(); init();
document.getElementById('reset_counter_btn').onclick = resetGlobalCounter; $('#reset_counter_btn').on("click", resetGlobalCounter);
changeSwitchButton("globalStatus", "globalStatus"); changeSwitchButton("globalStatus", "globalStatus");
changeSwitchButton("tabcounter", "badgedStatus"); changeSwitchButton("tabcounter", "badgedStatus");
changeSwitchButton("logging", "loggingStatus"); changeSwitchButton("logging", "loggingStatus");
changeSwitchButton("statistics", "statisticsStatus"); changeSwitchButton("statistics", "statisticsStatus");
document.getElementById('loggingPage').href = browser.extension.getURL('./html/log.html'); $('#loggingPage').attr('href', browser.extension.getURL('./html/log.html'));
document.getElementById('settings').href = browser.extension.getURL('./html/settings.html'); $('#settings').attr('href', browser.extension.getURL('./html/settings.html'));
document.getElementById('cleaning_tools').href = browser.extension.getURL('./html/cleaningTool.html'); $('#cleaning_tools').attr('href', browser.extension.getURL('./html/cleaningTool.html'));
setText(); setText();
}); });
})(); });
/** /**
* Set the text for the UI. * Set the text for the UI.
@@ -220,7 +220,7 @@ function setText()
injectText('configs_switch_filter','popup_html_configs_switch_filter'); injectText('configs_switch_filter','popup_html_configs_switch_filter');
injectText('configs_head','popup_html_configs_head'); injectText('configs_head','popup_html_configs_head');
injectText('configs_switch_statistics','configs_switch_statistics'); injectText('configs_switch_statistics','configs_switch_statistics');
document.getElementById('donate').title = translate('donate_button'); $('#donate').prop('title', translate('donate_button'));
} }
/** /**
@@ -232,8 +232,8 @@ function setText()
*/ */
function injectText(id, attribute, tooltip = "") function injectText(id, attribute, tooltip = "")
{ {
const object = document.getElementById(id); let object = $('#'+id);
object.textContent = translate(attribute); object.text(translate(attribute));
/* /*
This function will throw an error if no translation This function will throw an error if no translation
@@ -243,7 +243,7 @@ function injectText(id, attribute, tooltip = "")
if(tooltip !== "") if(tooltip !== "")
{ {
object.setAttribute('title', tooltip); object.prop('title', tooltip);
} }
} }

View File

@@ -18,47 +18,28 @@
var settings = []; var settings = [];
const pickr = Pickr.create({ getData();
el: '#badged-color-picker',
theme: 'nano', /**
components: { * Load only when document is ready
preview: true, */
opacity: true, $(document).ready(function(){
hue: true, setText();
default: '#FFA500', $("#badged-color-picker").colorpicker({
comparison: false, format: "hex"
interaction: { });
hex: true, $('#reset_settings_btn').on("click", reset);
rgba: false, $('#export_settings_btn').on("click", exportSettings);
hsla: false, $('#importSettings').on("change", importSettings);
hsva: false, $('#save_settings_btn').on("click", save);
cmyk: false,
input: true,
clear: false,
save: true
}
}
}); });
/** /**
* Load only when document is ready * Reset everything.
*/ * Set everthing to the default values.
(function () { */
pickr.on('init', () => { function reset()
getData(); {
setText();
document.getElementById('reset_settings_btn').onclick = reset;
document.getElementById('export_settings_btn').onclick = exportSettings;
document.getElementById('importSettings').onchange = importSettings;
document.getElementById('save_settings_btn').onclick = save;
});
})();
/**
* Reset everything.
* Set everthing to the default values.
*/
function reset() {
browser.runtime.sendMessage({ browser.runtime.sendMessage({
function: "initSettings", function: "initSettings",
params: [] params: []
@@ -76,14 +57,15 @@ function reset() {
} }
/** /**
* Saves the settings. * Saves the settings.
*/ */
function save() { function save()
saveData("badged_color", pickr.getColor().toHEXA().toString()) {
.then(() => saveData("ruleURL", document.querySelector('input[name=ruleURL]').value)) saveData("badged_color", $('input[name=badged_color]').val())
.then(() => saveData("hashURL", document.querySelector('input[name=hashURL]').value)) .then(() => saveData("ruleURL", $('input[name=ruleURL]').val()))
.then(() => saveData("types", document.querySelector('input[name=types]').value)) .then(() => saveData("hashURL", $('input[name=hashURL]').val()))
.then(() => saveData("logLimit", Math.max(0, Math.min(5000, document.querySelector('input[name=logLimit]').value)))) .then(() => saveData("types", $('input[name=types]').val()))
.then(() => saveData("logLimit", $('input[name=logLimit]').val()))
.then(() => browser.runtime.sendMessage({ .then(() => browser.runtime.sendMessage({
function: "setBadgedStatus", function: "setBadgedStatus",
params: [] params: []
@@ -103,32 +85,27 @@ function save() {
* *
* @param {string} string Name of the attribute used for localization * @param {string} string Name of the attribute used for localization
* @param {string[]} placeholders Array of placeholders * @param {string[]} placeholders Array of placeholders
*/ */
function translate(string, ...placeholders) { function translate(string, ...placeholders)
{
return browser.i18n.getMessage(string, placeholders); return browser.i18n.getMessage(string, placeholders);
} }
/** /**
* Get the data. * Get the data.
*/ */
function getData() { function getData()
browser.runtime.sendMessage({ {
function: "getData", loadData("badged_color")
params: ["badged_color"] .then(() => loadData("ruleURL"))
}).then(data => {
settings["badged_color"] = data.response;
pickr.setColor(data.response, false);
}).catch(handleError);
loadData("ruleURL")
.then(() => loadData("hashURL")) .then(() => loadData("hashURL"))
.then(() => loadData("types")) .then(() => loadData("types"))
.then(() => loadData("logLimit")) .then(() => loadData("logLimit"))
.then(logData => { .then(logData => {
if (logData.response === undefined) { if(logData.response === undefined || logData.response === -1) {
document.getElementById('logLimit_label').textContent = translate('setting_log_limit_label', "0"); $('#logLimit_label').text(translate('setting_log_limit_label', "∞"));
} else { } else {
document.getElementById('logLimit_label').textContent = translate('setting_log_limit_label', logData.response); $('#logLimit_label').text(translate('setting_log_limit_label', logData.response));
} }
}).catch(handleError); }).catch(handleError);
@@ -163,10 +140,7 @@ async function loadData(name) {
params: [name] params: [name]
}).then(data => { }).then(data => {
settings[name] = data.response; settings[name] = data.response;
if (document.querySelector('input[id=' + name + ']') == null) { $('input[name='+name+']').val(data.response);
console.debug(name)
}
document.querySelector('input[id=' + name + ']').value = data.response;
resolve(data); resolve(data);
}, handleError); }, handleError);
}); });
@@ -192,32 +166,33 @@ async function saveData(key, data) {
} }
/** /**
* Set the text for the UI. * Set the text for the UI.
*/ */
function setText() { function setText()
{
document.title = translate('settings_html_page_title'); document.title = translate('settings_html_page_title');
document.getElementById('page_title').textContent = translate('settings_html_page_title'); $('#page_title').text(translate('settings_html_page_title'));
document.getElementById('badged_color_label').textContent = translate('badged_color_label'); $('#badged_color_label').text(translate('badged_color_label'));
document.getElementById('reset_settings_btn').textContent = translate('setting_html_reset_button'); $('#reset_settings_btn').text(translate('setting_html_reset_button'))
document.getElementById('reset_settings_btn').setAttribute('title', translate('setting_html_reset_button_title')); .prop('title', translate('setting_html_reset_button_title'));
document.getElementById('rule_url_label').textContent = translate('setting_rule_url_label'); $('#rule_url_label').text(translate('setting_rule_url_label'));
document.getElementById('hash_url_label').textContent = translate('setting_hash_url_label'); $('#hash_url_label').text(translate('setting_hash_url_label'));
document.getElementById('types_label').innerHTML = translate('setting_types_label'); $('#types_label').html(translate('setting_types_label'));
document.getElementById('save_settings_btn').textContent = translate('settings_html_save_button'); $('#save_settings_btn').text(translate('settings_html_save_button'))
document.getElementById('save_settings_btn').setAttribute('title', translate('settings_html_save_button_title')); .prop('title', translate('settings_html_save_button_title'));
injectText("context_menu_enabled", "context_menu_enabled"); injectText("context_menu_enabled", "context_menu_enabled");
document.getElementById('history_listener_enabled').innerHTML = translate('history_listener_enabled'); $('#history_listener_enabled').html(translate('history_listener_enabled'));
injectText("local_hosts_skipping", "local_hosts_skipping"); injectText("local_hosts_skipping", "local_hosts_skipping");
document.getElementById('export_settings_btn_text').textContent = translate('setting_html_export_button'); $('#export_settings_btn_text').text(translate('setting_html_export_button'));
document.getElementById('export_settings_btn').setAttribute('title', translate('setting_html_export_button_title')); $('#export_settings_btn').prop('title', translate('setting_html_export_button_title'));
document.getElementById('import_settings_btn_text').textContent = translate('setting_html_import_button'); $('#import_settings_btn_text').text(translate('setting_html_import_button'));
document.getElementById('importSettings').setAttribute('title', translate('setting_html_import_button_title')); $('#importSettings').prop('title', translate('setting_html_import_button_title'));
injectText("referral_marketing_enabled", "referral_marketing_enabled"); injectText("referral_marketing_enabled", "referral_marketing_enabled");
injectText("domain_blocking_enabled", "domain_blocking_enabled"); injectText("domain_blocking_enabled", "domain_blocking_enabled");
document.getElementById('ping_blocking_enabled').innerHTML = translate('ping_blocking_enabled'); $('#ping_blocking_enabled').html(translate('ping_blocking_enabled'))
document.getElementById('ping_blocking_enabled').setAttribute('title', translate('ping_blocking_enabled_title')); .prop('title', translate('ping_blocking_enabled_title'));
document.getElementById('eTag_filtering_enabled').innerHTML = translate('eTag_filtering_enabled'); $('#eTag_filtering_enabled').html(translate('eTag_filtering_enabled'))
document.getElementById('eTag_filtering_enabled').setAttribute('title', translate('eTag_filtering_enabled_title')); .prop('title', translate('eTag_filtering_enabled_title'))
} }
/** /**
@@ -245,10 +220,10 @@ function importSettings(evt) {
let file = evt.target.files[0]; let file = evt.target.files[0];
let fileReader = new FileReader(); let fileReader = new FileReader();
fileReader.onload = function (e) { fileReader.onload = function(e) {
let data = JSON.parse(e.target.result); let data = JSON.parse(e.target.result);
const length = Object.keys(data).length; const length = Object.keys(data).length;
let i = 0; let i=0;
Object.entries(data).forEach(([key, value]) => { Object.entries(data).forEach(([key, value]) => {
browser.runtime.sendMessage({ browser.runtime.sendMessage({
@@ -256,7 +231,7 @@ function importSettings(evt) {
params: [key, value] params: [key, value]
}).then(() => { }).then(() => {
i++; i++;
if (i === length) { if(i === length) {
location.reload(); location.reload();
} }
}, handleError); }, handleError);
@@ -274,19 +249,20 @@ function handleError(error) {
} }
/** /**
* Change the value of a switch button. * Change the value of a switch button.
* @param {string} id HTML id * @param {string} id HTML id
* @param {string} storageID storage internal id * @param {string} storageID storage internal id
*/ */
function changeSwitchButton(id, storageID) { function changeSwitchButton(id, storageID)
let element = document.getElementById(id); {
let element = $('#'+id);
element.onchange = function () { element.on('change', function(){
browser.runtime.sendMessage({ browser.runtime.sendMessage({
function: "setData", function: "setData",
params: [storageID, element.checked] params: [storageID, element.is(':checked')]
}).then(() => { }).then((data) => {
if (storageID === "globalStatus") { if(storageID === "globalStatus"){
browser.runtime.sendMessage({ browser.runtime.sendMessage({
function: "changeIcon", function: "changeIcon",
params: [] params: []
@@ -298,38 +274,41 @@ function changeSwitchButton(id, storageID) {
params: [] params: []
}).catch(handleError); }).catch(handleError);
}).catch(handleError); }).catch(handleError);
}; });
setSwitchButton(id, storageID); setSwitchButton(id, storageID);
} }
/** /**
* Helper function to inject the translated text and tooltip. * Helper function to inject the translated text and tooltip.
* *
* @param {string} id ID of the HTML element * @param {string} id ID of the HTML element
* @param {string} attribute Name of the attribute used for localization * @param {string} attribute Name of the attribute used for localization
* @param {string} tooltip * @param {string} tooltip
*/ */
function injectText(id, attribute, tooltip = "") { function injectText(id, attribute, tooltip = "")
let object = document.getElementById(id); {
object.textContent = translate(attribute); let object = $('#'+id);
object.text(translate(attribute));
/* /*
This function will throw an error if no translation This function will throw an error if no translation
is found for the tooltip. This is a planned error. is found for the tooltip. This is a planned error.
*/ */
tooltip = translate(attribute + "_title"); tooltip = translate(attribute+"_title");
if (tooltip !== "") { if(tooltip !== "")
object.setAttribute('title', tooltip); {
object.prop('title', tooltip);
} }
} }
/** /**
* Set the value of a switch button. * Set the value of a switch button.
* @param {string} id HTML id * @param {string} id HTML id
* @param {string} varname js internal variable name * @param {string} varname js internal variable name
*/ */
function setSwitchButton(id, varname) { function setSwitchButton(id, varname)
let element = document.getElementById(id); {
element.checked = settings[varname]; let element = $('#'+id);
element.prop('checked', settings[varname]);
} }

View File

@@ -27,18 +27,18 @@
function setText() function setText()
{ {
document.title = translate('blocked_html_title'); document.title = translate('blocked_html_title');
document.getElementById('title').innerHTML = translate('blocked_html_title'); $('#title').html(translate('blocked_html_title'));
document.getElementById('body').innerHTML = translate('blocked_html_body'); $('#body').html(translate('blocked_html_body'));
document.getElementById('page').textContent = translate('blocked_html_button'); $('#page').text(translate('blocked_html_button'));
} }
(function() { $(document).ready(function(){
setText(); setText();
const source = new URLSearchParams(window.location.search).get("source"); let source = new URLSearchParams(window.location.search).get("source");
document.getElementById('page').href = decodeURIComponent(source); $('#page').attr('href', decodeURIComponent(source));
})(); });
/** /**
* Translate a string with the i18n API. * Translate a string with the i18n API.

View File

@@ -157,7 +157,7 @@ function setData(key, value) {
storage[key] = value.split(','); storage[key] = value.split(',');
break; break;
case "logLimit": case "logLimit":
storage[key] = Math.max(0, Number(value)); storage[key] = Number(value);
break; break;
default: default:
storage[key] = value; storage[key] = value;
@@ -193,8 +193,8 @@ function initSettings() {
storage.log = {"log": []}; storage.log = {"log": []};
storage.statisticsStatus = true; storage.statisticsStatus = true;
storage.badged_color = "#ffa500"; storage.badged_color = "#ffa500";
storage.hashURL = "https://rules2.clearurls.xyz/rules.minify.hash"; storage.hashURL = "https://kevinroebert.gitlab.io/ClearUrls/data/rules.minify.hash";
storage.ruleURL = "https://rules2.clearurls.xyz/data.minify.json"; storage.ruleURL = "https://kevinroebert.gitlab.io/ClearUrls/data/data.minify.json";
storage.contextMenuEnabled = true; storage.contextMenuEnabled = true;
storage.historyListenerEnabled = true; storage.historyListenerEnabled = true;
storage.localHostsSkipping = true; storage.localHostsSkipping = true;
@@ -206,7 +206,7 @@ function initSettings() {
storage.watchDogErrorCount = 0; storage.watchDogErrorCount = 0;
if (getBrowser() === "Firefox") { if (getBrowser() === "Firefox") {
storage.types = ["font", "image", "imageset", "main_frame", "media", "object", "object_subrequest", "other", "script", "stylesheet", "sub_frame", "websocket", "xml_dtd", "xmlhttprequest", "xslt"]; storage.types = ["font", "image", "imageset", "main_frame", "media", "object", "object_subrequest", "other", "script", "stylesheet", "sub_frame", "websocket", "xbl", "xml_dtd", "xmlhttprequest", "xslt"];
storage.pingRequestTypes = ["ping", "beacon"]; storage.pingRequestTypes = ["ping", "beacon"];
} else if (getBrowser() === "Chrome") { } else if (getBrowser() === "Chrome") {
storage.types = ["main_frame", "sub_frame", "stylesheet", "script", "image", "font", "object", "xmlhttprequest", "ping", "csp_report", "media", "websocket", "other"]; storage.types = ["main_frame", "sub_frame", "stylesheet", "script", "image", "font", "object", "xmlhttprequest", "ping", "csp_report", "media", "websocket", "other"];
@@ -238,10 +238,6 @@ function replaceOldURLs(url) {
return "https://kevinroebert.gitlab.io/ClearUrls/data/data.minify.json"; return "https://kevinroebert.gitlab.io/ClearUrls/data/data.minify.json";
case "https://gitlab.com/KevinRoebert/ClearUrls/-/jobs/artifacts/master/raw/rules.minify.hash?job=hash%20rules": case "https://gitlab.com/KevinRoebert/ClearUrls/-/jobs/artifacts/master/raw/rules.minify.hash?job=hash%20rules":
return "https://kevinroebert.gitlab.io/ClearUrls/data/rules.minify.hash"; return "https://kevinroebert.gitlab.io/ClearUrls/data/rules.minify.hash";
case "https://kevinroebert.gitlab.io/ClearUrls/data/data.minify.json":
return "https://rules2.clearurls.xyz/data.minify.json";
case "https://kevinroebert.gitlab.io/ClearUrls/data/rules.minify.hash":
return "https://rules2.clearurls.xyz/rules.minify.hash";
default: default:
return url; return url;
} }

View File

@@ -21,12 +21,6 @@
* This script is responsible for some tools. * This script is responsible for some tools.
*/ */
// Needed by the sha256 method
const enc = new TextEncoder();
// Max amount of log entries to prevent performance issues
const logThreshold = 5000;
/* /*
* To support Waterfox. * To support Waterfox.
*/ */
@@ -101,10 +95,6 @@ function extractHost(url) {
function checkLocalURL(url) { function checkLocalURL(url) {
let host = extractHost(url); let host = extractHost(url);
if(!host.match(/^\d/) && host !== 'localhost') {
return false;
}
return ipRangeCheck(host, ["10.0.0.0/8", "172.16.0.0/12", return ipRangeCheck(host, ["10.0.0.0/8", "172.16.0.0/12",
"192.168.0.0/16", "100.64.0.0/10", "192.168.0.0/16", "100.64.0.0/10",
"169.254.0.0/16", "127.0.0.1"]) || "169.254.0.0/16", "127.0.0.1"]) ||
@@ -275,34 +265,17 @@ function getBrowser() {
/** /**
* Decodes an URL, also one that is encoded multiple times. * Decodes an URL, also one that is encoded multiple times.
*
* @see https://stackoverflow.com/a/38265168
*
* @param url the url, that should be decoded * @param url the url, that should be decoded
*/ */
function decodeURL(url) { function decodeURL(url) {
let rtn = decodeURIComponent(url); const rtn = decodeURIComponent(url);
if (rtn.indexOf("http://") === -1 && rtn.indexOf("https://") === -1) {
while(isEncodedURI(rtn)) { return decodeURL(rtn);
rtn = decodeURIComponent(rtn);
}
// Required (e.g., to fix https://github.com/ClearURLs/Addon/issues/71)
if(rtn.substr(0, 4) !== 'http') {
rtn = 'http://'+rtn
} }
return rtn; return rtn;
} }
/**
* Returns true, iff the given URI is encoded
* @see https://stackoverflow.com/a/38265168
*/
function isEncodedURI(uri) {
return uri !== decodeURIComponent(uri || '')
}
/** /**
* Gets the value of at `key` an object. If the resolved value is `undefined`, the `defaultValue` is returned in its place. * Gets the value of at `key` an object. If the resolved value is `undefined`, the `defaultValue` is returned in its place.
* *
@@ -314,23 +287,26 @@ Object.prototype.getOrDefault = function (key, defaultValue) {
}; };
function handleError(error) { function handleError(error) {
console.error("[ClearURLs ERROR]:" + error); console.log("[ClearURLs ERROR]:" + error);
} }
/** /**
* Function to log all activities from ClearUrls. * Function to log all activities from ClearUrls.
* Only logging when activated. * Only logging when activated.
* The log is only temporary saved in the cache and will
* permanently saved with the saveLogOnClose function.
* *
* @param beforeProcessing the url before the clear process * @param beforeProcessing the url before the clear process
* @param afterProcessing the url after the clear process * @param afterProcessing the url after the clear process
* @param rule the rule that triggered the process * @param rule the rule that triggered the process
*/ */
function pushToLog(beforeProcessing, afterProcessing, rule) { function pushToLog(beforeProcessing, afterProcessing, rule) {
const limit = Math.max(0, storage.logLimit); const limit = storage.logLimit;
if (storage.loggingStatus && limit !== 0 && !isNaN(limit)) { if (storage.loggingStatus && limit !== 0) {
while (storage.log.log.length >= limit if (limit > 0 && !isNaN(limit)) {
|| storage.log.log.length >= logThreshold) { while (storage.log.log.length >= limit) {
storage.log.log.shift(); storage.log.log.shift();
}
} }
storage.log.log.push( storage.log.log.push(
@@ -351,20 +327,3 @@ function pushToLog(beforeProcessing, afterProcessing, rule) {
function isStorageAvailable() { function isStorageAvailable() {
return storage.ClearURLsData.length !== 0; return storage.ClearURLsData.length !== 0;
} }
/**
* This method calculates the SHA-256 hash as HEX string of the given message.
* This method uses the native hashing implementations of the SubtleCrypto interface which is supported by all browsers
* that implement the Web Cryptography API specification and is based on:
* https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
*
* @param message message for which the hash should be calculated
* @returns {Promise<string>} SHA-256 of the given message
*/
async function sha256(message) {
const msgUint8 = enc.encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', msgUint8);
const hashArray = Array.from(new Uint8Array(hashBuffer));
return hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
}

View File

@@ -21,4 +21,4 @@
* @return version * @return version
*/ */
const version = browser.runtime.getManifest().version; const version = browser.runtime.getManifest().version;
document.getElementById('version').textContent = version; $('#version').text(version);

10
css/bootstrap-colorpicker.min.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
data

Submodule data deleted from 30c9f66515

461
data/data.json Normal file
View File

@@ -0,0 +1,461 @@
{
"providers": {
"amazon": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(amazon)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"pf_rd_[a-zA-Z]=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"srs=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(adsensecustomsearchads\\.com)\\/.*",
"pd_rd_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"__mk_[a-zA-Z]{1,3}_[a-zA-Z]{1,3}=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"spIA=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ms3_c=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[a-zA-Z%0-9]*ie=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"refRID=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"colid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"coliid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[^a-zA-Z%0-9]adId=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qualifier=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_encoding=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"smid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"field-lbr_brands_browse-bin=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [
".*(amazon\\.).*(\\/gp).*\\/redirector.html\\/.*"
],
"redirections": []
},
"fls-na.amazon": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(fls-na\\.amazon)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"google": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(google)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"ved=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"bi[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gfe_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ei=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gs_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"site=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"&\\.[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"oq=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"esrc=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"uact=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"cd=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"cad=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gws_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"atyp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"vet=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"zx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_u=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"je=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"dcr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ie=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sei=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sa=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"dpr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"btn[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sa=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"usg=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"cd=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"cad=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"uact=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [
".*(mail\\.google\\.).*(\\/mail\\/u\\/0).*",
".*(google\\.).*(\\/upload)?(\\/drive)\\/.*",
".*(docs\\.google\\.).*\\/.*",
".*(accounts\\.google\\.).*",
".*(google\\.).*\\/searchbyimage\\?image_url=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(hangouts\\.google\\.).*\\/webchat.*zx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(client-channel\\.google\\.).*\\/client-channel.*zx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(google\\.).*\\/complete\\/search\\?.*gs_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(google\\.).*\\/s\\?tbm=map.*gs_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(news\\.google\\.).*\\?hl=.*",
".*(google\\.).*\\/setprefs\\?.*hl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
".*(google\\.).*\\/appsactivity\\/.*",
".*(google\\.).*\\/recaptcha\\/.*"
],
"redirections": [
".*google\\..*\\/.*url\\?.*url=((https|http)[^&]*)",
".*google\\..*\\/.*url\\?.*q=((https|http)[^&]*)"
]
},
"googlesyndication": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(googlesyndication)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"doubleclick": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(doubleclick)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": [
".*doubleclick\\..*\\/.*tag_for_child_directed_treatment=;%3F(.*)"
]
},
"globalRules": {
"urlPattern": ".*",
"completeProvider": false,
"rules": [
"utm_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_medium=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_term=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_content=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_campaign=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ga_place=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"yclid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_openstat=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_action_ids=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_action_types=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fb_ref=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"fbclid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"action_object_map=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"action_type_map=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"action_ref_map=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gs_l=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"mkt_tok=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hmb_campaign=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hmb_medium=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"hmb_source=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[\\?|&]ref[\\_]?=[^\\/|\\?|&]*",
"\\?$",
"\\&$"
],
"exceptions": [
".*([\\.]?matrix\\.org)(\\/_matrix)\\/.*",
".*([\\.]?prismic\\.io).*",
".*([\\.]?gitlab\\.com).*",
".*([\\.]?gcsip\\.com).*[\\?|&]ref[\\_]?=[^\\/|\\?|&]*.*",
".*([\\.]?cloudflare\\.com).*",
".*([\\.]?tv2\\.no)(\\/api)\\/.*"
],
"redirections": []
},
"adtech": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(adtech)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"contentpass.net": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(contentpass\\.net).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"bf-ad": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(bf-ad)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"amazon-adsystem": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(amazon-adsystem)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"adsensecustomsearchads": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(adsensecustomsearchads)(\\.[a-zA-Z]{2,}).*",
"completeProvider": true,
"rules": [],
"exceptions": [],
"redirections": []
},
"youtube": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(youtube)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"feature=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"gclid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"kw=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"facebook": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(facebook)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"hc_[a-zA-Z_\\[\\]0-9]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[a-zA-Z]*ref[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"__tn__=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"eid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"__xts__%5B[0-9]%5D=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [
".*(facebook\\.)\\w{2,}.*(\\/plugins\\/).*"
],
"redirections": [
".*l\\.facebook\\..*\\/.*l\\.php\\?.*u=((https%3A%2F%2F|http%3A%2F%2F)[^&]*)"
]
},
"twitter": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(twitter)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"(ref_)?src=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"reddit": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(reddit)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [],
"exceptions": [],
"redirections": [
"out\\.reddit\\.\\w{2,}\\/.*url=([^&]*)"
]
}
,
"netflix": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(netflix)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"trackId=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"tctx=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"jb[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"techcrunch": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?([\\.]?techcrunch\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"ncid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sr=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sr_share=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"guccounter=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"guce_referrer_[a-z]+=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"bing": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(bing)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"cvid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"form=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sk=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"sc=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qs=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"qp=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"tweakers": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(tweakers\\.net)(.*\\?.*)",
"completeProvider": false,
"rules": [
"nb=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"u=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"twitch": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(twitch)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"tt_medium=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"tt_content=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"vivaldi": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(vivaldi\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"pk_campaign=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"pk_kwd=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"indeed": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(indeed\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"from=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"alid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"[a-zA-Z]*tk=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"hhdotru": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(hh\\.ru)(.*\\?.*)",
"completeProvider": false,
"rules": [
"vss=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"t=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"swnt=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"grpos=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ptl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"stl=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"exp=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"plim=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"ebay": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(ebay)(\\.[a-zA-Z]{2,})(.*\\?.*)",
"completeProvider": false,
"rules": [
"_trkparms=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_trksid=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"_from=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"cnet": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(cnet\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"ftag=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"imdb.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(imdb\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"ref_=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"pf_rd_[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"govdelivery.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(govdelivery\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [],
"exceptions": [],
"redirections": [
".*links\\.govdelivery\\.com.*\\/track\\?.*(http:\\/\\/.*)",
".*links\\.govdelivery\\.com.*\\/track\\?.*(https:\\/\\/.*)"
]
},
"walmart.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(walmart\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"u1=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"ath[a-zA-Z]*=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"net-parade.it": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(net\\-parade\\.it)(.*\\?.*)",
"completeProvider": false,
"rules": [
"pl=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"prvnizpravy.cz": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(prvnizpravy\\.cz)(.*\\?.*)",
"completeProvider": false,
"rules": [
"xid=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"youku.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(youku\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"spm=[^\\/|\\?|&]*(\\/|&(amp;)?)?",
"tpa=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"nytimes.com": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(nytimes\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"smid=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"tchibo.de": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(tchibo\\.de)(.*\\?.*)",
"completeProvider": false,
"rules": [
"wbdcd=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"steam": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(steampowered\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"snr=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
},
"disq.us": {
"urlPattern": "(https:\\/\\/|http:\\/\\/)([a-zA-Z0-9-]*\\.)?(disq\\.us)(.*\\?.*)",
"completeProvider": false,
"rules": [],
"exceptions": [],
"redirections": [
".*disq\\.us.*\\/.*url\\?.*url=((https%3A%2F%2F|http%3A%2F%2F).*)%3A"
]
},
"mozaws.net": {
"urlPattern": "https?://outgoing\\.prod\\.mozaws\\.net/.*",
"completeProvider": false,
"rules": [],
"exceptions": [],
"redirections": [
"https?://[^/]+/v1/[0-9a-f]{64}/(.*)"
]
},
"shutterstock.com": {
"urlPattern": "https?://([a-zA-Z0-9-]*\\.)?(shutterstock\\.com)(.*\\?.*)",
"completeProvider": false,
"rules": [
"src=[^\\/|\\?|&]*(\\/|&(amp;)?)?"
],
"exceptions": [],
"redirections": []
}
}
}

1952
data/data.min.json Normal file

File diff suppressed because it is too large Load Diff

1
data/rules.hash Normal file
View File

@@ -0,0 +1 @@
b0e1fc948f5e391a53a57092b1c29e8cff474402d5411f4045cfb4a7db37d2bc

File diff suppressed because one or more lines are too long

5
external_js/popper.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,247 @@
/*
* A JavaScript implementation of the SHA256 hash function.
*
* FILE: sha256.jquery.debug.js
* VERSION: 1.0
*
* MODIFICATION BY: Jacob Bair <orso.zed@gmail.com>
* ORIGINAL AUTHOR: Christoph Bichlmeier <informatik@zombiearena.de>
*
* NOTE: This version is not tested thoroughly!
*
* Copyright (c) 2003, Christoph Bichlmeier
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. Neither the name of the copyright holder nor the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* ======================================================================
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
(function($) {
$.sha256 = function(data) {
var ihash, count, buffer;
var hex_digits = "0123456789abcdef";
/* Hash constant words K: */
var K256 = new Array(
0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,
0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,
0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,
0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,
0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,
0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
);
var rotateRight = function(n, x) {
return ((x >>> n) | (x << (32 - n)));
};
var choice = function(x, y, z) {
return ((x & y) ^ (~x & z));
};
var majority = function(x, y, z) {
return ((x & y) ^ (x & z) ^ (y & z));
};
var Sigma0 = function(x) {
return (rotateRight(2, x) ^ rotateRight(13, x) ^ rotateRight(22, x));
};
var Sigma1 = function(x) {
return (rotateRight(6, x) ^ rotateRight(11, x) ^ rotateRight(25, x));
};
var sigma0 = function(x) {
return (rotateRight(7, x) ^ rotateRight(18, x) ^ (x >>> 3));
};
var sigma1 = function(x) {
return (rotateRight(17, x) ^ rotateRight(19, x) ^ (x >>> 10));
};
var expand = function(W, j) {
return (W[j & 0x0f] += sigma1(W[(j + 14) & 0x0f]) + W[(j + 9) & 0x0f] + sigma0(W[(j + 1) & 0x0f]));
};
var safe_add = function (x, y) {
var lsw = (x & 0xffff) + (y & 0xffff);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xffff);
};
var init = function() {
ihash = new Array(8);
count = new Array(2);
buffer = new Array(64);
count[0] = count[1] = 0;
ihash[0] = 0x6a09e667;
ihash[1] = 0xbb67ae85;
ihash[2] = 0x3c6ef372;
ihash[3] = 0xa54ff53a;
ihash[4] = 0x510e527f;
ihash[5] = 0x9b05688c;
ihash[6] = 0x1f83d9ab;
ihash[7] = 0x5be0cd19;
};
var update = function(data, length) {
var index, curpos = 0;
/* Compute number of bytes mod 64 */
index = ((count[0] >> 3) & 0x3f);
var remainder = (length & 0x3f);
/* Update number of bits */
if ((count[0] += (length << 3)) < (length << 3)) {
count[1]++;
}
count[1] += (length >> 29);
/* Transform as many times as possible */
for (var i = 0; i + 63 < length; i += 64) {
for (var j = index; j < 64; j++) {
buffer[j] = data.charCodeAt(curpos++);
}
transform();
index = 0;
}
/* Buffer remaining input */
for (var k = 0; k < remainder; k++) {
buffer[k] = data.charCodeAt(curpos++);
}
};
var transform = function() {
var a, b, c, d, e, f, g, h, T1, T2;
var W = new Array(16);
/* Initialize registers with the previous intermediate value */
a = ihash[0];
b = ihash[1];
c = ihash[2];
d = ihash[3];
e = ihash[4];
f = ihash[5];
g = ihash[6];
h = ihash[7];
/* make 32-bit words */
for (var i = 0; i < 16; i++) {
W[i] = ((buffer[(i << 2) + 3]) | (buffer[(i << 2) + 2] << 8) | (buffer[(i << 2) + 1] << 16) | (buffer[i << 2] << 24));
}
for (var j = 0; j < 64; j++) {
T1 = h + Sigma1(e) + choice(e, f, g) + K256[j];
if (j < 16) {
T1 += W[j];
} else {
T1 += expand(W, j);
}
T2 = Sigma0(a) + majority(a, b, c);
h = g;
g = f;
f = e;
e = safe_add(d, T1);
d = c;
c = b;
b = a;
a = safe_add(T1, T2);
}
/* Compute the current intermediate hash value */
ihash[0] += a;
ihash[1] += b;
ihash[2] += c;
ihash[3] += d;
ihash[4] += e;
ihash[5] += f;
ihash[6] += g;
ihash[7] += h;
};
var final = function() {
var index = ((count[0] >> 3) & 0x3f);
buffer[index++] = 0x80;
if (index <= 56) {
for (var i = index; i < 56; i++) {
buffer[i] = 0;
}
} else {
for (var i = index; i < 64; i++) {
buffer[i] = 0;
}
transform();
for (var i = 0; i < 56; i++) {
buffer[i] = 0;
}
}
buffer[56] = (count[1] >>> 24) & 0xff;
buffer[57] = (count[1] >>> 16) & 0xff;
buffer[58] = (count[1] >>> 8) & 0xff;
buffer[59] = count[1] & 0xff;
buffer[60] = (count[0] >>> 24) & 0xff;
buffer[61] = (count[0] >>> 16) & 0xff;
buffer[62] = (count[0] >>> 8) & 0xff;
buffer[63] = count[0] & 0xff;
transform();
};
var encode = function() {
var output = "";
for (var i = 0; i < 8; i++) {
for (var j = 28; j >= 0; j -= 4) {
output += hex_digits.charAt((ihash[i] >>> j) & 0x0f);
}
}
return output;
};
if ($.isPlainObject(data) || $.isArray(data)) {
data = JSON.stringify(data);
}
init();
update(data, data.length);
final();
return encode();
};
})(jQuery);

View File

@@ -29,6 +29,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<!-- Bootstrap CSS --> <!-- Bootstrap CSS -->
<link rel="stylesheet" href="../css/bootstrap.min.css"> <link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" href="../css/dataTables.bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../css/core.css"> <link rel="stylesheet" type="text/css" href="../css/core.css">
<style> <style>
td { td {
@@ -76,6 +77,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<!-- Optional JavaScript --> <!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS --> <!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="../browser-polyfill.js"></script> <script src="../browser-polyfill.js"></script>
<script src="../external_js/jquery-3.4.1.min.js"></script>
<script src="../external_js/bootstrap.min.js"></script>
<script src="../core_js/cleaning_tool.js"></script> <script src="../core_js/cleaning_tool.js"></script>
<script src="../core_js/write_version.js"></script> <script src="../core_js/write_version.js"></script>
</body> </body>

View File

@@ -113,7 +113,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<!-- jQuery first, then Popper.js, then Bootstrap JS --> <!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="../browser-polyfill.js"></script> <script src="../browser-polyfill.js"></script>
<script src="../external_js/jquery-3.4.1.min.js"></script> <script src="../external_js/jquery-3.4.1.min.js"></script>
<script src="../external_js/bootstrap.min.js"></script>
<script src="../external_js/datatables.min.js"></script> <script src="../external_js/datatables.min.js"></script>
<script src="../external_js/fontawesome/all.min.js"></script>
<script src="../core_js/log.js"></script> <script src="../core_js/log.js"></script>
<script src="../core_js/write_version.js"></script> <script src="../core_js/write_version.js"></script>
</body> </body>

View File

@@ -136,7 +136,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<div class="col-sm-1"> <div class="col-sm-1">
<h5><b id="rules_status_head"></b></h5> <h5><b id="rules_status_head"></b></h5>
<div class="text-center"> <div class="text-center">
<a href="https://gitlab.com/anti-tracking/ClearURLs/rules/commits/master/data.min.json" <a href="https://gitlab.com/KevinRoebert/ClearUrls/commits/master/data/data.min.json"
id="hashStatus" class="btn btn-primary btn-sm text-wrap" target="_blank"></a> id="hashStatus" class="btn btn-primary btn-sm text-wrap" target="_blank"></a>
</div> </div>
<div class="clearfix"></div> <div class="clearfix"></div>
@@ -158,6 +158,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<!-- Optional JavaScript --> <!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS --> <!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script type="application/javascript" src="../browser-polyfill.js"></script> <script type="application/javascript" src="../browser-polyfill.js"></script>
<script src="../external_js/jquery-3.4.1.min.js"></script>
<script src="../external_js/bootstrap.min.js"></script>
<script src="../external_js/fontawesome/all.min.js"></script> <script src="../external_js/fontawesome/all.min.js"></script>
<script src="../core_js/popup.js"></script> <script src="../core_js/popup.js"></script>
<script src="../core_js/write_version.js"></script> <script src="../core_js/write_version.js"></script>

View File

@@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<link rel="stylesheet" href="../css/bootstrap.min.css"> <link rel="stylesheet" href="../css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" href="../css/switchButtons.css"> <link rel="stylesheet" type="text/css" href="../css/switchButtons.css">
<link rel="stylesheet" type="text/css" href="../css/core.css"> <link rel="stylesheet" type="text/css" href="../css/core.css">
<link rel="stylesheet" href="../css/pickr.nano.min.css"> <link rel="stylesheet" href="../css/bootstrap-colorpicker.min.css">
<style> <style>
td { td {
word-wrap: break-word; word-wrap: break-word;
@@ -92,6 +92,10 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<br /> <br />
<label id="badged_color_label"></label><br /> <label id="badged_color_label"></label><br />
<div id="badged-color-picker" class="input-group"> <div id="badged-color-picker" class="input-group">
<input type="text" class="form-control input-lg" value="" name="badged_color" id="badged_color">
<span class="input-group-append">
<span class="input-group-text colorpicker-input-addon"><i></i></span>
</span>
</div> </div>
<br /> <br />
<br /> <br />
@@ -112,7 +116,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<br /> <br />
<p> <p>
<label id="logLimit_label"></label><br /> <label id="logLimit_label"></label><br />
<input type="number" id="logLimit" value="" name="logLimit" class="form-control" min="0" max="5000"> <input type="number" id="logLimit" value="" name="logLimit" class="form-control" min="-1">
</p> </p>
<br /> <br />
<p> <p>
@@ -174,7 +178,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<!-- Optional JavaScript --> <!-- Optional JavaScript -->
<script src="../browser-polyfill.js"></script> <script src="../browser-polyfill.js"></script>
<script src="../external_js/pickr.min.js"></script> <script src="../external_js/jquery-3.4.1.min.js"></script>
<script src="../external_js/popper.min.js"></script>
<script src="../external_js/bootstrap.min.js"></script>
<script src="../external_js/bootstrap-colorpicker.min.js"></script>
<script src="../external_js/fontawesome/all.min.js"></script>
<script src="../core_js/settings.js"></script> <script src="../core_js/settings.js"></script>
<script src="../core_js/write_version.js"></script> <script src="../core_js/write_version.js"></script>
</body> </body>

View File

@@ -69,6 +69,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
<!-- Optional JavaScript --> <!-- Optional JavaScript -->
<!-- jQuery first, then Popper.js, then Bootstrap JS --> <!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="../browser-polyfill.js"></script> <script src="../browser-polyfill.js"></script>
<script src="../external_js/jquery-3.4.1.min.js"></script>
<script src="../external_js/bootstrap.min.js"></script>
<script src="../core_js/siteBlockedAlert.js"></script> <script src="../core_js/siteBlockedAlert.js"></script>
<script src="../core_js/write_version.js"></script> <script src="../core_js/write_version.js"></script>
</body> </body>

View File

@@ -1,7 +1,7 @@
{ {
"manifest_version": 2, "manifest_version": 2,
"name": "ClearURLs", "name": "ClearURLs",
"version": "1.20.0", "version": "1.17.0",
"author": "Kevin Röbert", "author": "Kevin Röbert",
"description": "__MSG_extension_description__", "description": "__MSG_extension_description__",
"homepage_url": "https://gitlab.com/KevinRoebert/ClearUrls", "homepage_url": "https://gitlab.com/KevinRoebert/ClearUrls",
@@ -52,6 +52,8 @@
"background": { "background": {
"scripts": [ "scripts": [
"browser-polyfill.js", "browser-polyfill.js",
"external_js/jquery-3.4.1.min.js",
"external_js/sha256.jquery.js",
"core_js/message_handler.js", "core_js/message_handler.js",
"external_js/ip-range-check.js", "external_js/ip-range-check.js",
"core_js/tools.js", "core_js/tools.js",
@@ -272,8 +274,7 @@
"all_frames": true, "all_frames": true,
"matches": [ "matches": [
"*://*.yandex.ru/*", "*://*.yandex.ru/*",
"*://*.yandex.com/*", "*://*.yandex.com/*"
"*://*.ya.ru/*"
], ],
"js": [ "js": [
"core_js/yandex_link_fix.js" "core_js/yandex_link_fix.js"

9473
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

41
package.json Normal file
View File

@@ -0,0 +1,41 @@
{
"name": "ClearURLs",
"description": "ClearURLs is an add-on based on the new WebExtensions technology and is optimized for Firefox. This add-on will remove the tracking fields form all URLs which are visited by the browser and use a rule file, namely data.json. This add-on protects your privacy and block the request from advertising services like doubleclick.net.",
"version": "1.2.1.4",
"contributors": [
{
"name": "Kevin R.",
"email": "clearurls_1@kevinroebert.de",
"web": "https://gitlab.com/KevinRoebert"
},
{
"name": "Arne",
"email": "clearurls_1@kevinroebert.de",
"web": "https://gitlab.com/astaar"
}
],
"maintainers": [
{
"name": "Kevin R.",
"email": "clearurls_1@kevinroebert.de",
"web": "https://gitlab.com/KevinRoebert"
}
],
"dependencies": {
"DataTables/DataTables": "1.10.16",
"ip-range-check": "^0.2.0",
"jquery/jquery": "3.2.1",
"lauren/pick-a-color": "1.2.3",
"orsozed/sha256.jquery.plugin": "1.0",
"twbs/bootstrap": "3.3.7"
},
"bugs": {
"web": "https://gitlab.com/KevinRoebert/ClearUrls/issues/new"
},
"licenses": [
{
"name": "QaPL v0.2",
"url": "https://gitlab.com/KevinRoebert/ClearUrls/blob/master/LICENSE.md"
}
]
}

53
server/report_url.php Normal file
View File

@@ -0,0 +1,53 @@
<?php
/*
* ClearURLs
* Copyright (c) 2017-2020 Kevin Röbert
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
$servername = "...";
$username = "...";
$password = "...";
$dbname = "...";
if(isset($_GET['url'])) $url = urldecode($_GET['url']);
else http_response_code(404);
if(!empty($url) && filter_var($url, FILTER_VALIDATE_URL))
{
$hash = md5($url);
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
http_response_code(505);
}
$sql = "INSERT INTO reports (hash, url) VALUES ('$hash', '$url')";
if ($conn->query($sql) === TRUE) {
http_response_code(200);
} else {
http_response_code(500);
}
$conn->close();
}
else {
http_response_code(505);
}
?>