1 Commits

22 changed files with 703 additions and 798 deletions

View File

@@ -37,11 +37,11 @@ clean: rc clean-artifacts
## EVEN RELEASES are AMO RELEASES
## ODD RELEASES are SELFHOSTED RELEASES
MOZ_VERSION=0.126
VERSION=0.125
MOZ_VERSION=0.112
VERSION=0.111
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
LAST_VERSION=0.123
LAST_VERSION=0.109
YELLOW=F7E59A
ORANGE=FFC56D
@@ -147,10 +147,7 @@ recreate-release: delete-release release upload
upload: upload-xpi upload-deb
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
full-release: release submit upload-xpi torrent upload-torrent deb upload-deb upload-rss seed
WEB_EXT_API_KEY=AMO_KEY
WEB_EXT_API_SECRET=AMO_SECRET
@@ -185,7 +182,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; true #--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 #--api-url-prefix http://localhost:3000/api/v4
sleep 5
mv .manifest.json manifest.json
@@ -287,8 +284,6 @@ 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:
@@ -371,15 +366,3 @@ lht-test:
-u http://localhost:7657/webmail \
-u http://localhost:7657/MuWire/ \
-u http://idk.i2p
android:
$(HOME)/web-ext/bin/web-ext run --target firefox-android \
--android-device NE1GAM7780819544 \
--browser-console
run:
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging
chromium:
$(HOME)/web-ext/bin/web-ext run --target chromium

View File

@@ -2,14 +2,13 @@ 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, 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.
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.
Privacy Policy
--------------

View File

@@ -1,23 +1,23 @@
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 = browser.i18n.getMessage("titlePreface");
var titleprefpriv = browser.i18n.getMessage("titlePrefacePrivate");
var webpref = browser.i18n.getMessage("webPreface");
var webprefpriv = browser.i18n.getMessage("webPrefacePrivate");
var routerpref = browser.i18n.getMessage("routerPreface");
var routerprefpriv = browser.i18n.getMessage("routerPrefacePrivate");
var mailpref = browser.i18n.getMessage("mailPreface");
var mailprefpriv = browser.i18n.getMessage("mailPrefacePrivate");
var torrentpref = browser.i18n.getMessage("torrentPreface");
var torrentprefpriv = browser.i18n.getMessage("torrentPrefacePrivate");
var tunnelpref = browser.i18n.getMessage("i2ptunnelPreface");
var tunnelprefpriv = browser.i18n.getMessage("i2ptunnelPrefacePrivate");
var ircpref = browser.i18n.getMessage("ircPreface");
var ircprefpriv = browser.i18n.getMessage("ircPrefacePrivate");
var extensionpref = browser.i18n.getMessage("extensionPreface");
var muwirepref = browser.i18n.getMessage("muwirePreface");
var muwireprefpriv = browser.i18n.getMessage("muwirePrefacePrivate");
var botepref = browser.i18n.getMessage("botePreface");
var blogpref = browser.i18n.getMessage("blogPreface");
var blogprefpriv = browser.i18n.getMessage("blogPrefacePrivate");
function onError(err) {
console.log("(background)", err);
@@ -204,7 +204,7 @@ function themeWindow(window) {
// Check if the window is in private browsing
function onThemeError() {
console.log("(theme) color set error");
browserTheme();
browser.theme.reset();
}
function dynamicTheme() {
@@ -225,8 +225,7 @@ function themeWindow(window) {
}
function unsetTheme() {
console.log("(theme)Resetting theme window");
browser.theme.reset(window.id);
browser.theme.reset();
}
function logTabs(tabInfo) {
function onContextGotTheme(context) {
@@ -258,8 +257,8 @@ function themeWindow(window) {
console.log("(theme) Active in MuWire window");
dynamicTheme();
} else {
console.log("(theme) Not active in I2P Window");
unsetTheme();
console.log("(theme) Not active in MuWire window");
browser.theme.reset();
}
}
if (
@@ -271,7 +270,7 @@ function themeWindow(window) {
.then(onContextGotTheme, onThemeError);
} else {
console.log("(theme) Not active in I2P window");
unsetTheme();
browser.theme.reset();
}
}
@@ -447,8 +446,7 @@ function onOpenedWindowCheck() {
function checkTabs(ctx) {
for (let context in ctx) {
function conditionallyDelete(tabs) {
if (tabs.length == 0 && context != 0) {
console.log(context);
if (tabs.length == 0) {
browser.contextualIdentities.remove(context.cookieStoreId);
}
}
@@ -462,9 +460,5 @@ function onOpenedWindowCheck() {
onOpenedWindowCheck();
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
if (browser.windows != undefined) {
console.log("windows unavailable on android", browser.runtime.PlatformOs);
browser.windows.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onCreated.addListener(onOpenedWindowCheck);
}
browser.windows.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onCreated.addListener(onOpenedWindowCheck);

View File

@@ -191,7 +191,7 @@ function bookmarksSetup() {
function toolDir(bookmarkToolbar) {
let defaultSettings = {};
chrome.storage.local.set(defaultSettings);
browser.storage.local.set(defaultSettings);
console.log("(bookmarks) created");
var ibbt = browser.bookmarks.search("I2P Toolbar");
function setupDir(ibbt) {
@@ -235,10 +235,8 @@ function conditionalBookmarksSetup(obj) {
}
if (browser != null) {
if (browser.windows != undefined) {
let gettingStorage = browser.storage.local.get("bookmarks_state");
gettingStorage.then(conditionalBookmarksSetup, bookmarksSetup);
}
let gettingStorage = browser.storage.local.get("bookmarks_state");
gettingStorage.then(conditionalBookmarksSetup, bookmarksSetup);
}
const bookmarksButton = document.getElementById("bookmarksButton");

View File

@@ -9,7 +9,7 @@ function blankContent(id) {
function contentUpdateById(id, message) {
let infoTitle = document.getElementById(id);
let messageContent = chrome.i18n.getMessage(message);
let messageContent = browser.i18n.getMessage(message);
if (infoTitle === null) {
console.log("content error", id, messageContent);
return;

View File

@@ -1,6 +1,6 @@
function contentUpdateById(id, message) {
let infoTitle = document.getElementById(id);
let messageContent = chrome.i18n.getMessage(message);
let messageContent = browser.i18n.getMessage(message);
if (infoTitle === null) {
console.log("content error", id, messageContent);
return;
@@ -12,6 +12,7 @@ function contentUpdateById(id, message) {
contentUpdateById("text-section-header", "extensionName");
contentUpdateById("description", "extensionDescription");
contentUpdateById("i2pbrowser-version", "extensionVersion");
contentUpdateById("proxy-check", "proxyFailedStatus");
// Control Section
contentUpdateById("controlHeader", "controlHeader");
@@ -53,12 +54,6 @@ fetch("http://proxy.i2p").then((myJson) => {
if (readyness != null) {
hide(readyness);
}
}, (error) => {
contentUpdateById("proxy-check", "proxyFailedStatus");
let readyness = document.querySelectorAll(".readyness");
if (readyness != null) {
hide(readyness);
}
});
function hide(elements) {

View File

@@ -1,5 +1,5 @@
//var windowIds = []
var titlepref = chrome.i18n.getMessage("titlePreface");
var titlepref = browser.i18n.getMessage("titlePreface");
function onError(error) {
console.log(`Error : ${error}`);

47
debian/changelog vendored
View File

@@ -1,50 +1,3 @@
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
-- idk <hankhill19580@gmail.com> Sun, 26 Sep 2021 00:37:22 -0400
i2psetproxy.js (0.111-1) UNRELEASED; urgency=low
* simplify background theme issue fix

169
home.css
View File

@@ -1,19 +1,23 @@
* {
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;
@@ -21,46 +25,51 @@ 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;
@@ -69,58 +78,63 @@ 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+h2,
ul+h3 {
margin-top: 20px
h3+ul, ul+h3, ul+h2 {
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;
@@ -128,12 +142,14 @@ 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;
@@ -142,14 +158,11 @@ 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;
@@ -157,14 +170,15 @@ 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;
@@ -172,16 +186,19 @@ 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;
@@ -192,9 +209,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;
display: inline-block
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
display: inline-block;
}
#onboarding {
min-height: 5rem;
padding: .5rem;
@@ -207,8 +225,9 @@ 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;
@@ -218,8 +237,9 @@ 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;
@@ -230,10 +250,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;
@@ -243,9 +263,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;
float: left
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
float: left;
}
#proxyReady {
min-height: 3rem;
padding: .5rem;
@@ -258,8 +279,9 @@ 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;
@@ -272,8 +294,9 @@ 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;
@@ -286,41 +309,49 @@ 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,7 +147,6 @@
</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>

10
host.js
View File

@@ -24,14 +24,12 @@ function localHost(url) {
hostname = url.split("/")[0];
}
hostname = hostname.split(":")[0];
console.log("(urlcheck) hostname localhost", hostname);
console.log("(urlcheck) url localhost", url);
console.log("(isolate) hostname localhost", hostname);
console.log("(isolate) url localhost", url);
if (hostname === "127.0.0.1") {
if (url.indexOf(":8084") != -1) return "blog";
if (url.indexOf(":7669") != -1) return "irc";
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";
if (url.indexOf("8084") != -1) return "blog";
}
return false;

View File

@@ -1,420 +1,412 @@
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 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 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
}
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
return postData(
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
message
);
}
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
return postData(
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
message
);
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;
}
let me = authenticate(password, control_host, control_port, control_path);
return await me.then(gettoken);
}
async function authenticate(
password = "itoopie",
control_host = "127.0.0.1",
control_port = "7657",
control_path = "jsonrpc"
) {
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"] = "Authenticate";
json["method"] = "Echo";
json["params"] = new Object();
json["params"]["API"] = 1;
json["params"]["Password"] = password;
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;
}
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);
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;
}
let net = Echo(Query, control_host, control_port, control_path, password);
net.then(updateleement);
}
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;
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 UpdateEchoElementByID(
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,
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);
}
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);
}
let token = GetToken(password, control_host, control_port, control_path);
let done = await token.then(getrate);
return done;
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 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(
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];
}
let net = RouterInfo(
Query,
control_host,
control_port,
control_path,
password
);
net.then(updateelement);
if (document.getElementById(ID) !== null)
document.getElementById(ID).innerText = update.result[Query];
}
async function RouterManager(
let net = RouterInfo(
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);
}
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)
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";
}
}
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;
}
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);
}
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)
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";
}
}
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;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 34 KiB

View File

@@ -9,14 +9,13 @@
<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, 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>
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>
<h2>Privacy Policy</h2>

10
info.js
View File

@@ -225,11 +225,9 @@ function goHome() {
}
console.log("(bookmarks) adding home page bookmark");
}
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);
}
console.log("(bookmarks) checking if we're running in an I2P Browser");
var gettingProxyInfo = browser.proxy.settings.get({});
gettingProxyInfo.then(gotProxyInfo);
}
function goIndex() {
@@ -287,7 +285,7 @@ function goSearch() {
}
let createData = {
url:
"http://legwork.i2p/yacysearch.html?" +
"http://yacy.idk.i2p/yacysearch.html?" +
"query=" +
document.getElementById("search-query").value,
};

View File

@@ -1,8 +1,8 @@
{
"browser_specific_settings": {
"applications": {
"gecko": {
"id": "i2ppb@eyedeekay.github.io",
"strict_min_version": "91.1.0"
"strict_min_version": "64.0"
}
},
"permissions": [
@@ -27,7 +27,7 @@
],
"manifest_version": 2,
"name": "__MSG_extensionName__",
"version": "0.125",
"version": "0.112",
"description": "__MSG_extensionDescription__",
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
"icons": {

View File

@@ -20,20 +20,21 @@
</section>
<section class="scheme-options">
<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>
<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>
</section>
<section class="scheme-options proxy-options" id="proxy-options">
<label for="bookmarksState"></label>
<div class="title">
<label for="bookmarksState">Proxy Options</label>
Proxy Options
</div>
<label for="bookmarksState"></label>
<p id="proxyHelpText"><label for="bookmarksState"></label>
<p id="proxyHelpText">
</p>
<label for="bookmarksState"><label id="portText">Host:</label> <input data="host" id="host" type="text" value="127.0.0.1">
<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>
<label id="hostText">Port:</label> <input data="port" id="port" type="text" value="4444">
</section>
<!--<section class="scheme-options identity-options">
<div class="panel">
@@ -88,7 +89,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

@@ -1,4 +1,4 @@
var titlepref = chrome.i18n.getMessage("titlePreface");
var titlepref = browser.i18n.getMessage("titlePreface");
function onSet(result) {
if (result) {
@@ -241,7 +241,7 @@ function AssurePeerConnection() {
browser.privacy.network.peerConnectionEnabled.set({
value: true,
});
chrome.privacy.network.webRTCIPHandlingPolicy.set({
browser.privacy.network.webRTCIPHandlingPolicy.set({
value: "disable_non_proxied_udp",
});
}
@@ -255,7 +255,7 @@ function UnsetPeerConnection() {
browser.privacy.network.peerConnectionEnabled.set({
value: true,
});
chrome.privacy.network.webRTCIPHandlingPolicy.set({
browser.privacy.network.webRTCIPHandlingPolicy.set({
value: "default",
});
}

View File

@@ -1,24 +1,24 @@
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 = browser.i18n.getMessage("titlePreface");
var webpref = browser.i18n.getMessage("webPreface");
var routerpref = browser.i18n.getMessage("routerPreface");
var mailpref = browser.i18n.getMessage("mailPreface");
var torrentpref = browser.i18n.getMessage("torrentPreface");
var tunnelpref = browser.i18n.getMessage("i2ptunnelPreface");
var ircpref = browser.i18n.getMessage("ircPreface");
var extensionpref = browser.i18n.getMessage("extensionPreface");
var muwirepref = browser.i18n.getMessage("muwirePreface");
var botepref = browser.i18n.getMessage("botePreface");
var blogpref = browser.i18n.getMessage("blogPreface");
var blogprefpriv = browser.i18n.getMessage("blogPrefacePrivate");
browser.privacy.network.peerConnectionEnabled.set({
value: true,
});
chrome.privacy.network.networkPredictionEnabled.set({
browser.privacy.network.networkPredictionEnabled.set({
value: false,
});
chrome.privacy.network.webRTCIPHandlingPolicy.set({
browser.privacy.network.webRTCIPHandlingPolicy.set({
value: "disable_non_proxied_udp",
});
console.log("Disabled unproxied UDP.");
@@ -175,7 +175,7 @@ var handleContextProxyRequest = async function (requestDetails) {
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
return context;
} catch (error) {
console.warn(error);
console.error(error);
return "firefox-default";
}
};
@@ -207,9 +207,7 @@ var handleContextProxyRequest = async function (requestDetails) {
requestDetails.cookieStoreId == "firefox-default" ||
requestDetails.cookieStoreId == "firefox-private"
) {
if (browser.windows != undefined) {
return browser.proxy.settings.get({});
}
return browser.proxy.settings.get({});
}
if (requestDetails.tabId > 0) {
if (requestDetails.url.includes("MuWire")) {
@@ -247,7 +245,7 @@ var handleContextProxyRequest = async function (requestDetails) {
host: getHost(),
port: getPort(),
};
//console.log('(proxy for rpc url)', rpc);
console.log("(proxy for rpc url)", rpc);
return proxy;
}
} catch (error) {
@@ -396,7 +394,7 @@ function update() {
function updateFromStorage() {
console.log("updating settings from storage");
chrome.storage.local.get(function () {
browser.storage.local.get(function () {
SetupSettings();
update();
setupProxy();
@@ -410,11 +408,9 @@ setupProxy();
var gettingListenerInfo = browser.runtime.getPlatformInfo();
gettingListenerInfo.then((got) => {
if (browser.windows != undefined) {
browser.windows.onCreated.addListener(() => {
chrome.storage.local.get(function () {
setupProxy();
});
browser.windows.onCreated.addListener(() => {
browser.storage.local.get(function () {
setupProxy();
});
}
});
});

240
scrub.js
View File

@@ -1,15 +1,15 @@
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 = browser.i18n.getMessage("titlePreface");
var webpref = browser.i18n.getMessage("webPreface");
var routerpref = browser.i18n.getMessage("routerPreface");
var mailpref = browser.i18n.getMessage("mailPreface");
var torrentpref = browser.i18n.getMessage("torrentPreface");
var tunnelpref = browser.i18n.getMessage("i2ptunnelPreface");
var ircpref = browser.i18n.getMessage("ircPreface");
var extensionpref = browser.i18n.getMessage("extensionPreface");
var muwirepref = browser.i18n.getMessage("muwirePreface");
var botepref = browser.i18n.getMessage("botePreface");
var blogpref = browser.i18n.getMessage("blogPreface");
var blogprefpriv = browser.i18n.getMessage("blogPrefacePrivate");
var contextScrub = async function (requestDetails) {
function onHeaderError() {
@@ -134,7 +134,7 @@ var contextSetup = function (requestDetails) {
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
function closeOldTab() {
if (tabId.id != tab.id) {
console.log(
"(isolate) Closing un-isolated tab",
@@ -145,13 +145,6 @@ var contextSetup = function (requestDetails) {
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,
@@ -159,11 +152,7 @@ var contextSetup = function (requestDetails) {
});
browser.pageAction.show(tabId.id);
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
// closeOldTab(tab);
closeOldTab(tab);
}
var created = browser.tabs.create({
active: true,
@@ -441,18 +430,14 @@ var coolheadersSetup = function (e) {
popup.then(gotPopup);
}
function gotPopup(p) {
console.log("(scrub)(header check) checking popup", p);
console.log(
"(scrub)(header check) checking headers",
e.responseHeaders
);
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 filtered headers", headers);
for (i = headers.length - 1; i >= 0; i--) {
let header = headers[i];
console.log("(scrub)(header check) checking header", header);
console.log("(scrub) checking header", header);
if (header.name.toUpperCase().endsWith("I2P-LOCATION")) {
var tab = browser.tabs.get(e.tabId);
tab.then(altSrc);
@@ -477,10 +462,7 @@ var coolheadersSetup = function (e) {
break;
}
if (header.name.toUpperCase().endsWith("I2P-TORRENTLOCATION")) {
console.log(
"(scrub)(header check) checking header torrentlocation",
header
);
console.log("(scrub) checking header torrentlocation", header);
var imgs = document.getElementsByTagName("img");
for (let img of imgs) {
if (tmpsrc.host == location.host) {
@@ -531,7 +513,7 @@ var coolheadersSetup = function (e) {
tabId: e.tabId,
popup: "torrent.html",
});
if (tab != undefined && tab.url.startsWith("https")) {
if (tab.url.startsWith("https")) {
browser.pageAction.setIcon({
path: "icons/infotoopiesbt.png",
tabId: e.tabId,
@@ -558,106 +540,23 @@ var coolheadersSetup = function (e) {
};
function getTabURL(tab) {
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);
}
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) {
if (response != undefined && response != "") {
console.log(
"(pageaction) i2p-torrentlocation response object",
response
@@ -668,7 +567,7 @@ function getTabURL(tab) {
popup: "torrent.html",
});
browser.pageAction.setIcon({
path: "icons/infotoopiebt.png",
path: "icons/infotoopiesbt.png",
tabId: tab.id,
});
browser.pageAction.setTitle({
@@ -683,6 +582,79 @@ 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

@@ -126,23 +126,20 @@ function createContextMenu() {
});
}
if (browser.windows != undefined) {
createContextMenu();
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
function updateBadge() {

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://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 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>
</div>
@@ -113,7 +113,7 @@
<br>
The server address is not set yet.
<br>
<a class="torrent-opener" href="#" id="window-visit-torrent">For assistance, visit the torrent help page</a>.
<a class="torrent-opener" id="window-visit-torrent" href="#">For assistance, visit the torrent help page</a>.
<br>
<a class="config-opener" href="#">Open the settings</a> to continue.
</div>