Merge branch 'i2pbote' into 'master'
add a bote context, and when there are no more I2P browsing tabs, delete and... See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!11
This commit is contained in:
@@ -167,6 +167,14 @@
|
||||
"message": "Dispatch IRC (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"botePreface": {
|
||||
"message": "I2P-Bote Mail",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"botePrefacePrivate": {
|
||||
"message": "I2P-Bote Mail (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"routerPreface": {
|
||||
"message": "Router Console",
|
||||
"description": "Preface for the browser titlebar"
|
||||
|
||||
214
background.js
214
background.js
@@ -14,6 +14,7 @@ var ircpref = chrome.i18n.getMessage('ircPreface');
|
||||
var ircprefpriv = chrome.i18n.getMessage('ircPrefacePrivate');
|
||||
var extensionpref = chrome.i18n.getMessage('extensionPreface');
|
||||
var muwirepref = chrome.i18n.getMessage('muwirePreface');
|
||||
var botepref = chrome.i18n.getMessage('botePreface');
|
||||
|
||||
function onContextsGot(contexts) {
|
||||
var ids = [];
|
||||
@@ -94,6 +95,15 @@ function onContextsGot(contexts) {
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(botepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: botepref,
|
||||
color: 'blue',
|
||||
icon: 'fence',
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsError() {
|
||||
@@ -159,6 +169,23 @@ function themeWindow(window) {
|
||||
function onThemeError() {
|
||||
console.log('theme color set error');
|
||||
}
|
||||
function dynamicTheme() {
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
}
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTheme(context) {
|
||||
if (context.name == titlepref) {
|
||||
@@ -190,72 +217,25 @@ function themeWindow(window) {
|
||||
}
|
||||
} else if (context.name == routerpref) {
|
||||
console.log('Active in Router Console window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
}
|
||||
dynamicTheme();
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
}
|
||||
dynamicTheme();
|
||||
} else if (context.name == mailpref) {
|
||||
console.log('Active in Web Mail window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
}
|
||||
dynamicTheme();
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log('Active in Bittorrent window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: '#4456B7',
|
||||
toolbar: '#4456B7',
|
||||
},
|
||||
});
|
||||
}
|
||||
dynamicTheme();
|
||||
} else if (context.name == botepref) {
|
||||
console.log('Active in Bote window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == ircpref) {
|
||||
console.log('Active in IRC window');
|
||||
dynamicTheme();
|
||||
} else if (context.name == muwirepref) {
|
||||
console.log('Active in MuWire window');
|
||||
dynamicTheme();
|
||||
}
|
||||
}
|
||||
if (
|
||||
@@ -291,90 +271,43 @@ function setTitle(window) {
|
||||
function onContextError() {
|
||||
console.log('Context Error');
|
||||
}
|
||||
function setTitle(title, privtitle) {
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: privtitle + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: title + ': ',
|
||||
});
|
||||
}
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTitle(context) {
|
||||
if (context.name == titlepref) {
|
||||
console.log('Active in I2P window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ': ',
|
||||
});
|
||||
}
|
||||
} else if (context.name == webpref) {
|
||||
console.log('Active in Web window');
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: webprefpriv + ' - ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: webpref + ' - ',
|
||||
});
|
||||
}
|
||||
setTitle(titlepref, titleprefpriv);
|
||||
} else if (context.name == muwirepref) {
|
||||
console.log('Active in MuWire window');
|
||||
setTitle(muwirepref, muwireprefpriv);
|
||||
} else if (context.name == routerpref) {
|
||||
console.log('Active in Router Console window');
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + routerprefpriv + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + routerpref + ': ',
|
||||
});
|
||||
}
|
||||
setTitle(routerpref, routerprefpriv);
|
||||
} else if (context.name == botepref) {
|
||||
console.log('Active in Bote window');
|
||||
setTitle(botepref, boteprefpriv);
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + tunnelprefpriv + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + tunnelpref + ': ',
|
||||
});
|
||||
}
|
||||
setTitle(tunnelpref, tunnelprefpriv);
|
||||
} else if (context.name == mailpref) {
|
||||
console.log('Active in I2P Web Mail window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + mailprefpriv + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + mailpref + ': ',
|
||||
});
|
||||
}
|
||||
setTitle(mailpref, mailprefpriv);
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log('Active in I2P Torrent window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ' - ' + torrentprefpriv + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ' - ' + torrentpref + ': ',
|
||||
});
|
||||
}
|
||||
setTitle(torrentpref, torrentprefpriv);
|
||||
} else if (context.name == ircpref) {
|
||||
console.log('Active in IRC window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ircprefpriv + ' - ' + ircprefpriv + ': ',
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ircpref + ' - ' + ircpref + ': ',
|
||||
});
|
||||
}
|
||||
setTitle(ircpref, ircprefpriv);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -513,3 +446,24 @@ browser.webRequest.onHeadersReceived.addListener(
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking", "responseHeaders"]
|
||||
);
|
||||
|
||||
function onClosedWindowCheck() {
|
||||
var getContext = browser.contextualIdentities.query({ name: titlepref });
|
||||
function checkTabs(ctx) {
|
||||
function conditionallyDelete(tabs) {
|
||||
if (tabs.length == 0) {
|
||||
browser.contextualIdentities.remove(ctx[0].cookieStoreId);
|
||||
browser.contextualIdentities
|
||||
.query({})
|
||||
.then(onContextsGot, onContextsError);
|
||||
}
|
||||
}
|
||||
var tabs = browser.tabs.query({ cookieStoreId: ctx[0].cookieStoreId });
|
||||
tabs.then(conditionallyDelete, onError);
|
||||
}
|
||||
getContext.then(checkTabs, onError);
|
||||
}
|
||||
|
||||
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
|
||||
browser.windows.onRemoved.addListener(onClosedWindowCheck);
|
||||
browser.windows.onCreated.addListener(onClosedWindowCheck);
|
||||
|
||||
2
debian/changelog
vendored
2
debian/changelog
vendored
@@ -1,4 +1,4 @@
|
||||
i2psetproxy.js (0.83-1) UNRELEASED; urgency=low
|
||||
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix a bug which was causing i2psnark to fail to isolate.
|
||||
|
||||
|
||||
11
handler.js
11
handler.js
@@ -1,9 +1,9 @@
|
||||
function routerHost(url) {
|
||||
console.log('(urlcheck) HANDLER URL CHECK');
|
||||
// console.log("(urlcheck) HANDLER URL CHECK");
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
function pathcheck(str) {
|
||||
console.log('(urlcheck) HANDLER PATH CHECK', str);
|
||||
// console.log("(urlcheck) HANDLER PATH CHECK", str);
|
||||
if (str != undefined) {
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
@@ -14,7 +14,7 @@ function routerHost(url) {
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
str.includes(':7662')
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
@@ -26,6 +26,11 @@ function routerHost(url) {
|
||||
console.log('(urlcheck) MuWire application path', final);
|
||||
return 'muwire';
|
||||
}
|
||||
} else if (final.startsWith('i2pbote')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) I2PBote application path', final);
|
||||
return 'i2pbote';
|
||||
}
|
||||
} else if (
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
|
||||
9
host.js
9
host.js
@@ -60,7 +60,7 @@ function i2pHost(url) {
|
||||
}
|
||||
|
||||
function routerHost(url) {
|
||||
console.log('(urlcheck) HOST URL CHECK');
|
||||
// console.log("(urlcheck) HOST URL CHECK");
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
function pathcheck(str) {
|
||||
@@ -74,7 +74,7 @@ function routerHost(url) {
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission') ||
|
||||
final.startsWith('tracker') ||
|
||||
str.includes(':7662')
|
||||
url.includes(':7662')
|
||||
) {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
@@ -86,6 +86,11 @@ function routerHost(url) {
|
||||
console.log('(urlcheck) MuWire application path', final);
|
||||
return 'muwire';
|
||||
}
|
||||
} else if (final.startsWith('i2pbote')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) I2PBote application path', final);
|
||||
return 'i2pbote';
|
||||
}
|
||||
} else if (
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
|
||||
Binary file not shown.
@@ -38,7 +38,7 @@
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="magnet:?xt=urn:btih:09841bd5ca003fa37818754f4bee988698e3c0c8">Magnet Link</a>
|
||||
<a href="magnet:?xt=urn:btih:8d0e4b7965826328d2d857487116a6af997807e1">Magnet Link</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
],
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "0.83",
|
||||
"version": "0.85",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
|
||||
"icons": {
|
||||
|
||||
148
proxy.js
148
proxy.js
@@ -3,6 +3,7 @@ var webpref = chrome.i18n.getMessage('webPreface');
|
||||
var ircpref = chrome.i18n.getMessage('ircPreface');
|
||||
var routerpref = chrome.i18n.getMessage('routerPreface');
|
||||
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
|
||||
var ircpref = chrome.i18n.getMessage('ircPreface');
|
||||
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: true,
|
||||
@@ -20,88 +21,112 @@ function shouldProxyRequest(requestInfo) {
|
||||
return requestInfo.parentFrameId != -1;
|
||||
}
|
||||
|
||||
var handleContextProxyRequest = function(requestDetails) {
|
||||
var handleContextProxyRequest = async function(requestDetails) {
|
||||
try {
|
||||
var handleProxyRequest = function(context) {
|
||||
console.log('REQUESTDETAILS', requestDetails.tabId);
|
||||
var tab = browser.tabs.get(requestDetails.tabId);
|
||||
proxy = tab.then(handleTabRequest);
|
||||
return proxy;
|
||||
function handleTabRequest(tab) {
|
||||
console.log('(proxy), tab context', context);
|
||||
proxy = {
|
||||
failoverTimeout: 0,
|
||||
proxyDns: false,
|
||||
};
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
|
||||
if (context != undefined) {
|
||||
if (context.name == titlepref) {
|
||||
var furl = new URL(tab.url);
|
||||
if (!requestDetails.url.includes('/i2psnark/' + furl.host)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
}
|
||||
return proxy;
|
||||
} else if (context.name == ircpref) {
|
||||
proxy = {
|
||||
failoverTimeout: 0,
|
||||
proxyDns: false,
|
||||
};
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
console.log('(proxy), context', context);
|
||||
if (context != undefined) {
|
||||
if (context.name == ircpref) {
|
||||
if (!requestDetails.url.includes('7669')) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
if (requestDetails.url.includes(':7669')) {
|
||||
proxy = null;
|
||||
}
|
||||
} else if (context.name == routerpref) {
|
||||
if (routerHost(requestDetails.url)) {
|
||||
proxy = null;
|
||||
} else if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
}
|
||||
return proxy;
|
||||
}
|
||||
}
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (requestDetails.url.includes(':7669')) {
|
||||
proxy = null;
|
||||
} else {
|
||||
console.log(
|
||||
'(proxy) non-routerconsole localhost url, will not interfere',
|
||||
requestDetails.url
|
||||
);
|
||||
}
|
||||
if (context.name == titlepref) {
|
||||
if (!requestDetails.url.includes('/i2psnark/')) {
|
||||
console.log('URL', requestDetails.url);
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
}
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
return proxy;
|
||||
} else if (context.name == ircpref) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
if (requestDetails.url.includes(':7669')) {
|
||||
proxy = null;
|
||||
}
|
||||
} else if (context.name == routerpref) {
|
||||
if (routerHost(requestDetails.url)) {
|
||||
proxy = null;
|
||||
} else if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
}
|
||||
return proxy;
|
||||
} else if (context.name == webpref) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: 'http',
|
||||
host: 'localhost',
|
||||
port: '65535',
|
||||
};
|
||||
}
|
||||
}
|
||||
return proxy;
|
||||
}
|
||||
return proxy;
|
||||
}
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (requestDetails.url.includes(':7669')) {
|
||||
proxy = null;
|
||||
} else {
|
||||
console.log(
|
||||
'(proxy) non-routerconsole localhost url, will not interfere',
|
||||
requestDetails.url
|
||||
);
|
||||
}
|
||||
}
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
host: getHost(),
|
||||
port: getPort(),
|
||||
};
|
||||
}
|
||||
//var tab = tabGet(requestDetails.tabId);
|
||||
//tab.then(handleTabRequest,)
|
||||
return proxy;
|
||||
};
|
||||
var contextGet = function(tabInfo) {
|
||||
var contextGet = async function(tabInfo) {
|
||||
try {
|
||||
console.log('(proxy)Tab info from Function', tabInfo);
|
||||
context = browser.contextualIdentities.get(tabInfo.cookieStoreId);
|
||||
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
|
||||
return context;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return 'firefox-default';
|
||||
}
|
||||
};
|
||||
var tabGet = async function(tabId) {
|
||||
try {
|
||||
console.log('(proxy)Tab ID from Request', tabId);
|
||||
let tabInfo = await browser.tabs.get(tabId);
|
||||
return tabInfo;
|
||||
} catch (error) {
|
||||
console.log('(proxy)Tab error', error);
|
||||
}
|
||||
};
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: getScheme(),
|
||||
@@ -139,15 +164,16 @@ var handleContextProxyRequest = function(requestDetails) {
|
||||
} else if (extensionHost(requestDetails.url)) {
|
||||
return;
|
||||
} else if (i2pHost(requestDetails.url)) {
|
||||
var tab = browser.tabs.get(requestDetails.tabId);
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
requestDetails.tabId = tab;
|
||||
var context = tab.then(contextGet);
|
||||
var proxy = context.then(handleProxyRequest);
|
||||
var proxy = await context.then(handleProxyRequest);
|
||||
console.log('(proxy)Returning I2P Proxy', proxy);
|
||||
return proxy;
|
||||
} else {
|
||||
var tab = browser.tabs.get(requestDetails.tabId);
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
var context = tab.then(contextGet);
|
||||
var proxy = context.then(handleProxyRequest);
|
||||
var proxy = await context.then(handleProxyRequest);
|
||||
//console.log("(proxy)Returning I2P Proxy", proxy);
|
||||
return proxy;
|
||||
}
|
||||
@@ -158,7 +184,7 @@ var handleContextProxyRequest = function(requestDetails) {
|
||||
} catch (error) {
|
||||
console.log('(proxy)Not using I2P Proxy.', error);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function SetupSettings() {
|
||||
console.log('Initialising Settings');
|
||||
|
||||
@@ -4,13 +4,32 @@
|
||||
<link type="text/html" rel="alternate" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases"/>
|
||||
<link type="application/atom+xml" rel="self" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases.atom"/>
|
||||
<title>Release notes from I2P-in-Private-Browsing-Mode-Firefox</title>
|
||||
<updated>2020-11-11T03:03:56Z</updated>
|
||||
<updated>2020-11-11T06:44:09Z</updated>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.85</id>
|
||||
<updated>2020-11-11T06:44:44Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.85"/>
|
||||
<title>0.85</title>
|
||||
<enclosure url="magnet:?xt=urn:btih:8d0e4b7965826328d2d857487116a6af997807e1" type="application/x-bittorrent" />
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix a bug which was causing i2psnark to fail to isolate.</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 10 NOV 2020 1:33:50 -0400</p>
|
||||
<p>i2psetproxy.js (0.83-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.83</id>
|
||||
<updated>2020-11-11T04:00:27Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.83"/>
|
||||
<title>0.83</title>
|
||||
<enclosure url="magnet:?xt=urn:btih:09841bd5ca003fa37818754f4bee988698e3c0c8" type="application/x-bittorrent" />
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
@@ -176,24 +195,4 @@ i2psetproxy.js (0.67-1) UNRELEASED; urgency=low</p>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.65</id>
|
||||
<updated>2020-03-18T03:01:20Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.65"/>
|
||||
<title>0.65</title>
|
||||
<content type="html"><p>Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Initial prototype of certs implementation</li>
|
||||
<li>Use "pinned apptabs" to minimize the number of tabs occupied by an app</li>
|
||||
<li>Get ready for self-hosted updates but with bittorrent because it's cooler</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 17 MAR 2020 22:58:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
</feed>
|
||||
|
||||
201
scrub.js
201
scrub.js
@@ -7,6 +7,7 @@ var tunnelpref = chrome.i18n.getMessage('i2ptunnelPreface');
|
||||
var ircpref = chrome.i18n.getMessage('ircPreface');
|
||||
var extensionpref = chrome.i18n.getMessage('extensionPreface');
|
||||
var muwirepref = chrome.i18n.getMessage('muwirePreface');
|
||||
var botepref = chrome.i18n.getMessage('botePreface');
|
||||
|
||||
var contextScrub = async function(requestDetails) {
|
||||
function onHeaderError() {
|
||||
@@ -111,6 +112,9 @@ var notMyContextNotMyProblem = async function() {
|
||||
var context7 = await browser.contextualIdentities.query({
|
||||
name: muwirepref,
|
||||
});
|
||||
var context7 = await browser.contextualIdentities.query({
|
||||
name: botepref,
|
||||
});
|
||||
var othercontexts = [];
|
||||
console.log('Contexts:', contexts);
|
||||
for (context in contexts) {
|
||||
@@ -140,6 +144,7 @@ var contextSetup = function(requestDetails) {
|
||||
function onContextError() {
|
||||
console.log('Context launcher error');
|
||||
}
|
||||
console.log('(scrub) host', requestDetails.url);
|
||||
//console.log("(isolate)Forcing I2P requests into context");
|
||||
try {
|
||||
var i2pTabFind = async function(tabId) {
|
||||
@@ -241,7 +246,7 @@ var contextSetup = function(requestDetails) {
|
||||
console.log('in favor of', tab.id);
|
||||
console.log('with context', tab.cookieStoreId);
|
||||
browser.tabs.remove(tabId.id);
|
||||
browser.tabs.move(tab.id, { index: 1 });
|
||||
browser.tabs.move(tab.id, { index: 0 });
|
||||
}
|
||||
for (index = 0; index < tabs.length; index++) {
|
||||
if (index != tabs.length - 1)
|
||||
@@ -295,7 +300,7 @@ var contextSetup = function(requestDetails) {
|
||||
console.log('in favor of', tab.id);
|
||||
console.log('with context', tab.cookieStoreId);
|
||||
browser.tabs.remove(tabId.id);
|
||||
browser.tabs.move(tab.id, { index: 2 });
|
||||
browser.tabs.move(tab.id, { index: 0 });
|
||||
}
|
||||
for (index = 0; index < tabs.length; index++) {
|
||||
if (index != tabs.length - 1)
|
||||
@@ -343,7 +348,7 @@ var contextSetup = function(requestDetails) {
|
||||
console.log('in favor of', tab.id);
|
||||
console.log('with context', tab.cookieStoreId);
|
||||
browser.tabs.remove(tabId.id);
|
||||
browser.tabs.move(tab.id, { index: 4 });
|
||||
browser.tabs.move(tab.id, { index: 0 });
|
||||
}
|
||||
for (index = 0; index < tabs.length; index++) {
|
||||
if (index != tabs.length - 1)
|
||||
@@ -376,6 +381,53 @@ var contextSetup = function(requestDetails) {
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var i2pboteTabFind = async function(tabId) {
|
||||
try {
|
||||
var context = await browser.contextualIdentities.query({
|
||||
name: botepref,
|
||||
});
|
||||
if (tabId.cookieStoreId != context[0].cookieStoreId) {
|
||||
function Create() {
|
||||
function onCreated(tab) {
|
||||
function closeOldTab(tabs) {
|
||||
if (tabId.id != tab.id) {
|
||||
console.log('(isolate) Closing un-isolated tab', tabId.id);
|
||||
console.log('in favor of', tab.id);
|
||||
console.log('with context', tab.cookieStoreId);
|
||||
browser.tabs.remove(tabId.id);
|
||||
browser.tabs.move(tab.id, { index: 0 });
|
||||
}
|
||||
for (index = 0; index < tabs.length; index++) {
|
||||
if (index != tabs.length - 1)
|
||||
browser.tabs.remove(tabs[index].id);
|
||||
}
|
||||
}
|
||||
var pins = browser.tabs.query({
|
||||
cookieStoreId: context[0].cookieStoreId,
|
||||
});
|
||||
pins.then(closeOldTab, onError);
|
||||
}
|
||||
if (requestDetails.url.endsWith('xhr1.html')) {
|
||||
hostname = url.split('/')[2];
|
||||
let prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
requestDetails.url = prefix + hostname + '/i2pbote/';
|
||||
}
|
||||
var created = browser.tabs.create({
|
||||
active: true,
|
||||
pinned: true,
|
||||
cookieStoreId: context[0].cookieStoreId,
|
||||
url: requestDetails.url,
|
||||
});
|
||||
created.then(onCreated, onContextError);
|
||||
}
|
||||
var gettab = browser.tabs.get(tabId.id);
|
||||
gettab.then(Create, onContextError);
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var mailTabFind = async function(tabId) {
|
||||
try {
|
||||
var context = await browser.contextualIdentities.query({
|
||||
@@ -390,7 +442,7 @@ var contextSetup = function(requestDetails) {
|
||||
console.log('in favor of', tab.id);
|
||||
console.log('with context', tab.cookieStoreId);
|
||||
browser.tabs.remove(tabId.id);
|
||||
browser.tabs.move(tab.id, { index: 3 });
|
||||
browser.tabs.move(tab.id, { index: 0 });
|
||||
}
|
||||
for (index = 0; index < tabs.length; index++) {
|
||||
if (index != tabs.length - 1)
|
||||
@@ -438,6 +490,7 @@ var contextSetup = function(requestDetails) {
|
||||
console.log('in favor of', tab.id);
|
||||
console.log('with context', tab.cookieStoreId);
|
||||
browser.tabs.remove(tabId.id);
|
||||
browser.tabs.move(tab.id, { index: 0 });
|
||||
}
|
||||
for (index = 0; index < tabs.length; index++) {
|
||||
if (index != tabs.length - 1)
|
||||
@@ -565,6 +618,14 @@ var contextSetup = function(requestDetails) {
|
||||
if (requestDetails.tabId > 0) {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
if (i2pHost(requestDetails.url)) {
|
||||
var thn = i2pHostName(requestDetails.url);
|
||||
if (requestDetails.url.includes('=' + thn)) {
|
||||
console.log('(scrub)checking search hostnames =' + thn);
|
||||
var tpt = requestDetails.url.split('=' + thn, 2);
|
||||
requestDetails.url =
|
||||
'http://' + thn + '/' + tpt[1].replace('%2F', '');
|
||||
}
|
||||
console.log('(scrub) new hostname', requestDetails.url);
|
||||
var setcookie = browser.cookies.set({
|
||||
firstPartyDomain: i2pHostName(requestDetails.url),
|
||||
url: requestDetails.url,
|
||||
@@ -592,6 +653,9 @@ var contextSetup = function(requestDetails) {
|
||||
} else if (routerhost === 'muwire') {
|
||||
var routertab = tab.then(muwireTabFind, onContextError);
|
||||
return requestDetails;
|
||||
} else if (routerhost === 'i2pbote') {
|
||||
var routertab = tab.then(i2pboteTabFind, onContextError);
|
||||
return requestDetails;
|
||||
} else if (routerhost === 'routerconsole') {
|
||||
var routertab = tab.then(routerTabFind, onContextError);
|
||||
return requestDetails;
|
||||
@@ -763,61 +827,88 @@ var coolheadersSetup = function(e) {
|
||||
return asyncSetPageAction;
|
||||
};
|
||||
|
||||
function getClearTab(tobj) {
|
||||
function getTabURL(tab) {
|
||||
if (tab.url.startsWith("https")) {
|
||||
browser.tabs
|
||||
.sendMessage(tab.id, { req: "i2p-location" })
|
||||
.then((response) => {
|
||||
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
|
||||
browser.pageAction.setPopup({
|
||||
tabId: tab.id,
|
||||
popup: "location.html",
|
||||
});
|
||||
browser.pageAction.setIcon({
|
||||
path: "icons/i2plogo.png",
|
||||
tabId: tab.id,
|
||||
});
|
||||
browser.pageAction.setTitle({
|
||||
tabId: tab.id,
|
||||
title: response.content,
|
||||
});
|
||||
browser.pageAction.show(tab.id);
|
||||
}
|
||||
});
|
||||
console.log("(pageaction)", tab.id, tab.url);
|
||||
} else {
|
||||
browser.tabs
|
||||
.sendMessage(tab.id, { req: "i2p-torrentlocation" })
|
||||
.then((response) => {
|
||||
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
|
||||
browser.pageAction.setPopup({
|
||||
tabId: tab.id,
|
||||
popup: "torrent.html",
|
||||
});
|
||||
browser.pageAction.setIcon({
|
||||
path: "icons/i2plogo.png",
|
||||
tabId: tab.id,
|
||||
});
|
||||
browser.pageAction.setTitle({
|
||||
tabId: tab.id,
|
||||
title: response.content,
|
||||
});
|
||||
browser.pageAction.show(tab.id);
|
||||
}
|
||||
});
|
||||
console.log("(pageaction)", tab.id, tab.url);
|
||||
}
|
||||
}
|
||||
if (typeof tobj == "number") {
|
||||
browser.tabs.get(tobj).then(getTabURL, onError);
|
||||
function getTabURL(tab) {
|
||||
console.log("(scrub)", tab);
|
||||
if (tab.url.startsWith("https")) {
|
||||
browser.tabs
|
||||
.sendMessage(tab.id, { req: "i2p-location" })
|
||||
.then((response) => {
|
||||
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
|
||||
browser.pageAction.setPopup({
|
||||
tabId: tab.id,
|
||||
popup: "location.html",
|
||||
});
|
||||
browser.pageAction.setIcon({
|
||||
path: "icons/i2plogo.png",
|
||||
tabId: tab.id,
|
||||
});
|
||||
browser.pageAction.setTitle({
|
||||
tabId: tab.id,
|
||||
title: response.content,
|
||||
});
|
||||
browser.pageAction.show(tab.id);
|
||||
}
|
||||
});
|
||||
console.log("(pageaction)", tab.id, tab.url);
|
||||
} else {
|
||||
browser.tabs.get(tobj.tabId).then(getTabURL, onError);
|
||||
browser.tabs
|
||||
.sendMessage(tab.id, { req: "i2p-torrentlocation" })
|
||||
.then((response) => {
|
||||
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
|
||||
browser.pageAction.setPopup({
|
||||
tabId: tab.id,
|
||||
popup: "torrent.html",
|
||||
});
|
||||
browser.pageAction.setIcon({
|
||||
path: "icons/i2plogo.png",
|
||||
tabId: tab.id,
|
||||
});
|
||||
browser.pageAction.setTitle({
|
||||
tabId: tab.id,
|
||||
title: response.content,
|
||||
});
|
||||
browser.pageAction.show(tab.id);
|
||||
}
|
||||
});
|
||||
console.log("(pageaction)", tab.id, tab.url);
|
||||
}
|
||||
}
|
||||
|
||||
function getClearTab(tobj) {
|
||||
if (typeof tobj == "number") {
|
||||
browser.tabs.get(tobj).then(getTabURL, onError);
|
||||
}
|
||||
if (typeof tobj.tabId == "number") {
|
||||
console.log("(scrub) tobj", tobj);
|
||||
browser.tabs.get(tobj.tabId).then(getTabURL, onError);
|
||||
} else {
|
||||
for (let tab in tobj.tabIds) {
|
||||
console.log("(scrub) tab", tobj, tab, tobj.tabIds[tab]);
|
||||
browser.tabs.get(tobj.tabIds[tab]).then(getTabURL, onError);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const filter = {
|
||||
url: [{ hostContains: ".i2p" }],
|
||||
};
|
||||
|
||||
function logOnDOMContentLoaded(details) {
|
||||
console.log(`onDOMContentLoaded: ${details.url}`);
|
||||
}
|
||||
|
||||
browser.webNavigation.onDOMContentLoaded.addListener(getClearTab, filter);
|
||||
|
||||
browser.tabs.onActivated.addListener(getClearTab);
|
||||
browser.tabs.onUpdated.addListener(getClearTab);
|
||||
browser.tabs.onAttached.addListener(getClearTab);
|
||||
browser.tabs.onCreated.addListener(getClearTab);
|
||||
browser.tabs.onDetached.addListener(getClearTab);
|
||||
browser.tabs.onHighlighted.addListener(getClearTab);
|
||||
browser.tabs.onMoved.addListener(getClearTab);
|
||||
browser.tabs.onRemoved.addListener(getClearTab);
|
||||
browser.tabs.onReplaced.addListener(getClearTab);
|
||||
browser.tabs.onZoomChange.addListener(getClearTab);
|
||||
|
||||
function reloadTabs(tabs) {
|
||||
for (let tab of tabs) {
|
||||
@@ -837,9 +928,11 @@ querying.then(reloadTabs, onError);
|
||||
browser.webRequest.onHeadersReceived.addListener(
|
||||
coolheadersSetup,
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking", "responseHeaders"]
|
||||
["responseHeaders"]
|
||||
);
|
||||
|
||||
//browser.webNavigation.onDOMContentLoaded.addListener(getClearTab)
|
||||
|
||||
browser.webRequest.onBeforeRequest.addListener(
|
||||
contextSetup,
|
||||
{ urls: ["<all_urls>"] },
|
||||
|
||||
Reference in New Issue
Block a user