mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2025-01-03 18:42:00 +01:00
parent
9dcb1f8903
commit
947d9e0c59
@ -455,6 +455,18 @@
|
|||||||
"message": "Leeren",
|
"message": "Leeren",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
|
"sharePersistentRndBetweenDomains_title": {
|
||||||
|
"message": "Persistente Zufallszahlen zwischen Domains teilen",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"sharePersistentRndBetweenDomains_description": {
|
||||||
|
"message": "ACHTUNG: diese Einstellung macht den Browser 100% eindeutig identifizierbar und ist damit eine Gefährdung Ihrer Privatsphäre.",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"sharePersistentRndBetweenDomains_confirmMessage": {
|
||||||
|
"message": "Sind Sie sicher, dass sie die persistenten Zufallszahlen zwischen Domains teilen wollen?\nACHTUNG: dies macht den Browser 100% eindeutig identifizierbar und ist damit eine Gefährdung Ihrer Privatsphäre.",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
"ignoreFrequentColors_title": {
|
"ignoreFrequentColors_title": {
|
||||||
"message": "Ignoriere die häufigsten Farben",
|
"message": "Ignoriere die häufigsten Farben",
|
||||||
"description": ""
|
"description": ""
|
||||||
@ -1107,6 +1119,10 @@
|
|||||||
"message": "Leistung",
|
"message": "Leistung",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
|
"sanitation_ruleset.privacy": {
|
||||||
|
"message": "Privatsphäre",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
"sanitation_error.unnecessaryURLValue": {
|
"sanitation_error.unnecessaryURLValue": {
|
||||||
"message": "Der URL-Wert für \"{url}\" ist identisch zur globalen Einstellung für \"{setting-title}\".",
|
"message": "Der URL-Wert für \"{url}\" ist identisch zur globalen Einstellung für \"{setting-title}\".",
|
||||||
"description": ""
|
"description": ""
|
||||||
@ -1182,5 +1198,9 @@
|
|||||||
"sanitation_error.storeImage": {
|
"sanitation_error.storeImage": {
|
||||||
"message": "Bilder für Betrachtung zu speichern führt zu einem hohen RAM-Verbrauch.",
|
"message": "Bilder für Betrachtung zu speichern führt zu einem hohen RAM-Verbrauch.",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
"sanitation_error.doNotSharePersistentRndBetweenDomains": {
|
||||||
|
"message": "Teilen Sie die persistenten Zufallszahlen nicht zwischen Domains, da dies den Browser 100% eindeutig identifizierbar macht.",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -339,7 +339,7 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"protectedCanvasPart_description": {
|
"protectedCanvasPart_description": {
|
||||||
"message": "readout: the readout features of the canvas API are protected.\n\ninput: the input features of the canvas API are protected. With blocking mode \"fake\" the drawn pixels get modified slightly when displaying text . This makes the detection of the add-on harder but is less secure. With WebGL canvases the behaviour is identical to \"readout\".\n\neverything: both the readout and input features are protected. It's not recommended to use this with \"fake\" block mode as it increases the probability to be detected.",
|
"message": "readout: the readout features of the canvas API are protected.\n\ninput: the input features of the canvas API are protected. With blocking mode \"fake\" the drawn pixels get modified slightly when displaying text. This makes the detection of the add-on harder but is less secure. With WebGL canvases the behaviour is identical to \"readout\".\n\neverything: both the readout and input features are protected. It's not recommended to use this with \"fake\" block mode as it increases the probability to be detected.",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"protectedCanvasPart_options.input": {
|
"protectedCanvasPart_options.input": {
|
||||||
@ -480,6 +480,19 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
|
|
||||||
|
"sharePersistentRndBetweenDomains_title": {
|
||||||
|
"message": "Share persistent randomness between domains",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"sharePersistentRndBetweenDomains_description": {
|
||||||
|
"message": "CAUTION: this setting makes the browser 100% trackable and is therefore a threat to your privacy.",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
"sharePersistentRndBetweenDomains_confirmMessage": {
|
||||||
|
"message": "Are you really sure you want to share the persistent randomness between domains?\nCAUTION: this makes the browser 100% trackable and is therefore a threat to your privacy.",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
|
|
||||||
"ignoreFrequentColors_title": {
|
"ignoreFrequentColors_title": {
|
||||||
"message": "Ignore the most frequent colors",
|
"message": "Ignore the most frequent colors",
|
||||||
"description": ""
|
"description": ""
|
||||||
@ -1159,6 +1172,10 @@
|
|||||||
"message": "Performance",
|
"message": "Performance",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
|
"sanitation_ruleset.privacy": {
|
||||||
|
"message": "Privacy",
|
||||||
|
"description": ""
|
||||||
|
},
|
||||||
"sanitation_error.unnecessaryURLValue": {
|
"sanitation_error.unnecessaryURLValue": {
|
||||||
"message": "URL value for \"{url}\" is the same as the global setting for \"{setting-title}\".",
|
"message": "URL value for \"{url}\" is the same as the global setting for \"{setting-title}\".",
|
||||||
"description": ""
|
"description": ""
|
||||||
@ -1234,5 +1251,9 @@
|
|||||||
"sanitation_error.storeImage": {
|
"sanitation_error.storeImage": {
|
||||||
"message": "Storing the image for inspection has a high RAM footprint.",
|
"message": "Storing the image for inspection has a high RAM footprint.",
|
||||||
"description": ""
|
"description": ""
|
||||||
|
},
|
||||||
|
"sanitation_error.doNotSharePersistentRndBetweenDomains": {
|
||||||
|
"message": "Do not share persistent randomness between domains because this makes the browser 100% trackable.",
|
||||||
|
"description": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,6 +66,9 @@
|
|||||||
const settings = require("./settings");
|
const settings = require("./settings");
|
||||||
|
|
||||||
function getDomain(window){
|
function getDomain(window){
|
||||||
|
if (settings.sharePersistentRndBetweenDomains){
|
||||||
|
return "shared://domain";
|
||||||
|
}
|
||||||
if (!window.location.href || window.location.href === "about:blank"){
|
if (!window.location.href || window.location.href === "about:blank"){
|
||||||
if (window !== window.parent){
|
if (window !== window.parent){
|
||||||
return getDomain(window.parent);
|
return getDomain(window.parent);
|
||||||
|
@ -162,6 +162,10 @@
|
|||||||
name: "lastPersistentRndClearing",
|
name: "lastPersistentRndClearing",
|
||||||
defaultValue: 0
|
defaultValue: 0
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "sharePersistentRndBetweenDomains",
|
||||||
|
defaultValue: false
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: "askOnlyOnce",
|
name: "askOnlyOnce",
|
||||||
defaultValue: "individual",
|
defaultValue: "individual",
|
||||||
|
@ -254,6 +254,8 @@
|
|||||||
};
|
};
|
||||||
addSection();
|
addSection();
|
||||||
|
|
||||||
|
const beforeChangeEventListeners = {};
|
||||||
|
|
||||||
const {hide: hideContainer, expand: expandContainer} = settings.getContainers();
|
const {hide: hideContainer, expand: expandContainer} = settings.getContainers();
|
||||||
settingsDisplay.forEach(function(display){
|
settingsDisplay.forEach(function(display){
|
||||||
if (typeof display === "string"){
|
if (typeof display === "string"){
|
||||||
@ -291,6 +293,22 @@
|
|||||||
if (setting){
|
if (setting){
|
||||||
setting.display = display;
|
setting.display = display;
|
||||||
|
|
||||||
|
let originalSet = setting.set;
|
||||||
|
if (originalSet){
|
||||||
|
const eventListeners = [];
|
||||||
|
beforeChangeEventListeners[setting.name] = eventListeners;
|
||||||
|
setting.set = function(...args){
|
||||||
|
if (eventListeners.every(function(listener){
|
||||||
|
return listener.call(setting, ...args);
|
||||||
|
})){
|
||||||
|
return originalSet.apply(this, args);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let hideChangeListeners = [];
|
let hideChangeListeners = [];
|
||||||
setting.setHide = function setHide(value){
|
setting.setHide = function setHide(value){
|
||||||
if (hideContainer){
|
if (hideContainer){
|
||||||
@ -416,6 +434,14 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
beforeChangeEventListeners.sharePersistentRndBetweenDomains.push(function(value){
|
||||||
|
if (value){
|
||||||
|
if (!confirm(browser.i18n.getMessage("sharePersistentRndBetweenDomains_confirmMessage"))){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
searchInput.search();
|
searchInput.search();
|
||||||
|
@ -128,9 +128,13 @@
|
|||||||
setting.on(function(){type.updateCallback(input, setting.get(url));}, url);
|
setting.on(function(){type.updateCallback(input, setting.get(url));}, url);
|
||||||
input.addEventListener("change", function(){
|
input.addEventListener("change", function(){
|
||||||
var value = type.getValue(input);
|
var value = type.getValue(input);
|
||||||
setting.set(value, url);
|
if (setting.set(value, url)){
|
||||||
logging.message("changed setting", setting.name, ":", value);
|
logging.message("changed setting", setting.name, ":", value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
type.updateCallback(input, setting.get(url));
|
||||||
|
logging.message("setting", setting.name, "was not changed");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
else if (setting.keys){
|
else if (setting.keys){
|
||||||
@ -189,8 +193,20 @@
|
|||||||
container = setting.defaultValue;
|
container = setting.defaultValue;
|
||||||
}
|
}
|
||||||
container[key] = value;
|
container[key] = value;
|
||||||
setting.set(container, url);
|
if (setting.set(container, url)){
|
||||||
logging.message("changed setting", setting.name, "(", key, "):", value);
|
logging.message("changed setting", setting.name, "(", key, "):", value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
container = setting.get(url);
|
||||||
|
keyType.updateCallback(
|
||||||
|
keyInput,
|
||||||
|
container && container.hasOwnProperty(key)?
|
||||||
|
container[key]:
|
||||||
|
setting.defaultKeyValue,
|
||||||
|
url
|
||||||
|
);
|
||||||
|
logging.message("setting", setting.name, "(", key, ") was not changed");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
input.appendChild(row);
|
input.appendChild(row);
|
||||||
});
|
});
|
||||||
|
@ -279,5 +279,23 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: "privacy",
|
||||||
|
check: function(errorCallback){
|
||||||
|
if (settings.sharePersistentRndBetweenDomains){
|
||||||
|
errorCallback({
|
||||||
|
message: browser.i18n.getMessage("sanitation_error.doNotSharePersistentRndBetweenDomains"),
|
||||||
|
severity: "high",
|
||||||
|
resolutions: [{
|
||||||
|
label: browser.i18n.getMessage("sanitation_resolution.disableFlag")
|
||||||
|
.replace(/{flag}/g, browser.i18n.getMessage("sharePersistentRndBetweenDomains_title")),
|
||||||
|
callback: function(){
|
||||||
|
settings.sharePersistentRndBetweenDomains = false;
|
||||||
|
}
|
||||||
|
}]
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}());
|
}());
|
@ -99,6 +99,22 @@
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "sharePersistentRndBetweenDomains",
|
||||||
|
"displayDependencies": [
|
||||||
|
{
|
||||||
|
"blockMode": ["fake"],
|
||||||
|
"rng": ["persistent"],
|
||||||
|
"displayAdvancedSettings": [true]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"blockMode": ["ask"],
|
||||||
|
"askDenyMode": ["fake"],
|
||||||
|
"rng": ["persistent"],
|
||||||
|
"displayAdvancedSettings": [true]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
"notifications",
|
"notifications",
|
||||||
{
|
{
|
||||||
"name": "showNotifications"
|
"name": "showNotifications"
|
||||||
|
@ -8,6 +8,7 @@ Version 0.5.6:
|
|||||||
- highlight "hide" icon when "tabing" to it
|
- highlight "hide" icon when "tabing" to it
|
||||||
- made url specific values manageable with "tabing"
|
- made url specific values manageable with "tabing"
|
||||||
- added setting "protected canvas part" to decouple block mode from part
|
- added setting "protected canvas part" to decouple block mode from part
|
||||||
|
- added "share persistent randomness between domains"
|
||||||
|
|
||||||
fixes:
|
fixes:
|
||||||
- constant rng did not work properly when protecting input
|
- constant rng did not work properly when protecting input
|
||||||
|
Loading…
x
Reference in New Issue
Block a user