mirror of
https://github.com/kkapsner/CanvasBlocker
synced 2025-01-18 17:38:46 +01:00
Merge branch 'master' into DOMRect
This commit is contained in:
commit
bda97dbc38
@ -507,7 +507,7 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"apiWhiteList_description": {
|
"apiWhiteList_description": {
|
||||||
"message": "Erlaubt ausgewählte Teile der Canvas-API.",
|
"message": "Erlaubt ausgewählte Teile der APIs. Wenn eine Boxen markiert wird, wird dieser Teil der API nicht geschützt.",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -507,7 +507,7 @@
|
|||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
"apiWhiteList_description": {
|
"apiWhiteList_description": {
|
||||||
"message": "Allows certain parts of the canvas API.",
|
"message": "Allows certain parts of the APIs. When ticking a checkbox this feature of the API will not be protected.",
|
||||||
"description": ""
|
"description": ""
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
);
|
);
|
||||||
if (match){
|
if (match){
|
||||||
return {
|
return {
|
||||||
|
url: url,
|
||||||
type: (match[2] === "Everything" || match[2] === "")?
|
type: (match[2] === "Everything" || match[2] === "")?
|
||||||
["context", "readout", "input"]:
|
["context", "readout", "input"]:
|
||||||
[match[2].toLowerCase()],
|
[match[2].toLowerCase()],
|
||||||
@ -33,6 +34,7 @@
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
return {
|
return {
|
||||||
|
url: url,
|
||||||
type: ["context", "readout", "input"],
|
type: ["context", "readout", "input"],
|
||||||
mode: "block"
|
mode: "block"
|
||||||
};
|
};
|
||||||
|
@ -41,7 +41,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
scope.init = function(){
|
scope.init = function(){
|
||||||
function listener(details){console.log("listener");
|
function listener(details){
|
||||||
const headers = details.responseHeaders;
|
const headers = details.responseHeaders;
|
||||||
if (settings.blockDataURLs){
|
if (settings.blockDataURLs){
|
||||||
const cspMatch = (blockBlob? "": "blob: ") + "filesystem: *";
|
const cspMatch = (blockBlob? "": "blob: ") + "filesystem: *";
|
||||||
|
@ -220,7 +220,7 @@
|
|||||||
if (checkStack(error.stack)){
|
if (checkStack(error.stack)){
|
||||||
return {allow: true, original, window};
|
return {allow: true, original, window};
|
||||||
}
|
}
|
||||||
var funcStatus = changedFunction.getStatus(this, siteStatus);
|
var funcStatus = changedFunction.getStatus(this, siteStatus, prefs);
|
||||||
|
|
||||||
function notifyCallback(messageId){
|
function notifyCallback(messageId){
|
||||||
notify({
|
notify({
|
||||||
@ -282,7 +282,7 @@
|
|||||||
if (siteStatus.mode !== "allow"){
|
if (siteStatus.mode !== "allow"){
|
||||||
apiNames.forEach(function(name){
|
apiNames.forEach(function(name){
|
||||||
var changedFunction = changedFunctions[name];
|
var changedFunction = changedFunctions[name];
|
||||||
var functionStatus = changedFunction.getStatus(undefined, siteStatus);
|
var functionStatus = changedFunction.getStatus(undefined, siteStatus, prefs);
|
||||||
logging.verbose("status for", name, ":", functionStatus);
|
logging.verbose("status for", name, ":", functionStatus);
|
||||||
if (functionStatus.active){
|
if (functionStatus.active){
|
||||||
(
|
(
|
||||||
@ -323,7 +323,7 @@
|
|||||||
});
|
});
|
||||||
changedGetters.forEach(function(changedGetter){
|
changedGetters.forEach(function(changedGetter){
|
||||||
const name = changedGetter.name;
|
const name = changedGetter.name;
|
||||||
var functionStatus = changedGetter.getStatus(undefined, siteStatus);
|
var functionStatus = changedGetter.getStatus(undefined, siteStatus, prefs);
|
||||||
logging.verbose("status for", changedGetter, ":", functionStatus);
|
logging.verbose("status for", changedGetter, ":", functionStatus);
|
||||||
if (functionStatus.active){
|
if (functionStatus.active){
|
||||||
changedGetter.objectGetters.forEach(function(objectGetter){
|
changedGetter.objectGetters.forEach(function(objectGetter){
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
})
|
})
|
||||||
.map(function(entry){
|
.map(function(entry){
|
||||||
var regExp;
|
var regExp;
|
||||||
var domain = !!entry.match(/^[\w.]+$/);
|
var domain = !!entry.match(/^[A-Za-z0-9_.-]+$/);
|
||||||
if (domain){
|
if (domain){
|
||||||
regExp = new RegExp("(?:^|\\.)" + entry.replace(/([\\+*?[^\]$(){}=!|.])/g, "\\$1") + "\\.?$", "i");
|
regExp = new RegExp("(?:^|\\.)" + entry.replace(/([\\+*?[^\]$(){}=!|.])/g, "\\$1") + "\\.?$", "i");
|
||||||
}
|
}
|
||||||
|
@ -90,7 +90,7 @@
|
|||||||
const intCache = Object.create(null);
|
const intCache = Object.create(null);
|
||||||
|
|
||||||
function fakeFloat32Array(array, window, prefs){
|
function fakeFloat32Array(array, window, prefs){
|
||||||
if (prefs("protectAudio")){
|
if (prefs("protectAudio", window.location)){
|
||||||
let cached = false;
|
let cached = false;
|
||||||
let hash;
|
let hash;
|
||||||
if (prefs("useAudioCache")){
|
if (prefs("useAudioCache")){
|
||||||
@ -121,7 +121,7 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
function fakeUint8Array(array, window, prefs){
|
function fakeUint8Array(array, window, prefs){
|
||||||
if (prefs("protectAudio")){
|
if (prefs("protectAudio", window.location)){
|
||||||
let cached = false;
|
let cached = false;
|
||||||
let hash;
|
let hash;
|
||||||
if (prefs("useAudioCache")){
|
if (prefs("useAudioCache")){
|
||||||
@ -148,9 +148,9 @@
|
|||||||
randomSupply = supply;
|
randomSupply = supply;
|
||||||
};
|
};
|
||||||
|
|
||||||
function getStatus(obj, status){
|
function getStatus(obj, status, prefs){
|
||||||
status = Object.create(status);
|
status = Object.create(status);
|
||||||
status.active = hasType(status, "readout");
|
status.active = prefs("protectAudio", status.url) && hasType(status, "readout");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,9 +73,9 @@
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
function getStatus(obj, status){
|
function getStatus(obj, status, prefs){
|
||||||
status = Object.create(status);
|
status = Object.create(status);
|
||||||
status.active = hasType(status, "readout");
|
status.active = prefs("protectWindow", status.url) && hasType(status, "readout");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -461,7 +461,7 @@
|
|||||||
urlContainer.on(function({newValue, oldValue}){
|
urlContainer.on(function({newValue, oldValue}){
|
||||||
newValue.forEach(function(urlSetting){
|
newValue.forEach(function(urlSetting){
|
||||||
var regExp;
|
var regExp;
|
||||||
var domain = !!urlSetting.url.match(/^[\w.]+$/);
|
var domain = !!urlSetting.url.match(/^[A-Za-z0-9_.-]+$/);
|
||||||
if (domain){
|
if (domain){
|
||||||
regExp = new RegExp(
|
regExp = new RegExp(
|
||||||
"(?:^|\\.)" + urlSetting.url.replace(/([\\+*?[^\]$(){}=!|.])/g, "\\$1") + "\\.?$",
|
"(?:^|\\.)" + urlSetting.url.replace(/([\\+*?[^\]$(){}=!|.])/g, "\\$1") + "\\.?$",
|
||||||
|
@ -7,7 +7,7 @@ Version 0.5.4:
|
|||||||
- added protection for DOMRect (getClientRects)
|
- added protection for DOMRect (getClientRects)
|
||||||
|
|
||||||
fixes:
|
fixes:
|
||||||
-
|
- window and audio API were always blocked when using any of the "block ..." modes
|
||||||
|
|
||||||
known issues:
|
known issues:
|
||||||
- if a data URL is blocked the page action button does not appear
|
- if a data URL is blocked the page action button does not appear
|
||||||
|
Loading…
x
Reference in New Issue
Block a user