summaryrefslogtreecommitdiff
path: root/data/extensions/jsr@javascriptrestrictor/levels.js
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2023-12-24 03:17:17 -0500
committerMark H Weaver <mhw@netris.org>2023-12-24 05:43:25 -0500
commitf889514426e512e5602c71e1b411ae0332a33366 (patch)
tree3b82853563494d606da665ea407b30ef9b60d2b2 /data/extensions/jsr@javascriptrestrictor/levels.js
parent6a76a10682b6e63f562e4b9f26f3ef12f88bd839 (diff)
Update the JShelter extension to 0.17.0.
Diffstat (limited to 'data/extensions/jsr@javascriptrestrictor/levels.js')
-rw-r--r--data/extensions/jsr@javascriptrestrictor/levels.js36
1 files changed, 33 insertions, 3 deletions
diff --git a/data/extensions/jsr@javascriptrestrictor/levels.js b/data/extensions/jsr@javascriptrestrictor/levels.js
index 58e2c1f..1786695 100644
--- a/data/extensions/jsr@javascriptrestrictor/levels.js
+++ b/data/extensions/jsr@javascriptrestrictor/levels.js
@@ -817,7 +817,7 @@ var level_2 = {
"enumerateDevices": 2,
"hardware": 1,
"net": 1,
- "webworker": 2,
+ "webworker": 3,
"geolocation": 3,
"physical_environment": 1,
"useridle": 2,
@@ -911,6 +911,7 @@ init_levels();
let levels_initialised = false; // Initialized in updateLevels()
let fp_levels_initialised = false; // Initialized in fp_levels.js/loadFpdConfig()
let levels_updated_callbacks = [];
+var tweak_domains = tweak_domains || {};
function updateLevels(res) {
init_levels();
custom_levels = res["custom_levels"] || {};
@@ -929,8 +930,13 @@ function updateLevels(res) {
default_level = Object.assign({}, levels[new_default_level]);
}
default_level.is_default = true;
- var new_domains = res["domains"] || {};
- for (let [d, {level_id, tweaks, restore, restore_tweaks}] of Object.entries(new_domains)) {
+ var redefined_domains = res["domains"] || {};
+ for (let [d, settings] of Object.entries(tweak_domains)) {
+ if ((default_level.level_id in settings.level_id) && !(d in redefined_domains)) {
+ redefined_domains[d] = {level_id: default_level.level_id, tweaks: settings.tweaks};
+ }
+ }
+ for (let [d, {level_id, tweaks, restore, restore_tweaks}] of Object.entries(redefined_domains)) {
let level = levels[level_id];
if (level === undefined) {
domains[d] = default_level;
@@ -977,6 +983,9 @@ function saveDomainLevels() {
if (k[k.length - 1] === ".") {
k = k.substring(0, k.length-1);
}
+ // Tweaks not contain the new value defined by the user. However, that might
+ // be the value of the level. Remove such tweaks as they to not change the
+ // level of protection
if (tweaks) {
for (let [group, param] of Object.entries(tweaks)) {
if (param === (levels[level_id][group] || 0)) {
@@ -986,6 +995,27 @@ function saveDomainLevels() {
if (Object.keys(tweaks).length === 0) {
tweaks = undefined;
}
+ // Do not save built-in tweaks as they are automatically added in updateLevels
+ if (k in tweak_domains) {
+ // Skip further check if the user has a different default_level
+ if (default_level.level_id in tweak_domains[k].level_id) {
+ tdb_tweaks = Object.entries(tweak_domains[k].tweaks);
+ current_tweaks = Object.entries(tweaks || {});
+ if (tdb_tweaks.length === current_tweaks.length) {
+ var equal = true;
+ for ([name, val] of tdb_tweaks) {
+ if (tweaks[name] !== val) {
+ equal = false;
+ break;
+ }
+ }
+ if (equal) {
+ // This entry should not be saved
+ continue;
+ }
+ }
+ }
+ }
}
tobesaved[k] = tweaks ? {level_id, tweaks} : {level_id};
if (restore) {