From 33cd409bb3683727d49e862b65437a381da1ea97 Mon Sep 17 00:00:00 2001 From: matogolf Date: Feb 28 2019 10:22:06 +0000 Subject: Delete a bunch of files delete mode 100644 background.js delete mode 100644 document_start.js delete mode 100644 manifest.json delete mode 100644 options.js --- diff --git a/background.js b/background.js deleted file mode 100644 index c39c4a7..0000000 --- a/background.js +++ /dev/null @@ -1,110 +0,0 @@ -// open options -function handleClick() { - browser.runtime.openOptionsPage(); -} -browser.browserAction.onClicked.addListener(handleClick); - -// set badge color -browser.browserAction.setBadgeBackgroundColor({color: "#4a4a4a"}); - -var urlcko; // domain ako "fit.vutbr.com" -var rootDomain; // domain ako "vutbr.com" - -// on tab reload or tab change, update badge -browser.tabs.onUpdated.addListener(tabEvent); // reload tab -browser.tabs.onActivated.addListener(tabEvent); // change tab - -// get active tab and pass it -function tabEvent(tabinfo) { - var querying = browser.tabs.query({active: true}); - querying.then(getTab, onError); -} - -// get url of active tab -function getTab(tabs) { - for (let tab of tabs) { - urlcko = tab.url; - } - updateBadge(); -} - -// change url text to url object -var getLocation = function(href) { - var l = document.createElement("a"); - l.href = href; - return l; -}; - -// update badge text -function updateBadge() { - - urlcko = getLocation(urlcko); - urlcko.hostname = urlcko.hostname.replace(/^www\./,''); - rootDomain = extractRootDomain(urlcko.hostname); - var myAddon = new URL(browser.extension.getURL ('./')); - - // get storage data - var data = browser.storage.sync.get(); - data.then((res) => { - if (isJavaScriptObjectEmpty(res)) { - return Promise.reject(); - } - - // find level for this site to use - var activeLevel; - for (var domain in res) { - if (res.hasOwnProperty(domain)) { - if (domain == "__default__") { - activeLevel = res[domain]; - } - if (domain != "extension_settings_data" && domain == urlcko.hostname) { - activeLevel = res[domain]; - break; - } - if (domain != "extension_settings_data" && domain == rootDomain) { - activeLevel = res[domain]; - } - } - } - // set badge text or blank - if (activeLevel == "4" && urlcko.hostname != "") { - browser.browserAction.setBadgeText({text: "C"}); - } else if (urlcko.hostname != "" && urlcko.hostname != myAddon.hostname) { - browser.browserAction.setBadgeText({text: "" + activeLevel}); - } else { - browser.browserAction.setBadgeText({text: ""}); - } - }); -} - -// err -function onError(timoerr) { - console.log(timoerr); -} - -// check if object empty -function isJavaScriptObjectEmpty(object) { - for(var property in object) { - if(object.hasOwnProperty(property)) - return false; - } - return true; -} - -function extractRootDomain(thisDomain) { - // var thisDomain = extractHostname(thisUrl); - var splitArr = thisDomain.split('.'); - var arrLen = splitArr.length; - - //extracting the root domain here - //if there is a subdomain - if (arrLen > 2) { - thisDomain = splitArr[arrLen - 2] + '.' + splitArr[arrLen - 1]; - //check to see if it's using a Country Code Top Level Domain (ccTLD) (i.e. ".me.uk") - if (splitArr[arrLen - 2].length == 2 && splitArr[arrLen - 1].length == 2) { - //this is using a ccTLD - thisDomain = splitArr[arrLen - 3] + '.' + thisDomain; - } - } - return thisDomain; -} diff --git a/document_start.js b/document_start.js deleted file mode 100644 index 4e713b8..0000000 --- a/document_start.js +++ /dev/null @@ -1,521 +0,0 @@ - -// var extension_settings_data = browser.storage.sync.get('extension_settings_data'); - - -// get storage data -var data = browser.storage.sync.get(); -data.then((res) => { - if (isJavaScriptObjectEmpty(res)) { - return Promise.reject(); - } - // console.log(res.extension_settings_data); - // console.log(res); - - - // find url / domain of current site - var url = new URL(window.location.href); - var rootDomain = extractRootDomain(url.hostname); // domain ako "example.com" - url.hostname = url.hostname.replace(/^www\./,''); - // console.log("root - "+rootDomain); - // console.log("host - "+url.hostname); - - // find level for this site to use - var activeLevel; - for (var domain in res) { - if (res.hasOwnProperty(domain)) { - if (domain == "__default__") { - activeLevel = res[domain]; - } - if (domain != "extension_settings_data" && domain == url.hostname) { - activeLevel = res[domain]; - break; - } - if (domain != "extension_settings_data" && domain == rootDomain) { - activeLevel = res[domain]; - } - } - } - console.log("level " + activeLevel); - console.log(window.Date); - - // what settings are going to be used - var currentLevel; - if (activeLevel == 0) - currentLevel = level_0; - if (activeLevel == 1) - currentLevel = level_1; - if (activeLevel == 2) - currentLevel = level_2; - if (activeLevel == 3) - currentLevel = level_3; - if (activeLevel == 4) - currentLevel = res.extension_settings_data; - console.log(currentLevel); - - // do magic - - // window.Date - if (currentLevel.window_date.main_checkbox) { - var digitPlacesToRoundCount = currentLevel.window_date.time_round_precision; - // povodna implementacia - var scriptTag = document.createElement('script'); - scriptTag.type = 'text/javascript'; - scriptTag.text = createDateWrappingFunctionString(digitPlacesToRoundCount); - document.getElementsByTagName('html')[0].appendChild(scriptTag); - // povodna implementacia - - // var scriptTag2 = document.createElement('script'); - // scriptTag2.type = 'text/javascript'; - // scriptTag2.text = createDateNowWrappingFunctionString(digitPlacesToRoundCount); - // document.getElementsByTagName('html')[0].appendChild(scriptTag2); - } - - // window.performance - if (currentLevel.window_performance_now.main_checkbox) { - var digitPlacesToRoundCount = currentLevel.window_performance_now.value_round_precision; - var scriptTag = document.createElement('script'); - scriptTag.type = 'text/javascript'; - scriptTag.text = createPerformanceNowWrappingFunctionString(digitPlacesToRoundCount); - document.getElementsByTagName('html')[0].appendChild(scriptTag); - } - - // window.HTMLCanvasElement - if (currentLevel.window_html_canvas_element.main_checkbox) { - var selectOption = currentLevel.window_html_canvas_element.type_of_restriction; - var scriptTag = document.createElement('script'); - scriptTag.type = 'text/javascript'; - scriptTag.text = createHTMLCanvasElementPrototypeWrappingFunctionString(selectOption); - document.getElementsByTagName('html')[0].appendChild(scriptTag); - } - - // navigator.geolocation - if (currentLevel.navigator_geolocation.main_checkbox) { - var isDateAlteringEnabled = currentLevel.window_date.main_checkbox; - var timestampPrecision = 0; - if (isDateAlteringEnabled) { - timestampPrecision = currentLevel.window_date.time_round_precision; - } - - var scriptTag = document.createElement('script'); - scriptTag.type = 'text/javascript'; - scriptTag.text = createGeolocationGetCurrentPositionWrappingFunctionString( - currentLevel.navigator_geolocation.type_of_restriction, - currentLevel.navigator_geolocation.gps_a, - currentLevel.navigator_geolocation.gps_b, - currentLevel.navigator_geolocation.gps_c, - currentLevel.navigator_geolocation.gps_d, - currentLevel.navigator_geolocation.gps_e, - currentLevel.navigator_geolocation.gps_f, - currentLevel.navigator_geolocation.gps_g, - timestampPrecision - ); - document.getElementsByTagName('html')[0].appendChild(scriptTag); - } - - // window.XMLHttpRequest - if (currentLevel.window_xmlhttprequest.main_checkbox) { - var selectOption = currentLevel.window_xmlhttprequest.type_of_restriction; - var scriptTag = document.createElement('script'); - scriptTag.type = 'text/javascript'; - scriptTag.text = createXMLHttpRequestWrappingFunctionString(selectOption); - document.getElementsByTagName('html')[0].appendChild(scriptTag); - } -}); - -// functions for generating wrapping JavaScript code -- NOT USED -function createDateWrappingFunctionString(timePrecisionIndecimalPlaces) { - var javaScriptCodeString = "\ - (function() {\ - var timeInMillisecondsPrecisionInDecimalPlaces = " + timePrecisionIndecimalPlaces + ";\ - var originalNow = window.Date.now;\ - var originalDateObject = window.Date;\ - originalDateObject.prototype = Date.prototype;\ - console.log(\"-DATE-\");\ - var originalParse = window.Date.parse;\ - var originalUTC = window.Date.UTC;\ - var originalLength = window.Date.length;\ - window.Date = function() {\ - var currentDateObject = new originalDateObject(...arguments);\ - var roundedValue = roundToPrecision(currentDateObject.getMilliseconds(), timeInMillisecondsPrecisionInDecimalPlaces);\ - currentDateObject.setMilliseconds(roundedValue);\ - return currentDateObject;\ - };\ - window.Date.now = function() {\ - return roundToPrecision(originalNow.call(Date), timeInMillisecondsPrecisionInDecimalPlaces);\ - };\ - window.Date.parse = originalParse;\ - window.Date.UTC = originalUTC;\ - window.Date.length = originalLength;\ - \ - function roundToPrecision(numberToRound, precision) {\ - var moveDecimalDot = Math.pow(10, precision);\ - return Math.round(numberToRound * moveDecimalDot) / moveDecimalDot;\ - }\ - }) ();\ - "; - return javaScriptCodeString; -} - - // window.Date.now = function() {\ - // new Date().getTime();\ - // };\ - - -// function createDateNowWrappingFunctionString(timePrecisionIndecimalPlaces) { -// var javaScriptCodeString = "\ -// (\ -// function() {\ -// var timeInMillisecondsPrecisionInDecimalPlaces = " + timePrecisionIndecimalPlaces + ";\ -// console.log(\"-DATE NOW-\");\ -// var original = window.Date.now;\ -// window.Date.now = function() {\ -// return roundToPrecision(original.call(Date), timeInMillisecondsPrecisionInDecimalPlaces);\ -// };\ -// function roundToPrecision(numberToRound, precision) {\ -// var moveDecimalDot = Math.pow(10, precision);\ -// return Math.round(numberToRound * moveDecimalDot) / moveDecimalDot;\ -// }\ -// }\ -// ) ();\ -// "; -// return javaScriptCodeString; -// } - - -function createPerformanceNowWrappingFunctionString(performanceNowPrecisionIndecimalPlaces) { - var javaScriptCodeString = "\ - (function() {\ - var performanceNowPrecisionIndecimalPlaces = " + performanceNowPrecisionIndecimalPlaces + ";\ - var originalPerformanceNowFunction = window.performance.now;\ - console.log(\"-PERFORMANCE-\");\ - window.performance.now = function() {\ - var originalPerformanceValue = originalPerformanceNowFunction.call(window.performance);\ - var roundedValue = roundToPrecision(originalPerformanceValue, performanceNowPrecisionIndecimalPlaces);\ - return roundedValue;\ - };\ - \ - function roundToPrecision(numberToRound, precision) {\ - var moveDecimalDot = Math.pow(10, precision);\ - return Math.round(numberToRound * moveDecimalDot) / moveDecimalDot;\ - }\ - }) ();\ - "; - - return javaScriptCodeString; -} - -function createHTMLCanvasElementPrototypeWrappingFunctionString(selectOption) { - var blockWritingToCanvasesEntirely = false; - if (selectOption == "b") { - blockWritingToCanvasesEntirely = true; - } - - var javaScriptCodeString = "\ - (function() {\ - console.log(\"-CANVAS-\");\ - var blockWritingToCanvasesEntirely = " + blockWritingToCanvasesEntirely + ";\ - var originalHTMLCanvasElementPrototype = window.HTMLCanvasElement.prototype.getContext;\ - window.HTMLCanvasElement.prototype.getContext = function(contextType, contextAttributes) {\ - if (!blockWritingToCanvasesEntirely && confirm('Enable drawing to canvas?')) {\ - return originalHTMLCanvasElementPrototype.call(this, contextType, contextAttributes);\ - }\ - else {\ - return null;\ - }\ - };\ - }) ();\ - "; - - return javaScriptCodeString; -} - -function createGeolocationGetCurrentPositionWrappingFunctionString(selectOption, latitudePrecision, longitudePrecision, altitudePrecision, accuracyPrecision, altitudePrecision, headingPrecision, speedPrecision, timestampPrecision) { - var setAllGPSDataToZero = false; - if (selectOption == "b") { - setAllGPSDataToZero = true; - } - var latitudePrecisionInDecimalPlaces = latitudePrecision; - var longitudePrecisionInDecimalPlaces = longitudePrecision; - var altitudePrecisionInDecimalPlaces = altitudePrecision; - var accuracyPrecisionInDecimalPlaces = accuracyPrecision; - var altitudeAccuracyPrecisionInDecimalPlaces = altitudePrecision; - var headingPrecisionInDecimalPlaces = headingPrecision; - var speedPrecisionInDecimalPlaces = speedPrecision; - var timestampPrecisionInDecimalPlaces = timestampPrecision; - - var javaScriptCodeString = "\ - (function() {\ - var setAllGPSDataToZero = " + setAllGPSDataToZero + ";\ - \ - var latitudePrecisionInDecimalPlaces = " + latitudePrecisionInDecimalPlaces + ";\ - var longitudePrecisionInDecimalPlaces = " + longitudePrecisionInDecimalPlaces + ";\ - var altitudePrecisionInDecimalPlaces = " + altitudePrecisionInDecimalPlaces + ";\ - var accuracyPrecisionInDecimalPlaces = " + accuracyPrecisionInDecimalPlaces + ";\ - var altitudeAccuracyPrecisionInDecimalPlaces = " + altitudeAccuracyPrecisionInDecimalPlaces + ";\ - var headingPrecisionInDecimalPlaces = " + headingPrecisionInDecimalPlaces + ";\ - var speedPrecisionInDecimalPlaces = " + speedPrecisionInDecimalPlaces + ";\ - var timestampPrecisionInDecimalPlaces = " + timestampPrecisionInDecimalPlaces + ";\ - \ - var originalGetCurrentPositionFunction = navigator.geolocation.getCurrentPosition;\ - console.log(\"-GSP-\");\ - navigator.geolocation.getCurrentPosition = function(functionName) {\ - \ - originalGetCurrentPositionFunction.call(navigator.geolocation, processOriginalGPSDataObject);\ - \ - function processOriginalGPSDataObject(originalPositionObject) {\ - var newLatitude = 0;\ - var newLongitude = 0;\ - var newAltitude = 0;\ - var newAccuracy = 0;\ - var newAltitudeAccuracy = 0;\ - var newHeading = 0;\ - var newSpeed = 0;\ - var newTimestamp = 0;\ - \ - if (!setAllGPSDataToZero) {\ - if (originalPositionObject.coords.latitude != null && originalPositionObject.coords.latitude != Infinity && originalPositionObject.coords.latitude >= 0) {\ - newLatitude = roundToPrecision(originalPositionObject.coords.latitude, latitudePrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.coords.longitude != null && originalPositionObject.coords.longitude != Infinity && originalPositionObject.coords.longitude >= 0) {\ - newLongitude = roundToPrecision(originalPositionObject.coords.longitude, longitudePrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.coords.altitude != null && originalPositionObject.coords.altitude != Infinity && originalPositionObject.coords.altitude >= 0) {\ - newAltitude = roundToPrecision(originalPositionObject.coords.altitude, altitudePrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.coords.accuracy != null && originalPositionObject.coords.accuracy != Infinity && originalPositionObject.coords.accuracy >= 0) {\ - newAccuracy = roundToPrecision(originalPositionObject.coords.accuracy, accuracyPrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.coords.altitudeAccuracy != null && originalPositionObject.coords.altitudeAccuracy != Infinity && originalPositionObject.coords.altitudeAccuracy >= 0) {\ - newAltitudeAccuracy = roundToPrecision(originalPositionObject.coords.altitudeAccuracy, altitudeAccuracyPrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.coords.heading != null && originalPositionObject.coords.heading != Infinity && originalPositionObject.coords.heading >= 0) {\ - newHeading = roundToPrecision(originalPositionObject.coords.heading, headingPrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.coords.speed != null && originalPositionObject.coords.speed != Infinity && originalPositionObject.coords.speed >= 0) {\ - newSpeed = roundToPrecision(originalPositionObject.coords.speed, speedPrecisionInDecimalPlaces);\ - }\ - if (originalPositionObject.timestamp != null && originalPositionObject.timestamp != Infinity && originalPositionObject.timestamp >= 0) {\ - newTimestamp = roundToPrecision(originalPositionObject.timestamp, timestampPrecisionInDecimalPlaces);\ - }\ - }\ - \ - const editedPositionObject = {\ - coords: {\ - latitude: newLatitude,\ - longitude: newLongitude,\ - altitude: newAltitude,\ - accuracy: newAccuracy,\ - altitudeAccuracy: newAltitudeAccuracy,\ - heading: newHeading,\ - speed: newSpeed,\ - __proto__: originalPositionObject.coords.__proto__\ - },\ - timestamp: newTimestamp,\ - __proto__: originalPositionObject.__proto__\ - };\ - \ - functionName.call(this, editedPositionObject);\ - return true;\ - }\ - return undefined;\ - };\ - \ - function roundToPrecision(numberToRound, precision) {\ - var moveDecimalDot = Math.pow(10, precision);\ - return Math.round(numberToRound * moveDecimalDot) / moveDecimalDot;\ - }\ - }) ();\ - "; - - return javaScriptCodeString; -} - -function createXMLHttpRequestWrappingFunctionString(selectOption) { - var blockEveryXMLHttpRequest = false; - if (selectOption == "b") { - blockEveryXMLHttpRequest = true; - } - - var javaScriptCodeString = "\ - (function() {\ - var blockEveryXMLHttpRequest = " + blockEveryXMLHttpRequest + ";\ - var originalXMLHttpRequest = window.XMLHttpRequest;\ - console.log(\"-REQUEST-\");\ - window.XMLHttpRequest = function() {\ - var currentXMLHttpRequestObject = new originalXMLHttpRequest();\ - var originalXMLHttpRequestOpenFunction = currentXMLHttpRequestObject.open;\ - currentXMLHttpRequestObject.open = function(requestMethod, requestURL, requestParameterAsync, requestUsername, requestPassword) {\ - if (blockEveryXMLHttpRequest || !confirm('There is a XMLHttpRequest on URL \"' + requestURL + '\". Do you want to continue?')) {\ - return undefined;\ - }\ - if (requestParameterAsync == undefined) {\ - return originalXMLHttpRequestOpenFunction.call(currentXMLHttpRequestObject, requestMethod, requestURL);\ - }\ - else if (requestUsername == undefined) {\ - return originalXMLHttpRequestOpenFunction.call(currentXMLHttpRequestObject, requestMethod, requestURL, requestParameterAsync);\ - }\ - else if (requestPassword == undefined) {\ - return originalXMLHttpRequestOpenFunction.call(currentXMLHttpRequestObject, requestMethod, requestURL, requestParameterAsync, requestUsername);\ - }\ - else {\ - return originalXMLHttpRequestOpenFunction.call(currentXMLHttpRequestObject, requestMethod, requestURL, requestParameterAsync, requestUsername, requestPassword);\ - }\ - };\ - return currentXMLHttpRequestObject;\ - };\ - }) ();\ - "; - - return javaScriptCodeString; -} - -// other functions -function isJavaScriptObjectEmpty(object) { - for(var property in object) { - if(object.hasOwnProperty(property)) - return false; - } - return true; -} - -// err -function onError(timoerr){ - console.error(timoerr); -} - -function extractRootDomain(thisDomain) { - // var thisDomain = extractHostname(thisUrl); - var splitArr = thisDomain.split('.'); - var arrLen = splitArr.length; - //extracting the root domain here - //if there is a subdomain - if (arrLen > 2) { - thisDomain = splitArr[arrLen - 2] + '.' + splitArr[arrLen - 1]; - //check to see if it's using a Country Code Top Level Domain (ccTLD) (i.e. ".me.uk") - if (splitArr[arrLen - 2].length == 2 && splitArr[arrLen - 1].length == 2) { - //this is using a ccTLD - thisDomain = splitArr[arrLen - 3] + '.' + thisDomain; - } - } - return thisDomain; -} - - -// levels of protection - -var level_0 = { - "window_date": { - "main_checkbox": false, - "time_round_precision": "-1" - }, - "window_performance_now": { - "main_checkbox": false, - "value_round_precision": "-1" - }, - "window_html_canvas_element": { - "main_checkbox": false, - "type_of_restriction": "a" - }, - "navigator_geolocation": { - "main_checkbox": false, - "type_of_restriction": "a", - "gps_a": "4", - "gps_b": "4", - "gps_c": "-1", - "gps_d": "-1", - "gps_e": "-1", - "gps_f": "-1", - "gps_g": "-1" - }, - "window_xmlhttprequest": { - "main_checkbox": false, - "type_of_restriction": "a" - } -} -var level_1 = { - "window_date": { - "main_checkbox": true, - "time_round_precision": "-1" - }, - "window_performance_now": { - "main_checkbox": true, - "value_round_precision": "-1" - }, - "window_html_canvas_element": { - "main_checkbox": false, - "type_of_restriction": "a" - }, - "navigator_geolocation": { - "main_checkbox": true, - "type_of_restriction": "a", - "gps_a": "2", - "gps_b": "2", - "gps_c": "-1", - "gps_d": "-1", - "gps_e": "-1", - "gps_f": "-1", - "gps_g": "-1" - }, - "window_xmlhttprequest": { - "main_checkbox": false, - "type_of_restriction": "a" - } -} -var level_2 = { - "window_date": { - "main_checkbox": true, - "time_round_precision": "-2" - }, - "window_performance_now": { - "main_checkbox": true, - "value_round_precision": "-2" - }, - "window_html_canvas_element": { - "main_checkbox": false, - "type_of_restriction": "a" - }, - "navigator_geolocation": { - "main_checkbox": true, - "type_of_restriction": "a", - "gps_a": "1", - "gps_b": "1", - "gps_c": "-1", - "gps_d": "-1", - "gps_e": "-1", - "gps_f": "-1", - "gps_g": "-1" - }, - "window_xmlhttprequest": { - "main_checkbox": false, - "type_of_restriction": "a" - } -} -var level_3 = { - "window_date": { - "main_checkbox": true, - "time_round_precision": "-3" - }, - "window_performance_now": { - "main_checkbox": true, - "value_round_precision": "-3" - }, - "window_html_canvas_element": { - "main_checkbox": true, - "type_of_restriction": "b" - }, - "navigator_geolocation": { - "main_checkbox": true, - "type_of_restriction": "b", - "gps_a": "0", - "gps_b": "0", - "gps_c": "0", - "gps_d": "-1", - "gps_e": "-1", - "gps_f": "-1", - "gps_g": "-1" - }, - "window_xmlhttprequest": { - "main_checkbox": false, - "type_of_restriction": "b" - } -} diff --git a/manifest.json b/manifest.json deleted file mode 100644 index e3ff67e..0000000 --- a/manifest.json +++ /dev/null @@ -1,70 +0,0 @@ -{ - "author": "Martin Timko", - "background": { - "scripts": ["background.js"] - }, - "browser_action": { - "browser_style": true, - "default_icon": { - "16": "img/icon-16.png", - "32": "img/icon-32.png", - "48": "img/icon-48.png", - "64": "img/icon-64.png", - "96": "img/icon-96.png", - "128": "img/icon-128.png", - "256": "img/icon-256.png", - "512": "img/icon-512.png" - }, - "default_title": "JavaScript Restrictor", - "default_popup": "popup.html" - }, - "content_scripts": [ - { - "matches": [""], - "js": ["document_start.js"], - "run_at": "document_start" - } - ], - "description": "Extension for increasing security and privacy level of the user.", - "homepage_url": "https://www.fit.vutbr.cz", - "icons": { - "16": "img/icon-16.png", - "32": "img/icon-32.png", - "48": "img/icon-48.png", - "64": "img/icon-64.png", - "96": "img/icon-96.png", - "128": "img/icon-128.png", - "256": "img/icon-256.png", - "512": "img/icon-512.png" - }, - "manifest_version": 2, - "name": "JavaScript Restrictor", - "options_ui": { - "page": "options.html", - "browser_style": true - }, - "page_action": { - "browser_style": true, - "default_icon": { - "19": "img/icon-19.png", - "38": "img/icon-38.png" - }, - "default_popup": "popup.html", - "default_title": "JavaScript Restrictor" - }, - "permissions": ["storage", "tabs", "activeTab"], - "short_name": "JSR", - "version": "1.0", - "applications": { - "gecko": { - "id": "xxx@xxx", - "strict_min_version": "57.0a1" - } - }, - "web_accessible_resources": [ - "levels/level_0.json", - "levels/level_1.json", - "levels/level_2.json", - "levels/level_3.json" - ] -} diff --git a/options.js b/options.js deleted file mode 100644 index 1c50774..0000000 --- a/options.js +++ /dev/null @@ -1,307 +0,0 @@ -// JSR Custom settings JSR // - -function saveOptions(e) { - var sent = browser.storage.sync.set({ - extension_settings_data: { - window_date: { - main_checkbox: document.querySelector("#window_date_main_checkbox").checked, - time_round_precision: document.querySelector("#window_date_time_round_precision").value - }, - window_performance_now: { - main_checkbox: document.querySelector("#performance_now_main_checkbox").checked, - value_round_precision: document.querySelector("#performance_now_value_round_precision").value - }, - window_html_canvas_element: { - main_checkbox: document.querySelector("#htmlcanvaselement_main_checkbox").checked, - type_of_restriction: document.querySelector("#htmlcanvaselement_type_of_restriction").value - }, - navigator_geolocation: { - main_checkbox: document.querySelector("#navigator_geolocation_main_checkbox").checked, - type_of_restriction: document.querySelector("#navigator_geolocation_type_of_restriction").value, - gps_a: document.querySelector("#navigator_geolocation_rounding_precision_of_item_a").value, - gps_b: document.querySelector("#navigator_geolocation_rounding_precision_of_item_b").value, - gps_c: document.querySelector("#navigator_geolocation_rounding_precision_of_item_c").value, - gps_d: document.querySelector("#navigator_geolocation_rounding_precision_of_item_d").value, - gps_e: document.querySelector("#navigator_geolocation_rounding_precision_of_item_e").value, - gps_f: document.querySelector("#navigator_geolocation_rounding_precision_of_item_f").value, - gps_g: document.querySelector("#navigator_geolocation_rounding_precision_of_item_g").value - }, - window_xmlhttprequest: { - main_checkbox: document.querySelector("#xmlhttprequest_main_checkbox").checked, - type_of_restriction: document.querySelector("#xmlhttprequest_type_of_restriction").value - } - } - }); - - // saved. change Save button text - if (sent) { - savedText(); - } - - e.preventDefault(); -} - -function restoreOptions() { - - var allExtensionsData = browser.storage.sync.get('extension_settings_data'); - allExtensionsData.then((res) => { - document.querySelector("#window_date_main_checkbox").checked = res.extension_settings_data.window_date.main_checkbox; - document.querySelector("#window_date_time_round_precision").value = res.extension_settings_data.window_date.time_round_precision; - document.querySelector("#performance_now_main_checkbox").checked = res.extension_settings_data.window_performance_now.main_checkbox; - document.querySelector("#performance_now_value_round_precision").value = res.extension_settings_data.window_performance_now.value_round_precision; - document.querySelector("#htmlcanvaselement_main_checkbox").checked = res.extension_settings_data.window_html_canvas_element.main_checkbox; - document.querySelector("#htmlcanvaselement_type_of_restriction").value = res.extension_settings_data.window_html_canvas_element.type_of_restriction; - document.querySelector("#navigator_geolocation_main_checkbox").checked = res.extension_settings_data.navigator_geolocation.main_checkbox; - document.querySelector("#navigator_geolocation_type_of_restriction").value = res.extension_settings_data.navigator_geolocation.type_of_restriction; - if (document.querySelector("#navigator_geolocation_type_of_restriction").value == "b") { // if GSP is to null everything -> change options opacity - gpsOpacity(); - } - document.querySelector("#navigator_geolocation_rounding_precision_of_item_a").value = res.extension_settings_data.navigator_geolocation.gps_a; - document.querySelector("#navigator_geolocation_rounding_precision_of_item_b").value = res.extension_settings_data.navigator_geolocation.gps_b; - document.querySelector("#navigator_geolocation_rounding_precision_of_item_c").value = res.extension_settings_data.navigator_geolocation.gps_c; - document.querySelector("#navigator_geolocation_rounding_precision_of_item_d").value = res.extension_settings_data.navigator_geolocation.gps_d; - document.querySelector("#navigator_geolocation_rounding_precision_of_item_e").value = res.extension_settings_data.navigator_geolocation.gps_e; - document.querySelector("#navigator_geolocation_rounding_precision_of_item_f").value = res.extension_settings_data.navigator_geolocation.gps_f; - document.querySelector("#navigator_geolocation_rounding_precision_of_item_g").value = res.extension_settings_data.navigator_geolocation.gps_g; - document.querySelector("#xmlhttprequest_main_checkbox").checked = res.extension_settings_data.window_xmlhttprequest.main_checkbox; - document.querySelector("#xmlhttprequest_type_of_restriction").value = res.extension_settings_data.window_xmlhttprequest.type_of_restriction; - }); -} - - -document.addEventListener('DOMContentLoaded', restoreOptions); -document.querySelector("#custom-form").addEventListener("submit", saveOptions); - -// show / hide custom level settings -// document.getElementById('custom-form').style.display = "none"; ////////////////////////// NA KONCI ODKOMENTUJ nech je defaultne skryte -document.getElementById('custom-show-hide').addEventListener('click', function (e) { - var x = document.getElementById("custom-form"); - if (x.style.display === "none") { - x.style.display = "block"; - } else { - x.style.display = "none"; - } -}); - -// change save settings button text to "Saved" -// browser.storage.onChanged.addListener(savedText); -function savedText(){ - document.getElementById("save").innerHTML="Saved"; - document.getElementById("save").style.paddingLeft = "43px"; - document.getElementById("save").style.paddingRight = "42px"; -} - -// change seve settings button text to "Save settings" -document.getElementById("window_date_main_checkbox").addEventListener("change", savedTextBack); -document.getElementById("window_date_time_round_precision").addEventListener("change", savedTextBack); -document.getElementById("performance_now_main_checkbox").addEventListener("change", savedTextBack); -document.getElementById("performance_now_value_round_precision").addEventListener("change", savedTextBack); -document.getElementById("htmlcanvaselement_main_checkbox").addEventListener("change", savedTextBack); -document.getElementById("htmlcanvaselement_type_of_restriction").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_main_checkbox").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_type_of_restriction").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_a").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_b").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_c").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_d").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_e").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_f").addEventListener("change", savedTextBack); -document.getElementById("navigator_geolocation_rounding_precision_of_item_g").addEventListener("change", savedTextBack); -document.getElementById("xmlhttprequest_main_checkbox").addEventListener("change", savedTextBack); -document.getElementById("xmlhttprequest_type_of_restriction").addEventListener("change", savedTextBack); - -function savedTextBack () { - document.getElementById("save").innerHTML="Save settings"; - document.getElementById("save").style.paddingLeft = ""; - document.getElementById("save").style.paddingRight = ""; -} - -///////////////////////// -// JSR Domain List JSR // - -document.querySelector("#domain-form").addEventListener("submit", addDomain); -document.addEventListener('DOMContentLoaded', loadSettings); -browser.storage.onChanged.addListener(loadSettings); - - - -function addDomain (e) { - var removeWWW = document.querySelector("#domain-text").value; - removeWWW = removeWWW.replace(/^www\./,''); - var sent = browser.storage.sync.set({ - [removeWWW]: document.querySelector("#domain-level").value - }); - - if (sent) { - document.querySelector("#domain-form").reset(); - } - e.preventDefault(); -} - -function loadSettings() { - var allDomains = browser.storage.sync.get(); - allDomains.then(printSettings, onError); - printStorageConsole(); -} -// go through storage JSON and generate table - list of domains -function printSettings (item) { //item[domain] == level - var fullTable = "DomainLevel"; - for (var domain in item) { - if (item.hasOwnProperty(domain)) { - if ((domain != "extension_settings_data") && (domain != "__default__")) { - var lvl; - if (item[domain] == 4) { - lvl = "Custom"; - } else { - lvl = item[domain]; - } - var row = ""+ domain +""+ lvl +""; - fullTable += row; - } - if (domain == "__default__") { - document.querySelector("#levels-default #level-"+ item[domain]).classList.add("active"); - } - } - } - document.getElementById("domain-list-table").innerHTML = fullTable; - setEventOnClick(); -} - -function setEventOnClick() { - document.querySelectorAll('td').forEach(e => e.addEventListener("click", function() { - removeDomain(e.id); - })); -} - -document.getElementById('navigator_geolocation_type_of_restriction').addEventListener('click', gpsOpacity); -function gpsOpacity () { - var x = document.getElementsByClassName("gps"); - if(document.getElementById('navigator_geolocation_type_of_restriction').selectedIndex == 1){ - for (var i = 0; i < x.length; i++) { - x[i].style.opacity = "0.3"; - } - } else { - for (var i = 0; i < x.length; i++) { - x[i].style.opacity = "1.0"; - } - } -} - - - - -// show hide domain list -document.getElementById('domain-show-hide').addEventListener('click', function (e) { - var x = document.getElementById("domain-list-table"); - var y = document.getElementById("delete-list"); - if (x.style.display === "none") { - x.style.display = "block"; - y.style.display = "table"; - } else { - x.style.display = "none"; - y.style.display = "none"; - } -}); - - // X - // - // www.keke.sk - // 2 - // X - // - -document.querySelector("#delete-list").addEventListener('click', function (e) { - document.getElementById('domain-show-hide').click(); - removeList(); - // clearStorage(); -}); -// remove domain from list -function onRemoved() { - console.log("Removed"); -} -function removeDomain(domain) { - let removeIt = browser.storage.sync.remove(domain); - removeIt.then(onRemoved, onError); -} - -function removeList() { - var allDomains = browser.storage.sync.get(); - allDomains.then(removeDomains, onError); -} -// go through storage JSON and remove list of domains -function removeDomains (item) { //item[domain] == level - for (var domain in item) { - if (item.hasOwnProperty(domain)) { - if ((domain != "extension_settings_data") && (domain != "__default__")) { - var removeIt = browser.storage.sync.remove(domain); - removeIt.then(onRemoved, onError); - } - } - } -} - - - -// clear all domains -function onCleared() { - console.log("DeletedAll"); -} -function clearStorage() { - var clrStorage = browser.storage.sync.clear(); - clrStorage.then(onCleared, onError); -} - -// error log -function onError(timoerr) { - console.log(timoerr); -} - -// print storage -function printStorageConsole() { - let gettingItem = browser.storage.sync.get(); - gettingItem.then(onGot, onError); -} -function onGot(item) { - console.log(item); - -} - -///////////////////////// -// JSR Default level JSR // - -const L0 = 0; -const L1 = 1; -const L2 = 2; -const L3 = 3; -const LC = 4; // custom -const LD = 5; // default - -document.querySelector("#levels-default #level-0").addEventListener("click", function() {setDefaultLevelTo(L0);}); -document.querySelector("#levels-default #level-1").addEventListener("click", function() {setDefaultLevelTo(L1);}); -document.querySelector("#levels-default #level-2").addEventListener("click", function() {setDefaultLevelTo(L2);}); -document.querySelector("#levels-default #level-3").addEventListener("click", function() {setDefaultLevelTo(L3);}); -document.querySelector("#levels-default #level-4").addEventListener("click", function() {setDefaultLevelTo(LC);}); - -function setDefaultLevelTo(level) { - var sent = browser.storage.sync.set({ - __default__: level - }); - - if (sent) { - clearAllLevels(); - document.querySelector("#levels-default #level-"+ level).classList.add("active"); - } -} - -function clearAllLevels() { - for (var i = 0; i <= 4; i++) { - var elm = document.querySelector("#levels-default #level-"+ i); - elm.classList.remove("active"); - } -} - - -///////////////////////// -// JSR Common functs JSR // - -