22 Commits

Author SHA1 Message Date
idk
83b5dcc4b4 fix Open WebUI button on torrent menu 2021-12-02 20:45:42 -05:00
idk
73f2883fbd address erroneous text issue #113 2021-12-02 19:50:33 -05:00
idk
4d317eac4c Bump and resubmit again 2021-11-03 00:22:37 -04:00
idk
4755637206 fmt and resubmit 2021-10-30 10:12:24 -04:00
idk
b84d8945aa fmt and resubmit 2021-10-30 10:08:09 -04:00
idk
7e1428310b Try and cut a release with the new information from Mozilla. Add details about min Firefox version to readme 2021-10-13 21:29:25 -04:00
idk
7cc6dbfdf0 Try and cut a release with the new information from Mozilla. Add details about min Firefox version to readme 2021-10-13 21:27:02 -04:00
idk
e95d67db4b Try and cut a release with the new information from Mozilla. Add details about min Firefox version to readme 2021-10-13 21:25:54 -04:00
idk
a261f7875a bump changelog 2021-10-13 20:48:07 -04:00
idk
78141f2839 Try and cut a release with the new information from Mozilla. Add details about min Firefox version to readme 2021-10-13 20:46:17 -04:00
idk
75d23a752c make fmt 2021-10-13 20:43:39 -04:00
idk
03cc374c54 Bump strict_min_version to 91.1.0 so that I can release again, see https://discourse.mozilla.org/t/can-anyone-release-extensions-right-now-to-me-it-looks-like-addons-mozilla-org-is-critically-broken/84830/25 for the rising action of what appears to be at least a year of absurdity 2021-10-13 20:38:23 -04:00
idk
89f8496bb8 switch to legwork and release another version. 2021-10-04 20:41:20 -04:00
idk
15489b7f10 Bump version, update changelog 2021-10-01 15:48:07 -04:00
idk
3a67d00741 Fix tab.id check in http-equiv section 2021-10-01 15:07:33 -04:00
idk
d5a0edfd68 Add workaround to makefile 2021-10-01 14:33:11 -04:00
idk
1853292b99 browser.theme.reset does not work without a window.id, contrary to the Mozilla documentation. Themes just won't work on Android I think... 2021-10-01 14:30:41 -04:00
idk
f575f95ee2 make prettier 2021-10-01 14:16:15 -04:00
idk
97146391e8 Reverse application priority of header checks and http-equiv checks 2021-10-01 14:14:56 -04:00
idk
31af292a47 Prevent creation of multiple pinned tabs for a single application 2021-10-01 12:15:28 -04:00
idk
ac548b58b0 Merge branch 'android-compat' into 'master'
Make changes to allow upstream to manage android containers as well, but do...

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!25
2021-09-30 22:03:40 +00:00
idk
aa6a9a0da8 Make changes to allow upstream to manage android containers as well, but do not change manifest.json because we need all the entries for desktop firefox. 2021-09-30 18:00:30 -04:00
31 changed files with 1636 additions and 1555 deletions

View File

@ -37,11 +37,11 @@ clean: rc clean-artifacts
## EVEN RELEASES are AMO RELEASES
## ODD RELEASES are SELFHOSTED RELEASES
MOZ_VERSION=0.114
VERSION=0.113
MOZ_VERSION=0.126
VERSION=0.125
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
LAST_VERSION=0.111.1
LAST_VERSION=0.123
YELLOW=F7E59A
ORANGE=FFC56D
@ -147,7 +147,10 @@ recreate-release: delete-release release upload
upload: upload-xpi upload-deb
full-release: release submit upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
moz-release: release moz-submit
#upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
full-sign: moz-sign upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
WEB_EXT_API_KEY=AMO_KEY
WEB_EXT_API_SECRET=AMO_SECRET
@ -182,7 +185,7 @@ moz-submit: moz-version
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
mv manifest.json .manifest.json
grep -v update_url .manifest.json > manifest.json
$(HOME)/web-ext/bin/web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 --verbose #--api-url-prefix http://localhost:3000/api/v4
$(HOME)/web-ext/bin/web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 --verbose; true #--api-url-prefix http://localhost:3000/api/v4
sleep 5
mv .manifest.json manifest.json
@ -284,6 +287,8 @@ fmt-js:
fixjsstyle torrent/*.js
fixjsstyle i2pcontrol/*.js
fixjsstyle manifest.json
#work around fixjsstyle issue
sed -i 's|= >|=>|g' *.js */*.js
#find . -path ./node_modules -prune -o -name '*.json' -exec fixjsstyle --write {} \;
fmt-prettier:

View File

@ -2,13 +2,14 @@ I2P in Private Browsing Mode(Firefox-Only)
==========================================
This is an webextension which introduces a set of new "Private Browsing" modes
to Firefox-based browsers(Supporting webextensions) that makes it easier to
configure a browser to use I2P securely and adds features for making I2P
applications easier to use. It does this by isolating I2P-specific settings to
Contextual Identities within Firefox, then loading them automatically when the
user requests them. It also adds convenience and management features, like an
embedded I2P console and Bittorrent integration with clients using the
transmission-rpc API.
to Firefox-based browsers(Supporting webextensions, must be current ESR or
greater) that makes it easier to configure a browser to use I2P securely and
adds features for making I2P applications easier to use. It does this by
isolating I2P-specific settings to Contextual Identities within Firefox, then
loading them automatically when the user requests them. It also adds convenience
and management features, like an embedded I2P console and Bittorrent integration
with clients using the transmission-rpc API and via in-browser protocol handling
integrations.
Privacy Policy
--------------

View File

@ -1,26 +1,26 @@
var titlepref = chrome.i18n.getMessage('titlePreface');
var titleprefpriv = chrome.i18n.getMessage('titlePrefacePrivate');
var webpref = chrome.i18n.getMessage('webPreface');
var webprefpriv = chrome.i18n.getMessage('webPrefacePrivate');
var routerpref = chrome.i18n.getMessage('routerPreface');
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
var mailpref = chrome.i18n.getMessage('mailPreface');
var mailprefpriv = chrome.i18n.getMessage('mailPrefacePrivate');
var torrentpref = chrome.i18n.getMessage('torrentPreface');
var torrentprefpriv = chrome.i18n.getMessage('torrentPrefacePrivate');
var tunnelpref = chrome.i18n.getMessage('i2ptunnelPreface');
var tunnelprefpriv = chrome.i18n.getMessage('i2ptunnelPrefacePrivate');
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 muwireprefpriv = chrome.i18n.getMessage('muwirePrefacePrivate');
var botepref = chrome.i18n.getMessage('botePreface');
var blogpref = chrome.i18n.getMessage('blogPreface');
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
var titlepref = chrome.i18n.getMessage("titlePreface");
var titleprefpriv = chrome.i18n.getMessage("titlePrefacePrivate");
var webpref = chrome.i18n.getMessage("webPreface");
var webprefpriv = chrome.i18n.getMessage("webPrefacePrivate");
var routerpref = chrome.i18n.getMessage("routerPreface");
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
var mailpref = chrome.i18n.getMessage("mailPreface");
var mailprefpriv = chrome.i18n.getMessage("mailPrefacePrivate");
var torrentpref = chrome.i18n.getMessage("torrentPreface");
var torrentprefpriv = chrome.i18n.getMessage("torrentPrefacePrivate");
var tunnelpref = chrome.i18n.getMessage("i2ptunnelPreface");
var tunnelprefpriv = chrome.i18n.getMessage("i2ptunnelPrefacePrivate");
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 muwireprefpriv = chrome.i18n.getMessage("muwirePrefacePrivate");
var botepref = chrome.i18n.getMessage("botePreface");
var blogpref = chrome.i18n.getMessage("blogPreface");
var blogprefpriv = chrome.i18n.getMessage("blogPrefacePrivate");
function onError(err) {
console.log('(background)', err);
console.log("(background)", err);
}
function onContextGotLog(contexts) {
@ -35,13 +35,13 @@ function onContextsGot(contexts) {
console.log(`Name : ${context.name}`);
ids.push(context.name);
}
console.log('Checking new contexts');
console.log("Checking new contexts");
if (ids.indexOf(titlepref) == -1) {
browser.contextualIdentities
.create({
name: titlepref,
color: 'orange',
icon: 'fingerprint'
color: "orange",
icon: "fingerprint",
})
.then(onCreated, onNotCreated);
}
@ -49,8 +49,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: blogpref,
color: 'pink',
icon: 'pet'
color: "pink",
icon: "pet",
})
.then(onCreated, onNotCreated);
}
@ -58,8 +58,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: webpref,
color: 'red',
icon: 'circle'
color: "red",
icon: "circle",
})
.then(onCreated, onNotCreated);
}
@ -67,8 +67,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: routerpref,
color: 'blue',
icon: 'briefcase'
color: "blue",
icon: "briefcase",
})
.then(onCreated, onNotCreated);
}
@ -76,8 +76,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: tunnelpref,
color: 'green',
icon: 'tree'
color: "green",
icon: "tree",
})
.then(onCreated, onNotCreated);
}
@ -85,8 +85,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: mailpref,
color: 'yellow',
icon: 'briefcase'
color: "yellow",
icon: "briefcase",
})
.then(onCreated, onNotCreated);
}
@ -94,8 +94,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: torrentpref,
color: 'purple',
icon: 'chill'
color: "purple",
icon: "chill",
})
.then(onCreated, onNotCreated);
}
@ -103,8 +103,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: ircpref,
color: 'red',
icon: 'vacation'
color: "red",
icon: "vacation",
})
.then(onCreated, onNotCreated);
}
@ -112,8 +112,8 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: muwirepref,
color: 'turquoise',
icon: 'gift'
color: "turquoise",
icon: "gift",
})
.then(onCreated, onNotCreated);
}
@ -121,30 +121,30 @@ function onContextsGot(contexts) {
browser.contextualIdentities
.create({
name: botepref,
color: 'blue',
icon: 'fence'
color: "blue",
icon: "fence",
})
.then(onCreated, onNotCreated);
}
}
function onContextsError() {
console.log('Error finding contextual identities, is the API enabled?');
console.log("Error finding contextual identities, is the API enabled?");
}
function onCreated(context) {
console.log(' ID:', context.cookieStoreId, 'created.');
console.log(" ID:", context.cookieStoreId, "created.");
}
function onNotCreated(context) {
console.log('ID:', context.cookieStoreId, 'not created.');
console.log("ID:", context.cookieStoreId, "not created.");
}
browser.contextualIdentities.query({}).then(onContextsGot, onContextsError);
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os != 'android') {
if (got.os != "android") {
browser.windows.onCreated.addListener(themeWindow);
browser.windows.onFocusChanged.addListener(themeWindow);
browser.windows.onRemoved.addListener(themeWindow);
@ -157,7 +157,7 @@ function themeWindowByTab(tabId) {
function tabWindow(tab) {
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
gettingPlatformInfo.then((got) => {
if (got.os == 'android') {
if (got.os == "android") {
let getwindow = browser.tabs.get(tab.tabId);
getwindow.then(themeWindow);
} else {
@ -166,7 +166,7 @@ function themeWindowByTab(tabId) {
}
});
}
if (typeof tabId === 'number') {
if (typeof tabId === "number") {
let tab = browser.tabs.get(tabId);
tab.then(tabWindow);
} else {
@ -188,23 +188,23 @@ function isEmpty(obj) {
let btheme = {
colors: {
frame: '#363A68',
toolbar: '#363A68'
}
frame: "#363A68",
toolbar: "#363A68",
},
};
let dtheme = {
colors: {
frame: '#4456B7',
toolbar: '#4456B7'
}
frame: "#4456B7",
toolbar: "#4456B7",
},
};
function themeWindow(window) {
// Check if the window is in private browsing
function onThemeError() {
console.log('(theme) color set error');
browser.theme.reset();
console.log("(theme) color set error");
browserTheme();
}
function dynamicTheme() {
@ -216,7 +216,7 @@ function themeWindow(window) {
}
function browserTheme() {
console.log('(theme)Active in I2P window');
console.log("(theme)Active in I2P window");
if (window.incognito) {
browser.theme.update(window.id, btheme);
} else {
@ -225,7 +225,8 @@ function themeWindow(window) {
}
function unsetTheme() {
browser.theme.reset();
console.log("(theme)Resetting theme window");
browser.theme.reset(window.id);
}
function logTabs(tabInfo) {
function onContextGotTheme(context) {
@ -233,50 +234,50 @@ function themeWindow(window) {
browserTheme();
browser.pageAction.show(tabInfo[0].id);
} else if (context.name == routerpref) {
console.log('(theme) Active in Router Console window');
console.log("(theme) Active in Router Console window");
dynamicTheme();
} else if (context.name == tunnelpref) {
console.log('(theme) Active in Hidden Services Manager window');
console.log("(theme) Active in Hidden Services Manager window");
dynamicTheme();
} else if (context.name == mailpref) {
console.log('(theme) Active in Web Mail window');
console.log("(theme) Active in Web Mail window");
dynamicTheme();
} else if (context.name == torrentpref) {
console.log('(theme) Active in Bittorrent window');
console.log("(theme) Active in Bittorrent window");
dynamicTheme();
} else if (context.name == botepref) {
console.log('(theme) Active in Bote window');
console.log("(theme) Active in Bote window");
dynamicTheme();
} else if (context.name == ircpref) {
console.log('(theme) Active in IRC window');
console.log("(theme) Active in IRC window");
dynamicTheme();
} else if (context.name == blogpref) {
console.log('(theme) (theme) Active in Blog window');
console.log("(theme) (theme) Active in Blog window");
dynamicTheme();
} else if (context.name == muwirepref) {
console.log('(theme) Active in MuWire window');
console.log("(theme) Active in MuWire window");
dynamicTheme();
} else {
console.log('(theme) Not active in MuWire window');
browser.theme.reset();
console.log("(theme) Not active in I2P Window");
unsetTheme();
}
}
if (
tabInfo[0].cookieStoreId != 'firefox-default' &&
tabInfo[0].cookieStoreId != 'firefox-private'
tabInfo[0].cookieStoreId != "firefox-default" &&
tabInfo[0].cookieStoreId != "firefox-private"
) {
browser.contextualIdentities
.get(tabInfo[0].cookieStoreId)
.then(onContextGotTheme, onThemeError);
} else {
console.log('(theme) Not active in I2P window');
browser.theme.reset();
console.log("(theme) Not active in I2P window");
unsetTheme();
}
}
var querying = browser.tabs.query({
currentWindow: true,
active: true
active: true,
});
querying.then(logTabs, onThemeError);
}
@ -284,72 +285,72 @@ function themeWindow(window) {
function setTitle(window) {
// Check if the window is in private browsing
function onContextError() {
console.log('Context Error');
console.log("Context Error");
}
function setTitle(title, privtitle) {
if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: privtitle + ': '
titlePreface: privtitle + ": ",
});
} else {
browser.windows.update(window.id, {
titlePreface: title + ': '
titlePreface: title + ": ",
});
}
}
function logTabs(tabInfo) {
function onContextGotTitle(context) {
if (context.name == titlepref) {
console.log('Active in I2P window');
console.log("Active in I2P window");
setTitle(titlepref, titleprefpriv);
} else if (context.name == muwirepref) {
console.log('Active in MuWire window');
console.log("Active in MuWire window");
setTitle(muwirepref, muwireprefpriv);
} else if (context.name == routerpref) {
console.log('Active in Router Console window');
console.log("Active in Router Console window");
setTitle(routerpref, routerprefpriv);
} else if (context.name == botepref) {
console.log('Active in Bote window');
console.log("Active in Bote window");
setTitle(botepref, boteprefpriv);
} else if (context.name == tunnelpref) {
console.log('Active in Hidden Services Manager window');
console.log("Active in Hidden Services Manager window");
setTitle(tunnelpref, tunnelprefpriv);
} else if (context.name == mailpref) {
console.log('Active in I2P Web Mail window');
console.log("Active in I2P Web Mail window");
setTitle(mailpref, mailprefpriv);
} else if (context.name == blogpref) {
console.log('Active in I2P Blog window');
console.log("Active in I2P Blog window");
setTitle(blogpref, blogprefpriv);
} else if (context.name == torrentpref) {
console.log('Active in I2P Torrent window');
console.log("Active in I2P Torrent window");
setTitle(torrentpref, torrentprefpriv);
} else if (context.name == ircpref) {
console.log('Active in IRC window');
console.log("Active in IRC window");
setTitle(ircpref, ircprefpriv);
}
}
if (
tabInfo[0].cookieStoreId != 'firefox-default' &&
tabInfo[0].cookieStoreId != 'firefox-private'
tabInfo[0].cookieStoreId != "firefox-default" &&
tabInfo[0].cookieStoreId != "firefox-private"
) {
browser.contextualIdentities
.get(tabInfo[0].cookieStoreId)
.then(onContextGotTitle, onContextError);
} else if (window.incognito) {
browser.windows.update(window.id, {
titlePreface: ''
titlePreface: "",
});
} else {
browser.windows.update(window.id, {
titlePreface: ''
titlePreface: "",
});
}
}
var querying = browser.tabs.query({
currentWindow: true,
active: true
active: true,
});
querying.then(logTabs, onContextError);
}
@ -357,18 +358,18 @@ function setTitle(window) {
var gettingListenerInfo = browser.runtime.getPlatformInfo();
gettingListenerInfo.then((got) => {
function onPlatformError() {
console.log('Error finding platform info');
console.log("Error finding platform info");
}
if (got.os != 'android') {
if (got.os != "android") {
browser.tabs.onCreated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true
populate: true,
});
getting.then(setTitle, onPlatformError);
});
browser.tabs.onActivated.addListener(() => {
var getting = browser.windows.getCurrent({
populate: true
populate: true,
});
getting.then(setTitle, onPlatformError);
});
@ -447,7 +448,7 @@ function onOpenedWindowCheck() {
for (let context in ctx) {
function conditionallyDelete(tabs) {
if (tabs.length == 0 && context != 0) {
console.log(context)
console.log(context);
browser.contextualIdentities.remove(context.cookieStoreId);
}
}
@ -462,8 +463,8 @@ onOpenedWindowCheck();
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
if (browser.windows != undefined){
console.log("windows unavailable on android", browser.runtime.PlatformOs)
if (browser.windows != undefined) {
console.log("windows unavailable on android", browser.runtime.PlatformOs);
browser.windows.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onCreated.addListener(onOpenedWindowCheck);
}

View File

@ -1,30 +1,30 @@
function bookmarksSetup() {
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os != 'android') {
if (got.os != "android") {
function bookmarks(bookmarkToolbar) {
console.log('(bookmarks)', bookmarkToolbar);
console.log('Setting up bookmark toolbar', bookmarkToolbar);
console.log("(bookmarks)", bookmarkToolbar);
console.log("Setting up bookmark toolbar", bookmarkToolbar);
function bookHome(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let port = info.value.http.split(":")[1];
if (port == "7644") {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'about:I2p',
title: 'I2P Extension Home Page',
parentId: bookmarkToolbar[0].id
url: "about:I2p",
title: "I2P Extension Home Page",
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
} else {
let createBookmark = browser.bookmarks.create({
url: browser.runtime.getURL('home.html'),
title: 'I2P Extension Home Page',
parentId: bookmarkToolbar[0].id
url: browser.runtime.getURL("home.html"),
title: "I2P Extension Home Page",
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
}
console.log('(bookmarks) adding home page bookmark');
console.log("(bookmarks) adding home page bookmark");
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
@ -36,20 +36,20 @@ function bookmarksSetup() {
function bookTorrent(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let port = info.value.http.split(":")[1];
if (port == "7644") {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/i2psnark',
title: 'Bittorrent',
parentId: bookmarkToolbar[0].id
url: "http://localhost:7657/i2psnark",
title: "Bittorrent",
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' + control_host + ':' + control_port + '/i2psnark',
title: 'Bittorrent',
parentId: bookmarkToolbar[0].id
"http://" + control_host + ":" + control_port + "/i2psnark",
title: "Bittorrent",
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
@ -64,19 +64,19 @@ function bookmarksSetup() {
function bookConsole(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let port = info.value.http.split(":")[1];
if (port == "7644") {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/home',
title: 'I2P Console',
parentId: bookmarkToolbar[0].id
url: "http://localhost:7657/home",
title: "I2P Console",
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url: 'http://' + control_host + ':' + control_port + '/home',
title: 'I2P Console',
parentId: bookmarkToolbar[0].id
url: "http://" + control_host + ":" + control_port + "/home",
title: "I2P Console",
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
@ -91,24 +91,24 @@ function bookmarksSetup() {
function bookMail(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let port = info.value.http.split(":")[1];
if (port == "7644") {
let createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/webmail',
title: 'Web Mail',
parentId: bookmarkToolbar[0].id
url: "http://localhost:7657/webmail",
title: "Web Mail",
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
let createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' + control_host + ':' + control_port + '/webmail',
title: 'Web Mail',
parentId: bookmarkToolbar[0].id
"http://" + control_host + ":" + control_port + "/webmail",
title: "Web Mail",
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
console.log('(bookmarks) adding webmail bookmark');
console.log("(bookmarks) adding webmail bookmark");
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
@ -120,28 +120,28 @@ function bookmarksSetup() {
function bookI2PTunnel(bookmarkItems) {
if (!bookmarkItems.length) {
function gotProxyInfo(info) {
let port = info.value.http.split(':')[1];
if (port == '7644') {
let port = info.value.http.split(":")[1];
if (port == "7644") {
var createBookmark = browser.bookmarks.create({
url: 'http://localhost:7657/i2ptunnel',
title: 'Hidden Services Manager',
parentId: bookmarkToolbar[0].id
url: "http://localhost:7657/i2ptunnel",
title: "Hidden Services Manager",
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onCreated);
} else {
var createRhizomeBookmark = browser.bookmarks.create({
url:
'http://' +
"http://" +
control_host +
':' +
":" +
control_port +
'/i2ptunnel',
title: 'Hidden Services Manager',
parentId: bookmarkToolbar[0].id
"/i2ptunnel",
title: "Hidden Services Manager",
parentId: bookmarkToolbar[0].id,
});
createRhizomeBookmark.then(onCreated);
}
console.log('(bookmarks) adding i2ptunnel bookmark');
console.log("(bookmarks) adding i2ptunnel bookmark");
}
console.log(
"(bookmarks) checking if we're running in an I2P Browser"
@ -155,54 +155,54 @@ function bookmarksSetup() {
console.log(`An error : ${error}`);
}
function onCreated(node) {
console.log('Bookmarked', node);
console.log("Bookmarked", node);
}
var b0 = browser.bookmarks.search({
title: 'I2P Extension Home Page'
title: "I2P Extension Home Page",
});
b0.then(bookHome, onRejected);
var b1 = browser.bookmarks.search({
title: 'Bittorrent'
title: "Bittorrent",
});
b1.then(bookTorrent, onRejected);
var b2 = browser.bookmarks.search({
title: 'Hidden Services Manager'
title: "Hidden Services Manager",
});
b2.then(bookI2PTunnel, onRejected);
var b3 = browser.bookmarks.search({
title: 'Web Mail'
title: "Web Mail",
});
b3.then(bookMail, onRejected);
var b4 = browser.bookmarks.search({
title: 'I2P Console'
title: "I2P Console",
});
b4.then(bookConsole, onRejected);
defaultSettings['bookmarks_state'] = true;
defaultSettings["bookmarks_state"] = true;
}
var bt = browser.bookmarks.search({
query: 'Toolbar'
query: "Toolbar",
});
function toolDir(bookmarkToolbar) {
let defaultSettings = {};
chrome.storage.local.set(defaultSettings);
console.log('(bookmarks) created');
var ibbt = browser.bookmarks.search('I2P Toolbar');
console.log("(bookmarks) created");
var ibbt = browser.bookmarks.search("I2P Toolbar");
function setupDir(ibbt) {
function onToolbarCreated(node) {
var ibt = browser.bookmarks.search('I2P Toolbar');
var ibt = browser.bookmarks.search("I2P Toolbar");
ibt.then(bookmarks);
}
if (ibbt[0] == null) {
let createBookmark = browser.bookmarks.create({
title: 'I2P Toolbar',
parentId: bookmarkToolbar[0].id
title: "I2P Toolbar",
parentId: bookmarkToolbar[0].id,
});
createBookmark.then(onToolbarCreated);
}
@ -225,7 +225,7 @@ function bookmarksSetup() {
}
function conditionalBookmarksSetup(obj) {
console.log('(bookmarks) state', obj.bookmarks_state);
console.log("(bookmarks) state", obj.bookmarks_state);
if (obj.bookmarks_state == false) {
bookmarksSetup();
}
@ -236,12 +236,12 @@ function conditionalBookmarksSetup(obj) {
if (browser != null) {
if (browser.windows != undefined) {
let gettingStorage = browser.storage.local.get('bookmarks_state');
let gettingStorage = browser.storage.local.get("bookmarks_state");
gettingStorage.then(conditionalBookmarksSetup, bookmarksSetup);
}
}
const bookmarksButton = document.getElementById('bookmarksButton');
const bookmarksButton = document.getElementById("bookmarksButton");
if (bookmarksButton != null) {
bookmarksButton.addEventListener('click', bookmarksSetup);
bookmarksButton.addEventListener("click", bookmarksSetup);
}

28
cert.js
View File

@ -1,42 +1,42 @@
function blankContent(id) {
let infoTitle = document.getElementById(id);
if (infoTitle === null) {
console.log('content error', id);
console.log("content error", id);
return;
}
infoTitle.textContent = '';
infoTitle.textContent = "";
}
function contentUpdateById(id, message) {
let infoTitle = document.getElementById(id);
let messageContent = chrome.i18n.getMessage(message);
if (infoTitle === null) {
console.log('content error', id, messageContent);
console.log("content error", id, messageContent);
return;
}
infoTitle.textContent = messageContent;
}
contentUpdateById('TypeLabel', 'siteLabel');
contentUpdateById("TypeLabel", "siteLabel");
contentUpdateById('CertLabel', 'certLabel');
contentUpdateById("CertLabel", "certLabel");
function tabCheck(tabInfo) {
// Information Section
console.log('(cert) checking tab');
var host = tabInfo[0].url.split('.i2p')[0] + '.i2p';
console.log("(cert) checking tab");
var host = tabInfo[0].url.split(".i2p")[0] + ".i2p";
if (host.length < 51) {
contentUpdateById('AddressInfo', 'isHostName');
contentUpdateById("AddressInfo", "isHostName");
} else {
if (host.endsWith('b32.i2p')) {
contentUpdateById('AddressInfo', 'isBase32');
if (host.endsWith("b32.i2p")) {
contentUpdateById("AddressInfo", "isBase32");
}
}
if (host.startsWith('https')) {
contentUpdateById('AddressCertInfo', 'certPresent');
console.log('(cert) initiating request to check server cert');
if (host.startsWith("https")) {
contentUpdateById("AddressCertInfo", "certPresent");
console.log("(cert) initiating request to check server cert");
fetch(host).then((response) => {
console.log('Updating cert information', response);
console.log("Updating cert information", response);
});
} else {
contentUpdateById("AddressCertInfo", "certAbsent");

View File

@ -1,18 +1,18 @@
var proxy_scheme = 'HTTP';
var proxy_host = '127.0.0.1';
var proxy_port = '4444';
var proxy_scheme = "HTTP";
var proxy_host = "127.0.0.1";
var proxy_port = "4444";
var control_host = '127.0.0.1';
var control_port = '7657';
var control_host = "127.0.0.1";
var control_port = "7657";
var rpc_host = '127.0.0.1';
var rpc_port = '7657';
var rpc_path = 'jsonrpc';
var rpc_pass = 'itoopie';
var rpc_host = "127.0.0.1";
var rpc_port = "7657";
var rpc_path = "jsonrpc";
var rpc_pass = "itoopie";
var bt_rpc_host = '127.0.0.1';
var bt_rpc_port = '7657';
var bt_rpc_path = 'transmission/rpc';
var bt_rpc_pass = 'transmission';
var bt_rpc_host = "127.0.0.1";
var bt_rpc_port = "7657";
var bt_rpc_path = "transmission/rpc";
var bt_rpc_pass = "transmission";
var disable_history = false;

View File

@ -2,55 +2,60 @@ function contentUpdateById(id, message) {
let infoTitle = document.getElementById(id);
let messageContent = chrome.i18n.getMessage(message);
if (infoTitle === null) {
console.log('content error', id, messageContent);
console.log("content error", id, messageContent);
return;
}
infoTitle.textContent = messageContent;
}
// Information Section
contentUpdateById('text-section-header', 'extensionName');
contentUpdateById('description', 'extensionDescription');
contentUpdateById('i2pbrowser-version', 'extensionVersion');
contentUpdateById('proxy-check', 'proxyFailedStatus');
contentUpdateById("text-section-header", "extensionName");
contentUpdateById("description", "extensionDescription");
contentUpdateById("i2pbrowser-version", "extensionVersion");
// Control Section
contentUpdateById('controlHeader', 'controlHeader');
contentUpdateById('controlExplain', 'controlExplain');
contentUpdateById('clear-browser-data', 'clearData');
contentUpdateById('clear-desc', 'clearDesc');
contentUpdateById('enable-web-rtc', 'enableWebRTC');
contentUpdateById('rtcDesc', 'rtcDesc');
contentUpdateById('disable-history', 'disableHistory');
contentUpdateById('histDesc', 'histDesc');
contentUpdateById("controlHeader", "controlHeader");
contentUpdateById("controlExplain", "controlExplain");
contentUpdateById("clear-browser-data", "clearData");
contentUpdateById("clear-desc", "clearDesc");
contentUpdateById("enable-web-rtc", "enableWebRTC");
contentUpdateById("rtcDesc", "rtcDesc");
contentUpdateById("disable-history", "disableHistory");
contentUpdateById("histDesc", "histDesc");
// Application Section
contentUpdateById('applicationHeader', 'applicationHeader');
contentUpdateById('applicationExplain', 'applicationExplain');
contentUpdateById('window-visit-index', 'windowVisitHelppage');
contentUpdateById('help', 'help');
contentUpdateById('window-visit-router', 'windowVisitConsole');
contentUpdateById('routerConsole', 'routerConsole');
contentUpdateById('window-visit-homepage', 'windowVisitHomepage');
contentUpdateById('abouthome', 'abouthome');
contentUpdateById('window-visit-i2ptunnel', 'windowVisitI2ptunnel');
contentUpdateById('i2ptunnel', 'i2ptunnel');
contentUpdateById('window-visit-susimail', 'windowVisitSusiMail');
contentUpdateById('susimail', 'susimail');
contentUpdateById('window-visit-snark', 'windowVisitSnark');
contentUpdateById('snark', 'snark');
contentUpdateById("applicationHeader", "applicationHeader");
contentUpdateById("applicationExplain", "applicationExplain");
contentUpdateById("window-visit-index", "windowVisitHelppage");
contentUpdateById("help", "help");
contentUpdateById("window-visit-router", "windowVisitConsole");
contentUpdateById("routerConsole", "routerConsole");
contentUpdateById("window-visit-homepage", "windowVisitHomepage");
contentUpdateById("abouthome", "abouthome");
contentUpdateById("window-visit-i2ptunnel", "windowVisitI2ptunnel");
contentUpdateById("i2ptunnel", "i2ptunnel");
contentUpdateById("window-visit-susimail", "windowVisitSusiMail");
contentUpdateById("susimail", "susimail");
contentUpdateById("window-visit-snark", "windowVisitSnark");
contentUpdateById("snark", "snark");
// Homepage Section
contentUpdateById('window-visit-webpage', 'windowVisitWebPage');
contentUpdateById('webpage', 'help');
contentUpdateById('window-visit-sources', 'windowVisitSources');
contentUpdateById('sources', 'sources');
contentUpdateById('window-visit-releases', 'windowVisitReleases');
contentUpdateById('releases', 'releases');
contentUpdateById("window-visit-webpage", "windowVisitWebPage");
contentUpdateById("webpage", "help");
contentUpdateById("window-visit-sources", "windowVisitSources");
contentUpdateById("sources", "sources");
contentUpdateById("window-visit-releases", "windowVisitReleases");
contentUpdateById("releases", "releases");
fetch('http://proxy.i2p').then((myJson) => {
contentUpdateById('proxy-check', 'proxySuccessStatus');
let readyness = document.querySelectorAll('.readyness');
fetch("http://proxy.i2p").then((myJson) => {
contentUpdateById("proxy-check", "proxySuccessStatus");
let readyness = document.querySelectorAll(".readyness");
if (readyness != null) {
hide(readyness);
}
}, (error) => {
contentUpdateById("proxy-check", "proxyFailedStatus");
let readyness = document.querySelectorAll(".readyness");
if (readyness != null) {
hide(readyness);
}

View File

@ -1,5 +1,5 @@
//var windowIds = []
var titlepref = chrome.i18n.getMessage('titlePreface');
var titlepref = chrome.i18n.getMessage("titlePreface");
function onError(error) {
console.log(`Error : ${error}`);
@ -10,20 +10,20 @@ function eventHandler(event) {
console.log(`Created window : ${windowInfo.id}`);
browser.tabs.create({
windowId: windowInfo.id,
url: 'about:blank',
cookieStoreId: event.target.dataset.identity
url: "about:blank",
cookieStoreId: event.target.dataset.identity,
});
}
if (event.target.dataset.action == 'create') {
if (event.target.dataset.action == "create") {
var creating = browser.tabs.create({
cookieStoreId: event.target.dataset.identity
cookieStoreId: event.target.dataset.identity,
});
creating.then(onCreated, onError);
}
if (event.target.dataset.action == 'close-all') {
if (event.target.dataset.action == "close-all") {
browser.tabs
.query({
cookieStoreId: event.target.dataset.identity
cookieStoreId: event.target.dataset.identity,
})
.then((tabs) => {
browser.tabs.remove(tabs.map((rem) => rem.id));

41
debian/changelog vendored
View File

@ -1,3 +1,44 @@
i2psetproxy.js (0.125-1) UNRELEASED; urgency=low
* Bump and resubmit to mozilla.
-- idk <hankhill19580@gmail.com> Wed, 3 Nov 2021 00:20:33 -0400
i2psetproxy.js (0.123-1) UNRELEASED; urgency=low
* Bump and resubmit to mozilla.
* I am not going to optionally keep cookies.
* That would be introducing a pointless security issue.
-- idk <hankhill19580@gmail.com> Wed, 30 Oct 2021 10:11:51 -0400
i2psetproxy.js (0.121-1) UNRELEASED; urgency=low
* switch to browser_specific_settings manifest key
-- idk <hankhill19580@gmail.com> Wed, 13 Oct 2021 21:28:28 -0400
i2psetproxy.js (0.119-1) UNRELEASED; urgency=low
* Fixes to ease releasing via AMO
-- idk <hankhill19580@gmail.com> Wed, 13 Oct 2021 20:37:30 -0400
i2psetproxy.js (0.117-1) UNRELEASED; urgency=low
* Switch to legwork for search provider.
* admin isn't answering, but the service is up unlike yacy.idk.i2p.
-- idk <hankhill19580@gmail.com> Mon, 4 Oct 2021 20:38:59 -0400
i2psetproxy.js (0.115-1) UNRELEASED; urgency=low
* Improve functionality of X-I2P-Location and X-I2P-Torrentlocation
* Fix usage of browser.theme.reset()
* Add checks to disable features that are broken on Android
-- idk <hankhill19580@gmail.com> Fri, 1 Oct 2021 15:29:22 -0400
i2psetproxy.js (0.113-1) UNRELEASED; urgency=low
* Fix checks on BRB, railroad containers

View File

@ -1,73 +1,73 @@
function routerHost(url) {
// console.log("(urlcheck) HANDLER URL CHECK");
let hostname = '';
let path = '';
let hostname = "";
let path = "";
function pathcheck(str) {
// console.log("(urlcheck) HANDLER PATH CHECK", str);
if (str != undefined) {
let final = str.split('/')[0];
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
console.log('(urlcheck) Tunnel application path', final);
return 'i2ptunnelmgr';
let final = str.split("/")[0];
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
console.log("(urlcheck) Tunnel application path", final);
return "i2ptunnelmgr";
} else if (
final === 'i2psnark' ||
final === 'torrents' ||
final.startsWith('transmission') ||
final.startsWith('tracker') ||
url.includes(':7662')
final === "i2psnark" ||
final === "torrents" ||
final.startsWith("transmission") ||
final.startsWith("tracker") ||
url.includes(":7662")
) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
} else if (final === 'webmail' || final === 'susimail') {
if (!url.includes('.css')) {
console.log('(urlcheck) Mail application path', final);
return 'webmail';
console.log("(urlcheck) Torrent application path", final);
return "i2psnark";
} else if (final === "webmail" || final === "susimail") {
if (!url.includes(".css")) {
console.log("(urlcheck) Mail application path", final);
return "webmail";
}
} else if (final.startsWith('MuWire')) {
if (!url.includes('.png')) {
console.log('(urlcheck) MuWire application path', final);
return 'muwire';
} else if (final.startsWith("MuWire")) {
if (!url.includes(".png")) {
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.startsWith("i2pbote")) {
if (!url.includes(".png")) {
console.log("(urlcheck) I2PBote application path", final);
return "i2pbote";
}
} else if (
final === 'home' ||
final === 'console' ||
final === 'dns' ||
final === 'susidns' ||
final.startsWith('susidns') ||
final === 'sitemap' ||
final.startsWith('config')
final === "home" ||
final === "console" ||
final === "dns" ||
final === "susidns" ||
final.startsWith("susidns") ||
final === "sitemap" ||
final.startsWith("config")
) {
console.log('(urlcheck) Console application path', final);
return 'routerconsole';
console.log("(urlcheck) Console application path", final);
return "routerconsole";
}
}
return true;
}
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
path = url.replace(prefix + hostname + '/', '');
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
let prefix = url.substr(0, url.indexOf("://") + 3);
path = url.replace(prefix + hostname + "/", "");
} else if (identifyProtocolHandler(url)) {
let newurl = identifyProtocolHandler(url);
return routerHost(newurl);
} else {
hostname = url.split('/')[0];
path = url.replace(hostname + '/', '');
hostname = url.split("/")[0];
path = url.replace(hostname + "/", "");
}
if (hostname === control_host + ':' + control_port) {
if (hostname === control_host + ":" + control_port) {
//console.log("(hostcheck) router console found on configured ports");
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + control_port) {
if (hostname === "localhost" + ":" + control_port) {
//console.log("(hostcheck) router console found on configured ports");
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + control_port) {
if (hostname === "127.0.0.1" + ":" + control_port) {
return pathcheck(path);
}
@ -77,36 +77,36 @@ function routerHost(url) {
function identifyProtocolHandler(url) {
//console.log("looking for handler-able requests")
if (routerHost(url)) {
if (url.includes(encodeURIComponent('ext+rc:'))) {
return url.replace(encodeURIComponent('ext+rc:'), '');
} else if (url.includes('ext+rc:')) {
return url.replace('ext+rc:', '');
if (url.includes(encodeURIComponent("ext+rc:"))) {
return url.replace(encodeURIComponent("ext+rc:"), "");
} else if (url.includes("ext+rc:")) {
return url.replace("ext+rc:", "");
}
} else if (url.includes('ext+rc:')) {
} else if (url.includes("ext+rc:")) {
return url;
}
return false;
}
function trimHost(url) {
let hostname = '';
let prefix = '';
if (url.indexOf('://') > -1) {
prefix = url.substr(0, url.indexOf('://') + 3);
hostname = url.split('/')[2];
let hostname = "";
let prefix = "";
if (url.indexOf("://") > -1) {
prefix = url.substr(0, url.indexOf("://") + 3);
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
let path = url.replace(prefix + hostname, '');
console.log('(handler) path', prefix + hostname, path);
let path = url.replace(prefix + hostname, "");
console.log("(handler) path", prefix + hostname, path);
return path;
}
var handlerSetup = function(requestDetails) {
var handlerSetup = function (requestDetails) {
//console.log("checking protocol handler listener")
let rwurl = identifyProtocolHandler(requestDetails.url);
if (rwurl != false) {
console.log('(handler) rewrite URL requested', rwurl);
console.log("(handler) rewrite URL requested", rwurl);
requestDetails.redirectUrl = rwurl;
requestDetails.url = trimHost(rwurl);
requestDetails.originUrl = trimHost(rwurl);

169
home.css
View File

@ -1,23 +1,19 @@
* {
padding: 0;
margin: 0;
margin: 0
}
html {
margin: 0 4%;
padding: 0 20px;
min-height: 100%;
background: #9ab;
background: repeating-linear-gradient(to bottom, #9ab, #89a 2px);
scrollbar-color: #bcd #789;
scrollbar-color: #bcd #789
}
body {
margin: 0;
padding: 20px 40px;
font-family: Open Sans, Noto Sans, Segoe UI, sans-serif;
font-family: Open Sans,Noto Sans,Segoe UI,sans-serif;
font-size: 12pt;
color: #495057;
text-decoration: none;
@ -25,51 +21,46 @@ body {
border-left: 1px solid #495057;
border-right: 1px solid #495057;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, .1);
background: #f2f2f2;
background: #f2f2f2
}
h1, h2, h3, h4 {
h1,
h2,
h3,
h4 {
display: block;
font-weight: 700;
font-weight: 700
}
h1 {
text-transform: uppercase;
font-weight: 900;
font-size: 200%;
font-size: 200%
}
h2 {
font-size: 140%;
font-size: 140%
}
h3 {
font-size: 120%;
font-size: 120%
}
h4 {
margin-bottom: 5px;
text-align: right;
text-transform: none;
font-size: 90%;
font-weight: 600;
font-style: italic;
font-style: italic
}
p {
margin-bottom: 15px;
width: 100%;
line-height: 1.4;
word-wrap: break-word;
text-align: justify;
text-decoration: none;
text-decoration: none
}
ul {
margin: 10px 20px;
list-style: none;
list-style: none
}
li {
margin-left: 0;
padding: 12px 15px 15px 20px;
@ -78,63 +69,58 @@ li {
border: 1px solid #9ab;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff;
background: #dee2e6;
background: #dee2e6
}
li li {
padding-bottom: 0;
width: calc(100% - 40px);
text-align: left;
border: none;
border-top: 1px solid #9ab;
box-shadow: none;
box-shadow: none
}
li li:first-of-type {
margin-top: 15px;
border-top: none;
border-top: none
}
li a:first-of-type {
display: block;
width: 100%;
width: 100%
}
#applicationExplain {
float: unset;
float: unset
}
li+li {
margin-top: 15px;
margin-top: 15px
}
h3+ul, ul+h3, ul+h2 {
margin-top: 20px;
h3+ul,
ul+h2,
ul+h3 {
margin-top: 20px
}
a, button {
a,
button {
color: #3b6bbf;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
outline: 0
}
.applicationDesc {
color: #81888f;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
outline: 0
}
.applicationDesc:hover, a:hover, button:hover {
.applicationDesc:hover,
a:hover,
button:hover {
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
outline: 0
}
button {
border: none;
cursor: pointer;
@ -142,14 +128,12 @@ button {
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
outline: 0
}
.background {
background-color: #f8f8ff;
height: 100%;
height: 100%
}
.content {
margin: 1.5rem;
padding: 1rem;
@ -158,11 +142,14 @@ button {
display: inline-block;
border: 1px solid #d9d9d6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
background: #f8f8ff;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
background: #f8f8ff
}
#header, .application-info, .browser-info, .extended-info, .search-info {
#header,
.application-info,
.browser-info,
.extended-info,
.search-info {
margin-top: 1.5rem;
padding: 1rem;
min-height: 3rem;
@ -170,15 +157,14 @@ button {
display: inline-block;
border: 1px solid #d9d9d6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
background: #f8f8ff;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
background: #f8f8ff
}
.showhider {
margin-right: auto;
padding: 0!important;
text-transform: uppercase;
background: none !important;
background: none!important;
border: none;
width: 90%;
color: #3b6bbf;
@ -186,19 +172,16 @@ button {
font-weight: 700;
word-wrap: break-word;
outline: 0;
text-align: left;
text-align: left
}
#links .showhider {
font-size: 25px;
font-size: 25px
}
.section-header {
display: flex;
flex-direction: row;
margin-bottom: 80px;
margin-bottom: 80px
}
#readyness {
padding-top: 1rem;
padding-bottom: 1rem;
@ -209,10 +192,9 @@ button {
text-align: center!important;
border: 1px solid #dee2e6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
display: inline-block;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
display: inline-block
}
#onboarding {
min-height: 5rem;
padding: .5rem;
@ -225,9 +207,8 @@ button {
text-align: center!important;
border: 1px solid #a48fe1;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#i2pbrowser-description {
padding-top: 1rem;
padding-bottom: 1rem;
@ -237,9 +218,8 @@ button {
background: #dee2e6;
border: 1px solid #dee2e6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#linksExplain {
min-height: 5rem;
padding: .5rem;
@ -250,10 +230,10 @@ button {
text-align: center!important;
border: 1px solid #dee2e6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#applicationExplain, #controlExplain {
#applicationExplain,
#controlExplain {
min-height: 5rem;
padding: .5rem;
margin: .5rem;
@ -263,10 +243,9 @@ button {
text-align: center!important;
border: 1px solid #dee2e6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
float: left;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc;
float: left
}
#proxyReady {
min-height: 3rem;
padding: .5rem;
@ -279,9 +258,8 @@ button {
text-align: center!important;
border: 1px solid #d9d9d6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#proxyUnready {
min-height: 3rem;
padding: .5rem;
@ -294,9 +272,8 @@ button {
border: 1px solid #ffc56d;
border-radius: 2px;
background: #ffc56d;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
#consoleOn {
min-height: 3rem;
padding: .5rem;
@ -309,49 +286,41 @@ button {
border: 1px solid #f7e59a;
border-radius: 2px;
background: #f7e59a;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
box-shadow: inset 0 0 0 1px #fff,0 0 1px #ccc
}
.onboardingContent {
font-size: .8rem!important;
text-align: left;
display: none;
display: none
}
#info-content {
display: none;
display: none
}
.consoleOn:hover #proxy-check, .proxyReady:hover #proxy-check {
.consoleOn:hover #proxy-check,
.proxyReady:hover #proxy-check {
visibility: visible;
opacity: 1;
opacity: 1
}
img {
max-width: 100%;
max-width: 100%
}
img.readyness {
height: 100%;
width: auto;
width: auto
}
@media only screen and (max-width: 399px) {
.application-info {
display: none;
display: none
}
}
@media screen and (max-width: 1200px) {
body {
font-size: 10.5pt;
font-size: 10.5pt
}
}
video {
width: 100%
}
.hidden {
visibility: none;
display: none

View File

@ -147,6 +147,7 @@
</div>
<script src="home.js" type="text/javascript"></script>
<script src="content.js" type="text/javascript"></script> <!--</div>-->
<script src="i2pcontrol/i2pcontrol.js" type="text/javascript"></script> <!--</div>-->
</body>
</html>

34
home.js
View File

@ -1,25 +1,25 @@
document.addEventListener('click', (clickEvent) => {
if (clickEvent.target.id === 'onboardingButtonZero') {
flipVisibility('onboardingContentZero');
} else if (clickEvent.target.id === 'onboardingButtonOne') {
flipVisibility('onboardingContentOne');
} else if (clickEvent.target.id === 'onboardingButtonTwo') {
flipVisibility('onboardingContentTwo');
} else if (clickEvent.target.id === 'onboardingButtonThree') {
flipVisibility('onboardingContentThree');
} else if (clickEvent.target.id === 'onboardingButtonFour') {
flipVisibility('onboardingContentFour');
} else if (clickEvent.target.id === 'fliplinks') {
flipVisibility('info-content');
document.addEventListener("click", (clickEvent) => {
if (clickEvent.target.id === "onboardingButtonZero") {
flipVisibility("onboardingContentZero");
} else if (clickEvent.target.id === "onboardingButtonOne") {
flipVisibility("onboardingContentOne");
} else if (clickEvent.target.id === "onboardingButtonTwo") {
flipVisibility("onboardingContentTwo");
} else if (clickEvent.target.id === "onboardingButtonThree") {
flipVisibility("onboardingContentThree");
} else if (clickEvent.target.id === "onboardingButtonFour") {
flipVisibility("onboardingContentFour");
} else if (clickEvent.target.id === "fliplinks") {
flipVisibility("info-content");
}
});
function flipVisibility(div) {
console.log('(home) seeking flippable', div);
console.log("(home) seeking flippable", div);
let flippable = document.getElementById(div);
if (flippable.style.display !== 'block') {
flippable.style.display = 'block';
if (flippable.style.display !== "block") {
flippable.style.display = "block";
} else {
flippable.style.display = 'none';
flippable.style.display = "none";
}
}

168
host.js
View File

@ -1,15 +1,15 @@
function proxyHost(url) {
let hostname = '';
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let hostname = "";
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
if (hostname == 'proxy.i2p') {
if (hostname == "proxy.i2p") {
return true;
}
if (
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
hostname == "c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p"
) {
return true;
}
@ -17,21 +17,21 @@ function proxyHost(url) {
}
function localHost(url) {
let hostname = '';
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let hostname = "";
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
hostname = hostname.split(':')[0];
console.log('(urlcheck) hostname localhost', hostname);
console.log('(urlcheck) url localhost', url);
if (hostname === '127.0.0.1') {
if (url.indexOf('\:8084') != -1) return 'blog';
if (url.indexOf('\:7669') != -1) return 'irc';
} else if (hostname === 'localhost') {
if (url.indexOf('\:8084') != -1) return 'blog';
if (url.indexOf('\:7669') != -1) return 'irc';
hostname = hostname.split(":")[0];
console.log("(urlcheck) hostname localhost", hostname);
console.log("(urlcheck) url localhost", url);
if (hostname === "127.0.0.1") {
if (url.indexOf(":8084") != -1) return "blog";
if (url.indexOf(":7669") != -1) return "irc";
} else if (hostname === "localhost") {
if (url.indexOf(":8084") != -1) return "blog";
if (url.indexOf(":7669") != -1) return "irc";
}
return false;
@ -39,13 +39,13 @@ function localHost(url) {
function extensionHost(url) {
var prefix = browser.runtime
.getURL('')
.replace('moz-extension://', '')
.replace('/', '');
.getURL("")
.replace("moz-extension://", "")
.replace("/", "");
if (url.originUrl !== undefined) {
var originUrl = url.originUrl
.replace('moz-extension://', '')
.replace('/', '');
.replace("moz-extension://", "")
.replace("/", "");
// console.log("(urlcheck) Extension application path", originUrl);
// console.log("(urlcheck) Extension application path", prefix);
var res = originUrl.startsWith(prefix);
@ -59,118 +59,118 @@ function extensionHost(url) {
// console.log("(urlcheck) Extension application path", res);
if (res) return res;
}
console.log('(urlcheck) Extension application path', url);
console.log("(urlcheck) Extension application path", url);
}
function i2pHostName(url) {
let hostname = '';
console.log('(hosts)', url);
let hostname = "";
console.log("(hosts)", url);
let u = new URL(url);
if (u.host.endsWith('.i2p')) {
if (u.host.endsWith(".i2p")) {
hostname = u.host;
} else if (url.includes('=')) {
if (url.includes('.i2p')) {
lsit = url.split('=');
} else if (url.includes("=")) {
if (url.includes(".i2p")) {
lsit = url.split("=");
for (let item in lsit) {
var items = lsit[item].split(`\ % `); //"\%")
for (let p in items) {
if (items[p].includes('.i2p')) {
hostname = items[p].replace('3D', 1);
if (items[p].includes(".i2p")) {
hostname = items[p].replace("3D", 1);
}
break;
}
if (hostname != '') {
if (hostname != "") {
break;
}
}
}
} else if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
} else if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
} else {
hostname = url.split('/')[0];
hostname = url.split("/")[0];
}
console.log('(hosts) scrub', hostname);
console.log("(hosts) scrub", hostname);
return hostname;
}
function i2pHost(url) {
let hostname = i2pHostName(url);
return hostname.endsWith('.i2p');
return hostname.endsWith(".i2p");
}
function routerHost(url) {
// console.log("(urlcheck) HOST URL CHECK");
let hostname = '';
let path = '';
let hostname = "";
let path = "";
function pathcheck(str) {
if (str != undefined) {
let final = str.split('/')[0];
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
console.log('(urlcheck) Tunnel application path', final);
return 'i2ptunnelmgr';
let final = str.split("/")[0];
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
console.log("(urlcheck) Tunnel application path", final);
return "i2ptunnelmgr";
} else if (
final === 'i2psnark' ||
final === 'torrents' ||
final.startsWith('transmission') ||
final.startsWith('tracker') ||
url.includes(':7662')
final === "i2psnark" ||
final === "torrents" ||
final.startsWith("transmission") ||
final.startsWith("tracker") ||
url.includes(":7662")
) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
} else if (final === 'webmail' || final === 'susimail') {
if (!url.includes('.css')) {
console.log('(urlcheck) Mail application path', final);
return 'webmail';
console.log("(urlcheck) Torrent application path", final);
return "i2psnark";
} else if (final === "webmail" || final === "susimail") {
if (!url.includes(".css")) {
console.log("(urlcheck) Mail application path", final);
return "webmail";
}
} else if (final.startsWith('MuWire')) {
if (!url.includes('.png')) {
console.log('(urlcheck) MuWire application path', final);
return 'muwire';
} else if (final.startsWith("MuWire")) {
if (!url.includes(".png")) {
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.startsWith("i2pbote")) {
if (!url.includes(".png")) {
console.log("(urlcheck) I2PBote application path", final);
return "i2pbote";
}
} else if (
final === 'home' ||
final === 'console' ||
final === 'dns' ||
final === 'susidns' ||
final.startsWith('susidns') ||
final === 'sitemap' ||
final.startsWith('config')
final === "home" ||
final === "console" ||
final === "dns" ||
final === "susidns" ||
final.startsWith("susidns") ||
final === "sitemap" ||
final.startsWith("config")
) {
console.log('(urlcheck) Console application path', final);
return 'routerconsole';
console.log("(urlcheck) Console application path", final);
return "routerconsole";
}
}
return true;
}
if (url.indexOf('://') > -1) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
path = url.replace(prefix + hostname + '/', '');
if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
let prefix = url.substr(0, url.indexOf("://") + 3);
path = url.replace(prefix + hostname + "/", "");
} else if (identifyProtocolHandler(url)) {
let newurl = identifyProtocolHandler(url);
return routerHost(newurl);
} else {
hostname = url.split('/')[0];
path = url.replace(hostname + '/', '');
hostname = url.split("/")[0];
path = url.replace(hostname + "/", "");
}
if (hostname === control_host + ':' + control_port) {
if (hostname === control_host + ":" + control_port) {
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + control_port) {
if (hostname === "localhost" + ":" + control_port) {
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + control_port) {
if (hostname === "127.0.0.1" + ":" + control_port) {
return pathcheck(path);
}
if (hostname === 'localhost' + ':' + 7070) {
if (hostname === "localhost" + ":" + 7070) {
return pathcheck(path);
}
if (hostname === '127.0.0.1' + ':' + 7070) {
if (hostname === "127.0.0.1" + ":" + 7070) {
return pathcheck(path);
}
return false;

View File

@ -1,415 +1,420 @@
if (browser.windows != undefined) {
var hello = 'hello i2pcontrol';
var hello = "hello i2pcontrol";
function makeid(length) {
var result = '';
var characters =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
function send(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
async function postData(url = "", data = {}) {
// Default options are marked with *
let requestBody = JSON.stringify(data);
//console.log("(i2pcontrol) sending request", requestBody);
let opts = {
method: 'POST', // *GET, POST, PUT, DELETE, etc.
mode: 'cors', // no-cors, *cors, same-origin
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
credentials: 'same-origin', // include, *same-origin, omit
headers: {
'Content-Type': 'application/json'
},
redirect: 'follow', // manual, *follow, error
referrerPolicy: 'no-referrer', // no-referrer, *client
body: requestBody // body data type must match "Content-Type" header
};
const response = await fetch(url, opts);
return await response.json(); // parses JSON response into native JavaScript objects
function makeid(length) {
var result = "";
var characters =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var charactersLength = characters.length;
for (var i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
return postData(
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
message
);
}
function send(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
async function postData(url = "", data = {}) {
// Default options are marked with *
let requestBody = JSON.stringify(data);
//console.log("(i2pcontrol) sending request", requestBody);
let opts = {
method: "POST", // *GET, POST, PUT, DELETE, etc.
mode: "cors", // no-cors, *cors, same-origin
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
credentials: "same-origin", // include, *same-origin, omit
headers: {
"Content-Type": "application/json",
},
redirect: "follow", // manual, *follow, error
referrerPolicy: "no-referrer", // no-referrer, *client
body: requestBody, // body data type must match "Content-Type" header
};
const response = await fetch(url, opts);
return await response.json(); // parses JSON response into native JavaScript objects
}
async function authenticate(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'Authenticate';
json['params'] = new Object();
json['params']['API'] = 1;
json['params']['Password'] = password;
return send(json, control_host, control_port, control_path);
}
async function GetToken(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function gettoken(authtoken) {
return authtoken.result.Token;
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
return postData(
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
message
);
}
let me = authenticate(password, control_host, control_port, control_path);
return await me.then(gettoken);
}
async function Echo(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function echo(token) {
console.log('(i2pcontrol) testing I2PControl connection');
async function authenticate(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'Echo';
json['params'] = new Object();
json['params']['Token'] = token;
json['params']['Echo'] = message;
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "Authenticate";
json["params"] = new Object();
json["params"]["API"] = 1;
json["params"]["Password"] = password;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(echo);
return done;
}
function UpdateEchoElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
async function GetToken(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function gettoken(authtoken) {
return authtoken.result.Token;
}
let me = authenticate(password, control_host, control_port, control_path);
return await me.then(gettoken);
}
let net = Echo(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
async function GetRate(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function getrate(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'I2PControl';
json['params'] = new Object();
json['params']['Token'] = token;
json['params']['Stat'] = Query;
json['params']['Period'] = 2000;
return send(json, control_host, control_port, control_path);
async function Echo(
message,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function echo(token) {
console.log("(i2pcontrol) testing I2PControl connection");
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "Echo";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"]["Echo"] = message;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(echo);
return done;
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(getrate);
return done;
}
function UpdateGetRateElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = GetRate(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
async function I2PControl(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function i2pcontrol(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'I2PControl';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(i2pcontrol);
return done;
}
function UpdateI2PControlElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = I2PControl(
function UpdateEchoElementByID(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function RouterInfo(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routerinfo(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'RouterInfo';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = Echo(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routerinfo);
return done;
}
function UpdateRouterInfoElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
/*console.log(
async function GetRate(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function getrate(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "I2PControl";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"]["Stat"] = Query;
json["params"]["Period"] = 2000;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(getrate);
return done;
}
function UpdateGetRateElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = GetRate(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function I2PControl(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function i2pcontrol(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "I2PControl";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(i2pcontrol);
return done;
}
function UpdateI2PControlElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = I2PControl(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function RouterInfo(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routerinfo(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "RouterInfo";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routerinfo);
return done;
}
function UpdateRouterInfoElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
/*console.log(
"(i2pcontrol) element",
update.result[Query],
ID,
document.getElementById(ID)
);*/
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update.result[Query];
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update.result[Query];
}
let net = RouterInfo(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateelement);
}
let net = RouterInfo(
async function RouterManager(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateelement);
}
async function RouterManager(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routermanager(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'RouterManager';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function routermanager(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "RouterManager";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routermanager);
return done;
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(routermanager);
return done;
}
function UpdateRouterManagerElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
function UpdateRouterManagerElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update;
}
let net = RouterManager(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function NetworkSetting(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function networksetting(token) {
var json = new Object();
json["id"] = makeid(6);
json["jsonrpc"] = "2.0";
json["method"] = "NetworkSetting";
json["params"] = new Object();
json["params"]["Token"] = token;
json["params"][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(networksetting);
return done;
}
function UpdateNetworkSettingElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
document.getElementById(ID).innerText = update;
}
let net = RouterManager(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
async function NetworkSetting(
Query,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function networksetting(token) {
var json = new Object();
json['id'] = makeid(6);
json['jsonrpc'] = '2.0';
json['method'] = 'NetworkSetting';
json['params'] = new Object();
json['params']['Token'] = token;
json['params'][Query] = null;
return send(json, control_host, control_port, control_path);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(networksetting);
return done;
}
function UpdateNetworkSettingElementByID(
Query,
ID,
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc",
password = "itoopie"
) {
function updateelement(update) {
//console.log("(i2pcontrol)", update);
document.getElementById(ID).innerText = update;
}
let net = NetworkSetting(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
function UpdateContents() {
UpdateRouterInfoElementByID('i2p.router.status', 'router-status');
UpdateRouterInfoElementByID('i2p.router.uptime', 'router-uptime');
UpdateRouterInfoElementByID('i2p.router.version', 'router-version');
UpdateRouterInfoElementByID(
'i2p.router.net.bw.inbound.1s',
'router-net-bw-inbound-1s'
);
UpdateRouterInfoElementByID(
'i2p.router.net.bw.inbound.15s',
'router-net-bw-inbound-15s'
);
UpdateRouterInfoElementByID(
'i2p.router.net.bw.outbound.1s',
'router-net-bw-outbound-1s'
);
UpdateRouterInfoElementByID(
'i2p.router.net.bw.outbound.15s',
'router-net-bw-outbound-15s'
);
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
UpdateRouterInfoElementByID(
'i2p.router.net.tunnels.participating',
'router-net-tunnels-participating'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.activepeers',
'router-netdb-activepeers'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.fastpeers',
'router-netdb-fastpeers'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.highcapacitypeers',
'router-netdb-highcapacitypeers'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.isreseeding',
'router-netdb-isreseeding'
);
UpdateRouterInfoElementByID(
'i2p.router.netdb.knownpeers',
'router-netdb-knownpeers'
);
}
var done = Echo(hello);
done.then(Done).catch (Done);
function Done(output) {
function hide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = 'none';
}
let net = NetworkSetting(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateleement);
}
function unhide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = 'inline-block';
function UpdateContents() {
UpdateRouterInfoElementByID("i2p.router.status", "router-status");
UpdateRouterInfoElementByID("i2p.router.uptime", "router-uptime");
UpdateRouterInfoElementByID("i2p.router.version", "router-version");
UpdateRouterInfoElementByID(
"i2p.router.net.bw.inbound.1s",
"router-net-bw-inbound-1s"
);
UpdateRouterInfoElementByID(
"i2p.router.net.bw.inbound.15s",
"router-net-bw-inbound-15s"
);
UpdateRouterInfoElementByID(
"i2p.router.net.bw.outbound.1s",
"router-net-bw-outbound-1s"
);
UpdateRouterInfoElementByID(
"i2p.router.net.bw.outbound.15s",
"router-net-bw-outbound-15s"
);
UpdateRouterInfoElementByID("i2p.router.net.status", "router-net-status");
UpdateRouterInfoElementByID(
"i2p.router.net.tunnels.participating",
"router-net-tunnels-participating"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.activepeers",
"router-netdb-activepeers"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.fastpeers",
"router-netdb-fastpeers"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.highcapacitypeers",
"router-netdb-highcapacitypeers"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.isreseeding",
"router-netdb-isreseeding"
);
UpdateRouterInfoElementByID(
"i2p.router.netdb.knownpeers",
"router-netdb-knownpeers"
);
}
var done = Echo(hello);
done.then(Done).catch(Done);
function Done(output) {
function hide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = "none";
}
}
}
console.log('(i2pcontrol) I2PControl connection tested,', output);
if (output == hello) {
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
unhide(toopieLinks);
} else {
var toopieLinks = document.querySelectorAll('.window-visit-toopie');
hide(toopieLinks);
function unhide(elements) {
elements = elements.length ? elements : [elements];
for (var index = 0; index < elements.length; index++) {
elements[index].style.display = "inline-block";
}
}
console.log("(i2pcontrol) I2PControl connection tested,", output);
if (output == hello) {
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
unhide(toopieLinks);
} else {
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
hide(toopieLinks);
}
return output;
}
return output;
}
}

View File

@ -9,13 +9,14 @@
<h1>I2P in Private Browsing Mode(Firefox-Only)</h1>
<p>This is an webextension which introduces a set of new "Private Browsing" modes
to Firefox-based browsers(Supporting webextensions) that makes it easier to
configure a browser to use I2P securely and adds features for making I2P
applications easier to use. It does this by isolating I2P-specific settings to
Contextual Identities within Firefox, then loading them automatically when the
user requests them. It also adds convenience and management features, like an
embedded I2P console and Bittorrent integration with clients using the
transmission-rpc API.</p>
to Firefox-based browsers(Supporting webextensions, must be current ESR or
greater) that makes it easier to configure a browser to use I2P securely and
adds features for making I2P applications easier to use. It does this by
isolating I2P-specific settings to Contextual Identities within Firefox, then
loading them automatically when the user requests them. It also adds convenience
and management features, like an embedded I2P console and Bittorrent integration
with clients using the transmission-rpc API and via in-browser protocol handling
integrations.</p>
<h2>Privacy Policy</h2>

13
info.js
View File

@ -2,9 +2,9 @@ function checkPeerConnection() {
let getting = browser.privacy.network.peerConnectionEnabled.get({});
getting.then((got) => {
let webrtc = got.value;
console.log('checking webrtc', webrtc);
if (document.getElementById('enable-web-rtc') !== null)
document.getElementById('enable-web-rtc').checked = webrtc;
console.log("checking webrtc", webrtc);
if (document.getElementById("enable-web-rtc") !== null)
document.getElementById("enable-web-rtc").checked = webrtc;
});
}
@ -126,6 +126,9 @@ document.addEventListener("click", (clickEvent) => {
} else if (clickEvent.target.id === "window-visit-torrent") {
console.log("attempting to create torrent tab");
goTorrent();
} else if (clickEvent.target.id === "torrentui-opener") {
console.log("attempting to create torrent tab");
goSnark();
} else if (clickEvent.target.id === "window-visit-help") {
console.log("attempting to create torrent tab");
goHelp();
@ -225,7 +228,7 @@ function goHome() {
}
console.log("(bookmarks) adding home page bookmark");
}
if (browser.windows != undefined){
if (browser.windows != undefined) {
console.log("(bookmarks) checking if we're running in an I2P Browser");
var gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
@ -287,7 +290,7 @@ function goSearch() {
}
let createData = {
url:
"http://yacy.idk.i2p/yacysearch.html?" +
"http://legwork.i2p/yacysearch.html?" +
"query=" +
document.getElementById("search-query").value,
};

View File

@ -1,12 +1,12 @@
function gotCurrent(tab) {
function gotTitle(title) {
let addr = title;
document.getElementById('TypeInfo').innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + '</a></div>';
document.getElementById("TypeInfo").innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
}
console.log(tab);
var gettingTitle = browser.pageAction.getTitle({
tabId: tab[0].id
tabId: tab[0].id,
});
gettingTitle.then(gotTitle);
}

View File

@ -1,14 +1,16 @@
{
"applications": {
"browser_specific_settings": {
"gecko": {
"id": "i2ppb@eyedeekay.github.io",
"strict_min_version": "85.0"
"strict_min_version": "91.1.0"
}
},
"permissions": [
"theme",
"alarms",
"browsingData",
"bookmarks",
"contextMenus",
"management",
"notifications",
"proxy",
@ -19,12 +21,13 @@
"webRequestBlocking",
"contextualIdentities",
"cookies",
"history",
"tabs",
"<all_urls>"
],
"manifest_version": 2,
"name": "__MSG_extensionName__",
"version": "0.113",
"version": "0.125",
"description": "__MSG_extensionDescription__",
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
"icons": {
@ -36,6 +39,13 @@
"default_title": "__MSG_extensionName__",
"default_popup": "window.html"
},
"sidebar_action": {
"browser_style": true,
"default_icon": "icons/i2plogo.png",
"default_title": "__MSG_toopieName__",
"default_panel": "toopie.html",
"open_at_install": false
},
"page_action": {
"browser_style": true,
"default_title": "__MSG_toopieTLS__",
@ -76,5 +86,17 @@
"bookmarks.js"
]
},
"protocol_handlers": [
{
"protocol": "ext+rc",
"name": "RouterConsole",
"uriTemplate": "http://127.0.0.1:7657/%s"
},
{
"protocol": "magnet",
"name": "I2PTorrent",
"uriTemplate": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent"
}
],
"default_locale": "en"
}

View File

@ -20,21 +20,20 @@
</section>
<section class="scheme-options">
<span class="title">Bookmarks Status:</span>
<input type="checkbox" id="bookmarksState" name="bookmarksstate" value="bookmarksstate">
<label for="bookmarksState">Bookmarks were created at install-time.</tv>
<button type="submit" id="bookmarksButton">Re-Create Bookmarks</button>
<span class="title">Bookmarks Status:</span> <input id="bookmarksState" name="bookmarksstate" type="checkbox" value="bookmarksstate"> <label for="bookmarksState">Bookmarks were created at install-time. <button id="bookmarksButton" type="submit">Re-Create Bookmarks</button></label>
</section>
<section class="scheme-options proxy-options" id="proxy-options">
<label for="bookmarksState"></label>
<div class="title">
Proxy Options
<label for="bookmarksState">Proxy Options</label>
</div>
<p id="proxyHelpText">
<label for="bookmarksState"></label>
<p id="proxyHelpText"><label for="bookmarksState"></label>
</p>
<label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
<label for="bookmarksState"><label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
<br>
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444">
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444"></label>
</section>
<!--<section class="scheme-options identity-options">
<div class="panel">
@ -89,7 +88,7 @@
</div>
</section>
<input id="save-button" type="button" value="Save preferences">
<script src="options.js"></script>
<script src="options.js"></script>
<script src="/bookmarks.js"></script> <!--<script src="/torrent/browser-polyfill.min.js"></script>
<script src="/torrent/options.js"></script>-->
</body>

View File

@ -4,168 +4,168 @@ function SetBookButton() {
}
function SetHostText() {
var hostid = document.getElementById('hostText');
hostid.textContent = chrome.i18n.getMessage('hostText');
var hostid = document.getElementById("hostText");
hostid.textContent = chrome.i18n.getMessage("hostText");
}
function SetPortText() {
var portid = document.getElementById('portText');
portid.textContent = chrome.i18n.getMessage('portText');
var portid = document.getElementById("portText");
portid.textContent = chrome.i18n.getMessage("portText");
}
function SetPortHelpText() {
var portid = document.getElementById('proxyHelpText');
portid.textContent = chrome.i18n.getMessage('proxyHelpText');
var portid = document.getElementById("proxyHelpText");
portid.textContent = chrome.i18n.getMessage("proxyHelpText");
}
function SetControlHostText() {
var controlhostid = document.getElementById('controlHostText');
controlhostid.textContent = chrome.i18n.getMessage('controlHostText');
var controlhostid = document.getElementById("controlHostText");
controlhostid.textContent = chrome.i18n.getMessage("controlHostText");
}
function SetControlPortText() {
var controlportid = document.getElementById('controlPortText');
controlportid.textContent = chrome.i18n.getMessage('controlPortText');
var controlportid = document.getElementById("controlPortText");
controlportid.textContent = chrome.i18n.getMessage("controlPortText");
}
function SetControlHelpText() {
var portid = document.getElementById('controlHelpText');
portid.textContent = chrome.i18n.getMessage('controlHelpText');
var portid = document.getElementById("controlHelpText");
portid.textContent = chrome.i18n.getMessage("controlHelpText");
}
function getBookmarksCreated() {
bookmarks_state = document.getElementById('bookmarks');
console.log('(options)Got i2p bookmarks state:', bookmarks_state);
bookmarks_state = document.getElementById("bookmarks");
console.log("(options)Got i2p bookmarks state:", bookmarks_state);
if (bookmarks_state == undefined) {
return false;
}
if (bookmarks_state.value == 'false') {
if (bookmarks_state.value == "false") {
return false;
}
if (bookmarks_state.value == 'true') {
if (bookmarks_state.value == "true") {
return true;
}
return false;
}
function getScheme() {
const proxy_scheme = document.querySelector('#proxy_scheme');
console.log('(options)Got i2p proxy scheme:', proxy_scheme.value);
if (proxy_scheme.value == 'HTTP') {
return 'http';
const proxy_scheme = document.querySelector("#proxy_scheme");
console.log("(options)Got i2p proxy scheme:", proxy_scheme.value);
if (proxy_scheme.value == "HTTP") {
return "http";
}
if (proxy_scheme.value == 'SOCKS') {
return 'socks';
if (proxy_scheme.value == "SOCKS") {
return "socks";
}
if (proxy_scheme.value == 'http') return 'http';
if (proxy_scheme.value == 'socks') return 'socks';
else return 'http';
if (proxy_scheme.value == "http") return "http";
if (proxy_scheme.value == "socks") return "socks";
else return "http";
}
function getHost() {
proxy_host = document.getElementById('host').value;
console.log('(options)Got i2p proxy host:', proxy_host);
proxy_host = document.getElementById("host").value;
console.log("(options)Got i2p proxy host:", proxy_host);
if (proxy_host == undefined) {
return '127.0.0.1';
return "127.0.0.1";
}
return proxy_host;
}
function getPort() {
proxy_port = document.getElementById('port').value;
console.log('(options)Got i2p proxy port:', proxy_port);
proxy_port = document.getElementById("port").value;
console.log("(options)Got i2p proxy port:", proxy_port);
if (proxy_port == undefined) {
return '4444';
return "4444";
}
return proxy_port;
}
function getControlHost() {
control_host = document.getElementById('controlhost').value;
console.log('(options)Got i2p control host:', control_host);
control_host = document.getElementById("controlhost").value;
console.log("(options)Got i2p control host:", control_host);
if (control_host == undefined) {
return '127.0.0.1';
return "127.0.0.1";
}
return control_host;
}
function getControlPort() {
control_port = document.getElementById('controlport').value;
console.log('(options)Got i2p control port:', control_port);
control_port = document.getElementById("controlport").value;
console.log("(options)Got i2p control port:", control_port);
if (control_port == undefined) {
return '4444';
return "4444";
}
return control_port;
}
function getRPCHost() {
rpc_host = document.getElementById('rpchost').value;
console.log('(options)Got i2pcontrol rpc host:', rpc_host);
rpc_host = document.getElementById("rpchost").value;
console.log("(options)Got i2pcontrol rpc host:", rpc_host);
if (rpc_host == undefined) {
return '127.0.0.1';
return "127.0.0.1";
}
return rpc_host;
}
function getRPCPort() {
rpc_port = document.getElementById('rpcport').value;
console.log('(options)Got i2pcontrol rpc port:', rpc_port);
rpc_port = document.getElementById("rpcport").value;
console.log("(options)Got i2pcontrol rpc port:", rpc_port);
if (rpc_port == undefined) {
return '7657';
return "7657";
}
return rpc_port;
}
function getRPCPath() {
rpc_path = document.getElementById('rpcpath').value;
console.log('(options)Got i2pcontrol rpc path:', rpc_path);
rpc_path = document.getElementById("rpcpath").value;
console.log("(options)Got i2pcontrol rpc path:", rpc_path);
if (rpc_path == undefined) {
return 'jsonrpc';
return "jsonrpc";
}
return rpc_path;
}
function getRPCPass() {
rpc_pass = document.getElementById('rpcpass').value;
console.log('(options)Got i2pcontrol rpc password:');
rpc_pass = document.getElementById("rpcpass").value;
console.log("(options)Got i2pcontrol rpc password:");
if (rpc_pass == undefined) {
return 'itoopie';
return "itoopie";
}
return rpc_pass;
}
function getBTRPCHost() {
bt_rpc_host = document.getElementById('btrpchost').value;
console.log('(options)Got torrent rpc host:', bt_rpc_host);
bt_rpc_host = document.getElementById("btrpchost").value;
console.log("(options)Got torrent rpc host:", bt_rpc_host);
if (bt_rpc_host == undefined) {
return '127.0.0.1';
return "127.0.0.1";
}
return bt_rpc_host;
}
function getBTRPCPort() {
bt_rpc_port = document.getElementById('btrpcport').value;
console.log('(options)Got torrent rpc port:', bt_rpc_port);
bt_rpc_port = document.getElementById("btrpcport").value;
console.log("(options)Got torrent rpc port:", bt_rpc_port);
if (bt_rpc_port == undefined) {
return '7657';
return "7657";
}
return bt_rpc_port;
}
function getBTRPCPath() {
bt_rpc_path = document.getElementById('btrpcpath').value;
console.log('(options)Got torrent rpc path:', bt_rpc_path);
bt_rpc_path = document.getElementById("btrpcpath").value;
console.log("(options)Got torrent rpc path:", bt_rpc_path);
if (bt_rpc_path == undefined) {
return 'transmission/rpc';
return "transmission/rpc";
}
return bt_rpc_path;
}
function getBTRPCPass() {
bt_rpc_pass = document.getElementById('btrpcpass').value;
console.log('(options)Got torrent rpc password:');
bt_rpc_pass = document.getElementById("btrpcpass").value;
console.log("(options)Got torrent rpc password:");
if (bt_rpc_pass == undefined) {
return 'itoopie';
return "itoopie";
}
return bt_rpc_pass;
}
@ -173,88 +173,88 @@ function getBTRPCPass() {
function checkStoredSettings(storedSettings) {
function gotProxyInfo(info) {
let defaultSettings = {};
let host = info.value.http.split(':')[0];
let port = info.value.http.split(':')[1];
let host = info.value.http.split(":")[0];
let port = info.value.http.split(":")[1];
if (port != 7644) {
port = undefined;
}
console.log('(options)proxy', "'" + host + "'", ':', port);
if (!storedSettings['bookmarks_state'])
defaultSettings['bookmarks_state'] = false;
else defaultSettings['bookmarks_state'] = storedSettings['bookmarks_state'];
if (!storedSettings['proxy_scheme'])
defaultSettings['proxy_scheme'] = 'http';
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
if (!storedSettings['proxy_host']) {
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
else defaultSettings['proxy_host'] = host;
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
console.log("(options)proxy", "'" + host + "'", ":", port);
if (!storedSettings["bookmarks_state"])
defaultSettings["bookmarks_state"] = false;
else defaultSettings["bookmarks_state"] = storedSettings["bookmarks_state"];
if (!storedSettings["proxy_scheme"])
defaultSettings["proxy_scheme"] = "http";
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
if (!storedSettings["proxy_host"]) {
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
else defaultSettings["proxy_host"] = host;
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
if (!storedSettings['proxy_port']) {
if (port == undefined) defaultSettings['proxy_port'] = 4444;
else if (port == 7644) defaultSettings['proxy_port'] = port;
else defaultSettings['proxy_port'] = 4444;
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
if (!storedSettings["proxy_port"]) {
if (port == undefined) defaultSettings["proxy_port"] = 4444;
else if (port == 7644) defaultSettings["proxy_port"] = port;
else defaultSettings["proxy_port"] = 4444;
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
if (!storedSettings['control_host']) {
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
else defaultSettings['control_host'] = host;
} else defaultSettings['control_host'] = storedSettings.control_host;
if (!storedSettings["control_host"]) {
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
else defaultSettings["control_host"] = host;
} else defaultSettings["control_host"] = storedSettings.control_host;
if (!storedSettings['control_port']) {
defaultSettings['control_port'] = 7657;
} else defaultSettings['control_port'] = storedSettings.control_port;
if (!storedSettings["control_port"]) {
defaultSettings["control_port"] = 7657;
} else defaultSettings["control_port"] = storedSettings.control_port;
if (!storedSettings['rpc_host']) {
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
else defaultSettings['rpc_host'] = host;
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
if (!storedSettings["rpc_host"]) {
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
else defaultSettings["rpc_host"] = host;
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
if (!storedSettings['rpc_port']) {
defaultSettings['rpc_port'] = 7657;
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
if (!storedSettings["rpc_port"]) {
defaultSettings["rpc_port"] = 7657;
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
if (!storedSettings['rpc_path']) {
defaultSettings['rpc_path'] = 'jsonrpc';
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
if (!storedSettings["rpc_path"]) {
defaultSettings["rpc_path"] = "jsonrpc";
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
if (!storedSettings['rpc_pass']) {
defaultSettings['rpc_pass'] = 'itoopie';
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
if (!storedSettings["rpc_pass"]) {
defaultSettings["rpc_pass"] = "itoopie";
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
if (!storedSettings['bt_rpc_host']) {
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
else defaultSettings['bt_rpc_host'] = host;
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
if (!storedSettings["bt_rpc_host"]) {
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
else defaultSettings["bt_rpc_host"] = host;
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
if (!storedSettings['bt_rpc_port']) {
defaultSettings['bt_rpc_port'] = 7657;
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
if (!storedSettings["bt_rpc_port"]) {
defaultSettings["bt_rpc_port"] = 7657;
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
if (!storedSettings['bt_rpc_path']) {
defaultSettings['bt_rpc_path'] = 'transmission/';
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
if (!storedSettings["bt_rpc_path"]) {
defaultSettings["bt_rpc_path"] = "transmission/";
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
if (!storedSettings['bt_rpc_pass']) {
defaultSettings['bt_rpc_pass'] = 'transmission';
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
if (!storedSettings["bt_rpc_pass"]) {
defaultSettings["bt_rpc_pass"] = "transmission";
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
defaultSettings['base_url'] =
'http://' +
defaultSettings['bt_rpc_host'] +
':' +
defaultSettings['bt_rpc_port'] +
'/' +
defaultSettings['bt_rpc_path'];
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
defaultSettings["base_url"] =
"http://" +
defaultSettings["bt_rpc_host"] +
":" +
defaultSettings["bt_rpc_port"] +
"/" +
defaultSettings["bt_rpc_path"];
console.log(
'(options)',
defaultSettings['proxy_scheme'],
defaultSettings['proxy_host'],
defaultSettings['proxy_port'],
defaultSettings['control_host'],
defaultSettings['control_port'],
defaultSettings['base_url']
"(options)",
defaultSettings["proxy_scheme"],
defaultSettings["proxy_host"],
defaultSettings["proxy_port"],
defaultSettings["control_host"],
defaultSettings["control_port"],
defaultSettings["base_url"]
);
chrome.storage.local.set(defaultSettings);
@ -266,75 +266,75 @@ function checkStoredSettings(storedSettings) {
function checkAndroidStoredSettings(storedSettings) {
let defaultSettings = {};
let host = '';
let port = '';
if (!storedSettings['bookmarks_state'])
defaultSettings['bookmarks_state'] = false;
else defaultSettings['bookmarks_state'] = storedSettings['bookmarks_state'];
if (!storedSettings['proxy_scheme']) defaultSettings['proxy_scheme'] = 'http';
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
if (!storedSettings['proxy_host']) {
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
else defaultSettings['proxy_host'] = host;
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
let host = "";
let port = "";
if (!storedSettings["bookmarks_state"])
defaultSettings["bookmarks_state"] = false;
else defaultSettings["bookmarks_state"] = storedSettings["bookmarks_state"];
if (!storedSettings["proxy_scheme"]) defaultSettings["proxy_scheme"] = "http";
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
if (!storedSettings["proxy_host"]) {
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
else defaultSettings["proxy_host"] = host;
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
if (!storedSettings['proxy_port']) {
if (port == undefined) defaultSettings['proxy_port'] = 4444;
else if (port == 7644) defaultSettings['proxy_port'] = port;
else defaultSettings['proxy_port'] = 4444;
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
if (!storedSettings["proxy_port"]) {
if (port == undefined) defaultSettings["proxy_port"] = 4444;
else if (port == 7644) defaultSettings["proxy_port"] = port;
else defaultSettings["proxy_port"] = 4444;
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
if (!storedSettings['control_host']) {
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
else defaultSettings['control_host'] = host;
} else defaultSettings['control_host'] = storedSettings.control_host;
if (!storedSettings["control_host"]) {
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
else defaultSettings["control_host"] = host;
} else defaultSettings["control_host"] = storedSettings.control_host;
if (!storedSettings['control_port']) {
defaultSettings['control_port'] = 7657;
} else defaultSettings['control_port'] = storedSettings.control_port;
if (!storedSettings["control_port"]) {
defaultSettings["control_port"] = 7657;
} else defaultSettings["control_port"] = storedSettings.control_port;
if (!storedSettings['rpc_host']) {
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
else defaultSettings['rpc_host'] = host;
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
if (!storedSettings["rpc_host"]) {
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
else defaultSettings["rpc_host"] = host;
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
if (!storedSettings['rpc_port']) {
defaultSettings['rpc_port'] = 7657;
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
if (!storedSettings["rpc_port"]) {
defaultSettings["rpc_port"] = 7657;
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
if (!storedSettings['rpc_path']) {
defaultSettings['rpc_path'] = 'jsonrpc';
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
if (!storedSettings["rpc_path"]) {
defaultSettings["rpc_path"] = "jsonrpc";
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
if (!storedSettings['rpc_pass']) {
defaultSettings['rpc_pass'] = 'itoopie';
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
if (!storedSettings["rpc_pass"]) {
defaultSettings["rpc_pass"] = "itoopie";
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
if (!storedSettings['bt_rpc_host']) {
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
else defaultSettings['bt_rpc_host'] = host;
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
if (!storedSettings["bt_rpc_host"]) {
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
else defaultSettings["bt_rpc_host"] = host;
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
if (!storedSettings['bt_rpc_port']) {
defaultSettings['bt_rpc_port'] = 7657;
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
if (!storedSettings["bt_rpc_port"]) {
defaultSettings["bt_rpc_port"] = 7657;
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
if (!storedSettings['bt_rpc_path']) {
defaultSettings['bt_rpc_path'] = 'transmission/rpc';
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
if (!storedSettings["bt_rpc_path"]) {
defaultSettings["bt_rpc_path"] = "transmission/rpc";
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
if (!storedSettings['bt_rpc_pass']) {
defaultSettings['bt_rpc_pass'] = 'transmission';
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
if (!storedSettings["bt_rpc_pass"]) {
defaultSettings["bt_rpc_pass"] = "transmission";
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
console.log(
'(options)',
defaultSettings['proxy_scheme'],
defaultSettings['proxy_host'],
defaultSettings['proxy_port'],
defaultSettings['control_host'],
defaultSettings['control_port']
"(options)",
defaultSettings["proxy_scheme"],
defaultSettings["proxy_host"],
defaultSettings["proxy_port"],
defaultSettings["control_host"],
defaultSettings["control_port"]
);
chrome.storage.local.set(defaultSettings);
return defaultSettings;
@ -346,85 +346,85 @@ function onError(e) {
function storeSettings() {
let storableSettings = {};
storableSettings['bookmarks_state'] = getBookmarksCreated();
storableSettings['proxy_scheme'] = getScheme();
storableSettings['proxy_host'] = getHost();
storableSettings['proxy_port'] = getPort();
storableSettings['control_host'] = getControlHost();
storableSettings['control_port'] = getControlPort();
storableSettings['rpc_host'] = getRPCHost();
storableSettings['rpc_port'] = getRPCPort();
storableSettings['rpc_path'] = getRPCPath();
storableSettings['rpc_pass'] = getRPCPass();
storableSettings['bt_rpc_host'] = getBTRPCHost();
storableSettings['bt_rpc_port'] = getBTRPCPort();
storableSettings['bt_rpc_path'] = getBTRPCPath();
storableSettings['bt_rpc_pass'] = getBTRPCPass();
storableSettings['base_url'] =
'http://' + bt_rpc_host + ':' + bt_rpc_port + '/' + bt_rpc_path;
console.log('storing', storableSettings);
storableSettings["bookmarks_state"] = getBookmarksCreated();
storableSettings["proxy_scheme"] = getScheme();
storableSettings["proxy_host"] = getHost();
storableSettings["proxy_port"] = getPort();
storableSettings["control_host"] = getControlHost();
storableSettings["control_port"] = getControlPort();
storableSettings["rpc_host"] = getRPCHost();
storableSettings["rpc_port"] = getRPCPort();
storableSettings["rpc_path"] = getRPCPath();
storableSettings["rpc_pass"] = getRPCPass();
storableSettings["bt_rpc_host"] = getBTRPCHost();
storableSettings["bt_rpc_port"] = getBTRPCPort();
storableSettings["bt_rpc_path"] = getBTRPCPath();
storableSettings["bt_rpc_pass"] = getBTRPCPass();
storableSettings["base_url"] =
"http://" + bt_rpc_host + ":" + bt_rpc_port + "/" + bt_rpc_path;
console.log("storing", storableSettings);
chrome.storage.local.set(storableSettings);
}
function updateUI(restoredSettings) {
const selectList = document.querySelector('#proxy_scheme');
const selectList = document.querySelector("#proxy_scheme");
if (selectList != undefined) selectList.value = restoredSettings.proxy_scheme;
//console.log("(options)showing proxy scheme:", selectList.value);
console.log(restoredSettings);
const bms = document.getElementById('bookmarksState');
const bms = document.getElementById("bookmarksState");
if (bms != undefined) bms.checked = restoredSettings.bookmarks_state;
const hostitem = document.getElementById('host');
const hostitem = document.getElementById("host");
if (hostitem != undefined) hostitem.value = restoredSettings.proxy_host;
//console.log("(options)showing proxy host:", hostitem.value);
const portitem = document.getElementById('port');
const portitem = document.getElementById("port");
if (portitem != undefined) portitem.value = restoredSettings.proxy_port;
//console.log("(options)showing proxy port:", portitem.value);
const controlhostitem = document.getElementById('controlhost');
const controlhostitem = document.getElementById("controlhost");
if (controlhostitem == undefined)
controlhostitem.value = restoredSettings.control_host;
//console.log("(options)showing control host:", controlhostitem.value);
const controlportitem = document.getElementById('controlport');
const controlportitem = document.getElementById("controlport");
if (controlportitem == undefined)
controlportitem.value = restoredSettings.control_port;
//console.log("(options)showing control port:", controlportitem.value);
const rpchostitem = document.getElementById('rpchost');
const rpchostitem = document.getElementById("rpchost");
if (rpchostitem != undefined) rpchostitem.value = restoredSettings.rpc_host;
//console.log("(options)showing rpc host:", rpchostitem.value);
const rpcportitem = document.getElementById('rpcport');
const rpcportitem = document.getElementById("rpcport");
if (rpcportitem != undefined) rpcportitem.value = restoredSettings.rpc_port;
//console.log("(options)showing rpc port:", rpcportitem.value);
const rpcpathitem = document.getElementById('rpcpath');
const rpcpathitem = document.getElementById("rpcpath");
if (rpcpathitem != undefined) rpcpathitem.value = restoredSettings.rpc_path;
//console.log("(options)showing rpc path:", rpcpathitem.value);
const rpcpassitem = document.getElementById('rpcpass');
const rpcpassitem = document.getElementById("rpcpass");
if (rpcpassitem != undefined) rpcpassitem.value = restoredSettings.rpc_pass;
//console.log("(options)showing rpc pass:");
const btrpchostitem = document.getElementById('btrpchost');
const btrpchostitem = document.getElementById("btrpchost");
if (btrpchostitem != undefined)
btrpchostitem.value = restoredSettings.bt_rpc_host;
//console.log("(options)showing bt rpc host:", btrpchostitem.value);
const btrpcportitem = document.getElementById('btrpcport');
const btrpcportitem = document.getElementById("btrpcport");
if (btrpcportitem != undefined)
btrpcportitem.value = restoredSettings.bt_rpc_port;
//console.log("(options)showing rbt pc port:", rpcportitem.value);
const btrpcpathitem = document.getElementById('btrpcpath');
const btrpcpathitem = document.getElementById("btrpcpath");
if (btrpcpathitem != undefined)
btrpcpathitem.value = restoredSettings.bt_rpc_path;
//console.log("(options)showing bt rpc path:", btrpcpathitem.value);
const btrpcpassitem = document.getElementById('btrpcpass');
const btrpcpassitem = document.getElementById("btrpcpass");
if (btrpcpassitem != undefined)
btrpcpassitem.value = restoredSettings.bt_rpc_pass;
//console.log("(options)showing bt rpc pass:");
@ -444,18 +444,18 @@ function onError(e) {
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os != 'android') {
chrome.storage.local.get(function(got) {
if (got.os != "android") {
chrome.storage.local.get(function (got) {
let settings = checkStoredSettings(got);
settings.then(updateUI);
});
} else {
chrome.storage.local.get(function(got) {
chrome.storage.local.get(function (got) {
checkAndroidStoredSettings(got);
updateUI(got);
});
}
});
const saveButton = document.querySelector('#save-button');
saveButton.addEventListener('click', storeSettings);
const saveButton = document.querySelector("#save-button");
saveButton.addEventListener("click", storeSettings);

View File

@ -2,19 +2,19 @@ var android = false;
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os == 'android') {
console.log('Running in Android detected');
if (got.os == "android") {
console.log("Running in Android detected");
android = true;
return true;
} else {
console.log('Running in Desktop detected');
console.log("Running in Desktop detected");
android = false;
return false;
}
});
function isDroid() {
console.log('android?', android);
console.log("android?", android);
if (android == undefined) {
return false;
}

View File

@ -1,10 +1,10 @@
var titlepref = chrome.i18n.getMessage('titlePreface');
var titlepref = chrome.i18n.getMessage("titlePreface");
function onSet(result) {
if (result) {
console.log('->: Value was updated');
console.log("->: Value was updated");
} else {
console.log('-X: Value was not updated');
console.log("-X: Value was not updated");
}
}
@ -12,10 +12,10 @@ function onSet(result) {
risky sites in your browser */
function disableHyperlinkAuditing() {
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({
value: false
value: false,
});
console.log('Disabling hyperlink auditing/val=', {
value: false
console.log("Disabling hyperlink auditing/val=", {
value: false,
});
setting.then(onSet);
}
@ -23,8 +23,8 @@ function disableHyperlinkAuditing() {
// UNINSTALL ONLY
function enableHyperlinkAuditing() {
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.clear();
console.log('Disabling hyperlink auditing/val=', {
value: false
console.log("Disabling hyperlink auditing/val=", {
value: false,
});
setting.then(onSet);
}
@ -32,10 +32,10 @@ function enableHyperlinkAuditing() {
// This enables first-party isolation
function enableFirstPartyIsolation() {
var setting = browser.privacy.websites.firstPartyIsolate.set({
value: true
value: true,
});
console.log('Enabling first party isolation/val=', {
value: true
console.log("Enabling first party isolation/val=", {
value: true,
});
setting.then(onSet);
}
@ -43,8 +43,8 @@ function enableFirstPartyIsolation() {
// UNINSTALL ONLY
function disableFirstPartyIsolation() {
var setting = browser.privacy.websites.firstPartyIsolate.clear();
console.log('Enabling first party isolation/val=', {
value: true
console.log("Enabling first party isolation/val=", {
value: true,
});
setting.then(onSet);
}
@ -57,15 +57,15 @@ function disableEvilCookies() {
getting.then((got) => {
var setting = browser.privacy.websites.cookieConfig.set({
value: {
behavior: 'reject_third_party',
nonPersistentCookies: got.value.nonPersistentCookies
}
behavior: "reject_third_party",
nonPersistentCookies: got.value.nonPersistentCookies,
},
});
console.log('Setting cookie behavior/val=', {
console.log("Setting cookie behavior/val=", {
value: {
behavior: 'reject_third_party',
nonPersistentCookies: got.value.nonPersistentCookies
}
behavior: "reject_third_party",
nonPersistentCookies: got.value.nonPersistentCookies,
},
});
setting.then(onSet);
});

197
proxy.js
View File

@ -1,57 +1,57 @@
var titlepref = chrome.i18n.getMessage('titlePreface');
var webpref = chrome.i18n.getMessage('webPreface');
var routerpref = chrome.i18n.getMessage('routerPreface');
var mailpref = chrome.i18n.getMessage('mailPreface');
var torrentpref = chrome.i18n.getMessage('torrentPreface');
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 blogpref = chrome.i18n.getMessage('blogPreface');
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
var titlepref = chrome.i18n.getMessage("titlePreface");
var webpref = chrome.i18n.getMessage("webPreface");
var routerpref = chrome.i18n.getMessage("routerPreface");
var mailpref = chrome.i18n.getMessage("mailPreface");
var torrentpref = chrome.i18n.getMessage("torrentPreface");
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 blogpref = chrome.i18n.getMessage("blogPreface");
var blogprefpriv = chrome.i18n.getMessage("blogPrefacePrivate");
browser.privacy.network.peerConnectionEnabled.set({
value: true
value: true,
});
chrome.privacy.network.networkPredictionEnabled.set({
value: false
value: false,
});
chrome.privacy.network.webRTCIPHandlingPolicy.set({
value: 'disable_non_proxied_udp'
value: "disable_non_proxied_udp",
});
console.log('Disabled unproxied UDP.');
console.log("Disabled unproxied UDP.");
function shouldProxyRequest(requestInfo) {
return requestInfo.parentFrameId != -1;
}
var handleContextProxyRequest = async function(requestDetails) {
var handleContextProxyRequest = async function (requestDetails) {
function ircProxy() {
if (!requestDetails.url.includes('7669')) {
if (!requestDetails.url.includes("7669")) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
return proxy;
}
if (requestDetails.url.includes(':7669')) {
if (requestDetails.url.includes(":7669")) {
proxy = null;
return proxy;
}
}
function blogProxy() {
if (!requestDetails.url.includes('8084')) {
if (!requestDetails.url.includes("8084")) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
return proxy;
}
if (requestDetails.url.includes(':8084')) {
if (requestDetails.url.includes(":8084")) {
proxy = null;
return proxy;
}
@ -59,28 +59,28 @@ var handleContextProxyRequest = async function(requestDetails) {
function btProxy() {
proxy = routerProxy();
if (requestDetails.url.includes(':7662')) {
if (requestDetails.url.includes(":7662")) {
proxy = null;
return proxy;
}
console.log('(bt proxy)', proxy);
console.log("(bt proxy)", proxy);
return proxy;
}
function mainProxy() {
console.log('(proxy) mainproxy 0');
console.log("(proxy) mainproxy 0");
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
let url = new URL(requestDetails.url);
if (
requestDetails.url.startsWith(
'http://' + getHost() + ':' + getConsolePort() + '/i2psnark/'
"http://" + getHost() + ":" + getConsolePort() + "/i2psnark/"
)
) {
//+url.host)) {
console.log('(proxy) mainproxy 2', url);
console.log("(proxy) mainproxy 2", url);
proxy = null;
}
return proxy;
@ -93,26 +93,26 @@ var handleContextProxyRequest = async function(requestDetails) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
return proxy;
}
}
try {
var handleProxyRequest = function(context) {
var handleProxyRequest = function (context) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
if (context == 'firefox-default' || context == 'firefox-private') {
if (context == "firefox-default" || context == "firefox-private") {
proxy = null;
return proxy;
}
if (context != undefined) {
console.log('(proxy), context', context);
console.log("(proxy), context", context);
proxy = routerProxy();
if (context.name == ircpref) {
proxy = ircProxy();
@ -141,13 +141,13 @@ var handleContextProxyRequest = async function(requestDetails) {
} else {
if (!routerHost(requestDetails.url)) {
if (localHost(requestDetails.url)) {
if (requestDetails.url.includes(':7669')) {
if (requestDetails.url.includes(":7669")) {
proxy = null;
} else if (requestDetails.url.includes(':7662')) {
} else if (requestDetails.url.includes(":7662")) {
proxy = null;
} else {
console.log(
'(proxy) non-routerconsole localhost url, will not interfere',
"(proxy) non-routerconsole localhost url, will not interfere",
requestDetails.url
);
}
@ -157,69 +157,69 @@ var handleContextProxyRequest = async function(requestDetails) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
} else {
proxy = null;
}
if (requestDetails.url.includes('rpc')) {
console.log('(proxy for rpc url)', rpc);
if (requestDetails.url.includes("rpc")) {
console.log("(proxy for rpc url)", rpc);
}
//var tab = tabGet(requestDetails.tabId);
//tab.then(handleTabRequest,)
return proxy;
}
};
var contextGet = async function(tabInfo) {
var contextGet = async function (tabInfo) {
try {
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
return context;
} catch (error) {
console.warn(error);
return 'firefox-default';
return "firefox-default";
}
};
var tabGet = async function(tabId) {
var tabGet = async function (tabId) {
try {
let tabInfo = await browser.tabs.get(tabId);
return tabInfo;
} catch (error) {
console.log('(proxy)Tab error', error);
console.log("(proxy)Tab error", error);
}
};
if (proxyHost(requestDetails.url)) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
return proxy;
}
if (requestDetails.originUrl == browser.runtime.getURL('security.html')) {
if (requestDetails.originUrl == browser.runtime.getURL("security.html")) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
return proxy;
}
if (
requestDetails.cookieStoreId == 'firefox-default' ||
requestDetails.cookieStoreId == 'firefox-private'
requestDetails.cookieStoreId == "firefox-default" ||
requestDetails.cookieStoreId == "firefox-private"
) {
if (browser.windows != undefined) {
return browser.proxy.settings.get({});
}
}
if (requestDetails.tabId > 0) {
if (requestDetails.url.includes('MuWire')) {
if (requestDetails.url.includes("MuWire")) {
return;
}
if (proxyHost(requestDetails.url)) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
return proxy;
} else if (i2pHost(requestDetails.url)) {
@ -245,69 +245,68 @@ var handleContextProxyRequest = async function(requestDetails) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
port: getPort(),
};
//console.log('(proxy for rpc url)', rpc);
return proxy;
}
} catch (error) {
console.log('(proxy)Not using I2P Proxy.', error);
console.log("(proxy)Not using I2P Proxy.", error);
}
}
};
function SetupSettings() {
console.log('Initialising Settings');
console.log("Initialising Settings");
function onSetupError() {
console.log('Settings initialization error');
console.log("Settings initialization error");
}
//
function checkSchemeStoredSettings(storedSettings) {
if (storedSettings.proxy_scheme == undefined)
storedSettings.proxy_scheme = 'http';
storedSettings.proxy_scheme = "http";
else proxy_scheme = storedSettings.proxy_scheme;
console.log('Initialising Proxy Scheme', storedSettings.proxy_scheme);
console.log("Initialising Proxy Scheme", storedSettings.proxy_scheme);
setupProxy();
}
var gettingSchemeStoredSettings = browser.storage.local.get('proxy_scheme');
var gettingSchemeStoredSettings = browser.storage.local.get("proxy_scheme");
gettingSchemeStoredSettings.then(checkSchemeStoredSettings, onSetupError);
//
function checkHostStoredSettings(storedSettings) {
if (storedSettings.proxy_host == undefined)
storedSettings.proxy_host = '127.0.0.1';
storedSettings.proxy_host = "127.0.0.1";
else proxy_host = storedSettings.proxy_host;
console.log('Initialising Host', storedSettings.proxy_host);
console.log("Initialising Host", storedSettings.proxy_host);
setupProxy();
}
var gettingHostStoredSettings = browser.storage.local.get('proxy_host');
var gettingHostStoredSettings = browser.storage.local.get("proxy_host");
gettingHostStoredSettings.then(checkHostStoredSettings, onSetupError);
//
function checkPortStoredSettings(storedSettings) {
if (storedSettings.proxy_port == undefined)
storedSettings.proxy_port = '4444';
storedSettings.proxy_port = "4444";
else proxy_port = storedSettings.proxy_port;
console.log('Initialising Port', storedSettings.proxy_port);
console.log("Initialising Port", storedSettings.proxy_port);
setupProxy();
}
var gettingPortStoredSettings = browser.storage.local.get('proxy_port');
var gettingPortStoredSettings = browser.storage.local.get("proxy_port");
gettingPortStoredSettings.then(checkPortStoredSettings, onSetupError);
//
function checkControlHostStoredSettings(storedSettings) {
if (storedSettings.control_host == undefined)
storedSettings.control_host = '127.0.0.1';
storedSettings.control_host = "127.0.0.1";
else control_host = storedSettings.control_host;
console.log('Initialising Control Host', storedSettings.control_host);
console.log("Initialising Control Host", storedSettings.control_host);
setupProxy();
}
var gettingControlHostStoredSettings = browser.storage.local.get(
'control_host'
);
var gettingControlHostStoredSettings =
browser.storage.local.get("control_host");
gettingControlHostStoredSettings.then(
checkControlHostStoredSettings,
onSetupError
@ -316,15 +315,14 @@ function SetupSettings() {
//
function checkControlPortStoredSettings(storedSettings) {
if (storedSettings.control_port == undefined)
storedSettings.control_port = '7657';
storedSettings.control_port = "7657";
else control_port = storedSettings.control_port;
console.log('Initialising Control Port', storedSettings.control_port);
console.log("Initialising Control Port", storedSettings.control_port);
setupProxy();
}
var gettingControlPortStoredSettings = browser.storage.local.get(
'control_port'
);
var gettingControlPortStoredSettings =
browser.storage.local.get("control_port");
gettingControlPortStoredSettings.then(
checkControlPortStoredSettings,
onSetupError
@ -337,28 +335,27 @@ function SetupSettings() {
else disable_history = storedSettings.disable_history;
console.log(
'Initialising Disabled History',
"Initialising Disabled History",
storedSettings.disable_history
);
setupProxy();
}
var gettingHistoryStoredSettings = browser.storage.local.get(
'disable_history'
);
var gettingHistoryStoredSettings =
browser.storage.local.get("disable_history");
gettingHistoryStoredSettings.then(checkHistoryStoredSettings, onSetupError);
}
function getScheme() {
if (proxy_scheme == 'HTTP') return 'http';
if (proxy_scheme == 'SOCKS') return 'socks';
if (proxy_scheme == 'http') return 'http';
if (proxy_scheme == 'socks') return 'socks';
else return 'http';
if (proxy_scheme == "HTTP") return "http";
if (proxy_scheme == "SOCKS") return "socks";
if (proxy_scheme == "http") return "http";
if (proxy_scheme == "socks") return "socks";
else return "http";
}
function getHost() {
if (proxy_host == undefined) {
proxy_host = '127.0.0.1';
proxy_host = "127.0.0.1";
}
return proxy_host;
}
@ -366,8 +363,8 @@ function getHost() {
function getPort() {
if (proxy_port == undefined) {
var scheme = getScheme();
if (scheme == 'socks') proxy_port = '4446';
else proxy_port = '4444';
if (scheme == "socks") proxy_port = "4446";
else proxy_port = "4444";
}
return proxy_port;
}
@ -375,31 +372,31 @@ function getPort() {
function getConsolePort() {
if (control_port == undefined) {
var scheme = getScheme();
if (scheme == 'socks') proxy_port = '7657';
else control_port = '7657';
if (scheme == "socks") proxy_port = "7657";
else control_port = "7657";
}
return control_port;
}
function setupProxy() {
console.log('Setting up Firefox WebExtension proxy');
console.log("Setting up Firefox WebExtension proxy");
browser.proxy.onRequest.addListener(handleContextProxyRequest, {
urls: ['<all_urls>']
urls: ["<all_urls>"],
});
console.log('i2p settings created for WebExtension Proxy');
console.log("i2p settings created for WebExtension Proxy");
}
function update() {
console.log('restoring proxy scheme:', proxy_scheme);
console.log('restoring proxy host:', proxy_host);
console.log('restoring proxy port:', proxy_port);
console.log('restoring control host:', control_host);
console.log('restoring control port:', control_port);
console.log("restoring proxy scheme:", proxy_scheme);
console.log("restoring proxy host:", proxy_host);
console.log("restoring proxy port:", proxy_port);
console.log("restoring control host:", control_host);
console.log("restoring control port:", control_port);
}
function updateFromStorage() {
console.log('updating settings from storage');
chrome.storage.local.get(function() {
console.log("updating settings from storage");
chrome.storage.local.get(function () {
SetupSettings();
update();
setupProxy();
@ -415,7 +412,7 @@ var gettingListenerInfo = browser.runtime.getPlatformInfo();
gettingListenerInfo.then((got) => {
if (browser.windows != undefined) {
browser.windows.onCreated.addListener(() => {
chrome.storage.local.get(function() {
chrome.storage.local.get(function () {
setupProxy();
});
});

View File

@ -1,7 +1,7 @@
browser.runtime.onMessage.addListener((request) => {
var response = 'no-alt-location';
var response = "no-alt-location";
console.log(request);
if (request.req === 'i2p-location') {
if (request.req === "i2p-location") {
var tag = document.querySelector('meta[http-equiv="i2p-location"]');
if (tag != undefined) {
console.log(tag);
@ -13,7 +13,7 @@ browser.runtime.onMessage.addListener((request) => {
if (tag) response = tag.content;
}
}
if (request.req === 'i2p-torrentlocation') {
if (request.req === "i2p-torrentlocation") {
var tag = document.querySelector('meta[http-equiv="i2p-torrentlocation"]');
if (tag != undefined) {
console.log(tag);

502
scrub.js
View File

@ -1,36 +1,36 @@
var titlepref = chrome.i18n.getMessage('titlePreface');
var webpref = chrome.i18n.getMessage('webPreface');
var routerpref = chrome.i18n.getMessage('routerPreface');
var mailpref = chrome.i18n.getMessage('mailPreface');
var torrentpref = chrome.i18n.getMessage('torrentPreface');
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 blogpref = chrome.i18n.getMessage('blogPreface');
var blogprefpriv = chrome.i18n.getMessage('blogPrefacePrivate');
var titlepref = chrome.i18n.getMessage("titlePreface");
var webpref = chrome.i18n.getMessage("webPreface");
var routerpref = chrome.i18n.getMessage("routerPreface");
var mailpref = chrome.i18n.getMessage("mailPreface");
var torrentpref = chrome.i18n.getMessage("torrentPreface");
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 blogpref = chrome.i18n.getMessage("blogPreface");
var blogprefpriv = chrome.i18n.getMessage("blogPrefacePrivate");
var contextScrub = async function(requestDetails) {
var contextScrub = async function (requestDetails) {
function onHeaderError() {
console.log('Header scrub error');
console.log("Header scrub error");
}
try {
var headerScrub = function(context) {
var ua = 'MYOB/6.66 (AN/ON)';
var headerScrub = function (context) {
var ua = "MYOB/6.66 (AN/ON)";
if (!context) {
} else if (context.name == titlepref) {
for (var header of requestDetails.requestHeaders) {
if (header.name.toLowerCase() === 'user-agent') {
if (header.name.toLowerCase() === "user-agent") {
header.value = ua;
}
}
return {
requestHeaders: requestDetails.requestHeaders
requestHeaders: requestDetails.requestHeaders,
};
}
};
var contextGet = async function(tabInfo) {
var contextGet = async function (tabInfo) {
try {
//console.log("(scrub)Tab info from Function", tabInfo);
let context = await browser.contextualIdentities.get(
@ -41,7 +41,7 @@ var contextScrub = async function(requestDetails) {
return undefined;
}
};
var tabGet = async function(tabId) {
var tabGet = async function (tabId) {
try {
//console.log("(scrub)Tab ID from Request", tabId);
let tabInfo = await browser.tabs.get(tabId);
@ -58,41 +58,41 @@ var contextScrub = async function(requestDetails) {
return req;
}
} catch (error) {
console.log('(scrub)Not scrubbing non-I2P request.', error);
console.log("(scrub)Not scrubbing non-I2P request.", error);
}
}
};
var notMyContextNotMyProblem = async function() {
var notMyContextNotMyProblem = async function () {
var contexts = await browser.contextualIdentities.query({});
var context1 = await browser.contextualIdentities.query({
name: titlepref
name: titlepref,
});
var context2 = await browser.contextualIdentities.query({
name: routerpref
name: routerpref,
});
var context3 = await browser.contextualIdentities.query({
name: mailpref
name: mailpref,
});
var context4 = await browser.contextualIdentities.query({
name: torrentpref
name: torrentpref,
});
var context5 = await browser.contextualIdentities.query({
name: tunnelpref
name: tunnelpref,
});
var context6 = await browser.contextualIdentities.query({
name: ircpref
name: ircpref,
});
var context7 = await browser.contextualIdentities.query({
name: muwirepref
name: muwirepref,
});
var context7 = await browser.contextualIdentities.query({
name: botepref
name: botepref,
});
var context8 = await browser.contextualIdentities.query({
name: blogpref
name: blogpref,
});
var othercontexts = [];
console.log('Contexts:', contexts);
console.log("Contexts:", contexts);
for (context in contexts) {
if (
contexts[context].cookieStoreId == context1[0].cookieStoreId ||
@ -104,9 +104,9 @@ var notMyContextNotMyProblem = async function() {
contexts[context].cookieStoreId == context7[0].cookieStoreId
) {
console.log(
'Context found',
"Context found",
contexts[context].cookieStoreId,
'is my responsibility'
"is my responsibility"
);
} else {
//console.log("Context found", contexts[context].cookieStoreId, "is not my responsibility")
@ -114,51 +114,62 @@ var notMyContextNotMyProblem = async function() {
}
}
return othercontexts;
}
};
var contextSetup = function(requestDetails) {
var contextSetup = function (requestDetails) {
function onContextError() {
console.error('Context launcher error');
console.error("Context launcher error");
}
async function forceIntoIsolation(tabId, contextidentifier, tab, pin = true) {
console.info(
'(isolate) forcing context for',
"(isolate) forcing context for",
tabId,
contextidentifier,
tab
);
try {
var context = await browser.contextualIdentities.query({
name: contextidentifier
name: contextidentifier,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log(
'(isolate) Closing un-isolated tab',
"(isolate) Closing un-isolated tab",
tabId.id,
'in favor of',
"in favor of",
tab.id,
'with context',
"with context",
tab.cookieStoreId
);
browser.tabs.remove(tabId.id);
if (pin) {
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);
}
}
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'security.html'
popup: "security.html",
});
browser.pageAction.show(tabId.id);
}
closeOldTab(tab);
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
// closeOldTab(tab);
}
var created = browser.tabs.create({
active: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
pinned: pin
pinned: pin,
});
created.then(onCreated, onContextError);
}
@ -167,67 +178,67 @@ var contextSetup = function(requestDetails) {
return tabId;
}
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
}
try {
var i2pTabFind = async function(tabId) {
console.info('(isolate)Context Discovery browser');
var i2pTabFind = async function (tabId) {
console.info("(isolate)Context Discovery browser");
try {
var context = await browser.contextualIdentities.query({
name: titlepref
name: titlepref,
});
return forceIntoIsolation(tabId, titlepref, tab, false);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var routerTabFind = async function(tabId) {
console.info('(isolate)Context Discovery console');
var routerTabFind = async function (tabId) {
console.info("(isolate)Context Discovery console");
try {
var context = await browser.contextualIdentities.query({
name: routerpref
name: routerpref,
});
return forceIntoIsolation(tabId, routerpref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var i2ptunnelTabFind = async function(tabId) {
console.info('(isolate)Context Discovery browser');
var i2ptunnelTabFind = async function (tabId) {
console.info("(isolate)Context Discovery browser");
try {
var context = await browser.contextualIdentities.query({
name: tunnelpref
name: tunnelpref,
});
return forceIntoIsolation(tabId, tunnelpref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var snarkTabFind = async function(tabId) {
console.info('(isolate)Context Discovery torrents');
var snarkTabFind = async function (tabId) {
console.info("(isolate)Context Discovery torrents");
try {
var context = await browser.contextualIdentities.query({
name: torrentpref
name: torrentpref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
var exemptContext = await browser.contextualIdentities.query({
name: titlepref
name: titlepref,
});
let tmp = new URL(tabId.url);
console.log('(isolate)tabid host', tmp.host);
if (!requestDetails.url.includes('snark/' + tmp.host)) {
console.log("(isolate)tabid host", tmp.host);
if (!requestDetails.url.includes("snark/" + tmp.host)) {
// if (tabId.cookieStoreId != exemptContext[0].cookieStoreId){
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log(
'(isolate) Closing un-isolated tab',
"(isolate) Closing un-isolated tab",
tabId.id,
'in favor of',
"in favor of",
tab.id,
'with context',
"with context",
tab.cookieStoreId
);
browser.tabs.remove(tabId.id);
@ -239,20 +250,20 @@ var contextSetup = function(requestDetails) {
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId
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 + '/i2psnark/';
if (requestDetails.url.endsWith("xhr1.html")) {
hostname = url.split("/")[2];
let prefix = url.substr(0, url.indexOf("://") + 3);
requestDetails.url = prefix + hostname + "/i2psnark/";
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
@ -262,71 +273,71 @@ var contextSetup = function(requestDetails) {
}
}
} catch (error) {
console.log('(isolate)Context Error', error);
console.log("(isolate)Context Error", error);
}
};
var muwireTabFind = async function(tabId) {
console.info('(isolate)Context Discovery muwire');
var muwireTabFind = async function (tabId) {
console.info("(isolate)Context Discovery muwire");
try {
var context = await browser.contextualIdentities.query({
name: muwirepref
name: muwirepref,
});
return forceIntoIsolation(tabId, muwirepref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var i2pboteTabFind = async function(tabId) {
console.info('(isolate)Context Discovery bote');
var i2pboteTabFind = async function (tabId) {
console.info("(isolate)Context Discovery bote");
try {
var context = await browser.contextualIdentities.query({
name: botepref
name: botepref,
});
return forceIntoIsolation(tabId, botepref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var mailTabFind = async function(tabId) {
console.info('(isolate)Context Discovery mail');
var mailTabFind = async function (tabId) {
console.info("(isolate)Context Discovery mail");
try {
var context = await browser.contextualIdentities.query({
name: mailpref
name: mailpref,
});
return forceIntoIsolation(tabId, mailpref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var ircTabFind = async function(tabId) {
console.info('(isolate)Context Discovery irc');
var ircTabFind = async function (tabId) {
console.info("(isolate)Context Discovery irc");
try {
var context = await browser.contextualIdentities.query({
name: ircpref
name: ircpref,
});
return forceIntoIsolation(tabId, ircpref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var blogTabFind = async function(tabId) {
console.info('(isolate)Context Discovery blog');
var blogTabFind = async function (tabId) {
console.info("(isolate)Context Discovery blog");
try {
var context = await browser.contextualIdentities.query({
name: blogpref
name: blogpref,
});
return forceIntoIsolation(tabId, blogpref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
console.error("(isolate)Context Error", error);
}
};
var tabGet = async function(tabId) {
var tabGet = async function (tabId) {
try {
//console.log("(isolate)Tab ID from Request", tabId);
let tabInfo = await browser.tabs.get(tabId);
return tabInfo;
} catch (error) {
console.log('(isolate)Tab error', error);
console.log("(isolate)Tab error", error);
}
};
if (requestDetails == undefined) {
@ -336,7 +347,7 @@ var contextSetup = function(requestDetails) {
setcookie = browser.cookies.set({
firstPartyDomain: i2pHostName(requestDetails.url),
url: requestDetails.url,
secure: true
secure: true,
});
setcookie.then(onContextGotLog, onContextError);
return requestDetails;
@ -350,31 +361,31 @@ var contextSetup = function(requestDetails) {
let localhost = localHost(requestDetails.url);
let routerhost = routerHost(requestDetails.url);
if (routerhost) {
if (routerhost === 'i2ptunnelmgr') {
if (routerhost === "i2ptunnelmgr") {
var tunneltab = tab.then(i2ptunnelTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'i2psnark') {
} else if (routerhost === "i2psnark") {
var snarktab = tab.then(snarkTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'webmail') {
} else if (routerhost === "webmail") {
var mailtab = tab.then(mailTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'muwire') {
} else if (routerhost === "muwire") {
var routertab = tab.then(muwireTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'i2pbote') {
} else if (routerhost === "i2pbote") {
var routertab = tab.then(i2pboteTabFind, onContextError);
return requestDetails;
} else if (routerhost === 'routerconsole') {
} else if (routerhost === "routerconsole") {
var routertab = tab.then(routerTabFind, onContextError);
return requestDetails;
}
} else {
if (localhost) {
if (localhost === 'blog') {
if (localhost === "blog") {
var routertab = tab.then(blogTabFind, onContextError);
return requestDetails;
} else if (localhost === 'irc') {
} else if (localhost === "irc") {
var irctab = tab.then(ircTabFind, onContextError);
return requestDetails;
}
@ -383,26 +394,26 @@ var contextSetup = function(requestDetails) {
// if (oldtab.cookieStoreId == 'firefox-default') {
if (i2pHost(requestDetails.url)) {
var thn = i2pHostName(requestDetails.url);
if (requestDetails.url.includes('=' + thn)) {
if (requestDetails.url.includes("=" + thn)) {
if (
!requestDetails.url.includes('://github.com') ||
!requestDetails.url.includes('://notabug.org') ||
!requestDetails.url.includes('://i2pgit.org') ||
!requestDetails.url.includes('://gitlab.com')
!requestDetails.url.includes("://github.com") ||
!requestDetails.url.includes("://notabug.org") ||
!requestDetails.url.includes("://i2pgit.org") ||
!requestDetails.url.includes("://gitlab.com")
) {
if (!localhost) {
console.log('(scrub)checking search hostnames =' + thn);
var tpt = requestDetails.url.split('=' + thn, 2);
console.log("(scrub)checking search hostnames =" + thn);
var tpt = requestDetails.url.split("=" + thn, 2);
requestDetails.url =
'http://' + thn + '/' + tpt[1].replace('%2F', '');
"http://" + thn + "/" + tpt[1].replace("%2F", "");
}
}
}
console.log('(scrub) new hostname', requestDetails.url);
console.log("(scrub) new hostname", requestDetails.url);
var setcookie = browser.cookies.set({
firstPartyDomain: i2pHostName(requestDetails.url),
url: requestDetails.url,
secure: true
secure: true,
});
setcookie.then(onContextGotLog, onContextError);
if (!routerhost) {
@ -418,11 +429,11 @@ var contextSetup = function(requestDetails) {
}
}
} catch (error) {
console.log('(isolate)Not an I2P request, blackholing', error);
console.log("(isolate)Not an I2P request, blackholing", error);
}
};
var coolheadersSetup = function(e) {
var coolheadersSetup = function (e) {
var asyncSetPageAction = new Promise((resolve, reject) => {
window.setTimeout(() => {
if (e.tabId != undefined) {
@ -430,80 +441,87 @@ var coolheadersSetup = function(e) {
popup.then(gotPopup);
}
function gotPopup(p) {
console.log('(scrub) checking popup', p);
if (p.length != 0) return;
let headers = e.responseHeaders.filter((word) =>
word.name.toUpperCase().includes('I2P')
console.log("(scrub)(header check) checking popup", p);
console.log(
"(scrub)(header check) checking headers",
e.responseHeaders
);
let headers = e.responseHeaders.filter((word) =>
word.name.toUpperCase().includes("I2P")
);
console.log("(scrub)(header check) checking filtered headers", headers);
for (i = headers.length - 1; i >= 0; i--) {
let header = headers[i];
console.log('(scrub) checking header', header);
if (header.name.toUpperCase().endsWith('I2P-LOCATION')) {
console.log("(scrub)(header check) checking header", header);
if (header.name.toUpperCase().endsWith("I2P-LOCATION")) {
var tab = browser.tabs.get(e.tabId);
tab.then(altSrc);
function altSrc(tab) {
console.log('(scrub) X-I2P-LOCATION', header.value);
console.log("(scrub) X-I2P-LOCATION", header.value);
let url = new URL(header.value);
browser.pageAction.setPopup({
tabId: e.tabId,
popup: 'location.html'
popup: "location.html",
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId
path: "icons/i2plogo.png",
tabId: e.tabId,
});
let eurl = new URL(tab.url);
browser.pageAction.setTitle({
tabId: e.tabId,
title: 'http://' + url.host + eurl.pathname
title: "http://" + url.host + eurl.pathname,
});
browser.pageAction.show(e.tabId);
}
break;
}
if (header.name.toUpperCase().endsWith('I2P-TORRENTLOCATION')) {
console.log('(scrub) checking header torrentlocation', header);
var imgs = document.getElementsByTagName('img');
if (header.name.toUpperCase().endsWith("I2P-TORRENTLOCATION")) {
console.log(
"(scrub)(header check) checking header torrentlocation",
header
);
var imgs = document.getElementsByTagName("img");
for (let img of imgs) {
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
"http://127.0.0.1:7657/i2psnark/" +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.onerror = function () {
img.src = tmpsrc;
};
}
}
var videos = document.getElementsByTagName('video');
var videos = document.getElementsByTagName("video");
for (let video of videos) {
let tmpsrc = new URL(video.currentSrc);
if (tmpsrc.host == location.host) {
if (!video.innerHTML.includes('127.0.0.1')) {
if (!video.innerHTML.includes("127.0.0.1")) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
);
video.innerHTML = topInnerHTML; // + innerHTML;
video.onerror = function() {
video.onerror = function () {
video.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
var audios = document.getElementsByTagName('audio');
var audios = document.getElementsByTagName("audio");
for (let audio of audios) {
let tmpsrc = new URL(audio.currentSrc);
if (tmpsrc.host == location.host) {
if (!audio.innerHTML.includes('127.0.0.1')) {
if (!audio.innerHTML.includes("127.0.0.1")) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
'src="http://127.0.0.1:7657/i2psnark/' + location.host + "/"
);
audio.innerHTML = topInnerHTML; // + innerHTML;
audio.onerror = function() {
audio.onerror = function () {
audio.innerHTML = topInnerHTML + innerHTML;
};
}
@ -511,22 +529,22 @@ var coolheadersSetup = function(e) {
}
browser.pageAction.setPopup({
tabId: e.tabId,
popup: 'torrent.html'
popup: "torrent.html",
});
if (tab.url.startsWith('https')) {
if (tab != undefined && tab.url.startsWith("https")) {
browser.pageAction.setIcon({
path: 'icons/infotoopiesbt.png',
tabId: e.tabId
path: "icons/infotoopiesbt.png",
tabId: e.tabId,
});
} else {
browser.pageAction.setIcon({
path: 'icons/infotoopiebt.png',
tabId: e.tabId
path: "icons/infotoopiebt.png",
tabId: e.tabId,
});
}
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value
title: header.value,
});
browser.pageAction.show(e.tabId);
break;
@ -540,23 +558,106 @@ var coolheadersSetup = function(e) {
};
function getTabURL(tab) {
if (tab.url.startsWith("https")) {
if (tab.url.includes(".i2p")) {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "security.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopies.png",
tabId: tab.id,
});
console.log(tab.url);
//console.log("(background) tabinfo", tabInfo[0].id)
console.log("(scrub)(equiv check) popup check", tab);
if (tab.id != undefined) {
popup = browser.pageAction.getPopup({ tabId: tab.id });
console.log("(scrub)(equiv check) popup check");
popup.then(gotPopup);
}
function gotPopup(p) {
if (p.length != 0) return;
if (tab.url.startsWith("https")) {
if (tab.url.includes(".i2p")) {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "security.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopies.png",
tabId: tab.id,
});
console.log(tab.url);
//console.log("(background) tabinfo", tabInfo[0].id)
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-torrentlocation" })
.then((response) => {
if (response != undefined && response != "") {
console.log(
"(scrub)(equiv check) i2p-torrentlocation response object",
response
);
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "torrent.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopiesbt.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
tabId: tab.id,
title: response.content,
});
browser.pageAction.show(tab.id);
}
}
});
console.log("(scrub)(equiv check)", tab.id, tab.url);
} catch (e) {
console.log("(scrub)(equiv check)", e);
}
} else {
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-location" })
.then((response) => {
if (response != undefined) {
console.log(
"(scrub)(equiv check) i2p-location response object",
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("(scrub)(equiv check)", tab.id, tab.url);
} catch (e) {
console.log("(scrub)(equiv check)", e);
}
}
} else {
if (tab.url.includes(".i2p")) {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "security.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopie.png",
tabId: tab.id,
});
console.log(tab.url);
}
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-torrentlocation" })
.then((response) => {
if (response != undefined && response != "") {
if (response != undefined) {
console.log(
"(pageaction) i2p-torrentlocation response object",
response
@ -567,7 +668,7 @@ function getTabURL(tab) {
popup: "torrent.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopiesbt.png",
path: "icons/infotoopiebt.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
@ -582,79 +683,6 @@ function getTabURL(tab) {
} catch (e) {
console.log("(pageaction)", e);
}
} else {
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-location" })
.then((response) => {
if (response != undefined) {
console.log(
"(pageaction) i2p-location response object",
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);
} catch (e) {
console.log("(pageaction)", e);
}
}
} else {
if (tab.url.includes(".i2p")) {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "security.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopie.png",
tabId: tab.id,
});
console.log(tab.url);
}
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-torrentlocation" })
.then((response) => {
if (response != undefined) {
console.log(
"(pageaction) i2p-torrentlocation response object",
response
);
if (response.content.toUpperCase() != "NO-ALT-LOCATION") {
browser.pageAction.setPopup({
tabId: tab.id,
popup: "torrent.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopiebt.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);
} catch (e) {
console.log("(pageaction)", e);
}
}
}

View File

@ -1,12 +1,12 @@
function gotCurrent(tab) {
function gotTitle(title) {
let addr = title;
document.getElementById('TypeInfo').innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + '</a></div>';
document.getElementById("TypeInfo").innerHTML =
'<div class="AddressInfo"><a href="' + addr + '">' + addr + "</a></div>";
}
console.log(tab);
var gettingTitle = browser.pageAction.getTitle({
tabId: tab[0].id
tabId: tab[0].id,
});
gettingTitle.then(gotTitle);
}

View File

@ -1,18 +1,18 @@
'use strict';
"use strict";
////// Session extraction
function setupExtractor() {
browser.webRequest.onHeadersReceived.removeListener(extractSession);
browser.storage.local.get('server').then(({ server }) => {
browser.storage.local.get("server").then(({ server }) => {
if (!server) {
return;
}
console.log('Session extractor setup for', server.base_url);
console.log("Session extractor setup for", server.base_url);
browser.webRequest.onBeforeSendHeaders.addListener(
extractSession,
{ urls: [server.base_url + '*'] },
['requestHeaders']
{ urls: [server.base_url + "*"] },
["requestHeaders"]
);
});
}
@ -126,20 +126,22 @@ function createContextMenu() {
});
}
if (browser.windows != undefined){
if (browser.windows != undefined) {
createContextMenu();
browser.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "transmitter-add") {
return addUrl(info.linkUrl);
} else if (info.menuItemId.startsWith("transmitter-add-loc-")) {
let index = parseInt(info.menuItemId.substr("transmitter-add-loc-".length));
browser.storage.local.get("server").then(({ server }) => {
let path = server.locations[index].path;
addUrl(info.linkUrl, path);
});
}
});
browser.contextMenus.onClicked.addListener((info, tab) => {
if (info.menuItemId === "transmitter-add") {
return addUrl(info.linkUrl);
} else if (info.menuItemId.startsWith("transmitter-add-loc-")) {
let index = parseInt(
info.menuItemId.substr("transmitter-add-loc-".length)
);
browser.storage.local.get("server").then(({ server }) => {
let path = server.locations[index].path;
addUrl(info.linkUrl, path);
});
}
});
}
////// Badge

View File

@ -1,30 +1,30 @@
'use strict';
"use strict";
////// RPC
function rpcCall(meth, args) {
return browser.storage.local.get(function(server) {
return browser.storage.local.get(function (server) {
const myHeaders = {
'Content-Type': 'application/json',
'x-transmission-session-id': server.session
"Content-Type": "application/json",
"x-transmission-session-id": server.session,
};
//console.log("(torrent)", server.session)
if (server.username !== '' || server.btrpcpass !== '') {
myHeaders['Authorization'] =
'Basic ' +
btoa((server.username || '') + ':' + (server.btrpcpass || ''));
if (server.username !== "" || server.btrpcpass !== "") {
myHeaders["Authorization"] =
"Basic " +
btoa((server.username || "") + ":" + (server.btrpcpass || ""));
}
//console.log("(torrent) rpc", server.base_url);
return fetch(server.base_url + 'rpc', {
method: 'POST',
return fetch(server.base_url + "rpc", {
method: "POST",
headers: myHeaders,
body: JSON.stringify({ method: meth, arguments: args }),
credentials: 'include' // allows HTTPS client certs!
credentials: "include", // allows HTTPS client certs!
})
.then(function(response) {
const session = response.headers.get('x-transmission-session-id');
.then(function (response) {
const session = response.headers.get("x-transmission-session-id");
if (session) {
browser.storage.local.get({}).then(function(storage) {
browser.storage.local.get({}).then(function (storage) {
storage.session = session;
browser.storage.local.set(storage);
});
@ -39,7 +39,7 @@ function rpcCall(meth, args) {
error.response = response;
throw error;
})
.then(function(response) {
.then(function (response) {
return response.json();
});
});
@ -50,11 +50,11 @@ function rpcCall(meth, args) {
function formatSpeed(s) {
// Firefox shows 4 characters max
if (s < 1000 * 1000) {
return (s / 1000).toFixed() + 'K';
return (s / 1000).toFixed() + "K";
}
if (s < 1000 * 1000 * 1000) {
return (s / 1000 / 1000).toFixed() + 'M';
return (s / 1000 / 1000).toFixed() + "M";
}
// You probably don't have that download speed…
return (s / 1000 / 1000 / 1000).toFixed() + 'T';
return (s / 1000 / 1000 / 1000).toFixed() + "T";
}

View File

@ -1,27 +1,27 @@
'use strict';
"use strict";
var TrpcCall = async function(meth, args) {
var TrpcCall = async function (meth, args) {
const server = await browser.storage.local.get(null);
const myHeaders = {
'Content-Type': 'application/json',
'x-transmission-session-id': server.session
"Content-Type": "application/json",
"x-transmission-session-id": server.session,
};
console.log('(torrent) session', server.session);
if (server.username !== '' || server.bt_rpc_pass !== '') {
myHeaders['Authorization'] =
'Basic ' +
btoa((server.username || '') + ':' + (server.bt_rpc_pass || ''));
console.log("(torrent) session", server.session);
if (server.username !== "" || server.bt_rpc_pass !== "") {
myHeaders["Authorization"] =
"Basic " +
btoa((server.username || "") + ":" + (server.bt_rpc_pass || ""));
}
let req_url = 'http://' + server.bt_rpc_host;
if (server.bt_rpc_port != 0) req_url += ':' + server.bt_rpc_port;
req_url += '/' + server.bt_rpc_path;
console.log('(torrent) rpcurl', req_url);
return fetch(req_url + 'rpc', {
method: 'POST',
let req_url = "http://" + server.bt_rpc_host;
if (server.bt_rpc_port != 0) req_url += ":" + server.bt_rpc_port;
req_url += "/" + server.bt_rpc_path;
console.log("(torrent) rpcurl", req_url);
return fetch(req_url + "rpc", {
method: "POST",
headers: myHeaders,
body: JSON.stringify({ method: meth, arguments: args }),
credentials: 'include' // allows HTTPS client certs!
credentials: "include", // allows HTTPS client certs!
});
/*.then(function(response) {
@ -37,13 +37,13 @@ var TrpcCall = async function(meth, args) {
error.response = response;
throw error;
});*/
}
};
const torrentsPane = document.getElementById('torrents-pane');
const configPane = document.getElementById('config-pane');
const torrentsPane = document.getElementById("torrents-pane");
const configPane = document.getElementById("config-pane");
for (const opener of document.querySelectorAll('.config-opener')) {
opener.addEventListener('click', (e) => {
for (const opener of document.querySelectorAll(".config-opener")) {
opener.addEventListener("click", (e) => {
browser.runtime.openOptionsPage();
});
}

View File

@ -29,8 +29,8 @@
<div class="topnav">
<a class="applicationName window-visit-homepage" href="#" id="window-visit-homepage" target="_blank">Home Page</a>
<form action="http://yacy.idk.i2p/yacysearch.html?" method="get">
<input id="search-query" name="query" placeholder="Search on yacy.idk.i2p(Opens a new tab)" type="search"> <input id="search-submit" text="Submit" type="submit">
<form action="http://legwork.i2p/yacysearch.html?" method="get">
<input id="search-query" name="query" placeholder="Search on legwork.i2p(Opens a new tab)" type="search"> <input id="search-submit" text="Submit" type="submit">
</form>
</div>
@ -113,7 +113,7 @@
<br>
The server address is not set yet.
<br>
<a class="torrent-opener" id="window-visit-torrent" href="#">For assistance, visit the torrent help page</a>.
<a class="torrent-opener" href="#" id="window-visit-torrent">For assistance, visit the torrent help page</a>.
<br>
<a class="config-opener" href="#">Open the settings</a> to continue.
</div>
@ -121,7 +121,8 @@
<div id="torrents-pane">
<header>
<h1>Torrent Controls</h1>
<a class="webui-opener" href="#" target="_blank"><img alt="Open Web UI" src="images/i2plogo.png"></a> <!--<a class="config-opener" href="#">
<img alt="Open WebUI" src="icons/i2plogo.png">
<a class="webui-opener" id="torrentui-opener" href="#">Open WebUI</a> <!--<a class="config-opener" href="#">
<img alt="Settings" src="images/gear.svg"></a>
<a class="info-opener" href="https://github.com/myfreeweb/transmitter" target="_blank">
<img alt="Extension Info" src="images/info.svg"></a>-->