From 5da28b0f8771834ae208d61431d632875e9f8e7d Mon Sep 17 00:00:00 2001 From: Ruben Rodriguez Date: Thu, 8 Sep 2022 20:18:54 -0400 Subject: Updated extensions: * Upgraded Privacy Redirect to 1.1.49 and configured to use the 10 most reliable invidious instances * Removed ViewTube * Added torproxy@icecat.gnu based on 'Proxy toggle' extension * Added jShelter 0.11.1 * Upgraded LibreJS to 7.21.0 * Upgraded HTTPS Everywhere to 2021.7.13 * Upgraded SubmitMe to 1.9 --- .../torproxy@icecat.gnu/META-INF/cose.manifest | 37 +++++ .../torproxy@icecat.gnu/META-INF/cose.sig | Bin 0 -> 3110 bytes .../torproxy@icecat.gnu/META-INF/manifest.mf | 47 +++++++ .../torproxy@icecat.gnu/META-INF/mozilla.rsa | Bin 0 -> 4359 bytes .../torproxy@icecat.gnu/META-INF/mozilla.sf | 4 + data/extensions/torproxy@icecat.gnu/background.js | 149 +++++++++++++++++++++ data/extensions/torproxy@icecat.gnu/icons/p1.svg | 91 +++++++++++++ data/extensions/torproxy@icecat.gnu/icons/p2.svg | 85 ++++++++++++ data/extensions/torproxy@icecat.gnu/manifest.json | 45 +++++++ data/extensions/torproxy@icecat.gnu/settings.css | 30 +++++ data/extensions/torproxy@icecat.gnu/settings.html | 63 +++++++++ data/extensions/torproxy@icecat.gnu/settings.js | 53 ++++++++ 12 files changed, 604 insertions(+) create mode 100644 data/extensions/torproxy@icecat.gnu/META-INF/cose.manifest create mode 100644 data/extensions/torproxy@icecat.gnu/META-INF/cose.sig create mode 100644 data/extensions/torproxy@icecat.gnu/META-INF/manifest.mf create mode 100644 data/extensions/torproxy@icecat.gnu/META-INF/mozilla.rsa create mode 100644 data/extensions/torproxy@icecat.gnu/META-INF/mozilla.sf create mode 100644 data/extensions/torproxy@icecat.gnu/background.js create mode 100644 data/extensions/torproxy@icecat.gnu/icons/p1.svg create mode 100644 data/extensions/torproxy@icecat.gnu/icons/p2.svg create mode 100644 data/extensions/torproxy@icecat.gnu/manifest.json create mode 100644 data/extensions/torproxy@icecat.gnu/settings.css create mode 100644 data/extensions/torproxy@icecat.gnu/settings.html create mode 100644 data/extensions/torproxy@icecat.gnu/settings.js (limited to 'data/extensions/torproxy@icecat.gnu') diff --git a/data/extensions/torproxy@icecat.gnu/META-INF/cose.manifest b/data/extensions/torproxy@icecat.gnu/META-INF/cose.manifest new file mode 100644 index 0000000..42cda05 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/META-INF/cose.manifest @@ -0,0 +1,37 @@ +Manifest-Version: 1.0 + +Name: settings.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6anv3xncTMc8eediw8wscgbrlmo= +SHA256-Digest: 47v3ADsxI7OFsLI9Ob3YZjekabJtPfjlZ/Usy1jNSEo= + +Name: settings.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: TaPwMv87CAK19sNiNk9L++NH/xY= +SHA256-Digest: QJcp4e6yvxtRLNJiPtGMXAFsUEhujgTYmhDdqw6mOXQ= + +Name: settings.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DlYXdL43JwSn+1amJCsnPOqAkkg= +SHA256-Digest: 8rt7OebmlZC0XObdccAXaL4cKXYLt+YIyutZsfXURzY= + +Name: background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: G/prqg/9BDrAPnyZUfVxVW9PYLc= +SHA256-Digest: W6G77oxIH0mEdKqOLY7BWWbfMrrZUn1wzwl4Wrvwil4= + +Name: manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MQzINwoLrV6jGsswMbk5++CdA8M= +SHA256-Digest: ez97jvQuuItTUiGeFJMQ4tAyj40TlSBc+Lhr8VkjGD0= + +Name: icons/p2.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rKFFu6DEQKi9NhW0lOqcyqqDegU= +SHA256-Digest: roEOnaLvEsHYPB4h+oNOMps9upEX5dPUCndsvAUz2vU= + +Name: icons/p1.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WrE4n1huN0Rg12GmZLi7S36OrZU= +SHA256-Digest: VkQJQTiZC7Uyf6ExDuquEW/Ixe9T1XndEqwTJ/1T0wM= + diff --git a/data/extensions/torproxy@icecat.gnu/META-INF/cose.sig b/data/extensions/torproxy@icecat.gnu/META-INF/cose.sig new file mode 100644 index 0000000..c591bad Binary files /dev/null and b/data/extensions/torproxy@icecat.gnu/META-INF/cose.sig differ diff --git a/data/extensions/torproxy@icecat.gnu/META-INF/manifest.mf b/data/extensions/torproxy@icecat.gnu/META-INF/manifest.mf new file mode 100644 index 0000000..0f11800 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/META-INF/manifest.mf @@ -0,0 +1,47 @@ +Manifest-Version: 1.0 + +Name: settings.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6anv3xncTMc8eediw8wscgbrlmo= +SHA256-Digest: 47v3ADsxI7OFsLI9Ob3YZjekabJtPfjlZ/Usy1jNSEo= + +Name: settings.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: TaPwMv87CAK19sNiNk9L++NH/xY= +SHA256-Digest: QJcp4e6yvxtRLNJiPtGMXAFsUEhujgTYmhDdqw6mOXQ= + +Name: settings.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DlYXdL43JwSn+1amJCsnPOqAkkg= +SHA256-Digest: 8rt7OebmlZC0XObdccAXaL4cKXYLt+YIyutZsfXURzY= + +Name: background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: G/prqg/9BDrAPnyZUfVxVW9PYLc= +SHA256-Digest: W6G77oxIH0mEdKqOLY7BWWbfMrrZUn1wzwl4Wrvwil4= + +Name: manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MQzINwoLrV6jGsswMbk5++CdA8M= +SHA256-Digest: ez97jvQuuItTUiGeFJMQ4tAyj40TlSBc+Lhr8VkjGD0= + +Name: icons/p2.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rKFFu6DEQKi9NhW0lOqcyqqDegU= +SHA256-Digest: roEOnaLvEsHYPB4h+oNOMps9upEX5dPUCndsvAUz2vU= + +Name: icons/p1.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WrE4n1huN0Rg12GmZLi7S36OrZU= +SHA256-Digest: VkQJQTiZC7Uyf6ExDuquEW/Ixe9T1XndEqwTJ/1T0wM= + +Name: META-INF/cose.manifest +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gO96ZggerANLr/y5PZAOlQA5llc= +SHA256-Digest: 9JY77ZX1b8zxeCJBBWrsG1K/FWJTwkNFQdY2InYbaqo= + +Name: META-INF/cose.sig +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2IW2783wdc49TwbvnjvRJ8sfW5E= +SHA256-Digest: Cualpja8+9v8KBgYoKIfaC7qCKRo3CT1Mtj4EFS3OvM= + diff --git a/data/extensions/torproxy@icecat.gnu/META-INF/mozilla.rsa b/data/extensions/torproxy@icecat.gnu/META-INF/mozilla.rsa new file mode 100644 index 0000000..a62fb90 Binary files /dev/null and b/data/extensions/torproxy@icecat.gnu/META-INF/mozilla.rsa differ diff --git a/data/extensions/torproxy@icecat.gnu/META-INF/mozilla.sf b/data/extensions/torproxy@icecat.gnu/META-INF/mozilla.sf new file mode 100644 index 0000000..e8dfcd7 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/META-INF/mozilla.sf @@ -0,0 +1,4 @@ +Signature-Version: 1.0 +SHA1-Digest-Manifest: XjlJha4UffyHXIfl6oiV88clQQQ= +SHA256-Digest-Manifest: UsuiDWtMby2Eo7ESWqMa+92iSdPyY+o01Suox9uqEu0= + diff --git a/data/extensions/torproxy@icecat.gnu/background.js b/data/extensions/torproxy@icecat.gnu/background.js new file mode 100644 index 0000000..8a27219 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/background.js @@ -0,0 +1,149 @@ +const DEBUG = 0; +const DIRECT_PROXY = { + type: 'direct' +}; +const DEFAULT_PROXY_SETTINGS = { + type: 'socks', + host: '127.0.0.1', + port: 9050, + username: '', + password: '', + proxyDNS: true +}; +let proxies = [ DIRECT_PROXY, DIRECT_PROXY ]; +var skipLocal = 1; +var pendingRequests = []; +var currentProxy = 0; + +function buttonClicked() { + currentProxy = (currentProxy ? 0 : 1); + browser.storage.local.set({ currentProxy: currentProxy }); + updateState(); +} + +function updateState() { + if(currentProxy==0) + { + if (DEBUG) + console.log('Update state (proxy off)'); + browser.browserAction.setIcon({path: "icons/p1.svg"}); + browser.browserAction.setTitle({title: "Tor Proxy (disabled)"}); + } + else + { + if (DEBUG) + console.log('Update state (proxy on)'); + browser.browserAction.setIcon({path: "icons/p2.svg"}); + browser.browserAction.setTitle({title: "Tor Proxy (enabled)"}); + } +} + +function settingsChanged(settings) { + if ("proxySettings" in settings) + proxies[1] = settings.proxySettings.newValue; + if ("skipLocal" in settings) + skipLocal = settings.skipLocal.newValue; +} + +function completed(requestDetails) { + if (DEBUG) { + console.log("completed request: " + requestDetails.requestId); + } + var index = pendingRequests.indexOf(requestDetails.requestId); + if (index > -1) { + pendingRequests.splice(index, 1); + } +} + +function provideCredentialsSync(requestDetails) { + if (!requestDetails.isProxy) + return; + if (!currentProxy == 1) + return; + if (pendingRequests.indexOf(requestDetails.requestId) != -1) { + //if we've seen the request before, assume bad credentials and give up + console.log("Bad proxy credentials for request: " + requestDetails.requestId); + return {cancel:true}; + } + var credentials = { + username: proxies[1].username, + password: proxies[1].password + } + pendingRequests.push(requestDetails.requestId); + if (DEBUG) { + console.log(`Providing proxy credentials for request: ${requestDetails.requestId} username: ${credentials.username}`); + } + return {authCredentials: credentials}; +} + +function isLocalIPv4(host) +{ + var octets = /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/.exec(host); + if(!octets) + return false; + if(octets[1]>255||octets[2]>255||octets[3]>255||octets[4]>255) + return false; + if(octets[1]==10||octets[1]==127) //class A or local loopback + return true; + if(octets[1]==172&&octets[2]>=16&&octets[2]<=31) //class B + return true; + if(octets[1]==192&&octets[2]==168) //class C + return true; + return false; +} + +function isLocal(host) +{ + if(host.indexOf('.') == -1) + return true; + if(host.endsWith(".local")) + return true; + if(host=="::1") + return true; + return(isLocalIPv4(host)); +} + +function handleProxyRequest(requestInfo) { + const url = new URL(requestInfo.url); + var host = url.hostname; + var proxyNum = currentProxy; + if (skipLocal) { + if(isLocal(host)) { + if (DEBUG) + console.log(`Local host detected: ${host}`); + proxyNum = 0; + } + } + if (DEBUG) { + console.log(`Proxying: ${url.hostname}`); + console.log(proxies[proxyNum]); + } + return(proxies[proxyNum]); +} + +browser.storage.local.get({ currentProxy: 0, skipLocal: true, proxySettings: DEFAULT_PROXY_SETTINGS }, items=>{ + currentProxy = items.currentProxy; + skipLocal = items.skipLocal; + proxies[1] = items.proxySettings; + updateState(); +}); + +browser.storage.onChanged.addListener(settingsChanged); +browser.browserAction.onClicked.addListener(buttonClicked); +browser.proxy.onRequest.addListener(handleProxyRequest, {urls: [""]}); +browser.proxy.onError.addListener(error => { + console.error(`Proxy error: ${error.message}`); +}); +browser.webRequest.onAuthRequired.addListener( + provideCredentialsSync, + {urls: [""]}, + ["blocking"] +); +browser.webRequest.onCompleted.addListener( + completed, + {urls: [""]} +); +browser.webRequest.onErrorOccurred.addListener( + completed, + {urls: [""]} +); diff --git a/data/extensions/torproxy@icecat.gnu/icons/p1.svg b/data/extensions/torproxy@icecat.gnu/icons/p1.svg new file mode 100644 index 0000000..a18de5b --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/icons/p1.svg @@ -0,0 +1,91 @@ + + + + + + + + + + + + + + + + diff --git a/data/extensions/torproxy@icecat.gnu/icons/p2.svg b/data/extensions/torproxy@icecat.gnu/icons/p2.svg new file mode 100644 index 0000000..83632e8 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/icons/p2.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + diff --git a/data/extensions/torproxy@icecat.gnu/manifest.json b/data/extensions/torproxy@icecat.gnu/manifest.json new file mode 100644 index 0000000..f03ee3e --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/manifest.json @@ -0,0 +1,45 @@ +{ + "manifest_version": 2, + "name": "Tor Proxy Toggle", + "version": "1.2.1", + "description": "Toggle between direct connection and using Tor routing from a local daemon (requires a Tor service installed an running, separately of IceCat). Based on 'Proxy toggle' extension", + "icons": { + "48": "icons/p1.svg", + "96": "icons/p1.svg" + }, + "permissions": [ + "storage", + "proxy", + "", + "webRequest", + "webRequestBlocking" + ], + "browser_action": { + "browser_style": true, + "default_icon": "icons/p1.svg", + "default_title": "Tor Proxy Toggle" + }, + "commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Ctrl+Shift+Y" + }, + "description": "Toggle Tor proxy on/off" + } + }, + "background": { + "scripts": [ + "background.js" + ] + }, + "options_ui": { + "page": "settings.html", + "browser_style": true + }, + "applications": { + "gecko": { + "strict_min_version": "60.0", + "id": "torproxy@icecat.gnu" + } + } +} diff --git a/data/extensions/torproxy@icecat.gnu/settings.css b/data/extensions/torproxy@icecat.gnu/settings.css new file mode 100644 index 0000000..0fe75e2 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/settings.css @@ -0,0 +1,30 @@ +#dnsrow{ + display: none; +} +.configtable { + border-collapse:collapse; + margin: 6px; + font-size: 11pt; + min-width: 400px; + border: 2px solid black; + box-shadow: 3px 3px 2px #000 +} +.configtable th,.configtable td { + border: 1px solid black; + padding: 10px; +} +.configtable th { + color: #000; + font-size: 18px; + text-align: left; +} +.configtable td { + width: 50%; +} +.configtable tr { + background-color: lavender; + transition: background-color 0.5s ease; +} +.configtable tr:hover { + background-color: #fff; +} diff --git a/data/extensions/torproxy@icecat.gnu/settings.html b/data/extensions/torproxy@icecat.gnu/settings.html new file mode 100644 index 0000000..1fe61c9 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/settings.html @@ -0,0 +1,63 @@ + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Proxy configuration +
The default values to use with a Tor service are:
type=socks5, host=127.0.0.1, port=9050, RemoteDNS=true.
The Tor service needs to be installed and running, separately of IceCat.
Type + +
Host
Port
Username (optional)
Password (optional)
Remote DNS
+ General settings +
Don't use proxy for hosts we can detect as local (e.g. LAN IPs)
+
+ + + diff --git a/data/extensions/torproxy@icecat.gnu/settings.js b/data/extensions/torproxy@icecat.gnu/settings.js new file mode 100644 index 0000000..d227763 --- /dev/null +++ b/data/extensions/torproxy@icecat.gnu/settings.js @@ -0,0 +1,53 @@ +function saveOptions(e) { + e.preventDefault(); + browser.storage.local.set({ + proxySettings: { + type: document.querySelector("#type").value, + host: document.querySelector("#host").value, + port: document.querySelector("#port").value, + username: document.querySelector("#username").value, + password: document.querySelector("#password").value, + proxyDNS: document.querySelector("#dns").checked + }, + skipLocal: document.querySelector("#skiplocal").checked + }); +} + +function restoreOptions(e) { + function onGot(item) { + document.querySelector("#host").value = item.proxySettings.host; + document.querySelector("#port").value = item.proxySettings.port; + document.querySelector('#type [value="' + item.proxySettings.type + '"]').selected = true; + document.querySelector("#username").value = item.proxySettings.username; + document.querySelector("#password").value = item.proxySettings.password; + document.querySelector("#dns").checked = item.proxySettings.proxyDNS; + document.querySelector("#skiplocal").checked = item.skipLocal; + typeChanged(e); + } + function onError(error) { + console.log(`Error: ${error}`); + } + var gettingItem = browser.storage.local.get({ skipLocal: true, proxySettings: {type: 'socks', host: '127.0.0.1', port: 9050, username: '', password: '', proxyDNS: true}}); + gettingItem.then(onGot, onError); +} + +function typeChanged(e) { + var type = document.querySelector("#type").value; + var dnsDisplay = 'none'; + if(type=="socks"||type=="socks4") + dnsDisplay = 'table-row'; + else + document.querySelector("#dns").checked = false; + document.querySelector("#dnsrow").style.display = dnsDisplay; + saveOptions(e); +} + +document.addEventListener("DOMContentLoaded", restoreOptions); +document.querySelector("#type").addEventListener("change", typeChanged); +document.querySelector("#host").addEventListener("blur", saveOptions); +document.querySelector("#port").addEventListener("blur", saveOptions); +document.querySelector("#port").addEventListener("change", saveOptions); +document.querySelector("#username").addEventListener("blur", saveOptions); +document.querySelector("#password").addEventListener("blur", saveOptions); +document.querySelector("#dns").addEventListener("change", saveOptions); +document.querySelector("#skiplocal").addEventListener("change", saveOptions); -- cgit v1.2.3