fix android issue
This commit is contained in:
4
Makefile
4
Makefile
@@ -43,7 +43,9 @@ zip: version
|
||||
profile-install:
|
||||
cp ./i2psetproxy.js@eyedeekay.github.io.xpi $(HOME)/.mozilla/firefox/firefox.profile.i2p/firefox.profile.i2p/extensions
|
||||
cp ./i2psetproxy.js@eyedeekay.github.io.xpi $(HOME)/.mozilla/firefox/.firefox.profile.i2p.default/extensions
|
||||
sudo cp ./i2psetproxy.js@eyedeekay.github.io.xpi /usr/local/lib/firefox.profile.i2p/firefox.profile.i2p/extensions/
|
||||
|
||||
to-profile:
|
||||
cp ./i2psetproxy.js@eyedeekay.github.io.xpi /usr/local/lib/firefox.profile.i2p/firefox.profile.i2p/extensions/
|
||||
|
||||
pi: profile-install
|
||||
|
||||
|
||||
180
android-ext.pac
180
android-ext.pac
@@ -1,180 +0,0 @@
|
||||
/*******************************************************
|
||||
** Proxy Auto Configure Script with I2P Host Detection.
|
||||
**
|
||||
** Author: Cervantes
|
||||
** License: Public Domain
|
||||
** Date: 11 May 2004
|
||||
**
|
||||
** Revised: 07 Sep 2004
|
||||
** Changes:
|
||||
** Proxy recursion disabled by default (strict)
|
||||
** Password Authentication for session commands
|
||||
** Support for http://path?i2paddresshelper=BASE64
|
||||
** Support for http://i2p/BASE64/path syntax
|
||||
** Revised: 17 May 2004
|
||||
** Changes:
|
||||
** Ability for the user to control the proxy
|
||||
** status on a per browser-session basis.
|
||||
********************************************************/
|
||||
|
||||
|
||||
/* C O N F I G U R A T I O N
|
||||
*/
|
||||
|
||||
/* Replace normal with "PROXY yourproxy:port" if you run
|
||||
** behind a Proxy Server by default.
|
||||
*/
|
||||
var normal = "DIRECT";
|
||||
|
||||
/* Specify the I2P proxy connection details here.
|
||||
*/
|
||||
|
||||
var i2pProxy = "PROXY 127.0.0.1:7950";
|
||||
|
||||
/* Set the default status of proxy detection here:
|
||||
**
|
||||
**
|
||||
** [1] "auto" => Proxy will be used automatically if
|
||||
** '-> an ".i2p" url is detected.
|
||||
** '-> You will only be anonymous for ".i2p" domains.
|
||||
**
|
||||
** [2] "on" => Proxy is enabled all the time. (safest)
|
||||
** '-> NB. Normal web available only via
|
||||
** '-> i2p outproxies.
|
||||
** '-> You can be fairly confident of anonymity.
|
||||
**
|
||||
** [3] "off" => Completely Bypass the proxy and therefore i2p.
|
||||
** '-> no i2p sites will be accessible...
|
||||
** '-> ...your browsing habits can potentially
|
||||
** '-> be traced back to you!
|
||||
**
|
||||
*/
|
||||
|
||||
var proxyStatus = "on";
|
||||
|
||||
/* By setting statusKeyword to "all" you can set these options at runtime
|
||||
** for the duration of the browser session by entering special commands
|
||||
** into your browser address bar.
|
||||
**
|
||||
** Due to limitations in the way proxy scripting works, a malicious site
|
||||
** could change your status mode by linking to command keywords...
|
||||
** eg. <img src="i2p.off" ...
|
||||
** This is why the default setting for statusKeyword is "limited", which only
|
||||
** allows you to set the proxy status to "on". See also keywordAuthPassword.
|
||||
**
|
||||
** [1] "all" => All proxy status urls are available.
|
||||
** '-> i2p.on, i2p.off, i2p.auto (respective to proxyStatus settings)
|
||||
** '-> WARNING: Setting "all" is a big risk to your anonymity!
|
||||
** '-> In this mode it is highly recommended you set an AuthPassword too!
|
||||
**
|
||||
** [2] "limited" => Only i2p.on is available..
|
||||
** '-> This setting lasts for the duration of the browser setting.
|
||||
** '-> You have to close your browser in order to revert to
|
||||
** '-> your default proxyStatus configuration.
|
||||
**
|
||||
** [3] "off" => No command urls available.
|
||||
** '-> The status mode can only be altered by editing the above
|
||||
** '-> proxyStatus setting. (safest)
|
||||
**
|
||||
*/
|
||||
|
||||
var statusKeyword = "on";
|
||||
|
||||
/*
|
||||
** By default if proxyStatus is set to "auto" the config script
|
||||
** will fall back to your normal connection settings if the
|
||||
** i2p proxy is offline. This is handy for browsing your locally
|
||||
** hosted eepsites when your router is not running (for instance).
|
||||
** However this can mean that requests to external eepsites could
|
||||
** be forwarded to the outweb and potentially compromise some of
|
||||
** your rights to anonymity.
|
||||
** Setting "true" here enables strict mode where all requests to ".i2p"
|
||||
** sites will be rejected if the i2p proxy is offline. (safest)
|
||||
*/
|
||||
|
||||
var strict = true;
|
||||
|
||||
/*
|
||||
** By setting an authentication password, all activated session keywords
|
||||
** will require the addition of a password to prevent malicious sites from
|
||||
** hijacking your proxy settings. ie. <img src="i2p.off" ...
|
||||
** Users should append whatever they set here to any command keywords
|
||||
** they use.
|
||||
** eg. i2p.on.passw0rd
|
||||
** If left blank, authentication is ignored - it is recommended that
|
||||
** you use "limited" statusKeyword mode if you choose not to require a password.
|
||||
** If you do require this feature then you should replace the default "passw0rd" with
|
||||
** one of your own (recommend at least 8 letters with a case-sensitive alpha-numeric
|
||||
** mix of characters).
|
||||
**
|
||||
*/
|
||||
|
||||
var keywordAuthPassword = "passw0rd";
|
||||
|
||||
|
||||
/* E N D C O N F I G U R A T I O N
|
||||
*/
|
||||
|
||||
|
||||
/* Allows the proxy to fallback on "normal" settings
|
||||
** '-> if the i2p router is offline.
|
||||
*/
|
||||
|
||||
if (strict == false) {
|
||||
i2pProxy = i2pProxy + "; " + normal;
|
||||
}
|
||||
|
||||
/*Check for User Authentication Password.
|
||||
*/
|
||||
if (keywordAuthPassword != "") {
|
||||
keywordAuthPassword = "." + keywordAuthPassword;
|
||||
}
|
||||
|
||||
/* This function gets called every time a url is submitted
|
||||
*/
|
||||
|
||||
function FindProxyForURL(url, host) {
|
||||
/* checks for a special command url that
|
||||
** '-> changes the status of the proxy script.
|
||||
*/
|
||||
|
||||
if (statusKeyword != "off") {
|
||||
if (host == "i2p.off" + keywordAuthPassword && statusKeyword == "all") {
|
||||
/*Proxy is bypassed - outweb available only
|
||||
*/
|
||||
proxyStatus = "off";
|
||||
} else if (host == "i2p.auto" + keywordAuthPassword && statusKeyword == "all") {
|
||||
/* Proxy is used only for .i2p hosts otherwise
|
||||
** '-> browse as normal.
|
||||
*/
|
||||
proxyStatus = "auto";
|
||||
} else if (host == "i2p.on" + keywordAuthPassword && (statusKeyword == "limited" ||
|
||||
statusKeyword == "all" )) {
|
||||
/* Only I2P traffic is accepted.
|
||||
*/
|
||||
proxyStatus = "on";
|
||||
}
|
||||
}
|
||||
|
||||
if (proxyStatus == "off") {
|
||||
/* Proxy is completely bypassed.
|
||||
*/
|
||||
return normal;
|
||||
} else if (proxyStatus == "on") {
|
||||
/* All requests are forward to the proxy.
|
||||
*/
|
||||
return i2pProxy;
|
||||
}
|
||||
|
||||
host = host.toLowerCase();
|
||||
/* check tld for "i2p" or oOo's new "i2paddresshelper" syntax - if found then redirect
|
||||
** '-> request to the i2p proxy
|
||||
*/
|
||||
|
||||
if (url.match(/^http:\/\/i2p\/[a-zA-Z0-9\-\~]{516}|i2paddresshelper=/i) ||
|
||||
shExpMatch(host, "*.i2p")) { // seems more reliable than:
|
||||
return i2pProxy; // dnsDomainIs(host, ".i2p") ||
|
||||
} else { // i2pRegex.test(host)
|
||||
return normal;
|
||||
}
|
||||
}
|
||||
180
android.pac
180
android.pac
@@ -1,180 +0,0 @@
|
||||
/*******************************************************
|
||||
** Proxy Auto Configure Script with I2P Host Detection.
|
||||
**
|
||||
** Author: Cervantes
|
||||
** License: Public Domain
|
||||
** Date: 11 May 2004
|
||||
**
|
||||
** Revised: 07 Sep 2004
|
||||
** Changes:
|
||||
** Proxy recursion disabled by default (strict)
|
||||
** Password Authentication for session commands
|
||||
** Support for http://path?i2paddresshelper=BASE64
|
||||
** Support for http://i2p/BASE64/path syntax
|
||||
** Revised: 17 May 2004
|
||||
** Changes:
|
||||
** Ability for the user to control the proxy
|
||||
** status on a per browser-session basis.
|
||||
********************************************************/
|
||||
|
||||
|
||||
/* C O N F I G U R A T I O N
|
||||
*/
|
||||
|
||||
/* Replace normal with "PROXY yourproxy:port" if you run
|
||||
** behind a Proxy Server by default.
|
||||
*/
|
||||
var normal = "DIRECT";
|
||||
|
||||
/* Specify the I2P proxy connection details here.
|
||||
*/
|
||||
|
||||
var i2pProxy = "PROXY 127.0.0.1:4444";
|
||||
|
||||
/* Set the default status of proxy detection here:
|
||||
**
|
||||
**
|
||||
** [1] "auto" => Proxy will be used automatically if
|
||||
** '-> an ".i2p" url is detected.
|
||||
** '-> You will only be anonymous for ".i2p" domains.
|
||||
**
|
||||
** [2] "on" => Proxy is enabled all the time. (safest)
|
||||
** '-> NB. Normal web available only via
|
||||
** '-> i2p outproxies.
|
||||
** '-> You can be fairly confident of anonymity.
|
||||
**
|
||||
** [3] "off" => Completely Bypass the proxy and therefore i2p.
|
||||
** '-> no i2p sites will be accessible...
|
||||
** '-> ...your browsing habits can potentially
|
||||
** '-> be traced back to you!
|
||||
**
|
||||
*/
|
||||
|
||||
var proxyStatus = "on";
|
||||
|
||||
/* By setting statusKeyword to "all" you can set these options at runtime
|
||||
** for the duration of the browser session by entering special commands
|
||||
** into your browser address bar.
|
||||
**
|
||||
** Due to limitations in the way proxy scripting works, a malicious site
|
||||
** could change your status mode by linking to command keywords...
|
||||
** eg. <img src="i2p.off" ...
|
||||
** This is why the default setting for statusKeyword is "limited", which only
|
||||
** allows you to set the proxy status to "on". See also keywordAuthPassword.
|
||||
**
|
||||
** [1] "all" => All proxy status urls are available.
|
||||
** '-> i2p.on, i2p.off, i2p.auto (respective to proxyStatus settings)
|
||||
** '-> WARNING: Setting "all" is a big risk to your anonymity!
|
||||
** '-> In this mode it is highly recommended you set an AuthPassword too!
|
||||
**
|
||||
** [2] "limited" => Only i2p.on is available..
|
||||
** '-> This setting lasts for the duration of the browser setting.
|
||||
** '-> You have to close your browser in order to revert to
|
||||
** '-> your default proxyStatus configuration.
|
||||
**
|
||||
** [3] "off" => No command urls available.
|
||||
** '-> The status mode can only be altered by editing the above
|
||||
** '-> proxyStatus setting. (safest)
|
||||
**
|
||||
*/
|
||||
|
||||
var statusKeyword = "off";
|
||||
|
||||
/*
|
||||
** By default if proxyStatus is set to "auto" the config script
|
||||
** will fall back to your normal connection settings if the
|
||||
** i2p proxy is offline. This is handy for browsing your locally
|
||||
** hosted eepsites when your router is not running (for instance).
|
||||
** However this can mean that requests to external eepsites could
|
||||
** be forwarded to the outweb and potentially compromise some of
|
||||
** your rights to anonymity.
|
||||
** Setting "true" here enables strict mode where all requests to ".i2p"
|
||||
** sites will be rejected if the i2p proxy is offline. (safest)
|
||||
*/
|
||||
|
||||
var strict = true;
|
||||
|
||||
/*
|
||||
** By setting an authentication password, all activated session keywords
|
||||
** will require the addition of a password to prevent malicious sites from
|
||||
** hijacking your proxy settings. ie. <img src="i2p.off" ...
|
||||
** Users should append whatever they set here to any command keywords
|
||||
** they use.
|
||||
** eg. i2p.on.passw0rd
|
||||
** If left blank, authentication is ignored - it is recommended that
|
||||
** you use "limited" statusKeyword mode if you choose not to require a password.
|
||||
** If you do require this feature then you should replace the default "passw0rd" with
|
||||
** one of your own (recommend at least 8 letters with a case-sensitive alpha-numeric
|
||||
** mix of characters).
|
||||
**
|
||||
*/
|
||||
|
||||
var keywordAuthPassword = "passw0rd";
|
||||
|
||||
|
||||
/* E N D C O N F I G U R A T I O N
|
||||
*/
|
||||
|
||||
|
||||
/* Allows the proxy to fallback on "normal" settings
|
||||
** '-> if the i2p router is offline.
|
||||
*/
|
||||
|
||||
if (strict == false) {
|
||||
i2pProxy = i2pProxy + "; " + normal;
|
||||
}
|
||||
|
||||
/*Check for User Authentication Password.
|
||||
*/
|
||||
if (keywordAuthPassword != "") {
|
||||
keywordAuthPassword = "." + keywordAuthPassword;
|
||||
}
|
||||
|
||||
/* This function gets called every time a url is submitted
|
||||
*/
|
||||
|
||||
function FindProxyForURL(url, host) {
|
||||
/* checks for a special command url that
|
||||
** '-> changes the status of the proxy script.
|
||||
*/
|
||||
|
||||
if (statusKeyword != "off") {
|
||||
if (host == "i2p.off" + keywordAuthPassword && statusKeyword == "all") {
|
||||
/*Proxy is bypassed - outweb available only
|
||||
*/
|
||||
proxyStatus = "off";
|
||||
} else if (host == "i2p.auto" + keywordAuthPassword && statusKeyword == "all") {
|
||||
/* Proxy is used only for .i2p hosts otherwise
|
||||
** '-> browse as normal.
|
||||
*/
|
||||
proxyStatus = "auto";
|
||||
} else if (host == "i2p.on" + keywordAuthPassword && (statusKeyword == "limited" ||
|
||||
statusKeyword == "all" )) {
|
||||
/* Only I2P traffic is accepted.
|
||||
*/
|
||||
proxyStatus = "on";
|
||||
}
|
||||
}
|
||||
|
||||
if (proxyStatus == "off") {
|
||||
/* Proxy is completely bypassed.
|
||||
*/
|
||||
return normal;
|
||||
} else if (proxyStatus == "on") {
|
||||
/* All requests are forward to the proxy.
|
||||
*/
|
||||
return i2pProxy;
|
||||
}
|
||||
|
||||
host = host.toLowerCase();
|
||||
/* check tld for "i2p" or oOo's new "i2paddresshelper" syntax - if found then redirect
|
||||
** '-> request to the i2p proxy
|
||||
*/
|
||||
|
||||
if (url.match(/^http:\/\/i2p\/[a-zA-Z0-9\-\~]{516}|i2paddresshelper=/i) ||
|
||||
shExpMatch(host, "*.i2p")) { // seems more reliable than:
|
||||
return i2pProxy; // dnsDomainIs(host, ".i2p") ||
|
||||
} else { // i2pRegex.test(host)
|
||||
return normal;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,20 @@
|
||||
chrome.windows.onCreated.addListener(themeWindow);
|
||||
|
||||
function isDroid() {
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
console.log("android detected")
|
||||
return true
|
||||
}else{
|
||||
console.log("desktop detected")
|
||||
return false
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (!isDroid()) {
|
||||
chrome.windows.onCreated.addListener(themeWindow);
|
||||
}
|
||||
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titleprefpriv = chrome.i18n.getMessage("titlePrefacePrivate");
|
||||
@@ -8,8 +24,8 @@ function themeWindow(window) {
|
||||
if (window.incognito) {
|
||||
chrome.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A0A0DE",
|
||||
toolbar: "#A0A0DE",
|
||||
frame: "#2D4470",
|
||||
toolbar: "#2D4470",
|
||||
}
|
||||
});
|
||||
chrome.windows.update(window.id, {
|
||||
@@ -19,8 +35,8 @@ function themeWindow(window) {
|
||||
else {
|
||||
chrome.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#BFA0DE",
|
||||
toolbar: "#BFA0DE",
|
||||
frame: "#9DABD5",
|
||||
toolbar: "#9DABD5",
|
||||
}
|
||||
});
|
||||
chrome.windows.update(window.id, {
|
||||
|
||||
BIN
icons/toopie.png
BIN
icons/toopie.png
Binary file not shown.
|
Before Width: | Height: | Size: 7.4 KiB After Width: | Height: | Size: 18 KiB |
@@ -5,7 +5,17 @@
|
||||
"strict_min_version": "60.0"
|
||||
}
|
||||
},
|
||||
"permissions": ["theme", "browsingData", "notifications", "proxy", "privacy", "storage"],
|
||||
"permissions": [
|
||||
"theme",
|
||||
"browsingData",
|
||||
"notifications",
|
||||
"proxy",
|
||||
"privacy",
|
||||
"storage",
|
||||
"webRequest",
|
||||
"contextualIdentities",
|
||||
"<all_urls>"
|
||||
],
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "1.26",
|
||||
|
||||
@@ -33,3 +33,30 @@ label:hover {
|
||||
font-size: 1.2em;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
html, body {
|
||||
width: 350px;
|
||||
}
|
||||
|
||||
a {
|
||||
margin: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.panel {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
span.identity {
|
||||
width: 100px;
|
||||
display: inline-block;
|
||||
margin-left: 1em;
|
||||
}
|
||||
|
||||
.control-options {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.identity-options {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@@ -25,7 +25,12 @@
|
||||
<input type="text" data="port" id="port" value="4444"/>
|
||||
|
||||
</section>
|
||||
<!--
|
||||
<section class="scheme-options identity-options">
|
||||
<div class="panel">
|
||||
<div id="identity-list">Identity list?</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="scheme-options control-options">
|
||||
<div class="title" >Controller Options</div>
|
||||
<p id="controlHelpText"> These options will be inert if used with the default i2p HTTP or SOCKS
|
||||
@@ -37,7 +42,7 @@
|
||||
<input type="text" data="controlport" id="controlport" value="4444"/>
|
||||
|
||||
</section>
|
||||
-->
|
||||
|
||||
<input type="button" value="Save preferences" id="save-button"/>
|
||||
|
||||
<script src="options.js"></script>
|
||||
|
||||
@@ -4,6 +4,8 @@ function isDroid() {
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -23,6 +25,22 @@ function SetControlHostText(){
|
||||
controlhostid.textContent = chrome.i18n.getMessage("controlHostText");
|
||||
}
|
||||
|
||||
function setupProxy() {
|
||||
var controlHost = getControlHost()
|
||||
var controlPort = getControlPort();
|
||||
var Host = getHost()
|
||||
var Port = getPort()
|
||||
var Scheme = getScheme()
|
||||
function handleProxyRequest(requestInfo) {
|
||||
console.log("proxying request via listener")
|
||||
console.log(" ", Scheme, Host, ":", Port,)
|
||||
return {type: Scheme, host: Host, port: Port, proxyDns: true}
|
||||
}
|
||||
console.log("Setting up Firefox WebExtension proxy")
|
||||
browser.proxy.onRequest.addListener(handleProxyRequest, {urls: ["<all_urls>"]});
|
||||
console.log("i2p settings created for WebExtension Proxy")
|
||||
}
|
||||
|
||||
function SetControlPortText(){
|
||||
var controlportid = document.getElementById('controlPortText');
|
||||
controlportid.textContent = chrome.i18n.getMessage("controlPortText");
|
||||
@@ -36,13 +54,19 @@ function SetControlHelpText(){
|
||||
function getScheme() {
|
||||
const proxy_scheme = document.querySelector("#proxy_scheme");
|
||||
console.log("Got i2p proxy scheme:", proxy_scheme.value);
|
||||
if (proxy_scheme == "HTTP") {
|
||||
return "http"
|
||||
}
|
||||
if (proxy_scheme == "SOCKS") {
|
||||
return "socks"
|
||||
}
|
||||
return proxy_scheme.value;
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
proxy_host = document.getElementById("host").value
|
||||
console.log("Got i2p proxy host:", proxy_host);
|
||||
if (proxy_host == undefined){
|
||||
if (proxy_host == undefined) {
|
||||
return "127.0.0.1"
|
||||
}
|
||||
return proxy_host;
|
||||
@@ -51,8 +75,8 @@ function getHost() {
|
||||
function getPort() {
|
||||
proxy_port = document.getElementById("port").value
|
||||
console.log("Got i2p proxy port:", proxy_port);
|
||||
if (proxy_port == undefined){
|
||||
return 4444
|
||||
if (proxy_port == undefined) {
|
||||
return "4444"
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
@@ -60,7 +84,7 @@ function getPort() {
|
||||
function getControlHost() {
|
||||
control_host = document.getElementById("controlhost").value
|
||||
console.log("Got i2p control host:", control_host);
|
||||
if (control_host == undefined){
|
||||
if (control_host == undefined) {
|
||||
return "127.0.0.1"
|
||||
}
|
||||
return control_host;
|
||||
@@ -69,24 +93,12 @@ function getControlHost() {
|
||||
function getControlPort() {
|
||||
control_port = document.getElementById("controlport").value
|
||||
console.log("Got i2p control port:", control_port);
|
||||
if (control_port == undefined){
|
||||
return 4444
|
||||
if (control_port == undefined) {
|
||||
return "4444"
|
||||
}
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function isFirefox() {
|
||||
testPlain = navigator.userAgent.indexOf('Firefox') !== -1;
|
||||
if (testPlain) {
|
||||
return testPlain
|
||||
}
|
||||
testTorBrowser = navigator.userAgent.indexOf('Tor') !== -1;
|
||||
if (testTorBrowser) {
|
||||
return testTorBrowser
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function checkStoredSettings(storedSettings) {
|
||||
let defaultSettings = {};
|
||||
if (!storedSettings.proxy_scheme){
|
||||
@@ -111,38 +123,6 @@ function onError(e) {
|
||||
console.error(e);
|
||||
}
|
||||
|
||||
//var controlHost = "127.0.0.1" //getControlHost()
|
||||
//var controlPort = "7951" //getControlPort();
|
||||
|
||||
function setupProxy() {
|
||||
//var controlHost = getControlHost()
|
||||
//var controlPort = getControlPort()
|
||||
var Host = getHost()
|
||||
var Port = getPort()
|
||||
if (isDroid()) {
|
||||
console.log("Setting up Firefox Android proxy")
|
||||
function handleProxyRequest(requestInfo) {
|
||||
if (shouldProxyRequest(requestInfo)) {
|
||||
console.log(`Proxying: ${requestInfo.url}`);
|
||||
return {type: "http", host: Host, port: Port};
|
||||
}
|
||||
return {type: "http", host: Host, port: Port};
|
||||
}
|
||||
browser.proxy.onRequest.addListener(handleProxyRequest, {urls: ["<all_urls>"]});
|
||||
console.log("i2p settings created for Firefox Android")
|
||||
}else{
|
||||
console.log("Setting up Firefox Desktop proxy")
|
||||
var proxySettings = {
|
||||
proxyType: "manual",
|
||||
http: Host+":"+Port,
|
||||
passthrough: "",
|
||||
httpProxyAll: true
|
||||
};
|
||||
browser.proxy.settings.set({value:proxySettings});
|
||||
console.log("i2p settings created for Firefox Desktop")
|
||||
}
|
||||
}
|
||||
|
||||
function storeSettings() {
|
||||
let proxy_scheme = getScheme()
|
||||
let proxy_host = getHost()
|
||||
@@ -178,18 +158,19 @@ function updateUI(restoredSettings) {
|
||||
portitem.value = restoredSettings.proxy_port
|
||||
console.log("showing proxy port:", portitem.value)
|
||||
|
||||
/*const controlhostitem = document.getElementById("controlhost")
|
||||
const controlhostitem = document.getElementById("controlhost")
|
||||
controlhostitem.value = restoredSettings.control_host
|
||||
console.log("showing control host:", controlhostitem.value)
|
||||
|
||||
const controlportitem = document.getElementById("controlport")
|
||||
controlportitem.value = restoredSettings.control_port
|
||||
console.log("showing control port:", controlportitem.value)*/
|
||||
console.log("showing control port:", controlportitem.value)
|
||||
|
||||
SetHostText()
|
||||
SetPortText()
|
||||
/*SetControlHostText()
|
||||
SetControlHostText()
|
||||
SetControlPortText()
|
||||
SetControlHelpText()*/
|
||||
SetControlHelpText()
|
||||
setupProxy()
|
||||
}
|
||||
|
||||
@@ -203,3 +184,6 @@ chrome.storage.local.get(function(got){
|
||||
|
||||
const saveButton = document.querySelector("#save-button");
|
||||
saveButton.addEventListener("click", storeSettings);
|
||||
|
||||
//EXPERIMENTAL: Open in I2P Tab
|
||||
|
||||
|
||||
163
proxy.js
163
proxy.js
@@ -1,67 +1,144 @@
|
||||
function isFirefox() {
|
||||
testPlain = navigator.userAgent.indexOf('Firefox') !== -1;
|
||||
if (testPlain) {
|
||||
console.log("firefox")
|
||||
return testPlain
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
function isDroid() {
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then((got) => {
|
||||
if (got.os == "android") {
|
||||
return true
|
||||
}else{
|
||||
return false
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if (isFirefox()) {
|
||||
browser.privacy.network.peerConnectionEnabled.set({value: false});
|
||||
}
|
||||
browser.privacy.network.peerConnectionEnabled.set({value: false});
|
||||
|
||||
chrome.privacy.network.networkPredictionEnabled.set({value: false});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({value: "disable_non_proxied_udp"});
|
||||
|
||||
console.log("Preliminarily disabled WebRTC.")
|
||||
|
||||
function shouldProxyRequest(requestInfo) {
|
||||
return true; //requestInfo.parentFrameId != -1;
|
||||
return requestInfo.parentFrameId != -1;
|
||||
}
|
||||
|
||||
function handleProxyRequest(requestInfo) {
|
||||
console.log(`Proxying: ${requestInfo.url}`);
|
||||
console.log(" ", getScheme(), getHost(), ":", getPort(),)
|
||||
return {type: getScheme(), host: getHost(), port: getPort()};
|
||||
}
|
||||
|
||||
var proxy_scheme = "HTTP"
|
||||
|
||||
function getScheme() {
|
||||
if (proxy_scheme == undefined) {
|
||||
proxy_scheme = "http"
|
||||
}
|
||||
if (proxy_scheme == "HTTP") {
|
||||
proxy_scheme = "http"
|
||||
}
|
||||
if (proxy_scheme == "SOCKS") {
|
||||
proxy_scheme = "socks"
|
||||
}
|
||||
console.log("Got i2p proxy scheme:", proxy_scheme);
|
||||
return proxy_scheme;
|
||||
}
|
||||
|
||||
var proxy_host = "127.0.0.1"
|
||||
|
||||
function getHost() {
|
||||
if (proxy_host == undefined){
|
||||
proxy_host = "127.0.0.1"
|
||||
}
|
||||
console.log("Got i2p proxy host:", proxy_host);
|
||||
return proxy_host;
|
||||
}
|
||||
|
||||
var proxy_port = "4444"
|
||||
|
||||
function getPort() {
|
||||
if (proxy_port == undefined){
|
||||
proxy_port = "4444"
|
||||
}
|
||||
console.log("Got i2p proxy port:", proxy_port);
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
var control_host = "127.0.0.1"
|
||||
|
||||
function getControlHost() {
|
||||
if (control_host == undefined){
|
||||
return "127.0.0.1"
|
||||
}
|
||||
console.log("Got i2p control host:", control_host);
|
||||
return control_host;
|
||||
}
|
||||
|
||||
var control_port = "4444"
|
||||
|
||||
function getControlPort() {
|
||||
if (control_port == undefined){
|
||||
return "4444"
|
||||
}
|
||||
console.log("Got i2p control port:", control_port);
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function setupProxy() {
|
||||
var controlHost = "127.0.0.1" //getControlHost()
|
||||
var controlPort = "7951" //getControlPort();
|
||||
var Host = "127.0.0.1" //getHost()
|
||||
var Port = "4444" //getPort()
|
||||
if (isDroid()) {
|
||||
console.log("Setting up Firefox Android proxy")
|
||||
function handleProxyRequest(requestInfo) {
|
||||
if (shouldProxyRequest(requestInfo)) {
|
||||
console.log(`Proxying: ${requestInfo.url}`);
|
||||
return {type: "http", host: Host, port: Port};
|
||||
}
|
||||
return {type: "http", host: Host, port: Port};
|
||||
}
|
||||
browser.proxy.onRequest.addListener(handleProxyRequest, {urls: ["<all_urls>"]});
|
||||
console.log("i2p settings created for Firefox Android")
|
||||
}else{
|
||||
console.log("Setting up Firefox Desktop proxy")
|
||||
var proxySettings = {
|
||||
proxyType: "manual",
|
||||
http: Host+":"+Port,
|
||||
passthrough: "",
|
||||
httpProxyAll: true
|
||||
};
|
||||
browser.proxy.settings.set({value:proxySettings});
|
||||
console.log("i2p settings created for Firefox Desktop")
|
||||
var controlHost = getControlHost()
|
||||
var controlPort = getControlPort();
|
||||
var Host = getHost()
|
||||
var Port = getPort()
|
||||
var Scheme = getScheme()
|
||||
function handleProxyRequest(requestInfo) {
|
||||
console.log("proxying request via listener")
|
||||
console.log(" ", Scheme, Host, ":", Port,)
|
||||
return {type: Scheme, host: Host, port: Port, proxyDns: true}
|
||||
}
|
||||
console.log("Setting up Firefox WebExtension proxy")
|
||||
browser.proxy.onRequest.addListener(handleProxyRequest, {urls: ["<all_urls>"]});
|
||||
console.log("i2p settings created for WebExtension Proxy")
|
||||
}
|
||||
|
||||
if (isFirefox()){
|
||||
// Theme all currently open windows
|
||||
function checkStoredSettings(storedSettings) {
|
||||
let defaultSettings = {};
|
||||
if (!storedSettings.proxy_scheme){
|
||||
defaultSettings["proxy_scheme"] = "http"
|
||||
}
|
||||
if (!storedSettings.proxy_host) {
|
||||
defaultSettings["proxy_host"] = "127.0.0.1"
|
||||
}
|
||||
if (!storedSettings.proxy_port) {
|
||||
defaultSettings["proxy_port"] = 4444
|
||||
}
|
||||
if (!storedSettings.control_host) {
|
||||
defaultSettings["control_host"] = "127.0.0.1"
|
||||
}
|
||||
if (!storedSettings.control_port) {
|
||||
defaultSettings["control_port"] = 4444
|
||||
}
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
}
|
||||
|
||||
function update(restoredSettings) {
|
||||
proxy_scheme = restoredSettings.proxy_scheme
|
||||
console.log("restoring proxy scheme:", proxy_scheme)
|
||||
proxy_host = restoredSettings.proxy_host
|
||||
console.log("restoring proxy host:", proxy_host)
|
||||
proxy_port = restoredSettings.proxy_port
|
||||
console.log("restoring proxy port:", proxy_port)
|
||||
control_host = restoredSettings.control_host
|
||||
console.log("restoring control host:", control_host)
|
||||
control_port = restoredSettings.control_port
|
||||
console.log("restoring control port:", control_port)
|
||||
}
|
||||
|
||||
chrome.storage.local.get(function(got){
|
||||
checkStoredSettings(got)
|
||||
update(got)
|
||||
setupProxy()
|
||||
});
|
||||
|
||||
// Theme all currently open windows
|
||||
if (!isDroid()) {
|
||||
browser.windows.getAll().then(wins => wins.forEach(themeWindow));
|
||||
}
|
||||
|
||||
if (isFirefox()) {
|
||||
setupProxy()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user