17 Commits
0.61 ... 0.65

Author SHA1 Message Date
idk
f109d66ab7 Merge pull request #84 from eyedeekay/certs
Certs
2020-03-18 02:57:36 +00:00
idk
0a447caa82 fix the torrent 2020-03-17 22:53:41 -04:00
idk
1f7be5c9c3 one apptab per app 2020-03-17 04:42:24 -04:00
idk
cd0d55d06f one last tweak to the debian thing 2020-03-06 00:34:12 -05:00
idk
8c40a01b2f start cert viewer 2020-03-05 23:25:08 -05:00
idk
8e6832cf6c add debian postinst 2020-03-05 18:30:43 -05:00
idk
311b837ef4 add debian postinst 2020-03-05 18:27:21 -05:00
idk
d751622d7c fix scripts and simplify Debian install 2020-03-05 17:35:53 -05:00
idk
6406f70824 fix scripts and simplify Debian install 2020-03-05 17:31:36 -05:00
idk
96ee234a17 Start branch for experimenting with certificate stuff 2020-03-05 14:47:12 -05:00
idk
87c52a0931 fix release 2020-03-02 17:59:16 -05:00
idk
d0136f2c6d fix release 2020-03-02 17:56:46 -05:00
idk
d0f4ff9fbb Merge pull request #82 from eyedeekay/containerizers
Containerizers
2020-03-02 22:54:00 +00:00
idk
2d1ae1fab8 Fix other containerizers 2020-03-02 17:35:49 -05:00
idk
f8d99c8fca Fix other containerizers 2020-03-02 17:34:39 -05:00
idk
aeeedc8d4c Start the pageaction branch 2020-02-26 13:03:09 -05:00
idk
e9e3ce085a pageaction 2020-02-26 13:00:51 -05:00
22 changed files with 454 additions and 143 deletions

103
Makefile
View File

@@ -1,52 +1,47 @@
PREFIX:=/usr
PREFIX?=/usr
default: zip
PWD=`pwd`
install: uninstall
mkdir -p $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io \
$(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/i2pcontrol \
$(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/torrent \
$(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
cp -r ./icons/ $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp -r ./_locales/ $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp -r ./options/ $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.js $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./i2pcontrol/i2pcontrol.js $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/i2pcontrol/i2pcontrol.js
cp ./torrent/*.js $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/torrent/
cp ./torrent/*.html $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/torrent/
cp ./torrent/UNLICENSE $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/torrent/
cp ./*.html $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.css $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.md $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.xpi $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.png $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.torrent $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./manifest.json $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
cp ./LICENSE $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/
ln -s $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io \
$(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
@echo $(PWD)
cp -v ./* $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/; true
cp -vr ./i2pcontrol $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/i2pcontrol
cp -vr ./torrent $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/torrent
cp -vr ./_locales $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/_locales
cp -vr ./icons $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/icons
cp -vr ./options $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io/options
make link
link:
ln -sf $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io \
$(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/i2ppb@eyedeekay.github.io
uninstall:
rm -rf $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io \
$(PREFIX)/share/webext/i2psetproxy.js@eyedeekay.github.io \
$(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
$(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/i2ppb@eyedeekay.github.io
ls:
ls -lah $(PREFIX)/share/webext/i2ppb@eyedeekay.github.io; \
ls -lah $(PREFIX)/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
clean:
rm -fr ../i2psetproxy.js.zip ../i2p_proxy*.xpi ../i2p*.xpi #../i2psetproxy.js_*.*
clean: rc clean-artifacts
rm -fr ../i2psetproxy.js.zip ../i2p_proxy*.xpi ../i2p*.xpi *.torrent #../i2psetproxy.js_*.*
## EVEN RELEASES are AMO RELEASES
## ODD RELEASES are SELFHOSTED RELEASES
MOZ_VERSION=0.58
VERSION=0.59
MOZ_VERSION=0.64
VERSION=0.63
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
LAST_VERSION=0.57
LAST_VERSION=0.61
YELLOW=F7E59A
ORANGE=FFC56D
@@ -97,26 +92,22 @@ torrenthelp:
@echo "</body>" >> torrent/index.html
@echo "</html>" >> torrent/index.html
xpi:
#wget -O ../i2ppb@eyedeekay.github.io.xpi \
#https://addons.mozilla.org/firefox/downloads/file/3419789/i2psetproxyjs-$(MOZ_VERSION)-an+fx.xpi
#cp ../i2ppb@eyedeekay.github.io.xpi ./i2ppb@eyedeekay.github.io.xpi
cp ~/Downloads/i2p_in_private_browsing-$(VERSION)-an+fx.xpi ./i2ppb@eyedeekay.github.io.xpi
xpi: getxpi
version:
sed -i 's|7647|7657|g' *.js* */*.js*
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
moz-version:
sed -i 's|7647|7657|g' *.js* */*.js*
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
rhz-version:
sed -i 's|$(shell grep "\"version\": " manifest.json)| \"version\": \"$(VERSION)1\",|g' manifest.json
sed -i 's|$(shell grep "\"version_name\": " manifest.json)| \"version_name\": \"$(VERSION)1-rhizome\",|g' manifest.json
sed -i 's|7657|7647|g' *.js* */*.js*
sed -i 's|7657|7647|g' *.js* torrent/*.js*
zip: version
zip --exclude="./i2ppb@eyedeekay.github.io.xpi" \
@@ -135,6 +126,7 @@ zip: version
rc:
@grep "$(VERSION)" debian/changelog
@echo "changelog is prepared"
rm -f *.xpi
rtest: rc index torrenthelp
@@ -151,7 +143,7 @@ recreate-release: delete-release release upload
upload: upload-xpi upload-deb
full-release: release submit deb upload torrent upload-torrent
full-release: release submit upload-xpi torrent upload-torrent deb upload-deb upload-rss
WEB_EXT_API_KEY=AMO_KEY
WEB_EXT_API_SECRET=AMO_SECRET
@@ -172,12 +164,12 @@ 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."
web-ext-submit --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET); true
web-ext-submit --channel unlisted --config-discovery false --api-key $(WEB_EXT_API_KEY) --api-secret $(WEB_EXT_API_SECRET)
make copyss
sleep 5
copyss:
cp web-ext-artifacts/*.xpi ./i2ppb@eyedeekay.github.io.xpi; true
cp web-ext-artifacts/*.xpi ../i2ppb@eyedeekay.github.io.xpi; true
##EVEN NUMBERED, MOZILLA-DISTRIBUTED VERSIONS HERE!
moz-submit: moz-version
@@ -197,7 +189,8 @@ rhz-submit: rhz-version
getxpi:
gothub download -t $(VERSION) -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -n i2ppb@eyedeekay.github.io.xpi
cp ./i2ppb@eyedeekay.github.io.xpi ./i2ppb-$(VERSION)@eyedeekay.github.io.xpi
mv ./i2ppb@eyedeekay.github.io.xpi ../i2ppb-$(VERSION)@eyedeekay.github.io.xpi
cp ../i2ppb-$(VERSION)@eyedeekay.github.io.xpi ../i2ppb@eyedeekay.github.io.xpi
torrent: getxpi
rm -f "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent"
@@ -238,7 +231,7 @@ torrent: getxpi
-n "i2ppb-$(VERSION)@eyedeekay.github.io.xpi" \
-o "i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" \
-w https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/$(VERSION)/i2ppb@eyedeekay.github.io.xpi \
i2ppb@eyedeekay.github.io.xpi; true
../i2ppb@eyedeekay.github.io.xpi; true
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "./i2ppb@eyedeekay.github.io.xpi.torrent"
make index
@@ -246,7 +239,7 @@ upload-torrent:
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi.torrent" -f "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent"
upload-xpi:
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi" -f "./i2ppb@eyedeekay.github.io.xpi"
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2ppb@eyedeekay.github.io.xpi" -f "../i2ppb@eyedeekay.github.io.xpi"
upload-deb:
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psetproxy.js_$(VERSION)-1_amd64.deb" -f "../i2psetproxy.js_$(VERSION)-1_amd64.deb"
@@ -261,18 +254,22 @@ upload-docs:
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Landing Page Documentation.pdf" -f ../smartlander.pdf
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "Browser Design Documentation.pdf" -f ../browser.pdf
fmt:
fmt: fmt-css fmt-html fmt-js
fmt-css:
cleancss -O1 all -O2 all --format beautify home.css -o .home.css && mv .home.css home.css
cleancss -O1 all -O2 all --format beautify info.css -o .info.css && mv .info.css info.css
cleancss -O1 all -O2 all --format beautify search.css -o .search.css && mv .search.css search.css
cleancss -O1 all -O2 all --format beautify sidebar.css -o .sidebar.css && mv .sidebar.css sidebar.css
cleancss -O1 all -O2 all --format beautify options/options.css -o options/.options.css && mv options/.options.css options/options.css
fmt-html:
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes index.html > .index.html; mv .index.html index.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes window.html > .window.html; mv .window.html window.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes home.html > .home.html; mv .home.html home.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes toopie.html > .toopie.html; mv .toopie.html toopie.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes security.html > .security.html; mv .security.html security.html
tidy --as-xhtml --drop-empty-elements no --input-xml --tidy-mark no -indent --indent-spaces 4 -wrap 0 --new-blocklevel-tags article,header,footer --new-inline-tags video,audio,canvas,ruby,rt,rp --break-before-br yes --sort-attributes alpha --vertical-space yes options/options.html > options/.options.html; mv options/.options.html options/options.html
make fmt-js
fmt-js:
find . -path ./node_modules -prune -o -name '*.js' -exec prettier --write {} \;
@@ -283,19 +280,15 @@ lint:
gjslint *.js; true
#eslint --color *.js
deborig: fmt version
deborig: version
rm -rf ../i2psetproxy.js-$(VERSION)
cp -r . ../i2psetproxy.js-$(VERSION)
mkdir -p ../i2psetproxy.js-$(VERSION)
cp -r ./* ../i2psetproxy.js-$(VERSION)
cd ../i2psetproxy.js-$(VERSION) && \
rm -rf web-ext-artifacts && \
rm -rf web-ext-artifacts .git node_modules && \
tar \
-cvz \
--exclude=.git \
--exclude=i2psetproxy.js.gif \
--exclude=node_modules \
--exclude=web-ext-artifacts \
--exclude=*.xpi \
--exclude=*/*.xpi \
--exclude=*.pdf \
-f ../i2psetproxy.js_$(VERSION).orig.tar.gz \
.
@@ -310,16 +303,16 @@ dat:
rss: torrent
rm -f releases.diff
grep "$(MAGNET)" .releases.atom && false || true
mv releases.atom .releases.atom
wget https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases.atom
diff releases.atom .releases.atom | tee releases.diff
patch releases.atom <releases.diff
sed -i "s|<title>$(VERSION)</title>|<title>$(VERSION)</title>\n <enclosure url=\"$(MAGNET)\" type=\"application/x-bittorrent\" />|g" releases.atom
upload-rss:
upload-rss: rss
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t docs -n "releases.atom" -f releases.atom
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"

View File

@@ -7,12 +7,16 @@
"message": "toopie.html",
"description": "Name of the sidebar."
},
"toopieTLS": {
"message": "Site Properties",
"description": "Name of the security panel."
},
"extensionDescription": {
"message": "Your browser is now set up to use I2P.",
"description": "Description of the extension."
},
"extensionVersion": {
"message": "0.57",
"message": "0.63",
"description": "Version of the extension."
},
"extensionStatus": {
@@ -255,6 +259,30 @@
"message": "7657",
"description": "Port for the Router Console"
},
"isBase32": {
"message": "I2P Base32-Formatted Address",
"description": "Message for site info panel base32"
},
"isHostName": {
"message": "I2P Jump Hostname",
"description": "Message for the site info panel hostname"
},
"siteLabel": {
"message": "Address/Site Information:",
"description": "Label for i2p site info"
},
"certLabel": {
"message": "Certificate Information:",
"description": "Label for certificate info"
},
"certAbsent": {
"message": "This site is not using HTTPS. It is still verified cryptographically by I2P.",
"description": "Content for certificate info if absent"
},
"certPresent": {
"message": "This site is using HTTPS. HTTPS over I2P is experimental and requires self-signed certificates or alternate root authorites.",
"description": "Content for certificate info if present"
},
"protocolHandlerValue": {
"message": "http://127.0.0.1:7657/i2psnark/?nofilter_newURL=%s&action=Add&foo=Add+torrent",
"description": "Value for the magnet protocol handler"

View File

@@ -182,6 +182,12 @@ function themeWindow(window) {
}
});
}
browser.pageAction.setPopup({
tabId: tabInfo[0].id,
popup: "security.html"
});
//console.log("(background) tabinfo", tabInfo[0].id)
browser.pageAction.show(tabInfo[0].id);
} else if (context.name == routerpref) {
console.log("Active in Router Console window");
if (window.incognito) {
@@ -427,3 +433,53 @@ function handleUpdated(updateInfo) {
}
browser.theme.onUpdated.addListener(handleUpdated);
function handleClick() {
console.log("Opening page action");
browser.pageAction.openPopup();
}
browser.pageAction.onClicked.addListener(handleClick);
async function certCheck(details) {
if (details.url.startsWith("https")) {
console.log("(cert) https site", details.url);
} else {
return;
}
if (!details.url.includes(".i2p")) {
return;
}
var tabs = await browser.tabs.query({ active: true });
if (tabs == null) {
return;
}
console.log("(cert) checking cert", tabs);
for (tab in tabs) {
if (details.url == tabs[tab].url) {
console.log("(cert) right tab", tabs[tab].id);
try {
let securityInfo = await browser.webRequest.getSecurityInfo(
details.requestId,
{ certificateChain: true }
);
console.log("(cert) state is complete", securityInfo);
console.log("(cert) certificates", securityInfo.certificates);
} catch (error) {
console.error(error);
}
}
}
}
// Listen for onHeaderReceived for the target page.
// Set "blocking" and "responseHeaders".
browser.webRequest.onHeadersReceived.addListener(
certCheck,
{ urls: ["<all_urls>"] },
["blocking", "responseHeaders"]
);

52
cert.js Normal file
View File

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

12
debian/changelog vendored
View File

@@ -1,3 +1,15 @@
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low
* other containerizers bugfix
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:54:26 -0400
i2psetproxy.js (0.61-1) UNRELEASED; urgency=low
* other containerizers bugfix
-- idk <hankhill19580@gmail.com> Mon, 02 MAR 2020 17:46:24 -0400
i2psetproxy.js (0.59-1) UNRELEASED; urgency=low
* transmission-rpc based torrent controls

6
debian/postinst vendored Normal file
View File

@@ -0,0 +1,6 @@
#! /bin/sh
ln -sf /usr/share/webext/i2ppb@eyedeekay.github.io \
/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}/i2ppb@eyedeekay.github.io
touch /usr/share/webext/i2ppb@eyedeekay.github.io/manifest.json

25
debian/rules vendored
View File

@@ -3,26 +3,7 @@
%:
dh $@
export PREFIX=debian/i2psetproxy.js/usr
override_dh_auto_install:
mkdir -p $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io \
$$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/i2pcontrol \
$$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/torrent \
$$(pwd)/debian/i2psetproxy.js/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
cp -r ./icons/ $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp -r ./options/ $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp -r ./_locales/ $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.js $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./i2pcontrol/i2pcontrol.js $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/i2pcontrol/
cp ./torrent/*.js $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/torrent/
cp ./torrent/*.html $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/torrent/
cp ./torrent/UNLICENSE $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/torrent/
cp ./*.html $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.css $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.md $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.xpi $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.torrent $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./*.png $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./manifest.json $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
cp ./LICENSE $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io/
ln -sf $$(pwd)/debian/i2psetproxy.js/usr/share/webext/i2ppb@eyedeekay.github.io \
$$(pwd)/debian/i2psetproxy.js/usr/share/mozilla/extensions/{ec8030f7-c20a-464f-9b0e-13a3a9e97384}
make install

View File

@@ -1,7 +1,3 @@
i2psetproxy.js.gif
i2psetproxy.js@eyedeekay.github.io.xpi
i2ppb@eyedeekay.github.io.xpi
i2ppb-0.59@eyedeekay.github.io.xpi
web-ext-artifacts/i2p_in_private_browsing-0.51-an+fx.xpi
smartlander.pdf
browser.pdf

View File

@@ -8,6 +8,9 @@ function proxyHost(url) {
if (hostname == "proxy.i2p") {
return true;
}
if (hostname == "7egf7fmpbewl35qvxxyff7k62ijgfm47nfmbyy3fa7epsaflyxiq.b32.i2p") {
return true;
}
return false;
}

View File

@@ -1,4 +0,0 @@
d8:announce76:http://zviyq72xcmjupynn5y2f5qa3u7bxyu34jnqmwt6czte2l7idxm7q.b32.i2p/announce13:announce-listll76:http://zviyq72xcmjupynn5y2f5qa3u7bxyu34jnqmwt6czte2l7idxm7q.b32.i2p/announceel69:http://s5ikrdyjwbcgxmqetxb3nyheizftms7euacuub2hic7defkh3xhq.b32.i2p/ael76:http://uajd4nctepxpac4c4bdyrdw7qvja2a5u3x25otfhkptcjgd53ioq.b32.i2p/announceel69:http://w7tpbzncbcocrqtwwm3nezhnnsw4ozadvi2hmvzdhrqzfxfum7wa.b32.i2p/ael33:http://explodie.org:6969/announceel43:http://tracker.opentrackr.org:1337/announceel41:http://tracker.kamigami.org:2710/announceel49:http://tracker.internetwarriors.net:1337/announceel38:http://tracker.darli.net:6611/announceel43:http://tracker.corpscorp.online:80/announceel29:http://tracker.bz:80/announceel37:http://tracker.bt4g.com:2095/announceel42:http://retracker.sevstar.net:2710/announceel39:http://h4.trakx.nibba.trade:80/announceel36:http://www.proxmox.com:6969/announceel36:http://www.loushao.net:8080/announceel36:http://vps02.net.orel.ru:80/announceel39:http://tracker4.itzmx.com:2710/announceel39:http://tracker3.itzmx.com:6961/announceel39:http://tracker2.itzmx.com:6961/announceel39:http://tracker1.itzmx.com:8080/announceel42:http://tracker01.loveapp.com:6789/announceel42:http://tracker.zerobytes.xyz:1337/announceel41:http://tracker.yoshi210.com:6969/announceel41:http://tracker.torrentyorg.pl:80/announceel39:http://tracker.nyap2p.com:8080/announceel35:http://tracker.lelux.fi:80/announceel37:http://tracker.gbitt.info:80/announceel27:http://pow7.com:80/announceel42:http://opentracker.i2p.rocks:6969/announceel40:http://open.acgtracker.com:1096/announceel40:http://open.acgnxtracker.com:80/announceel37:http://mail2.zelenaya.net:80/announceel28:http://acg.rip:6699/announceee10:created by13:mktorrent 1.113:creation datei1578180361e4:infod6:lengthi4582809e4:name36:./i2ppb-0.55@eyedeekay.github.io.xpi12:piece lengthi262144e6:pieces360:%<25><05>/Ԭx<D4AC><78>Ɠ<EFBFBD><08><>4<EFBFBD>ա<EFBFBD>G<EFBFBD>B<15>Ҍ<EFBFBD>2Fi<04>'N<><4E>d<EFBFBD>C*P<>ה<EFBFBD>s6<1E><><EFBFBD>><3E>Pk<50><6B><EFBFBD><EFBFBD>E<EFBFBD>Ӄ<EFBFBD>j<1C><>@<19>
X<EFBFBD><EFBFBD><EFBFBD>?<3F>!†s<C286><73>k<EFBFBD><6B>m{<7B><><EFBFBD><EFBFBD><EFBFBD>*<2A><><EFBFBD>`<><16>0J<18><>%,<13><><EFBFBD>O
<EFBFBD>s˛Zs"
<EFBFBD>-<2D>J<EFBFBD><4A>?Y<><59><EFBFBD>ue<75>IuO6jnd<><64>*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)<29>K<1C><>Z<EFBFBD><5A>C<1A><><04><>0!<21><><EFBFBD><EFBFBD>"<22>SIv<><76>;[<5B><><EFBFBD><EFBFBD>Tі<54><D196>a5&<26>]A<19>dJ<64>Ou<4F>8<EFBFBD><38><0F><><1C>Ͳ<><CDB2>݃J<DD83><4A><11>(~Ыuҫ<75><D2AB><EFBFBD>i<EFBFBD>y{<7B>7<><17><>m<EFBFBD> <20>i:ʼn<><C589><EFBFBD><EFBFBD><EFBFBD><EFBFBD>s;<3B><>F\p<><70><EFBFBD>S<05><><EFBFBD>a<EFBFBD><61><07><><EFBFBD><EFBFBD><>x<EFBFBD>~<7E><><EFBFBD>]\<5C>T6<>P<EFBFBD><50>*e<><11>S<EFBFBD>Vy

Binary file not shown.

Binary file not shown.

View File

@@ -44,7 +44,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:b54b5a7952a3984cb3178533e29eb3b8ad46921c">Magnet Link</a></li>
<li><a href="magnet:?xt=urn:btih:6a5d3f3f7fb0aee95a8f864c39eccaaa4b2b7d4b">Magnet Link</a></li>
<li><a href="./i2ppb@eyedeekay.github.io.xpi.torrent">Get the .torrent file</a></li>
</ul>

View File

@@ -2,6 +2,7 @@
"applications": {
"gecko": {
"id": "i2ppb@eyedeekay.github.io",
"update_url": "https://c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p/i2p/updateManifest.json",
"strict_min_version": "60.0"
}
},
@@ -26,8 +27,8 @@
],
"manifest_version": 2,
"name": "__MSG_extensionName__",
"version": "0.59",
"version_name": "0.59",
"version": "0.63",
"version_name": "0.63",
"description": "__MSG_extensionDescription__",
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
"icons": {
@@ -46,6 +47,19 @@
"default_panel": "toopie.html",
"open_at_install": false
},
"page_action": {
"browser_style": true,
"default_title": "__MSG_toopieTLS__",
"default_icon": "icons/toopie.png",
"show_matches": [
"http://*.i2p/*",
"https://*.i2p/*",
"http://*.b32.i2p/*",
"https://*.b32.i2p/*"
],
"default_panel": "security.html",
"pinned": true
},
"options_ui": {
"page": "options/options.html"
},

View File

@@ -342,7 +342,7 @@ function i2pHost(url) {
}
function onContextGotLog(contexts) {
if (contexts !== null) {
if (contexts != null) {
for (let context of contexts) {
console.log(context);
}

View File

@@ -124,6 +124,18 @@ var handleContextProxyRequest = async function(requestDetails) {
};
return proxy;
}
if (requestDetails.originUrl == browser.runtime.getURL("security.html")) {
console.log(
"(proxy) extension security URL",
browser.runtime.getURL("security.html")
);
proxy = {
type: getScheme(),
host: getHost(),
port: getPort()
};
return proxy;
}
if (
requestDetails.cookieStoreId == "firefox-default" ||
requestDetails.cookieStoreId == "firefox-private"

View File

@@ -4,13 +4,71 @@
<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-01-04T21:46:19Z</updated>
<updated>2020-03-02T22:59:16Z</updated>
<entry>
<id>tag:github.com,2008:Repository/169256012/0.63</id>
<updated>2020-03-02T23:01:58Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.63"/>
<title>0.63</title>
<enclosure url="magnet:?xt=urn:btih:6a5d3f3f7fb0aee95a8f864c39eccaaa4b2b7d4b" 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;
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;other containerizers bugfix&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, 02 MAR 2020 17:54:26 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.61-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.61</id>
<updated>2020-03-02T22:48:06Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.61"/>
<title>0.61</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.61-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;other containerizers bugfix&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, 02 MAR 2020 17:46:24 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.59-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.59</id>
<updated>2020-02-26T03:10:23Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.59"/>
<title>0.59</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.59-1) UNRELEASED; urgency=low&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;transmission-rpc based torrent controls&lt;/li&gt;
&lt;li&gt;bugfixes&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; Tue, 25 FEB 2020 20:52:19 -0400&lt;/p&gt;
&lt;p&gt;i2psetproxy.js (0.57-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.57</id>
<updated>2020-01-06T17:16:33Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.57"/>
<title>0.57</title>
<enclosure url="magnet:?xt=urn:btih:90f1cef9f03f802499ecd7e22226aae72ddaa9c0" type="application/x-bittorrent" />
<content type="html">&lt;h1&gt;I2P in Private Browsing Mode&lt;/h1&gt;
&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;
@@ -142,46 +200,4 @@ i2psetproxy.js (0.47-1) UNRELEASED; urgency=low&lt;/p&gt;
</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.45</id>
<updated>2019-11-22T23:15:45Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.45"/>
<title>0.45</title>
<content type="html">&lt;h1&gt;I2P in Private Browsing Mode&lt;/h1&gt;
&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;/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.43</id>
<updated>2019-11-12T02:50:48Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.43"/>
<title>0.43</title>
<content type="html">&lt;h1&gt;I2P in Private Browsing Mode&lt;/h1&gt;
&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;/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.41</id>
<updated>2019-10-31T16:42:46Z</updated>
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.41"/>
<title>0.41</title>
<content type="html">&lt;h1&gt;I2P in Private Browsing Mode&lt;/h1&gt;
&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;/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>
</feed>

108
scrub.js
View File

@@ -87,6 +87,50 @@ var contextScrub = async function(requestDetails) {
}
};
var notMyContextNotMyProblem = async function() {
var contexts = await browser.contextualIdentities.query({});
var context1 = await browser.contextualIdentities.query({
name: titlepref
});
var context2 = await browser.contextualIdentities.query({
name: routerpref
});
var context3 = await browser.contextualIdentities.query({
name: mailpref
});
var context4 = await browser.contextualIdentities.query({
name: torrentpref
});
var context5 = await browser.contextualIdentities.query({
name: tunnelpref
});
var context6 = await browser.contextualIdentities.query({
name: localpref
});
var othercontexts = [];
console.log("Contexts:", contexts);
for (context in contexts) {
if (
contexts[context].cookieStoreId == context1[0].cookieStoreId ||
contexts[context].cookieStoreId == context2[0].cookieStoreId ||
contexts[context].cookieStoreId == context3[0].cookieStoreId ||
contexts[context].cookieStoreId == context4[0].cookieStoreId ||
contexts[context].cookieStoreId == context5[0].cookieStoreId ||
contexts[context].cookieStoreId == context6[0].cookieStoreId
) {
console.log(
"Context found",
contexts[context].cookieStoreId,
"is my responsibility"
);
} else {
//console.log("Context found", contexts[context].cookieStoreId, "is not my responsibility")
othercontexts.push(contexts[context]);
}
}
return othercontexts;
};
var contextSetup = function(requestDetails) {
function onContextError() {
console.log("Context launcher error");
@@ -108,6 +152,11 @@ var contextSetup = function(requestDetails) {
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);
}
@@ -134,18 +183,26 @@ var contextSetup = function(requestDetails) {
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log("(isolate) Closing un-isolated tab", tabId.id);
console.log("in favor of", tab.id);
console.log("with context", tab.cookieStoreId);
browser.tabs.remove(tabId.id);
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
closeOldTab(tab);
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
});
@@ -167,18 +224,26 @@ var contextSetup = function(requestDetails) {
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log("(isolate) Closing un-isolated tab", tabId.id);
console.log("in favor of", tab.id);
console.log("with context", tab.cookieStoreId);
browser.tabs.remove(tabId.id);
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
closeOldTab(tab);
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
});
@@ -200,18 +265,26 @@ var contextSetup = function(requestDetails) {
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log("(isolate) Closing un-isolated tab", tabId.id);
console.log("in favor of", tab.id);
console.log("with context", tab.cookieStoreId);
browser.tabs.remove(tabId.id);
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
closeOldTab(tab);
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
});
@@ -233,18 +306,26 @@ var contextSetup = function(requestDetails) {
if (tabId.cookieStoreId != context[0].cookieStoreId) {
function Create() {
function onCreated(tab) {
function closeOldTab() {
function closeOldTab(tabs) {
if (tabId.id != tab.id) {
console.log("(isolate) Closing un-isolated tab", tabId.id);
console.log("in favor of", tab.id);
console.log("with context", tab.cookieStoreId);
browser.tabs.remove(tabId.id);
}
for (index = 0; index < tabs.length; index++) {
if (index != tabs.length - 1)
browser.tabs.remove(tabs[index].id);
}
}
closeOldTab(tab);
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
});
@@ -302,11 +383,20 @@ var contextSetup = function(requestDetails) {
var localcontext = await browser.contextualIdentities.query({
name: localpref
});
var othercontexts = await notMyContextNotMyProblem();
var nmp = false;
for (context in othercontexts) {
if (tabId.cookieStoreId == othercontexts[context].cookieStoreId) {
console.log("Not my problem");
nmp = true;
}
}
if (
tabId.cookieStoreId == "firefox-default" ||
tabId.cookieStoreId == "firefox-private" ||
tabId.cookieStoreId == anoncontext[0].cookieStoreId ||
tabId.cookieStoreId == localcontext[0].cookieStoreId
tabId.cookieStoreId == localcontext[0].cookieStoreId ||
nmp
) {
console.log(
"(ISOLATE)",

56
security.html Normal file
View File

@@ -0,0 +1,56 @@
<!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</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>
<script src="cert.js"></script>
</body>
</html>