66 Commits

Author SHA1 Message Date
idk
7fbfa52109 add hidden manifest to .gitignore 2021-08-30 22:35:51 -04:00
idk
c926d3a5f0 check in point release change 2021-08-30 22:35:13 -04:00
idk
1c318eb384 Re-enable closure compiler 2021-08-08 11:36:35 -04:00
idk
00da7107bd re-enable the better linter(requires docker) 2021-07-24 20:43:55 -04:00
idk
b402dc10e6 This is never getting Chrome compatibility back. The Chrome, Chromium, Brave, edgium(<--Worst browser ever, and I'm including IE, the second-worst browser ever) is going to have to be a completely different codebase basically forever 2021-07-24 19:11:35 -04:00
idk
02f3cc871d Wait until after we confirm it's an I2P site to set pageAction 2021-07-08 22:19:22 -04:00
idk
5d260c5a3e Well I guess moz-sign has to fail at release time now because amo is 504 when I try to cut a release 2021-07-08 14:40:24 -04:00
idk
b5758839e1 bump version and release 2021-07-07 23:27:43 -04:00
idk
a473da6a8e bump version and release 2021-07-07 22:58:55 -04:00
idk
75b4ff4b60 Merge pull request #111 from eyedeekay/code-cleanup
Code cleanup
2021-07-08 02:57:13 +00:00
idk
d3cf9e8686 bump strict-min-version so the validator shuts up, nobody's as far back as Firefox 60 right now 2021-07-07 22:53:14 -04:00
idk
7bd7701aeb Remove obsolete workaround to theme reset issue 2021-07-07 22:34:01 -04:00
idk
87c3a62f25 connection interrupted mid release, retry failed validation. Bump and retry 2021-07-07 22:01:36 -04:00
idk
4bc984a72d connection interrupted mid release, retry failed validation. Bump and retry 2021-07-07 21:58:30 -04:00
idk
7b6438dce5 fix some background-theme stuff 2021-07-07 21:55:35 -04:00
idk
80d5367fed Merge pull request #110 from eyedeekay/code-cleanup
Code cleanup
2021-07-08 01:42:55 +00:00
idk
a7902632bc Un-bump version, fix some issues with internationalization on releases 2021-07-07 21:40:53 -04:00
idk
199e6577bb bump version 2021-07-07 21:30:34 -04:00
idk
00fd0aed62 fmt-prettier 2021-07-07 21:28:06 -04:00
idk
daaebe027d add missing names to proxy.js 2021-07-07 15:15:45 -04:00
idk
3d39e75ffd mind our own business re: container tab proxy settings 2021-07-07 15:12:59 -04:00
idk
e013c093d8 Upgrade the version number to build a rhizome 2021-05-31 17:19:42 -04:00
idk
5b51fc2c27 add variant extension name 2021-05-31 15:09:23 -04:00
idk
65e43abe02 Remove a whole bunch of redundant code related to forcing a contextual identity to it's own function. Only Snark(Due to X-I2P-Torrentlocation) needs it's own isolator now, everybody else can use the same one. Makes it easier to add new contexts. 2021-05-28 14:20:57 -04:00
idk
7f810f86d0 update graphics for icons with the ones provided by @shoalsteed 2021-05-26 18:32:58 -04:00
idk
899974c339 Fix quotes, update for release 2021-05-26 18:21:12 -04:00
idk
6f30aeaf06 update graphics for icons with the ones provided by @shoalsteed 2021-05-26 17:25:41 -04:00
idk
d285063b4f add help pages for i2pcontrol and torrents 2021-05-26 15:11:46 -04:00
idk
ffa282671b update transmission-rpc screenshot 2021-05-26 13:15:33 -04:00
idk
e9acc1fe35 update changelog 2021-05-26 12:57:41 -04:00
idk
04ebfedb84 fix options pages 2021-05-26 12:55:34 -04:00
idk
23d451cf92 update site 2021-05-26 12:01:26 -04:00
idk
44628a1358 update site 2021-05-26 11:58:31 -04:00
idk
04782aa099 update site 2021-05-26 11:57:43 -04:00
idk
ff4302eb2b update screeenshots, add more screenshots 2021-05-26 11:32:35 -04:00
idk
9185a4daf2 add a context and proxy rules for railroad blog 2021-05-26 11:31:16 -04:00
idk
6b6a73dbdb update screeenshots, add more screenshots 2021-05-26 11:15:47 -04:00
idk
1729656189 add a context and proxy rules for railroad blog 2021-05-25 16:59:38 -04:00
idk
08b31efbfc Check proxy before extension URL 2021-05-24 15:41:51 -04:00
idk
e124d61115 Check proxy before extension URL 2021-05-24 15:41:17 -04:00
idk
e6e914cefe Check proxy before extension URL 2021-05-24 15:40:35 -04:00
idk
4d2e68f79d fix html 2021-05-24 15:35:35 -04:00
idk
b5bb8ec694 fix broken html 2021-05-24 15:29:02 -04:00
idk
f0651edb06 Merge pull request #107 from eyedeekay/thoroughly-delete-containers
Various Bugfixes
2021-05-24 11:08:12 -07:00
idk
49ce0162d1 update changelog 2021-05-24 14:06:23 -04:00
idk
153a49e18f some style fixes, issue with noscript when visiting susimail for the first time, ready for release 2021-05-24 14:03:11 -04:00
idk
88cc54217c some style fixes, issue with noscript when visiting susimail for the first time, ready for release 2021-05-24 13:58:44 -04:00
idk
83bb92c0cb some style fixes, issue with noscript when visiting susimail for the first time, ready for release 2021-05-24 13:57:37 -04:00
idk
f337e64b81 Merge branch 'secure-marking' into 'master'
Create icon for each indicating state in the toolbar(HTTPS, Bittorrent,...

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!23
2021-04-27 14:16:30 +00:00
idk
42f90273e2 prettier 2021-04-26 17:18:41 -04:00
idk
616d8429b7 Fix HTTPS marking, re-add http+i2p marking 2021-04-26 17:18:08 -04:00
idk
3261fd1505 fix Proxy Readyness visual indicator 2021-04-25 23:22:23 -04:00
idk
4ea8fd4826 start switching back to the old CSS which I liked better all along anyway, and which will be easier to make work in the future 2021-04-25 17:03:43 -04:00
idk
c899f7b1e7 Create icon for each indicating state in the toolbar(HTTPS, Bittorrent, HTTPS+Bittorrent, X-I2P-Location) with our own lock icons for .i2p sites, https .i2p sites 2021-04-25 16:18:41 -04:00
idk
02bc927262 Create icon for each indicating state in the toolbar(HTTPS, Bittorrent, HTTPS+Bittorrent, X-I2P-Location) with our own lock icons for .i2p sites, https .i2p sites 2021-04-25 16:05:07 -04:00
idk
5393d7f26f Add new lock icons for I2P and I2P HTTPS secured sites 2021-04-19 19:07:18 -04:00
idk
fa66c26b09 Merge branch 'themes-again' into 'master'
bump

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!22
2021-02-05 18:04:33 +00:00
idk
eec31ad3db bump 2021-02-05 13:03:30 -05:00
idk
3a770cb518 Merge branch 'themes-again' into 'master'
Themes again

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!21
2021-02-05 18:00:58 +00:00
idk
7de36bc86c bump 2021-02-05 13:00:15 -05:00
idk
c0bf732253 fix merge issues 2021-02-05 12:58:35 -05:00
idk
49948a524e fmt 2021-02-05 12:41:26 -05:00
idk
ac792dbcd5 fix x-i2p-torrentlocation bug 2021-02-01 12:55:39 -05:00
idk
db8508e75b Merge branch 'themes-again' into 'master'
fix the theme issue

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!20
2021-01-31 06:13:58 +00:00
idk
95e0642126 Merge branch 'rpc-over-i2p' into 'master'
Extensions run requests in what is effectively their own container for our...

See merge request idk/I2P-in-Private-Browsing-Mode-Firefox!19
2021-01-31 06:11:51 +00:00
idk
54b5be97e2 fix the theme issue 2021-01-31 01:07:14 -05:00
60 changed files with 1155 additions and 868 deletions

3
.gitignore vendored
View File

@@ -2,4 +2,5 @@ README.md.asc
node_modules/
web-ext-artifacts
releases.diff
.releases.atom
.releases.atom
.manifest.json

View File

@@ -37,11 +37,11 @@ clean: rc clean-artifacts
## EVEN RELEASES are AMO RELEASES
## ODD RELEASES are SELFHOSTED RELEASES
MOZ_VERSION=0.96
VERSION=0.95
MOZ_VERSION=0.112.1
VERSION=0.111.1
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
LAST_VERSION=0.93
LAST_VERSION=0.112
YELLOW=F7E59A
ORANGE=FFC56D
@@ -64,7 +64,7 @@ amo-readme:
sed 's|</h3>|</strong>|g' | \
grep -v '<img' > amo-index.html
MAGNET=`torrent2magnet i2ppb@eyedeekay.github.io.xpi.torrent`
MAGNET=`rhash --magnet i2ppb@eyedeekay.github.io.xpi.torrent`
index:
@echo "<!DOCTYPE html>" > index.html
@@ -98,15 +98,15 @@ version:
sed -i 's|7647|7657|g' *.js* torrent/*.js*
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)\",|g' manifest.json
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)\",|g' manifest.json
sed -si 's|$(shell grep $(LAST_VERSION) _locales/en/messages.json)| "message": "$(VERSION)",|g' _locales/en/messages.json; true
sed -si 's|$(shell grep $(MOZ_VERSION) _locales/en/messages.json)| "message": "$(VERSION)",|g' _locales/en/messages.json; true
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(VERSION)|g' {} \;
find . -name 'messages.json' -exec sed -i 's|$(MOZ_VERSION)|$(VERSION)|g' {} \;
moz-version:
sed -i 's|7647|7657|g' *.js* torrent/*.js*
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(MOZ_VERSION)\",|g' manifest.json
# sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(MOZ_VERSION)\",|g' manifest.json
sed -si 's|$(shell grep $(LAST_VERSION) _locales/en/messages.json)| "message": "$(MOZ_VERSION)",|g' _locales/en/messages.json; true
sed -si 's|$(shell grep $(VERSION) _locales/en/messages.json)| "message": "$(MOZ_VERSION)",|g' _locales/en/messages.json; true
find . -name 'messages.json' -exec sed -i 's|$(LAST_VERSION)|$(MOZ_VERSION)|g' {} \;
find . -name 'messages.json' -exec sed -i 's|$(VERSION)|$(MOZ_VERSION)|g' {} \;
rhz-version:
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)1\",|g' manifest.json
@@ -168,7 +168,7 @@ moz-sign: version clean-artifacts
@echo "Using the 'sign' target to instantly sign an extension for self-distribution"
@echo "requires a JWT API Key and Secret from addons.mozilla.org to be made available"
@echo "to the Makefile under the variables WEB_EXT_API_KEY and WEB_EXT_API_SECRET."
$(HOME)/node_modules/web-ext-submit/extender.sh --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET)
$(HOME)/web-ext/bin/web-ext sign --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET) --timeout 900000 #--api-url-prefix http://localhost:3000/api/v4
make copyss
sleep 5
@@ -182,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
web-ext sign --channel listed --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
$(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
@@ -328,7 +328,7 @@ upload-updatemanifest:
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "updateManifest.json" -f updateManifest.json
webext:
web-ext run -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u "about:devtools-toolbox?type=extension&id=i2ppb%40eyedeekay.github.io"
snark-mirror:
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc.su3
@@ -345,7 +345,7 @@ wire:
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/i2p/MuWireDownloads/"
ndtest:
web-ext run -u about:debugging \
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging \
-u http://127.0.0.1:7657/home \
-u http://127.0.0.1:7657/i2ptunnel \
-u http://127.0.0.1:7657/i2psnark \
@@ -354,14 +354,20 @@ ndtest:
-u http://idk.i2p/video.html \
-u http://idk.i2p \
-u http://stats.i2p \
-u http://tvndxxkxcstbtqfxg7iigco6bj22ff2y6jxikmk7wqkyadkhrd4a.b32.i2p \
-u https://ramble.pw \
-u https://ramble.pw/f/i2p \
lht-test:
web-ext run -u about:debugging \
$(HOME)/web-ext/bin/web-ext run --firefox /usr/bin/firefox -u about:debugging \
-u http://localhost:7657/home \
-u http://localhost:7657/i2ptunnel \
-u http://localhost:7657/i2psnark \
-u http://localhost:7657/webmail \
-u http://localhost:7657/MuWire/ \
-u http://idk.i2p
compile:
closure-compiler --js background.js --js cert.js --js content.js --js handler.js --js host.js --js location.js --js privacy.js --js script.js \
--js torrent.js --js bookmarks.js --js config.js --js context.js --js home.js --js info.js --js platform.js --js proxy.js --js scrub.js \
--js_output_file compile.js

View File

@@ -115,15 +115,16 @@ Usage:
the use of I2PSnark as a peer-to-peer delivery mechanism for media files.
* ![Visiting i2psnark](i2psnark.png)
* ![Monitoring torrents](transmissionrpc.png)
* ![Distribute your site as a torrent.](x-i2p-torrentlocation.png)
* [Started] **Indicate** the level of authenticity provided by TLS. TLS is
optional on I2P for now, but some sites offer it anyway. TLS support is
experimental and in the works.
* [Started] **Provide** alternate, in-I2P destinations for web sites that want to
mirror their content within I2P.
* [Started] **Enhance** the I2P browsing experience by allowing site developers
* [Done] **Enhance** the I2P browsing experience by allowing site developers
distribute some or all of their resources as torrents, allowing the torrents to
be treated effectively as a CDN.
* ![Distribute your site as a torrent.](x-i2p-torrentlocation.png)
* [Done] **Indicate** the level of authenticity provided by TLS. TLS is
optional on I2P for now, but some sites offer it anyway. TLS support is
experimental and in the works.
* ![Use HTTPS with your I2P Site.](i2p-https.png)
* [Done] **Provide** alternate, in-I2P destinations for web sites that want to
mirror their content within I2P.
* [barely started] **Isolate** traffic by contextual identity to it's own HTTP
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
contextual identities. For now, the contextual identities used to manage

View File

@@ -3,6 +3,10 @@
"message": "I2P In Private Browsing",
"description": "Name of the extension."
},
"extensionNameVariant": {
"message": "I2P In Private Browsing - Rhizome Variant",
"description": "Name of the extension."
},
"toopieName": {
"message": "toopie.html",
"description": "Name of the sidebar."
@@ -16,7 +20,7 @@
"description": "Description of the extension."
},
"extensionVersion": {
"message": "0.77",
"message": "0.108",
"description": "Version of the extension."
},
"proxyFailedStatus": {
@@ -167,6 +171,14 @@
"message": "Dispatch IRC (Private)",
"description": "Preface for the browser titlebar"
},
"blogPreface": {
"message": "Blog",
"description": "Preface for the browser titlebar"
},
"blogPrefacePrivate": {
"message": "Blog (Private)",
"description": "Preface for the browser titlebar"
},
"botePreface": {
"message": "I2P-Bote Mail",
"description": "Preface for the browser titlebar"

View File

@@ -3,6 +3,10 @@
"message": "I2P en navegación privada",
"description": "Nombre de la extensión."
},
"extensionNameVariant": {
"message": "I2P en navegación privada - Rhizome",
"description": "Nombre de la extensión."
},
"toopieName": {
"message": "toopie.html",
"description": "Nombre de la barra lateral."
@@ -16,7 +20,7 @@
"description": "Descripción de la extensión."
},
"extensionVersion": {
"message": "0,77",
"message": "0.108",
"description": "Versión de la extensión."
},
"proxyFailedStatus": {
@@ -167,6 +171,14 @@
"message": "Despacho de IRC (privado)",
"description": "Prefacio de la barra de título del navegador"
},
"blogPreface": {
"message": "Blog",
"description": "Prefacio de la barra de título del navegador"
},
"blogPrefacePrivate": {
"message": "Blog (Private)",
"description": "Prefacio de la barra de título del navegador"
},
"botePreface": {
"message": "I2P-Bote Mail",
"description": "Prefacio de la barra de título del navegador"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 314 KiB

After

Width:  |  Height:  |  Size: 309 KiB

View File

@@ -1,21 +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 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);
@@ -43,6 +45,15 @@ function onContextsGot(contexts) {
})
.then(onCreated, onNotCreated);
}
if (ids.indexOf(blogpref) == -1) {
browser.contextualIdentities
.create({
name: blogpref,
color: 'pink',
icon: 'pet',
})
.then(onCreated, onNotCreated);
}
if (ids.indexOf(webpref) == -1) {
browser.contextualIdentities
.create({
@@ -175,81 +186,79 @@ function isEmpty(obj) {
return true;
}
let btheme = {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
};
let dtheme = {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
};
function themeWindow(window) {
// Check if the window is in private browsing
function onThemeError() {
console.log('theme color set error');
console.log('(theme) color set error');
browser.theme.reset();
}
function dynamicTheme() {
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
browser.theme.update(window.id, dtheme);
} else {
browser.theme.update(window.id, {
colors: {
frame: '#4456B7',
toolbar: '#4456B7',
},
});
browser.theme.update(window.id, dtheme);
}
}
function browserTheme() {
console.log('Active in I2P window');
console.log('(theme)Active in I2P window');
if (window.incognito) {
browser.theme.update(window.id, {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
});
browser.theme.update(window.id, btheme);
} else {
browser.theme.update(window.id, {
colors: {
frame: '#363A68',
toolbar: '#363A68',
},
});
browser.theme.update(window.id, btheme);
}
}
function unsetTheme() {
browser.theme.reset();
}
function logTabs(tabInfo) {
function onContextGotTheme(context) {
if (context.name == titlepref) {
browserTheme();
if (tabInfo[0].url.startsWith('https://')) {
browser.pageAction.setPopup({
tabId: tabInfo[0].id,
popup: 'security.html',
});
//console.log("(background) tabinfo", tabInfo[0].id)
browser.pageAction.show(tabInfo[0].id);
} else {
//browser.pageAction.hide(tabInfo[0].id);
}
browser.pageAction.show(tabInfo[0].id);
} else if (context.name == routerpref) {
console.log('Active in Router Console window');
console.log('(theme) Active in Router Console window');
dynamicTheme();
} else if (context.name == tunnelpref) {
console.log('Active in Hidden Services Manager window');
console.log('(theme) Active in Hidden Services Manager window');
dynamicTheme();
} else if (context.name == mailpref) {
console.log('Active in Web Mail window');
console.log('(theme) Active in Web Mail window');
dynamicTheme();
} else if (context.name == torrentpref) {
console.log('Active in Bittorrent window');
console.log('(theme) Active in Bittorrent window');
dynamicTheme();
} else if (context.name == botepref) {
console.log('Active in Bote window');
console.log('(theme) Active in Bote window');
dynamicTheme();
} else if (context.name == ircpref) {
console.log('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');
dynamicTheme();
} else if (context.name == muwirepref) {
console.log('Active in MuWire window');
console.log('(theme) Active in MuWire window');
dynamicTheme();
} else {
console.log('(theme) Not active in MuWire window');
browser.theme.reset();
}
}
if (
@@ -260,16 +269,8 @@ function themeWindow(window) {
.get(tabInfo[0].cookieStoreId)
.then(onContextGotTheme, onThemeError);
} else {
console.log('Not active in I2P window');
function unSetTheme(them) {
console.log('unsetting theme', them);
if (Object.keys(them).length > 0) {
browser.theme.update(window.id, them.originalTheme);
} else {
browser.theme.update(window.id, { colors: null });
}
}
browser.storage.local.get('originalTheme').then(unSetTheme, onError);
console.log('(theme) Not active in I2P window');
browser.theme.reset();
}
}
@@ -316,6 +317,9 @@ function setTitle(window) {
} else if (context.name == mailpref) {
console.log('Active in I2P Web Mail window');
setTitle(mailpref, mailprefpriv);
} else if (context.name == blogpref) {
console.log('Active in I2P Blog window');
setTitle(blogpref, blogprefpriv);
} else if (context.name == torrentpref) {
console.log('Active in I2P Torrent window');
setTitle(torrentpref, torrentprefpriv);
@@ -371,48 +375,6 @@ gettingListenerInfo.then((got) => {
}
});
function handleUpdated(updateInfo) {
function maybeSet(them) {
console.log("original theme found:", them, Object.keys(them).length);
try {
if (
Object.keys(them).length == 0 ||
(them.originalTheme.colors == null &&
them.originalTheme.images == null &&
them.originalTheme.properties == null)
) {
if (updateInfo.theme.colors != null) {
if (
updateInfo.theme.colors.frame != "#4456B7" &&
updateInfo.theme.colors.frame != "#363A68"
) {
function onSet() {
console.log("stored theme:", updateInfo.theme);
}
if (
updateInfo.theme.colors != null &&
updateInfo.theme.images != null &&
updateInfo.theme.properties != null
) {
console.log("storing theme:", updateInfo.theme);
browser.storage.local
.set({ originalTheme: updateInfo.theme })
.then(onSet, onError);
}
}
}
} else {
console.log("keeping stored theme:", them);
}
} catch (e) {
console.log("theme storage error", e);
}
}
browser.storage.local.get("originalTheme").then(maybeSet, onError);
}
browser.theme.onUpdated.addListener(handleUpdated);
function handleClick() {
console.log("Opening page action");
browser.pageAction.openPopup();
@@ -466,20 +428,37 @@ browser.webRequest.onHeadersReceived.addListener(
function onClosedWindowCheck() {
var getContext = browser.contextualIdentities.query({ name: titlepref });
function checkTabs(ctx) {
function conditionallyDelete(tabs) {
if (tabs.length == 0) {
browser.contextualIdentities.remove(ctx[0].cookieStoreId);
browser.contextualIdentities
.query({})
.then(onContextsGot, onContextsError);
for (let context in ctx) {
function conditionallyDelete(tabs) {
if (tabs.length == 0) {
browser.contextualIdentities.remove(context.cookieStoreId);
}
}
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
tabs.then(conditionallyDelete, onError);
}
var tabs = browser.tabs.query({ cookieStoreId: ctx[0].cookieStoreId });
tabs.then(conditionallyDelete, onError);
}
getContext.then(checkTabs, onError);
}
function onOpenedWindowCheck() {
var getContext = browser.contextualIdentities.query({ name: titlepref });
function checkTabs(ctx) {
for (let context in ctx) {
function conditionallyDelete(tabs) {
if (tabs.length == 0) {
browser.contextualIdentities.remove(context.cookieStoreId);
}
}
var tabs = browser.tabs.query({ cookieStoreId: context.cookieStoreId });
tabs.then(conditionallyDelete, onError);
}
}
getContext.then(checkTabs, onError);
}
onOpenedWindowCheck();
browser.tabs.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onRemoved.addListener(onClosedWindowCheck);
browser.windows.onCreated.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) {

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;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 215 KiB

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;
@@ -50,4 +50,43 @@ contentUpdateById('releases', 'releases');
fetch('http://proxy.i2p').then((myJson) => {
contentUpdateById('proxy-check', 'proxySuccessStatus');
let readyness = document.querySelectorAll('.readyness');
if (readyness != null) {
hide(readyness);
}
});
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";
}
}
//TODO: Don't hard-code this.
fetch("http://127.0.0.1:7657/themes/console/light/images/i2plogo.png")
.then((myJson) => {
var consoleLinks = document.querySelectorAll(".application-info");
unhide(consoleLinks);
})
.catch((error) => {
var consoleLinks = document.querySelectorAll(".application-info");
hide(consoleLinks);
});
fetch("http://127.0.0.1:7657/jsonrpc/")
.then((myJson) => {
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
unhide(toopieLinks);
})
.catch((error) => {
var toopieLinks = document.querySelectorAll(".window-visit-toopie");
hide(toopieLinks);
});

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}`);

56
debian/changelog vendored
View File

@@ -1,3 +1,59 @@
i2psetproxy.js (0.111-1) UNRELEASED; urgency=low
* simplify background theme issue fix
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 23:27:27 -0400
i2psetproxy.js (0.109-1) UNRELEASED; urgency=low
* connection interrupted mid release, retry failed validation. Bump and retry
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 22:00:25 -0400
connection interrupted mid release, retry failed validation. Bump and retry
i2psetproxy.js (0.107-1) UNRELEASED; urgency=low
* Small code fixes
* Fix for interference with non-I2P containers
-- idk <hankhill19580@gmail.com> Wed, 07 Jul 2021 22:00:25 -0400
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low
* Add help page for configuring i2pcontrol
* Add help page for configuring i2psnark-rpc
* Update the icons
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low
* Fix for double-test issue on /home.html page in the extension
* Fix for broken options menu
-- idk <hankhill19580@gmail.com> Wed, 26 May 2021 12:56:56 -0400
i2psetproxy.js (0.101-1) UNRELEASED; urgency=low
* Sweeping changes to styles
* fix for issue when using noscript and visiting susimail
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 3:41:35 -0400
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low
* Sweeping changes to styles
* fix for issue when using noscript and visiting susimail
-- idk <hankhill19580@gmail.com> Mon, 24 May 2021 2:05:21 -0400
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low
* Fix theme issue, add x-i2p-torrentlocation HEADER support
-- idk <hankhill19580@gmail.com> FRI, 5 FEB 2021 1:02:55 -0400
i2psetproxy.js (0.95-1) UNRELEASED; urgency=low
* Fix github #102 and #103

View File

@@ -19,8 +19,10 @@ function routerHost(url) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
} else if (final === 'webmail' || final === 'susimail') {
console.log('(urlcheck) Mail application path', final);
return 'webmail';
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);
@@ -35,6 +37,8 @@ function routerHost(url) {
final === 'home' ||
final === 'console' ||
final === 'dns' ||
final === 'susidns' ||
final.startsWith('susidns') ||
final === 'sitemap' ||
final.startsWith('config')
) {

383
home.css
View File

@@ -1,34 +1,140 @@
* {
padding: 0;
color: #1f1a24;
margin: 0
margin: 0;
}
a,
button {
color: #1f1a24;
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;
}
body {
margin: 0;
padding: 20px 40px;
font-family: Open Sans, Noto Sans, Segoe UI, sans-serif;
font-size: 12pt;
color: #495057;
text-decoration: none;
word-wrap: break-word;
border-left: 1px solid #495057;
border-right: 1px solid #495057;
box-shadow: 0 0 2px 2px rgba(0, 0, 0, .1);
background: #f2f2f2;
}
h1, h2, h3, h4 {
display: block;
font-weight: 700;
}
h1 {
text-transform: uppercase;
font-weight: 900;
font-size: 200%;
}
h2 {
font-size: 140%;
}
h3 {
font-size: 120%;
}
h4 {
margin-bottom: 5px;
text-align: right;
text-transform: none;
font-size: 90%;
font-weight: 600;
font-style: italic;
}
p {
margin-bottom: 15px;
width: 100%;
line-height: 1.4;
word-wrap: break-word;
text-align: justify;
text-decoration: none;
}
ul {
margin: 10px 20px;
list-style: none;
}
li {
margin-left: 0;
padding: 12px 15px 15px 20px;
width: calc(100% - 40px);
text-align: justify;
border: 1px solid #9ab;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff;
background: #dee2e6;
}
li li {
padding-bottom: 0;
width: calc(100% - 40px);
text-align: left;
border: none;
border-top: 1px solid #9ab;
box-shadow: none;
}
li li:first-of-type {
margin-top: 15px;
border-top: none;
}
li a:first-of-type {
display: block;
width: 100%;
}
#applicationExplain {
float: unset;
}
li+li {
margin-top: 15px;
}
h3+ul, ul+h3, ul+h2 {
margin-top: 20px;
}
a, button {
color: #3b6bbf;
text-decoration: none;
background: none;
font-weight: 700;
word-wrap: break-word;
outline: 0;
padding: 3px;
margin: auto
}
.applicationDesc {
color: #81888f;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
outline: 0;
}
.applicationDesc:hover,
a:hover,
button:hover {
color: #495057;
.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;
@@ -36,137 +142,77 @@ button {
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
}
body {
display: flex;
flex-direction: column;
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
margin: 0 auto;
padding: 0;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
}
.button-list {
min-height: 230px;
min-width: 230px
outline: 0;
}
.background {
height: 100%
}
p {
line-height: 32px;
font-size: 17px;
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
text-decoration: none;
font-weight: 700;
word-wrap: break-word;
outline: 0
background-color: #f8f8ff;
height: 100%;
}
.content {
min-height: 3rem;
padding: 1rem;
margin: 1.5rem;
display: block;
border-radius: 2px;
min-width: 100%
}
#header,
.application-info,
.browser-info,
.extended-info,
.search-info {
min-height: 3rem;
padding: 1rem;
margin-top: 1.5rem;
display: block;
min-height: 3rem;
min-width: 95%;
display: inline-block;
border: 1px solid #d9d9d6;
border-radius: 2px;
min-width: 100%
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
background: #f8f8ff;
}
h1 {
margin: auto;
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
font-weight: 600;
font-size: 32px;
color: #e6e6e7;
background: #1f1a24;
width: 100%;
border-radius: 2px 2px 0 0
}
h2,
h3 {
margin-right: auto;
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
font-weight: 600;
font-size: 25px;
color: #e6e6e7;
border-radius: 2px 2px 0 0;
background: #1f1a24;
width: 100%;
padding-left: 5%
}
h4 {
margin-right: auto;
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
font-weight: 600;
font-size: 20px!important;
color: #41465f;
border-radius: 2px 2px 0 0;
background: #1f1a24;
width: 100%;
padding-left: 5%
#header, .application-info, .browser-info, .extended-info, .search-info {
margin-top: 1.5rem;
padding: 1rem;
min-height: 3rem;
min-width: 95%;
display: inline-block;
border: 1px solid #d9d9d6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
background: #f8f8ff;
}
.showhider {
margin-right: auto;
font-family: "Droid Sans","Noto Sans",Ubuntu,"Segoe UI","Lucida Grande",Verdana,Helvetica,sans-serif;
border: none;
padding: 0!important;
text-transform: uppercase;
background: none !important;
border: none;
width: 90%;
color: #3b6bbf;
text-decoration: none;
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
}
ul {
margin: auto;
border-radius: 2px;
width: 100%;
margin: 0;
padding: 0
}
li {
display: block;
text-align: center;
margin: 0;
padding: 0
}
.center {
display: block;
margin-left: auto;
margin-right: auto;
width: 50%
margin-bottom: 80px;
}
#readyness {
padding-top: 1rem;
padding-bottom: 1rem;
margin: 1rem;
width: 42%;
min-width: 42%;
background: #dee2e6;
text-align: center!important;
border: 1px solid #dee2e6;
border-radius: 2px;
display: block
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
display: inline-block;
}
#onboarding {
min-height: 5rem;
padding: .5rem;
@@ -175,107 +221,138 @@ li {
width: 42%;
min-width: 42%;
font-size: 2rem;
background: #a48fe1;
text-align: center!important;
border-radius: 2px
border: 1px solid #a48fe1;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
}
#i2pbrowser-description {
padding-top: 1rem;
padding-bottom: 1rem;
width: 50%;
min-width: 50%;
display: block
}
html body ul.label-list li {
list-style: none;
float: left
}
html body ul.label-list li:nth-child(odd) {
clear: left
display: inline-block;
background: #dee2e6;
border: 1px solid #dee2e6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
}
#linksExplain {
min-height: 5rem;
padding: .5rem;
margin: .5rem;
width: 30%;
min-width: 30%;
background: #dee2e6;
text-align: center!important;
border-radius: 2px
border: 1px solid #dee2e6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
}
#applicationExplain,
#controlExplain {
#applicationExplain, #controlExplain {
min-height: 5rem;
padding: .5rem;
margin: .5rem;
text-align: left!important;
float: left
width: 30%;
min-width: 30%;
background: #dee2e6;
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;
}
#proxyReady {
min-height: 3rem;
padding: .5rem;
margin: .2rem;
width: 38%;
min-width: 38%;
display: block;
display: inline-block;
background: #d9d9d6;
float: right;
text-align: center!important
text-align: center!important;
border: 1px solid #d9d9d6;
border-radius: 2px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
}
#proxyUnready {
min-height: 3rem;
padding: .5rem;
margin: .2rem;
width: 38%;
min-width: 38%;
display: block;
display: inline-block;
float: right;
text-align: center!important
text-align: center!important;
border: 1px solid #ffc56d;
border-radius: 2px;
background: #ffc56d;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px #ccc;
}
#consoleOn {
min-height: 3rem;
padding: .5rem;
margin: .2rem;
width: 38%;
min-width: 38%;
display: block;
display: inline-block;
float: left;
text-align: center!important
}
.tabicon {
min-width: 64px;
min-height: 64px
}
li.application {
text-align: left
}
button.applicationName {
width: auto
text-align: center!important;
border: 1px solid #f7e59a;
border-radius: 2px;
background: #f7e59a;
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%;
margin: 3%
}
img.readyness {
height: 100%;
width: auto
width: auto;
}
input {
color: #1f1a24
@media only screen and (max-width: 399px) {
.application-info {
display: none;
}
}
#hidden {
display: none
@media screen and (max-width: 1200px) {
body {
font-size: 10.5pt;
}
}
video {
width: 100%
}
.hidden {
visibility: none;
display: none
}

View File

@@ -86,8 +86,8 @@
</div>
</li>-->
<li class="application">
<a class="applicationName" href="toopie.html" id="window-visit-toopie">Toopie</a> <span class="applicationDesc" id="toopie">For information about your I2P router status, go here:</span>
<li class="application window-visit-toopie">
<a class="applicationName window-visit-toopie" href="toopie.html" id="window-visit-toopie">Toopie</a> <span class="applicationDesc window-visit-toopie" id="toopie">For information about your I2P router status, go here:</span>
</li>
<li class="application">
@@ -147,5 +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>

32
host.js
View File

@@ -24,24 +24,40 @@ function localHost(url) {
hostname = url.split('/')[0];
}
hostname = hostname.split(':')[0];
console.log('(isolate) hostname localhost', hostname);
console.log('(isolate) url localhost', url);
if (hostname === '127.0.0.1') {
return true;
if (url.indexOf('7669') != -1) return 'irc';
} else if (hostname === 'localhost') {
return true;
if (url.indexOf('8084') != -1) return 'blog';
}
return false;
}
function extensionHost(url) {
var prefix = browser.runtime
.getURL('')
.replace('moz-extension://', '')
.replace('/', '');
if (url.originUrl !== undefined) {
var res = url.originUrl.startsWith(browser.runtime.getURL(''));
var originUrl = url.originUrl
.replace('moz-extension://', '')
.replace('/', '');
// console.log("(urlcheck) Extension application path", originUrl);
// console.log("(urlcheck) Extension application path", prefix);
var res = originUrl.startsWith(prefix);
// console.log("(urlcheck) Extension application path", res);
if (res) return res;
}
if (url.url !== undefined) {
var res = url.url.startsWith(browser.runtime.getURL(''));
if (url.documentUrl !== undefined) {
// console.log("(urlcheck) Extension application path", originUrl);
// console.log("(urlcheck) Extension application path", prefix);
var res = originUrl.startsWith(prefix);
// console.log("(urlcheck) Extension application path", res);
if (res) return res;
}
console.log('(urlcheck) Extension application path', url);
}
function i2pHostName(url) {
@@ -100,8 +116,10 @@ function routerHost(url) {
console.log('(urlcheck) Torrent application path', final);
return 'i2psnark';
} else if (final === 'webmail' || final === 'susimail') {
console.log('(urlcheck) Mail application path', final);
return 'webmail';
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);

BIN
i2p-https.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

View File

@@ -1,5 +1,8 @@
i2pcontrol.js
=============
toopie.html/i2pcontrol.js
=========================
This is inside of the webextension for now, but it's actually a fully-fledged,
standalone library for talking to i2pcontrol.
To enable toopie.html, the built in I2P monitoring system in this webextension,
go to the [Web App Configuration page in the I2P Router and start I2PControl](http://127.0.0.1:7657/configwebapps).
Click the "Start" button next to the menu item that says `jsonrpc`.
- ![i2pcontrol.png](i2pcontrol.png)

View File

@@ -383,9 +383,30 @@ function UpdateContents() {
}
var done = Echo(hello);
done.then(Done);
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;
}

BIN
i2pcontrol/i2pcontrol.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

17
i2pcontrol/index.html Normal file
View File

@@ -0,0 +1,17 @@
<!DOCTYPE html>
<html>
<head>
<title>I2P in Private Browsing Mode</title>
<link rel="stylesheet" type="text/css" href="../home.css" />
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
</head>
<body>
<h1 id="toopie.htmli2pcontrol.js">toopie.html/i2pcontrol.js</h1>
<p>To enable toopie.html, the built in I2P monitoring system in this webextension, go to the <a href="http://127.0.0.1:7657/configwebapps">Web App Configuration page in the I2P Router and start I2PControl</a>. Click the &quot;Start&quot; button next to the menu item that says <code>jsonrpc</code>.</p>
<ul>
<li><img src="i2pcontrol.png" title="fig:" alt="i2pcontrol.png" /></li>
</ul>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 327 KiB

BIN
i2psnark-integrate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 209 KiB

After

Width:  |  Height:  |  Size: 197 KiB

0
icons/README.md Normal file
View File

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

After

Width:  |  Height:  |  Size: 34 KiB

BIN
icons/infotoopie.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
icons/infotoopiebt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

BIN
icons/infotoopies.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

BIN
icons/infotoopiesbt.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

BIN
icons/local_up.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 404 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -57,7 +57,7 @@ Clearnet Bittorrent network(With a web seed to support it in case one goes
dead).</p>
<ul>
<li><a href="magnet:?xt=urn:btih:7ec361c3ddc3fb904e369a19cdf4259af94af624">Magnet Link</a></li>
<li><a href="magnet:?xl=2485magnetsubdn=i2ppb%40eyedeekay.github.io.xpi.torrentmagnetsubxt=urn:tree:tiger:w6kewvpw25bnau2rwkczbnryrjdzn54ietse3zimagnetsubxt=urn:ed2k:1cd9743fb664404298b7f2ad7ee45db0magnetsubxt=urn:aich:4vhcsp6t3c2mkjzds2etixyinyj7xtkp">Magnet Link</a></li>
<li><a href="./i2ppb@eyedeekay.github.io.xpi.torrent">Get the .torrent file</a></li>
</ul>
@@ -124,15 +124,16 @@ adding them directly into the Firefox downloads drop-downs, menus, etc. Enable
the use of I2PSnark as a peer-to-peer delivery mechanism for media files.</li>
<li><img src="i2psnark.png" alt="Visiting i2psnark" title="" /></li>
<li><img src="transmissionrpc.png" alt="Monitoring torrents" title="" /></li>
<li><img src="x-i2p-torrentlocation.png" alt="Distribute your site as a torrent." title="" /></li>
<li>[Started] <strong>Indicate</strong> the level of authenticity provided by TLS. TLS is
optional on I2P for now, but some sites offer it anyway. TLS support is
experimental and in the works.</li>
<li>[Started] <strong>Provide</strong> alternate, in-I2P destinations for web sites that want to
mirror their content within I2P.</li>
<li>[Started] <strong>Enhance</strong> the I2P browsing experience by allowing site developers
<li>[Done] <strong>Enhance</strong> the I2P browsing experience by allowing site developers
distribute some or all of their resources as torrents, allowing the torrents to
be treated effectively as a CDN.</li>
<li><img src="x-i2p-torrentlocation.png" alt="Distribute your site as a torrent." title="" /></li>
<li>[Done] <strong>Indicate</strong> the level of authenticity provided by TLS. TLS is
optional on I2P for now, but some sites offer it anyway. TLS support is
experimental and in the works.</li>
<li><img src="i2p-https.png" alt="Use HTTPS with your I2P Site." title="" /></li>
<li>[Done] <strong>Provide</strong> alternate, in-I2P destinations for web sites that want to
mirror their content within I2P.</li>
<li>[barely started] <strong>Isolate</strong> traffic by contextual identity to it's own HTTP
Proxy tunnel, each reflecting it's own pseudonymous identity within I2P. The
contextual identities. For now, the contextual identities used to manage

View File

@@ -1,20 +1,19 @@
body,
html {
width: 450px
width: 600px
}
.panel {
margin: 5px;
width: 450px;
height: 450px
width: 500px
}
.panel-section-header {
width: 450px
width: 500px
}
#text-section-torrents-header {
width: 450px
width: 500px
}
span.identity {
width: 450px;
width: 500px;
display: block;
margin-left: 1em
}

35
info.js
View File

@@ -123,6 +123,12 @@ document.addEventListener("click", (clickEvent) => {
} else if (clickEvent.target.id === "window-visit-index") {
console.log("attempting to create index tab");
goIndex();
} else if (clickEvent.target.id === "window-visit-torrent") {
console.log("attempting to create torrent tab");
goTorrent();
} else if (clickEvent.target.id === "window-visit-help") {
console.log("attempting to create torrent tab");
goHelp();
} else if (clickEvent.target.id === "window-visit-homepage") {
console.log("attempting to create homepage tab");
goHome();
@@ -197,6 +203,9 @@ function showTorrentsMenu() {
}
function goHome() {
function onTabError() {
console.log("Help tab created");
}
function gotProxyInfo(info) {
let port = info.value.http.split(":")[1];
if (port == "7644") {
@@ -223,7 +232,7 @@ function goHome() {
function goIndex() {
function onTabError() {
console.log("Help tab created");
console.log("Help tab not created");
}
let createData = {
url: "index.html",
@@ -233,6 +242,30 @@ function goIndex() {
creating.then(onTabCreated, onTabError);
}
function goTorrent() {
function onTabError() {
console.log("Torrent Help tab not created");
}
let createData = {
url: "torrent/index.html",
};
console.log("visiting torrent help");
let creating = browser.tabs.create(createData);
creating.then(onTabCreated, onTabError);
}
function goHelp() {
function onTabError() {
console.log("Torrent Help tab not created");
}
let createData = {
url: "i2pcontrol/index.html",
};
console.log("visiting torrent help");
let creating = browser.tabs.create(createData);
creating.then(onTabCreated, onTabError);
}
function goToopie() {
function onTabError() {
console.log("Toopie tab created");

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -2,7 +2,7 @@
"applications": {
"gecko": {
"id": "i2ppb@eyedeekay.github.io",
"strict_min_version": "60.0"
"strict_min_version": "64.0"
}
},
"permissions": [
@@ -27,7 +27,7 @@
],
"manifest_version": 2,
"name": "__MSG_extensionName__",
"version": "0.95",
"version": "0.112.1",
"description": "__MSG_extensionDescription__",
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
"icons": {
@@ -49,7 +49,7 @@
"page_action": {
"browser_style": true,
"default_title": "__MSG_toopieTLS__",
"default_icon": "icons/toopie.png",
"default_icon": "icons/i2plogo.png",
"show_matches": [
"http://*.i2p/*",
"https://*.i2p/*",

BIN
menu.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 300 KiB

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

@@ -411,22 +411,22 @@ function updateUI(restoredSettings) {
const btrpchostitem = document.getElementById('btrpchost');
if (btrpchostitem != undefined)
btrpchostitem.value = restoredSettings.rpc_host;
btrpchostitem.value = restoredSettings.bt_rpc_host;
//console.log("(options)showing bt rpc host:", btrpchostitem.value);
const btrpcportitem = document.getElementById('btrpcport');
if (btrpcportitem != undefined)
btrpcportitem.value = restoredSettings.rpc_port;
btrpcportitem.value = restoredSettings.bt_rpc_port;
//console.log("(options)showing rbt pc port:", rpcportitem.value);
const btrpcpathitem = document.getElementById('btrpcpath');
if (btrpcpathitem != undefined)
btrpcpathitem.value = restoredSettings.rpc_path;
btrpcpathitem.value = restoredSettings.bt_rpc_path;
//console.log("(options)showing bt rpc path:", btrpcpathitem.value);
const btrpcpassitem = document.getElementById('btrpcpass');
if (btrpcpassitem != undefined)
btrpcpassitem.value = restoredSettings.rpc_pass;
btrpcpassitem.value = restoredSettings.bt_rpc_pass;
//console.log("(options)showing bt rpc pass:");
SetBookButton();

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",
});
}
@@ -421,33 +421,26 @@ function i2pHostName(url) {
if (u.host.endsWith(".i2p")) {
hostname = u.host;
} else if (url.includes("=")) {
console.log("(hosts) scrub 1", url);
if (url.includes(".i2p")) {
lsit = url.split("=");
console.log("(hosts) scrub 2", hostname);
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);
}
console.log("(hosts) scrub 3", hostname);
break;
}
if (hostname != "") {
console.log("(hosts) scrub 4", hostname);
break;
}
}
}
} else if (url.indexOf("://") > -1) {
hostname = url.split("/")[2];
console.log("(hosts) scrub 5", hostname);
} else {
hostname = url.split("/")[0];
console.log("(hosts) scrub 6", hostname);
}
console.log("(hosts) scrub 7", hostname);
return hostname;
}

View File

@@ -1,19 +1,24 @@
var titlepref = chrome.i18n.getMessage('titlePreface');
var webpref = chrome.i18n.getMessage('webPreface');
var ircpref = chrome.i18n.getMessage('ircPreface');
var torrentpref = chrome.i18n.getMessage('torrentPreface');
var routerpref = chrome.i18n.getMessage('routerPreface');
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
var ircpref = chrome.i18n.getMessage('ircPreface');
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.');
@@ -37,6 +42,21 @@ var handleContextProxyRequest = async function(requestDetails) {
return proxy;
}
}
function blogProxy() {
if (!requestDetails.url.includes('8084')) {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
return proxy;
}
if (requestDetails.url.includes(':8084')) {
proxy = null;
return proxy;
}
}
function btProxy() {
proxy = routerProxy();
if (requestDetails.url.includes(':7662')) {
@@ -97,6 +117,9 @@ var handleContextProxyRequest = async function(requestDetails) {
if (context.name == ircpref) {
proxy = ircProxy();
return proxy;
} else if (context.name == blogpref) {
proxy = blogProxy();
return proxy;
} else if (context.name == titlepref) {
proxy = mainProxy();
return proxy;
@@ -106,8 +129,15 @@ var handleContextProxyRequest = async function(requestDetails) {
} else if (context.name == torrentpref) {
proxy = btProxy();
return proxy;
} else if (context.name == mailpref) {
return proxy;
} else if (context.name == tunnelpref) {
return proxy;
} else if (context.name == muwirepref) {
return proxy;
} else if (context.name == botepref) {
return proxy;
}
return proxy;
} else {
if (!routerHost(requestDetails.url)) {
if (localHost(requestDetails.url)) {
@@ -129,9 +159,11 @@ var handleContextProxyRequest = async function(requestDetails) {
host: getHost(),
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,)
@@ -188,8 +220,6 @@ var handleContextProxyRequest = async function(requestDetails) {
port: getPort(),
};
return proxy;
} else if (extensionHost(requestDetails.url)) {
return;
} else if (i2pHost(requestDetails.url)) {
var tab = tabGet(requestDetails.tabId);
requestDetails.tabId = tab;
@@ -197,6 +227,8 @@ var handleContextProxyRequest = async function(requestDetails) {
var proxy = await context.then(handleProxyRequest);
//console.log('(proxy)Returning I2P Proxy', proxy);
return proxy;
} else if (extensionHost(requestDetails)) {
return;
} else {
var tab = tabGet(requestDetails.tabId);
var context = tab.then(contextGet);
@@ -207,6 +239,14 @@ var handleContextProxyRequest = async function(requestDetails) {
/*proxy = {};
console.log("(proxy)Returning unset Proxy", proxy);
return proxy;*/
} else {
proxy = {
type: getScheme(),
host: getHost(),
port: getPort(),
};
console.log('(proxy for rpc url)', rpc);
return proxy;
}
} catch (error) {
console.log('(proxy)Not using I2P Proxy.', error);
@@ -263,9 +303,8 @@ function SetupSettings() {
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
@@ -280,9 +319,8 @@ function SetupSettings() {
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
@@ -300,9 +338,8 @@ function SetupSettings() {
);
setupProxy();
}
var gettingHistoryStoredSettings = browser.storage.local.get(
'disable_history'
);
var gettingHistoryStoredSettings =
browser.storage.local.get('disable_history');
gettingHistoryStoredSettings.then(checkHistoryStoredSettings, onSetupError);
}
@@ -357,17 +394,11 @@ function update() {
function updateFromStorage() {
console.log('updating settings from storage');
chrome.storage.local.get(function() {
browser.storage.local.get(function() {
SetupSettings();
update();
setupProxy();
});
var gettingInfo = browser.runtime.getPlatformInfo();
gettingInfo.then((got) => {
if (got.os != 'android') {
browser.windows.getAll().then((wins) => wins.forEach(themeWindow));
}
});
}
updateFromStorage();
@@ -378,7 +409,7 @@ setupProxy();
var gettingListenerInfo = browser.runtime.getPlatformInfo();
gettingListenerInfo.then((got) => {
browser.windows.onCreated.addListener(() => {
chrome.storage.local.get(function() {
browser.storage.local.get(function() {
setupProxy();
});
});

View File

@@ -4,13 +4,110 @@
<link type="text/html" rel="alternate" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases"/>
<link type="application/atom+xml" rel="self" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases.atom"/>
<title>Release notes from I2P-in-Private-Browsing-Mode-Firefox</title>
<updated>2020-12-21T23:13:19Z</updated>
<updated>2021-05-26T22:32:58Z</updated>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.105</id>
<updated>2021-05-27T20:19:35Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.105"/>
<title>0.105</title>
<enclosure url="magnet:?xl=2485<title>0.105</title>dn=i2ppb%40eyedeekay.github.io.xpi.torrent<title>0.105</title>xt=urn:tree:tiger:w6kewvpw25bnau2rwkczbnryrjdzn54ietse3zi<title>0.105</title>xt=urn:ed2k:1cd9743fb664404298b7f2ad7ee45db0<title>0.105</title>xt=urn:aich:4vhcsp6t3c2mkjzds2etixyinyj7xtkp" type="application/x-bittorrent" />
<content type="html">&lt;p&gt;Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.105-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add help page for configuring i2pcontrol&lt;/li&gt;
&lt;li&gt;Add help page for configuring i2psnark-rpc&lt;/li&gt;
&lt;li&gt;Update the icons&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Wed, 26 May 2021 12:56:56 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.103-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.103</id>
<updated>2021-05-26T16:59:28Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.103"/>
<title>0.103</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.103-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix for double-test issue on /home.html page in the extension&lt;/li&gt;
&lt;li&gt;Fix for broken options menu&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Wed, 26 May 2021 12:56:56 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.101-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.101</id>
<updated>2021-05-24T19:42:29Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.101"/>
<title>0.101</title>
<content type="html">&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Mon, 24 May 2021 3:41:35 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.99-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sweeping changes to styles&lt;/li&gt;
&lt;li&gt;fix for issue when using noscript and visiting susimail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Mon, 24 May 2021 2:05:21 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.97-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.99</id>
<updated>2021-05-24T18:08:37Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.99"/>
<title>0.99</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.99-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sweeping changes to styles&lt;/li&gt;
&lt;li&gt;fix for issue when using noscript and visiting susimail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Mon, 24 May 2021 2:05:21 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.97-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.97</id>
<updated>2021-02-05T18:05:51Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.97"/>
<title>0.97</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.97-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix theme issue, add x-i2p-torrentlocation HEADER support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; FRI, 5 FEB 2021 1:02:55 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.95-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.95</id>
<updated>2020-12-21T23:21:35Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.95"/>
<title>0.95</title>
<enclosure url="magnet:?xt=urn:btih:7ec361c3ddc3fb904e369a19cdf4259af94af624" type="application/x-bittorrent" />
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
@@ -23,7 +120,7 @@ i2psetproxy.js (0.95-1) UNRELEASED; urgency=low&lt;/p&gt;
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.93</id>
@@ -42,7 +139,7 @@ i2psetproxy.js (0.93-1) UNRELEASED; urgency=low&lt;/p&gt;
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.91</id>
@@ -61,7 +158,7 @@ i2psetproxy.js (0.91-1) UNRELEASED; urgency=low&lt;/p&gt;
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.89</id>
@@ -81,7 +178,7 @@ i2psetproxy.js (0.89-1) UNRELEASED; urgency=low&lt;/p&gt;
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.87</id>
@@ -101,97 +198,6 @@ i2psetproxy.js (0.87-1) UNRELEASED; urgency=low&lt;/p&gt;
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.85</id>
<updated>2020-11-11T06:44:44Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.85"/>
<title>0.85</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.85-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fix a bug which was causing i2psnark to fail to isolate.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 10 NOV 2020 1:33:50 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.83-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.83</id>
<updated>2020-11-11T04:00:27Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.83"/>
<title>0.83</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.83-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Add a tab for I2P-Native Dispatch&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 10 NOV 2020 22:00:01 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.81-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.81</id>
<updated>2020-11-08T02:44:34Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.81"/>
<title>0.81</title>
<content type="html">&lt;p&gt;Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.81-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;X-I2P-TorrentLocation header&lt;/li&gt;
&lt;li&gt;Visual tweaks&lt;/li&gt;
&lt;li&gt;Deprecate localhost browser container permanently&lt;/li&gt;
&lt;li&gt;Isolation rules improvements&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Sat, 07 NOV 2020 21:34:25 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.79-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.79</id>
<updated>2020-09-26T03:36:46Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.79"/>
<title>0.79</title>
<content type="html">&lt;p&gt;A simple plugin for configuring a Firefox based web browser to isolate I2P&lt;br&gt;
Browsing to a single contextual identity, thus creating an I2P in Private&lt;br&gt;
Browsing mode. It requires the use of a pre-installed I2P Router.&lt;br&gt;
i2psetproxy.js (0.79-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pin application tabs to the front of the tab order&lt;/li&gt;
&lt;li&gt;Refine pageaction behavior&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;-- idk &lt;a href=&quot;mailto:hankhill19580@gmail.com&quot;&gt;hankhill19580@gmail.com&lt;/a&gt; Mon, 24 SEP 2020 20:18:03 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.77-1) UNRELEASED; urgency=low&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.77</id>
<updated>2020-09-25T00:19:45Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.77"/>
<title>0.77</title>
<content type="html">&lt;p&gt;Merge pull request &lt;a class=&quot;issue-link js-issue-link&quot; href=&quot;https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/pull/100&quot;&gt;#100&lt;/a&gt; from eyedeekay/bookmarks&lt;/p&gt;
&lt;p&gt;make the bookmarks part of a subdirectory&lt;/p&gt;</content>
<author>
<name>eyedeekay</name>
</author>
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
<media:thumbnail height="30" width="30" url="https://avatars.githubusercontent.com/u/8733713?s=60&amp;v=4"/>
</entry>
</feed>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 242 KiB

After

Width:  |  Height:  |  Size: 198 KiB

637
scrub.js
View File

@@ -1,13 +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 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() {
@@ -86,6 +88,9 @@ var notMyContextNotMyProblem = async function() {
var context7 = await browser.contextualIdentities.query({
name: botepref,
});
var context8 = await browser.contextualIdentities.query({
name: blogpref,
});
var othercontexts = [];
console.log('Contexts:', contexts);
for (context in contexts) {
@@ -113,143 +118,94 @@ var notMyContextNotMyProblem = async function() {
var contextSetup = function(requestDetails) {
function onContextError() {
console.log('Context launcher error');
console.error('Context launcher error');
}
async function forceIntoIsolation(tabId, contextidentifier, tab, pin = true) {
console.info(
'(isolate) forcing context for',
tabId,
contextidentifier,
tab
);
try {
var context = await browser.contextualIdentities.query({
name: contextidentifier,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
if (tabId.id != tab.id) {
console.log(
'(isolate) Closing un-isolated tab',
tabId.id,
'in favor of',
tab.id,
'with context',
tab.cookieStoreId
);
browser.tabs.remove(tabId.id);
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'security.html',
});
browser.pageAction.show(tabId.id);
}
closeOldTab(tab);
}
var created = browser.tabs.create({
active: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
pinned: pin,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
} catch (error) {
console.error('(isolate)Context Error', error);
}
}
//console.log("(isolate)Forcing I2P requests into context");
try {
var i2pTabFind = async function(tabId) {
console.info('(isolate)Context Discovery browser');
try {
var context = await browser.contextualIdentities.query({
name: titlepref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'security.html',
});
browser.pageAction.show(tabId.id);
}
closeOldTab(tab);
}
var created = browser.tabs.create({
active: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
return forceIntoIsolation(tabId, titlepref, tab, false);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var routerTabFind = async function(tabId) {
console.info('(isolate)Context Discovery console');
try {
var context = await browser.contextualIdentities.query({
name: routerpref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
if (requestDetails.url.endsWith('xhr1.html')) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
requestDetails.url = prefix + hostname + '/home';
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
return forceIntoIsolation(tabId, routerpref, tab);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var i2ptunnelTabFind = async function(tabId) {
console.info('(isolate)Context Discovery browser');
try {
var context = await browser.contextualIdentities.query({
name: tunnelpref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
if (requestDetails.url.endsWith('xhr1.html')) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
requestDetails.url = prefix + hostname + '/i2ptunnelmgr/';
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
return forceIntoIsolation(tabId, tunnelpref, tab);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var snarkTabFind = async function(tabId) {
console.info('(isolate)Context Discovery torrents');
try {
var context = await browser.contextualIdentities.query({
name: torrentpref,
@@ -266,9 +222,14 @@ var contextSetup = function(requestDetails) {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
console.log(
'(isolate) Closing un-isolated tab',
tabId.id,
'in favor of',
tab.id,
'with context',
tab.cookieStoreId
);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
@@ -305,188 +266,58 @@ var contextSetup = function(requestDetails) {
}
};
var muwireTabFind = async function(tabId) {
console.info('(isolate)Context Discovery muwire');
try {
var context = await browser.contextualIdentities.query({
name: muwirepref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
if (requestDetails.url.endsWith('xhr1.html')) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
requestDetails.url = prefix + hostname + '/muwire/';
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
return forceIntoIsolation(tabId, muwirepref, tab);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var i2pboteTabFind = async function(tabId) {
console.info('(isolate)Context Discovery bote');
try {
var context = await browser.contextualIdentities.query({
name: botepref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
if (requestDetails.url.endsWith('xhr1.html')) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
requestDetails.url = prefix + hostname + '/i2pbote/';
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
return forceIntoIsolation(tabId, botepref, tab);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var mailTabFind = async function(tabId) {
console.info('(isolate)Context Discovery mail');
try {
var context = await browser.contextualIdentities.query({
name: mailpref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
if (requestDetails.url.endsWith('xhr1.html')) {
hostname = url.split('/')[2];
let prefix = url.substr(0, url.indexOf('://') + 3);
requestDetails.url = prefix + hostname + '/webmail/';
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
return forceIntoIsolation(tabId, mailpref, tab);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var ircTabFind = async function(tabId) {
console.info('(isolate)Context Discovery irc');
try {
var context = await browser.contextualIdentities.query({
name: ircpref,
});
if (tabId.cookieStoreId != context[0].cookieStoreId) {
if (requestDetails.url.includes(':7669')) {
function Create() {
function onCreated(tab) {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log('(isolate) Closing un-isolated tab', tabId.id);
console.log('in favor of', tab.id);
console.log('with context', tab.cookieStoreId);
browser.tabs.remove(tabId.id);
browser.tabs.move(tab.id, { index: 0 });
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
var pins = browser.tabs.query({
cookieStoreId: context[0].cookieStoreId,
});
pins.then(closeOldTab, onError);
}
var created = browser.tabs.create({
active: true,
pinned: true,
cookieStoreId: context[0].cookieStoreId,
url: requestDetails.url,
});
created.then(onCreated, onContextError);
}
var gettab = browser.tabs.get(tabId.id);
gettab.then(Create, onContextError);
return tabId;
}
}
return forceIntoIsolation(tabId, ircpref, tab);
} catch (error) {
console.log('(isolate)Context Error', error);
console.error('(isolate)Context Error', error);
}
};
var blogTabFind = async function(tabId) {
console.info('(isolate)Context Discovery blog');
try {
var context = await browser.contextualIdentities.query({
name: blogpref,
});
return forceIntoIsolation(tabId, blogpref, tab);
} catch (error) {
console.error('(isolate)Context Error', error);
}
};
var tabGet = async function(tabId) {
@@ -540,8 +371,13 @@ var contextSetup = function(requestDetails) {
}
} else {
if (localhost) {
var irctab = tab.then(ircTabFind, onContextError);
return requestDetails;
if (localhost === 'blog') {
var routertab = tab.then(blogTabFind, onContextError);
return requestDetails;
} else if (localhost === 'irc') {
var irctab = tab.then(ircTabFind, onContextError);
return requestDetails;
}
}
}
// if (oldtab.cookieStoreId == 'firefox-default') {
@@ -606,7 +442,7 @@ var coolheadersSetup = function(e) {
var tab = browser.tabs.get(e.tabId);
tab.then(altSrc);
function altSrc(tab) {
console.log('(scrub) X-I2P-LOCATION');
console.log('(scrub) X-I2P-LOCATION', header.value);
let url = new URL(header.value);
browser.pageAction.setPopup({
tabId: e.tabId,
@@ -624,73 +460,76 @@ var coolheadersSetup = function(e) {
browser.pageAction.show(e.tabId);
}
break;
} else {
if (header.name.toUpperCase().endsWith('I2P-TORRENTLOCATION')) {
var imgs = document.getElementsByTagName('img');
for (let img of imgs) {
if (tmpsrc.host == location.host) {
img.src =
'http://127.0.0.1:7657/i2psnark/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
}
if (header.name.toUpperCase().endsWith('I2P-TORRENTLOCATION')) {
console.log('(scrub) 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/' +
tmpsrc.host +
tmpsrc.pathname;
img.onerror = function() {
img.src = tmpsrc;
};
}
}
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')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
video.innerHTML = topInnerHTML; // + innerHTML;
video.onerror = function() {
video.innerHTML = topInnerHTML + innerHTML;
};
}
}
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')) {
innerHTML = video.innerHTML;
topInnerHTML = video.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' +
location.host +
'/'
);
video.innerHTML = topInnerHTML; // + innerHTML;
video.onerror = function() {
video.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
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')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' +
location.host +
'/'
);
audio.innerHTML = topInnerHTML; // + innerHTML;
audio.onerror = function() {
audio.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
browser.pageAction.setPopup({
tabId: tabId.id,
popup: 'torrent.html',
});
browser.pageAction.setIcon({
path: 'icons/i2plogo.png',
tabId: e.tabId,
});
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value,
});
browser.pageAction.show(e.tabId);
break;
}
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')) {
innerHTML = audio.innerHTML;
topInnerHTML = audio.innerHTML.replace(
'src="',
'src="http://127.0.0.1:7657/i2psnark/' + location.host + '/'
);
audio.innerHTML = topInnerHTML; // + innerHTML;
audio.onerror = function() {
audio.innerHTML = topInnerHTML + innerHTML;
};
}
}
}
browser.pageAction.setPopup({
tabId: e.tabId,
popup: 'torrent.html',
});
if (tab.url.startsWith('https')) {
browser.pageAction.setIcon({
path: 'icons/infotoopiesbt.png',
tabId: e.tabId,
});
} else {
browser.pageAction.setIcon({
path: 'icons/infotoopiebt.png',
tabId: e.tabId,
});
}
browser.pageAction.setTitle({
tabId: e.tabId,
title: header.value,
});
browser.pageAction.show(e.tabId);
break;
}
}
}
@@ -702,47 +541,107 @@ var coolheadersSetup = function(e) {
function getTabURL(tab) {
if (tab.url.startsWith("https")) {
try {
browser.tabs
.sendMessage(tab.id, { req: "i2p-location" })
.then((response) => {
if (response != undefined) {
console.log("(scrub) 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);
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(
"(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/infotoopiesbt.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);
});
console.log("(pageaction)", tab.id, tab.url);
} 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("(scrub) i2p-location response object", response);
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/i2plogo.png",
path: "icons/infotoopiebt.png",
tabId: tab.id,
});
browser.pageAction.setTitle({

70
sectorrent.html Normal file
View File

@@ -0,0 +1,70 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<link href="search.css" rel="stylesheet">
<link href="home.css" rel="stylesheet"><!--<link href="info.css" rel="stylesheet">--><!--<link href="torrent/popup.css" rel="stylesheet">-->
<title>
</title>
</head>
<body>
<div id="browserpanel">
<div class="panel">
<div class="section-header panel-section panel-section-header" id="headline">
<div class="text-section-header" id="text-section-header">
<h1 id="text-section-header">I2P Site Properties | This I2P Site has peer-to-peer resources.</h1>
</div>
</div>
</div>
<div class="panel">
<ul>
<li>
<div class="address-info">
<div id="addresstype">
<span id="TypeLabel">Address Type:</span> <span id="Type"></span>
<div id="TypeInfo">
<span id="AddressInfo"></span>
</div>
</div>
</div>
</li>
<li>
<div class="tls-info">
<div id="sitecert">
<span id="CertLabel">Certificate Information:</span> <span id="Cert"></span>
<div id="CertInfo">
<span id="AddressCertInfo"></span>
</div>
</div>
</div>
</li>
<li>
<div id="signingcert">
<span id="SignedLabel">Signed By:</span> <span id="Signed"></span>
</div>
</li>
</ul>
</div>
<div class="panel">
<p>
To help distribute the site content, use the links below to join the swarm.
</p>
<ul>
<li>
<div class="address-info">
<span id="TorrentTypeLabel">Torrent Links:</span> <span id="Type"></span>
<div id="TorrentTypeInfo">
</div>
</div>
</li>
</ul>
</div>
</div>
<script src="cert.js"></script>
<script src="torrent.js"></script>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 133 KiB

View File

@@ -1,4 +1,4 @@
Acknowledgement
Acknowledgementindex
===============
**Many, many thanks to the [Transmitter](https://github.com/myfreeweb/transmitter)
@@ -33,7 +33,7 @@ To install the plugin, go to [http://127.0.0.1:7657/configplugins](http://127.0.
and scroll down to the section of the page where it says "Installation from URL"
and paste the following URL:
```http://stats.i2p/i2p/plugins/i2psnark-rpc.su3```
`http://stats.i2p/i2p/plugins/i2psnark-rpc.su3`
Click the "Install Plugin" button and you'll be ready to go. Now, open the
extension options menu, and just click "Save." The defaults are correct for use

View File

@@ -6,7 +6,7 @@
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
</head>
<body>
<h1>Acknowledgement</h1>
<h1>Acknowledgementindex</h1>
<p><strong>Many, many thanks to the <a href="https://github.com/myfreeweb/transmitter">Transmitter</a>
webextension.</strong></p>

View File

@@ -7,13 +7,15 @@ var TrpcCall = async function(meth, args) {
'x-transmission-session-id': server.session,
};
console.log('(torrent) session', server.session);
if (server.username !== '' || server.btrpcpass !== '') {
if (server.username !== '' || server.bt_rpc_pass !== '') {
myHeaders['Authorization'] =
'Basic ' + btoa((server.username || '') + ':' + (server.btrpcpass || ''));
'Basic ' +
btoa((server.username || '') + ':' + (server.bt_rpc_pass || ''));
}
let req_url = server.bt_rpc_host
if (server.bt_rpc_port != 0) req_url += ":"+server.bt_rpc_port
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',
@@ -144,11 +146,14 @@ function showTorrents(server) {
torrentsPane.hidden = false;
configPane.hidden = true;
for (const opener of document.querySelectorAll(".webui-opener")) {
opener.href = server.base_url + "web/";
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;
opener.href = req_url + "web/";
}
console.log("(torrent) showing torrents");
refreshTorrents(server).catch((_) => refreshTorrentsLogErr(server));
setInterval(() => refreshTorrentsLogErr(server), 2000);
setInterval(() => refreshTorrentsLogErr(server), 60000);
}
//let store =

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 80 KiB

View File

@@ -35,7 +35,7 @@
</div>
<div class="hideIfI2PProxyOff" id="readyness">
<img class="readyness" src="http://proxy.i2p/themes/console/images/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
<img class="readyness" src="icons/local_up.png"> <span id="proxy-check">Proxy is ready.</span>
</div>
<div id="i2pbrowser-description">
@@ -84,9 +84,9 @@
<p id="applicationExplain">These applications use I2P to provide them with security and privacy.</p>
<ul>
<li class="application"><button class="applicationName window-visit-homepage" href="#" id="window-visit-index" target="_blank">Help Page</button> <span class="applicationDesc" id="abouthome">For more information about this extension, go here:</span></li>
<li class="application"><button class="applicationName window-visit-help" href="#" id="window-visit-help" target="_blank">Help Page</button> <span class="applicationDesc" id="abouthome">For more information about this extension, go here:</span></li>
<li class="application"><button class="applicationName window-visit-toopie" href="#" id="window-visit-toopie" target="_blank">Toopie</button> <span class="applicationDesc" id="toopie">For information about your I2P router status, go here:</span></li>
<li class="application window-visit-toopie"><button class="applicationName window-visit-toopie" href="#" id="window-visit-toopie" target="_blank">Toopie</button> <span class="applicationDesc window-visit-toopie" id="toopie">For information about your I2P router status, go here:</span></li>
<li class="application"><button class="applicationName" id="window-visit-i2ptunnel" target="_blank">Hidden Services Manager</button> <span class="applicationDesc" id="i2ptunnel">I2P has a web-based interface for configuring .i2p services like web sites, to set up your own web sites, go here:</span></li>
@@ -113,6 +113,8 @@
<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>.
<br>
<a class="config-opener" href="#">Open the settings</a> to continue.
</div>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 449 KiB

After

Width:  |  Height:  |  Size: 237 KiB