Compare commits
68 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
1401726f54 | ||
![]() |
11c03fb2aa | ||
![]() |
b4d1108e9c | ||
![]() |
a6b7f29bbd | ||
![]() |
1eb293d754 | ||
![]() |
f3a61d2619 | ||
![]() |
0b1aa5941b | ||
![]() |
ad5882501d | ||
![]() |
e014619881 | ||
![]() |
677c5c6a68 | ||
![]() |
a3217e2bcf | ||
![]() |
4ab7069015 | ||
![]() |
3a13270479 | ||
![]() |
a8eb2b90a2 | ||
![]() |
e54754a83a | ||
![]() |
7f3b6c7359 | ||
![]() |
50ff84111d | ||
![]() |
984643e1b2 | ||
![]() |
917fd00771 | ||
![]() |
97ee549d40 | ||
![]() |
e0232fa3bc | ||
![]() |
8d23820c65 | ||
![]() |
8a6d11594f | ||
![]() |
58dadaefc7 | ||
![]() |
eb92f1b275 | ||
![]() |
4862b0692f | ||
![]() |
377ab1d6b1 | ||
![]() |
cceeb4b613 | ||
![]() |
f109d66ab7 | ||
![]() |
0a447caa82 | ||
![]() |
1f7be5c9c3 | ||
![]() |
cd0d55d06f | ||
![]() |
8c40a01b2f | ||
![]() |
8e6832cf6c | ||
![]() |
311b837ef4 | ||
![]() |
d751622d7c | ||
![]() |
6406f70824 | ||
![]() |
96ee234a17 | ||
![]() |
87c52a0931 | ||
![]() |
d0136f2c6d | ||
![]() |
d0f4ff9fbb | ||
![]() |
2d1ae1fab8 | ||
![]() |
f8d99c8fca | ||
![]() |
aeeedc8d4c | ||
![]() |
e9e3ce085a | ||
![]() |
a192d17e68 | ||
![]() |
62d93a64c0 | ||
![]() |
aad47b03b1 | ||
![]() |
bc8317bd19 | ||
![]() |
1d209c52c8 | ||
![]() |
28901b8e65 | ||
![]() |
2ba386dc53 | ||
![]() |
25b1628b7c | ||
![]() |
f4d7217ce3 | ||
![]() |
89f64fa1be | ||
![]() |
0176755b72 | ||
![]() |
759b7f930e | ||
![]() |
7a9f347a5c | ||
![]() |
7f83404453 | ||
![]() |
e194893227 | ||
![]() |
299e6c5ba3 | ||
![]() |
0b2a615048 | ||
![]() |
49c4b09804 | ||
![]() |
be7e76524d | ||
![]() |
e8c94b2255 | ||
![]() |
a99a7067cb | ||
![]() |
074ff44066 | ||
![]() |
e54435f65d |
2
.gitignore
vendored
2
.gitignore
vendored
@@ -1,3 +1,5 @@
|
||||
README.md.asc
|
||||
node_modules/
|
||||
web-ext-artifacts
|
||||
releases.diff
|
||||
.releases.atom
|
165
Makefile
165
Makefile
@@ -1,50 +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 ./*.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.76
|
||||
VERSION=0.75
|
||||
|
||||
## INCREMENT THIS EVERY TIME YOU DO A RELEASE
|
||||
LAST_VERSION=0.55
|
||||
LAST_VERSION=0.73
|
||||
|
||||
YELLOW=F7E59A
|
||||
ORANGE=FFC56D
|
||||
@@ -74,11 +71,11 @@ index:
|
||||
@echo "<html>" >> index.html
|
||||
@echo "<head>" >> index.html
|
||||
@echo " <title>I2P in Private Browsing Mode</title>" >> index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href =\"home.css\" />" >> index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href =\"sidebar.css\" />" >> index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"home.css\" />" >> index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"sidebar.css\" />" >> index.html
|
||||
@echo "</head>" >> index.html
|
||||
@echo "<body>" >> index.html
|
||||
sed "s|magnetsub|[Magnet Link]($(MAGNET))|g" README.md | markdown >> index.html
|
||||
sed "s|magnetsub|[Magnet Link]($(MAGNET))|g" README.md | sed 's|README.md|index.html|g' | markdown >> index.html
|
||||
@echo "</body>" >> index.html
|
||||
@echo "</html>" >> index.html
|
||||
|
||||
@@ -87,34 +84,34 @@ torrenthelp:
|
||||
@echo "<html>" >> torrent/index.html
|
||||
@echo "<head>" >> torrent/index.html
|
||||
@echo " <title>I2P in Private Browsing Mode</title>" >> torrent/index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href =\"home.css\" />" >> torrent/index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href =\"sidebar.css\" />" >> torrent/index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"../home.css\" />" >> torrent/index.html
|
||||
@echo " <link rel=\"stylesheet\" type=\"text/css\" href=\"../sidebar.css\" />" >> torrent/index.html
|
||||
@echo "</head>" >> torrent/index.html
|
||||
@echo "<body>" >> torrent/index.html
|
||||
sed "s|magnetsub|[Magnet Link]($(MAGNET))|g" torrent/README.md | markdown >> torrent/index.html
|
||||
@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
|
||||
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
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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" \
|
||||
@@ -130,9 +127,19 @@ zip: version
|
||||
--exclude="web-ext-artifacts" \
|
||||
--exclude="./*.pdf" -r -FS ../i2psetproxy.js.zip *
|
||||
|
||||
release: index torrenthelp
|
||||
rc:
|
||||
@grep "$(VERSION)" debian/changelog
|
||||
@echo "changelog is prepared"
|
||||
rm -f *.xpi
|
||||
|
||||
rtest: rc index torrenthelp
|
||||
|
||||
release: rc index torrenthelp
|
||||
cat desc debian/changelog | grep -B 10 "$(LAST_VERSION)" | gothub release -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n $(VERSION) -d -; true
|
||||
|
||||
update-release:
|
||||
cat desc debian/changelog | grep -B 10 "$(LAST_VERSION)" | gothub edit -p -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n $(VERSION) -d -; true
|
||||
|
||||
delete-release:
|
||||
gothub delete -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION); true
|
||||
|
||||
@@ -140,7 +147,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 seed
|
||||
|
||||
WEB_EXT_API_KEY=AMO_KEY
|
||||
WEB_EXT_API_SECRET=AMO_SECRET
|
||||
@@ -151,7 +158,7 @@ WEB_EXT_API_SECRET=AMO_SECRET
|
||||
tk:
|
||||
echo $(WEB_EXT_API_KEY)
|
||||
|
||||
submit: moz-sign rhz-submit moz-submit
|
||||
submit: moz-submit moz-sign
|
||||
|
||||
clean-artifacts:
|
||||
rm -fr web-ext-artifacts/*
|
||||
@@ -161,31 +168,36 @@ 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
|
||||
$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)
|
||||
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
|
||||
@echo "Using the 'submit' target to instantly sign an extension for Mozilla 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."
|
||||
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
|
||||
sleep 5
|
||||
mv .manifest.json manifest.json
|
||||
|
||||
rhz-submit: rhz-version
|
||||
@echo "Rhizome releases are disabled while browser is completed."
|
||||
#@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
|
||||
#$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); true
|
||||
#cp web-ext-artifacts/*.xpi ./i2ppb@eyedeekay.github.io.xpi
|
||||
|
||||
getxpi:
|
||||
gothub download -t $(VERSION) -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -n "i2ppb@eyedeekay.github.io.xpi"
|
||||
gothub download -t $(VERSION) -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -n i2ppb@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"
|
||||
@@ -223,18 +235,18 @@ torrent: getxpi
|
||||
-a http://open.acgnxtracker.com:80/announce \
|
||||
-a http://mail2.zelenaya.net:80/announce \
|
||||
-a http://acg.rip:6699/announce \
|
||||
-n "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi" \
|
||||
-o "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" \
|
||||
-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
|
||||
ln -sf "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "./i2ppb@eyedeekay.github.io.xpi.torrent"
|
||||
../i2ppb@eyedeekay.github.io.xpi; true
|
||||
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "./i2ppb@eyedeekay.github.io.xpi.torrent"
|
||||
make index
|
||||
|
||||
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"
|
||||
@@ -249,41 +261,44 @@ 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 {} \;
|
||||
find . -path ./node_modules -prune -o -name '*.json' -exec prettier --write {} \;
|
||||
fixjsstyle *.js
|
||||
fixjsstyle options/*.js
|
||||
fixjsstyle torrent/*.js
|
||||
fixjsstyle i2pcontrol/*.js
|
||||
#find . -path ./node_modules -prune -o -name '*.json' -exec fixjsstyle --write {} \;
|
||||
|
||||
lint:
|
||||
fixjsstyle *.js
|
||||
|
||||
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 \
|
||||
.
|
||||
@@ -298,15 +313,29 @@ 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"
|
||||
web-ext run -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
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc.su3" -f ../i2psnark-rpc.su3
|
||||
http_proxy=http://127.0.0.1:4444 wget -c -O ../i2psnark-rpc-update.su3 http://stats.i2p/i2p/plugins/i2psnark-rpc-update.su3
|
||||
gothub upload -R -u eyedeekay -r I2P-in-Private-Browsing-Mode-Firefox -t $(VERSION) -n "i2psnark-rpc-update.su3" -f ../i2psnark-rpc-update.su3
|
||||
|
||||
seed:
|
||||
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/.i2p/i2psnark"
|
||||
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/.i2p/i2psnark"
|
||||
|
||||
wire:
|
||||
cp -v "./i2ppb-$(VERSION)@eyedeekay.github.io.xpi.torrent" "$(HOME)/i2p/MuWireDownloads/"
|
||||
cp -v "../i2ppb-$(VERSION)@eyedeekay.github.io.xpi" "$(HOME)/i2p/MuWireDownloads/"
|
||||
|
14
README.md
14
README.md
@@ -59,7 +59,10 @@ Usage:
|
||||
immediately, or you can close all your I2P Browser tabs at once and delete
|
||||
the history for I2P browsing when you're done.
|
||||
* That's all there is to it! Your browser is configured to safely use and
|
||||
administer I2P
|
||||
administer I2P.
|
||||
* Optionally, you can add I2PSnark-RPC and use Bittorrent-over-I2P via the
|
||||
transmission-rpc interface. To do this, have a look at the torrent guide:
|
||||
[Torrent guide](torrent/README.md)
|
||||
|
||||
### Features
|
||||
|
||||
@@ -93,11 +96,14 @@ Usage:
|
||||
place each i2p application/plugin under it's own origin, shortening router
|
||||
console URL's and placing applications under their own origin.
|
||||
* 
|
||||
* [wip] **Handle Torrents** by talking to i2psnark-rpc plugin and then
|
||||
* [Done] **Handle Torrents** by talking to i2psnark-rpc plugin and then
|
||||
adding them directly into the Firefox downloads drop-downs, menus, etc. If I
|
||||
can. Right now instead of talking to snark-rpc, it uses a web-based protocol
|
||||
handler that simply auto-fills the torrent into i2psnark.
|
||||
can.
|
||||
* 
|
||||
* 
|
||||
* [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.
|
||||
* [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
|
||||
|
@@ -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.71",
|
||||
"description": "Version of the extension."
|
||||
},
|
||||
"extensionStatus": {
|
||||
@@ -199,6 +203,14 @@
|
||||
"message": "Hidden Services Manager (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"muwirePreface": {
|
||||
"message": "MuWire",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"muwirePrefacePrivate": {
|
||||
"message": "MuWire (Private)",
|
||||
"description": "Preface for the browser titlebar"
|
||||
},
|
||||
"resetMessage": {
|
||||
"message": "Reset Tunnel",
|
||||
"description": "Message for the Reset Tunnel button"
|
||||
@@ -255,6 +267,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"
|
||||
|
256
background.js
256
background.js
@@ -1,18 +1,19 @@
|
||||
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 localpref = chrome.i18n.getMessage("localPreface");
|
||||
var localprefpriv = chrome.i18n.getMessage("localPrefacePrivate");
|
||||
var extensionpref = chrome.i18n.getMessage("extensionPreface");
|
||||
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 localpref = chrome.i18n.getMessage('localPreface');
|
||||
var localprefpriv = chrome.i18n.getMessage('localPrefacePrivate');
|
||||
var extensionpref = chrome.i18n.getMessage('extensionPreface');
|
||||
var muwirepref = chrome.i18n.getMessage('muwirePreface');
|
||||
|
||||
function onContextsGot(contexts) {
|
||||
var ids = [];
|
||||
@@ -20,13 +21,13 @@ function onContextsGot(contexts) {
|
||||
console.log(`Name : ${context.name}`);
|
||||
ids.push(context.name);
|
||||
}
|
||||
console.log("Checking new contexts");
|
||||
console.log('Checking new contexts');
|
||||
if (ids.indexOf(titlepref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: titlepref,
|
||||
color: "orange",
|
||||
icon: "fingerprint"
|
||||
color: 'orange',
|
||||
icon: 'fingerprint'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -34,8 +35,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: webpref,
|
||||
color: "red",
|
||||
icon: "circle"
|
||||
color: 'red',
|
||||
icon: 'circle'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -43,8 +44,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: routerpref,
|
||||
color: "blue",
|
||||
icon: "briefcase"
|
||||
color: 'blue',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -52,8 +53,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: tunnelpref,
|
||||
color: "green",
|
||||
icon: "tree"
|
||||
color: 'green',
|
||||
icon: 'tree'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -61,8 +62,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: mailpref,
|
||||
color: "yellow",
|
||||
icon: "briefcase"
|
||||
color: 'yellow',
|
||||
icon: 'briefcase'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -70,8 +71,8 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: torrentpref,
|
||||
color: "purple",
|
||||
icon: "chill"
|
||||
color: 'purple',
|
||||
icon: 'chill'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
@@ -79,30 +80,39 @@ function onContextsGot(contexts) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: localpref,
|
||||
color: "red",
|
||||
icon: "fence"
|
||||
color: 'red',
|
||||
icon: 'fence'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
if (ids.indexOf(localpref) == -1) {
|
||||
browser.contextualIdentities
|
||||
.create({
|
||||
name: muwirepref,
|
||||
color: 'turquoise',
|
||||
icon: 'gift'
|
||||
})
|
||||
.then(onCreated, onNotCreated);
|
||||
}
|
||||
}
|
||||
|
||||
function onContextsError() {
|
||||
console.log("Error finding contextual identities, is the API enabled?");
|
||||
console.log('Error finding contextual identities, is the API enabled?');
|
||||
}
|
||||
|
||||
function onCreated(context) {
|
||||
console.log(" ID:", context.cookieStoreId, "created.");
|
||||
console.log(' ID:', context.cookieStoreId, 'created.');
|
||||
}
|
||||
|
||||
function onNotCreated(context) {
|
||||
console.log("ID:", context.cookieStoreId, "not created.");
|
||||
console.log('ID:', context.cookieStoreId, 'not created.');
|
||||
}
|
||||
|
||||
browser.contextualIdentities.query({}).then(onContextsGot, onContextsError);
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
if (got.os != 'android') {
|
||||
browser.windows.onCreated.addListener(themeWindow);
|
||||
browser.windows.onFocusChanged.addListener(themeWindow);
|
||||
browser.windows.onRemoved.addListener(themeWindow);
|
||||
@@ -115,7 +125,7 @@ function themeWindowByTab(tabId) {
|
||||
function tabWindow(tab) {
|
||||
var gettingPlatformInfo = browser.runtime.getPlatformInfo();
|
||||
gettingPlatformInfo.then(got => {
|
||||
if (got.os == "android") {
|
||||
if (got.os == 'android') {
|
||||
let getwindow = browser.tabs.get(tab.tabId);
|
||||
getwindow.then(themeWindow);
|
||||
} else {
|
||||
@@ -124,7 +134,7 @@ function themeWindowByTab(tabId) {
|
||||
}
|
||||
});
|
||||
}
|
||||
if (typeof tabId === "number") {
|
||||
if (typeof tabId === 'number') {
|
||||
let tab = browser.tabs.get(tabId);
|
||||
tab.then(tabWindow);
|
||||
} else {
|
||||
@@ -150,108 +160,114 @@ var getOldTheme = async function getOldTheme() {
|
||||
let foundtheme = await browser.theme.getCurrent();
|
||||
if (!isEmpty(foundtheme)) {
|
||||
oldtheme = foundtheme;
|
||||
console.log("Found old theme", oldtheme);
|
||||
console.log('Found old theme', oldtheme);
|
||||
}
|
||||
return oldtheme;
|
||||
};
|
||||
}
|
||||
|
||||
getOldTheme();
|
||||
|
||||
function themeWindow(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onThemeError() {
|
||||
console.log("got theme", oldtheme);
|
||||
console.log('got theme', oldtheme);
|
||||
browser.theme.update(oldtheme);
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTheme(context) {
|
||||
if (context.name == titlepref) {
|
||||
console.log("Active in I2P window");
|
||||
console.log('Active in I2P window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#FFC56D",
|
||||
toolbar: "#FFC56D"
|
||||
frame: '#FFC56D',
|
||||
toolbar: '#FFC56D'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#FFC56D",
|
||||
toolbar: "#FFC56D"
|
||||
frame: '#FFC56D',
|
||||
toolbar: '#FFC56D'
|
||||
}
|
||||
});
|
||||
}
|
||||
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");
|
||||
console.log('Active in Router Console window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A4C8E1",
|
||||
toolbar: "#A4C8E1"
|
||||
frame: '#A4C8E1',
|
||||
toolbar: '#A4C8E1'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A4C8E1",
|
||||
toolbar: "#A4C8E1"
|
||||
frame: '#A4C8E1',
|
||||
toolbar: '#A4C8E1'
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log("Active in Hidden Services Manager window");
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#D9D9D6",
|
||||
toolbar: "#D9D9D6"
|
||||
frame: '#D9D9D6',
|
||||
toolbar: '#D9D9D6'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#D9D9D6",
|
||||
toolbar: "#D9D9D6"
|
||||
frame: '#D9D9D6',
|
||||
toolbar: '#D9D9D6'
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if (context.name == mailpref) {
|
||||
console.log("Active in Web Mail window");
|
||||
console.log('Active in Web Mail window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#F7E59A",
|
||||
toolbar: "#F7E59A"
|
||||
frame: '#F7E59A',
|
||||
toolbar: '#F7E59A'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#F7E59A",
|
||||
toolbar: "#F7E59A"
|
||||
frame: '#F7E59A',
|
||||
toolbar: '#F7E59A'
|
||||
}
|
||||
});
|
||||
}
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log("Active in Bittorrent window");
|
||||
console.log('Active in Bittorrent window');
|
||||
if (window.incognito) {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A48FE1",
|
||||
toolbar: "#A48FE1"
|
||||
frame: '#A48FE1',
|
||||
toolbar: '#A48FE1'
|
||||
}
|
||||
});
|
||||
} else {
|
||||
browser.theme.update(window.id, {
|
||||
colors: {
|
||||
frame: "#A48FE1",
|
||||
toolbar: "#A48FE1"
|
||||
frame: '#A48FE1',
|
||||
toolbar: '#A48FE1'
|
||||
}
|
||||
});
|
||||
}
|
||||
} else {
|
||||
console.log("Not active in I2P window");
|
||||
console.log('Not active in I2P window');
|
||||
if (isEmpty(oldtheme)) {
|
||||
browser.theme.reset();
|
||||
} else {
|
||||
@@ -260,8 +276,8 @@ function themeWindow(window) {
|
||||
}
|
||||
}
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != "firefox-default" &&
|
||||
tabInfo[0].cookieStoreId != "firefox-private"
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
@@ -283,109 +299,109 @@ function themeWindow(window) {
|
||||
function setTitle(window) {
|
||||
// Check if the window is in private browsing
|
||||
function onContextError() {
|
||||
console.log("Context Error");
|
||||
console.log('Context Error');
|
||||
}
|
||||
function logTabs(tabInfo) {
|
||||
function onContextGotTitle(context) {
|
||||
if (context.name == titlepref) {
|
||||
console.log("Active in I2P window");
|
||||
console.log('Active in I2P window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + ": "
|
||||
titlePreface: titleprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + ": "
|
||||
titlePreface: titlepref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == webpref) {
|
||||
console.log("Active in Web window");
|
||||
console.log('Active in Web window');
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: webprefpriv + " - "
|
||||
titlePreface: webprefpriv + ' - '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: webpref + " - "
|
||||
titlePreface: webpref + ' - '
|
||||
});
|
||||
}
|
||||
} else if (context.name == routerpref) {
|
||||
console.log("Active in Router Console window");
|
||||
console.log('Active in Router Console window');
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + " - " + routerprefpriv + ": "
|
||||
titlePreface: titleprefpriv + ' - ' + routerprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + " - " + routerpref + ": "
|
||||
titlePreface: titlepref + ' - ' + routerpref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == tunnelpref) {
|
||||
console.log("Active in Hidden Services Manager window");
|
||||
console.log('Active in Hidden Services Manager window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + " - " + tunnelprefpriv + ": "
|
||||
titlePreface: titleprefpriv + ' - ' + tunnelprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + " - " + tunnelpref + ": "
|
||||
titlePreface: titlepref + ' - ' + tunnelpref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == mailpref) {
|
||||
console.log("Active in I2P Web Mail window");
|
||||
console.log('Active in I2P Web Mail window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + " - " + mailprefpriv + ": "
|
||||
titlePreface: titleprefpriv + ' - ' + mailprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + " - " + mailpref + ": "
|
||||
titlePreface: titlepref + ' - ' + mailpref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == torrentpref) {
|
||||
console.log("Active in I2P Torrent window");
|
||||
console.log('Active in I2P Torrent window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titleprefpriv + " - " + torrentprefpriv + ": "
|
||||
titlePreface: titleprefpriv + ' - ' + torrentprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: titlepref + " - " + torrentpref + ": "
|
||||
titlePreface: titlepref + ' - ' + torrentpref + ': '
|
||||
});
|
||||
}
|
||||
} else if (context.name == localpref) {
|
||||
console.log("Active in Localhost window");
|
||||
console.log('Active in Localhost window');
|
||||
|
||||
if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: localprefpriv + " - " + localprefpriv + ": "
|
||||
titlePreface: localprefpriv + ' - ' + localprefpriv + ': '
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: localpref + " - " + localpref + ": "
|
||||
titlePreface: localpref + ' - ' + localpref + ': '
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (
|
||||
tabInfo[0].cookieStoreId != "firefox-default" &&
|
||||
tabInfo[0].cookieStoreId != "firefox-private"
|
||||
tabInfo[0].cookieStoreId != 'firefox-default' &&
|
||||
tabInfo[0].cookieStoreId != 'firefox-private'
|
||||
) {
|
||||
browser.contextualIdentities
|
||||
.get(tabInfo[0].cookieStoreId)
|
||||
.then(onContextGotTitle, onContextError);
|
||||
} else if (window.incognito) {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ""
|
||||
titlePreface: ''
|
||||
});
|
||||
} else {
|
||||
browser.windows.update(window.id, {
|
||||
titlePreface: ""
|
||||
titlePreface: ''
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -400,9 +416,9 @@ function setTitle(window) {
|
||||
var gettingListenerInfo = browser.runtime.getPlatformInfo();
|
||||
gettingListenerInfo.then(got => {
|
||||
function onPlatformError() {
|
||||
console.log("Error finding platform info");
|
||||
console.log('Error finding platform info');
|
||||
}
|
||||
if (got.os != "android") {
|
||||
if (got.os != 'android') {
|
||||
browser.tabs.onCreated.addListener(() => {
|
||||
var getting = browser.windows.getCurrent({
|
||||
populate: true
|
||||
@@ -427,3 +443,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"]
|
||||
);
|
||||
|
121
bookmarks.js
121
bookmarks.js
@@ -1,28 +1,28 @@
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
if (got.os != 'android') {
|
||||
function bookmarks(bookmarkToolbar) {
|
||||
console.log("Setting up bookmark toolbar", bookmarkToolbar);
|
||||
console.log('Setting up bookmark toolbar', bookmarkToolbar);
|
||||
function bookHome(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: "about:I2p",
|
||||
title: "I2P Home Page",
|
||||
url: 'about:I2p',
|
||||
title: 'I2P Extension Home Page',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
} else {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: browser.runtime.getURL("home.html"),
|
||||
title: "I2P Home Page",
|
||||
url: browser.runtime.getURL('home.html'),
|
||||
title: 'I2P Extension Home Page',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
}
|
||||
console.log("(bookmarks) adding home page bookmark");
|
||||
console.log('(bookmarks) adding home page bookmark');
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
@@ -34,19 +34,46 @@ gettingInfo.then(got => {
|
||||
function bookTorrent(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7647/i2psnark",
|
||||
title: "Bittorrent",
|
||||
url: 'http://localhost:7657/i2psnark',
|
||||
title: 'Bittorrent',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
"http://" + control_host + ":" + control_port + "/i2psnark",
|
||||
title: "Bittorrent",
|
||||
'http://' + control_host + ':' + control_port + '/i2psnark',
|
||||
title: 'Bittorrent',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
);
|
||||
let gettingProxyInfo = browser.proxy.settings.get({});
|
||||
gettingProxyInfo.then(gotProxyInfo);
|
||||
}
|
||||
}
|
||||
function bookConsole(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: 'http://localhost:7657/home',
|
||||
title: 'I2P Console',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: 'http://' + control_host + ':' + control_port + '/home',
|
||||
title: 'I2P Console',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
@@ -62,23 +89,23 @@ gettingInfo.then(got => {
|
||||
function bookMail(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7647/webmail",
|
||||
title: "Web Mail",
|
||||
url: 'http://localhost:7657/webmail',
|
||||
title: 'Web Mail',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
let createRhizomeBookmark = browser.bookmarks.create({
|
||||
url: "http://" + control_host + ":" + control_port + "/webmail",
|
||||
title: "Web Mail",
|
||||
url: 'http://' + control_host + ':' + control_port + '/webmail',
|
||||
title: 'Web Mail',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
console.log("(bookmarks) adding webmail bookmark");
|
||||
console.log('(bookmarks) adding webmail bookmark');
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
@@ -90,24 +117,24 @@ gettingInfo.then(got => {
|
||||
function bookI2PTunnel(bookmarkItems) {
|
||||
if (!bookmarkItems.length) {
|
||||
function gotProxyInfo(info) {
|
||||
let port = info.value.http.split(":")[1];
|
||||
if (port == "7644") {
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port == '7644') {
|
||||
var createBookmark = browser.bookmarks.create({
|
||||
url: "http://localhost:7647/i2ptunnel",
|
||||
title: "Hidden Services Manager",
|
||||
url: 'http://localhost:7657/i2ptunnel',
|
||||
title: 'Hidden Services Manager',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onCreated);
|
||||
} else {
|
||||
var createRhizomeBookmark = browser.bookmarks.create({
|
||||
url:
|
||||
"http://" + control_host + ":" + control_port + "/i2ptunnel",
|
||||
title: "Hidden Services Manager",
|
||||
'http://' + control_host + ':' + control_port + '/i2ptunnel',
|
||||
title: 'Hidden Services Manager',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createRhizomeBookmark.then(onCreated);
|
||||
}
|
||||
console.log("(bookmarks) adding i2ptunnel bookmark");
|
||||
console.log('(bookmarks) adding i2ptunnel bookmark');
|
||||
}
|
||||
console.log(
|
||||
"(bookmarks) checking if we're running in an I2P Browser"
|
||||
@@ -121,35 +148,57 @@ gettingInfo.then(got => {
|
||||
console.log(`An error : ${error}`);
|
||||
}
|
||||
function onCreated(node) {
|
||||
console.log("Bookmarked", node);
|
||||
console.log('Bookmarked', node);
|
||||
}
|
||||
|
||||
var b0 = browser.bookmarks.search({
|
||||
title: "I2P Home Page"
|
||||
title: 'I2P Extension Home Page'
|
||||
});
|
||||
b0.then(bookHome, onRejected);
|
||||
|
||||
var b1 = browser.bookmarks.search({
|
||||
title: "Bittorrent"
|
||||
title: 'Bittorrent'
|
||||
});
|
||||
b1.then(bookTorrent, onRejected);
|
||||
|
||||
var b2 = browser.bookmarks.search({
|
||||
title: "Hidden Services Manager"
|
||||
title: 'Hidden Services Manager'
|
||||
});
|
||||
b2.then(bookI2PTunnel, onRejected);
|
||||
|
||||
var b3 = browser.bookmarks.search({
|
||||
title: "Web Mail"
|
||||
title: 'Web Mail'
|
||||
});
|
||||
b3.then(bookMail, onRejected);
|
||||
|
||||
var b4 = browser.bookmarks.search({
|
||||
title: 'I2P Console'
|
||||
});
|
||||
b4.then(bookConsole, onRejected);
|
||||
}
|
||||
|
||||
var bt = browser.bookmarks.search({
|
||||
query: "Toolbar"
|
||||
query: 'Toolbar'
|
||||
});
|
||||
|
||||
bt.then(bookmarks);
|
||||
function toolDir(bookmarkToolbar) {
|
||||
var ibbt = browser.bookmarks.search('I2P Toolbar');
|
||||
function setupDir(ibbt) {
|
||||
function onToolbarCreated(node) {
|
||||
var ibt = browser.bookmarks.search('I2P Toolbar');
|
||||
ibt.then(bookmarks);
|
||||
}
|
||||
if (ibbt[0] == null) {
|
||||
let createBookmark = browser.bookmarks.create({
|
||||
title: 'I2P Toolbar',
|
||||
parentId: bookmarkToolbar[0].id
|
||||
});
|
||||
createBookmark.then(onToolbarCreated);
|
||||
}
|
||||
}
|
||||
ibbt.then(setupDir);
|
||||
}
|
||||
bt.then(toolDir);
|
||||
|
||||
function handleCreated(id, bookmarkInfo) {
|
||||
//var propValue;
|
||||
|
52
cert.js
Normal file
52
cert.js
Normal 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);
|
26
config.js
26
config.js
@@ -1,18 +1,18 @@
|
||||
var proxy_scheme = "HTTP";
|
||||
var proxy_host = "127.0.0.1";
|
||||
var proxy_port = "4444";
|
||||
var proxy_scheme = 'HTTP';
|
||||
var proxy_host = '127.0.0.1';
|
||||
var proxy_port = '4444';
|
||||
|
||||
var control_host = "127.0.0.1";
|
||||
var control_port = "7657";
|
||||
var control_host = '127.0.0.1';
|
||||
var control_port = '7657';
|
||||
|
||||
var rpc_host = "127.0.0.1";
|
||||
var rpc_port = "7657";
|
||||
var rpc_path = "jsonrpc";
|
||||
var rpc_pass = "itoopie";
|
||||
var rpc_host = '127.0.0.1';
|
||||
var rpc_port = '7657';
|
||||
var rpc_path = 'jsonrpc';
|
||||
var rpc_pass = 'itoopie';
|
||||
|
||||
var bt_rpc_host = "127.0.0.1";
|
||||
var bt_rpc_port = "7657";
|
||||
var bt_rpc_path = "transmission/rpc";
|
||||
var bt_rpc_pass = "transmission";
|
||||
var bt_rpc_host = '127.0.0.1';
|
||||
var bt_rpc_port = '7657';
|
||||
var bt_rpc_path = 'transmission/rpc';
|
||||
var bt_rpc_pass = 'transmission';
|
||||
|
||||
var disable_history = false;
|
||||
|
74
content.js
74
content.js
@@ -2,54 +2,54 @@ function contentUpdateById(id, message) {
|
||||
let infoTitle = document.getElementById(id);
|
||||
let messageContent = chrome.i18n.getMessage(message);
|
||||
if (infoTitle === null) {
|
||||
console.log("content error", id, messageContent);
|
||||
console.log('content error', id, messageContent);
|
||||
return;
|
||||
}
|
||||
infoTitle.textContent = messageContent;
|
||||
}
|
||||
|
||||
// Information Section
|
||||
contentUpdateById("text-section-header", "extensionName");
|
||||
contentUpdateById("description", "extensionDescription");
|
||||
contentUpdateById("i2pbrowser-version", "extensionVersion");
|
||||
contentUpdateById("beta", "extensionStatus");
|
||||
contentUpdateById("proxy-check", "proxyFailedStatus");
|
||||
contentUpdateById('text-section-header', 'extensionName');
|
||||
contentUpdateById('description', 'extensionDescription');
|
||||
contentUpdateById('i2pbrowser-version', 'extensionVersion');
|
||||
contentUpdateById('beta', 'extensionStatus');
|
||||
contentUpdateById('proxy-check', 'proxyFailedStatus');
|
||||
|
||||
// Control Section
|
||||
contentUpdateById("controlHeader", "controlHeader");
|
||||
contentUpdateById("controlExplain", "controlExplain");
|
||||
contentUpdateById("clear-browser-data", "clearData");
|
||||
contentUpdateById("clear-desc", "clearDesc");
|
||||
contentUpdateById("enable-web-rtc", "enableWebRTC");
|
||||
contentUpdateById("rtcDesc", "rtcDesc");
|
||||
contentUpdateById("disable-history", "disableHistory");
|
||||
contentUpdateById("histDesc", "histDesc");
|
||||
contentUpdateById('controlHeader', 'controlHeader');
|
||||
contentUpdateById('controlExplain', 'controlExplain');
|
||||
contentUpdateById('clear-browser-data', 'clearData');
|
||||
contentUpdateById('clear-desc', 'clearDesc');
|
||||
contentUpdateById('enable-web-rtc', 'enableWebRTC');
|
||||
contentUpdateById('rtcDesc', 'rtcDesc');
|
||||
contentUpdateById('disable-history', 'disableHistory');
|
||||
contentUpdateById('histDesc', 'histDesc');
|
||||
|
||||
// Application Section
|
||||
contentUpdateById("applicationHeader", "applicationHeader");
|
||||
contentUpdateById("applicationExplain", "applicationExplain");
|
||||
contentUpdateById("window-visit-index", "windowVisitHelppage");
|
||||
contentUpdateById("help", "help");
|
||||
contentUpdateById("window-visit-router", "windowVisitConsole");
|
||||
contentUpdateById("routerConsole", "routerConsole");
|
||||
contentUpdateById("window-visit-homepage", "windowVisitHomepage");
|
||||
contentUpdateById("abouthome", "abouthome");
|
||||
contentUpdateById("window-visit-i2ptunnel", "windowVisitI2ptunnel");
|
||||
contentUpdateById("i2ptunnel", "i2ptunnel");
|
||||
contentUpdateById("window-visit-susimail", "windowVisitSusiMail");
|
||||
contentUpdateById("susimail", "susimail");
|
||||
contentUpdateById("window-visit-snark", "windowVisitSnark");
|
||||
contentUpdateById("snark", "snark");
|
||||
contentUpdateById('applicationHeader', 'applicationHeader');
|
||||
contentUpdateById('applicationExplain', 'applicationExplain');
|
||||
contentUpdateById('window-visit-index', 'windowVisitHelppage');
|
||||
contentUpdateById('help', 'help');
|
||||
contentUpdateById('window-visit-router', 'windowVisitConsole');
|
||||
contentUpdateById('routerConsole', 'routerConsole');
|
||||
contentUpdateById('window-visit-homepage', 'windowVisitHomepage');
|
||||
contentUpdateById('abouthome', 'abouthome');
|
||||
contentUpdateById('window-visit-i2ptunnel', 'windowVisitI2ptunnel');
|
||||
contentUpdateById('i2ptunnel', 'i2ptunnel');
|
||||
contentUpdateById('window-visit-susimail', 'windowVisitSusiMail');
|
||||
contentUpdateById('susimail', 'susimail');
|
||||
contentUpdateById('window-visit-snark', 'windowVisitSnark');
|
||||
contentUpdateById('snark', 'snark');
|
||||
|
||||
// Homepage Section
|
||||
contentUpdateById("window-visit-webpage", "windowVisitWebPage");
|
||||
contentUpdateById("webpage", "help");
|
||||
contentUpdateById("window-visit-sources", "windowVisitSources");
|
||||
contentUpdateById("sources", "sources");
|
||||
contentUpdateById("window-visit-releases", "windowVisitReleases");
|
||||
contentUpdateById("releases", "releases");
|
||||
contentUpdateById('window-visit-webpage', 'windowVisitWebPage');
|
||||
contentUpdateById('webpage', 'help');
|
||||
contentUpdateById('window-visit-sources', 'windowVisitSources');
|
||||
contentUpdateById('sources', 'sources');
|
||||
contentUpdateById('window-visit-releases', 'windowVisitReleases');
|
||||
contentUpdateById('releases', 'releases');
|
||||
|
||||
fetch("http://proxy.i2p").then(myJson => {
|
||||
console.log("FETCH RESULT", myJson);
|
||||
contentUpdateById("proxy-check", "proxySuccessStatus");
|
||||
fetch('http://proxy.i2p').then(myJson => {
|
||||
console.log('FETCH RESULT', myJson);
|
||||
contentUpdateById('proxy-check', 'proxySuccessStatus');
|
||||
});
|
||||
|
@@ -1,5 +1,5 @@
|
||||
//var windowIds = []
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
|
||||
function onError(error) {
|
||||
console.log(`Error : ${error}`);
|
||||
@@ -10,17 +10,17 @@ function eventHandler(event) {
|
||||
console.log(`Created window : ${windowInfo.id}`);
|
||||
browser.tabs.create({
|
||||
windowId: windowInfo.id,
|
||||
url: "about:blank",
|
||||
url: 'about:blank',
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
});
|
||||
}
|
||||
if (event.target.dataset.action == "create") {
|
||||
if (event.target.dataset.action == 'create') {
|
||||
var creating = browser.tabs.create({
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
});
|
||||
creating.then(onCreated, onError);
|
||||
}
|
||||
if (event.target.dataset.action == "close-all") {
|
||||
if (event.target.dataset.action == 'close-all') {
|
||||
browser.tabs
|
||||
.query({
|
||||
cookieStoreId: event.target.dataset.identity
|
||||
|
63
debian/changelog
vendored
63
debian/changelog
vendored
@@ -1,3 +1,62 @@
|
||||
i2psetproxy.js (0.73-1) UNRELEASED; urgency=low
|
||||
|
||||
* Update bookmarks format
|
||||
* Deprecate WebRTC State Management
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Mon, 22 JUN 2020 19:21:23 -0400
|
||||
|
||||
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix incomplete bugfix from 0.69
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:19:59 -0400
|
||||
|
||||
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low
|
||||
|
||||
* Fix incomplete bugfix from 0.69
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:19:59 -0400
|
||||
|
||||
i2psetproxy.js (0.69-1) UNRELEASED; urgency=low
|
||||
|
||||
* Add MuWire contextual ID
|
||||
* Fix bug occurring on certain modded I2P installs
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 24 MAR 2020 0:12:02 -0400
|
||||
|
||||
i2psetproxy.js (0.67-1) UNRELEASED; urgency=low
|
||||
|
||||
* Tweak some default settings that should have gone into 65
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
|
||||
|
||||
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low
|
||||
|
||||
* Initial prototype of certs implementation
|
||||
* Use "pinned apptabs" to minimize the number of tabs occupied by an app
|
||||
* Get ready for self-hosted updates but with bittorrent because it's cooler
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 17 MAR 2020 22:58:55 -0400
|
||||
|
||||
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
|
||||
* bugfixes
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Tue, 25 FEB 2020 20:52:19 -0400
|
||||
|
||||
i2psetproxy.js (0.57-1) UNRELEASED; urgency=low
|
||||
|
||||
* Snowflake compatibility
|
||||
@@ -6,7 +65,7 @@ i2psetproxy.js (0.57-1) UNRELEASED; urgency=low
|
||||
* Make it multilingual again
|
||||
* Distribute a torrent and a magnet link with the plugin of the plugin
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Thu, 4 JAN 2019 16:43:58 -0400
|
||||
-- idk <hankhill19580@gmail.com> Thu, 4 JAN 2020 16:43:58 -0400
|
||||
|
||||
i2psetproxy.js (0.55-1) UNRELEASED; urgency=low
|
||||
|
||||
@@ -15,7 +74,7 @@ i2psetproxy.js (0.55-1) UNRELEASED; urgency=low
|
||||
* Tolerate themes
|
||||
* Tolerate other containerizers
|
||||
|
||||
-- idk <hankhill19580@gmail.com> Thu, 2 JAN 2019 16:47:33 -0400
|
||||
-- idk <hankhill19580@gmail.com> Thu, 2 JAN 2020 16:47:33 -0400
|
||||
|
||||
i2psetproxy.js (0.53-1) UNRELEASED; urgency=low
|
||||
|
||||
|
6
debian/postinst
vendored
Normal file
6
debian/postinst
vendored
Normal 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
|
23
debian/rules
vendored
23
debian/rules
vendored
@@ -3,24 +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 ./*.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
|
||||
|
3
debian/source/include-binaries
vendored
3
debian/source/include-binaries
vendored
@@ -1,6 +1,3 @@
|
||||
i2psetproxy.js.gif
|
||||
i2psetproxy.js@eyedeekay.github.io.xpi
|
||||
i2ppb@eyedeekay.github.io.xpi
|
||||
web-ext-artifacts/i2p_in_private_browsing-0.51-an+fx.xpi
|
||||
smartlander.pdf
|
||||
browser.pdf
|
91
handler.js
91
handler.js
@@ -1,50 +1,55 @@
|
||||
function routerHost(url) {
|
||||
let hostname = "";
|
||||
let path = "";
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
function pathcheck(str) {
|
||||
if (str != undefined) {
|
||||
let final = str.split("/")[0];
|
||||
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2ptunnelmgr";
|
||||
} else if (final === "i2psnark" || final === "torrents") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2psnark";
|
||||
} else if (final === "webmail" || final === "susimail") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "webmail";
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (final === 'i2psnark' || final === 'torrents') {
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
} else if (final.startsWith('MuWire')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) MuWire application path', final);
|
||||
return 'muwire';
|
||||
}
|
||||
} else if (
|
||||
final === "home" ||
|
||||
final === "console" ||
|
||||
final === "dns" ||
|
||||
final.startsWith("config")
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
final === 'dns' ||
|
||||
final.startsWith('config')
|
||||
) {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "routerconsole";
|
||||
console.log('(urlcheck) Console application path', final);
|
||||
return 'routerconsole';
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let prefix = url.substr(0, url.indexOf("://") + 3);
|
||||
path = url.replace(prefix + hostname + "/", "");
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
path = url.replace(prefix + hostname + '/', '');
|
||||
} else if (identifyProtocolHandler(url)) {
|
||||
let newurl = identifyProtocolHandler(url);
|
||||
return routerHost(newurl);
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
path = url.replace(hostname + "/", "");
|
||||
hostname = url.split('/')[0];
|
||||
path = url.replace(hostname + '/', '');
|
||||
}
|
||||
if (hostname === control_host + ":" + control_port) {
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === "localhost" + ":" + control_port) {
|
||||
if (hostname === 'localhost' + ':' + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === "127.0.0.1" + ":" + control_port) {
|
||||
if (hostname === '127.0.0.1' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
|
||||
@@ -54,28 +59,28 @@ function routerHost(url) {
|
||||
function identifyProtocolHandler(url) {
|
||||
//console.log("looking for handler-able requests")
|
||||
if (routerHost(url)) {
|
||||
if (url.includes(encodeURIComponent("ext+rc:"))) {
|
||||
return url.replace(encodeURIComponent("ext+rc:"), "");
|
||||
} else if (url.includes("ext+rc:")) {
|
||||
return url.replace("ext+rc:", "");
|
||||
if (url.includes(encodeURIComponent('ext+rc:'))) {
|
||||
return url.replace(encodeURIComponent('ext+rc:'), '');
|
||||
} else if (url.includes('ext+rc:')) {
|
||||
return url.replace('ext+rc:', '');
|
||||
}
|
||||
} else if (url.includes("ext+rc:")) {
|
||||
} else if (url.includes('ext+rc:')) {
|
||||
return url;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function trimHost(url) {
|
||||
let hostname = "";
|
||||
let prefix = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
prefix = url.substr(0, url.indexOf("://") + 3);
|
||||
hostname = url.split("/")[2];
|
||||
let hostname = '';
|
||||
let prefix = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
let path = url.replace(prefix + hostname, "");
|
||||
console.log("(handler) path", prefix + hostname, path);
|
||||
let path = url.replace(prefix + hostname, '');
|
||||
console.log('(handler) path', prefix + hostname, path);
|
||||
return path;
|
||||
}
|
||||
|
||||
@@ -83,7 +88,7 @@ var handlerSetup = function(requestDetails) {
|
||||
//console.log("checking protocol handler listener")
|
||||
let rwurl = identifyProtocolHandler(requestDetails.url);
|
||||
if (rwurl != false) {
|
||||
console.log("(handler) rewrite URL requested", rwurl);
|
||||
console.log('(handler) rewrite URL requested', rwurl);
|
||||
requestDetails.redirectUrl = rwurl;
|
||||
requestDetails.url = trimHost(rwurl);
|
||||
requestDetails.originUrl = trimHost(rwurl);
|
||||
@@ -93,6 +98,6 @@ var handlerSetup = function(requestDetails) {
|
||||
|
||||
browser.webRequest.onBeforeRequest.addListener(
|
||||
handlerSetup,
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking"]
|
||||
{ urls: ['<all_urls>'] },
|
||||
['blocking']
|
||||
);
|
||||
|
34
home.js
34
home.js
@@ -1,25 +1,25 @@
|
||||
document.addEventListener("click", clickEvent => {
|
||||
if (clickEvent.target.id === "onboardingButtonZero") {
|
||||
flipVisibility("onboardingContentZero");
|
||||
} else if (clickEvent.target.id === "onboardingButtonOne") {
|
||||
flipVisibility("onboardingContentOne");
|
||||
} else if (clickEvent.target.id === "onboardingButtonTwo") {
|
||||
flipVisibility("onboardingContentTwo");
|
||||
} else if (clickEvent.target.id === "onboardingButtonThree") {
|
||||
flipVisibility("onboardingContentThree");
|
||||
} else if (clickEvent.target.id === "onboardingButtonFour") {
|
||||
flipVisibility("onboardingContentFour");
|
||||
} else if (clickEvent.target.id === "fliplinks") {
|
||||
flipVisibility("info-content");
|
||||
document.addEventListener('click', clickEvent => {
|
||||
if (clickEvent.target.id === 'onboardingButtonZero') {
|
||||
flipVisibility('onboardingContentZero');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonOne') {
|
||||
flipVisibility('onboardingContentOne');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonTwo') {
|
||||
flipVisibility('onboardingContentTwo');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonThree') {
|
||||
flipVisibility('onboardingContentThree');
|
||||
} else if (clickEvent.target.id === 'onboardingButtonFour') {
|
||||
flipVisibility('onboardingContentFour');
|
||||
} else if (clickEvent.target.id === 'fliplinks') {
|
||||
flipVisibility('info-content');
|
||||
}
|
||||
});
|
||||
|
||||
function flipVisibility(div) {
|
||||
console.log("(home) seeking flippable", div);
|
||||
console.log('(home) seeking flippable', div);
|
||||
let flippable = document.getElementById(div);
|
||||
if (flippable.style.display !== "block") {
|
||||
flippable.style.display = "block";
|
||||
if (flippable.style.display !== 'block') {
|
||||
flippable.style.display = 'block';
|
||||
} else {
|
||||
flippable.style.display = "none";
|
||||
flippable.style.display = 'none';
|
||||
}
|
||||
}
|
||||
|
116
host.js
116
host.js
@@ -1,27 +1,32 @@
|
||||
function proxyHost(url) {
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
if (hostname == "proxy.i2p") {
|
||||
if (hostname == 'proxy.i2p') {
|
||||
return true;
|
||||
}
|
||||
if (
|
||||
hostname == 'c6lilt4cr5x7jifxridpkesf2zgfwqfchtp6laihr4pdqomq25iq.b32.i2p'
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function localHost(url) {
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
hostname = hostname.split(":")[0];
|
||||
if (hostname === "127.0.0.1") {
|
||||
hostname = hostname.split(':')[0];
|
||||
if (hostname === '127.0.0.1') {
|
||||
return true;
|
||||
} else if (hostname === "localhost") {
|
||||
} else if (hostname === 'localhost') {
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -30,83 +35,92 @@ function localHost(url) {
|
||||
|
||||
function extensionHost(url) {
|
||||
if (url.originUrl !== undefined) {
|
||||
var res = url.originUrl.startsWith(browser.runtime.getURL(""));
|
||||
var res = url.originUrl.startsWith(browser.runtime.getURL(''));
|
||||
if (res) return res;
|
||||
}
|
||||
if (url.url !== undefined) {
|
||||
var res = url.url.startsWith(browser.runtime.getURL(""));
|
||||
var res = url.url.startsWith(browser.runtime.getURL(''));
|
||||
if (res) return res;
|
||||
}
|
||||
}
|
||||
|
||||
function i2pHostName(url) {
|
||||
let hostname = "";
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let hostname = '';
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
hostname = url.split('/')[0];
|
||||
}
|
||||
return hostname;
|
||||
}
|
||||
|
||||
function i2pHost(url) {
|
||||
let hostname = i2pHostName(url);
|
||||
return hostname.endsWith(".i2p");
|
||||
return hostname.endsWith('.i2p');
|
||||
}
|
||||
|
||||
function routerHost(url) {
|
||||
let hostname = "";
|
||||
let path = "";
|
||||
let hostname = '';
|
||||
let path = '';
|
||||
function pathcheck(str) {
|
||||
if (str != undefined) {
|
||||
let final = str.split("/")[0];
|
||||
if (final === "i2ptunnelmgr" || final === "i2ptunnel") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2ptunnelmgr";
|
||||
let final = str.split('/')[0];
|
||||
if (final === 'i2ptunnelmgr' || final === 'i2ptunnel') {
|
||||
console.log('(urlcheck) Tunnel application path', final);
|
||||
return 'i2ptunnelmgr';
|
||||
} else if (
|
||||
final === "i2psnark" ||
|
||||
final === "torrents" ||
|
||||
final.startsWith("transmission")
|
||||
final === 'i2psnark' ||
|
||||
final === 'torrents' ||
|
||||
final.startsWith('transmission')
|
||||
) {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "i2psnark";
|
||||
} else if (final === "webmail" || final === "susimail") {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "webmail";
|
||||
console.log('(urlcheck) Torrent application path', final);
|
||||
return 'i2psnark';
|
||||
} else if (final === 'webmail' || final === 'susimail') {
|
||||
console.log('(urlcheck) Mail application path', final);
|
||||
return 'webmail';
|
||||
} else if (final.startsWith('MuWire')) {
|
||||
if (!url.includes('.png')) {
|
||||
console.log('(urlcheck) MuWire application path', final);
|
||||
return 'muwire';
|
||||
}
|
||||
} else if (
|
||||
final === "home" ||
|
||||
final === "console" ||
|
||||
final === "dns" ||
|
||||
final.startsWith("config")
|
||||
final === 'home' ||
|
||||
final === 'console' ||
|
||||
final === 'dns' ||
|
||||
final === 'sitemap' ||
|
||||
final.startsWith('config')
|
||||
) {
|
||||
console.log("(urlcheck) application path", final);
|
||||
return "routerconsole";
|
||||
console.log('(urlcheck) Console application path', final);
|
||||
return 'routerconsole';
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
if (url.indexOf("://") > -1) {
|
||||
hostname = url.split("/")[2];
|
||||
let prefix = url.substr(0, url.indexOf("://") + 3);
|
||||
path = url.replace(prefix + hostname + "/", "");
|
||||
if (url.indexOf('://') > -1) {
|
||||
hostname = url.split('/')[2];
|
||||
let prefix = url.substr(0, url.indexOf('://') + 3);
|
||||
path = url.replace(prefix + hostname + '/', '');
|
||||
} else if (identifyProtocolHandler(url)) {
|
||||
let newurl = identifyProtocolHandler(url);
|
||||
return routerHost(newurl);
|
||||
} else {
|
||||
hostname = url.split("/")[0];
|
||||
path = url.replace(hostname + "/", "");
|
||||
hostname = url.split('/')[0];
|
||||
path = url.replace(hostname + '/', '');
|
||||
}
|
||||
if (hostname === control_host + ":" + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
if (hostname === control_host + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === "localhost" + ":" + control_port) {
|
||||
//console.log("(hostcheck) router console found on configured ports");
|
||||
if (hostname === 'localhost' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === "127.0.0.1" + ":" + control_port) {
|
||||
if (hostname === '127.0.0.1' + ':' + control_port) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === 'localhost' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
if (hostname === '127.0.0.1' + ':' + 7070) {
|
||||
return pathcheck(path);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
@@ -1,9 +1,9 @@
|
||||
var hello = "hello i2pcontrol";
|
||||
var hello = 'hello i2pcontrol';
|
||||
|
||||
function makeid(length) {
|
||||
var result = "";
|
||||
var result = '';
|
||||
var characters =
|
||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
||||
var charactersLength = characters.length;
|
||||
for (var i = 0; i < length; i++) {
|
||||
result += characters.charAt(Math.floor(Math.random() * charactersLength));
|
||||
@@ -22,15 +22,15 @@ function send(
|
||||
let requestBody = JSON.stringify(data);
|
||||
//console.log("(i2pcontrol) sending request", requestBody);
|
||||
let opts = {
|
||||
method: "POST", // *GET, POST, PUT, DELETE, etc.
|
||||
mode: "cors", // no-cors, *cors, same-origin
|
||||
cache: "no-cache", // *default, no-cache, reload, force-cache, only-if-cached
|
||||
credentials: "same-origin", // include, *same-origin, omit
|
||||
method: 'POST', // *GET, POST, PUT, DELETE, etc.
|
||||
mode: 'cors', // no-cors, *cors, same-origin
|
||||
cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
|
||||
credentials: 'same-origin', // include, *same-origin, omit
|
||||
headers: {
|
||||
"Content-Type": "application/json"
|
||||
'Content-Type': 'application/json'
|
||||
},
|
||||
redirect: "follow", // manual, *follow, error
|
||||
referrerPolicy: "no-referrer", // no-referrer, *client
|
||||
redirect: 'follow', // manual, *follow, error
|
||||
referrerPolicy: 'no-referrer', // no-referrer, *client
|
||||
body: requestBody // body data type must match "Content-Type" header
|
||||
};
|
||||
const response = await fetch(url, opts);
|
||||
@@ -39,7 +39,7 @@ function send(
|
||||
|
||||
//console.log("http://" + control_host + ":" + control_port + "/" + control_path)
|
||||
return postData(
|
||||
"http://" + control_host + ":" + control_port + "/" + control_path + "/",
|
||||
'http://' + control_host + ':' + control_port + '/' + control_path + '/',
|
||||
message
|
||||
);
|
||||
}
|
||||
@@ -51,12 +51,12 @@ async function authenticate(
|
||||
control_path = "jsonrpc"
|
||||
) {
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "Authenticate";
|
||||
json["params"] = new Object();
|
||||
json["params"]["API"] = 1;
|
||||
json["params"]["Password"] = password;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Authenticate';
|
||||
json['params'] = new Object();
|
||||
json['params']['API'] = 1;
|
||||
json['params']['Password'] = password;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
|
||||
@@ -81,14 +81,14 @@ async function Echo(
|
||||
password = "itoopie"
|
||||
) {
|
||||
function echo(token) {
|
||||
console.log("(i2pcontrol) testing I2PControl connection");
|
||||
console.log('(i2pcontrol) testing I2PControl connection');
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "Echo";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"]["Echo"] = message;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'Echo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Echo'] = message;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -121,13 +121,13 @@ async function GetRate(
|
||||
) {
|
||||
function getrate(token) {
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "I2PControl";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"]["Stat"] = Query;
|
||||
json["params"]["Period"] = 2000;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params']['Stat'] = Query;
|
||||
json['params']['Period'] = 2000;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -160,12 +160,12 @@ async function I2PControl(
|
||||
) {
|
||||
function i2pcontrol(token) {
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "I2PControl";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'I2PControl';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -204,12 +204,12 @@ async function RouterInfo(
|
||||
) {
|
||||
function routerinfo(token) {
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "RouterInfo";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterInfo';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -255,12 +255,12 @@ async function RouterManager(
|
||||
) {
|
||||
function routermanager(token) {
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "RouterManager";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'RouterManager';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -300,12 +300,12 @@ async function NetworkSetting(
|
||||
) {
|
||||
function networksetting(token) {
|
||||
var json = new Object();
|
||||
json["id"] = makeid(6);
|
||||
json["jsonrpc"] = "2.0";
|
||||
json["method"] = "NetworkSetting";
|
||||
json["params"] = new Object();
|
||||
json["params"]["Token"] = token;
|
||||
json["params"][Query] = null;
|
||||
json['id'] = makeid(6);
|
||||
json['jsonrpc'] = '2.0';
|
||||
json['method'] = 'NetworkSetting';
|
||||
json['params'] = new Object();
|
||||
json['params']['Token'] = token;
|
||||
json['params'][Query] = null;
|
||||
return send(json, control_host, control_port, control_path);
|
||||
}
|
||||
let token = GetToken(password, control_host, control_port, control_path);
|
||||
@@ -336,49 +336,49 @@ function UpdateNetworkSettingElementByID(
|
||||
}
|
||||
|
||||
function UpdateContents() {
|
||||
UpdateRouterInfoElementByID("i2p.router.status", "router-status");
|
||||
UpdateRouterInfoElementByID("i2p.router.uptime", "router-uptime");
|
||||
UpdateRouterInfoElementByID("i2p.router.version", "router-version");
|
||||
UpdateRouterInfoElementByID('i2p.router.status', 'router-status');
|
||||
UpdateRouterInfoElementByID('i2p.router.uptime', 'router-uptime');
|
||||
UpdateRouterInfoElementByID('i2p.router.version', 'router-version');
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.inbound.1s",
|
||||
"router-net-bw-inbound-1s"
|
||||
'i2p.router.net.bw.inbound.1s',
|
||||
'router-net-bw-inbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.inbound.15s",
|
||||
"router-net-bw-inbound-15s"
|
||||
'i2p.router.net.bw.inbound.15s',
|
||||
'router-net-bw-inbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.outbound.1s",
|
||||
"router-net-bw-outbound-1s"
|
||||
'i2p.router.net.bw.outbound.1s',
|
||||
'router-net-bw-outbound-1s'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.bw.outbound.15s",
|
||||
"router-net-bw-outbound-15s"
|
||||
'i2p.router.net.bw.outbound.15s',
|
||||
'router-net-bw-outbound-15s'
|
||||
);
|
||||
UpdateRouterInfoElementByID("i2p.router.net.status", "router-net-status");
|
||||
UpdateRouterInfoElementByID('i2p.router.net.status', 'router-net-status');
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.net.tunnels.participating",
|
||||
"router-net-tunnels-participating"
|
||||
'i2p.router.net.tunnels.participating',
|
||||
'router-net-tunnels-participating'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.activepeers",
|
||||
"router-netdb-activepeers"
|
||||
'i2p.router.netdb.activepeers',
|
||||
'router-netdb-activepeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.fastpeers",
|
||||
"router-netdb-fastpeers"
|
||||
'i2p.router.netdb.fastpeers',
|
||||
'router-netdb-fastpeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.highcapacitypeers",
|
||||
"router-netdb-highcapacitypeers"
|
||||
'i2p.router.netdb.highcapacitypeers',
|
||||
'router-netdb-highcapacitypeers'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.isreseeding",
|
||||
"router-netdb-isreseeding"
|
||||
'i2p.router.netdb.isreseeding',
|
||||
'router-netdb-isreseeding'
|
||||
);
|
||||
UpdateRouterInfoElementByID(
|
||||
"i2p.router.netdb.knownpeers",
|
||||
"router-netdb-knownpeers"
|
||||
'i2p.router.netdb.knownpeers',
|
||||
'router-netdb-knownpeers'
|
||||
);
|
||||
}
|
||||
|
||||
@@ -386,6 +386,6 @@ var done = Echo(hello);
|
||||
done.then(Done);
|
||||
|
||||
function Done(output) {
|
||||
console.log("(i2pcontrol) I2PControl connection tested,", output);
|
||||
console.log('(i2pcontrol) I2PControl connection tested,', output);
|
||||
return output;
|
||||
}
|
||||
|
@@ -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>h¶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.
@@ -1 +0,0 @@
|
||||
./i2ppb-0.57@eyedeekay.github.io.xpi.torrent
|
BIN
icons/logo.png
BIN
icons/logo.png
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 5.8 KiB |
18
index.html
18
index.html
@@ -8,7 +8,7 @@
|
||||
<body>
|
||||
<h1>I2P in Private Browsing Mode(Firefox-Only)</h1>
|
||||
|
||||
<p>This is an <strong>Experimental</strong> webextension which introduces a set of new "Private Browsing" modes to Firefox-based browsers(Supporting webextensions) that makes it easier to configure a browser to use I2P securely and adds features for making I2P applications easier to use. It does this by isolating I2P-specific settings to Contextual Identities within Firefox, then loading them automatically when the user requests them. It also adds convenience and management features specific to I2P like protocol handlers and native messaging systems.</p>
|
||||
<p>This is an webextension which introduces a set of new "Private Browsing" modes to Firefox-based browsers(Supporting webextensions) that makes it easier to configure a browser to use I2P securely and adds features for making I2P applications easier to use. It does this by isolating I2P-specific settings to Contextual Identities within Firefox, then loading them automatically when the user requests them. It also adds convenience and management features, like an embedded I2P console and Bittorrent integration with clients using the transmission-rpc API.</p>
|
||||
|
||||
<h2>Installation(Cross-Platform):</h2>
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="magnet:?xt=urn:btih:a0cf0107e4508cd578976e4d0c16d060b5148fde">Magnet Link</a>
|
||||
<a href="">Magnet Link</a>
|
||||
</li>
|
||||
|
||||
<li>
|
||||
@@ -57,7 +57,10 @@
|
||||
|
||||
<li>You can either force the browser to delete all history for I2P sites immediately, or you can close all your I2P Browser tabs at once and delete the history for I2P browsing when you're done.</li>
|
||||
|
||||
<li>That's all there is to it! Your browser is configured to safely use and administer I2P</li>
|
||||
<li>That's all there is to it! Your browser is configured to safely use and administer I2P.</li>
|
||||
|
||||
<li>Optionally, you can add I2PSnark-RPC and use Bittorrent-over-I2P via the transmission-rpc interface. To do this, have a look at the torrent guide: <a href="torrent/index.html">Torrent guide</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h3>Features</h3>
|
||||
@@ -94,11 +97,16 @@
|
||||
<li><img alt="Visiting routerconsole" src="routerconsole.png" title="">
|
||||
</li>
|
||||
|
||||
<li>[wip] <strong>Handle Torrents</strong> by talking to i2psnark-rpc plugin and then adding them directly into the Firefox downloads drop-downs, menus, etc. If I can. Right now instead of talking to snark-rpc, it uses a web-based protocol handler that simply auto-fills the torrent into i2psnark.</li>
|
||||
<li>[Done] <strong>Handle Torrents</strong> by talking to i2psnark-rpc plugin and then adding them directly into the Firefox downloads drop-downs, menus, etc. If I can.</li>
|
||||
|
||||
<li><img alt="Visiting i2psnark" src="i2psnark.png" title="">
|
||||
</li>
|
||||
|
||||
<li><img alt="Monitoring torrents" src="transmissionrpc.png" title="">
|
||||
</li>
|
||||
|
||||
<li>[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.</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 browsing are "I2P Browsing" and "Web Browsing" where I2P Browsing is capable of using an outproxy but in the case of traffic destined for the clearnet does not do header rewriting, and Web Browsing falls back to the Proxy configured in Firefox. The I2P Browsing will be expanded to
|
||||
<ul>
|
||||
<li>I2P Amnesiac Browsing: Use for General Browsing, stores no history and uses an HTTP Proxy with a very short tunnel-close timeout and no key-reuse.</li>
|
||||
@@ -126,6 +134,8 @@
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Browser.Design.Documentation.pdf">Browser Outline</a></strong>: This document is an outline of each of the browser extension's feature panels in presentation form.</li>
|
||||
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/download/docs/Landing.Page.Documentation.pdf">Smart Lander Design</a></strong>: This is the original outline of the smart landing page which became the I2P home page within the browser and the drop-down control panel.</li>
|
||||
|
||||
<li><strong><a href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/wiki/Other-Extensions">Other extensions</a></strong>: and how they work with this one.</li>
|
||||
</ul>
|
||||
|
||||
<h2>Super Extra Important Background Info:</h2>
|
||||
|
6
info.js
6
info.js
@@ -2,9 +2,9 @@ function checkPeerConnection() {
|
||||
let getting = browser.privacy.network.peerConnectionEnabled.get({});
|
||||
getting.then(got => {
|
||||
let webrtc = got.value;
|
||||
console.log("checking webrtc", webrtc);
|
||||
if (document.getElementById("enable-web-rtc") !== null)
|
||||
document.getElementById("enable-web-rtc").checked = webrtc;
|
||||
console.log('checking webrtc', webrtc);
|
||||
if (document.getElementById('enable-web-rtc') !== null)
|
||||
document.getElementById('enable-web-rtc').checked = webrtc;
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -26,8 +26,8 @@
|
||||
],
|
||||
"manifest_version": 2,
|
||||
"name": "__MSG_extensionName__",
|
||||
"version": "0.57",
|
||||
"version_name": "0.57",
|
||||
"version": "0.73",
|
||||
"version_name": "0.73",
|
||||
"description": "__MSG_extensionDescription__",
|
||||
"homepage_url": "https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox",
|
||||
"icons": {
|
||||
@@ -46,6 +46,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"
|
||||
},
|
||||
|
@@ -1,151 +1,151 @@
|
||||
function SetHostText() {
|
||||
var hostid = document.getElementById("hostText");
|
||||
hostid.textContent = chrome.i18n.getMessage("hostText");
|
||||
var hostid = document.getElementById('hostText');
|
||||
hostid.textContent = chrome.i18n.getMessage('hostText');
|
||||
}
|
||||
|
||||
function SetPortText() {
|
||||
var portid = document.getElementById("portText");
|
||||
portid.textContent = chrome.i18n.getMessage("portText");
|
||||
var portid = document.getElementById('portText');
|
||||
portid.textContent = chrome.i18n.getMessage('portText');
|
||||
}
|
||||
|
||||
function SetPortHelpText() {
|
||||
var portid = document.getElementById("proxyHelpText");
|
||||
portid.textContent = chrome.i18n.getMessage("proxyHelpText");
|
||||
var portid = document.getElementById('proxyHelpText');
|
||||
portid.textContent = chrome.i18n.getMessage('proxyHelpText');
|
||||
}
|
||||
|
||||
function SetControlHostText() {
|
||||
var controlhostid = document.getElementById("controlHostText");
|
||||
controlhostid.textContent = chrome.i18n.getMessage("controlHostText");
|
||||
var controlhostid = document.getElementById('controlHostText');
|
||||
controlhostid.textContent = chrome.i18n.getMessage('controlHostText');
|
||||
}
|
||||
|
||||
function SetControlPortText() {
|
||||
var controlportid = document.getElementById("controlPortText");
|
||||
controlportid.textContent = chrome.i18n.getMessage("controlPortText");
|
||||
var controlportid = document.getElementById('controlPortText');
|
||||
controlportid.textContent = chrome.i18n.getMessage('controlPortText');
|
||||
}
|
||||
|
||||
function SetControlHelpText() {
|
||||
var portid = document.getElementById("controlHelpText");
|
||||
portid.textContent = chrome.i18n.getMessage("controlHelpText");
|
||||
var portid = document.getElementById('controlHelpText');
|
||||
portid.textContent = chrome.i18n.getMessage('controlHelpText');
|
||||
}
|
||||
|
||||
function getScheme() {
|
||||
const proxy_scheme = document.querySelector("#proxy_scheme");
|
||||
console.log("(options)Got i2p proxy scheme:", proxy_scheme.value);
|
||||
if (proxy_scheme.value == "HTTP") {
|
||||
return "http";
|
||||
const proxy_scheme = document.querySelector('#proxy_scheme');
|
||||
console.log('(options)Got i2p proxy scheme:', proxy_scheme.value);
|
||||
if (proxy_scheme.value == 'HTTP') {
|
||||
return 'http';
|
||||
}
|
||||
if (proxy_scheme.value == "SOCKS") {
|
||||
return "socks";
|
||||
if (proxy_scheme.value == 'SOCKS') {
|
||||
return 'socks';
|
||||
}
|
||||
if (proxy_scheme.value == "http") return "http";
|
||||
if (proxy_scheme.value == "socks") return "socks";
|
||||
else return "http";
|
||||
if (proxy_scheme.value == 'http') return 'http';
|
||||
if (proxy_scheme.value == 'socks') return 'socks';
|
||||
else return 'http';
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
proxy_host = document.getElementById("host").value;
|
||||
console.log("(options)Got i2p proxy host:", proxy_host);
|
||||
proxy_host = document.getElementById('host').value;
|
||||
console.log('(options)Got i2p proxy host:', proxy_host);
|
||||
if (proxy_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
|
||||
function getPort() {
|
||||
proxy_port = document.getElementById("port").value;
|
||||
console.log("(options)Got i2p proxy port:", proxy_port);
|
||||
proxy_port = document.getElementById('port').value;
|
||||
console.log('(options)Got i2p proxy port:', proxy_port);
|
||||
if (proxy_port == undefined) {
|
||||
return "4444";
|
||||
return '4444';
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
function getControlHost() {
|
||||
control_host = document.getElementById("controlhost").value;
|
||||
console.log("(options)Got i2p control host:", control_host);
|
||||
control_host = document.getElementById('controlhost').value;
|
||||
console.log('(options)Got i2p control host:', control_host);
|
||||
if (control_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return control_host;
|
||||
}
|
||||
|
||||
function getControlPort() {
|
||||
control_port = document.getElementById("controlport").value;
|
||||
console.log("(options)Got i2p control port:", control_port);
|
||||
control_port = document.getElementById('controlport').value;
|
||||
console.log('(options)Got i2p control port:', control_port);
|
||||
if (control_port == undefined) {
|
||||
return "4444";
|
||||
return '4444';
|
||||
}
|
||||
return control_port;
|
||||
}
|
||||
|
||||
function getRPCHost() {
|
||||
rpc_host = document.getElementById("rpchost").value;
|
||||
console.log("(options)Got i2pcontrol rpc host:", rpc_host);
|
||||
rpc_host = document.getElementById('rpchost').value;
|
||||
console.log('(options)Got i2pcontrol rpc host:', rpc_host);
|
||||
if (rpc_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return rpc_host;
|
||||
}
|
||||
|
||||
function getRPCPort() {
|
||||
rpc_port = document.getElementById("rpcport").value;
|
||||
console.log("(options)Got i2pcontrol rpc port:", rpc_port);
|
||||
rpc_port = document.getElementById('rpcport').value;
|
||||
console.log('(options)Got i2pcontrol rpc port:', rpc_port);
|
||||
if (rpc_port == undefined) {
|
||||
return "7657";
|
||||
return '7657';
|
||||
}
|
||||
return rpc_port;
|
||||
}
|
||||
|
||||
function getRPCPath() {
|
||||
rpc_path = document.getElementById("rpcpath").value;
|
||||
console.log("(options)Got i2pcontrol rpc path:", rpc_path);
|
||||
rpc_path = document.getElementById('rpcpath').value;
|
||||
console.log('(options)Got i2pcontrol rpc path:', rpc_path);
|
||||
if (rpc_path == undefined) {
|
||||
return "jsonrpc";
|
||||
return 'jsonrpc';
|
||||
}
|
||||
return rpc_path;
|
||||
}
|
||||
|
||||
function getRPCPass() {
|
||||
rpc_pass = document.getElementById("rpcpass").value;
|
||||
console.log("(options)Got i2pcontrol rpc password:");
|
||||
rpc_pass = document.getElementById('rpcpass').value;
|
||||
console.log('(options)Got i2pcontrol rpc password:');
|
||||
if (rpc_pass == undefined) {
|
||||
return "itoopie";
|
||||
return 'itoopie';
|
||||
}
|
||||
return rpc_pass;
|
||||
}
|
||||
|
||||
function getBTRPCHost() {
|
||||
bt_rpc_host = document.getElementById("btrpchost").value;
|
||||
console.log("(options)Got torrent rpc host:", bt_rpc_host);
|
||||
bt_rpc_host = document.getElementById('btrpchost').value;
|
||||
console.log('(options)Got torrent rpc host:', bt_rpc_host);
|
||||
if (bt_rpc_host == undefined) {
|
||||
return "127.0.0.1";
|
||||
return '127.0.0.1';
|
||||
}
|
||||
return bt_rpc_host;
|
||||
}
|
||||
|
||||
function getBTRPCPort() {
|
||||
bt_rpc_port = document.getElementById("btrpcport").value;
|
||||
console.log("(options)Got torrent rpc port:", bt_rpc_port);
|
||||
bt_rpc_port = document.getElementById('btrpcport').value;
|
||||
console.log('(options)Got torrent rpc port:', bt_rpc_port);
|
||||
if (bt_rpc_port == undefined) {
|
||||
return "7657";
|
||||
return '7657';
|
||||
}
|
||||
return bt_rpc_port;
|
||||
}
|
||||
|
||||
function getBTRPCPath() {
|
||||
bt_rpc_path = document.getElementById("btrpcpath").value;
|
||||
console.log("(options)Got torrent rpc path:", bt_rpc_path);
|
||||
bt_rpc_path = document.getElementById('btrpcpath').value;
|
||||
console.log('(options)Got torrent rpc path:', bt_rpc_path);
|
||||
if (bt_rpc_path == undefined) {
|
||||
return "transmission/rpc";
|
||||
return 'transmission/rpc';
|
||||
}
|
||||
return bt_rpc_path;
|
||||
}
|
||||
|
||||
function getBTRPCPass() {
|
||||
bt_rpc_pass = document.getElementById("btrpcpass").value;
|
||||
console.log("(options)Got torrent rpc password:");
|
||||
bt_rpc_pass = document.getElementById('btrpcpass').value;
|
||||
console.log('(options)Got torrent rpc password:');
|
||||
if (bt_rpc_pass == undefined) {
|
||||
return "itoopie";
|
||||
return 'itoopie';
|
||||
}
|
||||
return bt_rpc_pass;
|
||||
}
|
||||
@@ -153,85 +153,85 @@ function getBTRPCPass() {
|
||||
function checkStoredSettings(storedSettings) {
|
||||
function gotProxyInfo(info) {
|
||||
let defaultSettings = {};
|
||||
let host = info.value.http.split(":")[0];
|
||||
let port = info.value.http.split(":")[1];
|
||||
let host = info.value.http.split(':')[0];
|
||||
let port = info.value.http.split(':')[1];
|
||||
if (port != 7644) {
|
||||
port = undefined;
|
||||
}
|
||||
console.log("(options)proxy", "'" + host + "'", ":", port);
|
||||
if (!storedSettings["proxy_scheme"])
|
||||
defaultSettings["proxy_scheme"] = "http";
|
||||
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
|
||||
if (!storedSettings["proxy_host"]) {
|
||||
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
|
||||
else defaultSettings["proxy_host"] = host;
|
||||
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
|
||||
console.log('(options)proxy', "'" + host + "'", ':', port);
|
||||
if (!storedSettings['proxy_scheme'])
|
||||
defaultSettings['proxy_scheme'] = 'http';
|
||||
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
|
||||
if (!storedSettings['proxy_host']) {
|
||||
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
|
||||
else defaultSettings['proxy_host'] = host;
|
||||
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
|
||||
|
||||
if (!storedSettings["proxy_port"]) {
|
||||
if (port == undefined) defaultSettings["proxy_port"] = 4444;
|
||||
else if (port == 7644) defaultSettings["proxy_port"] = port;
|
||||
else defaultSettings["proxy_port"] = 4444;
|
||||
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
|
||||
if (!storedSettings['proxy_port']) {
|
||||
if (port == undefined) defaultSettings['proxy_port'] = 4444;
|
||||
else if (port == 7644) defaultSettings['proxy_port'] = port;
|
||||
else defaultSettings['proxy_port'] = 4444;
|
||||
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
|
||||
|
||||
if (!storedSettings["control_host"]) {
|
||||
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
|
||||
else defaultSettings["control_host"] = host;
|
||||
} else defaultSettings["control_host"] = storedSettings.control_host;
|
||||
if (!storedSettings['control_host']) {
|
||||
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
|
||||
else defaultSettings['control_host'] = host;
|
||||
} else defaultSettings['control_host'] = storedSettings.control_host;
|
||||
|
||||
if (!storedSettings["control_port"]) {
|
||||
defaultSettings["control_port"] = 7657;
|
||||
} else defaultSettings["control_port"] = storedSettings.control_port;
|
||||
if (!storedSettings['control_port']) {
|
||||
defaultSettings['control_port'] = 7657;
|
||||
} else defaultSettings['control_port'] = storedSettings.control_port;
|
||||
|
||||
if (!storedSettings["rpc_host"]) {
|
||||
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["rpc_host"] = host;
|
||||
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
|
||||
if (!storedSettings['rpc_host']) {
|
||||
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['rpc_host'] = host;
|
||||
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
|
||||
|
||||
if (!storedSettings["rpc_port"]) {
|
||||
defaultSettings["rpc_port"] = 7657;
|
||||
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
|
||||
if (!storedSettings['rpc_port']) {
|
||||
defaultSettings['rpc_port'] = 7657;
|
||||
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
|
||||
|
||||
if (!storedSettings["rpc_path"]) {
|
||||
defaultSettings["rpc_path"] = "jsonrpc";
|
||||
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
|
||||
if (!storedSettings['rpc_path']) {
|
||||
defaultSettings['rpc_path'] = 'jsonrpc';
|
||||
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
|
||||
|
||||
if (!storedSettings["rpc_pass"]) {
|
||||
defaultSettings["rpc_pass"] = "itoopie";
|
||||
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
|
||||
if (!storedSettings['rpc_pass']) {
|
||||
defaultSettings['rpc_pass'] = 'itoopie';
|
||||
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
|
||||
|
||||
if (!storedSettings["bt_rpc_host"]) {
|
||||
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["bt_rpc_host"] = host;
|
||||
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
|
||||
if (!storedSettings['bt_rpc_host']) {
|
||||
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['bt_rpc_host'] = host;
|
||||
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
|
||||
|
||||
if (!storedSettings["bt_rpc_port"]) {
|
||||
defaultSettings["bt_rpc_port"] = 7657;
|
||||
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
|
||||
if (!storedSettings['bt_rpc_port']) {
|
||||
defaultSettings['bt_rpc_port'] = 7657;
|
||||
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
|
||||
|
||||
if (!storedSettings["bt_rpc_path"]) {
|
||||
defaultSettings["bt_rpc_path"] = "transmission/";
|
||||
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
|
||||
if (!storedSettings['bt_rpc_path']) {
|
||||
defaultSettings['bt_rpc_path'] = 'transmission/';
|
||||
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
|
||||
|
||||
if (!storedSettings["bt_rpc_pass"]) {
|
||||
defaultSettings["bt_rpc_pass"] = "transmission";
|
||||
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
|
||||
if (!storedSettings['bt_rpc_pass']) {
|
||||
defaultSettings['bt_rpc_pass'] = 'transmission';
|
||||
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
|
||||
|
||||
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
|
||||
defaultSettings["base_url"] =
|
||||
"http://" +
|
||||
defaultSettings["bt_rpc_host"] +
|
||||
":" +
|
||||
defaultSettings["bt_rpc_port"] +
|
||||
"/" +
|
||||
defaultSettings["bt_rpc_path"];
|
||||
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
|
||||
defaultSettings['base_url'] =
|
||||
'http://' +
|
||||
defaultSettings['bt_rpc_host'] +
|
||||
':' +
|
||||
defaultSettings['bt_rpc_port'] +
|
||||
'/' +
|
||||
defaultSettings['bt_rpc_path'];
|
||||
console.log(
|
||||
"(options)",
|
||||
defaultSettings["proxy_scheme"],
|
||||
defaultSettings["proxy_host"],
|
||||
defaultSettings["proxy_port"],
|
||||
defaultSettings["control_host"],
|
||||
defaultSettings["control_port"],
|
||||
defaultSettings["base_url"]
|
||||
'(options)',
|
||||
defaultSettings['proxy_scheme'],
|
||||
defaultSettings['proxy_host'],
|
||||
defaultSettings['proxy_port'],
|
||||
defaultSettings['control_host'],
|
||||
defaultSettings['control_port'],
|
||||
defaultSettings['base_url']
|
||||
);
|
||||
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
@@ -243,72 +243,72 @@ function checkStoredSettings(storedSettings) {
|
||||
|
||||
function checkAndroidStoredSettings(storedSettings) {
|
||||
let defaultSettings = {};
|
||||
let host = "";
|
||||
let port = "";
|
||||
if (!storedSettings["proxy_scheme"]) defaultSettings["proxy_scheme"] = "http";
|
||||
else defaultSettings["proxy_scheme"] = storedSettings["proxy_scheme"];
|
||||
if (!storedSettings["proxy_host"]) {
|
||||
if (host == "") defaultSettings["proxy_host"] = "127.0.0.1";
|
||||
else defaultSettings["proxy_host"] = host;
|
||||
} else defaultSettings["proxy_host"] = storedSettings["proxy_host"];
|
||||
let host = '';
|
||||
let port = '';
|
||||
if (!storedSettings['proxy_scheme']) defaultSettings['proxy_scheme'] = 'http';
|
||||
else defaultSettings['proxy_scheme'] = storedSettings['proxy_scheme'];
|
||||
if (!storedSettings['proxy_host']) {
|
||||
if (host == '') defaultSettings['proxy_host'] = '127.0.0.1';
|
||||
else defaultSettings['proxy_host'] = host;
|
||||
} else defaultSettings['proxy_host'] = storedSettings['proxy_host'];
|
||||
|
||||
if (!storedSettings["proxy_port"]) {
|
||||
if (port == undefined) defaultSettings["proxy_port"] = 4444;
|
||||
else if (port == 7644) defaultSettings["proxy_port"] = port;
|
||||
else defaultSettings["proxy_port"] = 4444;
|
||||
} else defaultSettings["proxy_port"] = storedSettings.proxy_port;
|
||||
if (!storedSettings['proxy_port']) {
|
||||
if (port == undefined) defaultSettings['proxy_port'] = 4444;
|
||||
else if (port == 7644) defaultSettings['proxy_port'] = port;
|
||||
else defaultSettings['proxy_port'] = 4444;
|
||||
} else defaultSettings['proxy_port'] = storedSettings.proxy_port;
|
||||
|
||||
if (!storedSettings["control_host"]) {
|
||||
if (host == "") defaultSettings["control_host"] = "127.0.0.1";
|
||||
else defaultSettings["control_host"] = host;
|
||||
} else defaultSettings["control_host"] = storedSettings.control_host;
|
||||
if (!storedSettings['control_host']) {
|
||||
if (host == '') defaultSettings['control_host'] = '127.0.0.1';
|
||||
else defaultSettings['control_host'] = host;
|
||||
} else defaultSettings['control_host'] = storedSettings.control_host;
|
||||
|
||||
if (!storedSettings["control_port"]) {
|
||||
defaultSettings["control_port"] = 7657;
|
||||
} else defaultSettings["control_port"] = storedSettings.control_port;
|
||||
if (!storedSettings['control_port']) {
|
||||
defaultSettings['control_port'] = 7657;
|
||||
} else defaultSettings['control_port'] = storedSettings.control_port;
|
||||
|
||||
if (!storedSettings["rpc_host"]) {
|
||||
if (host == "") defaultSettings["rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["rpc_host"] = host;
|
||||
} else defaultSettings["rpc_host"] = storedSettings.rpc_host;
|
||||
if (!storedSettings['rpc_host']) {
|
||||
if (host == '') defaultSettings['rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['rpc_host'] = host;
|
||||
} else defaultSettings['rpc_host'] = storedSettings.rpc_host;
|
||||
|
||||
if (!storedSettings["rpc_port"]) {
|
||||
defaultSettings["rpc_port"] = 7657;
|
||||
} else defaultSettings["rpc_port"] = storedSettings.rpc_port;
|
||||
if (!storedSettings['rpc_port']) {
|
||||
defaultSettings['rpc_port'] = 7657;
|
||||
} else defaultSettings['rpc_port'] = storedSettings.rpc_port;
|
||||
|
||||
if (!storedSettings["rpc_path"]) {
|
||||
defaultSettings["rpc_path"] = "jsonrpc";
|
||||
} else defaultSettings["rpc_path"] = storedSettings.rpc_path;
|
||||
if (!storedSettings['rpc_path']) {
|
||||
defaultSettings['rpc_path'] = 'jsonrpc';
|
||||
} else defaultSettings['rpc_path'] = storedSettings.rpc_path;
|
||||
|
||||
if (!storedSettings["rpc_pass"]) {
|
||||
defaultSettings["rpc_pass"] = "itoopie";
|
||||
} else defaultSettings["rpc_pass"] = storedSettings.rpc_pass;
|
||||
if (!storedSettings['rpc_pass']) {
|
||||
defaultSettings['rpc_pass'] = 'itoopie';
|
||||
} else defaultSettings['rpc_pass'] = storedSettings.rpc_pass;
|
||||
|
||||
if (!storedSettings["bt_rpc_host"]) {
|
||||
if (host == "") defaultSettings["bt_rpc_host"] = "127.0.0.1";
|
||||
else defaultSettings["bt_rpc_host"] = host;
|
||||
} else defaultSettings["bt_rpc_host"] = storedSettings.bt_rpc_host;
|
||||
if (!storedSettings['bt_rpc_host']) {
|
||||
if (host == '') defaultSettings['bt_rpc_host'] = '127.0.0.1';
|
||||
else defaultSettings['bt_rpc_host'] = host;
|
||||
} else defaultSettings['bt_rpc_host'] = storedSettings.bt_rpc_host;
|
||||
|
||||
if (!storedSettings["bt_rpc_port"]) {
|
||||
defaultSettings["bt_rpc_port"] = 7657;
|
||||
} else defaultSettings["bt_rpc_port"] = storedSettings.bt_rpc_port;
|
||||
if (!storedSettings['bt_rpc_port']) {
|
||||
defaultSettings['bt_rpc_port'] = 7657;
|
||||
} else defaultSettings['bt_rpc_port'] = storedSettings.bt_rpc_port;
|
||||
|
||||
if (!storedSettings["bt_rpc_path"]) {
|
||||
defaultSettings["bt_rpc_path"] = "transmission/rpc";
|
||||
} else defaultSettings["bt_rpc_path"] = storedSettings.bt_rpc_path;
|
||||
if (!storedSettings['bt_rpc_path']) {
|
||||
defaultSettings['bt_rpc_path'] = 'transmission/rpc';
|
||||
} else defaultSettings['bt_rpc_path'] = storedSettings.bt_rpc_path;
|
||||
|
||||
if (!storedSettings["bt_rpc_pass"]) {
|
||||
defaultSettings["bt_rpc_pass"] = "transmission";
|
||||
} else defaultSettings["bt_rpc_pass"] = storedSettings.bt_rpc_pass;
|
||||
if (!storedSettings['bt_rpc_pass']) {
|
||||
defaultSettings['bt_rpc_pass'] = 'transmission';
|
||||
} else defaultSettings['bt_rpc_pass'] = storedSettings.bt_rpc_pass;
|
||||
|
||||
console.log("(options)(browserinfo) NATIVE PROXYSETTINGS", info.value);
|
||||
console.log('(options)(browserinfo) NATIVE PROXYSETTINGS', info.value);
|
||||
console.log(
|
||||
"(options)",
|
||||
defaultSettings["proxy_scheme"],
|
||||
defaultSettings["proxy_host"],
|
||||
defaultSettings["proxy_port"],
|
||||
defaultSettings["control_host"],
|
||||
defaultSettings["control_port"]
|
||||
'(options)',
|
||||
defaultSettings['proxy_scheme'],
|
||||
defaultSettings['proxy_host'],
|
||||
defaultSettings['proxy_port'],
|
||||
defaultSettings['control_host'],
|
||||
defaultSettings['control_port']
|
||||
);
|
||||
chrome.storage.local.set(defaultSettings);
|
||||
return defaultSettings;
|
||||
@@ -319,93 +319,81 @@ function onError(e) {
|
||||
}
|
||||
|
||||
function storeSettings() {
|
||||
let proxy_scheme = getScheme();
|
||||
let proxy_host = getHost();
|
||||
let proxy_port = getPort();
|
||||
let control_host = getControlHost();
|
||||
let control_port = getControlPort();
|
||||
let rpc_host = getRPCHost();
|
||||
let rpc_port = getRPCPort();
|
||||
let rpc_path = getRPCPath();
|
||||
let rpc_pass = getRPCPass();
|
||||
let bt_rpc_host = getBTRPCHost();
|
||||
let bt_rpc_port = getBTRPCPort();
|
||||
let bt_rpc_path = getBTRPCPath();
|
||||
let bt_rpc_pass = getBTRPCPass();
|
||||
let base_url =
|
||||
"http://" + bt_rpc_host + ":" + bt_rpc_port + "/" + bt_rpc_path;
|
||||
chrome.storage.local.set({
|
||||
proxy_scheme,
|
||||
proxy_host,
|
||||
proxy_port,
|
||||
control_host,
|
||||
control_port,
|
||||
rpc_host,
|
||||
rpc_port,
|
||||
rpc_path,
|
||||
rpc_pass,
|
||||
bt_rpc_host,
|
||||
bt_rpc_port,
|
||||
bt_rpc_path,
|
||||
bt_rpc_pass
|
||||
});
|
||||
let storableSettings = {};
|
||||
storableSettings['proxy_scheme'] = getScheme();
|
||||
storableSettings['proxy_host'] = getHost();
|
||||
storableSettings['proxy_port'] = getPort();
|
||||
storableSettings['control_host'] = getControlHost();
|
||||
storableSettings['control_port'] = getControlPort();
|
||||
storableSettings['rpc_host'] = getRPCHost();
|
||||
storableSettings['rpc_port'] = getRPCPort();
|
||||
storableSettings['rpc_path'] = getRPCPath();
|
||||
storableSettings['rpc_pass'] = getRPCPass();
|
||||
storableSettings['bt_rpc_host'] = getBTRPCHost();
|
||||
storableSettings['bt_rpc_port'] = getBTRPCPort();
|
||||
storableSettings['bt_rpc_path'] = getBTRPCPath();
|
||||
storableSettings['bt_rpc_pass'] = getBTRPCPass();
|
||||
storableSettings['base_url'] =
|
||||
'http://' + bt_rpc_host + ':' + bt_rpc_port + '/' + bt_rpc_path;
|
||||
console.log('storing', storableSettings);
|
||||
chrome.storage.local.set(storableSettings);
|
||||
}
|
||||
|
||||
function updateUI(restoredSettings) {
|
||||
const selectList = document.querySelector("#proxy_scheme");
|
||||
const selectList = document.querySelector('#proxy_scheme');
|
||||
if (selectList == undefined) selectList.value = restoredSettings.proxy_scheme;
|
||||
//console.log("(options)showing proxy scheme:", selectList.value);
|
||||
|
||||
const hostitem = document.getElementById("host");
|
||||
const hostitem = document.getElementById('host');
|
||||
if (hostitem == undefined) hostitem.value = restoredSettings.proxy_host;
|
||||
//console.log("(options)showing proxy host:", hostitem.value);
|
||||
|
||||
const portitem = document.getElementById("port");
|
||||
const portitem = document.getElementById('port');
|
||||
if (portitem == undefined) portitem.value = restoredSettings.proxy_port;
|
||||
//console.log("(options)showing proxy port:", portitem.value);
|
||||
|
||||
const controlhostitem = document.getElementById("controlhost");
|
||||
const controlhostitem = document.getElementById('controlhost');
|
||||
if (controlhostitem == undefined)
|
||||
controlhostitem.value = restoredSettings.control_host;
|
||||
//console.log("(options)showing control host:", controlhostitem.value);
|
||||
|
||||
const controlportitem = document.getElementById("controlport");
|
||||
const controlportitem = document.getElementById('controlport');
|
||||
if (controlportitem == undefined)
|
||||
controlportitem.value = restoredSettings.control_port;
|
||||
//console.log("(options)showing control port:", controlportitem.value);
|
||||
|
||||
const rpchostitem = document.getElementById("rpchost");
|
||||
const rpchostitem = document.getElementById('rpchost');
|
||||
if (rpchostitem == undefined) rpchostitem.value = restoredSettings.rpc_host;
|
||||
//console.log("(options)showing rpc host:", rpchostitem.value);
|
||||
|
||||
const rpcportitem = document.getElementById("rpcport");
|
||||
const rpcportitem = document.getElementById('rpcport');
|
||||
if (rpcportitem == undefined) rpcportitem.value = restoredSettings.rpc_port;
|
||||
//console.log("(options)showing rpc port:", rpcportitem.value);
|
||||
|
||||
const rpcpathitem = document.getElementById("rpcpath");
|
||||
const rpcpathitem = document.getElementById('rpcpath');
|
||||
if (rpcpathitem == undefined) rpcpathitem.value = restoredSettings.rpc_path;
|
||||
//console.log("(options)showing rpc path:", rpcpathitem.value);
|
||||
|
||||
const rpcpassitem = document.getElementById("rpcpass");
|
||||
const rpcpassitem = document.getElementById('rpcpass');
|
||||
if (rpcpassitem == undefined) rpcpassitem.value = restoredSettings.rpc_pass;
|
||||
//console.log("(options)showing rpc pass:");
|
||||
|
||||
const btrpchostitem = document.getElementById("btrpchost");
|
||||
const btrpchostitem = document.getElementById('btrpchost');
|
||||
if (btrpchostitem == undefined)
|
||||
btrpchostitem.value = restoredSettings.rpc_host;
|
||||
//console.log("(options)showing bt rpc host:", btrpchostitem.value);
|
||||
|
||||
const btrpcportitem = document.getElementById("btrpcport");
|
||||
const btrpcportitem = document.getElementById('btrpcport');
|
||||
if (btrpcportitem == undefined)
|
||||
btrpcportitem.value = restoredSettings.rpc_port;
|
||||
//console.log("(options)showing rbt pc port:", rpcportitem.value);
|
||||
|
||||
const btrpcpathitem = document.getElementById("btrpcpath");
|
||||
const btrpcpathitem = document.getElementById('btrpcpath');
|
||||
if (btrpcpathitem == undefined)
|
||||
btrpcpathitem.value = restoredSettings.rpc_path;
|
||||
//console.log("(options)showing bt rpc path:", btrpcpathitem.value);
|
||||
|
||||
const btrpcpassitem = document.getElementById("btrpcpass");
|
||||
const btrpcpassitem = document.getElementById('btrpcpass');
|
||||
if (btrpcpassitem == undefined)
|
||||
btrpcpassitem.value = restoredSettings.rpc_pass;
|
||||
//console.log("(options)showing bt rpc pass:");
|
||||
@@ -424,7 +412,7 @@ function onError(e) {
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
if (got.os != 'android') {
|
||||
chrome.storage.local.get(function(got) {
|
||||
let settings = checkStoredSettings(got);
|
||||
settings.then(updateUI);
|
||||
@@ -437,5 +425,5 @@ gettingInfo.then(got => {
|
||||
}
|
||||
});
|
||||
|
||||
const saveButton = document.querySelector("#save-button");
|
||||
saveButton.addEventListener("click", storeSettings);
|
||||
const saveButton = document.querySelector('#save-button');
|
||||
saveButton.addEventListener('click', storeSettings);
|
||||
|
@@ -2,19 +2,19 @@ var android = false;
|
||||
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os == "android") {
|
||||
console.log("Running in Android detected");
|
||||
if (got.os == 'android') {
|
||||
console.log('Running in Android detected');
|
||||
android = true;
|
||||
return true;
|
||||
} else {
|
||||
console.log("Running in Desktop detected");
|
||||
console.log('Running in Desktop detected');
|
||||
android = false;
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
function isDroid() {
|
||||
console.log("android?", android);
|
||||
console.log('android?', android);
|
||||
if (android == undefined) {
|
||||
return false;
|
||||
}
|
||||
|
22
privacy.js
22
privacy.js
@@ -1,10 +1,10 @@
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
|
||||
function onSet(result) {
|
||||
if (result) {
|
||||
console.log("->: Value was updated");
|
||||
console.log('->: Value was updated');
|
||||
} else {
|
||||
console.log("-X: Value was not updated");
|
||||
console.log('-X: Value was not updated');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ function disableHyperlinkAuditing() {
|
||||
var setting = browser.privacy.websites.hyperlinkAuditingEnabled.set({
|
||||
value: false
|
||||
});
|
||||
console.log("Disabling hyperlink auditing/val=", {
|
||||
console.log('Disabling hyperlink auditing/val=', {
|
||||
value: false
|
||||
});
|
||||
setting.then(onSet);
|
||||
@@ -25,7 +25,7 @@ function enableFirstPartyIsolation() {
|
||||
var setting = browser.privacy.websites.firstPartyIsolate.set({
|
||||
value: true
|
||||
});
|
||||
console.log("Enabling first party isolation/val=", {
|
||||
console.log('Enabling first party isolation/val=', {
|
||||
value: true
|
||||
});
|
||||
setting.then(onSet);
|
||||
@@ -39,13 +39,13 @@ function disableEvilCookies() {
|
||||
getting.then(got => {
|
||||
var setting = browser.privacy.websites.cookieConfig.set({
|
||||
value: {
|
||||
behavior: "reject_third_party",
|
||||
behavior: 'reject_third_party',
|
||||
nonPersistentCookies: got.value.nonPersistentCookies
|
||||
}
|
||||
});
|
||||
console.log("Setting cookie behavior/val=", {
|
||||
console.log('Setting cookie behavior/val=', {
|
||||
value: {
|
||||
behavior: "reject_third_party",
|
||||
behavior: 'reject_third_party',
|
||||
nonPersistentCookies: got.value.nonPersistentCookies
|
||||
}
|
||||
});
|
||||
@@ -131,7 +131,7 @@ setAllPrivacy();
|
||||
|
||||
function ResetPeerConnection() {
|
||||
function reset(snowflake) {
|
||||
var webrtc = false;
|
||||
var webrtc = true;
|
||||
console.log("No snowflake plugin found, pre-disabled WebRTC");
|
||||
var rtc = browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: webrtc
|
||||
@@ -160,7 +160,7 @@ function EnablePeerConnection() {
|
||||
function AssurePeerConnection() {
|
||||
function assure(webrtc) {
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: webrtc.value
|
||||
value: true
|
||||
});
|
||||
browser.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
@@ -342,7 +342,7 @@ function i2pHost(url) {
|
||||
}
|
||||
|
||||
function onContextGotLog(contexts) {
|
||||
if (contexts !== null) {
|
||||
if (contexts != null) {
|
||||
for (let context of contexts) {
|
||||
console.log(context);
|
||||
}
|
||||
|
136
proxy.js
136
proxy.js
@@ -1,18 +1,18 @@
|
||||
var titlepref = chrome.i18n.getMessage("titlePreface");
|
||||
var webpref = chrome.i18n.getMessage("webPreface");
|
||||
var routerpref = chrome.i18n.getMessage("routerPreface");
|
||||
var routerprefpriv = chrome.i18n.getMessage("routerPrefacePrivate");
|
||||
var titlepref = chrome.i18n.getMessage('titlePreface');
|
||||
var webpref = chrome.i18n.getMessage('webPreface');
|
||||
var routerpref = chrome.i18n.getMessage('routerPreface');
|
||||
var routerprefpriv = chrome.i18n.getMessage('routerPrefacePrivate');
|
||||
|
||||
browser.privacy.network.peerConnectionEnabled.set({
|
||||
value: false
|
||||
});
|
||||
console.log("Preliminarily disabled WebRTC.");
|
||||
console.log('Preliminarily disabled WebRTC.');
|
||||
|
||||
chrome.privacy.network.networkPredictionEnabled.set({
|
||||
value: false
|
||||
});
|
||||
chrome.privacy.network.webRTCIPHandlingPolicy.set({
|
||||
value: "disable_non_proxied_udp"
|
||||
value: 'proxy_only'
|
||||
});
|
||||
|
||||
function shouldProxyRequest(requestInfo) {
|
||||
@@ -26,7 +26,7 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
failoverTimeout: 0,
|
||||
proxyDns: false
|
||||
};
|
||||
if (context == "firefox-default" || context == "firefox-private") {
|
||||
if (context == 'firefox-default' || context == 'firefox-private') {
|
||||
proxy = null;
|
||||
return proxy;
|
||||
}
|
||||
@@ -46,9 +46,9 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
return proxy;
|
||||
} else if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: "http",
|
||||
host: "localhost",
|
||||
port: "65535"
|
||||
type: 'http',
|
||||
host: 'localhost',
|
||||
port: '65535'
|
||||
};
|
||||
}
|
||||
proxy = {
|
||||
@@ -64,22 +64,22 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
proxy = {
|
||||
type: "http",
|
||||
host: "localhost",
|
||||
port: "65535"
|
||||
type: 'http',
|
||||
host: 'localhost',
|
||||
port: '65535'
|
||||
};
|
||||
}
|
||||
}
|
||||
console.log("(proxy)", context.name);
|
||||
console.log("Using", proxy.type);
|
||||
console.log("proxy ", proxy.host + ":" + proxy.port);
|
||||
console.log('(proxy)', context.name);
|
||||
console.log('Using', proxy.type);
|
||||
console.log('proxy ', proxy.host + ':' + proxy.port);
|
||||
return proxy;
|
||||
}
|
||||
}
|
||||
if (!routerHost(requestDetails.url)) {
|
||||
if (localHost(requestDetails.url)) {
|
||||
console.log(
|
||||
"(proxy) non-routerconsole localhost url, will not interfere",
|
||||
'(proxy) non-routerconsole localhost url, will not interfere',
|
||||
requestDetails.url
|
||||
);
|
||||
/*proxy = {
|
||||
@@ -99,12 +99,12 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
};
|
||||
var contextGet = async function(tabInfo) {
|
||||
try {
|
||||
console.log("(proxy)Tab info from Function", tabInfo);
|
||||
console.log('(proxy)Tab info from Function', tabInfo);
|
||||
context = await browser.contextualIdentities.get(tabInfo.cookieStoreId);
|
||||
return context;
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return "firefox-default";
|
||||
return 'firefox-default';
|
||||
}
|
||||
};
|
||||
var tabGet = async function(tabId) {
|
||||
@@ -113,7 +113,7 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
let tabInfo = await browser.tabs.get(tabId);
|
||||
return tabInfo;
|
||||
} catch (error) {
|
||||
console.log("(proxy)Tab error", error);
|
||||
console.log('(proxy)Tab error', error);
|
||||
}
|
||||
};
|
||||
if (proxyHost(requestDetails.url)) {
|
||||
@@ -124,9 +124,21 @@ 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"
|
||||
requestDetails.cookieStoreId == 'firefox-default' ||
|
||||
requestDetails.cookieStoreId == 'firefox-private'
|
||||
) {
|
||||
return browser.proxy.settings.get({});
|
||||
}
|
||||
@@ -145,7 +157,7 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
requestDetails.tabId = tab;
|
||||
var context = tab.then(contextGet);
|
||||
var proxy = await context.then(handleProxyRequest);
|
||||
console.log("(proxy)Returning I2P Proxy", proxy);
|
||||
console.log('(proxy)Returning I2P Proxy', proxy);
|
||||
return proxy;
|
||||
} else {
|
||||
var tab = tabGet(requestDetails.tabId);
|
||||
@@ -159,62 +171,62 @@ var handleContextProxyRequest = async function(requestDetails) {
|
||||
return proxy;*/
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(proxy)Not using I2P Proxy.", error);
|
||||
console.log('(proxy)Not using I2P Proxy.', error);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
function SetupSettings() {
|
||||
console.log("Initialising Settings");
|
||||
console.log('Initialising Settings');
|
||||
function onSetupError() {
|
||||
console.log("Settings initialization error");
|
||||
console.log('Settings initialization error');
|
||||
}
|
||||
//
|
||||
function checkSchemeStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_scheme == undefined)
|
||||
storedSettings.proxy_scheme = "http";
|
||||
storedSettings.proxy_scheme = 'http';
|
||||
else proxy_scheme = storedSettings.proxy_scheme;
|
||||
|
||||
console.log("Initialising Proxy Scheme", storedSettings.proxy_scheme);
|
||||
console.log('Initialising Proxy Scheme', storedSettings.proxy_scheme);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get("proxy_scheme");
|
||||
var gettingSchemeStoredSettings = browser.storage.local.get('proxy_scheme');
|
||||
gettingSchemeStoredSettings.then(checkSchemeStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_host == undefined)
|
||||
storedSettings.proxy_host = "127.0.0.1";
|
||||
storedSettings.proxy_host = '127.0.0.1';
|
||||
else proxy_host = storedSettings.proxy_host;
|
||||
|
||||
console.log("Initialising Host", storedSettings.proxy_host);
|
||||
console.log('Initialising Host', storedSettings.proxy_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHostStoredSettings = browser.storage.local.get("proxy_host");
|
||||
var gettingHostStoredSettings = browser.storage.local.get('proxy_host');
|
||||
gettingHostStoredSettings.then(checkHostStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.proxy_port == undefined)
|
||||
storedSettings.proxy_port = "4444";
|
||||
storedSettings.proxy_port = '4444';
|
||||
else proxy_port = storedSettings.proxy_port;
|
||||
|
||||
console.log("Initialising Port", storedSettings.proxy_port);
|
||||
console.log('Initialising Port', storedSettings.proxy_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingPortStoredSettings = browser.storage.local.get("proxy_port");
|
||||
var gettingPortStoredSettings = browser.storage.local.get('proxy_port');
|
||||
gettingPortStoredSettings.then(checkPortStoredSettings, onSetupError);
|
||||
|
||||
//
|
||||
function checkControlHostStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_host == undefined)
|
||||
storedSettings.control_host = "127.0.0.1";
|
||||
storedSettings.control_host = '127.0.0.1';
|
||||
else control_host = storedSettings.control_host;
|
||||
|
||||
console.log("Initialising Control Host", storedSettings.control_host);
|
||||
console.log('Initialising Control Host', storedSettings.control_host);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlHostStoredSettings = browser.storage.local.get(
|
||||
"control_host"
|
||||
'control_host'
|
||||
);
|
||||
gettingControlHostStoredSettings.then(
|
||||
checkControlHostStoredSettings,
|
||||
@@ -224,14 +236,14 @@ function SetupSettings() {
|
||||
//
|
||||
function checkControlPortStoredSettings(storedSettings) {
|
||||
if (storedSettings.control_port == undefined)
|
||||
storedSettings.control_port = "7657";
|
||||
storedSettings.control_port = '7657';
|
||||
else control_port = storedSettings.control_port;
|
||||
|
||||
console.log("Initialising Control Port", storedSettings.control_port);
|
||||
console.log('Initialising Control Port', storedSettings.control_port);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingControlPortStoredSettings = browser.storage.local.get(
|
||||
"control_port"
|
||||
'control_port'
|
||||
);
|
||||
gettingControlPortStoredSettings.then(
|
||||
checkControlPortStoredSettings,
|
||||
@@ -245,28 +257,28 @@ function SetupSettings() {
|
||||
else disable_history = storedSettings.disable_history;
|
||||
|
||||
console.log(
|
||||
"Initialising Disabled History",
|
||||
'Initialising Disabled History',
|
||||
storedSettings.disable_history
|
||||
);
|
||||
setupProxy();
|
||||
}
|
||||
var gettingHistoryStoredSettings = browser.storage.local.get(
|
||||
"disable_history"
|
||||
'disable_history'
|
||||
);
|
||||
gettingHistoryStoredSettings.then(checkHistoryStoredSettings, onSetupError);
|
||||
}
|
||||
|
||||
function getScheme() {
|
||||
if (proxy_scheme == "HTTP") return "http";
|
||||
if (proxy_scheme == "SOCKS") return "socks";
|
||||
if (proxy_scheme == "http") return "http";
|
||||
if (proxy_scheme == "socks") return "socks";
|
||||
else return "http";
|
||||
if (proxy_scheme == 'HTTP') return 'http';
|
||||
if (proxy_scheme == 'SOCKS') return 'socks';
|
||||
if (proxy_scheme == 'http') return 'http';
|
||||
if (proxy_scheme == 'socks') return 'socks';
|
||||
else return 'http';
|
||||
}
|
||||
|
||||
function getHost() {
|
||||
if (proxy_host == undefined) {
|
||||
proxy_host = "127.0.0.1";
|
||||
proxy_host = '127.0.0.1';
|
||||
}
|
||||
return proxy_host;
|
||||
}
|
||||
@@ -274,30 +286,30 @@ function getHost() {
|
||||
function getPort() {
|
||||
if (proxy_port == undefined) {
|
||||
var scheme = getScheme();
|
||||
if (scheme == "socks") proxy_port = "4446";
|
||||
else proxy_port = "4444";
|
||||
if (scheme == 'socks') proxy_port = '4446';
|
||||
else proxy_port = '4444';
|
||||
}
|
||||
return proxy_port;
|
||||
}
|
||||
|
||||
function setupProxy() {
|
||||
console.log("Setting up Firefox WebExtension proxy");
|
||||
console.log('Setting up Firefox WebExtension proxy');
|
||||
browser.proxy.onRequest.addListener(handleContextProxyRequest, {
|
||||
urls: ["<all_urls>"]
|
||||
urls: ['<all_urls>']
|
||||
});
|
||||
console.log("i2p settings created for WebExtension Proxy");
|
||||
console.log('i2p settings created for WebExtension Proxy');
|
||||
}
|
||||
|
||||
function update() {
|
||||
console.log("restoring proxy scheme:", proxy_scheme);
|
||||
console.log("restoring proxy host:", proxy_host);
|
||||
console.log("restoring proxy port:", proxy_port);
|
||||
console.log("restoring control host:", control_host);
|
||||
console.log("restoring control port:", control_port);
|
||||
console.log('restoring proxy scheme:', proxy_scheme);
|
||||
console.log('restoring proxy host:', proxy_host);
|
||||
console.log('restoring proxy port:', proxy_port);
|
||||
console.log('restoring control host:', control_host);
|
||||
console.log('restoring control port:', control_port);
|
||||
}
|
||||
|
||||
function updateFromStorage() {
|
||||
console.log("updating settings from storage");
|
||||
console.log('updating settings from storage');
|
||||
chrome.storage.local.get(function() {
|
||||
SetupSettings();
|
||||
update();
|
||||
@@ -305,7 +317,7 @@ function updateFromStorage() {
|
||||
});
|
||||
var gettingInfo = browser.runtime.getPlatformInfo();
|
||||
gettingInfo.then(got => {
|
||||
if (got.os != "android") {
|
||||
if (got.os != 'android') {
|
||||
browser.windows.getAll().then(wins => wins.forEach(themeWindow));
|
||||
}
|
||||
});
|
||||
|
263
releases.atom
263
releases.atom
@@ -4,13 +4,150 @@
|
||||
<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-24T04:22:27Z</updated>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.71</id>
|
||||
<updated>2020-03-24T23:01:20Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.71"/>
|
||||
<title>0.71</title>
|
||||
<enclosure url="magnet:?xt=urn:btih:337ece11e8d9318c0e11d9320e3426fe9ff15556" type="application/x-bittorrent" />
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.71-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Fix incomplete bugfix from 0.69</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 24 MAR 2020 0:19:59 -0400</p>
|
||||
<p>i2psetproxy.js (0.69-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.69</id>
|
||||
<updated>2020-03-24T04:19:44Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.69"/>
|
||||
<title>0.69</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.69-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Add MuWire contextual ID</li>
|
||||
<li>Fix bug occurring on certain modded I2P installs</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 24 MAR 2020 0:12:02 -0400</p>
|
||||
<p>i2psetproxy.js (0.67-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.67</id>
|
||||
<updated>2020-03-18T04:27:30Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.67"/>
|
||||
<title>0.67</title>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.67-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Tweak some default settings that should have gone into 65</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 17 MAR 2020 22:58:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.65-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.65</id>
|
||||
<updated>2020-03-18T03:01:20Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.65"/>
|
||||
<title>0.65</title>
|
||||
<content type="html"><p>Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.65-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Initial prototype of certs implementation</li>
|
||||
<li>Use "pinned apptabs" to minimize the number of tabs occupied by an app</li>
|
||||
<li>Get ready for self-hosted updates but with bittorrent because it's cooler</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 17 MAR 2020 22:58:55 -0400</p>
|
||||
<p>i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<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>
|
||||
<content type="html"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.63-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>other containerizers bugfix</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 02 MAR 2020 17:54:26 -0400</p>
|
||||
<p>i2psetproxy.js (0.61-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.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"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.61-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>other containerizers bugfix</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Mon, 02 MAR 2020 17:46:24 -0400</p>
|
||||
<p>i2psetproxy.js (0.59-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.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"><p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.59-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>transmission-rpc based torrent controls</li>
|
||||
<li>bugfixes</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Tue, 25 FEB 2020 20:52:19 -0400</p>
|
||||
<p>i2psetproxy.js (0.57-1) UNRELEASED; urgency=low</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.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:a0cf0107e4508cd578976e4d0c16d060b5148fde" type="application/x-bittorrent" />
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
@@ -62,126 +199,4 @@ i2psetproxy.js (0.55-1) UNRELEASED; urgency=low</p>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.53</id>
|
||||
<updated>2020-01-06T17:17:35Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.53"/>
|
||||
<title>0.53</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.51-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Numerous code cleanups, compatibility fixes</li>
|
||||
<li>enable-disable history</li>
|
||||
<li>better homepage, better control panel, saner options</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 22:51:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.51</id>
|
||||
<updated>2020-01-06T17:18:09Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.51"/>
|
||||
<title>0.51</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.49-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>fix tabs</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 22:51:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.49</id>
|
||||
<updated>2020-01-06T17:18:38Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.49"/>
|
||||
<title>0.49</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.49-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>fix tabs</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 22:51:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.47</id>
|
||||
<updated>2020-01-06T17:19:14Z</updated>
|
||||
<link rel="alternate" type="text/html" href="https://github.com/eyedeekay/I2P-in-Private-Browsing-Mode-Firefox/releases/tag/0.47"/>
|
||||
<title>0.47</title>
|
||||
<content type="html"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.<br>
|
||||
i2psetproxy.js (0.47-1) UNRELEASED; urgency=low</p>
|
||||
<ul>
|
||||
<li>Improve android compatibility</li>
|
||||
<li>Improve code organization</li>
|
||||
<li>Partial protocol handlers implementation</li>
|
||||
</ul>
|
||||
<p>-- idk <a href="mailto:hankhill19580@gmail.com">hankhill19580@gmail.com</a> Sat, 23 NOV 2019 18:53:11 -0400</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.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"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.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"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
<entry>
|
||||
<id>tag:github.com,2008:Repository/169256012/0.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"><h1>I2P in Private Browsing Mode</h1>
|
||||
<p>A simple plugin for configuring a Firefox based web browser to isolate I2P<br>
|
||||
Browsing to a single contextual identity, thus creating an I2P in Private<br>
|
||||
Browsing mode. It requires the use of a pre-installed I2P Router.</p></content>
|
||||
<author>
|
||||
<name>eyedeekay</name>
|
||||
</author>
|
||||
<media:thumbnail height="30" width="30" url="https://avatars3.githubusercontent.com/u/8733713?s=60&v=4"/>
|
||||
</entry>
|
||||
</feed>
|
||||
|
285
scrub.js
285
scrub.js
@@ -1,27 +1,28 @@
|
||||
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 localpref = chrome.i18n.getMessage("localPreface");
|
||||
var extensionpref = chrome.i18n.getMessage("extensionPreface");
|
||||
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 localpref = chrome.i18n.getMessage('localPreface');
|
||||
var extensionpref = chrome.i18n.getMessage('extensionPreface');
|
||||
var muwirepref = chrome.i18n.getMessage('muwirePreface');
|
||||
|
||||
var contextScrub = async function(requestDetails) {
|
||||
function onHeaderError() {
|
||||
console.log("Header scrub error");
|
||||
console.log('Header scrub error');
|
||||
}
|
||||
//console.log("(scrub)Scrubbing info from contextualized request");
|
||||
try {
|
||||
var headerScrub = function(context) {
|
||||
var ua = "MYOB/6.66 (AN/ON)";
|
||||
var ua = 'MYOB/6.66 (AN/ON)';
|
||||
if (!context) {
|
||||
} else if (context.name == titlepref) {
|
||||
if (i2pHost(requestDetails.url)) {
|
||||
for (var header of requestDetails.requestHeaders) {
|
||||
if (header.name.toLowerCase() === "user-agent") {
|
||||
if (header.name.toLowerCase() === 'user-agent') {
|
||||
header.value = ua;
|
||||
console.log("(scrub)User-Agent header modified", header.value);
|
||||
console.log('(scrub)User-Agent header modified', header.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -31,9 +32,9 @@ var contextScrub = async function(requestDetails) {
|
||||
} else if (context.name == routerpref) {
|
||||
if (i2pHost(requestDetails.url)) {
|
||||
for (var header of requestDetails.requestHeaders) {
|
||||
if (header.name.toLowerCase() === "user-agent") {
|
||||
if (header.name.toLowerCase() === 'user-agent') {
|
||||
header.value = ua;
|
||||
console.log("(scrub)User-Agent header modified", header.value);
|
||||
console.log('(scrub)User-Agent header modified', header.value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -83,13 +84,61 @@ var contextScrub = async function(requestDetails) {
|
||||
return req;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(scrub)Not scrubbing non-I2P request.", error);
|
||||
console.log('(scrub)Not scrubbing non-I2P request.', error);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
var notMyContextNotMyProblem = async function() {
|
||||
var 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 context7 = await browser.contextualIdentities.query({
|
||||
name: muwirepref
|
||||
});
|
||||
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 ||
|
||||
contexts[context].cookieStoreId == context7[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");
|
||||
console.log('Context launcher error');
|
||||
}
|
||||
//console.log("(isolate)Forcing I2P requests into context");
|
||||
try {
|
||||
@@ -103,11 +152,16 @@ var contextSetup = function(requestDetails) {
|
||||
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);
|
||||
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);
|
||||
}
|
||||
@@ -123,7 +177,7 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var routerTabFind = async function(tabId) {
|
||||
@@ -134,18 +188,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);
|
||||
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
|
||||
});
|
||||
@@ -156,7 +218,7 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var i2ptunnelTabFind = async function(tabId) {
|
||||
@@ -167,18 +229,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);
|
||||
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
|
||||
});
|
||||
@@ -189,7 +259,7 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var snarkTabFind = async function(tabId) {
|
||||
@@ -200,18 +270,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);
|
||||
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
|
||||
});
|
||||
@@ -222,7 +300,48 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var muwireTabFind = async function(tabId) {
|
||||
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);
|
||||
}
|
||||
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;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var mailTabFind = async function(tabId) {
|
||||
@@ -233,18 +352,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);
|
||||
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
|
||||
});
|
||||
@@ -255,7 +382,7 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var localTabFind = async function(tabId) {
|
||||
@@ -268,9 +395,9 @@ var contextSetup = function(requestDetails) {
|
||||
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);
|
||||
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);
|
||||
}
|
||||
}
|
||||
@@ -288,7 +415,7 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var normalTabFind = async function(tabId) {
|
||||
@@ -302,23 +429,30 @@ 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 == 'firefox-default' ||
|
||||
tabId.cookieStoreId == 'firefox-private' ||
|
||||
tabId.cookieStoreId == anoncontext[0].cookieStoreId ||
|
||||
tabId.cookieStoreId == localcontext[0].cookieStoreId ||
|
||||
nmp
|
||||
) {
|
||||
console.log(
|
||||
"(ISOLATE)",
|
||||
'(ISOLATE)',
|
||||
tabId.cookieStoreId,
|
||||
"not",
|
||||
'not',
|
||||
anoncontext[0].cookieStoreId,
|
||||
localcontext[0].cookieStoreId
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (
|
||||
tabId.cookieStoreId != anoncontext[0].cookieStoreId ||
|
||||
tabId.cookieStoreId != localcontext[0].cookieStoreId
|
||||
) {
|
||||
} else {
|
||||
function Create() {
|
||||
function onCreated(tab) {
|
||||
function closeOldTab() {
|
||||
@@ -327,15 +461,15 @@ var contextSetup = function(requestDetails) {
|
||||
tabId.cookieStoreId != tab.cookieStoreId
|
||||
) {
|
||||
console.log(
|
||||
"(isolate) Closing isolated tab",
|
||||
'(isolate) Closing isolated tab',
|
||||
tabId.id,
|
||||
"with context",
|
||||
'with context',
|
||||
tabId.cookieStoreId
|
||||
);
|
||||
console.log(
|
||||
"(isolate) in favor of",
|
||||
'(isolate) in favor of',
|
||||
tab.id,
|
||||
"with context",
|
||||
'with context',
|
||||
tab.cookieStoreId
|
||||
);
|
||||
browser.tabs.remove(tabId.id);
|
||||
@@ -345,7 +479,7 @@ var contextSetup = function(requestDetails) {
|
||||
}
|
||||
var created = browser.tabs.create({
|
||||
active: true,
|
||||
cookieStoreId: "firefox-default",
|
||||
cookieStoreId: 'firefox-default',
|
||||
url: requestDetails.url
|
||||
});
|
||||
created.then(onCreated, onContextError);
|
||||
@@ -355,7 +489,7 @@ var contextSetup = function(requestDetails) {
|
||||
return tabId;
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Context Error", error);
|
||||
console.log('(isolate)Context Error', error);
|
||||
}
|
||||
};
|
||||
var tabGet = async function(tabId) {
|
||||
@@ -364,7 +498,7 @@ var contextSetup = function(requestDetails) {
|
||||
let tabInfo = await browser.tabs.get(tabId);
|
||||
return tabInfo;
|
||||
} catch (error) {
|
||||
console.log("(isolate)Tab error", error);
|
||||
console.log('(isolate)Tab error', error);
|
||||
}
|
||||
};
|
||||
if (requestDetails == undefined) {
|
||||
@@ -398,16 +532,19 @@ var contextSetup = function(requestDetails) {
|
||||
let localhost = localHost(requestDetails.url);
|
||||
let routerhost = routerHost(requestDetails.url);
|
||||
if (routerhost) {
|
||||
if (routerhost === "i2ptunnelmgr") {
|
||||
if (routerhost === 'i2ptunnelmgr') {
|
||||
var tunneltab = tab.then(i2ptunnelTabFind, onContextError);
|
||||
return requestDetails;
|
||||
} else if (routerhost === "i2psnark") {
|
||||
} else if (routerhost === 'i2psnark') {
|
||||
var snarktab = tab.then(snarkTabFind, onContextError);
|
||||
return requestDetails;
|
||||
} else if (routerhost === "webmail") {
|
||||
} else if (routerhost === 'webmail') {
|
||||
var mailtab = tab.then(mailTabFind, onContextError);
|
||||
return requestDetails;
|
||||
} else if (routerhost === "routerconsole") {
|
||||
} else if (routerhost === 'muwire') {
|
||||
var routertab = tab.then(muwireTabFind, onContextError);
|
||||
return requestDetails;
|
||||
} else if (routerhost === 'routerconsole') {
|
||||
var routertab = tab.then(routerTabFind, onContextError);
|
||||
return requestDetails;
|
||||
}
|
||||
@@ -422,18 +559,18 @@ var contextSetup = function(requestDetails) {
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.log("(isolate)Not an I2P request, blackholing", error);
|
||||
console.log('(isolate)Not an I2P request, blackholing', error);
|
||||
}
|
||||
};
|
||||
|
||||
browser.webRequest.onBeforeRequest.addListener(
|
||||
contextSetup,
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking"]
|
||||
{ urls: ['<all_urls>'] },
|
||||
['blocking']
|
||||
);
|
||||
|
||||
browser.webRequest.onBeforeSendHeaders.addListener(
|
||||
contextScrub,
|
||||
{ urls: ["<all_urls>"] },
|
||||
["blocking", "requestHeaders"]
|
||||
{ urls: ['<all_urls>'] },
|
||||
['blocking', 'requestHeaders']
|
||||
);
|
||||
|
56
security.html
Normal file
56
security.html
Normal 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>
|
@@ -11,4 +11,32 @@ many torrent clients, including for our purposes snark-rpc and BiglyBT.
|
||||
Transmitter is released under the UNLICENSE. An original copy is available at
|
||||
this URL: https://github.com/myfreeweb/transmitter/blob/master/UNLICENSE
|
||||
|
||||
A copy has also been included in this directory.
|
||||
A copy has also been included in this directory.
|
||||
|
||||
Configuring this extension for use with Snark-RPC!
|
||||
--------------------------------------------------
|
||||
|
||||
One of the coolest things this extension is able to do is communicate with
|
||||
a transmission-rpc enabled torrent client. Since it's an I2P focused plugin,
|
||||
the default configuration is set up for use with the I2PSnark-RPC plugin created
|
||||
by zzz. Since Snark-RPC isn't part of the main Java I2P distribution, in order
|
||||
to do this you'll have to install the plugin. You can get a copy of it from
|
||||
inside of I2P here:
|
||||
|
||||
* [stats.i2p main package](http://stats.i2p/i2p/plugins/i2psnark-rpc.su3)
|
||||
* [stats.i2p update package](http://stats.i2p/i2p/plugins/i2psnark-rpc-update.su3)
|
||||
|
||||
I also have a mirror of the package with each release of the webextension,
|
||||
reflecting the version in use in the webextension at the time of the release.
|
||||
|
||||
To install the plugin, go to [http://127.0.0.1:7657/configplugins](http://127.0.0.1:7657/configplugins)
|
||||
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```
|
||||
|
||||
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
|
||||
with I2PSnark-RPC, but they need to be initialized by saving the settings. If
|
||||
I2PSnark-RPC becomes part of Java I2P, these defaults will be initialized when
|
||||
the plugin is installed.
|
||||
|
@@ -1,18 +1,18 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
////// Session extraction
|
||||
|
||||
function setupExtractor() {
|
||||
browser.webRequest.onHeadersReceived.removeListener(extractSession);
|
||||
browser.storage.local.get("server").then(({ server }) => {
|
||||
browser.storage.local.get('server').then(({ server }) => {
|
||||
if (!server) {
|
||||
return;
|
||||
}
|
||||
console.log("Session extractor setup for", server.base_url);
|
||||
console.log('Session extractor setup for', server.base_url);
|
||||
browser.webRequest.onBeforeSendHeaders.addListener(
|
||||
extractSession,
|
||||
{ urls: [server.base_url + "*"] },
|
||||
["requestHeaders"]
|
||||
{ urls: [server.base_url + '*'] },
|
||||
['requestHeaders']
|
||||
);
|
||||
});
|
||||
}
|
||||
|
@@ -1,28 +1,28 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
////// RPC
|
||||
|
||||
function rpcCall(meth, args) {
|
||||
return browser.storage.local.get(function(server) {
|
||||
const myHeaders = {
|
||||
"Content-Type": "application/json",
|
||||
"x-transmission-session-id": server.session
|
||||
'Content-Type': 'application/json',
|
||||
'x-transmission-session-id': server.session
|
||||
};
|
||||
//console.log("(torrent)", server.session)
|
||||
if (server.username !== "" || server.btrpcpass !== "") {
|
||||
myHeaders["Authorization"] =
|
||||
"Basic " +
|
||||
btoa((server.username || "") + ":" + (server.btrpcpass || ""));
|
||||
if (server.username !== '' || server.btrpcpass !== '') {
|
||||
myHeaders['Authorization'] =
|
||||
'Basic ' +
|
||||
btoa((server.username || '') + ':' + (server.btrpcpass || ''));
|
||||
}
|
||||
//console.log("(torrent) rpc", server.base_url);
|
||||
return fetch(server.base_url + "rpc", {
|
||||
method: "POST",
|
||||
return fetch(server.base_url + 'rpc', {
|
||||
method: 'POST',
|
||||
headers: myHeaders,
|
||||
body: JSON.stringify({ method: meth, arguments: args }),
|
||||
credentials: "include" // allows HTTPS client certs!
|
||||
credentials: 'include' // allows HTTPS client certs!
|
||||
})
|
||||
.then(function(response) {
|
||||
const session = response.headers.get("x-transmission-session-id");
|
||||
const session = response.headers.get('x-transmission-session-id');
|
||||
if (session) {
|
||||
browser.storage.local.get({}).then(function(storage) {
|
||||
storage.session = session;
|
||||
@@ -50,11 +50,11 @@ function rpcCall(meth, args) {
|
||||
function formatSpeed(s) {
|
||||
// Firefox shows 4 characters max
|
||||
if (s < 1000 * 1000) {
|
||||
return (s / 1000).toFixed() + "K";
|
||||
return (s / 1000).toFixed() + 'K';
|
||||
}
|
||||
if (s < 1000 * 1000 * 1000) {
|
||||
return (s / 1000 / 1000).toFixed() + "M";
|
||||
return (s / 1000 / 1000).toFixed() + 'M';
|
||||
}
|
||||
// You probably don't have that download speed…
|
||||
return (s / 1000 / 1000 / 1000).toFixed() + "T";
|
||||
return (s / 1000 / 1000 / 1000).toFixed() + 'T';
|
||||
}
|
||||
|
@@ -2,8 +2,8 @@
|
||||
<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" />
|
||||
<link rel="stylesheet" type="text/css" href="../home.css" />
|
||||
<link rel="stylesheet" type="text/css" href="../sidebar.css" />
|
||||
</head>
|
||||
<body>
|
||||
<h1>Acknowledgement</h1>
|
||||
@@ -19,5 +19,34 @@ many torrent clients, including for our purposes snark-rpc and BiglyBT.</p>
|
||||
this URL: https://github.com/myfreeweb/transmitter/blob/master/UNLICENSE</p>
|
||||
|
||||
<p>A copy has also been included in this directory.</p>
|
||||
|
||||
<h2>Configuring this extension for use with Snark-RPC!</h2>
|
||||
|
||||
<p>One of the coolest things this extension is able to do is communicate with
|
||||
a transmission-rpc enabled torrent client. Since it's an I2P focused plugin,
|
||||
the default configuration is set up for use with the I2PSnark-RPC plugin created
|
||||
by zzz. Since Snark-RPC isn't part of the main Java I2P distribution, in order
|
||||
to do this you'll have to install the plugin. You can get a copy of it from
|
||||
inside of I2P here:</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="http://stats.i2p/i2p/plugins/i2psnark-rpc.su3">stats.i2p main package</a></li>
|
||||
<li><a href="http://stats.i2p/i2p/plugins/i2psnark-rpc-update.su3">stats.i2p update package</a></li>
|
||||
</ul>
|
||||
|
||||
<p>I also have a mirror of the package with each release of the webextension,
|
||||
reflecting the version in use in the webextension at the time of the release.</p>
|
||||
|
||||
<p>To install the plugin, go to <a href="http://127.0.0.1:7657/configplugins">http://127.0.0.1:7657/configplugins</a>
|
||||
and scroll down to the section of the page where it says "Installation from URL"
|
||||
and paste the following URL:</p>
|
||||
|
||||
<p><code>http://stats.i2p/i2p/plugins/i2psnark-rpc.su3</code></p>
|
||||
|
||||
<p>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
|
||||
with I2PSnark-RPC, but they need to be initialized by saving the settings. If
|
||||
I2PSnark-RPC becomes part of Java I2P, these defaults will be initialized when
|
||||
the plugin is installed.</p>
|
||||
</body>
|
||||
</html>
|
||||
|
@@ -1,22 +1,22 @@
|
||||
"use strict";
|
||||
'use strict';
|
||||
|
||||
var TrpcCall = async function(meth, args) {
|
||||
const server = await browser.storage.local.get(null);
|
||||
const myHeaders = {
|
||||
"Content-Type": "application/json",
|
||||
"x-transmission-session-id": server.session
|
||||
'Content-Type': 'application/json',
|
||||
'x-transmission-session-id': server.session
|
||||
};
|
||||
console.log("(torrent) session", server.session);
|
||||
if (server.username !== "" || server.btrpcpass !== "") {
|
||||
myHeaders["Authorization"] =
|
||||
"Basic " + btoa((server.username || "") + ":" + (server.btrpcpass || ""));
|
||||
console.log('(torrent) session', server.session);
|
||||
if (server.username !== '' || server.btrpcpass !== '') {
|
||||
myHeaders['Authorization'] =
|
||||
'Basic ' + btoa((server.username || '') + ':' + (server.btrpcpass || ''));
|
||||
}
|
||||
console.log("(torrent) rpcurl", server.base_url + "rpc");
|
||||
return fetch(server.base_url + "rpc", {
|
||||
method: "POST",
|
||||
console.log('(torrent) rpcurl', server.base_url + 'rpc');
|
||||
return fetch(server.base_url + 'rpc', {
|
||||
method: 'POST',
|
||||
headers: myHeaders,
|
||||
body: JSON.stringify({ method: meth, arguments: args }),
|
||||
credentials: "include" // allows HTTPS client certs!
|
||||
credentials: 'include' // allows HTTPS client certs!
|
||||
});
|
||||
|
||||
/*.then(function(response) {
|
||||
@@ -32,13 +32,13 @@ var TrpcCall = async function(meth, args) {
|
||||
error.response = response;
|
||||
throw error;
|
||||
});*/
|
||||
};
|
||||
}
|
||||
|
||||
const torrentsPane = document.getElementById("torrents-pane");
|
||||
const configPane = document.getElementById("config-pane");
|
||||
const torrentsPane = document.getElementById('torrents-pane');
|
||||
const configPane = document.getElementById('config-pane');
|
||||
|
||||
for (const opener of document.querySelectorAll(".config-opener")) {
|
||||
opener.addEventListener("click", e => {
|
||||
for (const opener of document.querySelectorAll('.config-opener')) {
|
||||
opener.addEventListener('click', e => {
|
||||
browser.runtime.openOptionsPage();
|
||||
});
|
||||
}
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 577 KiB After Width: | Height: | Size: 165 KiB |
@@ -54,11 +54,11 @@
|
||||
<p id="controlExplain">These controls are used to tailor your I2P Browsing Experience</p>
|
||||
|
||||
<ul>
|
||||
<li class="application">
|
||||
<!--<li class="application">
|
||||
<a href="#" id="clear-browser-data">Clear Browsing Data:</a> <span class="applicationDesc" id="clear-desc">Use this to erase your browsing data.</span>
|
||||
</li>
|
||||
|
||||
<li class="application"><input id="enable-web-rtc" name="enablewebrtc" type="checkbox" value="webrtc"> <label for="enable-web-rtc">Enable WebRTC <strong>with Proxy?</strong></label> <span class="applicationDesc" id="rtcDesc">WebRTC is disabled by default, but can be enabled by checking this box.</span></li>
|
||||
<li class="application"><input id="enable-web-rtc" name="enablewebrtc" type="checkbox" value="webrtc"> <label for="enable-web-rtc">Enable WebRTC <strong>with Proxy?</strong></label> <span class="applicationDesc" id="rtcDesc">WebRTC is disabled by default, but can be enabled by checking this box.</span></li>-->
|
||||
|
||||
<li class="application">
|
||||
<div class="panel-section-separator">
|
||||
|
Reference in New Issue
Block a user