From d3caa41eadee0aeff741e972e9cabf9b7adf98b4 Mon Sep 17 00:00:00 2001 From: idk Date: Thu, 2 May 2019 17:31:11 -0400 Subject: [PATCH] major update --- privacy.js | 214 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 214 insertions(+) create mode 100644 privacy.js diff --git a/privacy.js b/privacy.js new file mode 100644 index 0000000..8fec7aa --- /dev/null +++ b/privacy.js @@ -0,0 +1,214 @@ + +function onSet(result) { + if (result) { + console.log("->: Value was updated"); + } else { + console.log("-X: Value was not updated"); + } +} + +// This disables queries to centralized databases of bad URLs to screen for +// risky sites in your browser +function disableHyperlinkAuditing() { + var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({ + value: false + }); + console.log("Disabling hyperlink auditing/val=", { + value: false + }) + setting.then(onSet); +} + +// This enables first-party isolation +function enableFirstPartyIsolation() { + var setting = browser.privacy.websites.firstPartyIsolate.set({ + value: true + }); + console.log("Enabling first party isolation/val=", { + value: true + }) + setting.then(onSet); +} + +// This rejects tracking cookies and third-party cookies but it +// LEAVES "Persistent" Cookies unmodified in favor of an option in the content +// interface for now +function disableEvilCookies() { + var getting = browser.privacy.websites.cookieConfig.get({}); + getting.then((got) => { + var setting = browser.privacy.websites.cookieConfig.set( + {value: {behavior: "reject_third_party", + nonPersistentCookies: got.value.nonPersistentCookies}} + ); + console.log("Setting cookie behavior/val=", {value: {behavior: "reject_third_party", + nonPersistentCookies: got.value.nonPersistentCookies}}) + setting.then(onSet); + }); +} + +// Make sure that they're gone +/*function disableBadCookies(){ + var setting = browser.privacy.websites.thirdPartyCookiesAllowed.set({ + value: false + }); + console.log("Disabling third party cookies/val=", { + value: false + }) + setting.then(onSet); +}*/ + +// this disables the use of referrer headers +function disableReferrers() { + var setting = browser.privacy.websites.referrersEnabled.set({ + value: false + }); + console.log("Disabling referrer headers/val=", { + value: false + }) + setting.then(onSet); +} + +// enable fingerprinting resistent features(letterboxing and stuff) +function enableResistFingerprinting() { + var setting = browser.privacy.websites.referrersEnabled.set({ + value: true + }); + console.log("Enabling resist fingerprinting/val=", { + value: true + }) + setting.then(onSet); +} + +// This is essentially a blocklist of clearnet web-sites known to do bad tracking +function enableTrackingProtection() { + var setting = browser.privacy.websites.trackingProtectionMode.set({ + value: "always" + }); + console.log("Enabling tracking protection/val=", { + value: "always" + }) + setting.then(onSet); +} + +// This disables protected content, which is a form of digital restrictions +// management dependent on identifying information +function disableDigitalRestrictionsManagement() { + var gettingInfo = browser.runtime.getPlatformInfo(); + gettingInfo.then((got) => { + if (got.os == "win") { + var setting = browser.privacy.websites.protectedContentEnabled.set({ + value: false + }); + console.log("Setting Protected Content(Digital Restrictions Management) false/val=", { + value: false + }) + setting.then(onSet); + } + }); +} + +function setAllPrivacy() { + disableHyperlinkAuditing() + enableFirstPartyIsolation() + disableEvilCookies() + disableReferrers() + enableTrackingProtection() + enableResistFingerprinting() + disableDigitalRestrictionsManagement() +} + +setAllPrivacy() + +function ResetPeerConnection(){ + browser.privacy.network.peerConnectionEnabled.set({value: false}); + browser.privacy.network.networkPredictionEnabled.set({value: false}); + browser.privacy.network.webRTCIPHandlingPolicy.set({value: "disable_non_proxied_udp"}); + console.log("Re-disabled WebRTC") +} + +function EnablePeerConnection(){ + browser.privacy.network.peerConnectionEnabled.set({value: true}); + browser.privacy.network.networkPredictionEnabled.set({value: false}); + browser.privacy.network.webRTCIPHandlingPolicy.set({value: "disable_non_proxied_udp"}); + console.log("Enabled WebRTC") +} + +ResetPeerConnection() + +function ResetDisableSavePasswords(){ + browser.privacy.services.passwordSavingEnabled.set({value: false}); + console.log("Re-disabled saved passwords") +} + +function EnableSavePasswords(){ + browser.privacy.services.passwordSavingEnabled.set({value: true}); + console.log("Enabled saved passwords") +} + +//ResetDisableSavePasswords() + + +var defaultSettings = { + since: "forever", + dataTypes: ["history", "downloads", "cache", "cookies", "passwords", "pluginData", "formData", "serviceWorkers"] +}; + +var appSettings = { + since: "forever", + dataTypes: [""] +}; + +function onError(e) { + console.error(e); +} + +function checkStoredSettings(storedSettings) { + browser.storage.local.set(appSettings); +} + +const gettingStoredSettings = browser.storage.local.get(); +gettingStoredSettings.then(checkStoredSettings, onError); + +function forgetBrowsingData(storedSettings) { + + function getSince(selectedSince) { + if (selectedSince === "forever") { + return 0; + } + + const times = { + hour: () => { return 1000 * 60 * 60 }, + day: () => { return 1000 * 60 * 60 * 24 }, + week: () => { return 1000 * 60 * 60 * 24 * 7} + } + + const sinceMilliseconds = times[selectedSince].call(); + return Date.now() - sinceMilliseconds; + } + + function getTypes(selectedTypes) { + let dataTypes = {}; + for (let item of selectedTypes) { + dataTypes[item] = true; + } + return dataTypes; + } + + const since = getSince(defaultSettings.since); + const dataTypes = getTypes(defaultSettings.dataTypes); + + function notify() { + let dataTypesString = Object.keys(dataTypes).join(", "); + let sinceString = new Date(since).toLocaleString(); + browser.notifications.create({ + "type": "basic", + "title": "Removed browsing data", + "message": `Removed ${dataTypesString}\nsince ${sinceString}` + }); + } + + browser.browsingData.remove({since}, dataTypes).then(notify); + + setAllPrivacy() + ResetPeerConnection() +}