1
0
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:
kkapsner 2018-09-06 17:27:52 +02:00
commit bda97dbc38
10 changed files with 17 additions and 15 deletions

View File

@ -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": ""
}, },

View File

@ -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": ""
}, },

View File

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

View File

@ -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: *";

View File

@ -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){

View File

@ -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");
} }

View File

@ -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;
} }

View File

@ -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;
} }

View File

@ -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") + "\\.?$",

View File

@ -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